Skip to content

Instantly share code, notes, and snippets.

View gsinclair's full-sized avatar

Gavin Sinclair gsinclair

  • Sydney, Australia
View GitHub Profile
@gsinclair
gsinclair / class-log.md
Last active February 3, 2026 05:38
Classroom log

2026 Year 11 Extension 1 Mathematics (Sinclair)

Tue 3 Feb

  • Set 3: Set 3: 2026-02-03-Set-3-mixed.pdf
  • Textbook work: Harder questions in 3.02–3.04.
  • Comment: We've mostly finished Permutations and Combinations. Now it's just practice. We're not doing 3.05–3.07 in this topic.

Mon 2 Feb

  • Comment: We did the handout "Permutations, combinations and counting questions" today. Answers are on Classroom.
  • Textbook work: None today. We have a bit more to learn before digging further into 3.02–3.04.
@gsinclair
gsinclair / wezterm.lua
Created December 23, 2024 04:53
A WezTerm config for Mac which is opinionated but has a small surface area.
local wezterm = require('wezterm')
local act = wezterm.action
local c = wezterm.config_builder()
--
-- General settings: reload config, close confirmation, key encoding
--
c.automatically_reload_config = true
Name,Sex,Age,Height (in),Weight (lbs)
Alex,M,41,74,170
Bert,M,42,68,166
Carl,M,32,70,155
Dave,M,39,72,167
Elly,F,30,66,124
Fran,F,33,66,115
Gwen,F,26,64,121
Hank,M,30,71,158
Ivan,M,53,72,175
# We read the data as just an array of words. No need for line-by-line, although
# that is fine as well.
def test_data_09():
return open("data/09.1.txt").read().split()
def real_data_09():
return open("data/09.txt").read().split()
D = test_data_09()
;; Problem 13 from Advent of Code 2021 -- origami
(defn fold-left [fold-x [x y :as point]]
(if (< x fold-x)
point
[(- (* 2 fold-x) x) y]))
(defn fold-up [fold-y [x y :as point]]
(if (< y fold-y)
point

Karabiner layouts for symbols and navigation

Gavin Sinclair, January 2022

Introduction

I use Karabiner (configured with Gosu) to make advanced key mappings on my Apple computer. Karabiner allows you to create “layers”, perhaps simulating those on a programmable mechanical keyboard. I make good use of these layers to give me easy access (home-row or nearby) to all symbols and navigational controls, and even a numpad.

The motivation is to keep hand movement to a minimum. Decades of coding on standard keyboards has unfortunately left me with hand and wrist pain. I will soon enough own a small split keyboard which will force me to use layers to access symbols etc., so this Karabiner solution, which has evolved over months, is a training run for that.

@gsinclair
gsinclair / karabiner-example.edn
Created January 10, 2022 10:25
A Karabiner/Goku example that among other things demonstrates swapping Win and Alt keys on an external keyboard to reflect the Mac Option-Command layout.
{
:devices {
:sculpt-keyboard [{:product_id 1957 :vendor_id 1118}]
}
:layers {:capslock-mode {:key :caps_lock :alone {:key :escape}}
; CAPSLOCK gives arrow keys with hjkl and Enter with m or Escape if tapped
}
@gsinclair
gsinclair / links.txt
Last active September 13, 2021 00:41
@gsinclair
gsinclair / guessing.py
Created February 18, 2021 01:19
Computer guessing game
import random
UPPER_LIMIT = 1000000
target = random.randint(1, UPPER_LIMIT)
print("I've chosen a number between 1 and", UPPER_LIMIT)
num_guesses = 0
while True:
# --- Question 1 ------------------------------------------- #
# Return the number of jumps required to get to zero.
def light_years(n):
return 0
def test_light_years(n):
assert light_years(10) == 4
assert light_years(11) == 4