Run Jupyter Notebook behind a nginx reverse proxy subpath

The server I want to run Jupyter on has some other apps running on an nginx server, so I'll configure Jupyter to at the path /groot

First, generate the Jupyter config with:

jupyter notebook --generate-config

Generate a sha1 sum of the password you want to use, in an ipython shell:

from notebook.auth import passwd; passwd()

Update the config generated in the --generate-config command

c.NotebookApp.allow_origin = '*'
c.NotebookApp.base_url = '/groot'
c.NotebookApp.password = 'sha1:[put generated...

Mostly Printed CNC (MPCNC)

This is my build log of vicious1' Mostly Printed CNC.

Here we are running a 2.5w diode laser on it.

Huge shout out to Tim, in the photo above, for helping me get past the final hurdles of this project. He hand-wrote some g-code to get this working before we found a tool to generate it.


The awesome thing about this CNC is that it can be built using only parts made on your 3D printer, a few RepRap electronics and some parts from your local hardware store!


My build started...

Xiaomi A1

I've never reviewed a phone before, but the Xiaomi A1 is unique in that it is the first Android One phone available. Android One is awesome as it allows hardware manufacturers to ship a vanilla version of Android. Giving us the best of both worlds, awesome value hardware with a bloat-free Android experience. My main concern was how the coverage would be and what bands the phone would support.

Above, the phone is running Google maps on the Google Fi network. As you can see I'm getting 4G.

Enabling Automatic Security Updates on Ubuntu 16.04

Edit: /etc/apt/apt.conf.d/10periodic and append the following:

APT::Periodic::Unattended-Upgrade "1";

This depends on the apt package unattended-upgrades being installed and the log output will be in /var/log/unattended-upgrades

My full 10periodic file looks like:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "1";

This is run by /etc/cron.daily/apt-compat and the full list...

Installing Ubuntu 16.04 on an Asus CN60 Chromebox

Get the kodi install script

cd; curl -L -O && sudo bash

Pick the option to install the Custom UEFI Firmware

Backup your firmware when prompted, using a USB drive

Create a USB boot disk for Ubuntu 16.04. I like using Etcher

Put in the USB drive and reboot

Pick the Install Ubuntu option and install as normal.

On the partitioning page, pick the LVM option, so you can expand the root disk easily later.

After selecting partitioning layout...

Installing Tensorflow with GPU support on Ubuntu 16.04

These are my notes from setting up my Ubuntu 16.04 box with GPU enabled Tensorflow:

Hardware Dependencies

The Cuda documentation encourages us to check a couple things:

Do we have a CUDA capable GPU? Any output here is good:

lspci | grep -i nvidia

I have a 980 Ti, so I see:

01:00.0 VGA compatible controller: NVIDIA Corporation GM200 [GeForce GTX 980 Ti] (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 0fb0 (rev a1)

Software Dependencies

Do we have a supported version of linux?...

Getting Started with ROS Kinetic and ROS on Ubuntu 16.04

I'm starting to experiment with px4 off-board control. These are my setup notes. First, a photo of the awesome hardware setup. The Pixracer is mounted on top of an OrangePi.

Software Setup

I'm using an Ubuntu 16.04 VM on my mac. I set the network interface to "shared" and ssh into the vm. In the ssh session, I run tmux.

Ubuntu and SSH

Install Ubuntu 16.04 in a vm and use apt-get to install vmware tools, vim, tmux, ssh server and other dependencies

sudo apt-get install -y open-vm-tools-desktop...

FPV Goggle Guide, FatShark Setup

A while back I reviewed a bunch of box style goggles. These single-screen goggles are generally more cost effective, but bigger and less comfortable on the face. This time around I got a couple dual-screen goggles, e.g. FatSharks to try out and see if they're worth the money.

I went all in and bought the best (or at least the most expensive) FatShark Goggles one can buy, the Dominator HD. I also bought a pair of Aomway commander goggles for comparison.


TLDR: you get what you pay...

FPV Camera Comparison

I was curious what the best camera low light camera for the money is, so I ordered a bunch of low-light FPV cameras and tried them out. This article details what I found. First, my test rig:


These are the cameras in the comparison.

$12.04 Generic Sony EFFIO
$22.99 Aomway WDR 700TVL

Betaflight 3.2 and F7 Flight Controllers

As of Jul 31, 2017, 2:26 PM PDT, Betaflight 3.2 is in the Release Candidate stage and with this release, F7 flight controllers have arrived. While an F7 MCU is not entirely necessary, not yet anyway, having a very fast and very capable MCU is future proof. I expect some of the most exciting new performance features in Betaflight will target the F7 MCU. This article is an overview of the current F7 landscape.

That is a photo of an early OmnibusF7 prototype with 2, user selectable, gyros: MPU6000...

Converting a Soldering Station from 220v to 110v

I recently received a Soldering Station, mine is labeled Huayu 898D+.

It has a nice digital display for PID temperature controller.

Of course, I took it apart.

The only problem is that I got the 220v version, which is quite inconvenient here in the USA where 110v is the norm. I tried it out without modification and it sort of worked. The iron wouldn't go above 250 degrees C and the hot air was also quite under powered.

Unfortunately, there is no switch to easily change between 220v and...

Asguard AIO

The Asguard flight controller is an OmnibusF4 with an integrated 4-in-1 ESC. This is a build guide showing how to build an Asguard based quadcopter.

The frame kit and the Asguard flight controller are from Airbot.

The motors I'm using are 1806, but you'll notice the ones in the photo above are orange and I've built the quad with black ones. This is because the wires on the orange ones are too short. 2204, 2205 or 2206 motors might be a better choice if you're planning on running 3 or 4 blade...

Cleaning up the Ubuntu boot volume

If you've been using an apt update && apt upgrade-ing a linux system for a while, at some you've probably seen this error:

Purging configuration files for linux-image-extra-3.13.0-96-generic (3.13.0-96.143) ...
(Reading database ... 520779 files and directories currently installed.)
Preparing to unpack .../linux-image-3.13.0-117-generic_3.13.0-117.164_amd64.deb ...
Unpacking linux-image-3.13.0-117-generic (3.13.0-117.164) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image...

Orange Pi Zero Google Cloud Print Server

This guide will show you how to turn an Orange Pi Zero into a Google Cloud Print server.

Orange Pi Zero Setup

Download Debian Jesse from Armbian.

Download Etcher, use it to write the Armbian image to the SDCard. A 4gb card turned out to be the perfect size.

Power the Orange Pi via micro USB and connect the serial port via a CP2012, or your favorite USB/Serial adapter.

On a Mac (or linux) you can use this screen command to connect to the serial terminal. Use your favorite Windows terminal...

STM32CubeMX Makefile project

STM32CubeMX is a cool little code generation tool from STM that helps you choose the pinout for you microcontroller project given the pin assignment constraints of a given CPU. The only problem is that it doesn't allow you to generate a Makefile project for use with the arm-none-eabi- toolchain.

I'll show you how to do this.

STM32CubeMX Overview

If you've never used STM32CubeMX before, checkout this great overview video first:

By the way, STM32CubeMX now runs on Mac OSX.

Generate the...

BetaFlight Micro Brushless Aurora 100

The Aurora 100 is a micro brushless quadcopter from Eachine, similar to the Falcon120. It's no less powerful than the Falcon 120, however it's lighter and therefore more nimble.

Here's some flight video. I flew both line of sight and FPV. This little 100mm quad feels like a 250mm, but without the expense of a larger quad or any of the risks of 5" props. You'll notice the horizon moves the wrong way when I turn. More on this later.

This video was shot on the Eachine VR D2 Pro goggles

Unlocking STM32 Chips

If you run into weird issues flashing your board, it might be because the board is locked.

First check for

  • Ground loops: Are you powering the board from a different power supply than the OpenOCD or J-Link programmer? Try to power the board from the programmer.


While pressing the boot button or shorting the boot pads, open OpenOCD, connect the SWD port and run:

  • For F4 and F7 devices, run:
> stm32f2x unlock 0
stm32f2x unlocked.
INFO: a reset or power cycle is required for the new...

Taranis Q X7 Review, Teardown and Setup

The Taranis Q X7 is an awesome new radio from FrSky that is budget priced, just over $100 and stocked full of premium features like a backlight screen, audio output, an SDCard for tons and tons of models and not to mention, ever switch is 3-position.

This is a huge upgrade from my FlySky 9x and probably the best value radio on the market today. Not only is the FrSky protocol the best among many manufacturers, but the radio quality and features are outstanding.

That said, I pre-ordered as early...