The following projects are available for browsing

  Key Title Description
ADBLK Adblock Lists

I've been using my own amended version of EasyList for quite a while in my adblocker, and also block various ad domains at the DNS level. Changes to Easylist tend to be either overriding things they've whitelisted, or adding domains that are not yet included (and in some cases, may never be).

A little while ago, I moved those lists into a repo so that I could record the reason for a change, but that's proven less helpful when wanting to note why a group of changes have been made

So, this project has been created to record and reference any larger changes to the list

The compiled version of the list is published to

A copy of the repo can be found on Github and also on my Public Repos Mirror

The public mirror of this project is here.

BHAYSTACKG BASH Haystack Generator BASH Haystack Generator was initially created purely as an intellectual exercise aimed at analysis of masking 'genuine' traffic across an encrypted tunnel by generating additional traffic

The overall aim being to see whether it's feasibly possible (i.e. without wasting exorbitant amounts of bandwidth) to negate the risk of traffic level analysis by an adversary (on the assumption they're unable to decrypt the traffic).

The project itself simply generates traffic, it's up to the administrator to ensure that the traffic is routed over the relevant tunnel (whether that's a VPN, Tor, an SSH tunnel or anything else).

One thing the project doesn't try to address is the issue of an adversary who's also able to monitor traffic at your endpoint (i.e. if you're using a VPN, is 'public' traffic then emanating from the endpoint). In theory, at least, this would be less of an issue with Tor.

Codebase: Hosted on GitHub
BTFW BT Framework I've used elements of my simple framework in a number of projects but have never centralised the project to ensure that improvements made propogate across projects.

This project aims to achieve that task
BUGGER BUGGER BUGGER was originally a CGI based Project management system incorporating Issue Tracking, Document filing and release file storage.

It was later converted to PHP but the template never quite saw the work it needed to look anything but ugly.

As a result of it's offensive looks it fell out of use, and has been sitting largely idle.

This project has been created primarily to oversee the decommissioning of BUGGER, with an eye to preserving the data within.

DNS Chat isn't intended to be a useful utility - it's an intellectual exercise to prove the concept

The main point being that no matter how much interception the Government inflicts on it's populace, there will always be simple clandestine methods of communicating - it is in essence a response to claims such as those made by David Cameron following the Paris Attacks - ("There should be no means of communication which we cannot read") - a massive invasion of privacy in order to achieve an unattainable goal

Suggestions for features, comments on issue can be mailed in to dnschat AT (to comment on an issue, include the issue reference in your subject line)

Although no meaningful work was ever done on an implementation, an initial design draft of a successor - DNSChat2 can be found here

FKAMP Anti-AMP Scripts

I really, really, hate AMP pages.

They serve no useful purpose to me, and are often lacking functionality that I actually use. Also none-to-happy about the number of AMP sites that are hosted (sorry... cached) directly by Google.

Unfortunately, there still isn't a way to globally opt out of AMP for all sites (and Twitter have now taken to directing links to the AMP version automatically). Google's increasingly taking steps to try and force AMP down our throats too

This project started out as a single issue (MISC-25) to create some functionality to block AMP pages and redirect the browser to the proper full-fat page

As Google's insistence on AMP has developed, so has the breadth required for the scripts, so I broke the existing (3) issues out into this project for easier tracking in future

GPXIN PHP GPXIngest GPXIngest is a PHP Class designed to ingest GPS Tracking Files and convert them into a nested object.
It supports JSON serialisation (and later import) of the ingested data and generates a number of statistics at ingest (such as acceleration rates).

Codebase: Hosted on GitHub

Issues can be raised by emailing gpxin AT To comment on an existing issue, include it's issue reference in the subject line.
HLS HLS Stream Creator

HLS-Stream-Creator is a simple BASH Script designed to take a media file, segment it and create an M3U8 playlist for serving using HLS. There are numerous tools out there which are far better suited to the task, and offer many more options. This project only exists because I was asked to look into HTTP Live Streaming in depth, so after reading the IETF Draft I figured I'd start with the basics by creating a script to encode arbitrary video into a VOD style HLS feed.

Code is available on GitHub


This is a project to take input from a DVD/Blu-ray player (or any other arbitrary HDMI Input) and make it available on the local network in a standardised format (initially HLS, though Smooth Streaming may come later if I'm feeling particularly sadomasochistic).

There are a limited number of HDMI ports on most TV's and most of my viewing now happens in Kodi (or more specifically RaspBMC). Given that Kodi gives me the ability to watch network stream, it'd be great to be able to stream from a single player to anywhere in the house (reducing the need to walk around trying to work out where a specific disk went).

The intention is that HLS-Stream-Creator (see project HLS) will do most of the leg-work in transcoding, so the main aim of this project is to build a system that can take input from a HDMI source and pass to HLS-Stream-Creator (ideally running on either a Raspberry Pi or in a VM).

JILS Jira Issue Listing Script A simple script to generate HTML pages containing JIRA Issues, although the main aim of the codebase has changed since the original implementation.

Documentation for the original Implementation can be found at

Codebase: Hosted on GitHub

Issues can be raised by emailing jils AT To comment on an existing issue, include it's issue key in the subject line.
JWL Jira Webhook Listener Small set of PHP scripts to catch JIRA webhook events and run custom commands/send notification emails via SMTP.

Created to satisfy a requirement in RIM-50

Codebase: GitHub
Issue Tracking:
LOC LocalChat

Localchat is a simple and lightweight chat application. It's primary purpose (as defined in SC-2) is to provide a means for an Off-The-Record transient chat

It is not designed to be stood up and exposed to the internet at large. Instead, the primary intended means of use is to deploy in on a new system, have user's SSH tunnel in to use it and then discard the system once that chat has completed.

In other words, it's not designed as a generic chat application, but as one to be used for discreet chats that are hard to monitor/intercept

MAILARCHIV Mailarchives

I host archives of a number of mailing lists at (or http://mailarchives.6zdgh5a5e6zpchdz.onion/ for Tor users)

This project exists to record changes to those archives

A number of the lists (for example, Cyberpunks) are not, strictly speaking, mirrors, as I apply some filtering to remove certain types of mail from them. This project is used to record when and why such a filter is implemented

MCI Mod Cat Implode Mod cat implode is a Joomla module designed to display all articles within a single com_content category as a single page (with named anchors for any H3 within).

An example of it's use can be seen at VehicleFuelTracker

Issues can be raised by emailing catimplode AT To comment on an existing issue, include it's issue reference in the subject line.
MGF mod Google+ Feed Google+ Feed (Mod_GoogPlusFeed) is a module designed to embed your Google+ posts into a Joomla site in the way that mod_btwitter does for Twitter. The core principle of the design is that it shouldn't contain un-necessary chrome and shouldn't slow page load.

The module can also display all posts within a Google Community - Simply specify the community ID instead of a user ID!

The module is available from
You can also view the documentation
MISC Miscellaneous This project is used to track anything that doesn't fit under an existing project (and doesn't need a project of it's own). The Version's functionality is used to group related issues.
NLA NGinx Log Actions
PAS PCAP Analysis Script

This script was originally created to help identify the extent to which my downstream traffic was observable, in part to aid in the writing of this analysis of what the draft IPB will allow

It's purpose is to crawl a PCAP and extract all potentially useful information about observed browsing behaviour/connections. At time of moving into a dedicated project, the script currently supports

  • Extraction of Host / Path /Cookie from Port 80 traffic
  • Extraction of FQDN from SNI handshake for port 443 traffic
  • Correlation of HTTP referrer headers to known HTTPS hosts to identify (some) paths viewed on HTTPS sites
  • Generation of unique list of cookies seen (for potential credential/session theft)
  • List of XMPP servers observed

Port 80 and 443 traffic information is combined into a chronologically ordered CSV to aid further analysis

The codebase can be found On Github

PHPCBA PHPChangedBinaries The PHPChangedBinaries project is used to keep track of issues/features in both the PHPChangedBinaries client and the API - it wasn't used to build either.

The PHPChangedBinaries client is Open Source Software and can be obtained from GitHub. It can also run in standalone mode so that there's no reliance on the API.

The API is not Open Source at this time, and API Keys are currently by request only.
PHPCRED PHPCredlocker PHPCredLocker is a secure web-based repository for credentials. Intended for teams who need to share credentials, the system aims to store all content securely

Development and issues were previously tracked on GitHub

Issues can be raised by emailing phpcredlocker AT To comment on an existing issue, include it's issue key in the subject line.

Early development of PHPCredlocker was tracked in BUGGER Project 43
PIDVR PiDVR Project to build a DVR using a Raspberry Pi.

The aim is to build a system with
  • Scheduling API
  • Replication Support
  • Push/Pull media support
  • Freesat support

Codebase: Hosted on GitHub
Public Issue Tracking:

Useful Utilities
PLGSCH Send Custom Headers Send Custom Headers is a plugin allowing a Joomla site to send custom response headers if certain rules are met

It was designed to facilitate using NGinx as a reverse caching proxy for, and a similar example use case is documented here
URLBRND URLBrand 2 The original codebase can be found on GitHub

This is effectively a restart of the Project, using the good bits of the original.

The end result will be used for the URL shortener service.
VCL VehMan Client Libraries
VEH VehMan VehMan is a Vehicle Management API designed to help track the Total Cost of Ownership of vehicles.

It includes tracking of Fuel and servicing costs, as well as journey speeds (via ingestion of GPX track files) and will generate charts and reports.

VEHPI VehManPi VehManPi was a project to design and build a 'black box' to be fitted within a vehicle.

The idea being to create an autonomous system which uses GPS tracking to record journeys and automatically upload the resulting track files to VehMan whenever in range of a suitable Wifi point

For the time being, though, the project is on hold as other work has had to take priority
VFJ Vehman For Joomla Vehman for Joomla is a Joomla component that interacts with the API.

It will form part of and is the long-term replacement for VehManLegacy
VID is a platform for hosting (and embedding) whatever limited videos I might make. It was originally deployed onto the CDN in CDN-13

XMLRPCPLG Sitemap Update Ping Plugin

Sitemap Update Ping is a plugin for Joomla 2.5 and Joomla 3.x. It sends a ping to various search engines, notifying them that your sitemap has been updated and should be refreshed (leading to the new content being crawled).

You can view the plugin documentation here

Further detail on the plugin can be found in the Web shop

XML Sitemap JSON Sitemap Moved Issues