## about A couple months ago I was jj curious, and started a new job, and took advantage of the change to start using it full time. I have pretty much not used git directly since! This is the prose article version of the slides I just presented to my team to give them a ~5 minute lightning talk style introduction to jj. ## what is git (link to https://xkcd.com/1597) ::: notes you know git famously…
## about sometimes people are like, i'd have a website but i don't know what to even put on it. so here is a site spec, a taxonomy for personal websites, that you can use to make a website, or to expand your existing website. ## pages these are pages that are updated from time to time, but that might remain static for up to a year or more. a page listed here typically exists at domain.com/page i…
So I'm slowly writing a little game, hacking on it now and then as time and interest both allow. (I learned how to play cribbage this winter and have been really obsessed with it ever since. Its quirky scoring rules and phased play make it interesting and challenging to reason about and write down in code.) Initially I was sharing my progress periodically with some friends who share some of my…
## What to review for: The Five C's of Code Review - Correctness: Is the thing correct? Does it do what it's supposed to do? Does it satisfy the acceptance criteria? Does it do anything wrong or unintented? - Completeness: Does explore edge cases? Is it documented? Are there tests? - Clarity: Is it legible, understandable, maintainable? - Conciseness: Is it meandering or wandering? Could it be…
My grandmother prefers to communicate through longform email. (My grandfather prefers not to communicate.) My uncle is pretty much only reachable by facebook. Minnow refuses to answer a call or a text, but will immediately respond to marco polo with a 60 minute reply. Lucy, I have to mail an obscure mailing list and hope that he eventually sees it and then also decides to reply. Jessup is only on…
I continue to see blog posts with titles like this: - I Hate Markdown - Markdown Is Really Bad Actually - In Defense Of Markdown - Against Markdown - Markdown Is Bad For You ...and I have so far avoided weighing in on the debate because it is tiresome and tedious. But that ends today! So here it is. The very last thing that needs to be said about markdown ever: IT'S FINE. If you ever find yourself…
## Contents 1. [What it is](#what-it-is) 2. [History](#history) 3. [Warts and All](#warts-and-all) 4. [Use Case](#use-case) 5. [Quickref](#quickref) 6. [Resources](#resources) ## What it is It's a version control system so you can track changes to a file and collaborate with people. Like git. But way older and way weirder. ## History It was released (much like myself) in 1982, by some guy named…
So earlier I was actually using fzf as a little ad-hoc git commit browser because fzf is my favorite and I love using it as a simple little UI for stuff like this. ``` git log --oneline \ | fzf --tac \ --preview="git show {1}" \ --bind "enter:become(git show {1})" ``` It looks like this: fzf browsing git commits oneliners with `git show` for each commit in the preview window And the 'bind' command…
## Contents 1. [Structured Data](#structured-data) 2. [Unstructured Data](#unstructured-data) ## Structured Data I've spent the last several years being really physically disabled. But now that I am doing better I have started being a lot more active, and have started lifting weights again! Weightlifting is good for you because it creates bone density, and also strength and stability, which are…
Here are two things that happened to me this weekend: 1. I remembered about a series of blog posts that I have referenced and re-read several times over the past few years. I wanted to read it again, but when I went to look for a local copy, I discovered that I didn't have one! 2. I read `man pandoc` and discovered / was reminded that Pandoc supports urls: you can convert from html to markdown on…
## Contents 1. [Doom](#doom) 2. [PDF Extensions](#pdf-extensions) 3. [Too Many PDF/A](#too-many-pdf/a) 4. [Choose One](#choose-one) 5. [Converting and Saving](#converting-and-saving) 6. [Refrerences](#refrerences) ## Doom I am deeply disturbed and borderline offended by the proliferation of PDF crimes we have been seeing lately. These crimes take the form of turning a PDF into a platform that can…
Previously: [2023](40.html) [2022](36.html) [2021](27.html) [2020](21.html) [2019](2.html) New for this year is that I'm not using goodreads as my primary way to track books. I am using my local `books.sqlite` database! My goal was to have one single database and then export to goodreads and bookwyrm and storygraph from there. This has been mostly successful. I read 46 books. Here are some…
## CONTENTS 1. [INTRODUCTION](#introduction) 2. [MARKDOWN](#markdown) 3. [DJOT](#djot) 4. [COMMONMARK](#commonmark) 5. [HTML](#html) 6. [SCDOC](#scdoc) 7. [TBL](#tbl) 8. [TYPST](#typst) 9. [CONCLUSION](#conclusion) ## INTRODUCTION Hey! Have you ever tried to write a table in plain text markup? It sucks! Here are the top options for tabular data markup ranked from worst to best. Did I miss one? Did…
## Content 1. [Why do a text browser?](#why-do-a-text-browser?) 2. [lynx](#lynx) 3. [links](#links) 4. [w3m](#w3m) ## Why do a text browser? 1. It's fun! 2. It allows for a very quick and seamless experience for me when I'm working in the terminal. At times, maybe up to 50% of my web browsing comes from terminal links via irc or readme files or something else. It is valuable to me to be able to…
I think it was sometime around 2013 I quit using the US standard Qwerty keyboard layout and started using Colemak. So now that it has been 10 years more or less, this article is about why I decided to do that, and how I did it. ## Why My wrists hurt real bad. A constant kind of almost burning ache. Typing made it worse. Much worse. I often wore braces to immobilize my wrists, which helped some. I…
https://pwmt.org/projects/zathura/ I started using zathura on my macbook because I was doing a lot of writing where my workflow included editing source (groff) files to create pdfs, and I wanted a pdf viewer that would auto-update on write so I could easily preview my changes without having to change window focus or reload the document. (zathura does this, and it's great.) And I liked it so much…
{ width=100% } This is a reply to *Guitar driven development* by my pal eli. (Hi, eli!)…
A mental model that I have been using a lot lately distinguishes between two types of content: web applications and web documents. Web applications---like other kinds of applications---require an operating system to run them. In this case that OS is the web browser. Anything that I explicitly need to fire up firefox for---banking, shopping, etc---is a web application. (Often this is synonymous…
## Contents 1. [Phase 1: Lines of text](#phase-1-lines-of-text) 2. [Phase 2: Tabular Data](#phase-2-tabular-data) 3. [Interlude: A client](#interlude-a-client) 4. [Phase 3: Data Integrity](#phase-3-data-integrity) 5. [Phase 4: Too big for rec](#phase-4-too-big-for-rec) 6. [Conclusion](#conclusion) 7. [Resources](#resources) ## Phase 1: Lines of text The most simple database I use on the regular…
The `finger` command was allegedly written in 1971 by some guy named Les. Its real world analogy is pointing, the act of running your finger down a directory listing or phone book, looking for a certain person or contact. It is one of, if not the very first, presence protocols for remote users. (The same way Slack, AIM, and xmpp report presence or status: available, away, etc.) You can run the…
I don't really know what to do with this post but it keeps rattling around inside my head so I need to exorcise it and put it into words and put it to rest. I keep seeing what I think of extreme cynicism in my online social circles. On the fediverse, in my rss blog feeds, in some irc channels. What it looks like when I see it is somebody categorically panning an entire technology or discipline or…
The intended audience of this article is my friend Will, or anybody else who is already familiar with IRC and XMPP, and wants to know how to connect to IRC over XMPP. ## Preliminaries Nonetheless, some preliminaries. In case you are not the intended audience. (I commend your curiosity!) IRC is an internet chat protocol that has existed more or less since the beginning of the internet. To learn…
tldr: separation of concerns (make for builds, just for tasks) allows for a terse makefile, and a consistent entrypoint from project to project. just allows for rapid iteration on scripts and oneliners, and serves as documentation and a cookbook. ## Contents 1. [Make is a build system](#make-is-a-build-system) 2. [Just is a task runner](#just-is-a-task-runner) 3. [Just is a lovely…
I write a lot of documents. Blog posts, articles, essays, games, slides, etc. And the documents I write target a lot of different formats: html, epub, plain text, pdf. For almost every document I write, there is an amount of metadata that I am interested in maintaining. That metadata usually manifests as "frontmatter" because I usually draft everything I write in markdown before potentially…
This is a really small deal, but I've been really tickled since figuring it out this week. Sometimes I have a markdown document with yaml frontmatter, and in the document body I sometimes want to refer to that frontmatter metadata. ```markdown {.numberLines} --- title: templating markdown+yaml frontmatter with rec and awk subtitle: smol templating created: 2024-03-19 keywords: rec awk markdown…
## Contents 1. [Look At This Todo App](#look-at-this-todo-app) 2. [Introducing the TAP Stack](#introducing-the-tap-stack) 3. [What Does It Look Like?](#what-does-it-look-like?) 4. [Seriously Though](#seriously-though) 5. [Conclusion](#conclusion) ## Look At This Todo App Look at this Todo app: https://chrismanbrown.gitlab.io/todo/ Pretty nice, right? Wrong. It is not nice. It is awful. And it is…
Here's a little awk script that I found in *UNIX Text Processing* that I thought was pretty clever, and a good use of awk. What it does is scan a text for known abbreviations and then expands them. Let's make a little database: ``` AWK:Aho Weinberger Kernighan CSS:California Style Sheets HTML:Hyper Text Machine Learning JS:JavaScript JSX:JavaScript xXx MDX:Markdown eXtreme UNIX:Uniplexed…
## CONTENTS 1. [INTRODUCTION](#introduction) 2. [WHERE DO BLOGS EVEN COME FROM](#where-do-blogs-even-come-from) 3. [WHERE DID BLOGS GO](#where-did-blogs-go) 4. [WHY DO A BLOG](#why-do-a-blog) 5. [HOW I BLOG](#how-i-blog) 6. [COMING UP WITH IDEAS](#coming-up-with-ideas) 7. [TURNING IDEAS INTO BLOG POSTS](#turning-ideas-into-blog-posts) 8. [CONCLUSION](#conclusion) ## INTRODUCTION I recently started…
## Contents 1. [Introduction](#introduction) 2. [Every application and its outcome](#every-application-and-its-outcome) 3. [Tools, Process, and Tips](#tools,-process,-and-tips) 4. [Conclusion](#conclusion) ## Introduction I lost my job in December 2023. I started looking for a new job on December 18. (At least, that's when I started taking notes on my search.) And 71 days later I accepted an offer…
## CONTENTS 1. [INTRODUCTION](#introduction) 2. [FUNCTION AND GLOBAL SCOPE](#function-and-global-scope) 3. [HOISTING](#hoisting) 4. [LEXICAL SCOPE WITH LET AND CONST](#lexical-scope-with-let-and-const) 5. [THIS](#this) 6. [ARROW FUNCTIONS](#arrow-functions) ## INTRODUCTION Hey, I heard you're interested in how scope works! Scope in javascript is wonderfully complicated. I'm going to tell you all…
Edward Tufte is one of my favorite designers. His print style has been emulated on the web via Tufte CSS. He also advocates for the use of sparklines: > A sparkline is a small intense, simple, word-sized graphic with typographic resolution. Sparklines mean that graphics are no longer cartoonish special occasions with captions and boxes, but rather sparkline graphics can be everywhere a word or…
This is part of the Groff Series: - [Groff I: Whence and Wherefore](38.html) - Groff II: Requests, Escape Sequences, and Macros ## Contents 1. [Introduction](#introduction) 2. [Requests](#requests) 3. [Escape Sequences](#escape-sequences) 4. [Macros](#macros) ## Introduction I took a lot of time between writing Groff I and Groff II because I took the time to read the entirety of *UNIX Text…
## Contents 1. [Introduction](#introduction) 2. [Recfile](#recfile) 3. [First Base](#first-base) 4. [Third Base](#third-base) 5. [Where It Starts To Break Down](#where-it-starts-to-break-down) 6. [Conclusion](#conclusion) 7. [Resources and Further Reading](#resources-and-further-reading) ## Introduction Two of my favorite things are tabletop role playing games and databases. Games help me feel and…
## INTRODUCTION This is a response to "Making a single-file executable with node and esbuild" by Bill Mill of billmill.org, which is a fantastic write-up of the somewhat complicated steps required to make a single-file executable with node.js and esbuild. I want to begin by hedging my response and acknowledging the disingenuousness of offering "just use deno" when A) using deno, and potentially B)…
This is part of the Groff Series: - Groff I: Whence and Wherefore - [Groff II: Requests, Escape Sequences, and Macros](42.html) ## CONTENTS 1. [INTRODUCTION](#introduction) 2. [WHAT IT IS](#what-it-is) 3. [HISTORY](#history) 4. [WHY](#why) 5. [CONCLUSION](#conclusion) ## INTRODUCTION I learned a lot about groff in 2023, and used it for a lot of personal projects and documents. I am writing this to…
Most of us have a friend of a friend who it's happened to. And this time it happened to me. I have a small static website that I haven't looked at in a couple of months. It's a trivial site. A blog type thing full of recipes and reviews. This week I went to go make a small update to it, and found I wasn't able to build it. I did it to myself, really. I knew this might happen eventually. I even…
This is the fourth entry in the *Let's Read SICP* series. « [previous](34.html) | [index](31.html) --- ## 2. Building Abstractions with Data Okay we just wrapped up creating abstractions with procedures, now it's time to talk about data! I can't say too much about the chapter intro. It mostly just described things that we're going to learn that which, not having learned them yet, did not mean too…
This is the third entry in the *Let's Read SICP* series. « [previous](33.html) | [index](31.html) | [next](34.html) » --- ## Contents * [Preface](#preface) * [1.3.1 Procedures as Arguments](#procedures-as-arguments) * [1.3.2 Constructing Procedures Using Lambda](#constructing-procedures-using-lambda) * [1.3.3 Procedures as General Methods](#procedures-as-general-methods) * [1.3.4 Procedures as…
This is the second entry in the *Let's Read SICP* series. « [previous](32.html) | [index](31.html) | [next](34.html) » --- ## Contents - [1 Building Abstractions With Procedures](#building-abstractions-with-procedures) - [1.1 The Elements of Programming](#the-elements-of-programming) - [1.2 Procedures and the Processes They Generate](#procedures-and-the-processes-they-generate) - [1.2.2 Tree…
This is the first entry in the *Let's Read SICP* series. [index](31.html) | [next](33.html) » --- I've always wanted to read *Structure and Interpretation of Computer Programs*. It's kind of a magical looking book, with the wizard on the front pondering his orb, and the flash of lambda frightening the student next to the table with the dragon's foot. It has a reputation as one of the best…
This is the index page for a *Let's Read* series in which I'll be taking notes on and discussing the classic *Structure and Interpretation of Computer Programs*. All posts in this series: - [Introduction](32.html) - [Chapter 1 Part 1](33.html) - [Chapter 1 Part 2](34.html) - [Chapter 2 Part 1](35.html)
I am composing the draft of this blog post on a Freewrite Traveler[^1], which is kind of a small e-ink typewriter the size of a large pocketbook made by Astrohaus. [^1]: And now due to the magic of time travel, I am now as expected revising and editing this post back at my computer in the comfort of my trusty, tried and true vim setup. (The limitations of the Traveler as an *editing* device will…
## Contents 0. [Introduction](#introduction) 0. [Nonfiction](#nonfiction) 0. [Graphic Novel](#graphic-novel) 0. [Fiction](#fiction) 0. [Experimental](#experimental) 0. [Cutting Room Floor](#cutting-room-floor) 0. [Resources](#resources) ## Introduction Every year I do a retrospective on the books I read: - [2020](21.html) - [2019](2.html) This year I read 23 books, which is a very low number for…
I once worked at an agency that would embed its engineers in offsite client teams for staff augmentation. The big idea was to send in our high-quality, talented engineers to improve their velocity, processes, and culture. I also knew a chef who once put a cucumber into a jar of pickling juices thinking that the pickling juices would somehow become more cucumbery, and then acted surprised that the…