Skip to content

Instantly share code, notes, and snippets.

Hi, friends

Paul Smith paulsmith

Hi, friends
View GitHub Profile
paulsmith /
Created Dec 21, 2021
When to use generics in Go

When to use generics

aka generic guidelines

It's late 2021, and Go is about to add "generics" (i.e., type parameters for types and functions) to upcoming release version 1.18.

Here is some guidance for Go programmers, cribbed from a talk by Ian Lance Taylor.

First, write Go programs by writing code, not by defining types.

paulsmith / mybar.txt
Created Jun 22, 2021
Created from Remix Form!
View mybar.txt
The quick brown fox jumps over the lazy dog.
View output.console
paul@pumpkin:/tmp/SQLite-cf538e27$ python3.7 -c 'import sqlite3; print(sqlite3.connect(":memory").execute("select sqlite_version()").fetchone())'
paul@pumpkin:/tmp/SQLite-cf538e27$ ldd /usr/lib/python3.7/lib-dynload/ (0x00007ffff752e000) => /usr/lib/x86_64-linux-gnu/ (0x00007f89e005b000) => /lib/x86_64-linux-gnu/ (0x00007f89e003a000) => /lib/x86_64-linux-gnu/ (0x00007f89dfe79000) => /lib/x86_64-linux-gnu/ (0x00007f89dfcf6000) => /lib/x86_64-linux-gnu/ (0x00007f89dfcf1000)
/lib64/ (0x00007f89e01da000)
View utf8decode.c
/* decodes next unicode code point in utf-8-encoded buffer. returns number of bytes
read so stream can be advanced, -1 if invalid utf-8 sequence. */
size_t decode_next_utf8(const unsigned char *str, size_t len, int *cp)
*cp = 0;
if (*str <= 0x7f) {
*cp = (int)*str;
return 1;
} else if (((*str & 0xe0) == 0xc0) && len > 1) {
if ((*(str+1) & 0xc0) != 0x80) {
paulsmith /
Created Feb 9, 2018
Feelings about food (draft blog post)

My family attended a Quaker meeting in Frederick, Maryland when I was growing up, and many of its members were closely associated with a food co-op there. We would volunteer to run the register or stock shelves and do other admin jobs. I remember the strange smell of bulk food items like spices and grains mixing together. I remember the "weird" items that were like items you'd get in regular grocery stores, but were weird because instead of chocolate the candy bars were made with carob. I remember that the co-op was a strong component of the identity of the people who worked, volunteered, and shopped there, including the Quakers and my family.

paulsmith /
Created Feb 7, 2018
Halal cart-style chickpeas & rice recipe

Adapt this recipe to make it vegetarian and in a rice cooker:

  • Ignore the chicken part (unless you want to make chicken)
  • In a rice cooker (at least 6c), in this order add:
    • Sliced butter (or non-dairy fat)
    • Turmeric and cumin
    • We also add Aleppo pepper and urfa biber for extra seasoning
    • Broth and rice (we use brown), salt and pepper
    • I add a can of chick peas
  • Cook like you would rice (just turn it on)
paulsmith / day3part2.go
Created Dec 5, 2017
AOC 2017 day 3 part 2
View day3part2.go
package main
import (
type grid map[complex128]int
func (g grid) neighbors(pos complex128) int {
paulsmith /
Last active Sep 11, 2017
jazz for raph
  • The Necks - long, deeply improvisational "drone" jazz from Australia, start with "Hanging Gardens"
  • John Zorn & Masada - klezmer-influenced, razor-sharp virtuosic sax
  • Miles Davis - later electric period, "On the Corner", "Bitches Brew", also "In a Silent Way" one of my absolute faves
  • Ellington, Roach, Mingus - "Money Jungle", a one-off, so aging Duke could play around with a post-bop trio
  • Andrew Hill - Monk-esque pianist/composer, check out "Point of Departure"
  • John Coltrane - "My Favorite Things", "Giant Steps", and "A Love Supreme", all in the pantheon
  • Steve Reid - "Nova": hard to find but wicked
  • Bill Evans - sublime pianist, anything from him
  • Michael Naura Quartet - vibraphones, "Call": one of my absolute all-time favorite records
  • Don Cherry - trumpeter, "Brown Rice"
paulsmith / numeronym.el
Created Jul 12, 2017
numeronym minor mode
View numeronym.el
(defun pas-numeronym ()
"Replace last word with its numeronym. eg.: 'accessibility' with 'a11y'."
(let ((count 0) (the-word (current-word)))
(while (looking-at "[a-zA-Z']")
(setq count (1+ count))
(forward-char 1))
(if (>= count 4)