Blogs

A Study of the Great Books

A footnote in the chronicle of my quest for greater understanding through reading.
In August 2019 I became interested in reading the great books of Western Civilization. This interest started whilst considering, at length, the public school system in the United States. Both in consideration of my mixed experiences with it, and in planning for my children’s educations. I have always been an avid reader. However, I haven’t read many of, or studied in great depth, the foundational works of the West. In my research I stumbled upon Online Great Books via the Art of Manliness Podcast.

A SimpleBiped with an RTOS on an Arduino Mini

A tale of how I once built a bipedal robot using C, arduino and an RTOS.
About eight years back, I wrote up a program for and designed a bipedal robot (I coined it the SimpleBiped) based on the Arduino Micro board. This article is an outline of what I did, mainly for reference if I revisit this later, but hopefully its useful to you as well. I designed a bipedal robot wh That code looks something like this:ich uses ultrasonic sensors for object detection, and some basic logic for navigation as well as some primitives for servo control.

Setup OpenVPN on Ubuntu the Easy Way

How to setup OpenVPN on an Ubuntu box the easy way.
The best way to setup OpenVPN on Ubuntu, like many other things, is to script it. This way it’s easier to create uniform deployment across larger networks. So, this is how you setup OpenVPN on Ubuntu the easy way - this neat little script makes installing OpenVPN on an Ubuntu VPS simple: Go to your home directory: cd ~ Then create a file by running this command: cat > openvpn.sh #!

The Definitive Guide: Ceph Cluster on Raspberry Pi

Learn how to deploy a ceph cluster on a Raspberry Pi. Commodity off the shelf hardware meets a budget.
A Ceph cluster on Raspberry Pi is an awesome way to create a RADOS home storage solution (NAS) that is highly redundant and low power usage. It’s also a low cost way to get into Ceph, which may or may not be the future of storage (software defined storage definitely is as a whole). Ceph on ARM is an interesting idea in and of itself. I built one of these as a development environment (playground) for home.

Configure Nginx/HHVM for WP - Making WordPress Fly

How to configure nginx and HHVM for use with wordpress on Ubuntu 14.04 LTS.
The next step in the tutorial “Making WordPress Fly” is to configure Nginx/HHVM and install WordPress. This step has two options, configuring for single site (this article) or configuring for multisite. This tutorial will assume that you have completed the prerequisites and read the introduction (part one). It will also that you have completed both parts two and three. We will also assume that you have an Ubuntu VPS. If you don’t, you can get one at Vultr.

MariaDB 10.1 Setup for Ubuntu 14.04 - Make WordPress Fly

How to setup MariaDB 10.1 on Ubuntu 14.04, optimized for use with WordPress
In this tutorial we will cover optimal MariaDB 10.1 setup for Ubuntu 14.04 on a VM with 2-4GB of RAM. This is part 2 of the “Make WordPress Fly” tutorial. You can find part 1 here. Part 1 covered the benefits of using HHVM, MariaDB, Nginx and Ubuntu 14.04 to run a WordPress website. In this section we’ll be digging in to MariaDB and the optimal configurations for it. This tutorial assumes you have a VM with at least 512MB of RAM, 1 Xeon Core, 10 GB HDD and Vanilla Ubuntu 14.

HHVM, MariaDB and Nginx Make WordPress Fly - Intro

Introduction to a series on how to deploy a seriously fast server stack for WordPress.
HHVM, MariaDB and Nginx Make WordPress fly (seriously). This site is running on what may the fastest possible software stack for WordPress. That stack is HHVM, MariaDB 10.1, Nginx and Ubuntu 14.04. As you are browsing this site you may notice that it is graphically intensive. It also leverages many CPU hungry plugins that would make it take 6-10 seconds to load on even good shared hosting. With this aforementioned software stack pages up to 5MB on this site still load in under a second, end-user pipe permitting.

Getting Started with an Ubuntu VPS Running 14.04

A basic guide on how to setup an Ubuntu 14.04 machine.
When you get a new Ubuntu VPS or server there are a few things you want to make sure are taken care of right off the bat. This will optimize the security and usability of your server, providing a reliable foundation for subsequent alterations. If you need an Ubuntu VPS you can get one for . Step One Logging into your new VPS is the first step. You’ll need to know the public IP address of the server to begin.

From WordPress to Hugo

Why and how this blog is moving from WordPress to hugo and github pages.
Hugo static blogs are awesome Migrating to Hugo It is 2019, enter the brave new world of serverless computing and static blogging. After years of using WordPress, and a few years without any updates this blog is in need of a refresh. When I originally created this blog I had servers (a whole web hosting company in fact). Now I just want to be able to create content and have a lightning fast website that is easy to maintain.

Astable Multivibrator from Discrete Transistors

The one time I decided to delve into electrical engineering and built an astable multivibrator in Fritzing.
This blog post is about making an astable multivibrator from discrete transistors. This weekend I embarked on making a home-brew computer from discrete transistors. To test circuits like a JK flip-flop or SRAM, a clock is needed. In the spirit of keeping with an all discrete transistor computer, I used an astable multivibrator composed of two RTL NAND gates. I wanted to start with a very low frequency, so I targeted 10 seconds high, 10 low for the clock.

Copy Ceph Pool Objects to Another Pool

Code and explainantion for copying objects between ceph pools using librados.
Sometimes it is necessary to copy Ceph pool objects from one Ceph pool to another - such as when changing CRUSH/erasure rule sets on an expanding cluster. There is a built-in command in RADOS for doing this. However the command in question, rados cppool , has some limitations. It only seems to work with replicated target pools. Thus it cannot copy Ceph pool objects from a erasure pool to a replicated pool, or between erasure pools.