Task Automation with Ansible

Ansible provides an Open Source framework for automation. It is most well-known for managing servers and network devices, but it can be used for many other workflows.

Setting Up an Apple Mac for Software Development

This is a guide for setting up an Apple Mac for software development. Current versions of macOS have a fairly good default configuration for general-purpose use, but you do need to to adjust some of the security settings. In addition, you need to install several pieces of software in order to make the system useful for development.

Backups with restic

The restic utility provides a convenient and well-designed command-line tool for backing up files and directories.

Notes on PowerShell

PowerShell is an object-oriented shell that is built on .NET, and the custom programming language that runs within that shell. Third-parties such as VMWare and Amazon Web Services provide modules to enable users to work with their products through PowerShell. You can also supplement the capabilities of PowerShell modules by directly accessing classes from the underlying installation of .NET, and by running standard commands and scripts from the host operating system.

Using PostgreSQL on Debian and Ubuntu

PostgreSQL is the most capable Open Source database server available, with functionality that can complete or even exceed proprietary SQL database products.

Enabling Remote Access to MySQL

Setting up MySQL remote access with SSL encryption is surprisingly awkward. This article describes all of the steps that are necessary to make this feature work in practice.

Using Jenkins Pipelines with Docker

The Pipeline Plugin for the Jenkins Continuous Integration system enables you to define jobs in code, and store them as files within your source code repositories. Version 2 of Jenkins includes Pipeline as standard, and it is easy to add Docker support.

An Introduction to ERB Templating

ERB (Embedded RuBy) is a feature of Ruby that enables you to conveniently generate any kind of text, in any quantity, from templates. The templates themselves combine plain text with Ruby code for variable substitution and flow control, making them easy to write and maintain.

Basics of Git Version Control

Git is fairly logical once you have learned the ideas behind it, so this articles has quite a lot on concepts, and much more abbreviated notes on the important commands.

Computer Security Fundamentals

There are many, many articles on configuring particular software or operating systems for security. The quality varies widely, and most of them miss out one or more important points. Perhaps a better approach might be to start with the basic concepts, and then apply those to the system, rather than just working with lists of tweaks. Here is an attempt to define some of the basic technical issues of computer security, in plain language.

Getting Started with Apache Derby (Java DB)

Apache Derby (or Java DB) provides a small set of libraries that can be added directly to any Java program that needs database storage capabilities, such as a desktop application, network service, or Web application. Generated Derby databases may also be bundled with your application, to remove the need for any separate installation or configuration. In embedded mode, the Derby libraries can directly read database files that are held in JAR archives.

Linux Remote Desktop Access with VNC

The VNC (Virtual Network Computing) facilities provide remote access to desktops, and allow your Linux systems to act as terminal servers, running many network-accessible desktops simultaneously. Unfortunately the flexibility of VNC makes it less approachable than other remote desktop solutions.

Monitoring and Self-Healing Services with Monit

There are many service monitoring products, but Monit is unusual. It tests for specific conditions and carries out actions when they occur, rather than collecting for analysis and graphing. Monit is frequently used to improve the robustness of systems.

Notes on MySQL

MySQL provides all of the essential functionality required for a SQL database service. Although it is most frequently used to provide data storage for Web applications on the same system, MySQL supports replication and clustering across networks.

The Standard Tools of the Ruby Platform

Today, several implementations of Ruby exist, all using the same language syntax, and providing the same platform components. This article is a set of notes on the standard components of this common Ruby platform.

Using Rake to Automate Tasks

Rake enables you to define a set of tasks and the dependencies between them in a file, and then have the right thing happen when you run any given task. Each task may be either one of the built-in types, or a block of your own Ruby code. It was originally created to handle software build processes, but the combination of convenience and flexibility that it provides has made it the standard method of job automation for Ruby projects.