Erasing Hard Drive Data

The "gold standard" in this category is "Darik's Boot and Nuke" or DBAN (pronounced D Ban).

DBAN is a tiny version of Linux, usually run from a diskette, that contains a program that will erase any hard disk on your computer. It has several different methods, many which are used by the military to securely erase data.

Mobile Website Editors Reviewed

Reviews of several mobile-phone or tablet-based website editors.

Observations about WordPress, and why I think this weird platform in not in crisis

WordPress is no longer the best blogging platform. I think Medium is that. It's almost like a word processor.

According to the few surveys I've seen, WordPress isn't used as much for blogging as for making "brochure" websites. There's a bit of a product-market mismatch.

The program is so huge once you add Jetpack and a few other plugins that you need to purchase a more expensive hosting plan with 1 Gig of RAM.

The built-in onboarding/user registration code is not only not-OO, it's spaghetti code. Modifying it is difficult, limiting the ways it can be used for growth hacking.

PHP Frameworks get weird

I was getting the itch to write a small web application and started looking around. I had played with Laravel a while back, but it's just a little too large. I wanted to deploy cheaply on my slow server.

The features I wanted were: REST API support, OAuth (client), Routes, User Auth

Phalcon was the most interesting. It's written in C as an extension, and is fast. It does mostly traditional, Laravel style MVC. It can do REST APIs as well, but the example isn't good. It needs some more code to do REST right. Being compiled it is fast. The features resemble Laravel and Twig.

WordPress Multisite Problems with Vagrant

I had some problems setting up Multisite on WP with the Vagrant environment.

The big issue is that the the domains and URLs need to be set just right. This is a little more complicated than a typical server setup because dev setups usually take shortcuts on DNS.

You need to fix the domain names in all the locations where they're resolved.

First, set up DNS. Set up domain names for all the domains you're going to develop, but use local names like "foobar.lo" instead of "". They can all point to the IP address your dev server exposes via Vagrant, usually

Adding SSL to the Proxy in Front of devpi

I was getting a bunch of annoying warnings with the devpi index, so I decided to add SSL.

I don't think it was worth it, because the config is a lot harder. Also, I've migrated the entire provisioning to Ansible, so this is just a fragment to add on. You will need to find another howto that explains setting up an HTTPS server.

local-npm with daemontools

Following the advice from Addy Osmani I set up local-npm on the caching proxy server. (So far, we're caching apt, pypi and now npm.)

These examples have URLs to a machine named 'donettes'. That is the cache. Adjust to your own network.

After setting up DNS, you need to install local-npm. The Ubuntu repo version of node is out of date, mainly because node is in flux, and the packages change. So download node from

Rebuilding a Virtual Machine After Deleting It

This is a note to remind myself how to set up a new VM for development. This is a mess, not a tutorial.

This works on a target environment with this uname -a:

Linux marinela 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

My host system is set up to run a bunch of VirtualBox VMs. I have a VM network setup, and want to be able to throw away the VMs and start fresh, reconstructing them with an Ansible playbook.

devpi on Apache, with daemontools / supervise

I finally started putting my code into Python packages, and quickly found I needed a private repository. A little searching found devpi, a great caching proxy that's also a private repository.

My problem was that the configuration presented used nginx and supervised.

A Small Web Dev Network

This is a quick description of my current web dev network that includes a caching proxy server for Debian and Ubuntu packages, and Ansible.

Due to general annoyance with Ubuntu, I started using Debian again, but when I started learning Ansible to set up a staging server, I had to switch back, because Ansible plays nice with Ubuntu. It works with Debian but you need to build from sources.

So, start out by firing up VirtualBox and creating two machines (512M to 1G RAM, 8G disk). Into one, I loaded Debian, but any distro is fine. Debian is just smaller.

A Small Library to Change WordPress Options (useful for E2E WP Testing with Selenium)

I was messing with E2E testing of WordPress, and it was going okay, but I hit a wall when I needed to mess with one of the options, to turn of a CAPTCHA. You don't want to use deal with CAPTCHAs during a test, at least not every test. There may be some where you want to see the CAPTCHA.

The right way to do this is to flip options on and off.

Configuring Git to use Your SSH Keys

Github has instructions on how to do this.

Okay, you've done it, but it's still not working.

The problem I keep having is that I clone repos via HTTPS rather than git, so my settings need tweaking.

.git/config usually has a line like this:

[remote "origin"]
    url =
    fetch = +refs/heads/*:refs/remotes/origin/*

So, I need to change the URL, replacing the first part with "" I also like to add a setting for [push] to get rid of the long mes

Angular $q Promise Gotchas

This is here so you can laugh at the first mistake.

Gotcha: resolve(), not return:

Spot the bug:

$q(function(resolve, reject) {
    if (someVarInScope) {
        return someFunctionThatReturnsAPromise();
    } else {
        reject("some error message");

It's probably easy, given the headline. Line 3 is in error. It should be:


"return" exits the function.

Problems Injecting DOM Elements from Angular Views into D3 Objects

I was having a hell of a lot of gotchas related to redrawing a D3 chart within an Angular view. It was looking like something on the Angular side was causing my DOM references to break. Maybe ng-route redrawing views?

That was bad, because my charts were being appended to a DOM element that had been passed from Angular over into D3 via a config object. It worked before changing routes, but when you toggled through routes and returned to the chart, it couldn't be redrawn.

Javascript Method Chaining, aka Fluent Interface

There are several ways to implement the Fluent Interface in JS, and this is one I was using in a project, and halfway forgot.

Syndicate content