Compare commits

...
51 Commits
Author SHA1 Message Date
inherentlee 230e86bf7c Merge branch 'main' into stickers
continuous-integration/drone/push Build is passing
2026-10-21 15:23:12 -07:00
inherentlee 32b055f328 note re samples 2026-10-21 15:21:37 -07:00
inherentlee 438d1a67e2 stickerbros 2026-10-21 15:15:12 -07:00
inherentlee cd7f525bac plaid dishtowels
continuous-integration/drone/push Build is passing
2026-10-19 13:09:35 -07:00
inherentlee 6933f11630 stickerapp 2026-10-17 19:35:31 -07:00
inherentlee 62dab04ee9 more about sticky brand ew 2026-10-15 11:24:07 -07:00
inherentlee e60d191e09 sticker update 2026-10-14 13:45:54 -07:00
inherentlee efe79ff639 Merge branch 'main' into stickers 2026-10-14 10:39:12 -07:00
inherentlee 4be20cccb3 border radius for blockquotes
continuous-integration/drone/push Build is passing
2026-10-14 10:38:57 -07:00
inherentlee aba74f280e some tweaks to git post
continuous-integration/drone/push Build is passing
2026-10-14 08:48:25 -07:00
inherentlee 0125216d96 add more aout remote commands
continuous-integration/drone/push Build is passing
2026-10-14 08:43:19 -07:00
inherentlee 6ee81d8784 small updates to git post
continuous-integration/drone/push Build is passing
2026-10-14 08:28:24 -07:00
inherentlee 2bfe616195 update fedizinefest
continuous-integration/drone/push Build is failing
2026-10-13 08:31:32 -07:00
inherentlee f9d8123b9d add header ids
continuous-integration/drone/push Build is passing
2026-10-13 08:30:50 -07:00
inherentlee c7ef4c701a sticker updates 2026-10-13 07:45:30 -07:00
inherentlee d8f3ea3430 add stickerapp 2026-10-10 11:16:25 -07:00
inherentlee a9b96e567e add bend print co samples 2026-10-09 15:46:26 -07:00
inherentlee bc1a51a4d5 add district dharma testimonial
continuous-integration/drone/push Build is passing
2026-10-06 09:52:56 -07:00
inherentlee 16c3ef1e26 audit fix 2026-10-06 09:52:44 -07:00
inherentlee efe153191a another tiny mobile tweak
continuous-integration/drone/push Build is passing
2026-10-06 09:03:41 -07:00
inherentlee 8c2c2231ac some size tweaks for headers on mobile
continuous-integration/drone Build is passing
2026-10-05 13:38:48 -07:00
inherentlee 62b1e448ea Merge branch 'main' into stickers 2026-10-05 13:31:36 -07:00
inherentlee d53198e1aa add sticker junkie, sticker robot, and vinyl disorder
continuous-integration/drone/push Build is running
2026-10-05 13:29:44 -07:00
inherentlee c6ec6b8f48 make urls easier to read font
continuous-integration/drone/push Build is passing
2026-10-04 11:17:32 -07:00
inherentlee 75909355ba couple of notes about samples
continuous-integration/drone/push Build is passing
2026-10-02 17:28:05 -07:00
inherentlee d5660455bd add drone trigger that requires main branch
continuous-integration/drone/push Build is passing
2026-10-02 12:59:15 -07:00
inherentlee 7df4c1ff8e more about sticker bunnies
continuous-integration/drone/push Build is passing
2026-10-02 12:54:06 -07:00
inherentlee d6c2bb9aa9 wording
continuous-integration/drone/push Build is passing
2026-10-02 09:57:23 -07:00
inherentlee 604a6787f4 sticker bunnies
continuous-integration/drone/push Build is passing
2026-10-01 18:55:54 -07:00
inherentlee 980cd0b3a6 update with stickergiant info
continuous-integration/drone/push Build is passing
2026-10-01 13:05:34 -07:00
inherentlee 5be42a4ff3 vinyl disorder and a few details 2026-10-01 08:53:36 -07:00
inherentlee 25c8e56a76 more re sticker ninja
continuous-integration/drone/push Build is passing
2026-09-30 17:44:29 -07:00
inherentlee 8752eeb904 sticker ninja details
continuous-integration/drone/push Build is passing
2026-09-30 17:41:40 -07:00
inherentlee b1135beddb update squarespace more
continuous-integration/drone/push Build is passing
2026-09-30 16:52:53 -07:00
inherentlee 84160a0574 update squarespace
continuous-integration/drone/push Build is passing
2026-09-30 16:51:12 -07:00
inherentlee 557308f3f9 sticker post wip
continuous-integration/drone/push Build is failing
2026-09-29 14:20:22 -07:00
inherentlee 382419e6d6 add toc to fediverse post
continuous-integration/drone/push Build is passing
2026-09-29 14:19:35 -07:00
inherentlee 66df77c32c remove old shop links 2026-09-29 10:01:11 -07:00
inherentlee a3e0ba5037 fedi intro post
continuous-integration/drone/push Build is passing
2026-09-28 09:38:52 -07:00
inherentlee 51d836c71b add to wong foo
continuous-integration/drone/push Build is passing
2026-09-23 20:25:08 -07:00
inherentlee 67e70e68ab remove scroll-margin-top since navbar is no longer sticky
continuous-integration/drone/push Build is passing
2026-09-23 19:29:19 -07:00
inherentlee b31e683786 i honestly don't know why this was working without this but i'm adding it just in case
continuous-integration/drone/push Build is passing
2026-09-23 14:47:53 -07:00
inherentlee 1bb26176ba tweak some breakpoints
continuous-integration/drone/push Build is passing
2026-09-21 16:08:11 -07:00
inherentlee a000d1c1b9 i'm not happy with this but it's better for width
continuous-integration/drone/push Build is passing
2026-09-21 15:55:44 -07:00
inherentlee cf26b06e3d update tree styling to box method
continuous-integration/drone/push Build is passing
2026-09-21 15:40:27 -07:00
inherentlee 5acda53f58 publish leatherworking zine with link to fzf post
continuous-integration/drone/push Build is passing
2026-09-21 13:55:29 -07:00
inherentlee f2bc045735 fedizinefest post
continuous-integration/drone/push Build is passing
2026-09-21 13:49:51 -07:00
inherentlee 3b1c5ffa88 SR fix
continuous-integration/drone/push Build is passing
2026-09-21 12:48:45 -07:00
inherentlee 0882fcda41 better images
continuous-integration/drone/push Build is passing
2026-09-21 12:46:38 -07:00
inherentlee 7d042abe1d fuck spacing and tabs all my homies hate spacing and tabs
continuous-integration/drone/push Build is passing
2026-09-21 12:27:30 -07:00
inherentlee f5bbda1f14 small edits
continuous-integration/drone/push Build is passing
2026-09-21 12:23:53 -07:00
43 changed files with 547 additions and 385 deletions

No files matched your search

+3
View File
@@ -1,6 +1,9 @@
kind: pipeline
type: docker
name: default
trigger:
branch:
- main
steps:
- name: build
+7 -9
View File
@@ -85,10 +85,9 @@ main {
width: 60vw;
max-width: 1000px;
margin: 0 auto;
scroll-margin-top: 7rem;
}
@media (max-width: 1050px) {
@media (max-width: 1100px) {
main {
width: 75vw;
}
@@ -114,10 +113,6 @@ h1 {
text-align: center;
}
h2, h3, h4, h5, h6 {
scroll-margin-top: 5rem;
}
h2 {
margin-top: 2rem;
font-size: 2.35rem;
@@ -129,8 +124,11 @@ h3 {
}
@media (max-width: 650px) {
h1 { font-size: 2.95rem; }
h2 { font-size: 1.9rem; }
h1 {
margin-top: 1.5rem;
font-size: 2.25rem;
}
h2 { font-size: 1.8rem; }
h3 { font-size: 1.4rem; }
}
@@ -242,7 +240,7 @@ dd {
blockquote {
margin: .5rem 0;
padding: 0 1rem;
border-radius: .25rem 1rem 1rem .25rem;
border-radius: .5rem;
line-height: 1.25;
border-left: .5rem solid var(--color-pink);
}
+31 -27
View File
@@ -1,17 +1,17 @@
#toc {
float: right;
margin: 1rem 0 1.5rem 1.5rem;
/* 23rem is the width of the words 'table of contents' in my header font */
/* yes, it's a bit hacky */
width: min(calc(100% - 1.5rem), 23rem);
width: fit-content;
max-width: 55%;
}
@media (max-width: 850px) {
@media (max-width: 900px) {
#toc {
float: unset;
margin-top: 2rem;
margin-left: .5rem;
width: calc(100% - .5rem);
max-width: unset;
}
}
@@ -30,6 +30,7 @@
background: var(--color-bg);
border-radius: .5rem;
cursor: pointer;
padding-inline-end: .25rem;
}
#toc summary:focus-visible {
@@ -51,40 +52,43 @@
top: -1.25rem;
}
/* my baby my child my `tree` list style */
#toc ol,
#toc li {
margin-block: 0;
list-style: none;
/* `tree` style toc */
#toc nav > ol {
margin-inline: 1rem;
}
#toc ol {
margin-left: 0;
margin: 0;
}
#toc li {
border-left: .095rem solid var(--color-pink);
margin-left: 1.5rem;
line-height: 1.15;
text-indent: 1.22rem hanging;
position: relative;
padding-inline-start: 1em;
list-style: none;
margin-block: 0;
margin-left: .35rem;
}
#toc li::before,
#toc li::after {
display: block;
position: absolute;
box-sizing: border-box;
inset-block: 0 auto;
inset-inline: 0 auto;
inline-size: .75em;
border-inline-start: .1rem solid var(--color-pink);
}
#toc li::before {
content: '├─';
color: var(--color-pink);
position: relative;
left: -.34rem;
block-size: .5lh;
border-block-end: .1rem solid var(--color-pink);
content: "";
}
#toc li:last-child {
border-left-color: transparent;
}
#toc li:last-child::before {
/* Technically, we could use this content for all of them, but doing the full
bar for the non-last-childs keeps the border a *smidge* more consistent for
different levels of magnification */
content: '└─';
#toc li:not(:last-child)::after {
block-size: 100%;
content: "";
}
/* underlines are unnecessary in this context */
+1
View File
@@ -34,6 +34,7 @@
.job-details a {
font-size: 1rem;
font-family: var(--font-family);
}
.job p {
+4
View File
@@ -1,3 +1,4 @@
import { HtmlBasePlugin } from "@11ty/eleventy";
import { eleventyImageTransformPlugin } from "@11ty/eleventy-img";
import eleventyNavigationPlugin from "@11ty/eleventy-navigation";
import { feedPlugin } from "@11ty/eleventy-plugin-rss";
@@ -107,6 +108,9 @@ export default async function(eleventyConfig) {
}
});
/* HTML base */
eleventyConfig.addPlugin(HtmlBasePlugin);
/* Images */
eleventyConfig.addPlugin(eleventyImageTransformPlugin, {
// output image formats
+36 -95
View File
@@ -50,45 +50,45 @@
}
},
"node_modules/@11ty/eleventy": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-3.1.2.tgz",
"integrity": "sha512-IcsDlbXnBf8cHzbM1YBv3JcTyLB35EK88QexmVyFdVJVgUU6bh9g687rpxryJirHzo06PuwnYaEEdVZQfIgRGg==",
"version": "3.1.6",
"resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-3.1.6.tgz",
"integrity": "sha512-ZlSiR1PLdS2lv7TelBgWAhcvMiLNZkPBlLEb+lh7kGYZ+Mk0bo9qcYgVsewvw9W7Em0RH3wd01h5fAstNDh0zA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@11ty/dependency-tree": "^4.0.0",
"@11ty/dependency-tree-esm": "^2.0.0",
"@11ty/dependency-tree": "^4.0.2",
"@11ty/dependency-tree-esm": "^2.0.4",
"@11ty/eleventy-dev-server": "^2.0.8",
"@11ty/eleventy-plugin-bundle": "^3.0.6",
"@11ty/eleventy-plugin-bundle": "^3.0.7",
"@11ty/eleventy-utils": "^2.0.7",
"@11ty/lodash-custom": "^4.17.21",
"@11ty/posthtml-urls": "^1.0.1",
"@11ty/recursive-copy": "^4.0.2",
"@11ty/posthtml-urls": "^1.0.3",
"@11ty/recursive-copy": "^4.0.4",
"@sindresorhus/slugify": "^2.2.1",
"bcp-47-normalize": "^2.3.0",
"chokidar": "^3.6.0",
"debug": "^4.4.1",
"debug": "^4.4.3",
"dependency-graph": "^1.0.0",
"entities": "^6.0.1",
"filesize": "^10.1.6",
"gray-matter": "^4.0.3",
"iso-639-1": "^3.1.5",
"js-yaml": "^4.1.0",
"js-yaml": "^4.1.1",
"kleur": "^4.1.5",
"liquidjs": "^10.21.1",
"luxon": "^3.6.1",
"markdown-it": "^14.1.0",
"liquidjs": "^10.27.0",
"luxon": "^3.7.2",
"markdown-it": "^14.2.0",
"minimist": "^1.2.8",
"moo": "^0.5.2",
"moo": "0.5.2",
"node-retrieve-globals": "^6.0.1",
"nunjucks": "^3.2.4",
"picomatch": "^4.0.2",
"picomatch": "^4.0.4",
"please-upgrade-node": "^3.2.0",
"posthtml": "^0.16.6",
"posthtml": "^0.16.7",
"posthtml-match-helper": "^2.0.3",
"semver": "^7.7.2",
"slugify": "^1.6.6",
"tinyglobby": "^0.2.14"
"semver": "^7.8.1",
"slugify": "^1.6.9",
"tinyglobby": "^0.2.16"
},
"bin": {
"eleventy": "cmd.cjs"
@@ -270,9 +270,9 @@
}
},
"node_modules/@11ty/posthtml-urls": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@11ty/posthtml-urls/-/posthtml-urls-1.0.2.tgz",
"integrity": "sha512-0vaV3Wt0surZ+oS1VdKKe0axeeupuM+l7W/Z866WFQwF+dGg2Tc/nmhk/5l74/Y55P8KyImnLN9CdygNw2huHg==",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@11ty/posthtml-urls/-/posthtml-urls-1.0.3.tgz",
"integrity": "sha512-1YvhnkaNlFnnJic1rBMWmTC2adbuy+JQiBfl1Hecr1Wjjik1pQZmGyk/eC9zKX/FQv52s2Nht1Gi/UwhYqrBeg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -286,15 +286,15 @@
}
},
"node_modules/@11ty/recursive-copy": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/@11ty/recursive-copy/-/recursive-copy-4.0.3.tgz",
"integrity": "sha512-SX48BTLEGX8T/OsKWORsHAAeiDsbFl79Oa/0Wg/mv/d27b7trCVZs7fMHvpSgDvZz/fZqx5rDk8+nx5oyT7xBw==",
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/@11ty/recursive-copy/-/recursive-copy-4.0.4.tgz",
"integrity": "sha512-oI7m8pa7/IAU/3lqRU9vjBbs20iKFo7x+1K9kT3aVira6scc1X9MjBdgLCHzLJeJ7iB6wydioA+kr9/qPnvmlQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"errno": "^1.0.0",
"junk": "^3.1.0",
"maximatch": "^0.1.0",
"minimatch": "^3.1.5",
"slash": "^3.0.0"
},
"engines": {
@@ -999,49 +999,6 @@
"dev": true,
"license": "Python-2.0"
},
"node_modules/array-differ": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
"integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
"integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
"dev": true,
"license": "MIT",
"dependencies": {
"array-uniq": "^1.0.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/array-uniq": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
"integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
"integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -2356,22 +2313,6 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/maximatch": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz",
"integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==",
"dev": true,
"license": "MIT",
"dependencies": {
"array-differ": "^1.0.0",
"array-union": "^1.0.1",
"arrify": "^1.0.0",
"minimatch": "^3.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/mdurl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
@@ -2860,9 +2801,9 @@
}
},
"node_modules/semver": {
"version": "7.7.4",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"version": "7.8.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
"integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -2974,9 +2915,9 @@
}
},
"node_modules/slugify": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
"integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
"version": "1.6.9",
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz",
"integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3024,14 +2965,14 @@
}
},
"node_modules/tinyglobby": {
"version": "0.2.15",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"version": "0.2.17",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
"integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
"dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.5.0",
"picomatch": "^4.0.3"
"picomatch": "^4.0.4"
},
"engines": {
"node": ">=12.0.0"
Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

+23 -12
View File
@@ -47,7 +47,7 @@ layout: base.njk
<div class="job">
<div class="two-col job-details">
<h3>Freelance Web Developer</h3>
<h3 id="freelance-web-developer">Freelance Web Developer</h3>
<p class="col2"><time datetime="2026-01">January 2026</time> – Present</p>
</div>
@@ -64,6 +64,17 @@ layout: base.njk
a clean and minimalist homepage for the District Dharma collective,
built in Eleventy with a Mattrbld content management system to allow
for easy editing by the client.
<blockquote class="testimonial">
Being of a generation that didn't grow up with technology, I was a little
nervous going into this project, but Lee made it easy. He was patient and
completely non-judgmental with my simple questions, quick to respond by
email, and open to my feedback throughout. He built exactly what I
envisioned for our meditation group's website, and his estimate was the
final cost. When he asked what he could improve, I honestly couldn't come
up with anything. He delivered what he promised and was easy to reach the
whole way through. If you want someone skilled who will also make the
process feel comfortable, I can't recommend him highly enough.
</blockquote>
</li>
<li>
<strong>My Liberation Work Has Been Damn Ableist: A Landworker Memoir
@@ -147,7 +158,7 @@ layout: base.njk
datetime="2025-07">July 2025</time></p>
</div>
<h3>Software Development Engineer I & II</h3>
<h3 id="software-development-engineer-i-ii">Software Development Engineer I & II</h3>
<p>
Worked on green- and brown-field projects with customers, solving emerging
@@ -184,7 +195,7 @@ layout: base.njk
<p class="col2"><time datetime="2023-10">October 2023</time> – Present</p>
</div>
<h3>Co-owner and artist</h3>
<h3 id="co-owner-and-artist">Co-owner and artist</h3>
<p>
Maintains website, storefront, and inventory for a diverse set of artistic
@@ -210,7 +221,7 @@ layout: base.njk
datetime="2017-12">December 2017</time></p>
</div>
<h3>Undergraduate Programming Mentor</h3>
<h3 id="undergraduate-programming-mentor">Undergraduate Programming Mentor</h3>
<p>
Helped students debug and develop in Python and learn core programming
@@ -227,7 +238,7 @@ layout: base.njk
datetime="2017-08">August 2017</time></p>
</div>
<h3>Software Development Engineering Intern</h3>
<h3 id="software-development-engineering-intern">Software Development Engineering Intern</h3>
<p>
Developed a chatbot add-on for the Azure Android application.
</p>
@@ -239,7 +250,7 @@ layout: base.njk
<div class="job">
<div class="two-col job-details">
<h3>FediLearns (<a
<h3 id="fedilearns">FediLearns (<a
href="https://fedilearns.fyi" target="_blank">fedilearns.fyi</a>)</h3>
<p class="col2"><time datetime="2026-04">April 2026</time> – Present
</p>
@@ -254,7 +265,7 @@ layout: base.njk
<div class="job">
<div class="two-col job-details">
<h3>Siblinghood of the Traveling Greeting Card (<a
<h3 id="siblinghood-of-the-traveling-greeting-card">Siblinghood of the Traveling Greeting Card (<a
href="https://siblinghood.quest"
target="_blank">siblinghood.quest</a>)</h3>
<p class="col2"><time datetime="2025-11">November 2025</time> – Present
@@ -269,13 +280,13 @@ layout: base.njk
<div class="job">
<div class="two-col job-details">
<h3>FediZineFest (<a href="https://fedizinefest.fyi"
<h3 id="fedizinefest">FediZineFest (<a href="https://fedizinefest.fyi"
target="_blank">fedizinefest.fyi</a>)</h3>
<p class="col2"><time datetime="2023-12">December 2023</time> – Present</p>
</div>
<p>Creates and runs a global event for zine artists on the fediverse, now kicking
off its third year. Coordinates website, physical material shipping and
<p>Creates and runs a global event for zine artists on the fediverse, now in its
third year. Coordinates website, physical material shipping and
logistics, payment, and marketing for a 40–50 person project. Leads a small team
and delegates appropriate responsibilities.</p>
</div>
@@ -295,7 +306,7 @@ layout: base.njk
<div class="job">
<div class="two-col job-details">
<h3>Rescue Trans Rescue (<a href="https://rescue-trans-rescue.quest"
<h3 id="rescue-trans-rescue">Rescue Trans Rescue (<a href="https://rescue-trans-rescue.quest"
target="_blank">rescue-trans-rescue.quest</a>)</h3>
<p class="col2"><time datetime="2024">2024</time></p>
</div>
@@ -307,7 +318,7 @@ layout: base.njk
<hr>
<h2 class="centered upper">Education</h2>
<h2 class="centered upper" id="education">Education</h2>
<p class="centered">
<b>Bachelor of Science — Computer Science</b>
@@ -30,6 +30,10 @@ tags:
- [Ten Thousand](https://xkcd.com/1053/) by Randall Munroe
## Movies
- [To Wong Foo, Thanks for Everything! Julie Newmar](https://www.imdb.com/title/tt0114682/)
## Short fiction
- [Why Don't We Just Kill the Kid in the Omelas Hole](https://clarkesworldmagazine.com/kim_02_24/) by Isabel J. Kim
@@ -9,5 +9,3 @@ tags:
- gender
- patch
---
Limited number available for free in my [square shop](https://riverside-refuge.square.site/product/tooled-leather-pronoun-patch/91) with the code "FREEPATCH"
@@ -7,9 +7,3 @@ tags:
- gallery
- leather
---
Made a few variations of this; check out the shop for more details and options:
- [fixed o-ring bracelet](https://riverside-refuge.square.site/product/fixed-o-ring-bracelet/108)
- [swappable o-ring bracelet](https://riverside-refuge.square.site/product/swappable-o-ring-bracelet/102)
- [premade o-ring bracelets](https://riverside-refuge.square.site/product/premade-o-ring-bracelets/106)
@@ -7,5 +7,3 @@ tags:
- gallery
- print
---
currently offering these free [in the shop](https://riverside-refuge.square.site/product/tiny-personal-pet-portrait-stamp/111) with the code FREESTAMP
+13 -9
View File
@@ -11,6 +11,8 @@ tags:
alrighty, this one's a real doozy. Strap in.
and as always, if you find an error or have feedback, please [let me know](/contact).
## versioning
have you ever tried to revert to a previous version of a document in MS Office or Google Docs and found that your revision history is cluttered with small changes that by all rights should be grouped into one set of edits, but they aren't, and it's tedious to pick through all the versions?
@@ -30,7 +32,7 @@ this walkthrough is best suited for people who want to use `git` in single-perso
this walkthrough also focuses on the "happy path," without much discussion of troubleshooting. I may write more on the topic in the future, but we're already over *4,500 words*, so we're calling it a day.
finally, I wrote this walkthrough primarily with knowledge from using **WSL** [more on this later] on **Windows** and with **Zed** as my text editor. While I've tried to cover my bases with other OSes and options, there's a solid chance I'm missing things!
finally, I wrote this walkthrough primarily with knowledge from using **WSL** [more on this later] on **Windows** and with **Zed** as my text editor, and I've since lightly reviewed from **Linux Mint** with **Gram** as my text editor. While I've tried to cover my bases with other OSes and options, there's a solid chance I'm missing things!
that all said, let's get (git?) into it!
@@ -58,10 +60,10 @@ a CLI a way to interact with your computer and with software in text-only form.
if you want to use the `git` CLI, you'll need a terminal. You've got a couple options here:
- on Linux or Mac, you should have one built in! This is the easy path, congrats :) Even better, `git` generally ships with these systems, so there's no installation required. Search for an application called 'Terminal' or similar
- on Linux or Mac, you should have one built in! This is the easy path, congrats :) Even better, `git` generally ships with these systems (or is a one-liner install such as `apt install git`). Search for an application called 'Terminal' or similar
- note that I don't have a Mac and have never used one. I can't guarantee that everything operates the same over there - there may be discrepancies I don't know about
- on Windows, there's two options
- [`git` for Windows](https://gitforwindows.org/) packages a Linux-like terminal with a `git` GUI. This may be slightly friendlier for people who aren't at all familiar with Linux. If choosing `git` for Windows, [see my installation instructions below](#git-for-windows)
- [`git` for Windows](https://gitforwindows.org/) packages a Linux-like terminal with a `git` GUI. This is probably the friendlier option to get started with. If choosing `git` for Windows, [see my installation instructions below](#git-for-windows)
- I use [Windows Subsystem for Linux, or WSL](https://learn.microsoft.com/en-us/windows/wsl/install), which gives you a Linux distribution within Windows. It's pretty smooth sailing at this point, but there's some idiosyncracies to conquer - like the fact that your *Windows* files and your *Linux* files are stored in different places. If choosing WSL, [see my usage notes below](#wsl)
- both of the Windows options listed work with [Windows Terminal](https://apps.microsoft.com/detail/9n0dx20hk701) which offers a nicer-looking terminal experience than the basic command prompt. If you're going to keep working with what you set up today, I recommend it!
@@ -83,7 +85,7 @@ you can open `git` for Windows via the start menu by searching for 'git bash.' I
while *installing* WSL is a single command, here's a couple notes about getting started once *inside* WSL:
- don't be concerned that you can't see anything when you type or paste your password! Since it's sensitive information, this is intentional. You'll notice this pattern a couple of times while following this walkthrough
- `Ctrl+C` and `Ctrl+V` won't work like they do on Windows. If you want to copy/paste, right-click (there won't be a context menu, it'll just happen)
- `Ctrl+C` and `Ctrl+V` won't work like they do on Windows. If you want to copy/paste, use `Shift+Ctrl+C` and `Shift+Ctrl+V`
- if you're downloading a text editor like the ones mentioned above, you'll still follow the *Windows* instructions
you'll also need to be careful of a few things regarding text editors to make them work with WSL:
@@ -354,14 +356,16 @@ let's head on over to [Codeberg](https://codeberg.org/) First off, we'll make an
now we'll make a new project using the `+` in the upper right. Choose 'New repository,' then pick a repository name. You can leave the other settings be.
with the project created, Codeberg will tell us three things we can do: clone the repository, create a new repository, or push an existing repository. We'll push an existing one.
with the project created, Codeberg will tell us three things we can do: clone the repository, create a new repository, or push an existing repository. We'll push an existing one. Codeberg says we can do this:
```sh
git remote add origin https://codeberg.org/inherentlee/testing.git
git remote add origin https://codeberg.org/inherentlee/git-intro.git
git push -u origin main
```
first, we'll add a remote. Across from the project title, we should see a button that says `Code` with a dropdown indicator. It'll offer a few choices, the first two being SSH and HTTPS. I'll talk about SSH in a bit, but let's try HTTPS first. Copy that URL; we're about to use it in a command.
ok, let's break that down.
first, we'll add a remote. Across from the project title, we should see a button that says `Code` with a dropdown indicator. It'll offer a few choices, the first two being SSH and HTTPS. I'll talk about SSH in a bit, but let's try HTTPS first. Copy that URL; we're about to use it in a command. (You can also directly copy from the instructions we read above, but those won't be available after you've added code to the Codeberg project.)
> tip: the remote can be named whatever you want! Traditionally, it's called `origin`, but if it's easier for you to remember, you might call it `codeberg` or maybe `remote`
@@ -432,7 +436,7 @@ running `ssh-keygen` will take us through a series of prompts. Assuming we don't
when you choose a passphrase, *write it down*. If you lose it, there is no recourse. You will have to generate a new SSH key.
after generation, we will have two files at the location specified by the tool (or the custom location we chose). Generally, that's the folder `.ssh` in our home directory. If we navigate to that directory (`cd $HOME/.ssh`) and look at the files (`ls`), we'll see files named `id_rsa` and `id_rsa.pub`. The one that ends with `.pub` is the *public* key.
after generation, we will have two files at the location specified by the tool (or the custom location we chose). Generally, that's the folder `.ssh` in our home directory. If we navigate to that directory (`cd $HOME/.ssh`) and look at the files (`ls`), we'll see files named `id_rsa` and `id_rsa.pub` (or maybe `id_ed25519` and `id_ed25519.pub` or something else). The one that ends with `.pub` is the *public* key.
#### an alias...
@@ -488,7 +492,7 @@ in order for all this to be useful, we need to tell Codeberg about our SSH key.
### `git push`, take two
we can now call `git push` again and again now without having to repeat our credentials every time. We can also call `git pull` for our private repositories.
whether we're using HTTPS or SSH, we can now call `git push` again and again now without having to repeat our credentials every time. We can also call `git pull` for our private repositories.
## summary
@@ -138,11 +138,11 @@ I have written [further thoughts on Framer accessibility](/framer-accessibility)
|---|---|---|
| Semantic HTML | Template tested uses somewhat reasonable semantic HTML. Choice of what is considered a heading is a bit curious | 2 |
| Keyboard navigation | Template tested has custom tab focus styling. Cannot be further edited, but custom that fits the theme is pretty standout. Skip link included in at least some templates. | 3 |
| Reading order | Imperfect and can't be edited by user. Block-based layout is a little too freeform to ensure proper reading order, so the user should be careful where they add things. Early testing indicates that reading order is determined by the *first* place a block is placed, and is never re-assessed by the builder. | 1 |
| Text alternatives | Supported. | 3 |
| Reading order | Imperfect and can't be edited by user. Block-based layout is a little too freeform to ensure proper reading order, so the user should be careful where they add things. It's a little unclear where the reading order follows from, because it doesn't always map to the blocks. | 1 |
| Text alternatives | Supported, but not for everything - for example event pictures don't support alt text. | 2 |
| Color | Dark mode requires custom code or a plugin and seems *extremely* painful to accomplish. | 1 |
| Other | This isn't an accessibility consideration, but *christ* is Squarespace a pain to work with. | 1 |
| | | **11** |
| | | **10** |
## Startup
@@ -243,10 +243,10 @@ Overall, I explored 11 builders, couldn't test 1 due to OS restrictions, and hav
| Startup | 13 |
| Blocs** | 12 |
| Framer* | 12 |
| Squarespace* | 11 |
| Univer.se | 11 |
| Cowsites | 10 |
| Showit | 10 |
| Squarespace* | 10 |
| Wobble Web | 10 |
| Kiki | 9 |
| mmm.page | 9 |
@@ -8,10 +8,11 @@ tags:
- gallery
- zine
- leather
draft: true
---
This page contains textual representation of and supplementary material for my Leatherworking Tools zine (purchase link to be added in the future), including links to all tools and additional information as needed.
This page contains textual representation of and supplementary material for my Leatherworking Tools zine, including links to all tools and additional information as needed.
The Leatherworking Tools zine has been created for [FediZineFest 2026-2027](/fedizinefest-2026-2027) and will be part of the physical and digital bundles. For digital material, there will be a home-printable version and a version for reading on digital devices. If you want the delightfully illustrated zine itself, [buy a bundle now](https://ko-fi.com/inherentlee/shop/fedizinefest2026_2027).
## On tool links
@@ -0,0 +1,11 @@
---
title: fediZineFest 2026-2027
image:
src: 2026/fedizinefest.png
alt: the logo of FediZineFest 2026-2027 which is a 4 by 4 grid of blocky letters reading fedi zine fest 26-27, randomly colored with the 26-27 palette.
tags:
- reference
- zine
---
FediZineFest returns for for its third run in 2026-2027. View the [FediZineFest site](https://fedizinefest.fyi), or [buy zine bundles](https://ko-fi.com/inherentlee/shop/fedizinefest2026_2027).
-217
View File
@@ -1,217 +0,0 @@
---
title: tree-style table of contents
layout: post-with-toc.njk
image:
src: 2026/tree-styling-0.png
alt: "screenshot of the table of contents for a blog post (this blog post, in fact). it's been styled so that the output resembles the hierarchical file system output from the shell program 'tree.'"
tags:
- reference
- software
---
I have a shiny new Table of Contents (hereafter ToC) section for some of my posts (like this one)! And for fun and profit, it's styled like the output of [`tree`](https://en.wikipedia.org/wiki/Tree_(command)). I want to lay out the CSS I used for this. Fair warning, there's some hyper-specific border widths and positioning that *probably* should be a `calc()` function of some kind.
I drew inspiration from this [StackOverflow issue regarding tree styling for lists](https://stackoverflow.com/questions/14423671/best-method-for-displaying-a-tree-list-using-css-only-no-images-or-js-example).
## `tree`
Just for reference, here's some sample `tree` output:
```txt
.
├── footer.njk
├── head-content.njk
├── header.njk
├── layouts
│   ├── base.njk
│   ├── page-lists.njk
│   ├── page.njk
│   ├── post.njk
│   ├── post-with-toc.njk
│   └── tag-redirect.njk
├── pagination.njk
├── postlist.njk
└── webring.njk
```
(You'll note that there are gaps between the verticals of each line. That's due to the line-height on the page, but in a standard terminal those vertical lines would be contiguous.)
## HTML
Our ToC uses the following HTML structure:
```html
<aside id="toc">
<details>
<summary><h2>table of contents</h2></summary>
<nav>
<ol>
<li><a>h2 1</a></li>
<li><a>h2 2</a>
<ol>
<li><a>h3 2a</a></li>
<li><a>h3 2b</a></li>
</ol>
</li>
<li><a>h2 3</a></li>
<!-- etc -->
</ol>
</nav>
</details>
</aside>
```
We can ignore the `<aside>`, `<details>`, and `<nav>` components - we're going to focus on the `<ol>`s and `<li>`s.
## CSS
Despite referencing a StackOverflow issue above, I never like to just copy-paste a chunk of StackOverflow code into place. I don't like extraneous CSS, and sometimes there's stuff mixed in there that just isn't necessary. Let's build from the ground up.
### remove styling that will be in the way
By default, my lists have a lot of space around them for legibility when reading longer list items. We'll be accomplishing the vertical bars with borders here, so it's critical we not have any block-oriented spacing on `<ol>`s and `<li>`s. We're also going to take the numeric `list-style` off.
```css
#toc ol,
#toc li {
margin-block: 0;
list-style: none;
}
```
### start the structure with borders
The `tree`-like structure will be accomplished with both symbols (stolen directly from the tree output) and borders. Let's throw some borders on.
```css
#toc li {
border-left: .095rem solid var(--color-pink);
}
```
![Phase 1. There are thin pink vertical left-side borders for the list item elements, create long contiguous vertical lines. They are directly next to the list items with no spacing.](/img/2026/tree-styling-1.png)
Those are super off. First, they're tabbed too far in to the left; second, there's *no* space between the border and the list item. We're going to fix the first thing by removing left margins on the `<ol>`s. The second is where we pull in the most critical piece of infrastructure.
```css
#toc ol {
margin-left: 0;
}
```
### `li::before`
We're going to use a character from the `tree` output and place it before our list items.
```css
#toc li::before {
content: '├─';
color: var(--color-pink);
}
```
Notably, without additional positioning, the bars will be spaced away from the border. We want them to overlap perfectly.
![Phase 2, shown with the new characters before any positioning adjustment. There are tree line leaders before each list item, but they are a few pixels off from overlapping with the border.](/img/2026/tree-styling-2.png)
```css
#toc li::before {
position: relative;
left: -.34rem; /* I fiddled a lot and this is where I landed */
}
```
![Phase 3. The tree line leaders now perfectly overlap the border and it looks like a contiguous vertical line with small tabs inwards.](/img/2026/tree-styling-3.png)
### adjust left margins
Right now, the vertical lines don't nest nicely underneath the level above. Let's change our margins. I also adjusted the line height very slightly, because I noticed on some levels of magnification that the tree line leader characters weren't actually meeting.
```css
#toc li {
margin-left: 1.5rem;
line-height: 1.15;
}
```
![Phase 4. The vertical border comes down directly below the first character of the parent level.](/img/2026/tree-styling-4.png)
### fix those pesky last children
You've probably noticed that the last children in the tree output had a bend rather than the T-shape we've been using. We'll want to remove the border from the last children and change the character we're using.
```css
#toc li:last-child {
border-left-color: transparent;
}
#toc li:last-child::before {
/* Technically, we could use this content for all of them, but doing the full
bar for the non-last-childs keeps the border a *smidge* more consistent for
different levels of magnification */
content: '└─';
}
```
With that, it starts to look complete!
![Phase 5, almost done. The last children no longer have a border that continues onward as though there will be more children.](/img/2026/tree-styling-5.png)
### but what about really, really, really, really, REALLY long headers?
What about line wrapping? It looks pretty bad right now.
![Table of contents now shown with the above header. When the line wraps, instead of lining up with the beginning of the first character on the previous line, it nests under the tree line leader and right in line with the vertical border.](/img/2026/tree-styling-6.png)
(And for the record, this happens for middle children too, it's not just a last child issue.)
We can fix this with a hanging indent.
```css
#toc li {
text-indent: 1.22rem hanging; /* Again, I fiddled */
}
```
![Final version with the hanging indent implemented. Now the second line of text for this header lines up nicely with the start of the text above it.](/img/2026/tree-styling-7.png)
## summary
Here's the final collected CSS:
```css
#toc ol,
#toc li {
margin-block: 0;
list-style: none;
}
#toc ol {
margin-left: 0;
}
#toc li {
border-left: .095rem solid var(--color-pink);
margin-left: 1.5rem;
line-height: 1.15;
text-indent: 1.22rem hanging;
}
#toc li::before {
content: '├─';
color: var(--color-pink);
position: relative;
left: -.34rem;
}
#toc li:last-child {
border-left-color: transparent;
}
#toc li:last-child::before {
/* Technically, we could use this content for all of them, but doing the full
bar for the non-last-childs keeps the border a *smidge* more consistent for
different levels of magnification */
content: '└─';
}
```
+55
View File
@@ -0,0 +1,55 @@
---
title: intro to the fediverse
layout: post-with-toc.njk
image:
src: 2026/madrone-bark.jpg
alt: "Image unrelated to post. A close up shot of the curling, shedding bark of the madrone tree. The shedding bark is a beautiful rusty brown, and the tree underneath light green."
tags:
- reference
---
this is a casual introduction to the fediverse (mastodon et al.) I wrote for a friend. I have shared it a few times, so I'm putting it here for ease of reference.
## general
the general style of fedi is microblogging (and sometimes more macroblogging). There's posts (image/video/audio and polls supported) and hashtags. Depending on your server, your post character limit will vary - some servers allow posts as long as you would ever want, but servers that haven't customized their post limit will be at 500 if I recall correctly. My favorite features of fedi are a) it is not corporate-run and b) there are **no ads!**
usernames are @user@server. Your server determines things like your post limit, what your UI looks like, who your mods are, and what rules you have to follow. Most of the UIs are pretty similar, so don't worry about that - just know that if you hop servers the interface may be a new color or have a few small changes. (You can also on mobile use an app - I don't recommend the "main" mastodon app. I use tusky on android and like it. Idk about apple, maybe ask for recs.)
## servers
all servers can, in theory, talk to each other. It's like email, using gmail doesn't mean you can only communicate with other gmail users. **However,** in practice, some servers have "defederated" from others, or have limitations in place that mean you'll review notifications from people on that server before accepting them. "Defederation" basically just means blocking - when two servers are connected, we say they are "federated" - this is where the "fed" part of "fediverse" comes from. (Mastodon, on the other hand, is just one of many apps that make up the fediverse.)
by and large, all (good) servers have defederated from the really trashy ones that host bigoted shit. But there's some borderline cases. For example, the "main" mastodon server run by the people who develop mastodon - mastodon.social - is huge and has signups totally open to anyone with no review. That means it is very vulnerable to waves of spam or rather unfriendly content. Because of this, some very solid servers consider limiting or blocking mastodon.social (or already have) despite its relevance as a huge presence in the fediverse.
because of the size, I would **never** recommend signing up with mastodon.social. Your moderation experience is likely to be **terrible**. Being on a smaller server allows you to have a more personal relationship with your mods!
speaking of your mods, they are usually moderating and paying for the server at no cost to the users, and it's good practice to chuck them some change every once and a while.
## moving between servers
you can migrate between servers, and your old account will point visitors over to your new account - but be aware that **your posts don't migrate with you**. This is very annoying for many people. The posts won't go away (they're still attached to the old account), but you won't be able to continue to edit them or see notifications for them. If you're really attached to a particular post, I recommend re-making it on the new account.
## other benefits and community norms
you can edit posts! You can pin posts to your profile! And if you're invested in digital privacy, you can set a deletion timeline for your posts (with granular settings like "posts with at least this many likes/boosts don't get deleted" and similar rules). You can also set your account up so you have to manually approve people before they can follow you (because of this, it's a good idea to fill in some basic profile info before following people - a lot of people who manually approve followers will deny requests from empty profiles).
image/video/audio content supports alt text and I highly recommend writing it, as many users won't boost posts that lack alt text. Depending on what software your server is running, you may or may not be able to set alt text for your profile/header photos - this is a newer feature that not all servers have yet, so I would recommend adding alt text for those pictures somewhere in your profile even if you are able to set it.
posts also include a content warning or subject field, and it's generally good practice to use it for sensitive topics - some people also just use it more like an actual subject field. Some common abbreviations for CWs are "mh/ph" - mental health/physical health - and "pol" - politics. Idk why people abbreviate their CWs when the character limits are often so big.
## choosing a server
choosing a server can be daunting. It's helpful to look at things like the rules and the size of the moderation team compared to the size of the userbase. The server name can be part of your choice! That's a tiny but fun benefit of unique servers. For example, I am at [flipping.rocks](https://flipping.rocks) and we love the outdoors, critters, etc. It's not as crafty of a server, but my photography and general love of nature fits in really well (and often you don't need to "fit" a server really - it's just nice to have a theme).
I generally recommend that people use their first 3-6 months looking at other servers and listening to the folks around them about whether they like their server. You may feel right at home in your starting server, or you may find something you like better, in which case you can learn how to migrate (happy to help).
## getting started
your feed will be oh so empty! There is no "algorithm" in the sense that we think of one in other corporate-run social medias. What you see is the posts/boosts of people you follow, as well as hashtags you follow, in reverse chronological order.
I recommend a few things to get started:
- make a post with the hashtag #introduction as well as #hashtags of your interests, and say hi! That lets people meet you and introduce themselves
- check out the "local" feed for your server and see who is around on there to follow
- use tools like [communitywiki.org/trunk](https://communitywiki.org/trunk) or [fedi.directory/](https://fedi.directory/) to find people based on topic
@@ -0,0 +1,339 @@
---
title: sticker vendors
layout: post-with-toc.njk
image:
src: 2026/fern-curl.jpg
alt: Image unrelated to post. The tip of a fern curling in such a way as to make a complete circle with fronds spreading outwards.
tags:
- reference
- sticker
---
I made a spreadsheet of sticker vendors so you don't have to. And also ordered a bunch of sample packs, so you don't have to (and because I get very very into doing my research, and sample packs are very cheap).
I priced out **3"x3" holographic die-cut vinyl stickers** from US-based sticker vendors at three price points: 100 (or nearest above 100), 200 (or nearest above 200), and 500. Free shipping referenced *may* require a minimum to kick in - I noted it down as free if the minimum was below the price point for 100 stickers.
I did this work because my previous vendor, DieCutStickers, had notable print issues in the last batch I bought from them, and I decided to look for a new vendor. Because of this, they will not be listed.
Got a recommendation not in this writeup? Feel free to [let me know](/contact) and I'll price them out and add them.
All sample packs ordered have been summarized and photographed with the exception of Sticker Bunnies, which has not arrived yet.
I think I have to make a weird art piece now with all these samples.
## Exclusions
Three other vendors are mentioned but will not appear in summaries: Sticker Guy, Sticker Mule, and Sticky Brand.
- Sticker Guy looks **awesome** for simple stickers (1 or maybe 2 colors printed on solid color vinyl), but holographic stickers are listed as temporarily unavailable, so I couldn't get a price quote.
- Sticker Mule's CEO is a vocal Trump supporter.
- Sticky Brand has started using generative AI marketing (this is secondhand information as I don't use instagram). Also I had a [pretty bad customer service experience](#sticky-brand).
I cannot promise that other makers do not have issues similar to Sticker Mule or Sticky Brand; this is just what I surfaced in my research.
## Summaries
### Overall summary
### Quality summary
Sticker Ninja - wow! Thick, sturdy vinyl that feels amazing. Plus loads of pretty finishes - I'm really noodling on what I could do on "Prism Party." They're not *the* cheapest, but for sets of 100 they're not awful, so they're probably my vendor of choice unless I'm buying more bulk (and 100 is my most common amount). I've ordered some new holo [hummingbirds](/hummingbird-become-ungovernable) from them as well as a design new to stickers, [big pidge](/big-pidges).
Also, they sent me a "queer joy is a revolution" sticker in the sample pack - that one actually went on my laptop. Also also, they seem like they have a great approach to work - they close their ordering on Sundays so they don't come in absolutely slammed on Mondays. I respect that a lot.
I was also impressed with StickerApp's variety of materials and product types, and their pricing is very competitive. If you want to save a little, they seem solid. Also, I just got the [FediZineFest](/fedizinefest-2026-2027) stickers through them, and they are *fast*.
### Pricing summary
Death by Stickers stands out as *by far* the cheapest option for ~100 or maybe less, and still fairly competitive for ~200, though bumped out of the top slot by StickerGiant (however, worth noting that I couldn't get Death by Stickers samples). If you want bulk, Brick City Printing comes out ahead - and they are union!
If you want really small lots, maybe try Sticker Bunnies - their pricing model is a flat per-sticker rate regardless of order size. Be aware, however, that they only take orders via email, so it may be a bit more of an involved process than most.
It is of course worth it with many vendors to join their email list and wait for deals. These are the standard prices and do not account for sales or discounts.
### Ease of peeling
Brick City Printing, StandOut Stickers, Sticker Junkie, StickerApp, and StickerGiant offer split backs.
Bend Print Co. offers split backs or peel tabs for an increased sticker price. Sticker Robot mentions split backs in their FAQ, but sticker options only support peel tabs, also for an increased price. Vinyl Disorder offers peel tabs for an increased price.
Sticker Ninja and StickerBros do not offer split backs.
Busy Beaver, Death by Stickers, and Sticker Bunnies do not specify.
## Pricing tables
### Price point 1: 100
Per 100 (unless noted otherwise).
| Vendor | Per sticker | Quantity |
| --- | --- | --- |
| Death by Stickers | $0.81 | |
| Sticker Bunnies | $0.90 | |
| StickerApp | $0.98 | |
| Brick City Printing | $1.05 | |
| Sticker Ninja | $1.06 | |
| Busy Beaver | $1.07 | |
| StandOut Stickers | $1.09 | |
| StickerGiant | $1.10 | 125 |
| StickerBros | $1.18 | |
| Sticker Robot | $1.27 | |
| Bend Print Co. | $1.45 | |
| Vinyl Disorder | $1.61 | |
| Sticker Junkie | n/a | No quantity ~100 offered |
### Price point 2: 200
Per 200 (unless noted otherwise).
| Vendor | Per sticker | Quantity |
| --- | --- | --- |
| StickerGiant | $0.73 | 250 |
| StickerApp | $0.77 | |
| Death by Stickers | $0.80 | |
| StandOut Stickers | $0.80 | |
| StickerBros | $0.84 | |
| Sticker Robot | $0.85 | 250 |
| Bend Print Co. | $0.88 | 250 |
| Sticker Bunnies | $0.90 | |
| Brick City Printing | $0.93 | |
| Vinyl Disorder | $0.94 | 250 |
| Sticker Ninja | $0.97 | |
| Sticker Junkie | $1.07 | |
| Busy Beaver | n/a | No quantity between 100 and 500 offered |
### Price point 3: 500
| Vendor | Per sticker |
| --- | --- |
| Brick City Printing | $0.49 |
| StickerGiant | $0.54 |
| StandOut Stickers | $0.55 |
| StickerApp | $0.56 |
| Sticker Ninja | $0.59 |
| StickerBros | $0.60 |
| Busy Beaver | $0.63 |
| Bend Print Co. | $0.65 |
| Sticker Robot | $0.65 |
| Sticker Junkie | $0.72 |
| Death by Stickers | $0.72 |
| Vinyl Disorder | $0.81 |
| Sticker Bunnies | $0.90 |
## Vendors
### Bend Print Co.
[Bend Print Co.](https://www.bendprintco.com/)
- 100 for $145.00 - $1.45/sticker
- 250 for $220.00 - $0.88/sticker
- 500 for $325.00 - $0.65/sticker
- Free shipping
- Split backs (or peel tabs) for additional cost
These are pretty thin. I'm really not sure if vinyl thickness correlates to quality, tbh, but they don't feel particularly sturdy. Still, I like the variety of fun vinyls.
(Sorry about the weird crop, I realized after I took this picture that I wanted a landscape picture not a portrait one. By then I had already peeled and stuck one of them.)
![8 sample stickers with the same Bend Print Co logo design on 8 different vinyls including glitter, chrome, 'galactic', and silver and gold holo. Each also has a small color test](/img/2026/stickers/bend-print-co.jpg)
### Brick City Printing
[Brick City Printing](https://www.brickcityprinting.com/)
Union made!
- 100 for $105.00 - $1.05/sticker
- 200 for $186.00 - $$0.93/sticker
- 500 for $245.00 - $0.49/sticker
- Free shipping
- Split backs
They don't have a ton of options - seems like just white or holo vinyl - but their quality is good! The stickers feel decently sturdy.
![Some sample stickers in both standard vinyl and holo, including 'stickers the cat,' some pride flag hearts overlaid with St. Louis flag iconography, and a riff on the Black Flag logo done with bricks.](/img/2026/stickers/brick-city-printing.jpg)
### Busy Beaver
[Busy Beaver](https://www.busybeaver.net/)
- 100 for $107.00 - $1.07/sticker
- No quantity between 100 and 500 offered
- 500 for $315.00 - $0.63/sticker
- Free shipping
- Couldn't find information regarding split backs
Apparently you have to call Busy Beaver... on the phone... to get samples. Nah. Not worth.
### Death by Stickers
[Death by Stickers](https://deathbystickers.com/)
- 100 for $81.00 - $0.81/sticker
- 200 for $160.00 - $0.80/sticker
- 500 for $361.25 - $0.72/sticker
- Free shipping for orders over $100.00
- Couldn't find information regarding split backs
Death by Stickers offers sample packs, but they're sold out currently.
### StandOut Stickers
[StandOut Stickers](https://www.standoutstickers.com/)
- 100 for $109.00 - $1.09/sticker
- 200 for $160.00 - $0.80/sticker
- 500 for $272.50 - $0.55/sticker
- $10.00 for template help - they looked to have pretty stringent art requirements
- Free shipping
- Split backs
StandOut Stickers doesn't offer samples as far as I could find.
### Sticker Bunnies
[Sticker Bunnies](https://www.stickerbunnies.com/)
Sticker Bunnies prices by sticker size and material - **not** quantity. 3"x3" holo die cut stickers are $0.90 per sticker - no bulk pricing. They also only accept orders via email (other than sample packs).
I am waiting on a Sticker Bunnies sample pack at current. I have no ETA yet.
### Sticker Guy
[Sticker Guy](https://stickerguy.com/)
I did not price out Sticker Guy as I could not find pricing information for holographic stickers. I did find one table that listed holo stickers as temporarily unavailable. Still, they look like a great option for simpler sticker needs.
### Sticker Junkie
[Sticker Junkie](https://www.stickerjunkie.com/)
- No quantity ~100 offered
- 200 for $214.00 - $1.07/sticker
- 500 for $360.00 - $0.72/sticker
- Free shipping
- Split backs
These feel pretty quality. They're not too flimsy, and the colors are vibrant. The split backs make them easy to peel.
![An array of colorful stickers, most featuring the sticker junkie logo of a monkey head smoking a cigar. There's a couple color sample stickers as well that show the full range of colors on glossy and matte stickers.](/img/2026/stickers/sticker-junkie.jpg)
### Sticker Mule
[CEO is a big Trump supporter](https://www.motherjones.com/politics/2026/09/anthony-constantino-donald-trump-sticker-mule-congress-stefanik/).
### Sticker Ninja
[Sticker Ninja](https://stickerninja.com/)
- 100 for $105.81 - $1.06/sticker
- 200 for $193.33 - $0.97/sticker
- 500 for $293.91 - $0.59/sticker
- Free shipping
- No split backs
Sticker Ninja has an *amazing* amount of variety when it comes to glitter, shimmer, mirror finish, and more - not just your standard holographic. I stuck one to my laptop, and while I can't vouch for longevity at this time, it feels *quality* - nice sturdy vinyl.
![Many stickers laid out on a desk, mostly with some variety of cutesy ninja iconography. There are a lot of shimmery, shiny, or glittery ones. A couple say things like 'queer joy is a revolution' or 'love beyond the binary'.](/img/2026/stickers/sticker-ninja.jpg)
### Sticker Robot
[Sticker Robot](https://stickerobot.com/)
- 100 for $127.00 - $1.27/sticker
- 250 for $212.00 - $0.85/sticker
- 500 for $327.00 - $0.65/sticker
- Free shipping
- FAQ says split backs can be added, but I didn't see this option; peel tabs can be added for additional cost
Sticker Robot does both silkscreen and digital stickers. The silkscreen ones seem really nice, but the digital holo stickers are what I priced out and looked at. They seem decent, but nothing outstanding - I'm kinda guessing the silkscreen ones might be more standout. Silkscreen stickers offer printed backs as well. One of the samples is a "business card sticker" which is kinda neat.
In the picture, silkscreen stickers are on the left and digital on the right.
![Some copies of the same two robot designs in different sticker materials as well as an info sheet.](/img/2026/stickers/sticker-robot.jpg)
### StickerApp
[StickerApp](https://stickerapp.com)
- 100 for $98.00 - $0.98/sticker
- 200 for $153.00 - $0.77/sticker
- 500 for $280.00 - $0.56/sticker
- Free shipping
- Split backs
I'm pretty impressed by the variety here, though the stickers that aren't specifically their "heavy duty" material feel a smidge flimsy. Their special finishes are fun and varied. They also offer a business card sticker option - though I personally wouldn't want a business card that thin...
They have several sample packs - sticker materials (image 1, left; image 2), label materials (image 1, right), and product types (image 3).
![A two-image collage showing all material samples laid out for both stickers - ranging from standard vinyl to finishes like 'pixie dust' and 'matte mirror' - and labels - five simpler varieties.](/img/2026/stickers/stickerapp-materials.jpg)
![9 color test stickers for a variety of special finishes, matte and glossy holo and mirror, and clear.](/img/2026/stickers/stickerapp-colors.jpg)
![A dozen or so varied stickers showing off business cards, die cut, special finishes, kiss cut, hang tag, heavy duty, and more, along with the packaging which has a sticker type key printed on it.](/img/2026/stickers/stickerapp.jpg)
### StickerBros
[StickerBros](https://www.stickerbros.com/)
- 100 for $118.00 - $1.18/sticker
- 200 for $168.00 - $0.84/sticker
- 500 for $300.00 - $0.60/sticker
- Free shipping
- No split backs
I am decently impressed with the quality of StickerBros, and particularly with their embossed and heavy duty embossed stickers. I haven't seen embossed stickers in any of the other sample packs! Despite not having split backs, I found them pretty easy to peel because there is an ever-so-slightly larger edge of backing paper surrounding the sticker than some others.
However, they were *really* slow to get my sample pack out. The shipping label was created more than 2 weeks before the package was delivered to USPS. Sample packs don't require any printing time, so I'm not sure why there was such a delay.
![A dozen or so stickers in fun design showing off different styles such as matte chrome, glitter, glow-in-the-dark, embossed, and more.](/img/2026/stickers/stickerbros.jpg)
### StickerGiant
[StickerGiant](https://www.stickergiant.com/)
- 125 for $137.50 - $1.10/sticker
- 250 for $182.50 - $0.73/sticker
- 500 for $270.00 - $0.54/sticker
- Free shipping
- Split backs
StickerGiant has a very comprehensive and informative sample pack showcasing a wide variety of materials ranging from the holo die cuts I priced out to kraft paper labels. They also include color samples on their materials for reference.
![An array of stickers on a table. All stickers are either labeled with their materials or their design is fully dedicated to describing their materials. There are many labels and die cut stickers.](/img/2026/stickers/sticker-giant.jpg)
![CMYK swatches on glossy and matte samples of holo, white, and clear, as well as on kraft paper.](/img/2026/stickers/sticker-giant-colors.jpg)
### Sticky Brand
Sticky Brand has apparently gone pretty hard in on generative AI marketing. I priced them out (and ordered some stickers due to a *deep* discount\*) before learning this, so I'm noting prices down for reference, but I don't recommend them.
- 100 for $118.13 - $1.18/sticker
- 250 for $236.25 - $0.95/sticker
- 500 for $393.75 - $0.79/sticker
- USPS ground shipping rates or thereabouts
- Couldn't find information regarding split backs
\*Or well, I *thought* I ordered stickers. Here's what happened:
I ordered a sample pack. I saw the discount on 100 holo stickers, realized I should have gone for that, and put in to cancel my sample pack, then ordered the 100 holo PLUS sample pack so I wasn't paying shipping twice. They then canceled my *second* order, of the 100 holo and sample pack, rather than my first. And now it's been 2 or 3 weeks and I still don't have a sample pack, because order 1 is seemingly stuck in printing. Their customer service *sucks*, too - I have been talking to them about this and they have gotten details wrong, failed to read the information I am giving them, and now have canceled my sample order without me asking for that. So, no samples, screw them, will not be putting in a new order.
### Vinyl Disorder
[Vinyl Disorder](https://vinyldisorder.com/)
- 100 for $161.22 - $1.61/sticker
- 250 for $236.25 - $0.94/sticker
- 500 for $406.35 - $0.81/sticker
- $5.00-$6.00 for shipping orders under $250.00; free shipping over $250.00 cannot be combined with other discounts
- Peel tabs for 25% extra
These are decent, but the price is a real deterrant. I think if you're getting more basic stickers their pricing *might* be more competitive - they are clear that holo and other premium materials are marked up 150% - but without doing those pricing tables I can't be sure. That said, I think their "cracked ice holo" is pretty cool.
![The same logo in 11 materials, plus a rectangular chunk of holo sticker vinyl. There's even such oddities as glow in the dark, view through (perforated so the design is not fully opaque), and static cling.](/img/2026/stickers/vinyl-disorder.jpg)
## Resources
- [Some Free Sticker Designs and Where to Print Them](https://docpop.org/2025/10/some-free-sticker-designs-and-where-to-print-them/)
@@ -0,0 +1,13 @@
---
title: plaid dishtowels
image:
src: 2026/plaid-dishtowels.jpg
alt: "A two image collage. Image one shows one navy, beige, and yellow towel in a simple plaid laid out on a table with two more folded on top. Image two is a close up of the plaid."
tags:
- gallery
- weaving
---
Yarn: [Circulo Anne Weaving Yarn](https://woolery.com/products/circulo-anne-weaving-yarn).
3 towels. Woven area roughly 12"x24". Hemstitched.