Skip to content
View watfordjc's full-sized avatar
Block or Report

Block or report watfordjc

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
watfordjc/README.md

watfordjc

I am John Cook (WatfordJC) and I go through phases of dabbling with turning fleeting thoughts into code, invariably only half finishing the code before losing interest or thinking about something else.

ICD-10 F84.5, F33.1, F32.2

Part of the reason I leave code half finished is because of how my brain works. A lot of people on the autism spectrum have specific interests, but my combination of recurrent depressive disorder and treatment-resistant major depressive disorder mean losing interest in things is my psychological norm.

As a result, I have a wide range of interests, a specific interest for a period of time, and zero interests, depending on mood, meltdowns, anhedonic levels, etc. I am a domain registrar, a record label, a food grower, and the politics section of my Web site still contains my 2010 election manifesto (a week or so before the deadline for submitting nomination papers I was advised not to stand).

I wrote a list of things that didn't interest me one of the recent times I suffered anhedonia, not that I finished the list… maths, accounting, business, politics, sociology, health & fitness, first aid, psychiatry, electronics, radio communications, telecommunications, music production, Internet/Web/e-mail standards/services, video production, cosmology, computers, technology, programming.

Projects and Applications

My Web browser acts a bit like a stack, although with more things being added to it than removed I recently tripled my RAM to avoid a figurative stack overflow. I have about 100 browser windows open and the total number of tabs is likely in the region of 500-2,000.

I do eventually close tabs when I've finished needing the documentation for coding something (or when background workers in Web pages are using too much CPU), though.

The tabs for the Have I Been Pwned? API were closed when I "completed" my Android app Bad Passwd, although I think the Food Standards Agency API tabs I had open when last working on the Android app Food Safety Alerts were open on my now dead laptop so haven't been closed (yet). I prefer Java over Kotlin.

Repositories

In the language of C, there is my half-finished EPP client (it needs recompiling for every command), my FCM XMPP Connection Server implementation, a half-finished gammu MySQL PDU converter that doesn't connect to MySQL, an LTO encryption tool using SPTI, and my OBS plugin obs-shm-image-source which adds a shared memory image source type to OBS (i.e. displays a Direct3D ID3D11Texture2D stored in the GPU by another program).

In PHP, there is my unmaintained sms_inject repo that used to be able to send SMS messages using gammu with MySQL storage.

I tend to use bash/dash scripts when cobbling things together, such as le-revoke-check-2020 which checked for certificates affected by the Let's Encrypt mass revocation, and my patches to tweet.sh to allow downloading Twitter profile images from a Twitter list of users (rather than writing something that uses the API from scratch). I have many more bash/dash scripts, but they tend to have a specific purpose that wouldn't make sense to post online other than for backup purposes.

I don't really use python, although I have some patches for tplink-smartplug, one of which is based on a gist someone wrote for the new protocol.

C# is my Windows programming language (using C and C++ when I need to such as dabbling with DirectX), although I have used WScript, COM, and bash.exe to call a bash script in WSL2 to avoid writing Windows code. csharp-stream-controller needs fixing and uses WPF and .NET Core, LTO-Encryption-Manager needs finishing, and EditableCMD/EditableCMDSanitised is a console application in .NET 5.0 that may someday be an extensible wrapper around command prompt.

Projects

I have used GitHub repository projects in the past, but by the point I need a GitHub project to organise issues I have likely already got more than one repository the issues relate to. Rather than duplicate the issues in different repositories, they are added to the watfordjc user project that repository is linked to.

My GitHub projects usually get created when issues need prioritising, which typically occurs when the codebase has gotten to the point of needing refactoring and cleaning up.

My Live Streaming Control project covers repositories about live streaming, such as my currently broken OBS stream controller.

My Data Backups and Archiving project is for backing up and archiving data. As well as a Wiki containing thoughts on how I'd achieve that, it includes repositories for LTO tape storage and encryption.

My EditableCMD project is for my command prompt wrapper with editable output and plugin support.

Code Signing

My GitHub commits are normally signed using GPG key 0xBF09A195A052493F80975092380852F8F6CE9235, although there are some instances where I use the GitHub Web interface resulting in GitHub's GPG key 0x5DE3E0509C47EA3CF04A42D34AEE18F83AFDEB23 being used instead.

I do use other GPG keys for commit-signing and code-signing, but these are unlikely to be used on GitHub. Most of my GPG keys are signed by my master signing key, 0xAE04BA84CDC96DD4F2B3D1EB4EEB0C689DE6BB74.

My Debian packages and commits, including those that are Ubuntu-compatible, are signed using GPG key 0xB67D120BDA498C2C66959B031CBF612DBBE5DE6F.

My Ubuntu packages and commits are signed with key 0xA9AE7BD699B94178F4B89F8C8C5E2CC1D6498FBA. My Ubuntu PPAs are signed by Launchpad using key 0x0C7F9AD49DD1D9D38D4387DF9C80A534D162C034.

Commits and packages relating to my infrastructure may be signed by my GPG key for hostmaster (DNS) purposes, 0x9677EA855262A4ECA14D9B21990D7896239C495E.

My Windows builds are signed using my own certificate authority infrastructure.

The root certificate authority is John Cook UK Root CA (.crt), the current intermediate used is John Cook UK Code Signing CA, and my current code-signing certificate is John Cook.

My Android APKs are currently signed using app signing keys that I control. This may change if I start using Play App Signing for an app, such as if I want to use app bundles.

Pinned

  1. LTO-Encryption-SPTI LTO-Encryption-SPTI Public

    The purpose of this tool will be to pass symmetric encryption keys to an LTO drive using SPTI.

    C 4

  2. LTO-Encryption-Manager LTO-Encryption-Manager Public

    LTO tape AES key management using SLIP-0021 symmetric key derivation from a BIP-0039 wallet mnemonic.

    C# 3

  3. backup-policy backup-policy Public

    Documentation and tools on backing up and archiving data.

    1

  4. csharp-stream-controller csharp-stream-controller Public

    My WIP stream controller for live streaming

    C# 1

  5. csharp-message-to-image-library csharp-message-to-image-library Public

    MessageToImage is a test/sample C# solution with an ordinary (non-MFC) C++ DLL project.

    C#

  6. obs-shm-image-source obs-shm-image-source Public

    Experimentation

    Shell