My name is Chris Savage, I'm a self-taught nerd and I love tinkering with computers. I play in all areas, from development to systems/network administration. On the rare occassion my nerding sessions yield some useful stuff, cjsavage.com is here so I can share it.


  • Reference Replacer (.NET Console)
    A .NET console application that replaces one or more references in file names with those returned from an SQL query.

Coding (Scripts/APIs)

  • Update System E-mail Wrapper Script (Bash on RHEL/Debian)
    Wraps the system updater (apt, dnf or yum) and e-mails the results.

  • SQLite on Android: Executing an Entire SQL Script
    Provides an SQLiteOpenHelper implementation that can process multiple statements from a single file.

  • PiKrellCam Camera Overview/Index Page (Raspberry Pi)
    An offline HTML page that will display multiple PiKrellCam instances in a single overview/index with links through to each camera.

  • SparqEE GPS Module (Node.js/Raspberry Pi)
    A Node.js module for interfacing with the SparqEE GPS receiver.

  • Network Discovery API (Java/Android)
    Uses UDP multicast to enable clients to locate servers on a local network.

  • VBScript Library
    Utility library to aid VBScripts. Includes classes to work with .ini files, CDO messages and log files.

  • Directory Scanner (VBScript)
    Configurable VBScript that can scan multiple directories for expired files and optionally move, delete and/or e-mail them.

  • Squares XLS (Excel/VBA)
    Squares is a simple grid-based board game written using Excel worksheets as a game grid.


Android Apps