Skip to content

Instantly share code, notes, and snippets.

@TilKenneth
TilKenneth / gpg-wkd.md
Created October 8, 2025 01:34 — forked from kafene/gpg-wkd.md
Setting up WKD for self-hosted automatic key discovery

I just got this working so I figured I'd share what I found, since there's hardly any information about this anywhere online except an RFC, the GPG mailing list and one tutorial from the GnuPG blog.

You can use automatic key discovery with WKD (Web key directory) to make it easy for users to import your key, in GPG since version 2.1.12. Since this feature is fairly new, it isn't yet available in the current LTS release of Ubuntu (16.04; xenial), however it is available in Debian stable (stretch).

I couldn't add a DNS CERT or DANE / OPENPGPKEY record through my email service (which also hosts my nameservers). I tried making the PKA record - a foo._pka.example.com TXT record but GPG doesn't seem to recognize it and fails; I'm still investigating why.

So the last option for self-hosted auto-discovery was WKD.

First thing I had to do was add an email address to my key. My primary UID is just my name so the key represents my identity rather

@TilKenneth
TilKenneth / jq-examples.md
Created July 4, 2025 10:39 — forked from gangsta/jq-examples.md
Mastering JSON Parsing with jq: A Comprehensive Guide for Time and Date Range Filters in API Data Processing with Bash

Welcome! If you're here, chances are you've made an API call, and it's returning JSON data that you want to parse using a jq script. Let's work through it together.

Whether you're a seasoned developer or just starting out, this blog is your go-to resource for mastering the art of JSON parsing with jq. Specifically, if you're searching for insights on how to efficiently filter and process date ranges, you've come to the right place.

Explore topics such as 'jq filter date range', 'jq how to select date range', 'jq filter selected date range', "How to select a date range from a JSON string by using jq", "jq between two dates" and more. Whether you're looking to filter records in the future, select last week's records, or retrieve emails from a specific timeframe using jq, this blog provides a comprehensive guide to help you navigate the intricacies of JSON parsing with precision.

Let's dive into the world of jq and together, master the art of effortlessly filtering and selecting date ranges!

JSON example

@TilKenneth
TilKenneth / jq-examples.md
Created July 4, 2025 10:39 — forked from gangsta/jq-examples.md
Mastering JSON Parsing with jq: A Comprehensive Guide for Time and Date Range Filters in API Data Processing with Bash

Welcome! If you're here, chances are you've made an API call, and it's returning JSON data that you want to parse using a jq script. Let's work through it together.

Whether you're a seasoned developer or just starting out, this blog is your go-to resource for mastering the art of JSON parsing with jq. Specifically, if you're searching for insights on how to efficiently filter and process date ranges, you've come to the right place.

Explore topics such as 'jq filter date range', 'jq how to select date range', 'jq filter selected date range', "How to select a date range from a JSON string by using jq", "jq between two dates" and more. Whether you're looking to filter records in the future, select last week's records, or retrieve emails from a specific timeframe using jq, this blog provides a comprehensive guide to help you navigate the intricacies of JSON parsing with precision.

Let's dive into the world of jq and together, master the art of effortlessly filtering and selecting date ranges!

JSON example

@TilKenneth
TilKenneth / Configure-ASR.ps1
Created July 4, 2025 01:24 — forked from mgeeky/Configure-ASR.ps1
A little script that configures all Microsoft Defender Attack Surface Reduction (ASR) rules at once to a specific state. Example: PS> .\Configure-ASR.ps1 -State Enabled
#Requires -RunAsAdministrator
<#
.SYNOPSIS
Script used to manage state of Microsoft Defender's Attack Surface Redution rules.
Configures all ASR rules into mode defined in -State parameter.
.PARAMETER State
Tells how to configure all ASR rules available. Valid options:
- Disable (Disable the ASR rule)
@TilKenneth
TilKenneth / CLSID_Windows10EnterpriseEvaluation_10.0.19041.csv
Created June 10, 2025 20:53 — forked from inaz2/CLSID_Windows10EnterpriseEvaluation_10.0.19041.csv
default CLSID/IID list (Windows 10 Enterprise Evaluation 10.0.19041)
We can't make this file beautiful and searchable because it's too large.
"Registry path","CLSID","(default)","AppID","ProgID","InprocServer32"
"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\CLSID","CLSID","{0000031A-0000-0000-C000-000000000046}","","",""
"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0000002F-0000-0000-C000-000000000046}","{0000002F-0000-0000-C000-000000000046}","CLSID_RecordInfo","","","C:\Windows\System32\oleaut32.dll"
"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000300-0000-0000-C000-000000000046}","{00000300-0000-0000-C000-000000000046}","StdOleLink","","","combase.dll"
"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000301-A8F2-4877-BA0A-FD2B6645FB94}","{00000301-A8F2-4877-BA0A-FD2B6645FB94}","PSFactoryBuffer","","","C:\Windows\system32\windowscodecs.dll"
"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000303-0000-0000-C000-000000000046}","{00000303-0000-0000-C000-000000000046}","FileMoniker","","file","combase.dll"
"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00000304-0000-0000-C000-000000000046}","{00000304-0000-0000-C000-000000000046}","ItemMoniker","","","comb
@TilKenneth
TilKenneth / renameat2.c
Created August 18, 2024 22:47 — forked from eatnumber1/renameat2.c
Command-line tool to call renameat2(2)
/*
* Copyright (c) 2023 Russell Harmon
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
@TilKenneth
TilKenneth / PoshWebHarness.ps1
Created August 5, 2024 07:35 — forked from pmolchanov/PoshWebHarness.ps1
Simple PowerShell HTTP/HTTPS web server useful for mocking web services
# Use the following commands to bind/unbind SSL cert
# netsh http add sslcert ipport=0.0.0.0:443 certhash=3badca4f8d38a85269085aba598f0a8a51f057ae "appid={00112233-4455-6677-8899-AABBCCDDEEFF}"
# netsh http delete sslcert ipport=0.0.0.0:443
$HttpListener = New-Object System.Net.HttpListener
$HttpListener.Prefixes.Add("http://+:80/")
$HttpListener.Prefixes.Add("https://+:443/")
$HttpListener.Start()
While ($HttpListener.IsListening) {
$HttpContext = $HttpListener.GetContext()
$HttpRequest = $HttpContext.Request
@TilKenneth
TilKenneth / README.md
Created July 23, 2024 19:42 — forked from markusfisch/README.md
Generate an annual commit report

Generate an annual commit report

Prints something like this:

In 2018 you made 2488 commits in 134 projects.
The average length of a commit message was 62 characters.

Commits per weekday
    Monday     334 ******************************************
@TilKenneth
TilKenneth / README.md
Created July 23, 2024 19:41 — forked from markusfisch/README.md
Synchronize just the contents of a repository with a local directory

Manually embed sub repositories

Synchronize (the contents of) a repository with a local directory. Can be used to manually update "embedded" repositories (aka subtree's).

Does not touch the host repository's stage or history. You have to add and commit the changed files manually. Write a good commit message and have a clean history.

Time Calculator

Quickly calculate when it's time to leave or when something will be over.

Because the calculation of clock times is a bit cumbersome. At least if it is not carried out regularly.

Examples

Here, I want to be somewhere at 19:30 and have three things to do that take