Published

All published posts

2565 posts latest post 2026-07-13 simple view
Publishing rhythm
Jun 2026 | 27 posts

I really wish I would have got this right a few years ago. Theres a couple of flags I had to use to get mdformat to do hard wraps at 80 characters and not wreck tables. This mix of flags and plugins is workign really well for me so far.

mdfmt() {
    uvx \
        --with "mdformat-ruff" \
        --with "mdformat-beautysh" \
        --with "mdformat-web" \
        --with "mdformat-config" \
        --with "mdformat-gfm" \
        --with "mdformat-front-matters" \
        --with "mdformat-wikilink" \
        --with "mdformat-simple-breaks" \
        mdformat \
        --wrap 80 \
        --end-of-line lf \
        --codeformatters python \
        --codeformatters bash \
        "$@"
}

And as pre-commmit.

repos
  - repo: https://github.com/hukkin/mdformat
    rev: 1.0.0  # pin to the version you want
    hooks:
      - id: mdformat
        args:
          - --wrap
          - "80"
          - --end-of-line
          - lf
          - --codeformatters
          - python
          - --codeformatters
          - bash
        additional_dependencies:
          - mdformat-ruff
          - mdformat-beautysh
          - mdformat-web
          - mdformat-config
          - mdformat-gfm
          - mdformat-front-matters
          - mdformat-wikilink
          - mdformat-simple-breaks
I Hope This Email Finds You Before I Do I Hope This Email Finds You Before I Do Last Week in AWS · lastweekinaws.com [1] This post was filled with real life, snark, entertainment, feelings. I get a lot of these emails that claim they can change my SEO game if I give them 500, for a site making 0, Link partnerships from small startups. A lot of these are so automated that if I do respond I dont even get a response. I’ve responded to many simply asking what is this about, I get 10 others just like you a week. Can you tell me what exactly you want and what each of us benefit from it, how did you find me. All normal questions, they almost always result in crickets, no response, maybe its time to implement a Billie for more snark. References: [1]: https://www.lastweekinaws.com/blog/i-hope-this-email-finds-you-before-i-do/

Ping 19

What no one is talking about is that Deegs doesn't get the red plate without Anstie on the ground. ![](https://dropper.waylonwalker.com/file/6cf67bcf-5111-4ee0-892e-0407eb1acdbe.mp4)
View
Trobio Full2

What is that

I was unironically asked what is that about my keeb today. Followed by no way that works, how would you type a, s, y, u, after showing, I go the "that's weird" walk away.
View
Hornet Sitting
Trobio Fight
Trobio Full

📝 Git Notes

See old revisions of one file # [1] git log --oneline -- <file> git log -n 2 --oneline -- <file> Checkout an old revision of a file # [2] git checkout <commit> -- path/to/file fuzzy pick a file and check out an old revision # [3] #!/usr/bin/env bash set -euo pipefail file="${1:-}" if [[ -z "${file}" ]]; then file="$(git ls-files | fzf --prompt="select file > ")" || exit 0 fi if [[ -z "${file}" ]]; then exit 0 fi if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then echo "Not a git repository." >&2 exit 1 fi if ! git ls-files --error-unmatch -- "${file}" >/dev/null 2>&1; then echo "File is not tracked by git: ${file}" >&2 exit 1 fi choice="$( git log --follow --pretty=format:'%h %ad %s' --date=short -- "${file}" | fzf --ansi --no-sort --reverse \ --preview-window=down:70% \ --prompt="checkout revision > " \ --preview "git show --color=always {1}^..{1} -- '${file}' 2>/dev/null || git show --color=always {1} -- '${file}'" )" if [[ -z "${choice}" ]]; then ...
1 min read
Heringbone Fingerboard
I just finished up my latest 6 ply wood fingerboard. I used scraps of purple, blue, red, and gold from the first 5 boards I built to make this pattern.

Dont Trust Users Tokens

User states: Upon picking up an old project and trying to install pip says “cannot find a version to satisfy” I’ve got this, I’ve had this a hundred times before it’s a python version, a rogue package, maybe a yank from the pinned deps. I pop open the project get us on the same commit. I get a different error, make a few updates and we are good, except the user gets the same error from the start. They never saw the error I did, and my fix did not magically resolve their error. We circle all the things it could be for hours. I consistently wipe my venv, and recreate with ease, send them the commands I ran to no avail. Something is up and I can’t put my finger on it. We’ve checked all the things and inched as close as we can to running everything exactly the same. - Os - python version - Network vpn - uv version Nothing makes any sense. Finally I throw in the towel, is it the artifact server. I forge a token and give him one to borrow. BAM it works, like magic. The first sign ...
2 min read
Check out dbreunig [1] and their project whenwords [2]. A relative time formatting library, with no code. References: [1]: https://github.com/dbreunig [2]: https://github.com/dbreunig/whenwords
- What a goat, speedrunning silksong at a competitive pace, live, with live audience, while co hosting, and raising $2M for Prevent Cancer Foundation. CEEN moves in ways that do not compute with my brain, everything looks so simple, things that take me so long are done in a few swipes. Watching this it really make silkspear look OP, this thing does so much damage if you never take damage and can use it continuously without needing silk for healing.
High Halls Gauntlet Ending
Conductors Melody
Top Spool

Opencode is changing on the daily right now, today I noticed the word low pop up in Orange text in my opencode window. Looking into this they are exposing variants to the user. This allows you to change between fast or slow and thinking, the later taking more time to prepare before doing an action.

It looks like this toggle may have been here for awhile and I’m just now discovering it. Potentially because its a new feature of the free Zen provider.

Variants Many models support multiple variants with different configurations. OpenCode ships with built-in default variants for popular providers.

Built-in variants OpenCode ships with default variants for many providers:

Anthropic:

high - High thinking budget (default) max - Maximum thinking budget OpenAI:

Varies by model but roughly:

none - No reasoning minimal - Minimal reasoning effort low - Low reasoning effort medium - Medium reasoning effort high - High reasoning effort xhigh - Extra high reasoning effort Google:

low - Lower effort/token budget high - Higher effort/token budget

Reflections on 13 years and 1,000 posts of writing on my blog - HAMY hamy.xyz [1] The answer is I do it habitually. If there’s a big enough idea I’ve had floating around in my head and I think others might find it useful / interesting then I usually think it’s worth logging it somewhere. If I don’t, I’ll likely just keep thinking about it so might as well get it out of my head and on the internet where people can find it. - hammy [2] This is how you do it. If you want to do something, you need to make it a habit. Something you crave, something you need. I need to write my ideas down in this blog, it helps me index ideas for later, but more importantly it helps me flesh them out and think through real things. Congrats on 1k, your site is awesome Hammy [2] References: [1]: https://hamy.xyz/blog/2026-01_1000-blog-posts [2]: https://hammy.xyz