Skip to content

Instantly share code, notes, and snippets.

Technical Books

These are various books I've bought over the years that I no longer need. Most are in very good / excellent condition, having sat on bookshelves for a long time and only been used as occasional reference or only read a small number of times.

I'm looking to get rid of all of these.

If you're based in the UK I'll happily post these to you (except maybe for the fatter books where I might ask for postage). I'm happy to ship to anywhere else in the world if you'll pay for shipping.

Title Author ISBN Publish year Condition
@jamesog
jamesog / pds.nix
Last active December 14, 2025 18:36
Fake age verification for Bluesky PDS
services.caddy = {
# Enable on-demand TLS to allow domain handles to work.
# When a virtual host uses a wildcard, instead of trying to request a wildcard
# from Let's Encrypt, it'll issue a cert for each hostname if the service
# specified here responds with 200.
globalConfig = ''
on_demand_tls {
ask http://[::1]:3000/tls-check
}
'';
@jamesog
jamesog / config
Created December 28, 2024 11:48
Ghostty config
theme = "Tomorrow Night Blue"
copy-on-select = true
macos-non-native-fullscreen = true
macos-titlebar-style = "tabs"
macos-option-as-alt = true
@jamesog
jamesog / agile_price_charge.yaml
Created December 5, 2024 18:31
Home Assistant automation for force charging FoxESS batteries based on Octopus Agile price and time window
alias: Agile price charge
description: >-
Set the inverter to force charge when we're in the time window and the
Octoppus Agile price is at or below the threshold.
trigger:
- platform: state
entity_id:
- binary_sensor.charge_window
from: "off"
to: "on"
@jamesog
jamesog / configuration.nix
Created September 7, 2024 15:52
NixOS on ZFS root (UTM / virtio)
{
networking.hostId = "..."; # Use head -c8 /etc/machine-id to get this
services.zfs.autoScrub.enable = true;
}
@jamesog
jamesog / Corefile
Created March 13, 2023 20:15
CoreDNS with NextDNS
. {
forward . tls://2a07:a8c0::ae:9cfd tls://2a07:a8c1::ae:9cfd tls://45.90.28.178 tls://45.90.30.178 8.8.8.8 8.8.4.4 {
tls_servername dns01-ae9cfd.dns.nextdns.io
policy sequential
}
cache {
success 12800 86400 300
denial 12800
prefetch 25
serve_stale 24h
@jamesog
jamesog / configuration.nix
Created March 3, 2023 12:09
NixOS using SSH CA
{ config, pkgs, ... }:
{
environment.etc = {
"ssh/ca.pub".text = ''
ssh-rsa ...
'';
};
services.openssh.extraConfig =
@jamesog
jamesog / README.md
Last active August 24, 2025 01:56
YubiKey as an SSH CA
@jamesog
jamesog / better-config-mgmt.md
Last active December 13, 2020 20:28
I dreamed a dream

Better config management

Syntax

Use HCL, not YAML.

# Ensure blocks group actions
ensure "Foo service" {
    package "foo" {
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.jamesog.takeabreak</string>
<key>Program</key>
<string>/usr/bin/say</string>
<key>ProgramArgs</key>
<array>