👋 Hello! My name is Peter, and I write code.
I've been involved in open-source development for about 20 years. In that time I've written custom software, started open-source projects, and contributed to Linux distributions and other FOSS projects. I've also created and maintained thousands of FOSS software packages for corporate Linux distributions.
🔭 I’m currently working on ...
Some of my projects have been lost to time, and some are closed-source, but below is some of the FOSS stuff I could still find.
- docker-in-docker - A Helm chart to install a Docker-in-Docker service in a Kubernetes cluster
- dump-google-keep-notes - Dumps Google Keep to Markdown files with front matter for the metadata.
- bump-version-yaml - Bump the version number in a YAML file, using a schema file to determine what part of the YAML gets updated, and how.
- fix-atlassian-links - Simple search and replace on Confluence pages.
- junkdrawer - Small miscellaneous scripts.
- Terraformsh - A wrapper for Terraform to provide hierarchical, DRY terraform configs, and sane best-practices. Simpler than Terragrunt.
- packersh - Like the Terraform wrapper, but for Packer.
- jenkins-bootstrap.sh - Ever needed to set up Jenkins? This script will do everything for you as code according to best practices.
- attach_ebs.sh - Ever needed to attach an EBS volume to an EC2 instance at boot time?
- direnvsh - Ever wanted to run a command while inheriting environment variables recursively from a reverse hierarchy?
- repeat.sh - Ever wanted to run a couple commands over and over again with some added features?
- patch-solr-log4j -
IfWhen Log4j vulnerability comes back, patch it quickly. - jenkins-plugin-manager - Jenkins's new plugin manager doesn't resolve dependencies properly.
- newrelic_api_cli - NewRelic didn't used to support their whole API in Terraform, so you still had to script stuff directly.
- twoman.sh - An example of a two-man authentication file crypto system.
- test.sh - A minimal test framework in Bourne Shell.
- clinst - Download and install statically-compiled programs, and then select specific versions of them to run from different directories.
- junkdrawer - Small miscellaneous scripts.
- create-dvd - Command-line wrapper to make it easier to burn a video DVD
- findphonewords.pl - Find English words in phone numbers
- ldapcachder.pl - A rudimentary LDAP proxy. Caches and pools connections to an LDAP server so you don't hit connection limits.
- print_network_map.pl - Given an NMAP XML file, print a list of all the routes and hosts found.
- pop3download.pl - A POP3 and IMAPv4 mail fetcher. Like Fetchmail, but less buggy.
- user_login.pl - User authentication for OpenVPN.
- bluelock.pl - Lock a desktop when a Bluetooth device goes out of range.
- deldupes.pl - Delete duplicate files
- dumpfd.pl - Dump the file descriptors of a running process
- encsh.pl - Turn any interpreted script into an encrypted program that never stores its source code on disk
- meminfo.pl - Summarize memory use of Linux processes
- piratespeak.pl - Substitute words and phrases with pirate speak
- dynamic-dnsmasq.pl - A Dynamic DNS HTTP API backend. It allows dnsmasq to be updated via a Dynamic DNS client. One of the first pieces of OSS code I wrote.
- junkdrawer - Small miscellaneous scripts.
- etherdump - A tiny tcpdump, with no dynamic memory. Packet processing is built-in, not from libpcap. Useful on embedded machines, or just to learn about tcp/ip protocols.
- ddnsu - A Dynamic DNS update client supporting No-IP and DynDNS. Pretty small, suitable for embedded environments.
- eject - The eject applet for Busybox