41 Commits

Author SHA1 Message Date
0fe06d9390 Added Mayernik interview 2025-06-19 19:18:34 +02:00
8c06f6948a adjusts article width and position 2025-05-22 17:04:18 -06:00
fb9945279b fixes Nathan's find and replace madness 2025-05-22 16:48:35 -06:00
8a8d9e0063 Added Acey interview 2025-05-09 14:25:19 -07:00
91b20693d9 adds summary on interview closes #6 2025-05-07 14:02:26 -07:00
f230c182ac Adjusted Kiessel and Ehmke to remove project names from subject title 2025-05-07 10:49:09 -06:00
b8491ec460 Added Matomo code 2025-05-05 11:44:38 -06:00
29adbecffa Updated Mwaselela headshot 2025-05-05 11:29:49 -06:00
32eae7cc8e Slight README updates 2025-05-05 10:38:33 -06:00
dee49239f1 Added link to Mwaselela 2025-05-04 22:03:43 -06:00
bfd48200d7 Added publish commands to README 2025-05-04 14:24:40 -06:00
e591003a48 Added Mwaselela interview 2025-05-04 14:21:41 -06:00
f21ef12a67 Added Governance Ecologies reference to About 2025-05-02 14:56:39 +00:00
46a2c111ba Added location to Mayer 2025-04-30 23:05:29 -06:00
7ef9e26166 Converted 'article' nomenclature to 'interview' 2025-04-30 22:55:43 -06:00
f7bbe50ff7 Added Mayer headshot 2025-04-30 22:52:51 -06:00
d304994f1c Added Mayer 2025-04-30 17:28:49 -06:00
782e0b4dfb Added Osorio interview 2025-04-28 12:29:07 -06:00
b093a3d8c5 Added Mannan headshot and fixed Dorsey 2025-04-27 14:01:17 -06:00
a151a9fe9d fixed some image issues and added clarification to README 2025-04-26 21:32:59 -06:00
9806515bbc Corrections on README instructions 2025-04-26 21:09:34 -06:00
0ce42390ce Added Zargham headshot 2025-04-26 20:56:12 -06:00
befa2b8f4d Added link to Kiessel 2025-04-26 16:48:04 -06:00
c9eefa953c Removed placeholder headshots to get ready for production 2025-04-26 16:37:31 -06:00
f20cc28349 Tweaks to about page and added dorsey headshot 2025-04-26 16:25:58 -06:00
bd702f8f51 adds dark mode 2025-04-26 14:57:47 -06:00
e0546c0e2e adds fonts back 2025-04-26 13:18:53 -06:00
18c2c898aa updates open graph data 2025-04-25 22:32:06 -06:00
451e860697 adds headshot resource support 2025-04-25 21:33:57 -06:00
b89373b478 adds article archetype 2025-04-25 20:17:43 -06:00
b6f74485a4 moves js into the asset pipeline 2025-04-25 20:05:33 -06:00
5290772bce minor styling updates 2025-04-25 11:55:48 -06:00
b33c8f409f updates CI to work with latest hugo version 2025-04-25 11:15:51 -06:00
25febf44a2 removes useless theme 2025-04-22 21:26:16 -06:00
5cff4da500 adds footer close #5 2025-04-22 19:18:55 -06:00
8e5ccb77c6 applies wompum color to tailwind class system 2025-04-22 18:46:50 -06:00
54533f62e9 makes partial out of tag cloud 2025-04-22 16:41:51 -06:00
6be0bd3d7b responsive design pass 2025-04-22 13:47:21 -06:00
fbc26ed89c implements tailwind v4 and removes scss 2025-04-22 11:41:16 -06:00
255cd357c5 properly configures tailwind 2025-04-17 18:35:56 -06:00
a0f84311d2 adds gitlab ci 2025-04-16 10:49:31 -06:00
86 changed files with 2566 additions and 5786 deletions

67
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,67 @@
# Default image for jobs - contains Hugo Extended
image:
name: hugomods/hugo:node
entrypoint: [""]
variables:
HUGO_ENV: production
# Tells GitLab Runner to initialize and update submodules recursively
GIT_SUBMODULE_STRATEGY: recursive
SURFER_SERVER: "https://protocol.ecologies.info/"
stages:
- build # Added build stage
- deploy
# Job to build the Hugo site
build_site:
stage: build
before_script:
- echo "installing NPM packages"
- npm install
script:
- echo "Starting Hugo build..."
- hugo version
- hugo --minify --gc --cleanDestinationDir # Build the site
- echo "Build completed. Public directory contents:"
- ls -la public/
artifacts:
paths:
- public/ # Pass the 'public' directory to the next stage
expire_in: 1 hour # Optional: Set artifact expiry
# Define when this job runs (e.g., only on the main branch)
# Adjust 'only' or 'rules' as needed for your workflow
only:
- publish # Example: Run only on the main branch
# Job to deploy the built site using cloudron-surfer
deploy_site:
stage: deploy
image: node:18 # Use Node.js image for cloudron-surfer
needs: # Ensure 'build_site' job completes successfully first
- job: build_site
artifacts: true # Download artifacts from 'build_site'
# No need for GIT_SUBMODULE_STRATEGY here if GIT_STRATEGY is none or repo isn't needed
# If you need the repo source in this job, add GIT_SUBMODULE_STRATEGY here too.
variables:
GIT_STRATEGY: none # Optimization: Don't fetch repo source code for deploy job
before_script:
- echo "Installing cloudron-surfer..."
- npm install -g cloudron-surfer
script:
- 'echo "Deploying to: $SURFER_SERVER"'
# Verify artifact downloaded correctly
- echo "Contents of downloaded artifact:"
- ls -la public/ # Artifacts are extracted to the root of the job workspace
- echo "Uploading files to server using surfer put..."
- >-
surfer put
--token $SURFER_TOKEN
--server $SURFER_SERVER
public/* /
- echo "Deployment completed successfully"
# Define when this job runs (e.g., only on the main branch after build)
# Adjust 'only' or 'rules' as needed for your workflow
only:
- publish # Example: Run only on the main branch

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "themes/hugo-starter-tailwind-basic"]
path = themes/hugo-starter-tailwind-basic
url = https://github.com/bep/hugo-starter-tailwind-basic.git

View File

@ -4,10 +4,77 @@ A project of the [Media Economies Design Lab](https://www.colorado.edu/lab/medla
Developed in Hugo.
## Usage
## Development
Be sure to have a recent Hugo *extended* version installed.
Navigate to the project directory and:
```
npm install
```
Then, to serve the site locally:
```
hugo server
```
## Deployment
Thanks to the [MEDLab Hugo template](https://git.medlab.host/dhorn/medlab-hugo-template), the site is set up to deploy automatically to the MEDLab server via GitLab CI. To do so, when developing locally, use these git commands:
```
git push origin
git push origin main:publish
```
A push to `publish` should trigger a pipeline in GitLab to deploy the site. If it doesn't, check for errors in Gitea and GitLab.
## Interviews
see `/archetypes/interview.md` for the interview template. You can create a new interview with:
```
hugo new content content/interviews/lastname-interview_title.md
```
This will create a new interview in the `content/interviews` directory with the current date and the title you provide. You can then edit the file to add your content.
Alternately, you can manually add a file there in the proper format.
### Headshots
Optionally you can add a headshot photo to your interview. To do this:
1. Place your image file in the `/assets/headshots/` directory
2. Add a `headshot` field to your interview's front matter with just the filename. For example:
```yaml
headshot: "firstname_lastname.jpg"
```
*Note: Name is case sensitive, might as well use lowercase letters and hyphens in your filename.*
### Narrator links
You can add links to an interview that relate to the narrator. To do this, add a `links` field to the front matter of the interview. The value should be a list of objects, each with a `text` and `url` field. For example:
```
links:
- text: "My Website"
url: "https://example.com"
- text: "My Twitter"
url: "https://twitter.com/example"
```
This will include the links in the interview page. The links will be displayed as a list with the text as the link text and the URL as the link target.
### Open Graph Image
You can add Open Graph image (for social media sharing) to an interview. To do this, add a `ogImage` field to the front matter of the interview. The value should be the path to the image file. For example:
```yaml
ogImage: "/images/my-image.jpg"
```
*Note: The image should be at least 1200x630 pixels for best results. Make sure to place the image in `/static/images/` directory so it can be served correctly. The path should be relative to the static directory.*

View File

@ -1,6 +0,0 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

14
archetypes/interviews.md Normal file
View File

@ -0,0 +1,14 @@
---
narrator: ""
subject: ""
facilitator: ""
date: {{ dateFormat "2006-01-02" .Date }} # YYYY-MM-DD
approved: "" # YYYY-MM-DD
summary: ""
location: ""
topics: []
headshot: "placeholder-headshot.png"
links:
- text: ""
url: ""
---

View File

@ -0,0 +1,50 @@
.wompum-container {
width: 100%;
margin: 0 auto;
}
.wompum-container .wompum-grid,
.wompum-container .wompum-interview-grid {
gap: 2px;
height: 100%;
min-height: 2px;
grid-template-rows: repeat(var(--grid-rows, 5), 1fr);
}
.wompum-container--wide-gap .wompum-grid,
.wompum-container--wide-gap .wompum-interview-grid {
gap: 1rem;
}
.wompum-container--no-gap .wompum-grid,
.wompum-container--no-gap .wompum-interview-grid {
gap: 0;
}
.wompum-grid,
.wompum-interview-grid {
display: grid;
width: 100%;
}
.wompum-cell {
@apply dark:opacity-70 brightness-100;
width: 100%;
height: 100%;
transition: all 3s ease-in;
}
.wompum-cell:hover {
@apply dark:opacity-100 brightness-125;
transition: all .3s ease;
}
.wompum-cell[class*="900"]:hover {
@apply brightness-200;
}
.wompum-cell--narrator,
.wompum-cell--subject,
.wompum-cell--facilitator {
min-height: unset;
}

50
assets/css/interview.css Normal file
View File

@ -0,0 +1,50 @@
.interviewer-question {
font-style: italic;
color: #444;
margin-left: -1rem;
}
.interview-title--single .interview-title__narrator {
@apply mb-2 block font-light;
}
.interview-title--single .interview-title__subject {
font-size: 1.5em;
}
.interview-title--list {
@apply text-2xl font-bold text-gray-900 group-hover:text-pine-900 underline underline-offset-5 decoration-sand-500 hover:decoration-pine-900
dark:text-sand-100 dark:group-hover:text-sand-500 dark:decoration-sand-900 dark:hover:decoration-sand-500;
}
.interview-title--list .interview-title__narrator::after {
content: ":";
}
.interview-title--list .interview-title__subject {
@apply font-light;
}
.wompum-radial-grid {
@apply absolute w-full h-full top-0 left-0;
}
/* Narrator headshot */
.narrator__container {
@apply relative w-48 mb-2 mx-auto md:mx-0 rounded-full border-4 bg-white border-white
dark:bg-gray-950 dark:border-gray-950;
}
.narrator__frame {
@apply relative p-4;
}
.narrator__frame img {
@apply w-full rounded-full object-cover relative z-10 bg-white text-center border-4 border-white grid place-items-center
dark:bg-gray-950 dark:border-gray-950;
aspect-ratio: 1;
}
.narrator__wompum {
@apply absolute inset-0 w-full h-full;
}

59
assets/css/main.css Normal file
View File

@ -0,0 +1,59 @@
body {
@apply font-garamond;
}
a:hover {
@apply text-pine-900 dark:text-pine-100;
}
.tag {
@apply p-2 bg-sand-100 border border-transparent rounded-lg whitespace-nowrap no-underline
hover:border-sand-500 hover:text-gray-900 hover:opacity-100
dark:bg-gray-900 dark:text-sand-100 dark:border-gray-800 dark:hover:text-sand-100
transition-all duration-200 ease-in-out;
transition: border 2s ease-in;
}
.tag:hover {
transition: border 0.1s ease-out;
}
.tag-cloud .tag:nth-child(10n+1):hover {
@apply border-blue-500 dark:border-blue-900;
}
.tag-cloud .tag:nth-child(10n+2):hover {
@apply border-clay-500 dark:border-clay-900;
}
.tag-cloud .tag:nth-child(10n+3):hover {
@apply border-cyan-500 dark:border-cyan-900;
}
.tag-cloud .tag:nth-child(10n+4):hover {
@apply border-gold-500 dark:border-gold-900;
}
.tag-cloud .tag:nth-child(10n+5):hover {
@apply border-red-500 dark:border-red-900;
}
.tag-cloud .tag:nth-child(10n+6):hover {
@apply border-pine-500 dark:border-pine-900;
}
.tag-cloud .tag:nth-child(10n+7):hover {
@apply border-pink-500 dark:border-pink-900;
}
.tag-cloud .tag:nth-child(10n+8):hover {
@apply border-moss-500 dark:border-moss-900;
}
.tag-cloud .tag:nth-child(10n+9):hover {
@apply border-rust-500 dark:border-rust-900;
}
.tag-cloud .tag:nth-child(10n):hover {
@apply border-sand-500 dark:border-sand-900;
}

53
assets/css/styles.css Normal file
View File

@ -0,0 +1,53 @@
@import "tailwindcss";
@plugin "@tailwindcss/typography";
/* allows for toggling dark mode */
@custom-variant dark (&:where(.dark, .dark *));
/* Add safelist for all color variations */
/* Wompum.js constructs class names dynamically and tailwind misses them */
@source inline("{bg,text,border}-{blue,clay,cyan,gold,moss,pine,pink,red,rust,sand}-{100,500,900}");
@theme {
--font-garamond: 'EB Garamond 12', 'Garamond', 'Baskerville', 'Baskerville Old Face', 'Hoefler Text', 'Times New Roman', serif;
--font-iosevka: 'Iosevka', Consolas, 'Liberation Mono', Menlo, monospace;
--color-blue-100: #c2cfe0;
--color-blue-500: #6f88a3;
--color-blue-900: #5d7691;
--color-clay-100: #ead4c2;
--color-clay-500: #c49b6f;
--color-clay-900: #b17f48;
--color-cyan-100: #c0dadd;
--color-cyan-500: #6a9799;
--color-cyan-900: #436668;
--color-gold-100: #e6dac1;
--color-gold-500: #bca66d;
--color-gold-900: #a88b48;
--color-moss-100: #d0ddc7;
--color-moss-500: #919f71;
--color-moss-900: #69734a;
--color-pine-100: #c7ddd2;
--color-pine-500: #7b9b85;
--color-pine-900: #516b57;
--color-pink-100: #ead4d2;
--color-pink-500: #c0928a;
--color-pink-900: #a7695a;
--color-red-100: #e8c9c9;
--color-red-500: #b87977;
--color-red-900: #a35754;
--color-rust-100: #eacec4;
--color-rust-500: #c48a74;
--color-rust-900: #af6649;
--color-sand-100: #eee8dd;
--color-sand-500: #d4c5aa;
--color-sand-900: #b19360;
}
body {
@apply antialiased bg-sand-100/50 dark:bg-gray-950 dark:text-gray-200 transition-colors duration-200;
}
@import "components/wompum.css";
@import "fonts.css";
@import "main.css";
@import "interview.css";

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1004 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 855 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@ -14,7 +14,7 @@ class ColorCalculator {
// Calculate shade based on influences
const shade = this.calculateShade(influences);
return `var(--${colorFamily}-${shade})`;
return `${colorFamily}-${shade}`;
}
// Calculate shade based on surrounding influences

19
assets/js/darkmode.js Normal file
View File

@ -0,0 +1,19 @@
// Set initial theme on page load
(function() {
const isDark = localStorage.theme === "dark" ||
(!("theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches);
document.documentElement.classList.toggle("dark", isDark);
// Update label on load
const label = document.getElementById("darkmode-label");
if (label) label.textContent = !isDark ? "Dark" : "Light";
})();
// Toggle dark mode and update label/localStorage
function toggleDarkMode() {
const html = document.documentElement;
const isDark = html.classList.toggle("dark");
localStorage.theme = isDark ? "dark" : "light";
const label = document.getElementById("darkmode-label");
if (label) label.textContent = !isDark ? "Dark" : "Light";
}

View File

@ -87,7 +87,7 @@ class WompumGrid {
// Calculate and apply color
const color = this.colorCalculator.getColor(sigilDigit, influences);
cell.style.backgroundColor = color;
cell.classList.add(`bg-${color}`);
});
}
@ -98,7 +98,7 @@ class WompumGrid {
}
}
class ArticleGrid extends WompumGrid {
class InterviewGrid extends WompumGrid {
constructor(element, metadata) {
super(element);
this.metadata = metadata;
@ -192,7 +192,7 @@ class RadialWompumGrid {
const sigilDigit = this.getSigilDigit(index);
// Pass empty array for influences since we don't need adjacent segments
const color = this.colorCalculator.getColor(sigilDigit, []);
path.setAttribute('fill', color);
path.setAttribute('fill', `var(--color-${color})`);
return path;
}
@ -249,16 +249,16 @@ document.addEventListener('DOMContentLoaded', () => {
grid.init();
});
// Initialize article grids
document.querySelectorAll('.wompum-article-grid').forEach(element => {
// Initialize interview grids
document.querySelectorAll('.wompum-interview-grid').forEach(element => {
let metadata = {};
try {
metadata = JSON.parse(element.dataset.metadata || '{}');
} catch (e) {
console.error('Error parsing metadata for article grid:', e);
console.error('Error parsing metadata for interview grid:', e);
}
const grid = new ArticleGrid(element, metadata);
const grid = new InterviewGrid(element, metadata);
grid.init();
});

View File

@ -1,2 +0,0 @@
$font-garamond: 'EB Garamond 12', 'Garamond', 'Baskerville', 'Baskerville Old Face', 'Hoefler Text', 'Times New Roman', serif;
$font-iosevka: 'Iosevka', Consolas, 'Liberation Mono', Menlo, monospace;

View File

@ -1,49 +0,0 @@
.wompum {
&-container {
width: 100%;
margin: 0 auto;
& .wompum-grid,
& .wompum-article-grid {
gap: 2px;
height: 100%; // Fill container height
min-height: 2px;
grid-template-rows: repeat(var(--grid-rows, 5), 1fr); // Default 5 rows
}
// When no height is set, use aspect ratio
&--aspect-ratio {
aspect-ratio: 3/1;
}
&--wide-gap .wompum-grid,
&--wide-gap .wompum-article-grid {
gap: 1rem;
}
&--no-gap .wompum-grid,
&--no-gap .wompum-article-grid {
gap: 0;
}
}
&-grid,
&-article-grid {
display: grid;
width: 100%;
}
&-cell {
width: 100%;
height: 100%; // Ensure cells fill their grid areas
transition: background-color 0.3s ease;
background-color: var(--sand-500);
// Remove fixed heights since we're using aspect ratio now
&--narrator,
&--subject,
&--facilitator {
min-height: unset;
}
}
}

View File

@ -1,69 +0,0 @@
// Tailwind
@tailwind base;
@tailwind components;
@tailwind utilities;
// Variables
@import "variables";
// Fonts
@import "fonts";
// Components
@import "components/wompum";
body {
font-family: $font-garamond;
}
.interviewer-question {
font-style: italic;
color: #444;
margin-left: -1rem;
}
.article-title {
&--single {
.article-title__narrator {
@apply mb-2 block font-light;
}
.article-title__subject {
font-size: 1.5em;
}
}
&--list {
.article-title__narrator {
&::after {
content: ":";
}
}
.article-title__subject {
@apply font-light;
}
}
}
// Narrator Image Component
.wompum-radial-grid {
@apply absolute w-full h-full top-0 left-0;
}
.narrator {
&__container {
@apply relative;
}
&__frame {
@apply relative p-4;
}
&__image {
@apply w-full rounded-full object-cover relative z-10 bg-white text-center border-4 border-white grid place-items-center;
aspect-ratio: 1;
}
&__wompum {
@apply absolute inset-0 w-full h-full;
}
}

View File

@ -1,7 +1,6 @@
baseURL = 'http://example.org/'
baseURL = 'https://protocol.ecologies.info/'
languageCode = 'en-us'
title = 'Protocol Oral History Project'
theme = "hugo-starter-tailwind-basic"
[taxonomies]
topics = "topics"
@ -13,10 +12,39 @@ theme = "hugo-starter-tailwind-basic"
[params]
description = "The Protocol Oral History Project chronicles the development of internet protocols and standards through interviews with key contributors."
images = ["/images/default-og.jpg"] # Will be replaced by wompum generation
twitterSite = ""
facebookAppID = ""
openGraphImage = "/images/og-default.jpg"
footer = """
A project of the [Media Economies Design Lab](https://www.colorado.edu/lab/medlab/)
Available under the [Creative Commons Attribution License (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/)
Website design by [Drew Hornbein](https://dhornbein.com)
"""
[params.author]
name = "Media Economies Design Lab"
twitter = ""
twitter = ""
[module]
[module.hugoVersion]
extended = false
min = "0.128.0"
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
source = "hugo_stats.json"
target = "assets/watching/hugo_stats.json"
[build]
writeStats = true
[[build.cachebusters]]
source = "assets/watching/hugo_stats\\.json"
target = "styles\\.css"
[[build.cachebusters]]
source = "(postcss|tailwind)\\.config\\.js"
target = "css"
[[build.cachebusters]]
source = "assets/.*\\.(js|ts|jsx|tsx)"
target = "js"
[[build.cachebusters]]
source = "assets/.*\\.(.*)$"
target = "$1"

View File

@ -6,6 +6,6 @@ include_partials: ["facilitator-list.html","wompum-demo.html"]
The Protocol Oral History Project is an effort to honor and share the stories of protocol artists—the skilled builders and stewards of the rules, standards, and norms that shape our lives in often invisible ways, ranging from technical standards and diplomatic practices to Indigenous traditions and radical subcultures.
The color scheme is inspired by _[Constitutional Wampum](http://n2t.net/ark:/65665/ws63912f5dd-e703-4759-8c31-33ac98b3c190)_ by Robert Houle.
The project is led by Nathan Schneider, director of the [Media Economies Design Lab](https://www.colorado.edu/lab/medlab/) at the University of Colorado Boulder. Website designed by [Drew Hornbein](https://www.dhornbein.com/). The project is made possible by support from the Siegel Family Endowment.
The Protocol Oral History Project is part of [Governance Ecologies](https://governance.ecologies.info), a family of projects "expanding the repertoires for community governance."

View File

@ -0,0 +1,198 @@
---
narrator: Camille Acey
subject: Organizational closures
facilitator: Nathan Schneider
date: 2025-05-06
approved: 2025-05-09
summary: "Organizations too often fail to prepare for their inevitable end; The Wind Down shares best practices for healthy closures."
location: "Brooklyn, NYC, USA"
headshot: "camille_acey.png"
topics: ["open source", "organizations", "ritual"]
links:
- text: "Personal website"
url: "https://camilleacey.com/"
- text: "The Wind Down"
url: "https://www.wind-down.org/"
---
*How do you introduce yourself, particularly in the context of building and stewarding protocols?*
I don't know if I've ever presented myself in the context of building and stewarding. I just say my name.
I practice through an organization called The Wind Down, and I usually describe The Wind Down as having three pillars right now. One is the platform, which provides materials for people. It's an aggregator of information about other people and projects working on closures. I offer a hotline for people who are closing or in discernment around closure—it was free, but I'm trying to charge for it now.
The second is the community of practice, the composting and hospice community of practice that I facilitate. We have a Slack, and we meet once a month over Zoom.
The third is the newsletter that I put out called *Closing Remarks*, which is a roundup of notable or interesting closures, and commentary around the larger themes of closure, either globally or on a national scale. Those are the three main projects I sort of steward under the umbrella of The Wind Down.
*Can you outline the trajectory of your life and career, as it relates to this work of closure, of winding down?*
I was born in Berkeley, California. Both my parents were solidly middle-class workers committed to their respective unions and different sorts of organizing.
My father grew up in Newark, New Jersey, and came out of a Black radical tradition of organizing, working with Amiri Baraka and people like that. He grew up when there were the riots, and he was very informed by that sort of organizing and commitment to various types of political, social, and community engagement. That kind of work was instilled in my household.
I went to UC Berkeley, which has its own history of student organizing. I lived in the student housing cooperatives all four and a half years at Berkeley, and that was very formative for me in terms of seeing how democratic structures could work. We had students ranging from me—I was 16 when I moved into student co-ops—all the way to people in their fifties, and no one was in charge. We were all running it together.
I had to tackle challenges as a 16-year-old first starting there, then growing up in the co-ops, then moving up to working at the more central level, then joining the board at the North American Students of Cooperation level. It gave me a strong sense of self-determination and empowerment.
After college, I went in two different directions. I worked in tech and got very involved in open source. Some friends from UC Berkeley were early people who told me about Linux and open source. So I got involved in open source while staying true to my community organizing and cooperative roots.
I got involved in many different things, and over time some would end in super disappointing ways. I knew from the open-source space that there were protocols that could support better ways of working together. I was curious whether we could apply that to community organizing and have some protocol around how to close better.
I was part of a community called The Maintainers—I still am—and in 2019 I sent an email asking if anybody had a good playbook for closing things, because I was seeing closures happen all around me.
They sent me in a couple different directions—most notably to Cassie Robinson in the UK, who was building something called the Farewell Fund and the Care-full Closures project, which became Stewarding Loss. She was approaching the same questions from the philanthropic perspective: we give people money to start and grow things, but we're not giving people money to close things well.
Another person was Joe McLeod, who's British but lives in Sweden. He approaches these things from product and service design perspectives. He's written two books called *Ends.* and *Endineering*. He's a prophet of endings, and he constantly thinks about how to help things end better and also how we can be more honest with ourselves about disposal and recycling.
The third influence was an activist and scholar called Mariame Kaba, known for writing about conflict resolution, movements, and abolition in prison organizing. I'd been giving small donations to her Nia Project, which was an umbrella for different campaigns. What impressed me was that the campaigns were very discrete with clear desired outcomes and a strong commitment to ending once they achieved those outcomes. I hadn't seen organizing done that way, where it was time-boxed and clear. So those are the three main flows of inspiration that drove my work.
*As you began approaching that work, as you put that message out to the Maintainers list and started engaging in this practice and supporting others, what kinds of models did you draw on? What experiences in your life, what competencies that you had or saw in others, informed your sense of how this could be done well?*
I worked in open-source tech for a while, so I was inspired by this sense of openness and sharing, and the archival that's embodied in projects like Internet Archive and GitHub. I was thinking about how we can share more regularly.
In tech, we also have these cycles where you have retrospectives, postmortems—protocols that kick into place connected to where you are on a timeline. When a project ends, that triggers a retrospective.
I started a collective many years ago called CoLET, which was an attempt to be a hyper-local, radical feminist, tech intervention. We had big dreams after the first Trump administration. We were thinking about getting movement people to move off of Google and Microsoft and start using open-source tech. *What do we need to do to get these people to stop using surveillance technology?*
We approached it from a couple different places. One of the co-founders had been part of Occupy Wall Street's tech committee and Occupy Sandy, which had ended unceremoniously. People hid passwords from each other and all that. So she was coming in with a strong sense of keeping things as transparent as possible and overcommunicating if there's a problem.
Going back to what I learned from Mariame Kaba, we also built in what ending would look like from the beginning. We built out the process for ending at the start and had endings in mind, even if we didn't specifically say we're going to exist for five years. We wanted to have a clear "smash glass to exit" process.
I had been thinking for a while about how nonprofits and movement-based groups could adopt cadences, workflows, and processes where we can revisit things and say, "Do we want to keep doing this?"
I wanted to develop playbooks and take the learnings from working in tech and apply them to movement work, with a movement lens. I could hand people a book of things to do or a checklist. If you look at my website, there's a lot where I'm trying to systematize it. I don't want to do this work forever or maintain everything forever, but I want to push out a body of work because my bigger thrust is to encourage consciousness of endings much sooner.
A lot of times when organizations come to me, it's almost like *I didn't believe this could ever happen to me* energy. I think it's important for more people to be thinking about endings at the beginning, in the middle, all the time.
The other work that inspired how I designed The Wind Down comes out of another project called The Decelerator, which grew out of Stewarding Loss. They're a couple of hops ahead of me in their work. When I spoke to Iona Lawrence, who co-founded The Decelerator with Louise Armstrong, Iona pointed me in certain directions. She suggested the idea of a hotline, and she gave me everything they'd already developed for their hotline so I didn't have to start from zero.
That's how they were with all the materials on the Stewarding Loss website. They said, "*If anything is helpful, just take it and run with it."* They hadn't been formal about licensing—I don't know if they're familiar with that—but it was a "gentlewoman's agreement" that I could use it if I credit them, and they were happy for this work to proliferate. If things don't apply in the US context as they do in the UK context, I tweak things as needed. It felt very much in the spirit of an open source approach.
*When organizations approach you through the hotline or other means, how much do you find yourself leaning on common patterns as opposed to having to adjust your guidance to the particular situation? How much commonality do you think there is in these patterns of winding down?*
There's a lot of commonality and general themes. The more I do these hotline calls, the more I try to make it easier on myself. At the beginning I was doing calls and scribbling notes freehand. Then I started typing while muted, and then I would clean up what I typed and put it in a template I'd created based on what Iona was using in the UK for The Decelerator.
Recently I realized I could just type directly into the template I send people after the call. And then I thought, "Why don't I put all the questions in there too?" I have a "Wind Down Self-Assessment" on The Wind Down website with questions I tend to ask people every time. I just put it in the doc so I don't have to search or try to remember.
Sometimes I can get a few minutes into a call and characterize what type of closure it is. I have a few buckets or checkboxes for types of closure.
One popular type is founder/leader loss—when a founder leaves an organization and no one can really fill their boots. I recently talked with someone who wasn't the founder but was a charismatic leader who'd stepped back from the organization—and then came back because he thought they were in bad shape. He was pointing to other factors for the closure, and I asked, "Does your departure have anything to do with the state it's in now?" He paused and realized that it did. So I mentally checked that box—leader loss.
Early on, when I started the hotline, I saw many well-meaning organizations that were like, *"We're going to hire a Black woman as our executive director because George Floyd was killed and this is how we show we care"*—but she didn't get support, or maybe she was the wrong person. It was virtue signaling, and then everything exploded. I've seen far too many of those.
I'm seeing some decline in those and an increase in organizations saying, "Nobody wants anything to do with DEI anymore, so our services are no longer welcome and our business is imploding." They're probably both happening simultaneously, but I think the "we'll solve everything by getting a Black woman in charge" arc is on the downswing.
Even when I recognize a pattern, I wait and let the person speak it aloud. I don't say, "Oh, you're typical." The only time I might say that is when people ask, "Do I sound crazy?" or "Is this the worst closure you've ever heard about?" It never really is. When people ask that, I'll say, "It happens. I've heard about it."
I keep a spreadsheet with notes about the type of closure and the reasoning for it. The interesting thing is there is never one cause. It's usually like you brought in the wrong ED who doesn't know how to fundraise, so you ran out of money, and then whatever else.
Joe's book *Ends* has this idea of a "crack of doubt," which he learned from Helen Rose Ebaugh's book *Becoming An Ex*, about her experience in life when she was a nun and decided she didn't want to be anymore. She talks about this first moment of doubt, and how other things came on that crack and put pressure on it until it became a fracture. When I speak to organizations, I try to identify what that initial crack was, and then ask what other pressures came upon it.
I think the work I'm doing is really about helping people craft a coherent narrative. That's usually what I give them—I give them a readback of what I heard in a way that's a little bit more narrativized than the way they usually convey it to me. If I have multiple people, like three board members, and they had some conflicts arise while we were talking, I might highlight those. I give them resources, usually links to things, and then suggestions of what they might want to do next.
It's been really nice to templatize everything and have things as simplified as possible. I had imposter syndrome at the beginning, when I thought maybe I should take some courses on something. But people usually say, "We can find a lawyer very easily, we can find an accountant really easily. What you do—we don't know anybody else who does this." So they've been pretty appreciative of the time and space.
*Do you ever see situations where maybe people are too premature in declaring the end? Have you ever found yourself wanting to say, "Maybe it's not the end after all"?*
I always go into the call saying, "I'm not here to call balls and strikes." When people sign up for a closure call, the options are: "we already closed", "we are closing", "we are in discernment around closing", and maybe "I'm just curious about closures in general."
Of the people that have reached out to me, less than half actually closed. I never tell people it's time to close or not. I'm not the Grim Reaper. I'm just here to listen and make suggestions of next steps they might want to take. Not everybody closes.
Another thing I recommend sometimes is a pause. I think many people aren't familiar with what an operational pause might look like, so I wrote a blog post about the power of the pause. Sometimes you just need more time to think about thinking, to think about *possibly* closing.
I don't do the work of saving organizations. When you actually are closing, you can come back, or if you want to think about it more with me. I keep my focus pretty narrow, but I don't tell people they should close or not—what do I know?
People seem to be tarrying between "Should I ride this all the way to the cliff?" or "Is the honorable thing to do this while we have cash on hand?" Somebody's going to be mad at you either way, but I put those options on the table. People who've closed something years ago—in hindsight, nobody ever says, "I should have kept going." People usually say, "It went on too long."
I'm sometimes surprised. Someone just wrote me today saying, "We're not going to close; we're going to see what happens." I was surprised because the person had told me they were personally sick of doing the work, which doesn't bode well. But what do I know?
*Can you say a bit about the practical things that people don't tend to think about but that are important to surface?*
My most popular blog post was one called "Towards Your 'Tombstone Site.'" That was about the idea of your website's final state being a tombstone. Having looked at countless websites of closed NGOs for my Museum of Closed NGOs, I notice common themes—taking down your mailing list, taking down your donate button.
I met with somebody recently who was so good about this. They'd had four locations and downsized and closed them all in this process of winding down. She'd already removed all the other locations from their online presence.
Consistent messaging across all your platforms is important. If your website says you're closed but your Instagram says you're open, get it together. If I don't see consistent messaging where they clearly say they're closing, I won't write about it in the newsletter. If they're not clear, I'm not clear. Into that vacuum of information comes hearsay and gossip.
Another important thing is communicating with professional organizations—if there are groups that year after year you sponsor their conference, or always send a speaker, or have a table—making sure they know you're closing.
Something really cool I've seen is people saying, "Don't donate to us anymore, donate to this other group instead." Delegating to another group you want to direct people towards is valuable.
Other practical things include dealing with organizational credit cards that will be cut off—pay those bills. I've seen some people pay their website hosting five years in advance. And then forwarding addresses, forwarding emails, that kind of stuff. The rule of thumb is generally that for a good ending, you need to have six to nine months of operating capital on hand so you can pay people severance and settle your affairs.
I was just talking to Jess Meyerson from Educopia, and as part of their process of sunsetting fiscally sponsored organizations, they usually find another steward to hold on to things for a while. When people can do that, that's really good too.
*Is there anything you wish was out there in the world that could serve as infrastructure for closure? It's always striking to me that the domain name system isn't really well equipped for handling projects that might still need to exist but nobody's there to pay the fee. Is there anything you've found yourself wishing was structured differently to help make this sort of thing easier?*
It goes back to the beginning of the intervention that Cassie had—operational funds for dignified closures are still super lacking. Philanthropy needs to understand that funding closures is part of pushing forward the missions they claim to have. If you just let these things fall on the ground, it's money wasted.
That's the big one for me: dedicated operational funds for dignified closures that will pay for people like me, lawyers, accountants, and facilitators who can come into your organization and make this as pain-free as possible. Funds that can facilitate these grief cafes or grief dinner parties, destigmatize the whole thing, and bring that from the moment they start funding you—saying, "We're here to provide wraparound for you and your organization from birth to ending."
That's most critical. And then, of course, an end to capitalism in general—more important than better philanthropy is a better system.
*Why the end of capitalism?*
I think wealth hoarding is at the root of so many issues. Half the organizations I encounter wouldn't have to exist if people weren't hoarding wealth and then requiring appeals to those wealth stewards for a small percentage of their endowments. It's artificial scarcity.
Looking at my colleagues in Europe and UK, the challenges they face are different because they have social infrastructure. A lot of organizations in the US stay open longer than they should because people depend on them for health insurance. Without capitalism, we could turn our attention instead to other problems that aren't man-made.
*You've mentioned that you like to build in the open and share your resources. Why do you operate that way? Why not treat this stuff as proprietary intellectual property that you only share with paying clients?*
That open ethos got into my head very early on. I've been tinkering with the internet since I was a kid. The idea of discoverability for different ways of thinking—I just believe in the open sharing of information.
Also, I don't want to be a bottleneck. When I worked at one tech company, I once managed a team that went from Seattle to Auckland, and someone would always have to be in their pajamas off-camera to join. The idea that you can grab these materials at a convenient time in whatever time zone you're in and move forward without needing me is a relief.
A lot of these ideas grew out of other people's thinking, and I'm putting my remix on them. I don't feel comfortable hiding it from people. I want to see more good endings. If I can do this for a little bit more time and feel like the needle has moved and more people are talking about endings—which I already feel is happening—I'll feel good, and like I've achieved a lot of things I wanted to do.
Less of that would happen if I was just like, "Click here for more information and add your credit card number." I'm a connector by nature, transparent by nature, and I want to keep growing these ideas out in the open.
I used to work with an organization called Question Copyright. They were into open knowledge, open tech, open culture. One of our flagship projects was Nina Paley's film *Sita Sings the Blues*, and it was cool to facilitate people translating her work into different languages, letting it be open source, people taking her raw materials and remixing them.
I'm not evangelical about open source, open tech, open culture—it's not the revolution, but the revolution can't happen without it. The information has to be there. I also honor that in any space there should be some sacred knowledge that stays internal. I don't think everybody needs to put all their business on a public-access forum, but I'm here to share and think through things in community with other people.
*Are there any earlier traditions that you find yourself drawing on in developing this practice? Legacies that you're drawing narratives or experience from?*
My work grew in part out of the work from Stewarding Loss. That loss lens is really valuable for the British context, because they're not supposed to be emotional and have that stiff upper lip. Whereas in the US, our paradigm is really about failure and success, and striving in a way that isn't always good for you to do.
I've been playing with this idea of a workshop of storytelling through weaving. My mother's family is from Ghana, and we have *kente* culture—the fabric that people weave with storytelling in it. People put stories into the fabric, and images together mean something.
In Hawaii, they have a mat called *lauhala* that they weave. During the cleanup after the fires on Maui a few years ago, people would come at the end of the working day and share their grief and woes on the mat, then take the mat to the ocean and shake it out to purge it.
Iona from The Decelerator said something similar—she doesn't want to be a "pain sponge" or absorber in the hotline work. She wants to purge the world of that grief and pain, to be part of the process of throwing that out.
The other weaving tradition I think about is the AIDS Quilt—people weaving together a story of what happened, and that being a place of gathering, naming and shaming, remembrance.
I've been thinking of asking people going through an ending to assign colors and threads. If red and orange are happy, and purple and green are bad, what colors are you seeing here? How are you thinking about how the ending went? Something about narrative, storytelling, and putting things in context is what I'm drawing on loosely.
There's another nautical metaphor I don't mention much because it's kind of arcane. It's the idea of "scarpering," which is intentionally running your boat aground because it will help improve the coastline, so the next boat that comes won't run into the same thing. There's something about the intentional ending of something that's really valuable—what if we do this early and intentionally, with the next generations in mind?
*What would a world look like that more fully adopted these kinds of practices of taking endings seriously? What kinds of things that aren't normal would be normal?*
I don't know if I can talk about the world more broadly, but speaking about organizations or people doing mission work: I think more ritual in general—more ritual around beginnings and endings, clear processes so it's not just about that one big ending but many little ones along the way. Normalization of ritual around departures and arrivals.
I heard something recently about a culture where, when a friend is giving birth, they have a little funeral for them because they're losing their friend as a single friend, and that friend is becoming mother-friend. They cry and mourn, then bury something as a totem, and come back and reintroduce themselves to this friend in her new form.
So more ritual, more commemoration of big wins, and more gratitude for people giving themselves. Especially in the nonprofit world in the United States, it's not very well paid generally, often long hours, and people are seeing and hearing horrible things, then getting up and coming back and doing it again.
I think more appreciation. And maybe even term limits, where people say you shouldn't stay here and do this too long. I had a friend in South Africa who was working with AIDS widows, and at a certain point she had to dismiss herself. She said nobody should stay and do this work that long because the stories are too sad and scary.
What it would look like if groups formalized this and said you can only do a certain kind of work for two years, and then we have a cooling-off period where we take you to a spa and pamper you to scrub those stories and trauma off you. Some way of having a Peace Corps-like tour of duty—there's value in staying longer, but danger in staying too long. Rotation and ritual are important.
Another important thing is breaking that connection between impact and longevity. Taking a step back, doing an assessment---*what are you proud that you accomplished?* --- and letting that be your contribution to the mission or the movement, understanding that the organization is not the movement is not the goal. If there's a place we're driving towards, how did you move the needle, how did you move the vehicle forward in valuable ways? Is there value in you stopping what you're doing now?
In America, we're in this teenager mindset kind of culture where people are always like, "I will never die and we are going to strive until we're all rich." I mostly work with people who are left of center, so I'm familiar with their concerns and values around holistic consciousness and dignified closures. I wonder if I went to the Heritage Foundation whether people would care, or if they'd say, "We should run it to the cliff because who cares, life is cold, brutish, and short."
I've started finding people who have been through closures or are going through them, and I want to destigmatize it. People come to me usually because they don't know who to talk to about closures. People whisper about it, and there's a stigma. It's like a scarlet letter where people are like, "Oh God, you're closing, don't come over here." There is a web of people who've been through it before and are going through it that needs to be woven. I've spent the last year and a half just finding other people and asking them to tell me their story of closing, or waiting for them to find me.
*How has your practice of working on closures changed over time?*
I started from a place of thinking it's about communication and archiving. I came with a very tech practitioner's mindset: how can we get your data, share your data, make it GitHub-able, or put it on Internet Archive? But over time, I started thinking less about data and the archival, and more about it being a relational thing. Another part of the work is honoring that the people that start stuff are not the people that are really excited about closing stuff.
I've been collecting closures I love and closures that were nightmares. I have them in my back pocket to share with people. That's really where it's at—telling people, "Once upon a time there were some people that did this, they nailed it, and here's what was hard about nailing it. And here's what was hard about failing at failing."
I've moved away from some precious idea of tech utopianism around closures to just saying closures are messy. Even a compost heap is messy and smelly. The work of tending that heap and deriving whatever is nutritious or beneficial to the soil is its own kind of messy, smelly, mysterious work that not everybody is going to be called to do.
At the same time, I kind it a little annoying how this language of composting is dancing around the left, because we live in an industrialized society where most stuff isn't compostable. Let's be honest. Bruce Schneier talks about data as a toxic asset.
In any ending, I try to help people balance the emotional aspects with the project management stuff. I think about who they were before they came to the organization, who they were in the organization, who they hoped to become in the organization—all the time aspects of it. And then the other practical stuff like forwarding email addresses and those kinds of details. Part of it is just like being a mom—"I love you, and also go to the bathroom before we leave."

View File

@ -7,7 +7,7 @@ approved: 2025-03-20
summary: "Drawing on many ancestral traditions and the experience of her own body, Asia Dorsey learns and teaches the pattern language of a healthy gut."
location: "Denver CO"
topics: [ancestors, food, health, indigeneity]
headshot: "/headshots/placeholder-headshot.png"
headshot: "asia_dorsey.png"
links:
- text: "Bugs Bones & Botany"
url: "https://www.bonesbugsandbotany.com"

View File

@ -1,13 +1,20 @@
---
narrator: Coraline Ada Ehmke
subject: Contributor Covenant
subject: Codes of conduct
facilitator: Nathan Schneider
date: 2024-10-10
approved: 2024-10-11
summary: "After widespread resistance to codes of conduct in open-source software communities, Coraline Ada Ehmke's Contributor Covenant became the most popular code of conduct in the ecosystem."
location: "Chicago, USA"
headshot: "/headshots/placeholder-headshot.png"
topics: [code of conduct, dispute resolution, gender, open source, organizations, software]
#headshot: "placeholder-headshot.png"
topics: [conflict, mediation, gender, open source, software]
links:
- text: "Personal website"
url: "https://where.coraline.codes"
- text: "Contributor Covenant"
url: "https://www.contributor-covenant.org"
- text: "Organization for Ethical Source"
url: "https://www.contributor-covenant.org"
---
*First of all, I want to begin with the question of how you how you prefer to introduce yourself.*

View File

@ -1,13 +1,16 @@
---
narrator: Amanda Kiessel
subject: Good Market
subject: Community standards
facilitator: Nathan Schneider
date: 2024-10-29
approved: 2024-12-16
summary: "Good Market is a digital commons for enterprises that prioritize people and the planet over profit. It enables communities to set and enforce their own standards for doing business."
location: "Sri Lanka / United States"
headshot: "/headshots/placeholder-headshot.png"
#headshot: "placeholder-headshot.png"
topics: [economics, organizations, ecology, standards]
links:
- text: "Good Market"
url: "https://goodmarket.global"
---
*I want to begin with the question of how you like to introduce yourself. How do you introduce yourself to somebody you've just met? Where do you begin?*

View File

@ -6,7 +6,6 @@ date: 2025-02-04
approved: 2025-02-11
summary: "Constructed languages, or conlangs, are the basis of a hobby, a science, and a community that now occupies a small corner of the entertainment industry."
location: "Wellington, NZ"
headshot: "/headshots/placeholder-headshot.png"
topics: [fiction, gender, language, open source, software]
---

View File

@ -6,7 +6,7 @@ date: 2024-12-13
approved: 2025-03-04
summary: "A diplomat for Bangladesh describes the role of protocol in high-profile international visits and treaty negotiations."
location: "Dhaka, Bangladesh"
headshot: "/headshots/placeholder-headshot.png"
headshot: "mosud_mannan.png"
topics: [diplomacy, government, friendship]
---

View File

@ -0,0 +1,199 @@
---
narrator: Bernard Mayer
subject: Mediation
facilitator: Nathan Schneider
date: 2025-02-07
approved: 2025-03-11
location: "Kingsville, Ontario, Canada"
summary: "Mediation developed as a professional field through experimentation and practice."
headshot: "bernie_mayer.png"
topics: [conflict, family, mediation, social work]
---
*How do you like to introduce yourself?*
I'm Bernie Mayer. I'm an emeritus professor of conflict studies at Creighton University and a founding partner of CDR Associates in Boulder. I live with my wife and dog, who might join us, in Kingsville, Ontario. That's probably enough for the moment.
*There's more to come, because I'd love to hear how you outline your life and career. You can begin wherever you like. How do you trace the beginnings of your interest in conflict?*
A second formative fact was that my father was a director of a residential treatment center for children in a suburb of Cleveland, Ohio. We had a house on the grounds of it, and that's where I grew up. So I grew up in a suburb of Cleveland, and went to Cleveland Heights High School, but I lived in this community. It was not exactly an egalitarian community, but it was definitely a community with a purpose. It made me feel different in some ways, in a nice way---though not always nice. It had its hard moments too. A lot of hard things happened there over the years. But on the other hand, we had a much nicer house than we would have been able to afford, and I had access to baseball fields and gym and swimming pool and stuff like that that a social worker's kid normally didn't have.
A third formative factor was that I was also, and you probably know the term, a "red diaper baby." I'll just leave it at that. Even though my father became somewhat conservative when he had to confront the sixties, I grew up with that consciousness. Then I was also a child of the sixties, and was very active in the civil rights movement, anti-war movements, peace movements. That was a big part of my identity. I went to Oberlin College, which was a focal point for student activism.
All those things were about conflict. In a sense, conflict was a unifying factor of both the bad things that had happened and good work that could be done. In the early days of teaching and writing---particularly teaching people to be mediators and conflict interveners---I used to say that I grew up as a teenager and young adult, knowing pretty well how to raise conflict, but not what to necessarily do once I had raised it. As time went on the initial answer was: get people together to talk and see what we could work out. But as time went on I realized, no, raising conflict is really important as well. It's almost in a dialectical relationship with doing something to move it in a more constructive direction .
I graduated from college in '68. I was facing the draft. I wasn't sure what I was going to do. My initial efforts to avoid the draft by applying to be a conscientious objector didn't work because they decided I really did believe in war. I thought, well, I don't know where this is going to lead me. But what would be a good thing to do during the period of time before I actually do get drafted? I was a child of social workers, and I liked working with kids. I'd done a lot of work as a childcare worker at this residential treatment center and as a camp counselor. So I went to social work school at Columbia in New York. Over the two years that I got my master's degree there, I received a very high number in the lottery, which meant I didn't get drafted.
Now I had a social work degree, and I worked as a child and family therapist at a drop-in center mostly for recent immigrants to New York, that sort of thing.
*At that stage, what tools were available for you for helping people through conflict? What was offered to you, what was at hand?*
There was nothing specifically framed that way. I was trained to be a therapist, and I was trained in a fairly Freudian agency---a sectarian one, the Jewish Board of Guardians, now the Jewish Board of Family and Children's Services. I feel like I had two kinds of trainings or learnings in my life, in grand systemic theories that sought to explain the world in their own way. I'm glad I got training in both of them, even though I ended up seeing significant flaws in both of them. One was Freudianism and the other Marxism. I guess Marxism and Freudianism are, in a way, training about conflict---class conflict and internal conflict. I reject a lot about those systems now. But it wasn't a bad intellectual discipline at that point.
*Was there a transition, then, from working in the context of agencies, working with who's coming through the agency, to a point where you realized you wanted to try to create some new practices or new frameworks?*
Well, I was struggling with it all along. I mean, this was a Jewish agency, and a good one, but it was running a program that was mostly for kids from the Dominican Republic but also some from Puerto Rico, Haiti, Costa Rica---and the agency hardly had any Spanish speaking staff at that time. They did have staff who spoke some Spanish, maybe one or two, but almost no one who came from the cultural background of the people we were working with. It didn't seem an appropriate system to me. I felt there was an elitist tone to the agency. The attitude toward staff seemed to be: how "we are the best, and you should really feel really lucky to be here." Nonetheless, I got some very good training there, and and an important side benefit for me was the staff union, in which I was very active, became a shop steward and a member of the negotiating team. In some ways, for my later career, that may have been the most important training I received.
So after working there for a year as an intern, and then for two years after I got my degree , and I received some good training and supervision, I decided I needed to leave. I also felt it was time to leave New York. That was maybe helped by breaking up with somebody who I'd been in a relationship with and being a little heartbroken about that. My brother lived in Colorado. I called him up and asked whether he knew of any ranch in the area that would like somebody to work there for the summer. That was really naive, I have to say. But it seemed like I needed a break from the professional path I had been on, and I didn't know whether I would ever go back to doing social work.
I ended up living on a collective farm with whom he put me in contact. I stayed there working for room and board over the summer, and I met Reggie there, my first wife, and Ethan, her then-two-year-old kid. I ended up living there for a year and half during which time I drove a school bus to bring in some extra money. I guess I was part of the "hippie" culture of those I've never really accepted that term, but my son Mark has insisted, "No, you were a hippie, Dad, just accept it." And then, after a year of being a school bus driver and a wannabe farmer, I was ready to do something else. I moved away from the farm after a year and a half. Reggie and I moved into a house in Boulder, right next to my brother's house. The two houses became the Juniper Street Collective---the place Mark and Ethan grew up in. I got a job in a program at the Mental Health Center in Boulder called Our House, which was a drop-in center for teenagers. Interesting---there's still a Facebook group of kids who hung out at Our House all these years later that I'm part of. Many of them are grandparents now.
I also worked on the adolescent team of the Mental Health Center as a therapist, as did Reggie. But my main identification there was with Our House, which was a kind of sixties sort of place that had some really interesting things going on, but some really poor boundaries too.
Then I was asked to run a methadone clinic, which I did for about a year and a half or two years, acting part of the time as head of the overall substance abuse program of the MHC (which included the Methadone Clinic, Our House, and several other program). This was part of a program funded by the National Institute of Drug Abuse money. This funding base was a problem for the Our House program because those kids weren't coming in to be treated for drug abuse, although some of them did have substance abuse problems. They were there to hang out in a supportive environment with friends, engage in a variety of structured and unstructured group activities, and receive various kind of counseling as and if they were ready for it. Working in the methadone clinic was a real learning experience for me. I was way too young and inexperienced to be the director of the program or even a substance abuse counselor, as most of us were in that program, but we did okay, I think. There were some really intense things about that job in terms of the trauma people were dealing with and the conflicts they faced and staff had to deal with.
After about 3 1/2 years in that job I was ready to be done with it. I didn't know what I wanted to do next. I had this ambivalent relationship to therapy and social work. I felt like I had something to offer, but it didn't feel quite like home in a way. So when Reggie finished getting her MSW in Denver, we both quit the MHC and traveled for about four months. We took a four-month trip through Canada and the US. Then Ethan went back and stayed with his dad, while Reggie and I went to South America.
When I came back, what was I going to do? I didn't really know, and my father was quite ill then. I spent some time with him in Cleveland. This would have been 1977, and then he died in December. Then I started looking for jobs. You can figure out the psychodynamics of this if you want---it kind of hits you over the head. I ended up getting a job as a team leader at a residential treatment center in Broomfield, Colorado, which in those days was called Wallace Village. Then I was appointed as the program director, which was like the clinical director.
But then once again my ambivalence about what I was going to do arose. I ended up having not the best relationship with the director, who was a behaviorist---and even though I wasn't a Freudian, I also wasn't a Skinnerian.
At the same time, I was involved organizing demonstrations being organized at Rocky Flats, a nuclear weapons facility. There I met Chris Moore, who eventually moved to Boulder, but was then living in Philadelphia. I met him doing nonviolence training in connection with the protests and sit-ins at Rocky Flats. He and I ended up doing a lot of training in peacekeeping and nonviolent civil disobedience. Anybody who was planning on joining the sit-ins at Rocky Flats had to go through a training that we conducted. When Chris went back to Philadelphia, I continued to e part of the team of trainers we had recruited. Later on, Chris moved to Boulder and for a while lived in the Juniper Street Collective. My meeting with Chris was critical to my future work a mediator and conflict intervention/
Chris had become interested in mediation, and with his encouragement so did I. When I left Wallace Village (by mutual agreement---although I think there was no way I could have stayed there any longer)---I worked part-time at a really interesting residential program called Forest Heights Lodge in Evergreen Colorado, about an hour's drive from Boulder. I also started a small private practice as a therapist and was getting training in mediation (mostly through starting to act as a mediator, but also as a mediation trainer myself). Chris and I had been offering conflict training to activists but also in a number of other settings--, for example prisons and social agencies, and Chris asked me to help him do some training for people interested in mediation.
*So your first exposure to conflict and mediation was more out of the social movement experience than the therapeutic experience?*
Absolutely. But there was also a movement building in mediation, and four of us ended up as partners at a place called the Center for Dispute Resolution in Denver, which became CDR Associates in Boulder, which still exists, with offices above the Spruce Cafe in North Boulder, on Yellow Pine and Broadway. That was my formal entry into doing it as work. We were trying all sorts of ways of making money, but then we got a grant from the Hewlett Foundation that allowed four of us---Chris, Susan Wildau, Mary Margaret Golten and me---to make our work CDR a paying job.
By then I was also doing a doctoral program at the DU school of social work, and I used that as a vehicle for studying conflict. I was studying conflict theory and conflict intervention. I was also doing a little bit of therapy on the side when a lawyer who I knew approached me to ask for my help. She represented a parent who was undergoing a termination of parental rights process because there had been serious abuse and neglect in the home. She needed an expert witness to testify for her client and asked if I would be that expert witness. I said, "No, I won't do that. But how about if I mediate?"
That just came out of the top of my brain, and she said, "What?" which was pretty much my own reaction to what I had just said. I suggested an attempt to mediate a voluntary relinquishment agreement between the birth parent, the foster-adopt parents, and the child protection services agency. It turns out that was a very innovative approach. So Mary Margaret and I acted as co-mediators and the parties worked out an agreement averting a formal trial and allowing the foster parents to adopt the child in question. After that I was referred a number of other child welfare cases. Mary Margaret and I then started a two year long child protection mediation project, which became the basis of my doctoral dissertation. This effort turned out to a significant foundation for a whole new area of mediation services---child welfare mediation is now happening throughout the US and Canada (and elsewhere). We were one of the first two places to try it, and developed an important partnership with child welfare services in Boulder and Denver's (including lawyers who represented agencies, children, and parents).
In this and in many other ways CDR took off--growing from literally a church basement operation to a well funded and recognized conflict training and intervention service. In order to survive in our early years, we basically had to take all comers because we needed the money, which meant we were doing a lot of work that we weren't specifically trained for. But neither was anybody else.
*Who were these clients?*
We worked in many different conflict arenas. We had a family mediation program. We did work for government agencies, teaching them conflict resolution for public processes, and we did some fairly large-scale conflict interventions. I did a bunch of organizational work---labor management, but also on conflicts within organizations. I still do that occasionaly. And we also ended up training internationally and helping set up conflict services in quite a few other countries. So things just grew that way over the years. Even though the Center for Dispute Resolution existed before the partnership formed, we really built it from a church basement bare bones operation, doing mostly landlord-tenant or neighborhood mediation. We did community mediation too and facilitated dialogues on public policy issues. For example, one of the more recent ones I did in Boulder under CDR's auspices was about the location of the homeless shelter in North Boulder.
*Yeah, that was a big deal.*
Still is.
CDR was starting to do a lot more work that required traveling---for example, over the years I did a lot of work in Eastern Europe, and then I also did a lot of work in Australia and New Zealand and Alaska. But when Mark was born in 1984, I started trying to develop local work with city government, state government, and county government.
So that's my journey. Fast forward from 1978--79 to 2002, when my first marriage ended. I got remarried to Julie and moved to Canada. I still was doing work for CDR, but by 2006 or so, I started thinking I'm far away from there. CDR was going in some directions that weren't my favorite---I used to joke (although there is truth in this) that when I couldn't stand the words "billable hours" anymore, I realized that I needed to move in a different direction.
So then I thought, well, maybe I could go out on my own part-time, but maybe it might also be time for me to have an academic home. In 2006, I got a nice offer from Creighton University, which had a grant to start a conflict program there--the Werner Institute. The guy who was the founding director asked me whether I would you be interested in doing some work with them. I said, "Sure!" And he asked whether I would consider being a faculty member. I said, "Well, I'm not moving to Omaha." So we worked out a deal where I worked half-time as a non-tenured full professor. I'd already written a couple of books by that point---I believe that's why they wanted me.
They would fly me in a couple times each semester for ten days or so, and I'd do some online work with students in between. They provided accommodation and transportation as well. It was a very nice deal which worked well for all of us. I did that for fourteen years, and then I retired from it because that program was going through changes. I was seventy-four years old by then.
*As you were getting started in Boulder and developing this practice, clients were coming in with challenges that you were never trained to deal with---nobody was. How did you start building up a practice, building up tools and strategies? How did you begin to learn how to mediate conflicts?*
I did eventually take some courses and go through some seminars, so I got some training, but a lot of it we were creating ourselves. It was a very creative period of time. And it wasn't just us---this was happening in the conflict field more broadly. The field had a lot of very interesting creative people, like John Paul Lederach. I went to a course he taught, and he went to a course I taught.
People were making efforts all to build the peace and conflict studies field in many places. The Harvard Negotiation Project was starting. There was some funding for community mediation centers that we were one of, but these programs took many different forms. There was the deliberative democracy movement, Partners for Democratic Change, Search for Common Ground, Accord, Resolve, the San Francisco Community Boards, and many other growing and innovative groups/ So we weren't alone in doing this. We were part of a growing literature and organizational base. There was also the National Conference for Peacemaking and Conflict Resolution, which was part of the peacemaking field that was growing too. It came out of a slightly different tradition, but we interacted a lot. The peacemaking field to a large extent came from the Quaker and Mennonite tradition. Actually, the Mennonites played a role in our formation---when we were still a church basement office in Denver, it was in the Mennonite church, and their volunteer was our first office worker.
Arbitration was also growing at that time, and there was a whole labor management side of this too. There was an organization called SPIDR---Society of Professionals in Dispute Resolution---and there was also\\ the Academy of Family Mediators with which I was also very involved.
A lot of creative stuff came out of what we did. If you're familiar with Chris Argyris or Donald Schön's work on reflective practice, that's kind of how we did it. We had approaches we taught, and then our actual practice (our "espoused theory" and our "theory in practice"). For me, it was a very creative process to see the tension between what I was doing and what I was teaching.
The kind of bible in the field of negotiation in those years---to some extent it still is---was a book called *Getting to Yes*. It talked about positional and interest-based negotiation, this idea that the way you resolve disputes is to get people to talk about the interests underneath their positions. There were two co-authors from the Harvard Negotiation Project: Roger Fisher and Bill Ury. Roger Fisher's been dead for many years, but Bill Ury still lives in Boulder. He's a wonderful guy. He's written quite a few books. He's a wonderful writer, one of these writers whose storytelling does the heavy lifting of presenting his ideas, and his book has been a major bestseller. But I came to believe it was overly simplistic and prescriptive. Position and interests are not that different in essence--it's more about how they are presented and how far we did into the reasoning and motivational basis of people in conflict.
I also remember how we taught active or reflective listening n our earlier years, and I always felt there was a lot of bullshit about that. No natural conversation really is that formulaic. These discrepancies between what we taught and how I at least really worked were at the basis of a lot of growth for me much of which ended up in books that I wrote and in the way I taught as well.
That was a way in which my own thinking developed. It was partly in response to what others were saying, and partly in response to what I had been saying that I didn't quite believe anymore. My favorite bumper sticker says, "Don't believe everything you think." I was noticing either my practice wasn't following what I preached, or my preaching wasn't following what I practiced, and in that tension was a great deal of creative space.
*Are there particular tools or patterns of conflict or techniques that you keep coming back to and keep finding truth in?*
Yeah, but they tend to not be things you do as much as ways of thinking. People always want you to teach how you do it---"I want something practical. Give me something practical." That is all well in good, theory and practice need to inform each other, but real growth comes in the maturation of our understanding of what we are dealing with in conflict and how can intervene in it in a productive way.
There are two things that I've really come back to over and over again. First, we do not really succeed in conflict by being neutral. In fact, the concept of neutrality is a very flawed one. That's why I wrote a book *Beyond Neutrality*, and another book, co-authored with Jackie Font-Guzmán, called *The Neutrality Trap*. Mediators often market themselves as neutral---"we're neutral, we're impartial, we're just here to help you." But we have an awful lot of values and life experiences that inform our work, and in most circumstances people want us to be authentic and transparent about that. One of the things I did not like about psychoanalysis, for example, is the expectation that we not put our own personality into the process.
People want that personality. What people don't want is for us to manipulate them. If we say we're going to help them work out stuff, they don't want us to power them into something they don't want. But they also don't want us just to sit by in the name of neutrality while people get run over.
I have learned over the years that my great ideas, when I'm in a third-party role, for how to solve a conflict are usually not such great ideas---you really have to trust people that they know what's best, and it needs to come from them. Not that I never have ideas, but I'm not the type of mediator who listens to everyone, gets opening statements, and puts people in separate rooms, which is how a lot of corporate mediation goes. You beat this person up a little bit, you beat that person up, you come up with something---no. I really believe people need to be brought together as much as possible and our job is to help do the hard work in conflict that they need to do. But that doesn't mean I'm passive.
The second thing is that we have to help people raise the level of conflict. If we just see ourselves as calming things down, helping people come up with some resolution, and avoid intensifying a conflict we are often papering over really important issues and contributing to often unjust or unstable status quo. While there are often times when what people want is to calm down a conflict and paper over the deeper issues,---a lot of times that's what people want and need, but a lot of times it isn't. Particularly in very serious conflicts, people need help in raising the more difficult issues, and they need help in saying what they are thinking and feeling in a way that is authentic but doesn't shut everything down. As conflict interveners, have to be aware of our own conflict-avoidant tendencies and so that we don't actually stand in the way of getting to the level of depth where the conflict actually "lives."
In fact, I think of our field as a field of conflict *engagement* specialists. One of the things I used to ask students is, before you ever know anything about a case, what do you see your purpose as being in a conflict? People can have all sorts of different answers. My answer was: I'm here to try to help people have the conversation they need to have.
*Right. You wrote about "staying with conflict."*
That's right. I also wrote a book called *The Conflict Paradox*, which is in some ways I think my most interesting way of looking at things---though it's probably the least selling of my books. A lot of what we're doing in conflict is helping people get past where they see things as in opposition to each other, and instead see them in a more dialectical way, as part of the same whole, like competition-cooperation, or logic-emotions, that sort of thing.
*I appreciate the way you talked about your interventions as being primarily about a way of thinking as opposed to, say, a system or a procedure or an algorithm. How do you impart to clients that way of thinking? How do you prepare them for entering into and maybe escalating a conflict in the way they need to? How do you take them from where they're first coming to you to a point where they're ready to engage in a more productive approach to conflict?*
There isn't a single answer because, for one thing, some clients aren't ever going to be ready. And I don't see myself exactly in a kind of didactic relationship with clients. But I think if I listen, if I'm there to listen for what's really important to them---and in the interactional space---it's going to come out. And the question is, do I shut it down or move it forward?
Sometimes you have to say, "What do you need right now in this situation? Not necessarily from me, but just what do you need? Do you feel you need to be heard better? Do you feel you need to understand better? Do you feel you need to be empowered in some way? Do you feel you need other people participating in this? Do you feel you need an advocate?"
One of the ways we can help people is to get beyond their belief that we are here to fix things is to take on other roles than third-party ones. For example, some of the most useful work we can do in many circumstances is as an advocate role or a coach. That's something I've talked about: the three kinds of roles we often play are system roles, third-party roles, or ally roles. Sometimes the best way you can help people is to be an ally. I remember Bill Ury saying he thinks that's true for some of the most important the work he's done in the international arena.
Even as an ally, you have to remain true to yourself. Once I was working with a university as they were dealing with some pretty intense student protests. I said, "I'm not here to help you put down student protests. You know my background. But I can talk to you about how you can interact with them." That got me into dealing with facilitating---co-facilitating, really---interaction between Jewish and Muslim, and also Palestinian students on campus (this was about 25 years ago).
I don't do a lot of formal mediation anymore. I live in this little town. I find myself getting into it sometimes, but I do a lot of consultations still, often in that ally role.
*How much do you see patterns playing out across conflicts that repeat themselves in conflict after conflict, as opposed to having to approach each one as a really distinct challenge with very distinct sets of strategies? How much about conflict, as you experience it, repeats itself as opposed to needing to be treated as always new?*
That's a very important thing to look at---the patterns of interaction, both between the parties and between you and the parties. I used to say, if I've tried something twice, and it hasn't worked, I better try something else. Even just asking the same question---I remember one time in a video somebody took of me during a demonstration, I could see myself not letting this go. I kept saying, "What do you think the other person's trying to tell you right now?" And this person kept projecting all these evil things onto the other person. I kept wanting to sah, "Bernie, will you give it up?" It was a real learning.
From case to case, there's always the question of whether people can listen, and whether, when people aren't feeling heard, instead of listening, they speak louder. I started realizing that, more often than not, if you want to be heard, what you have to do is listen better. And if you want someone else to be a little more straight with you, you have to be more revealing yourself. I'm not proposing that as a rule always, but it is something you see happening over and over again---that particular kind of communication pattern.
Another thing to look at over and over is what I learned in therapeutic workshops: looking at rhythms of interaction. So we've established a rhythm of interaction---you ask your question, I go on for ten minutes, then you ask another question.
Is one person doing all the talking? Does somebody get halfway through a sentence and the other person breaks them off? Is it like my Jewish family's conversation at a table, where nobody ever finished a sentence?
Those are patterns of interaction. Another pattern is the rhythm of emotionality. Something you also see over and over again is how quickly people rush to solutions. Sometimes that's fine---sometimes people rush to very good solutions very quickly when you think you really need to have a much longer process, and you don't.
I always remember an organizational mediation where there was a dysfunctional team of people, but the real problems were between the supervisor and one of the key staff members who had a lot of power in the team. They were really going at it, so we set a day aside for a retreat. They kept arguing about how they said good morning to each other.
One said, "I say good morning, and you never respond to me. You never even lift up your head." And the other person said, "Yeah, but that's because if I say good morning, you're going to feel you've communicated with me enough, and you go in your office, and I don't see you all day."
They went back and forth, and I said, "Okay, this is not what this conflict is about. We're not here to spend the day talking about how you say good morning to each other. What's really going on?"
When it came out---I remember it was very sensitive---but the very hard-nosed, hard-to-work-with person said, "It all started a while back when I had a seizure at work." And I thought, *Oh my God! She's prepared to be vulnerable here.* The supervisor had discovered her having a seizure, had dealt with it immediately in the break room I think, and called 911, and she got taken away, and they stabilized her, and it never happened again.
The supervisor had this narrative of "I was a hero. I rescued her." Her story, though, was, "I came back, and everybody knew about it." And the supervisor said, "Oh wow. I was really shaken. I guess I told some people because I needed to process it, and I am really, really sorry." The person looked at her and said, "Apology accepted."
I didn't do much other than to say, "What the hell is this really about?" And it only could have gone that well because they really were ready for something to change. But it does show, I think, the importance of sometimes saying, "I don't buy it. I don't buy the stories you tell." One of the things you do is listen to every person's narrative. In conflict, they don't seem to overlap. What you're trying to do is expand each person's story enough---the Venn diagram, if you will, of the story---to overlap, and then begin to have a different kind of conversation. Those are some patterns, I guess.
*One thing that stuck with me earlier is what you said about the systems that expect people to speak in particular kinds of ways, and how you want people to speak in their own way. That resonated with an experience I had with trying Nonviolent Communication in a relationship, and I found myself just policing the other person's speech the whole time, and it made everything worse. I'm curious how you are able to push people into a different way of hearing or speaking, while at the same time ensuring the process is really theirs---it's not pushing them into an artificial box.*
Yeah, as my kids have said from time to time, "Don't do that social work shit with me" or "that mediator shit with me." And I would feel that too. That's a problem. I think Nonviolent Communication has a lot going for it, and I think active listening has a lot going for it, but it's prescriptive.
In fact, for every person we interact with, we negotiate a communication pattern in a subliminal way, and there's power in that negotiation. You have to be aware of your own power, or you could very well bully people into doing something. That's another thing you always have to look at---power dynamics.
I don't ever think you should push people or pull people, unless you're really going to power over them and they're okay with that, and if their natural communication isn't so far away from your style. There are significant gender issues here, and there are significant cultural issues here. I spent a lot of my life having to work across different cultural lines. You can do it---I don't think you can ever work cross-cultural conflict with sort of the perfect match of the two cultures. You have to be aware of your own power.
One approach is to give people the communication problem to solve. You can't solve the problem yourself---it has to be a joint effort. And if it's a three-person thing, it has to be a joint thing. In most circumstances you can start out by being a good listener, but not always. Sometimes people have to say, "You've got to make yourself vulnerable. I've got to understand who you are better before I'm willing to engage."
Let me tell you another story. I did some work once, Mary Margaret and I, with a large Native American group and a large Fortune 500 company. It's written up in some book or other. The company had a big energy-producing facility on the reservation, and they had a lot of conflicts around it. We got called in because of questions about who got to control the complaints around workplace stuff---was it the state or was it the tribe? There were a lot of sub-conflicts.
We got called in to work with them, and it was very interesting because you had these suits from the Fortune 500 company and these very sophisticated negotiators from the tribe. We started out with a smudge ceremony and prayers, and you could sort of see that the suits were really used to having to do this, but they were eye-rolling---there was a lot of eye-rolling going on, even if their eyes didn't really roll. The tribe negotiators were very identity-based, value-based in their approach---what gives meaning to them, their dignity, and the dignity of their culture. And the language of the suits was all business-like: "Well, how are we going to work this out so we can each have predictability in our relationship? We can know how to plan." Whenever they spoke like that, the Native American group felt disrespected, and the people from the company, who were good people, were saying, "Yeah, yeah, we're trying to do all of that respectful stuff. We've got to talk about business, though."
I basically looked at them and said, "All right, here's what I think is going on," and I just described to them what I described to you. I said, "Is that right?" And I said, "I'm not here to tell you what to do about it, but I think that's what's going on. What do you think we should do about it?" And I did it with enough humor that they could laugh a bit about it.
*You helped them develop a shared meta-story about what was going on between them.*
That's exactly it. And it worked. I'm sure to this day it still is a striggpe, because I think it's a long-term relationship--- and they're probably completely different players, but the structure is still there. They probably still struggle with that.
*Have you had experiences where ideas or practices that you've developed have been used in a way that you were not comfortable with?*
I have, of course, seen people who I've taught or tried to mentor---I don't like sometimes how they're quoting me. But I used to say that the thing that really scares me as a supervisor or mentor is somebody who will do exactly what I tell them to, because that's not them, that's me. "What would Bernie do?" No, no, no! What would you do if you were really being your best self?
*Do you see lessons from your experience that you just wish you could share more widely, particularly as political conflicts intensify in the United States?*
I don't feel there's equal validity right now to all sides. I don't think that's the answer. I think that's a very liberal answer, actually---"you just have to listen better." And we're seeing that in the response to this election, which is, "Well, the Democrats just need to really listen." We heard that when Trump was elected in 2016. We're hearing some of that now, but it takes a little bit more of the flavor of "let's listen to the working class."
I do think the Democrats have abandoned the working class. But if you go up to a bunch of working-class people and say, "We just want to listen to you better," then you're being another elitist, white liberal. I think oftentimes the mistake we make in response to this is to think, "What can the Democrats do better?" In the face of really hard reactionary movements in the past---McCarthyism, or just racist movements all over---changes occurred not through parties but through building movements. I think that the most important question for me right now is, how can I help with that?
*Is it because movements sometimes take us deeper into conflict, because they escalate conflict?*
I have to think about whether I'd say it like that. I mean, I think that's more a tactic that movements have to decide. The subtitle of my last book, *The Neutrality Trap* with Jackie, is *Disrupting and Connecting for Social Change*. And I think that's more how I think about it now. Change happens---you have to disrupt the systems that need disrupting, but you also have to make connections. And the strategic question is, how do you do both? Or how do you do it in an effective way?
If you look at movements that have been successful like the civil rights movement, there was very calculated disruption that raised conflict. But there were also efforts to build coalitions and reach out to people who were ready to be reached out to.
If you look at the movements I've been part of in my life that have been somewhat successful, party politics was in the background. You voted---you voted for the people you thought would most move your agenda forward, but you didn't put all your energy there, and you didn't put all your analysis there. So the civil rights movement, the feminist movement, the environmental movement, the peace movement, the working people's movements---all put their energy into supporting candidates, but that was not their central focus. And I think that's a lesson I feel for this time.
I mean, I hope the Democrats do think about what they've done to lose their base so badly---although you can argue how badly it really is. And I hope they listen, and I hope that we work very hard to press ahead. But I think the one thing Trump really got right was that it's a systems problem, and that people don't feel the system's working. He got that, and he said it over and over again in different ways, and he's trying to disrupt the system now. He's doing it in a totally chaotic, counterproductive way, I think. But he got the problem right.
I mean, you can say, "Oh, look! Our economy is better than others in the world, look at employment." But people your age and younger have a hard time buying a house. The living standards of your generation are lower than my generation's was---first time that's happened in a long time. Something's not working. And we're not solving climate change. And we're not solving income disparity. Systems change means disrupting and connecting and building movements, and seizing opportunities and learning lessons, and licking your wounds when you have to.
*Is there anything else you'd like to share before we finish? I mean, I think that's actually a good, full-circle way to end---we started with social movements and end with them.*
The only thing I feel like when I talk like this---it sounds like I've got it all figured out, and I sure as hell don't. I'm sharing with you how I try to think about things now. It's way beyond me in terms of how we're gonna get out of the mess we're in. One of the chapters in one of my books is called "Optimism and Realism." And I think genuine optimism or even hopefulness doesn't work if you don't have any realistic basis for it. And we're facing that crisis right now.
If you don't maintain some optimism or hope for change, then you may as well just pack it in, and I refuse to do that. That's a lesson I've also learned in my personal life---my wife has struggled with cancer for fifteen years. So I guess I feel like this, too, shall pass.
I don't know how. I want to stay hopeful for change, and do my very best to do whatever I can to be a good player in that from where I sit now. But it has to be tempered by realism, by just how hard it is and how bad a situation we're in right now.

View File

@ -0,0 +1,208 @@
---
narrator: David Mayernik
subject: Disegno
facilitator: Nathan Schneider
date: 2025-06-18
approved: 2025-06-18
summary: "An artist and longtime professor at the University of Notre Dame's School of Architecture practices a kind of design that reaches across time and space."
location: "Lucca, Italy"
headshot: "david_mayernik.jpg"
topics: [architecture, art, urban planning]
links:
- text: "Personal website"
url: https://www.davidmayernik.com
- text: "The Meaning of Rome: The Renaissance and Baroque City"
url: https://www.edx.org/learn/humanities/university-of-notre-dame-the-meaning-of-rome-the-renaissance-and-baroque-city
---
*Your body of work includes oil painting, frescoes, opera sets, architecture, and more. How do you describe your practice, primarily?*
I would say I'm an architect only because architecture incorporates all those other things. If you say you're a painter, it's harder to pull architecture into it. Architecture can incorporate the other arts, while the other arts don't easily weave in architecture.
The people who were exclusively architects in the Renaissance in Italy were the exception. An architect was often someone who knew how to paint or sculpt. The Sangallo family—especially Antonio da Sangallo the Younger, who did a lot of palaces in Rome and was in charge of St. Peter's for a while—were thought of as architects. They came out of a woodworking tradition, and they weren't painters or sculptors. But most of the architects of the Renaissance were painters or sculptors first. Bramante was a painter before he became an architect, like Raphael and Leonardo—most people we think of as famous architects of the Renaissance were trained as something else.
Architecture was an extension of the other arts, and that had credibility because the fundamental skill that underlay all the arts was drawing. If you could draw, you could design anything. It was Bernini who said in the seventeenth century that architecture is pure *disegno*, pure drawing and design. Architecture is a manifestation of drawing more directly, but also in a more abstract way, than painting or sculpture.
Drawing is the thing that allows artists to migrate and do different things because it is conceptual. In Italian, *disegno* means both drawing and design, so beyond delineating it also means the ability to conceptualize.
*What does that mean for the relationship between the drawing and the building? Is the building just an expression of the drawing, which is the ideal form?*
That's a really hot debate. A lot of people lament the fact that, in the Renaissance, building became the execution of somebody else's drawing. The romanticized idea about the Middle Ages is that there was no such thing as the architect—there was a master builder, and while they could draw, they were building their own buildings. They were both the executor and the conceiver of the building.
In the Renaissance that process gets segregated into the person who conceptualizes and somebody else who executes. It's not that the person who drew the building didn't have experience with materials—every painter in the Renaissance knew how to paint fresco, which is basically working with plaster, what most buildings were covered with. Understanding plaster means you also understand the masonry support for the plaster. In the modern era, architects rarely get their hands dirty with any material participation in the building process.
*Is there a particular time and place where you center your practice?*
I don't want to say I live in the past—I'm very much a modern person—but I do think people were very good at what they did in periods in the past that I aspire to. I would like to be as good as them. I'm not interested in replicating what they did or living in the past. My life would be completely different if I lived even one hundred years ago; I wouldn't be married to the woman I'm married to. I don't want to return to the past. But there's a lot we can learn from it.
My happy place—as much as I love the Renaissance—is that I'm really a Baroque guy, because I was formed in Rome, and Rome is a Baroque city more than anything else. My way of approaching things comes out of the late seventeenth, early eighteenth century—a time when things hadn't gotten too ideological as they would with neoclassicism. Somewhere in there is probably where my natural hand is, my way of working.
*How did Rome teach you?*
I tell my students now—which is not exactly how it happened for me—that you can't learn from Rome. You can learn from the people who worked in Rome. Rome is this overlay of accomplishment and transformation over thousands of years. You can't take Rome and transplant it elsewhere. It's such a unique response to its own position and history. But you can learn from the many great architects who worked there. You can learn from Bernini or Raphael or Bramante.
There's a kind of romantic idea about *romanità*, a Romanness that you can bring to your work—a gravitas, a sense of seriousness, a weightiness that's very Roman. But there's a light, graceful side to Rome as well. You could take away a sensibility from Rome, but I think you can more directly, as an architect, learn from the architects, not from some vague feeling about Rome. I don't know how to take that and transplant it.
One of the things I tend to teach—which was controversial in my school—was that if you want to analyze something, you can only analyze something that was done intentionally. You can't analyze an accident or induce principles from a series of accidents, and a lot of what we have in Rome are accidents—things that happened without any design intent. The things you can actually apprehend and understand and learn from are the things that were done on purpose.
*As you're developing your practice in relationship to this place and its intentions and accidents, what kinds of rules or disciplines did you start adopting for yourself that, perhaps, other architects weren't adopting?*
When I was teaching at Notre Dame, a big part of the loose community of people who are roughly aligned with me—though we're actually more factionalized than many people understand—was a strong emphasis on urban design. By urban design, I mean the ways in which buildings play well together and contribute to something bigger than themselves, the making of streets and piazzas, the public realm.
One of the things I took away from Rome and emphasized when teaching was the role of buildings in shaping public space—that is one of their primary jobs. The role of buildings is to collaborate with other buildings to make public space. Unless you're building somebody's house in the middle of a field, anything in an urban context or even loosely related to an environment with other things around it has a responsibility to articulate and shape space and collaborate with other buildings.
*What are some of the ways that you do that, especially if you have buildings being built by different people at different times? How do you create the framework in which buildings collaborate around public space?*
If you're building in an existing urban context, the street system has already been determined, and unless you have some license to change how the street system works, your job is basically to reinforce that street system.
Creating public space in the American grid is challenging. If you want to create a plaza in an American city, the easiest thing is to remove one block of buildings and make it open space. Philadelphia has squares like that. Chicago has squares like that. One problem with them in terms of spatial definition is that usually the grid passes along the outside edges, making the corners kind of open. They don't have the same sense of containment with a closed corner that you have in European spaces, where streets often pass through the middle of the piazza. In Europe, you enter into the space rather than passing along its flanks.
For the TASIS school in Switzerland, I'm the master-plan architect, so I decide how the buildings relate to each other. If you're planning a campus, you have the responsibility and opportunity to organize buildings in ways that contribute to shaping space.
Some familiar campus plans include the college system at Princeton, Oxford, or Cambridge. The colleges are relatively self-contained, organized around a courtyard made by a grouping of buildings, like a monastery. They're all contiguous and collaborating in shaping a unique space. In that case the university is an accumulation of those colleges. A campus like Notre Dame is more like Harvard's, where it's an accumulation of individual buildings loosely organized around open quadrangles.
The TASIS Swiss campus is on a hillside, so it's really hard to connect the buildings and shape space in that monastic way. Because we're building it over time and the campus has evolved, it's an accumulation of discrete buildings that define and shape space, looser than a monastic model. The campus in Switzerland is more like a village.
I've tried—and it's actually been somewhat problematic for some people in the local planning department—to not make the Swiss campus look like there's a monotony of style. I've tried to particularize every building, give each their own unique character, but also respond to their specific type. The theater doesn't look like the gymnasium, which doesn't look like the library, so you can read the campus. As much as you want harmony between buildings, you also want special things to stand out or unique buildings to be legible as what they are. You can tell a church is different from a palace.
*When you're walking through the streets of a city—like here in Lucca—how do you see buildings interacting with each other?*
A city like Lucca is pretty harmonious. A lot of that happens in Italy because historically, people were building with a palette of materials that was constant over time. Masonry bearing wall buildings, mostly covered with stucco, are all going to harmonize almost by nature because of the constraints that masonry construction imposes on you—how big you can make openings, how many floors you can make a building. If you put a roof on, there are only so many ways of making eaves. There's a kind of natural harmony in most Italian cities, even if they're built over long periods of time, because the palette of materials was local and constant.
Lucca has a lot of brick because it doesn't have a lot of stone natively, while other cities are made more of stone because that was the indigenous building material. In the Italian tradition, brick is often just thought of as the structure, but the skin is stucco, and you can paint stucco any color you want. Historically those colors were earth pigments, so you have a natural palette that's already harmonized.
In Lucca, there's not the same kind of coordinated spaces that we have in Rome. Some of the great piazzas that I loved in Rome are designed to be coordinated. Lucca doesn't have that—it's kind of a looser gentility. The buildings are all polite to each other, but they're not all cooperating in an orchestrated way.
*When you're working in relationship to these traditions, do you impose particular constraints on yourself or on people working within your master plan? Is there a sense of accountability to the tradition? Are there lines you try to avoid crossing that another architect might not?*
I'm the master planning architect for the campus, but I'm also designing all the buildings, so I'm true to myself in that sense. The project has stretched out over time—it's coming up on twenty-nine years I've been working for them, and we're still not done yet. Their needs have changed too.
What has held the project together is the idea of it as a village. The actual form of the village has changed; we've done a variety of master plans, and we've resubmitted the master plans for a variety of reasons. The core principle isn't the form, it's the intent—the idea that it wants to feel like a harmonious village. The form is evolving and changing, and I'm evolving and changing with it.
It's been interesting. I've had to adapt. I'm designing buildings now that are different from the ones I had imagined before. It's almost like I'm working in my own historical context, which I'm responsible for. I'm responsible for negotiating with my own buildings, with different needs and purposes that I didn't see coming twenty years ago.
I've imposed on the process—and it's been a long struggle and we're still battling with it—that all buildings would be built in masonry bearing wall construction. I personally want my buildings to be made the way they appear to be made. Not all architects care about that. Most buildings on the Notre Dame campus for the last half century look like brick buildings but are really steel-framed buildings with a brick skin.
I imposed on the school that the buildings should be what they look like, masonry bearing wall. We've more or less been true to that, with some recent compromises that bother me, but basically the buildings are what they appear to be. That process is slower and can cost more, which means you can't afford to do other stuff like use fancier materials, or have more columns or carvings.
They're pretty simple buildings, and I'm prepared to live with that. I would like to do more elaborate stuff, but I made a choice that we were going to build these things in a solid, durable way, and I had to give up other fancier elements that we might have been able to do otherwise. That's the choice I made—not every architect would do that.
At the school, I've done frescoes on the outside of the buildings. The theater has an iconographic program, and so does the gymnasium, which I interpreted in a more ancient, holistic cultural way as a place where you form the whole person, not just the body. I gave the gymnasium an iconographic program, but not all the buildings really need that or merit it.
I would love to do a chapel or a church someday, because it's a space where all the arts can collaborate. I think architecture is limited in terms of what it can say rhetorically or poetically. In order to say something specific, it needs painting and sculpture, and not all spaces need that.
*How does working in a context like a school compare to religious spaces that you've also engaged in? How do you approach the craft when the job involves a church?*
What I've done is paint a cycle of frescoes in a historic church in Tuscany. There's a whole story—there was an amazing unfolding of events, a consequence of preparing the wall to paint a frescoed crucifixion; they discovered an eighteenth-century fresco under the whitewash, so we had to move the crucifixion. It resulted in a whole other series of paintings in response to the one that they discovered.
While I was painting the crucifixion, the people who took over the school where I'd studied fresco technique were restoring the eighteenth-century fresco. It was super interesting because the past was coming back to life.
*What was the exchange like with that older painting that was uncovered? How did it affect what you were creating?*
The chapel had an oil painting of Mary and John at the foot of the cross from the late seventeenth century. They were two canvases that were meant to be together, the same size, mounted in a simple frame with a seam between them, and mounted over the seam was a wooden crucifix. This church happens to be next to the Tuscan home of my Swiss client. She paid for the renovation of the chapel and said, "My architect paints frescoes, and I think you should have a painted crucifix."
I made a choice that I did not want to imitate the oil on canvas historical paintings. I would paint the crucifix in fresco so that it would not be confused with the historical paintings, but would also complete the narrative of Mary and John at the foot of the cross. I wanted to paint the cross on the wall with the canvases hung on either side, so it would function as an ensemble in two different media.
It was supposed to be at the end wall of the chapel. But as they were scraping down the whitewash on that wall, they discovered there was an eighteenth-century painting, an Annunciation. So then the Belle Arti had to come in and decide what it was and how important it was. We decided to move the crucifix to the middle of one of the long walls.
Because the church is dedicated to a local saint who was the evangelist of that area in the early history of the church—the third century—and his martyrdom happened on the spot where the church was built, I was going to have an oval of the martyrdom of that saint over the crucifix. Because we had to move the crucifixion to a long wall under a pitched roof, that wall was shorter, and I couldn't fit the oval over the crucifix. I decided to slide the oval down behind the crucifix, like a window, and paint a series of five ovals around the rest of the upper part of the chapel, showing the whole cycle of the martyrdom of the patron saint.
By sacrificing something where the fresco was originally intended, it actually sponsored the creation of a richer narrative cycle about the martyrdom of the patron saint. I didn't actually show the martyrdom itself; I used the crucifixion where the martyrdom would have happened in the cycle. On one side of the crucifixion is the moment when the saint and his companions are captured by Roman soldiers. The moment after is where his decapitated skull is set up as the site of an altar that then sponsors the church. We lost the actual martyrdom because I thought the crucifixion, the paradigmatic martyrdom, could take the place of that scene.
*What is the state of fresco painting today? Who still does it? Is it at risk of being a lost art?*
It was almost lost in the twentieth century. I got interested in it because of studying in Rome and wanting to paint and be an architect. I thought fresco was the perfect way to integrate the two. I knew someone who later became the Chairman at Notre Dame, an architect who dabbled in fresco; I asked him how he learned, and he said he read WPA manuals. During the 1930s, when they were trying to give work to artists and had artists painting murals in post offices and elsewhere, the fresco technique had sort of disappeared, so the WPA actually put out manuals on how to do fresco painting.
I found those manuals in the University of Pennsylvania Library, but I didn't really get it. Eventually I had the chance to study with a great restorer in Italy, Leonetto Tintori. He was one of the vehicles in Italy for continuing the fresco painting tradition. He was an artist who, during World War II, got involved with preservation of frescoes in Pisa and then made a career out of it.
The other conduit was an artist named Pietro Annigoni, who was a portrait painter from Florence. He got wealthy painting portraits, including the Queen of England, and then essentially dedicated the rest of his life to painting frescoes pro bono for churches. He trained a whole generation of people, and one of them is a guy named Ben Long, an American who went back to North Carolina, and has done a whole series of frescoes there. Ben Long is probably the most famous fresco painter in the United States.
There was a vogue for it in the 80s and 90s, I think because of postmodernism in architecture. I feel like it's fading away now—there aren't a lot of people that I'm aware of doing it. In Italy, there are some people painting frescoes, including some of the students of Annigoni's students.
There's a Russian artist who painted the dome of the cathedral in Noto, Sicily, which was damaged by an earthquake. When they restructured the dome, they hired him to paint frescoes of the apostles—over life-size, super realistic, very impressive frescoes.
Fresco was practiced all over Europe historically. Here in Italy people are very cautious about introducing new things into old contexts. It's one of those things that's just not thought of mostly unless you're recreating a historic fresco for some reason or you're allowed to reintroduce a fresco in a damaged historic context. Most people don't think about frescoes in new building projects.
The onus is on architects to bring it into the discussion, but most architects don't have training in that kind of thing. They're not figurative artists themselves—they don't think that way. I've hired myself to do them for the school in Switzerland. I bring them into my own projects, but a lot of architects aren't thinking that way. They're thinking about just getting the building built.
*How do you see the overlap between these traditions and practices and the institutional authorities that set rules for preservation? How do you relate to the rules they impose?*
It's a pretty intense discussion, and the fact that it's actually softened a little bit recently is interesting. Italy has a hang-up—it's not unique to Italy, but it's really strong in Italy: this fear of something they call *falso storico* or "fake history." Essentially, doing new things that look like old things and creating ambiguity about what really is old versus what is new. That is a modern art historical or preservation mentality.
We have it in the United States too. The Secretary of the Interior's guidelines for historic preservation also essentially mandate that additions to historic buildings have to be in a distinctly different style, which is a very modern thing. It's a kind of obsession with imposing the zeitgeist.
Williamsburg is an interesting case of rebuilding, but Williamsburg is essentially a fake—a recreation of a city that was virtually non-existent. But mostly there's an aversion to doing that. In Italy it has been very much frowned upon to work in a traditional mode.
Pietro Annigoni was called in to paint the frescoes when they rebuilt Monte Cassino, and they decided not to replicate the old paintings that were there but create new ones. Annigoni's style does not look old-fashioned. There's something very modern about his work. I think self-consciously he didn't want to look like he was painting neo-Renaissance paintings. They're figurative, but there's a dark, almost menacing quality to a lot of his paintings—like somebody who lived through World War II and seen the worst of humanity and just can't paint happiness. There's a dark underbelly to a lot of his work. I don't think there was ever fear that his stuff would be confused with historical paintings, so he was allowed to do that in the 1960s.
Otherwise, working in historical contexts and painting new frescoes—people would rather do nothing. I think that attitude is softening. I was recently asked to do a big fresco for a monastery in the Marche. We had to get approval from the local Belle Arti, and we did get approval because it wasn't in the church. It was in a space that was basically kind of neutral—a whitewashed, vaulted historical space that didn't have any old art that could be confused with it. It was a new thing.
I think anybody who does something traditional in art or architecture in Italy is often thought of as being a forger or a falsifier. Restoring instead really means that you have something existing to restore.
The guy I studied fresco with had a philosophy about restoration: if you have a fresco that's missing something, you do not fill it in—you plaster the wall and leave them unpainted. You do not fill in the gaps, even if it wouldn't take a lot of imagination to do so. He was rigorous about not replicating or filling in missing bits in frescoes. But I do not share that philosophy.
There is also a tradition in Italy that when you have a missing bit, you can fill it in if you're pretty sure about what was missing; but you're supposed to do it in a technique that's distinguishable—not in true fresco. Let's say you have a purple drapery. The Italian technique is what they call *tratteggio*—it's hatching with little fine brushstrokes. You paint red, blue, red, blue, red, blue, and your eye from a distance reads it as purple. But up close you can see it's a hatching technique, so that future restorers a hundred years from now can distinguish what was original from what wasn't.
*Why do you disagree with your teacher's philosophy about filling in gaps?*
Historically, no one had a problem painting what was missing, scraping off a damaged fresco and painting a new one. That's how we have the history of art we have today. Michelangelo's Sistine ceiling was painted over a decorative blue sky with stars on it. Raphael came into the Stanza della Segnatura, where the School of Athens is, and there were already frescoes that had been begun, but they got rid of them, and he was allowed to start from scratch and repaint everything.
That fear of the past being something we have to cherish to the point at which it becomes untouchable is a really modern idea. I think it's because we have ruined so much stuff. There's a fear now that all we can do is something bad—we're so afraid of our own interventions in the modern world that there's a deep cultural assumption that we're focused on preventing the worst. We're not really interested in encouraging or allowing for the best because we don't trust ourselves.
*We also assume there's a kind of discontinuity or break—that we can't understand what people were trying to do in the past because we are modern now, and therefore we have no ability to be in relationship to that tradition.*
L. P. Hartley said that "the past is a foreign country; they do things differently there." I think there's a problem with the idea of going back to the past. The Renaissance—even though it was a renaissance, which means a "rebirth"—was not a recreation of antiquity. They didn't do neo-antique buildings. They did new buildings using the knowledge of the ancient world as they understood it, but to make new things for new purposes. Neoclassicism is something different. Neoclassicism was really an attempt to recreate antique forms. Everything looked like a temple. The Renaissance didn't do that.
I think we have to have a richer conversation about how you can learn from the past without replicating it. To not learn from the past is to impose on yourself a kind of cultural amnesia that I think is quite destructive. We should be capable of continuity without being afraid of doing a bad version of the past.
I had a professor who was a famous architectural theorist, Colin Rowe—a major theorist about architectural form and urbanism. When I was at the American Academy in Rome, I did a project to fill in the street that leads to St. Peter's; historically, it had been two streets. I presented it, and Colin came to my presentation. He said, "Isn't the problem with doing this kind of architecture that all you'll ever be is a mediocre version of the past?" I said that no, the onus is on us. I don't think there's something in the water or the air that keeps us from doing things as well as they did. It's just that the onus is on us to be as good as we possibly can be—to learn as much as we can. I don't think it's impossible to equal the past.
A lot of modernists assume that the past is so great, they revere it so much that they won't even try because they're afraid of failing. There's a cultural assumption in our world that if you really value the past, it's so great you can't ever achieve what it did, so you should just let it be its own thing and we do our own thing. That's deep in our culture.
*With that in mind, how do you teach your students to develop an architectural sense in cities with many layers? How do you teach them to see a historic city and understand their relationship to it?*
You have to teach principles. You shouldn't teach students to be mimics. You want them to be analytical and try to understand how the thing that they're looking at got to be the way it is. From that, you can induce principles—you can look at a series of particular cases and try to discern what was operating behind them. Those are the things that you can then apprehend and take with you and apply elsewhere, as opposed to mimicking a thing and replicating it.
You have to be able to peel away all the stuff that you see on the surface and try to figure out what the architect was thinking when they first started sketching. Design analysis is design in reverse—you're trying to unwind the process and get back to what was informing it. If you can do that, then that's where you can take the process with you, not the product. That's a big distinction. It's easier to copy—copying is pretty easy, actually. Analytical work, and apprehending a process, is a lot harder.
*How much do students have to know about history in order to understand historical work?*
It's definitely true that you get better at it the more you know. At some level, when you're a raw student and don't know much history, all you're doing is a kind of reacting to what they see. It's my job to give them a little bit of a backstory.
My sense of what schools should teach you is how to continue to learn after you get out of school. Not a repertoire, not a kit of parts or some tricks, but how to learn. That's a lifelong process, and you get better at it the longer you do it.
The more you do things of your own, the better you're able to understand what other people have done, and so that kind of iterative back-and-forth between practicing and studying and practicing and studying makes both of those exercises richer and better over time. I'm still a student—I'm still learning stuff—and I'm better at learning because I've done more things myself.
*Is there a particular building or place you keep coming back to that exemplifies the traditions and creative practice you've been trying to develop?*
In Rome, I think the most sophisticated piazza is Santa Maria della Pace, which was all designed by one architect, Pietro da Cortona, but dealing with existing urban conditions that were imperfect. He tried to mask or transform them into something that is more whole and perfect and woven together. It's almost symphonic. It's this unbelievably rich dialogue between the church and the fabric of buildings around it. You can't extrapolate that or take that and transplant it elsewhere, but you can definitely try to do that kind of weaving and stitching of things together.
At the Swiss campus, it's a little more call and response. There are ways in which certain things in certain buildings talk to or say things to other buildings. In the gym I painted a fresco at the top of a flight of stairs that climbs about twenty-three feet; when you get to the back there is a loggia. The fresco I painted in the loggia is the Choice of Hercules, which is supposed to be this idea that he's visited by two female figures that represent virtue and vice. Vice isn't a dissolute life. She offers him a life of ease in the shady grove, but Virtue shows him the hard, rocky, uphill path to fame.
The rest of the hillside was the harder part of the campus to be built, and I didn't know if they were ever going to build it because it was challenging. So I have Virtue pointing uphill with a trowel, basically an admonition to the school to build the rest of the campus, the hard part. And eventually they did, within about ten years.
On the facade of the building at the top of the hill—I designed it and had somebody else paint it—there are two big cornucopias with this great bounty flowing down. The reward for the hard path of climbing the hill is all this good stuff that cascades down on you. When you get up to that building, there's a big arched passage in the stairway, and from there you look out over the Alps and Lake Lugano. It's definitely a reward for having climbed the hill.
I set up a dynamic and told the end of the story when I had the opportunity to do that. But mostly people don't know those stories are there. The students don't know it unless somebody reinforces it or tells them that it's there, as the current headmaster has done. It can be read like a text, even if not everybody has the tools to read it.
*What kinds of responses have you experienced to what you're trying to communicate in architecture? How do people respond to your work? How does it surprise you?*
I think people respond to stories. I had a great professor who taught me a design process but was also really big on the idea that architecture could be narrative—that it can unfold or tell stories—and I think people are really captivated by that. I think the extent to which you can treat your environment as a place that you can read, like it actually has messages—not every environment has it, somebody has to put them there. Most places have a history, and so there's a kind of unspoken story that's often the history of a place.
I do think it's one of our jobs, apart from making buildings behave well together, to tell stories in some way or to contribute to some larger story that our society wants to tell about itself. I think we're desperate for it, actually. We want to believe our world makes sense somehow, and I think we need that. Sometimes people have said you could read our Constitution in the layout of the National Mall and the disposition of buildings in the center of Washington, DC. I think the extent to which our environment, especially in the United States, could do more of that—it could be one of the things that gives us a sense of shared purpose and a sense of what we have in common.
We have enough in common that we can tell some stories. One of the things I get when I present the idea that architecture can be narrative is a lot of people say, "Well, we don't have enough shared stories that everybody could agree on." I don't think that's actually true. I think we have more in common than we think. Often it's the interpretation of our stories that we argue about. If we didn't have some shared principles that allow us to deal with each other every day—those are maybe the protocols, the things underneath who we are—instead of using them as partisan divides, we could be using them as ways of unifying us.
*You can imagine the stories in a village where everybody's going to the same places all the time and everything is marked with meaning—this happened there, this happened there. On the opposite end is this kind of fascist propaganda, which is like the looming building that's telling you exactly one story and you know what's wrong in some way. There has to be something in between.*
There's a difference between iconography and propaganda. I think, historically, most societies talked about who they wanted to be, not who they were. I don't know if you know the _Allegory of Good and Bad Government_ in Siena in the Palazzo Pubblico. It's amazing. It's sometimes called "The Allegory of the Effects of Good and Bad Government in the City." It doesn't really talk about how the government worked. It talked about the ideals that allowed the government to function.
In the allegory of good government, what seems to be a ruler—it's a guy who looks like a king with a sword—is actually *bene comune*, the common good. The ruler of the city is the common good. Through a whole series of connections, he holds a sword that is ultimately tethered to a rope that's being carried by citizens from the figure of Concordia, who's taking two ropes that pass down from the scales of justice. Concordia weaves the rope together and passes it on to the citizens, and the citizens hand it on to the Common Good.
Nobody's going to argue with that. Basically, social concord comes from justice, and it's conveyed to the authorities—who really are themselves just representatives of the common good—by the civic body, by the people of the city. We all want that. That's fourteenth-century Siena, but at some level that's how good, healthy societies operate today, I think.
So I think allegorical messages used to be more based on principles and values, rather than mandating particular kinds of behavior. They were basically shared senses of purpose, and they were aspirational. They tell you, "Here are the virtues, here are the things we need in order to be able to do this," but then the actual mechanics of governance—who knows if Siena ever was like that? They were obviously saying, "We believe this is who we are," but it was probably better than who they were, and it didn't impose anything on anybody other than a shared sense of responsibility.
We shouldn't have a hard time doing that today. I think everybody's too vested in the idea that we're slugging it, out instead of trying to figure out what we could actually share. Ultimately, iconography shouldn't be that mechanistic and specific—it should be more broad and general. You shouldn't be able to argue with the principles; if there's major dissent about the principles, something's wrong.
The statues of Civil War leaders—that's problematic because there is all kinds of stuff behind that was wrong. Whereas celebrating justice—who doesn't want justice? A statue of truth—we should all want that. If we didn't want a statue of truth, that would be a problem.

View File

@ -0,0 +1,216 @@
---
narrator: "Alinagwe Mwaselela"
subject: "Saving circles"
facilitator: "Nathan Schneider"
date: 2025-05-02
approved: 2025-05-04
summary: "The practice of collective savings and lending takes many forms, from women-led community finance to mobile-money software."
location: "Dar es Salaam, Tanzania"
headshot: "alinagwe_mwaselela.png"
topics: ["family", "finance", " gender", "software"]
links:
- text: "Jukumu Tanzania (X)"
url: "https://x.com/JukumuLETU24?t=A7YYfGJUZ3QVJfeh2dVgTA"
---
*How do you like to introduce yourself?*
My name is Alinagwe Mwaselela. I'm not from Dar es Salaam, but I live in Dar es Salaam. Tanzania is very big. It has over 25 regions, and I come from the one called Mbeya. Our tribe, we call ourselves Nyakyusa. I don't know if you ever heard of it. But it's a beautiful place. It's among the places where a lot of food comes from.
I'm in Dar es Salaam now. I did my primary school in Dar es Salaam, then I did my secondary school back home, then I came back again to Dar es Salaam for high school. For college, I went to a different region called Singida. So I did a lot of moving around. But it was quite a good experience.
For a while now I've been working with NGOs—civil society makes up about 80 percent of my life right now. I'm a community guy, always moving from one group to another group, from one place to another. I got this experience from working with different companies. I was employed back then in a marketing department.
I gained my whole experience and methodology of working with these saving circles when I was on a marketing team, because for me it was the easiest way to engage customers and to find an easy way to sell. You can come up with different ideas of how to engage them.
And now it's been about 6 years working with Jukumu—that's the name of the NGO. We've been doing so much in Dar es Salaam and around Tanzania in general. In Dar es Salaam, we work with different people in different districts and streets to get the best information we can from these people that we're trying to help or bring solutions to for the challenges they deal with in their daily lives.
Jukumu generally tries to build relationships between different communities to find solutions. We believe these communities face challenges because they don't know who to connect with, who's the best advisor, or who's the best teacher for what they need. So we create connections from one group to another to find solutions and engage groups with each other. These could be financial relationships or technical relationships.
*So you first encountered the savings groups as clients when you were marketing products, and you thought, "This is an easy way to access a group of potential buyers."*
Yes, exactly. This happens in a lot of developing countries, I would say, especially in Africa.
For example, back then I used to work with a company that had digital solutions. I was the marketing guy, the one meeting with these people every day, engaging them, explaining what the solution was and how they could use it. People would get excited when they received the solution, but it was too hard for me to ensure that solution would last to the point where these people were satisfied.
Sometimes, if I represent a company in a market or community, I don't know when a CEO or founder might come up with changes to the product the next day. That affects the community, but it affects me more because everybody knows my face in the market, not my boss or anyone else.
So I realized it would be easier for me to engage people by having them under one umbrella to make sure they receive the best products they're supposed to get. I wanted to ensure that if a product comes to the community, whatever was brought in was needed, and the community was actually satisfied with what we were trying to provide.
I got the idea from to create a network of groups. At first, it was just a marketing network—I would find different products that I knew these people liked, and I'd distribute the products and give them payment terms. They could pay by installment rather than cash, because I knew I'd find them in their group. The group would be the guarantor for anyone who wanted the service.
Then the NGO concept came to mind: we could have this umbrella that would protect the groups and make sure they get the best education and the best providers. We connect them with other groups, because they produce different things. We have groups of farmers, livestock keepers, and small business entrepreneurs.
So you can imagine, if we have farmers groups, we can get tomatoes from them and connect them with small business groups who can get the tomatoes under the supervision of the NGO. This ensures that nobody loses out and everybody gets what they're supposed to get. It's the easiest way for them to connect and be in a safe zone. They can produce, and they themselves can be a market too, apart from anybody else outside the community.
*And so these groups were already formed? Or were you helping form them as well?*
As you start working, you find groups that are already formed. Then you see their weaknesses, learn, and start to reform them and create other groups as you go on. I found some groups that were already formed, and then we started creating other groups depending on what people were doing.
We went to farmers and formed groups specifically for them. Before, we didn't have specialized groups of farmers—we would find farmers in various groups that were dealing with different activities. Then we started creating farmer-specific groups so they could benefit from working together—people growing cucumbers, tomatoes, fruits, and other vegetables. If they're all in one group as farmers, we can see what each person produces and then, as an NGO, we can ensure that at least 40% of what they produce reaches the market, as part of our effort to help them reach their targets.
*Did you grow up in any of these groups? Were savings groups like this part of your upbringing or family life?*
Yes, my mother used to save in one of the *chamas* she belonged to. I would see her struggling, and after every certain number of days she would save a certain amount in the group as a form of security or insurance for anything that might happen. So I've seen that lifestyle in the neighborhood where we were living, and I've been in some of these groups myself. They are all over Africa. I've been to Uganda and Kenya and seen they have *chamas* too.
*Tell me more about how these work—how the one your mother was part of worked, and how the ones you've been involved in work. What does it feel like to be part of these groups?*
Generally, in Tanzania, I believe about 80% of women are in groups. This includes rich women, middle class, or poor women—they're all in groups, though what they do varies. The experience has changed with time and technology.
Back then it was different. I remember seeing some of my sisters in chamas. These chamas differ in how they set their targets. For example, my sister used to be in a chama where the target was saving for just one year. At the end of the year, they would distribute all they had saved. While they were saving, they would give members opportunities to get loans from the savings. That could be the first business of the group—the interest paid on top of the loan benefited the group. At the end of the year, they would share that profit with all who had been saving.
The profit at the end of the year would depend on how much you had been saving. The more you invested, the more profit you'd get because your money had been rotating through many hands, as people asked for loans from January until December.
They used to have these small books—I remember these books were full of marks. Not everybody in these groups knew how to write back then. So they had these books where they would just put a mark to show "I've paid today." It was like a counting book that showed how much you had invested and how much you could expect by the end of the year.
Every time someone would go to save money or receive money, they'd have to go with the book to mark that they had paid or hadn't paid. They used to have this big iron trunk, and that trunk kept the books and the money. That was the bank. After marking, all the books stayed there to make sure nobody could mark anything until the next meeting.
Sometimes it happened that someone stole the books, or on the day they were supposed to get their money, they found there was no money in the box. They trusted the chairperson and the secretary of the group, and they normally even had an accountant. But none of it was as transparent as they are today.
Some groups work smoothly, some have faced challenges. But that was the experience back then. Now things are changing. Now we have different practices in these saving circles.
For example, in Tanzania we have a concept called *mchezo*, which means "game" in Swahili—so we call it "money game." What they do with the money game—now that people are afraid to have a box that somebody might steal or misuse—is that every day, let's say in a group of 20 people, each person saves 1,000 shillings. That means 20,000 shillings total, which they don't keep in a box—they give it to one member of the group. So every day, someone is getting money from all the others. It's a rotation of money.
This depends on the priorities within the group. They know what's happening with everybody—who needs to pay rent in two months, who needs to pay school fees, who needs to buy certain things. So you put your name on the game list for the dates when you're sure you'll need the money. With 20 people, it will be a 20-day game. After 20 days, it rotates back to the first person. It continues like that from January to December.
That's the solution these people have developed to address the challenges they faced with using the box. They're trying to reduce the work they were doing before. Who do you trust to keep all the money? The box stays in somebody's home, not in a bank. Something might happen—somebody might have a child who runs away with the books. So these people are trying to create solutions.
Now, beyond just the box and the game in this saving circle, we have groups who invest money for bigger investments. For example, at Jukumu we have communities with 30 to 70 people. With technology, they don't use books anymore—they might use a bank, mobile wallets, and different digital solutions to accumulate money.
The money they accumulate is for investments they want to make. Let's say a group wants to buy materials for catering, or they want to do different activities requiring capital investment. They might accumulate money for two years, and then open a small business. They could be tailors or anything else, and then they create a way to share profits monthly from what they earn in that investment. So it could last for a long time while continuing to produce income, rather than just distributing everything at the end of the year.
*Are these contexts where people don't have access to banks? Or is do people find there's something better about saving this way? It sounds like a lot of work and management. Why not use banks?*
One thing I've found in these saving circles is that many people don't have knowledge about banks, even though they see them. They don't have financial education. They don't know the value of money or have any education about loans. For them, a bank is a scary place.
The *chamas* are how they've become accustomed to doing what they need to do. We do have groups that use banks and find it fine, but not many groups use banks. We're encouraging our group members to use banks for convenience. We have a monthly fee that these groups pay to the NGO as a membership fee because we provide them with knowledge, seminars, and different products. What we've come to understand is that it's mostly a lack of knowledge and education. They don't know about banks or many of the financial services they could access for savings and money management.
*How do the groups compare between, say, the groups your mother was part of when you were growing up as opposed to the groups of farmers you mentioned who are running businesses? Are they very different, or are they basically the same kind of structure?*
I don't think they differ a lot. The main difference is the technology they have now, and probably they have more knowledge. Back then, my mother and others didn't have smartphones—they didn't even have phones. So things were quite different, but in terms of how they engage and how they operate, it's almost the same. They're still Tanzanian, so they still have that kind of formula—there's a formula that doesn't change. You can tell this is Tanzanian.
*Let's talk about that formula a bit more. What kinds of skills and knowledge go into that? Because in my part of the world, people do not know how to do saving circles—that's not something people do around here. If people started, they wouldn't know where to begin. What are the skills that people have in these communities, that your mother had, that makes them feel like they know how to get these things going? What specifically are the everyday life skills that enable people to run these groups?*
I was surprised when I started working with groups in Tanzania. One of the biggest challenges is that people are very far from technology. I don't think they're afraid, but the education level and awareness are quite different. Tanzania is quite different from Kenya when it comes to how people engage with technology and change.
These groups, from my experience, mostly started with women. Women were the special group that initiated this, especially because in the community, people didn't have time for women. It's like people didn't try to engage women in direct control of financial issues, as they used to engage men. You can see even in education levels back then—most young boys went to school, not girls. Girls didn't go to school. So we had a lot of sisters and mothers who were just farmers, far from all kinds of access, far from bank awareness, far from technology.
What happened is that these women started to form their own groups to save what they got from their men. If a man left 10,000 shillings for household expenses, a woman might take 2,000 out of that 10,000 and save it in her group without her husband knowing. It was confidential—men didn't know their wives had groups where they saved money, because many men didn't want their women engaged in any financial issues. So many of these groups were due to women's efforts, especially in Tanzania.
Communities in our society that are very far from services like banking had to find ways to save and have some insurance for what might happen. They formed their groups. It's like the point where all these people who are missing everything they're supposed to get found a solution. It's like they're small banks. We call them VICOBAs—Village Community Banks.
People started these because they found themselves very far from all aspects of technology they were expected to access. And I don't know why, but even today, technology doesn't flow as it's supposed to flow to reach the people who need to understand it. It ends at a certain level and doesn't go down further. So certain groups of people enjoy the benefits, but not everybody.
It's still hard to engage with digital issues in Tanzania directly. You need to put in a lot of work, go to many places, train people extensively because many don't know how to use basic digital tools. Someone with a smartphone might not know how to create their own email address. These are things that should be easy to understand, but they're not.
The level of education of these people is not that high, and their engagement with digital aspects is not that strong. So they've created their own way to save, their own banks that they can turn to when they're in trouble or when they want to do anything.
They've seen this from government employees. In Tanzania, we have many government employees—about 70% of working people are employed by the government. These government employees get health insurance, some get property insurance, they get social security funds from the government. So people have learned the concepts from these employed people—they can get insurance too. But for those who aren't employed, who have small capital, who sell vegetables by the roadside, how do they create their own insurance? How do they save for unforeseen issues? How do they save to pay school fees next year or to pay rent?
They don't use banks. The first people to use banks in Tanzania are those employed by the government. So the first experience any Tanzanian has with using a bank is either when they're in government office, employed somewhere, or in university getting a government loan. Most Tanzanians only open a bank account when they're employed. Before that, nobody uses a bank.
People now use mobile wallets because everybody has a phone, so it's easy to use mobile wallets. But if you count people living in the streets who aren't employed, 80% will say they don't have a bank account. And if they do, they don't know how to use it—they might just have a bank account because a certain bank came around and made them open a free account. So they got a bank account but never used it because they don't know how to use it or the advantages of using it. The only group that knows about bank accounts are the employed, university students, or those doing very big business who need a bank to get loans. Apart from that, the rest of these people use mobile wallets, and some still save in their groups.
The best ideas these people came up with were while trying to ease their lives in light of what they saw employed people doing. It's like they're trying to establish their own lives compared to employed people—to reach the same standard of life. "I can have insurance too with my group. I'm very sure that in case I need anything, I can just go there and ask for a loan, and nobody will say no because that's my group and I'm a member who normally saves there." It's the same thing as a government employee being sure to get a loan from a bank because the bank sees the salary and can easily deduct payments. For others, their saving groups provide all of what they're supposed to have.
*Do you think of these groups as being very old, going back many generations? Is this something that people have done in these communities for a very long time?*
I've seen groups that have existed for 20 years, 15 years.
*I mean many generations—is this something your great-great-grandmother was doing?*
It could be, but I'm not sure. If I go back to when Tanzania gained its freedom, the first thing our late president introduced was similar to what China and Russia tried to apply—a communal system where everything was owned by the community. Everyone had to work, and everyone ate what they collectively produced.
I think that was the method the government used for government farms and industries. They created communities where everyone earned the same amount—nobody earned more than anyone else. It was a style introduced by the government back then to organize people to work and trust each other. Nobody was above anybody else, only the government.
The rest of the people working there shared what they got out of what they produced. You could easily get help within your community if your child had an issue—anyone in the community could help because everyone was on the same level. So maybe this comes from back then, from how people would work in groups—as farmers or whatever, but working in groups rather than individually.
This has evolved with the changes in technology. And now, with capitalism, it has created boundaries between those who know and those who don't. The people who don't know, in order to achieve what they need, have started to use the same formula—using the energy of their own community to create wealth, safety, and insurance for everything they need.
*Does technology make anything harder? For instance, if you have the money in a box in somebody's house, you have to trust that person. You know who's keeping the money, and that trust maybe helps strengthen the group. Is something lost when you can just rely on a mobile wallet? Do you lose some of the trust that might be important to these groups?*
From my experience engaging groups with Jukumu, I don't think technology makes things harder, except that people don't know the technology. They don't have the knowledge, so they just operate based on what they believe in, what they know, what they trust. It's not that they don't believe in technology, but they don't know how far technology can assist or support or benefit them.
If they get to know, they'll move to technology. We had groups that didn't use technology for financial issues, and we went through many challenges because we'd find the chairperson and secretary conspiring to take the balance, and no member would know exactly what they had—they only had trust. We might all know where the secretary lives and meet at the secretary's house every 10 days, but we just trust that the secretary will keep the money. We're not sure, but we trust.
If something happens, it brings them to a different challenge, and they start looking for a solution—which could be a digital solution. We speak with them and try to introduce different solutions. The good thing is that now many of the mobile wallets in Tanzania have features that can help saving circles save using the wallet. We have different solutions that groups or families can use to save, and everybody will know what's happening—if anyone deposits or withdraws, every member gets a message.
We have these kinds of solutions now, and many groups are turning to technology. I don't think it was that they rejected technology—they just didn't have a chance to experience and understand how far technology could take them. This has become very beneficial for the NGO, because we were lucky to partner with an organization that works in digital solutions. We can easily do pilots in our community, see how they work, and then develop solutions. We're trying many pilots to make sure people understand that with technology, we're saving time and reducing risks they've been struggling with. Now we have groups that have saved a lot of money in their wallets, and things are going smoothly. They're coming to understand.
*So the mobile wallets that most people use now have features for saving circles built into them?*
Yes. For example, two days ago I had a meeting with CRDB Bank, one of the very big banks in Tanzania. They now have the CRDB Foundation, and what this foundation is trying to do is bring in the saving circles. They have a project called Mbegu, which is a Bantu word meaning "seed." They're trying to help saving circles start and learn how to use a bank—what money is, what loans are. They give them this knowledge, and after they understand, they give them a chance to get what they call *mbegu*. It's not really a loan because you don't pay interest—you pay operational fees and such.
What I found is that banks in Tanzania know there are many saving circles, and they're missing a lot of customers because they're just dealing with employed people. They know these motorcycle taxi drivers, these small food vendors selling in the streets—none of them use banks. They all work in their saving circles. So now CRDB is trying to find these saving circles and bring them into the banking system. They don't even care if these groups are registered or not, as long as it's a group. They find ways to train them, encourage them to register, and work with them.
That's why we had a meeting with CRDB—they want us to connect them with groups. They know there's a lot of money they're missing from the community. Almost every digital solution now has features that these saving circles need. It's like a wake-up call—saving circles are a very big thing in Tanzania, and banks and mobile networks are rushing to invest in them.
*Have you seen these groups be taken advantage of? What are some things that can go wrong?*
A lot can go wrong in these groups. First, you should understand that the people in these groups often don't know the risks of many things. They might not even know the risk of using a different Gmail account on their smartphone. You need to have accurate information from these groups to be sure that if they want to invest in anything, it doesn't go wrong. You need to be sure because many of these groups have people who didn't go to school, who don't understand the risks—like, if I lend you money and don't know you, you could just run away with it. These are people going through hard times every day, so they have many challenges. So the first thing we do is educate and find the best approach for the community.
We had a digital project that's still ongoing in one of our communities, which has almost 120 members all living in one district. We've created our own community currency called Nyota, which means "star" in Swahili. They're using it for payments within the community—it only applies in their community.
Before, they didn't know how to download or install applications. They didn't know the risks of having different Gmail accounts or someone knowing their Gmail password. Now we're trying to change that, and after two years, we're seeing it's working out. But it has taken effort for two years to get these people to understand how to use a smartphone—not just applications. The most they could do before was WhatsApp and social media. Everyone can use social media, but they didn't know how to benefit from technology in other ways.
Now they see the difference. With just their smartphone, they can have a digital token, they can convert it, they can get normal currency. This is new for them, and these people didn't go to school to understand what a digital token is—it's just a lifestyle and experience they've gone through every day. Now they have shops in the community where they can buy things using their community currency.
With these saving circles changing from traditional methods to moderm technology, it has brought something different. Now we know at Jukumu that if all of them understand how technology can change or increase their production level, nobody will go back to the lifestyle they had before.
*What does creating a community token enable them to do that they couldn't do otherwise? Why is that technology useful in these communities?*
We've tried this in just one district out of all Tanzania because it's too hard to engage widely. We started this as a pilot, but now it's working and has become a lifestyle.
First of all, it gives them an easy way to purchase things at a lower price compared to what they would pay using the local currency. With regulations, we're not allowed to use tokens directly for payment freely—Tanzania doesn't have regulations allowing that. But what we're trying to do is use the digital community currency as part of payment as a price reduction.
We've given a value where one Nyota equals 1,000 Tanzanian shillings. In the community, we have people selling different things. We've connected community businesses with every community member so that if you're a community member buying rice every day and you decide to buy from another community member, you'll save 2,000 shillings on each kilogram. So if one kilogram is 4,000 shillings, when you're buying in the community, it will be 2,000 shillings plus 2 Nyota.
So 2,000 shillings plus 2 Nyota equals 4,000 shillings, but they find it easier to pay 2,000 shillings. I don't have to pay 4,000 if I can pay 2,000—I can save 2,000 and use the Nyota to cover the other 2,000 that I have in my pocket. For the person receiving the 2 Nyota, it counts as 2,000 shillings. They will use those same 2 Nyota to buy something from a different community member or from the same person who gave them the Nyota.
It engages them all in one community—it gives them an incentive to receive regular customers because now a community has 100 members, and everybody wants a discounted price. Everybody wants something that will be easy to afford.
It has increased relationships in the community—everybody knows everybody, everybody knows where to get cooking oil. If I go to a normal shop to buy cooking oil, I'll spend 5,000 shillings. But if I buy from a community member, I'll spend 2,000 shillings plus 2 Nyota. It creates the understanding that if I am your neighbor, there's a way I can help you, and there's a way you can help me if we are in one community. You might have rice, I might have corn flour—we use corn flour for making *ugali*. If you have rice and need to buy corn flour, you come to me and pay 2,000 shillings plus 2 Nyota.
The 2 Nyota you pay is the key to our business, to our cooperation, to our engagement. This tells me that I have to come back to you again to buy, because I have nowhere else to spend this Nyota except with you. And if I spend with you, that means I'm giving you the same Nyota, plus whatever other amount I'm supposed to pay. The good thing is, it will be less compared to what I would normally spend. But it doesn't affect anybody's balance, because I'll still have some change. You'll have the Nyota, but when you need to buy something, you come with the Nyota to spend, so you save your money as you spend on me, and I save mine as I spend on you.
It increases the value of the Nyota because now everybody needs to get Nyota. And how do you get Nyota? Either you do business, or you attend the community meetings, because that's when we scan and create our own tokens.
*So participation in the community is how issuance happens?*
Yes. I don't know if you've heard of the Encointer Association from Switzerland. It's a blockchain platform that mostly tries to enable a community token or community economy by creating business circulation and cooperation. People learn the value of money through that—they learn through the value of doing business with each other, so nobody misses out on business every day. If I'm selling anything, I might get 2,000 or 3,000 shillings a day. It will never happen that I end the day without doing business because there are 100 members in the community, and everybody needs to eat. If they don't eat, they might use a bike to go somewhere. They might go to the salon—we have members who run salons. They might need to buy charcoal or cooking gas. These transactions are always happening because that's daily life.
We believe if we find solutions for these daily needs and daily spending, we're giving people a chance to save more and be more active in their groups. That's why this is famous where it's happening—it's a very popular project.
*How much do you think people's willingness to participate in this new technology is because of their experience with the saving circles?*
I think that was number one, but number two is it wasn't easy to engage these people in this kind of technology, for them to see the value of cooperation or the value of working together. We did research before in the location where this project is happening, and many people in that community didn't know how to bring money into the community. If we want our community to be safe, we need to be sure that we'll eat comfortably in our community. Everyone should be able to help others in the community. People need to be sure they can afford to buy food, go to the salon, and do whatever they need to do daily. This gives them an opportunity to save more.
Before, nobody understood how this would benefit their community. I remember we started with only six people in the whole community, and then from six, only two remained. It was a journey. But people came to find out that the people in this community—the few we had, six to ten people for almost four or five months—had created businesses covering everything they needed every day. So others became curious: These people in this specific community have a very easy life—they have everything in the community, they can easily buy and sell to each other because they are both buyers and sellers. What I'm selling, you don't have, but what you're selling, I don't have, so I can sell to you, but tomorrow I'll have to buy from you.
So we created a situation where people could understand that if you're in a community, you can have everything you all need. You don't need to struggle—you can just tell somebody what you need, and then you can get it the next day. With that particular knowledge, people started to understand.
After every meeting, they would see people leaving with packages. "How much did you spend?"
"I spent this amount and this many Nyota."
"But you know I spent 15,000 shillings to buy that sack, and you spent 10,000 shillings plus 5 Nyota. So you saved 5,000 shillings."
That kind of pattern motivated the community. You can easily do business if you're working together. So we had different events, marches—marathons to educate people and bring knowledge. Luckily, now we have about 120 members, 70 active members, and they meet every 10 days.
Now it has become established. With this, we've introduced a digital currency that's very famous in the community called Kusama, which is on the Polkadot blockchain. It has become another big thing in the community. Now people know how to send Kusama. People are paying with it. Someone will Google how much one Kusama is worth today compared to TZS or USD, get the amount, and use Kusama to pay for anything they want in the community because they know Kusama is real money.
Now they have wallets on their phones. They can download wallets and easily connect them. None of this existed two years ago—people didn't know what a private key or mnemonic password was. People didn't know what a public key was. But now everybody is saying, "Send me your public key," and someone just sends you a public key.
These people enjoy technology when they decide it's the best thing to use. Now everybody wants to be involved because they like the experience. They see how it helps their lifestyle. It gives them something new they didn't have before, and they didn't pay school fees to get it—they just had to be in a community and work together.
*What lessons have you learned building these different kinds of groups—the savings groups as well as the currency communities? If somebody else came to you and said, "I want to do the same thing you're doing," what lessons would you share?*
You need to have a very contemplative mind. You don't have to rush anything. It's too hard to change people's perceptions—to make them understand this could be a solution to what they've been struggling with for the rest of their lives. One of the very big challenges is that you're dealing with different people who don't know what exactly they're looking for. These people believe they have everything they need—they have their lifestyle, they still eat, they still do what they're doing.
So if you go to this kind of community and you're trying to do this, the first thing you should understand is that these are different from you. What you're thinking might be a solution at the time will not work unless they come to find that it is a solution for them.
The rest is easy to catch up on. These are human beings too. There's the part of being a friend—you need to have a friendly heart. You need to be like family because they're dealing with family issues. They're dealing with so many things that you need to understand. So you need to have a mind for connecting with everything a human being deals with.
At Jukumu, the NGO, we know this is hard, but we believe in humanity. We think everybody can have a better life, wherever they live. A better life doesn't need to involve a lot of money. You just have to know the solutions to your challenges and how you can live with them.
I was just talking with my friend about this: *chamas* are the first Web3. Whatever the technology is, the skills are the same.

View File

@ -0,0 +1,148 @@
---
narrator: "Edson Osorio"
subject: "Ayurvedic medicine"
facilitator: "Júlia Martins Rodrigues"
date: 2025-03-11
approved: 2025-03-26
summary: "Educating thousands of Brazilians online on Ayurvedic teachings through social media, Edson Osorio has embraced the mission of emancipating people's healing journeys through accessible information."
location: "São Paulo, Brazil"
topics: [health, food, social media]
headshot: "edson_osorio.png"
links:
- text: "Instagram"
url: "https://www.instagram.com/edson_ayurveda/"
- text: "YouTube"
url: "https://www.youtube.com/@portalayurveda"
---
*Thank you, Edson, for participating in our project about protocols. First, I'd like you to tell us about your life story and career, how you like to present yourself, and how you would describe your life and career trajectory. Where did you start, and where are you now?*
I believe there's a norm in society where you need to earn money, be in a relationship, and have a job. I was on that path. I was a stock market operator, but I had other professions before. I was young, around twenty-two, twenty-three years old, and I was irritated with the fact that I had to undergo a treatment for attention deficit disorder that would last my entire life.
The search for health was something natural to me. My psychiatrist told me I would have to treat my disorder for my entire life. In my irritation, believing I wasn't a sick individual, that I must just have some imbalance, I found Ayurvedic Medicine.
I think all people have a norm to follow, and encountering yourself is the challenge to that norm. I'm just a person who challenged it and was lucky enough to find something very good. I believe Ayurveda is an excellent structure for physiological life, mental life, for understanding emotional life, and for those who aspire to understand spiritual life.
When I was young, I had a certain desire to know about the mysteries of the world. I thought about studying physics, history, astronomy. I think I found myself and all the proposals I wanted in Ayurveda, following this path that has now made me a teacher of a super cool subject.
*So you present yourself as a teacher?*
Yes, yes. Today I'm an Ayurveda teacher. I started as a masseur, an Ayurvedic medical therapist, until I organically found myself as a teacher. Because, in wanting not to see a person two or three times, but just once, I had this idea: "I need to teach enough so you don't depend on me anymore." I found this solution. The end product is to teach the person, not to pass on a magic formula, but to teach them. So I became a teacher out of necessity.
*And what are your channels for transmitting these teachings today?*
Today, I work a lot on Instagram, a lot on YouTube, and I do online and in-person consultations. Ayurveda has a thought structure that's easy to understand. I usually say that children should learn this because knowing that your friend's body can't handle raw food, another can't handle spicy food, and another can't handle heavy food—these are simple ideas that a child can learn about others. But we're not learning this.
*You've also become the architect of a very large network.*
It's something that caught me by surprise because I teach people to think according to Ayurveda. My desire to teach someone and my angry nature when things go wrong—some people get scared, some get anxious, I get angry when things go wrong—that anger, the need to do things right, gave me a certain teaching technique.
Everyone should learn a little of this. People talk about the term "sangha"—a group of people in favor of the same knowledge, the same action. This formed organically. So I was transforming into a person who insistently heard people saying, "You teach Ayurveda in a unique way." I must teach Ayurveda in a unique way, but not because it was taught to me in a unique way. I think Ayurveda is a way for you to experience the world knowing what you're looking at.
When you feel the difference in the air—our air is clearer, the air is colder, warmer, more humid, drier—you know this effect defines the four seasons of the year and their effects according to the characteristics of the physical body, according to the characteristics of each person. So you create a system that's everyday. Imagine, like what I used to do when I was a stock operator. Every day I had to watch the market opening, all day, and the market closing. But when the market opens, you look at the dollar exchange rate, you look at the future index, and then you create an idea of what will happen. You do this every day.
So with Ayurveda, I do the same thing. I look every day, see how my tongue is, how the color of my lip is, what the property of my waste is. Did my waste get very soft or very hard, or did I have no waste at all? And then I analyze my hunger. And I kind of give myself a grade every day. This is for everyone because it's our body, our mind. It's an incredible thing to know. I'm turning forty in less than a month, and I feel more vitality than all the other years, all the other periods of my life. The longer I practice Ayurveda, the better my memory gets, and the more stable and balanced I become. My body is in a better version of myself.
*And today, this community that formed organically mobilizes how many people?*
I have fifty-five thousand followers on Instagram today. I have 1,700 students who have enrolled in paid courses, throughout Brazil and around the world. And on YouTube, where we have a more fixed crowd, I have twelve thousand people who follow me, but I have a metric that's roughly like this: when I offer a class, within a week, 1,200 people watch that class. So it takes more work, you have to click on the link, it's a class that's like an hour and a half on YouTube. But people stay for at least forty minutes. Seventy percent of the audience watches at least forty minutes. It's a very good metric. You see that people are really interested in the subject. They want to learn it for their lives. They want to help others with it.
So I don't give a magic pill, for example. What I mean is that there are different teacher profiles. I'm a teacher who has a certain profile, and I've been attracting people who have the same scope of thinking. They want freedom of thought. And they attached themselves to me because I give them freedom of thought.
*And a large part of your work, despite having private patients and private classes, much of what is transmitted is done for free and widely, without any monetization. Why do this?*
Let me give you two answers. My first response: I remember when I was thirteen, a lady came to our house, Dona Ivone. As far as I knew, she had seven children, and of the seven children, five were disabled. And she asked my mother for money. And I had asked for money to go to the movies. And my mother didn't give me money to go to the movies, but she gave Dona Ivone a hundred and fifty *reais* \[Brazilian currency\].
I was furious that day. I said, "My God, how can you give money to a person and not to your son?" I grew older and felt like an idiot later, right? And I said, "How beautiful, you have to learn to give without wanting much in return." So I think this runs a bit in my family. We are privileged. We're here on the internet. You're in one part of the world, I'm in another. So we have a great privilege. We need to pay the world back.
I felt this. But today I also believe that I will really die and be born again. So the better I can leave the world... I also wanted to teach Ayurveda in English so I could see my videos being viewed in another country, so I could still see my videos a hundred, two hundred years from now, in another language. So that's my first answer.
The second thing is that, in practice, people unfortunately hold onto knowledge too much. My teachers held onto knowledge. I don't like to cite them much because all my teachers disappointed me. So, for many years, I “set off fireworks” for my teachers. I even wrote love letters to my teacher, to my master. And over time, these people closed their doors to me.
When I started with Ayurveda, I said, "Well, I came from the stock market field, but before that, I was a Brazilian champion of a strategy game. I've always been a good strategist. I said, 'Look, I just need to do this. I need to do this well. I will provide knowledge, that knowledge that doesn't have that high price, that is important for the person's formation.'" But there's a thing between what's important for the person and what they think is important.
If I release a video for weight loss, I'll have more views than all the other videos I've made. But that video won't give freedom to the person. I need to teach them that they are a spirit. We are all a spirit. This spirit has a will. This will is what is making this person read the transcript of this interview or see this live. It's the will to do good. If you don't have the will to do good to others, it's because you're not well yet. When you get well, the will to do good is natural in all people. The more I did good to people, the more I wanted to do good.
When I started teaching Ayurveda in face-to-face courses, I was already giving consultations for some time. I got a little tired of saying the same thing several times to my patient. I said, "Well, I'm going to create an internet channel and I'm going to publicize this. And I'm going to give access to knowledge that I didn't have, to knowledge that they didn't give me, to knowledge that I only found after reading five books."
But everything is Ayurveda. Ayurveda has a base with logical science. People know, in a way, from popular knowledge that the greatest physicists in the world went through studies in India. The ancient books of Ayurveda define what an atom is, what time is, what a second is, where time comes from. A second is defined by the time it takes light to travel a number X of hydrogen atoms. It's a very beautiful reading. The base, the nectar of knowledge of the earth, seems to be there for you to structure your mind, your senses. And I was enchanted by that.
*And in this process of translating this ancient knowledge of Ayurveda to the Brazilian context, mainly for a Brazilian audience, would you describe your process as protocol-based? What does protocol mean to you? What associations do you make with this word, and what was your motivation to develop or adopt a protocol in this sense?*
I think protocol, the organization of what to do from beginning to end and why to do it this way, came organically. The first thing you find is a problem. You have a problem. You want to teach something that you can't. You taught, the person didn't learn? So you first start to see that you experience a problem. I experienced the problem of not knowing where to start, even though my teacher taught me. Starting with items one, two, and three, it was only about four years after my first training that I began to realize what I had studied. I studied, but I didn't learn. I needed to experience that for a few years. Put it to the test.
And a very important thing that Ayurveda says is this: you can't trust what I told you. You'll have this as a guide. But all the time you'll doubt what I'm saying because the only real way for you to learn is to put it to the test. If you don't test it, it's something you talk about, but you don't understand because you haven't experienced it. So, from the moment I experienced and lived through a set of things, I discarded another set of things, I added and strengthened, and began to have my own stories of why it works, why it doesn't work. I stopped telling the stories of my teachers and started having my own experiences.
And then, when I was getting into a repetitive cycle with my client, because I used to do Ayurvedic massage, over time I did consultations, they became my patients. When I was getting into a cycle where my patient always came back, always came back, I saw that the reason was because I was using a technique that didn't match what I had learned in Ayurveda.
In Ayurveda, we learn that a person has to eat what is close to their life, that they have to do what is simple, what is not to invent a lot of fashion. And I was using a lot of manipulated herbs. I was doing a lot of things, focusing a lot on the problem. When I started to realize that I was wrong, even though the person came to me, I was wrong. I didn't want her to come back three, four times. I started to identify that if I didn't teach her, if she didn't look at herself and really know, it's not for me to drink hot water in the morning. It's to remove yesterday's toxins, however they may be. So you have to understand this body mechanics.
*Why did you choose exactly the adoption of this protocol to transmit this knowledge?*
I used to do this in a more mystical way before. You can just measure a person's pulse and tell everything about them. I like to do this because you can say, "You have hypothyroidism." People say, "Wow, I do." I'm not asking you, I'm measuring. I'm saying: "You have. You're constipated?" You say what the person has. It requires training, it requires time and such. But you see, the person hasn't learned. I haven't walked a path with them.
The other way of teaching, which is “slapping the person in the face”? I think that's a lot of arrogance, because I'm going to tell you what you have instantly, all the products, all the solutions. But I didn't give you a path to walk. Your body will improve in three months, you will improve. But then what will you do afterward? You'll come back, and I'll see you again. And it was precisely this that I wanted to escape from.
If I hadn't escaped from this, today I would have a fuller schedule. I would charge more for my consultation. I'd just be measuring pulses, just doing that. I would earn more money. I wouldn't be making free videos, then answering two hundred questions per video. But if I really believe it, I'm thirty-nine years old. If I really believe that I'm going to die, I'm going to be born again, one of the things I wanted to do was leave knowledge good enough because people talk about the Final Judgment in the Bible. Ayurveda says that there is a moment of disembodiment, a millisecond that you will experience your life. And you will say to yourself. And that's what the Ayahuasca folks call DMT, divine particle, that kind of thing. Ayurveda explains this in a very cool way.
A few years ago, I got into the idea that I couldn't die because I hadn't recorded my diagnostic course yet. So I think you get the desire to communicate in a way... that's what happened in my life. I want to be well with myself. That's it. And I also became a person who had to learn the division between right and wrong in the sense of going beyond just being nice. So I can't just be the nice guy on the Live. I also have to be harsh sometimes. I also have to scold sometimes. And it's part of this path that I've adopted. I used to get angry when people called me master. Because all my masters disappointed me. Today, if you want to call me Master, call me, but I'm an Ayurveda teacher. I'm here to pass on what I've studied, as incomplete as it may be.
*Do you perceive your work with protocols as a continuity of previous legacies and traditions, or as a rupture with them?*
It's a rupture, for sure. I found myself thinking about this yesterday. In India, since we're talking about something mystical, there's a myth that if you go to learn Ayurveda with a cave voyager—which is what? A guy who lives in a cave and learned Ayurveda from his master, who lived in a cave, who learned Ayurveda from his master who lived in a cave—they've been doing this for seven to fifteen generations. If you go to learn Ayurveda with this guy, you'll learn more than all the others.
And then there's the other crowd that says, "You have to do your life in college because you're going to learn the Ayurvedic thought structure with the classical texts, the way the ancient gurus who wrote the texts would like you to learn." There are these two strands. I didn't study in the cave. I don't know about classical texts. And I know Ayurveda a lot. So I found myself thinking yesterday, "Where do I fit in?" Because I studied the basics. Then I studied the basics again. Then I studied the basics again.
So if you teach a person to write... I like to talk in numbers. Ayurveda is like doing math. I'm good at doing math. But before doing math, a person needs to learn the difference between zero and one, and one and two. If you take one plus one, it equals two. Add one more, it's three. You teach someone to count to ten. They need to understand what zero is. Then they'll understand addition, subtraction, multiplication, division. Soon enough, they're doing calculations.
So I learned to do calculations in Ayurveda. Sometimes I encounter traditionalists who say, "This guy doesn't even reference classical texts." I think, why focus on classical texts? Why keep doing calculations? I've already solved the most complex physics equations from college.
I find it offensive when someone challenges knowledge that a person has acquired, regardless of whether they learned it in a cave, at university, or from an old man in the south who has since passed away and no one's heard of.
If we study something divine, are we saying it's not available to me when I want it? Are we saying I can't achieve enlightenment if I desire it, pray for it, fast for it, and meditate on it? What if I've already done all that? What if I've meditated across many lives? What if I've meditated for many days while fasting, praying, applying the teachings, giving myself massages, receiving massages, and eating properly? If I've done this for many years, wouldn't I receive better downloads than someone who spent six years listening to eighteen different professors, then working at various clinics in different countries?
This knowledge is available to everyone. It's not formatted at an inaccessible level like many undergraduate courses where you need to attend university to learn it. It's a simple thought structure. I believe what made me successful in this field was that nobody told me it was difficult.
To be honest, my first teacher wasn't excellent, but he didn't intimidate me. He told me legends when he saw I was enthusiastic about everything in the first class. He said, "You're reacting positively to everything I say," and I said, "Yes, this is great\!" He responded, "It seems like you've seen this before." I agreed, and he said, "They say those who show this kind of learning pattern on the first day have studied Ayurveda for three lives. Perhaps you've come in this life to be a teacher."
I said, "Yeah, right." Later, I would get rides home from my training course with an older man who was retired from the Federal Police. He was a practicing psychoanalyst with many stories. After three or four months of courses, he said, "You realize you're already very good at this, right?" I said, "No, Cláudio, I had no idea."
About four years after my first training course in 2013, I went to Canada for a four-month extension course. I thought, "Now I'm going to learn Ayurveda." When I arrived in Canada, I discovered something incredible: in Brazil, Ayurveda isn't regulated, meaning you can teach anything without oversight. In Canada, it's regulated—you can't discuss diagnosis or nutrition.
So when I arrived talking about diagnosis and nutrition, my teachers scolded me. Over those four months, I became friends with them and understood they were concerned about me doing something illegal, but they also appreciated that I knew more than they did and more than those who taught them. I met some Indian Ayurvedic doctors and worked as a consultation translator. I found their consultations trivial and outdated for the people receiving them.
That's when I thought, "My God, I think I know this subject." I started taking patients from others because I challenged myself. I would say, "They did it wrong for you. Let me do it right." I was confrontational and took other practitioners' patients because I saw they were making mistakes.
So there was both an aptitude and a great desire to solve my own problems and the world's problems. People have no idea who they are. There's a tarot card today that says, "A master is one who knows who he is and knows who you are—because you don't know who you are and don't know who the master is. The master knows who he is, knows who you are, and is there to tell you this." I think I adopted that posture.
*Have you had any experiences of appropriation or improper use of your protocol?*
No, I'm precisely the kind of teacher who says, "Take everything I'm doing and make it better." I like that. I'll give you a simple answer: all the great people in the world were examples. So I'm here to be an example. I'm not worried about people imitating what I'm doing. I want you to follow my example and challenge everything I teach. If a person doesn't challenge it, they're missing the point—they haven't learned anything.
*Through all of this, what was the most important decision in building your protocol?*
I think it was not having a problem challenging consensus. There's consensus that Ayurveda should be cited by classical text. There's consensus that it's somewhat complex and it's from India. People think, "Indians know so much about life\!"
So I think bringing this knowledge in a simple way, demystifying it, made the difference. I remember a story about a Vedic astrologer who did a chart for a woman and told her that to succeed at work, she needed to feed a black cow by throwing corn from a bridge in the direction of the river flow. She had to be above the bridge so the corn would pass below for the cow to eat.
This woman came to me with this story, and I thought, "Good heavens\!" The world is such a practical place. Let's drink a glass of hot water to remove yesterday's toxins. You're not getting a job because you lack vitality or you're too anxious in job interviews. So let's take some things to calm that anxiety, ground your thoughts, and not talk too much like I'm doing now in your interview.
These are paths that people adopt. I think that's my difference. Today we have many practitioners, but there was no one when I started. So I had no problem saying, "This is all wrong. We're doing it wrong." I had no problem saying, "People are tripping." And I had no problem showing that I also trip sometimes. Like, I enjoy beer, I eat meat, I have an active social life on weekends.
As a transmitter of liberating knowledge, I can't imprison myself in the idea of being a monk, because I'm not a monk and I'm not selling that image. So I think the big decision was not having a persona.
I'm still ashamed of who I am. I think everyone has their problems. I'm ashamed of a mixture of many things. I don't even have an undergraduate degree, Julia. I'll soon graduate in Naturology, but I've studied a ton of things. I debate with healthcare professionals—I'll talk with an oncologist about cancer treatments, they'll question me, and then they'll say, "Well, what you're saying makes sense."
So I needed to learn to challenge others, and I don't like that much. The big watershed moment is whether I accept my function in the world or not. I think that's it.
*What lessons would you share with people who are beginning to build or maintain protocols?*
If you weren't just starting, it wouldn't be difficult. There's no one to teach you what you're doing. I think that's it—no one is there to teach you. You have to discover it. You'll discover because you need to solve a problem. As ethereal as problem-solving may be, it exists. If a pipe is leaking, you fix the pipe. If it's not leaking, that's logical.
Protocol is about solving problems in your area. So you have to believe in it because you won't see the pipe leaking, and you won't see that the pipe has been fixed. Often, it's only the result—sometimes years later—that will show you it really works that way.
So I think developing these things is connected to an internal feeling of blessedness. It's like the old story—I was talking with a friend about diving from a springboard, climbing, diving into the sea, crossing. All these things are scary. People don't do them because they have no fear; they do them despite having fear.
So you're afraid? You'll do it with fear anyway. Today, I'm no longer afraid to appear on a livestream talking about a subject I know well. But if you look at my video from fifteen years ago where I talk about Ayurvedic massage, I stutter and spit because I'm embarrassed to open my mouth.
So everything comes from confronting challenges. You have to face obstacles to create something new. No dam holds water without causing some destruction in the environment. You have to challenge the environment.

View File

@ -6,7 +6,7 @@ date: 2024-12-06
approved: 2025-04-01
summary: "A career-long journey to build online social networks that cannot be controlled by a single company, culminating with the ActivityPub standard."
location: "Montreal, Canada"
headshot: "/headshots/placeholder-headshot.png"
#headshot: "placeholder-headshot.png"
links:
- text: Website
url: https://evanp.me/

View File

@ -6,8 +6,8 @@ date: 2024-11-04
approved: 2024-12-02
summary: "As a sport often played with no referees, ultimate frisbee has developed a strong set of norms for addressing conflict and self-governing."
location: "East Greenbush, NY USA"
headshot: "/headshots/placeholder-headshot.png"
topics: [frisbee, sports, organizations, dispute resolution]
headshot: "michael_zargham.png"
topics: [mediation, sports, organizations]
---
*How do you like to introduce yourself to people as you encounter them in the world?*

View File

@ -1,40 +0,0 @@
sand:
100: "#eee8dd"
500: "#d4c5aa"
900: "#b19360"
pink:
100: "#ead4d2"
500: "#c0928a"
900: "#a7695a"
red:
100: "#e8c9c9"
500: "#b87977"
900: "#a35754"
rust:
100: "#eacec4"
500: "#c48a74"
900: "#af6649"
clay:
100: "#ead4c2"
500: "#c49b6f"
900: "#b17f48"
gold:
100: "#e6dac1"
500: "#bca66d"
900: "#a88b48"
moss:
100: "#d0ddc7"
500: "#919f71"
900: "#69734a"
pine:
100: "#c7ddd2"
500: "#7b9b85"
900: "#516b57"
cyan:
100: "#c0dadd"
500: "#6a9799"
900: "#436668"
blue:
100: "#c2cfe0"
500: "#6f88a3"
900: "#5d7691"

View File

@ -15,7 +15,7 @@
{{ end }}
<!-- Basic SEO -->
<title>{{ $title }}</title>
<title>{{ $title }}{{ if .Params.narrator }} - {{ .Site.Title }}{{ end }}</title>
{{/* Generate description from summary, description, or default site description */}}
{{ $description := "" }}
@ -36,70 +36,80 @@
{{ end }}
<!-- Open Graph / Facebook -->
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
<meta property="og:site_name" content="{{ .Site.Title }}" />
<meta property="og:type" content="{{ if .IsPage }}interview{{ else }}website{{ end }}" />
<meta property="og:url" content="{{ .Permalink }}" />
<meta property="og:title" content="{{ $title }}" />
<meta property="og:description" content="{{ $description }}" />
{{ with .Params.images | default .Site.Params.images }}
<meta property="og:image" content="{{ index . 0 | absURL }}" />
{{ end }}
{{ with .Site.Params.facebookAppID }}
<meta property="fb:app_id" content="{{ . }}" />
{{ with .Params.ogImage | default .Site.Params.openGraphImage }}
<meta property="og:image" content="{{ . | absURL }}" />
{{ end }}
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{{ $title }}" />
<meta name="twitter:description" content="{{ $description }}" />
{{ with .Params.images }}
<meta name="twitter:image" content="{{ index . 0 | absURL }}" />
{{ with .Params.ogImage | default .Site.Params.openGraphImage }}
<meta name="twitter:image" content="{{ . | absURL }}" />
{{ end }}
<!-- Article Specific -->
{{ if and .IsPage (eq .Type "articles") }}
<meta property="article:published_time" content="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}" />
<meta property="article:modified_time" content="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}" />
<meta property="article:section" content="Oral History" />
{{ with .Params.topics }}
{{ range . }}
<meta property="article:tag" content="{{ . }}" />
{{ end }}
{{ end }}
{{/* Author information using standard meta topics instead of article:author */}}
{{ with .Params.narrator }}
<meta name="author" content="{{ . }}" />
{{ end }}
{{ with .Params.facilitator }}
<meta name="interviewer" content="{{ . }}" />
{{ end }}
<!-- Interview Specific -->
{{ if and .IsPage (eq .Type "interviews") }}
<meta property="interview:published_time" content="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}" />
<meta property="interview:modified_time" content="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}" />
<meta property="interview:section" content="Oral History" />
{{ with .Params.topics }}
{{ range . }}
<meta property="interview:tag" content="{{ . }}" />
{{ end }}
{{ end }}
{{/* Author information using standard meta topics instead of interview:author */}}
{{ with .Params.narrator }}
<meta name="author" content="{{ . }}" />
{{ end }}
{{ with .Params.facilitator }}
<meta name="interviewer" content="{{ . }}" />
{{ end }}
{{ end }}
<!-- Canonical URL -->
<link rel="canonical" href="{{ .Permalink }}" />
<!-- CSS Variables and Styles -->
{{ partial "css-variables.html" . }}
{{/* Main Styles */}}
{{ $styles := resources.Get "scss/main.scss" }}
{{ $styles = $styles | resources.ToCSS (dict "targetPath" "css/styles.css" "enableSourceMap" true) }}
{{ $styles = $styles | resources.PostCSS }}
{{ if hugo.IsProduction }}
{{ $styles = $styles | minify | fingerprint | resources.PostProcess }}
{{ end }}
<link href="{{ $styles.RelPermalink }}" rel="stylesheet" />
<!-- CSS Styles -->
{{ partial "css.html" . }}
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.medlab.host/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '8']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body class="">
{{ partial "header.html" . }}
<div class="px-4 lg:mx-auto">
{{ block "main" . }}{{ end }}
</div>
<script src="/js/sigil.js"></script>
<script src="/js/colorCalculator.js"></script>
<script src="/js/wompum.js"></script>
{{ partial "footer.html" . }}
{{ $js := resources.Match "js/*.js" | resources.Concat "js/bundle.js" }}
{{ if hugo.IsProduction }}
{{ $js = $js | minify | fingerprint }}
<script src="{{ $js.RelPermalink }}" integrity="{{ $js.Data.Integrity }}" crossorigin="anonymous"></script>
{{ else }}
<script src="{{ $js.RelPermalink }}"></script>
{{ end }}
</body>
</html>

View File

@ -1,10 +1,10 @@
{{ define "main" }}
<article class="single-default">
<header class="mb-8 wompum-container wompum-container--wide-gap wompum-container--aspect-ratio">
<interview class="single-default">
<header class="mb-8 wompum-container wompum-container--wide-gap aspect-3/1 md:aspect-4/1">
<div class="wompum-grid" data-text="{{ .Params.wompum | default .Title }}" data-columns="7" data-rows="5"></div>
</header>
<div class="prose lg:prose-xl p-4 mx-auto mt-4">
<div class="prose lg:prose-xl dark:prose-invert p-4 mx-auto mt-8">
<p class="font-bold text-6xl">{{ .Title }}</p>
{{ .Content }}
@ -15,5 +15,5 @@
{{ end }}
{{ end }}
</div>
</article>
</interview>
{{ end }}

View File

@ -3,29 +3,21 @@
<p class="text-center font-iosevka capitalize">{{ .Data.Singular }}</p>
<h1 class="text-4xl font-bold text-center capitalize">{{ .Title }}</h1>
</header>
<main class="container mx-auto">
<ul class="flex flex-col gap-4 w-full mt-4">
{{ partial "article-list.html" (dict "Pages" .Data.Pages) }}
<main class="flex flex-wrap container mx-auto justify-center">
<ul class="flex flex-col md:gap-4 gap-16 w-full mb-16 mt-4">
{{ partial "interview-list.html" (dict "Pages" .Data.Pages) }}
</ul>
{{ if gt (len (index .Site.Taxonomies .Data.Singular)) 1 }}
<section>
<h2 class="text-4xl mt-8 mb-4 font-bold text-center">Other {{ .Data.Plural }}</h2>
<div class="wompum-container wompum-container--no-gap">
<div class="wompum-grid" data-text="Other {{ .Data.Plural }}" data-columns="4" data-rows="1"></div>
</div>
<div class="tag-cloud font-iosevka text-gray-600 text-center mt-4">
{{ $terms := index .Site.Taxonomies .Data.Plural }}
{{ range $term, $pages := $terms }}
{{ if ne $term $.Title }}
{{ with $.Site.GetPage (printf "/%s/%s" $.Data.Plural ($term | urlize)) }}
<a href="{{ .RelPermalink }}"
class="tag inline-block p-2 my-1 border border-gray-100 rounded-lg hover:bg-yellow-100 whitespace-nowrap">
{{ .Title }}
</a>
{{ end }}
{{ end }}
{{ end }}
<div class="tag-cloud font-iosevka text-gray-600 text-center my-4 w-full flex flex-wrap gap-2 items-center justify-center">
{{ partial "taxonomy-cloud" (dict "taxonomy" .Data.Singular "Site" .Site "page" .Page) }}
</div>
</section>
{{ end }}
</main>
{{ end }}

View File

@ -1,47 +0,0 @@
{{ define "main" }}
<article class="single-article">
<header class="mb-4 wompum-container wompum-container--wide-gap wompum-container--aspect-ratio">{{ partial "article-wompum.html" . }}</header>
<div class="flex gap-4 mt-4">
<aside class="lg:sticky lg:top-0 lg:h-screen lg:overflow-y-auto lg:w-1/3 p-4 font-iosevka">
{{ if .Params.headshot }}
<div class="narrator__container w-48 mb-2" data-text="{{ .Params.narrator }}">
<div class="narrator__frame">
<img src="{{ .Params.headshot }}" alt="Photo of {{ .Params.narrator }}" class="narrator__image" loading="lazy">
</div>
</div>
{{ end }}
<p><strong>Date:</strong> <time datetime="{{ .Date.Format " 2006-01-02" }}">{{ .Date.Format "January 2, 2006" }}</time></p>
<p><strong>Narrator:</strong> <a href="{{ "/narrator/" | relLangURL }}{{ .Params.narrator | urlize }}">{{ .Params.narrator }}</a></p>
<p><strong>Facilitator:</strong> <a href="{{ "/facilitator/" | relLangURL }}{{ .Params.facilitator | urlize }}">{{ .Params.facilitator }}</a></p>
<p><strong>Subject:</strong> {{ .Params.subject }}</p>
{{ if .Params.location }}
<p><strong>Location:</strong> {{ .Params.location }}</p>
{{ end }}
<p><strong>Topics:</strong> {{ partial "topics.html" . }}</p>
{{ if .Params.links }}
<div class="mt-4">
<p><strong>Narrator Links:</strong></p>
<ul class="list-disc pl-4 ml-4 mt-2">
{{ range .Params.links }}
<li class="mb-2">
<a href="{{ .url }}" target="_blank" rel="noopener noreferrer">{{ .text }} <sup></sup></a>
</li>
{{ end }}
</ul>
</div>
{{ end }}
</aside>
<div class="prose lg:prose-xl lg:w-2/3 p-4">
<p class="font-bold text-4xl article-title article-title--single">{{ partial "article-title" . }}</p>
{{ .Content }}
</div>
</div>
</article>
<aside class="max-w-screen-xl mx-auto px-4 lg:px-0">
{{ partial "related-articles" (dict "page" . "topics" .Params.topics "limit" 3) }}
</aside>
<div class="text-center my-12"><a href="/">Go Home</a></div>
{{ end }}

View File

@ -1,10 +1,10 @@
{{ define "main" }}
<main class="flex gap-4 lg:gap-16 justify-around mt-8 max-w-screen-xl mx-auto px-4 lg:px-0">
<ul class="flex flex-col gap-4 w-full">
{{ partial "article-list.html" (dict "Pages" (where .Site.RegularPages "Section" "articles")) }}
<main class="flex flex-col md:flex-row gap-4 md:gap-8 lg:gap-16 justify-around mt-8 max-w-screen-xl mx-auto">
<ul class="flex flex-col md:gap-4 gap-16 w-full mb-16">
{{ partial "interview-list.html" (dict "Pages" (where .Site.RegularPages "Section" "interviews")) }}
</ul>
<aside class="max-w-prose w-1/4 flex flex-col gap-8 mb-8">
<aside class="max-w-prose md:w-1/4 flex flex-col gap-8 mb-8">
<section>
<h2 class="text-2xl font-bold mb-2">About</h2>
@ -19,14 +19,8 @@
<div class="wompum-container wompum-container--no-gap">
<div class="wompum-grid" data-text="Topics" data-columns="4" data-rows="1"></div>
</div>
<div class="tag-cloud font-iosevka text-gray-600 text-sm mt-4">
{{ $topics := .Site.Taxonomies.topics }}
{{ range $tag, $pages := $topics }}
<a href="{{ "/topics/" | relLangURL }}{{ $tag | urlize }}" style="font-size: {{ add 1 (div (len $pages) 2) }}em;" data-count="{{ len $pages}}"
class="tag inline-block p-2 my-1 border border-gray-100 rounded-lg hover:bg-yellow-100 whitespace-nowrap">
{{ $tag }}
</a>
{{ end }}
<div class="tag-cloud font-iosevka text-gray-600 my-4 flex flex-wrap gap-2">
{{ partial "taxonomy-cloud" (dict "taxonomy" "topics" "Site" .Site) }}
</div>
</section>

View File

@ -0,0 +1,38 @@
{{ define "main" }}
<article class="single-interview">
<header class="mb-4 wompum-container wompum-container--wide-gap aspect-2/1 md:aspect-3/1">{{ partial "interview-wompum.html" . }}</header>
<div class="flex md:flex-row flex-col gap-4 mt-4">
<aside class="md:sticky md:top-24 md:h-screen p-4 font-iosevka">
{{ $headshot := resources.GetMatch (printf "**/%s" (strings.TrimPrefix "/" .Params.headshot)) }}
{{ if and .Params.headshot $headshot }}
<div class="narrator__container -mt-24" data-text="{{ .Params.narrator }}">
{{ partial "image.html" (dict
"resource" $headshot
"width" "192"
"class" "narrator__frame"
"alt" (printf "Photo of %s" .Params.narrator)
) }}
</div>
{{ end }}
<div class="md:block hidden">{{ partial "interview-metadata.html" . }}</div>
</aside>
<div class="prose-xl max-w-prose dark:prose-invert p-4 mx-auto">
<p class="font-bold text-4xl interview-title interview-title--single">{{ partial "interview-title" . }}</p>
<p class="text-2xl">{{ .Params.summary }}</p>
<div class="wompum-container wompum-container--no-gap h-1">
<div class="wompum-grid" data-text="{{ .Params.summary }}" data-columns="12" data-rows="1">
</div>
</div>
{{ .Content }}
</div>
<aside class="md:hidden block p-8 mt-8 border-t border-gray-200">{{ partial "interview-metadata.html" . }}</aside>
</div>
</article>
<aside class="max-w-screen-xl mx-auto">
{{ partial "related-interviews" (dict "page" . "topics" .Params.topics "limit" 3) }}
</aside>
<div class="text-center my-12"><a href="/">Go Home</a></div>
{{ end }}

View File

@ -1,23 +0,0 @@
{{ $pages := .Pages }}
{{ range $pages }}
{{- $page := . -}}
{{- if reflect.IsMap . -}}
{{- $page = .page -}}
{{- end -}}
<li class="flex gap-4 items-center">
<a class="flex-1 min-w-0 wompum-container wompum-container--aspect-ratio h-full block" href="{{ $page.RelPermalink }}">{{ partial "article-wompum.html" $page }}</a>
<time class="text-gray-800 font-iosevka w-12 flex-shrink-0" datetime="{{ $page.Date.Format "2006-01-02" }}">
<p>{{ $page.Date.Format "Jan" }}</p>
<p>{{ $page.Date.Format "02" }}</p>
<p>{{ $page.Date.Format "2006" }}</p>
</time>
<div class="w-3/5 flex-shrink-0 py-8">
<a class="article-title article-title--list text-2xl font-bold hover:text-green-900 underline" href="{{ $page.RelPermalink }}">{{ partial "article-title" $page }}</a>
{{ if $page.Params.location }}
<p class="text-gray-800 italic">{{ $page.Params.location }}</p>
{{ end }}
<p class="max-w-prose">{{ $page.Params.summary }}</p>
{{ partial "topics.html" $page }}
</div>
</li>
{{ end }}

View File

@ -1,3 +0,0 @@
{{- if and .Params.narrator .Params.subject -}}
<span class="article-title__narrator">{{- .Params.narrator }}</span> <span class="article-title__subject">{{ .Params.subject -}}</span>
{{- end -}}

View File

@ -1,9 +0,0 @@
<style>
:root {
{{ range $colorName, $shades := site.Data.colors }}
{{ range $shade, $value := $shades }}
--{{ $colorName }}-{{ $shade }}: {{ $value }};
{{ end }}
{{ end }}
}
</style>

23
layouts/partials/css.html Normal file
View File

@ -0,0 +1,23 @@
{{ with (templates.Defer (dict "key" "global")) }}
{{ $t := debug.Timer "tailwindcss" }}
{{ with resources.Get "css/styles.css" }}
{{ $opts := dict
"inlineImports" true
"optimize" (not hugo.IsDevelopment)
}}
{{ with . | css.TailwindCSS $opts }}
{{ if hugo.IsDevelopment }}
<link rel="stylesheet" href="{{ .RelPermalink }}" />
{{ else }}
{{ with . | minify | fingerprint }}
<link
rel="stylesheet"
href="{{ .RelPermalink }}"
integrity="{{ .Data.Integrity }}"
crossorigin="anonymous" />
{{ end }}
{{ end }}
{{ end }}
{{ end }}
{{ $t.Stop }}
{{ end }}

View File

@ -0,0 +1,24 @@
<footer class="bg-sand-500 text-amber-900 mt-16 dark:bg-gray-800 dark:text-sand-500">
<div class="wompum-container wompum-container--no-gap h-1">
<div class="wompum-grid" data-text="{{ .Site.Title }}" data-columns="7" data-rows="1">
</div>
</div>
<div class="p-8 pt-16 flex justify-between md:items-center gap-8">
<section>
<h1 class="text-2xl font-bold">
<a href="/">{{ .Site.Title }}</a>
</h1>
<p class="text-lg">{{ .Site.Params.footer | markdownify }}</p>
</section>
<nav class="font-iosevka mt-2">
<ul class="flex-col items-end gap-4">
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/about">About</a>
</li>
</ul>
</nav>
</div>
</footer>

View File

@ -1,16 +1,33 @@
<!-- basic header partial in hugo with just home and about -->
<header class="flex flex-col mb-4">
<div class="flex justify-between items-center p-4">
<div class="flex justify-between gap-4 items-center p-4">
<h1 class="text-2xl font-bold">
<a href="/">{{ .Site.Title }}</a>
</h1>
<nav class="font-iosevka">
<ul class="flex gap-4">
<ul class="flex flex-col flex-wrap relative sm:flex-row sm:gap-4 justify-center pr-8 sm:pr-0">
<li>
<a href="/" class="hover:text-blue-700">Home</a>
<a href="/">Home</a>
</li>
<li>
<a href="/about" class="hover:text-blue-700">About</a>
<a href="/about">About</a>
</li>
<li class="sm:relative absolute -right-1 top-1/2 sm:right-[unset] sm:top-[unset] transform -translate-y-1/2 sm:transform-none sm:translate-y-0">
<button id="darkmode-toggle" onclick="toggleDarkMode()" aria-label="Toggle dark mode"
class="flex group p-1 relative -mt-1 cursor-pointer hover:bg-gray-950 hover:text-gray-100 dark:hover:bg-sand-100 dark:hover:text-gray-900 rounded-full">
<!-- Lightbulb SVG icon -->
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 dark:inline hidden" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round"
d="M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z">
</path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 dark:hidden" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round"
d="M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z">
</path>
</svg>
<p class="tooltip transition-opacity duration-500 absolute mr-5 -bottom-5 right-0 w-sm text-sm text-right hidden group-hover:block opacity-0 group-hover:opacity-100 group-hover:text-gray-600 dark:group-hover:text-gray-400">Turn on <span id="darkmode-label"></span> Mode</p>
</button>
</li>
</ul>
</nav>

View File

@ -0,0 +1,19 @@
{{ $width := .width }}
{{ $height := default $width .height }}
{{ $class := .class }}
{{ $resource := .resource }}
{{ $alt := .alt }}
{{ with $resource }}
{{ $image := .Fit (printf "%dx%d webp" (int $width) (int $height)) }}
{{ $fallback := .Fit (printf "%dx%d" (int $width) (int $height)) }}
<picture class="{{ $class }} block">
<source srcset="{{ $image.RelPermalink }}" type="image/webp">
<img
src="{{ $fallback.RelPermalink }}"
alt="{{ $alt }}"
width="{{ $width }}"
height="{{ $height }}"
loading="lazy">
</picture>
{{ end }}

View File

@ -0,0 +1,25 @@
{{ $pages := .Pages }}
{{ range $pages }}
{{- $page := . -}}
{{- if reflect.IsMap . -}}
{{- $page = .page -}}
{{- end -}}
<li class="group flex md:flex-row flex-col md:gap-4 gap-2 md:items-center">
<div class="flex-1 min-w-0 flex gap-2 items-center h-full">
<a class="wompum-container h-full aspect-7/2 md:aspect-auto" href="{{ $page.RelPermalink }}">{{ partial "interview-wompum.html" $page }}</a>
<time class="text-gray-800 dark:text-sand-500 font-iosevka w-12 flex-shrink-0" datetime="{{ $page.Date.Format "2006-01-02" }}">
<p>{{ $page.Date.Format "Jan" }}</p>
<p>{{ $page.Date.Format "02" }}</p>
<p>{{ $page.Date.Format "2006" }}</p>
</time>
</div>
<div class="flex flex-col gap-2 md:w-3/5 flex-shrink-0 md:py-8">
<a class="interview-title interview-title--list" href="{{ $page.RelPermalink }}">{{ partial "interview-title" $page }}</a>
{{ if $page.Params.location }}
<p class="light:text-gray-800 dark:text-sand-100 italic">{{ $page.Params.location }}</p>
{{ end }}
<p class="max-w-prose">{{ $page.Params.summary }}</p>
{{ partial "topics.html" $page }}
</div>
</li>
{{ end }}

View File

@ -0,0 +1,20 @@
<p><strong>Date:</strong> <time datetime="{{ .Date.Format " 2006-01-02" }}">{{ .Date.Format "January 2, 2006" }}</time></p>
<p><strong>Narrator:</strong> <a href="{{ "/narrator/" | relLangURL }}{{ .Params.narrator | urlize }}">{{ .Params.narrator }}</a></p>
<p><strong>Facilitator:</strong> <a href="{{ "/facilitator/" | relLangURL }}{{ .Params.facilitator | urlize }}">{{ .Params.facilitator }}</a></p>
<p><strong>Subject:</strong> {{ .Params.subject }}</p>
{{ if .Params.location }}
<p><strong>Location:</strong> {{ .Params.location }}</p>
{{ end }}
<p><strong>Topics:</strong> {{ partial "topics.html" . }}</p>
{{ if .Params.links }}
<div class="mt-4">
<p><strong>Learn more:</strong></p>
<ul class="list-disc pl-4 ml-4 mt-2">
{{ range .Params.links }}
<li class="mb-2">
<a href="{{ .url }}" target="_blank" rel="noopener noreferrer">{{ .text }} <sup></sup></a>
</li>
{{ end }}
</ul>
</div>
{{ end }}

View File

@ -0,0 +1,3 @@
{{- if and .Params.narrator .Params.subject -}}
<span class="interview-title__narrator">{{- .Params.narrator }}</span> <span class="interview-title__subject">{{ .Params.subject -}}</span>
{{- end -}}

View File

@ -1,4 +1,4 @@
<div class="wompum-article-grid"
<div class="wompum-interview-grid"
data-metadata="{{ dict "narrator" .Params.narrator "subject" .Params.subject "facilitator" .Params.facilitator | jsonify }}"
data-columns="7"
data-rows="5">

View File

@ -1,40 +0,0 @@
{{- $topics := .topics -}}
{{- $limit := default 3 .limit -}}
{{- $currentPath := .page.RelPermalink -}}
{{- $related := where (where site.RegularPages "Type" "articles") "RelPermalink" "!=" $currentPath -}}
{{- $matchingArticles := slice -}}
{{/* First try to find articles with matching topics */}}
{{- range $related -}}
{{- $matches := 0 -}}
{{- range .Params.topics -}}
{{- if in $topics . -}}
{{- $matches = add $matches 1 -}}
{{- end -}}
{{- end -}}
{{- if gt $matches 0 -}}
{{- $matchingArticles = $matchingArticles | append (dict "page" . "matches" $matches) -}}
{{- end -}}
{{- end -}}
{{/* If we found matching articles, sort by number of matching topics */}}
{{- $finalArticles := slice -}}
{{- if gt (len $matchingArticles) 0 -}}
{{- $finalArticles = first $limit (sort $matchingArticles "matches" "desc") -}}
{{- else -}}
{{/* Fallback to showing other articles sorted by date */}}
{{- $finalArticles = first $limit (sort $related "Date" "desc") -}}
{{- end -}}
{{- if gt (len $finalArticles) 0 -}}
<div class="related-articles flex flex-col gap-4">
<h2 class="title text-3xl font-bold">Related Articles</h2>
<div class="wompum-container wompum-container--no-gap">
<div class="wompum-grid" data-text="Related Articles" data-columns="8" data-rows="1"></div>
</div>
<ul class="flex flex-col gap-4 w-full">
{{ partial "article-list" (dict "Pages" $finalArticles) }}
</ul>
</div>
{{- end -}}

View File

@ -0,0 +1,40 @@
{{- $topics := .topics -}}
{{- $limit := default 3 .limit -}}
{{- $currentPath := .page.RelPermalink -}}
{{- $related := where (where site.RegularPages "Type" "interviews") "RelPermalink" "!=" $currentPath -}}
{{- $matchingInterviews := slice -}}
{{/* First try to find interviews with matching topics */}}
{{- range $related -}}
{{- $matches := 0 -}}
{{- range .Params.topics -}}
{{- if in $topics . -}}
{{- $matches = add $matches 1 -}}
{{- end -}}
{{- end -}}
{{- if gt $matches 0 -}}
{{- $matchingInterviews = $matchingInterviews | append (dict "page" . "matches" $matches) -}}
{{- end -}}
{{- end -}}
{{/* If we found matching interviews, sort by number of matching topics */}}
{{- $finalInterviews := slice -}}
{{- if gt (len $matchingInterviews) 0 -}}
{{- $finalInterviews = first $limit (sort $matchingInterviews "matches" "desc") -}}
{{- else -}}
{{/* Fallback to showing other interviews sorted by date */}}
{{- $finalInterviews = first $limit (sort $related "Date" "desc") -}}
{{- end -}}
{{- if gt (len $finalInterviews) 0 -}}
<div class="related-interviews flex flex-wrap gap-4">
<h2 class="title text-3xl font-bold">Related Interviews</h2>
<div class="wompum-container wompum-container--no-gap">
<div class="wompum-grid" data-text="Related Interviews" data-columns="8" data-rows="1"></div>
</div>
<ul class="flex flex-col gap-4 w-full">
{{ partial "interview-list" (dict "Pages" $finalInterviews) }}
</ul>
</div>
{{- end -}}

View File

@ -0,0 +1,16 @@
{{ $taxonomy := .taxonomy }}
{{ range $term, $pages := index .Site.Taxonomies $taxonomy }}
{{ $termPage := $.Site.GetPage (printf "/%s/%s" $taxonomy $term) }}
<a href="{{ $termPage.RelPermalink }}"
data-size="{{ len $pages }}"
class="tag font-bold
{{ if eq $.page.RelPermalink $termPage.RelPermalink }}hidden{{ else }}inline-block{{ end }}
data-[size=1]:text-sm data-[size=1]:font-normal data-[size=1]:opacity-90
data-[size=2]:text-base
data-[size=3]:text-xl
data-[size=4]:text-3xl
data-[size=5]:text-4xl"
data-count="{{ len $pages}}">
{{ $term }}
</a>
{{ end }}

View File

@ -1,8 +1,8 @@
{{- if .Params.topics }}
<div class="flex flex-wrap gap-2 my-2 text-xs font-iosevka">
<div class="tag-cloud flex flex-wrap gap-2 my-2 text-xs font-iosevka">
{{- range .Params.topics }}
<a href="{{ "topics/" | relURL }}{{ . | urlize }}"
class="px-3 py-1 border border-green-100 hover:bg-green-300 text-green-900 rounded no-underline">
class="tag no-underline">
{{ . }}
</a>
{{- end }}

View File

@ -1,12 +1,12 @@
<div class="wompum-demo max-w-2xl mx-auto">
<h2 class="text-2xl font-bold mb-4">Wompum Grid Protocol</h2>
<h2 class="text-2xl font-bold mb-4">Wampum Grid Protocol</h2>
<p>We use a protocol to generate the colorful wompum style grid for articles and other places around the site, learn how it works here.</p>
<p>The color scheme on this website is inspired by <em><a href="http://n2t.net/ark:/65665/ws63912f5dd-e703-4759-8c31-33ac98b3c190">Constitutional Wampum</a></em> by Robert Houle. The site uses the following protocol to generate the colorful wampum style grid.</p>
<div class="mb-8 font-iosevka">
<div class="mb-8">
<label class="block mb-2">Enter text to generate a grid:</label>
<input type="text"
class="w-full p-2 border rounded"
class="w-full p-2 border rounded font-iosevka bg-sand-100 dark:bg-gray-800"
placeholder="Type something..."
value="{{ .Site.Title}}"
oninput="updateWompumDemoGrid(this.value)">
@ -14,35 +14,35 @@
<p>First we generate a sigil by removing spaces, turning to lowercase, removing anything that isn't a consonant, removing repeat letters, find the unicode character number, and finally get the digital root of those numbers. From there the sigil digits are used to choose a color from our pallet.</p>
<div class="transformation-steps mb-8 font-iosevka">
<div>
<span class="font-bold">Original Text:</span>
<ol class="transformation-steps mb-8 font-iosevka pl-0 list-['↪']">
<li>
<span class="font-bold md:inline block">Original Text:</span>
<span class="text-input-display"></span>
</div>
<div>
<span class="font-bold">Lowercase:</span>
</li>
<li>
<span class="font-bold md:inline block">Lowercase:</span>
<span class="text-cleaned-display"></span>
</div>
<div>
<span class="font-bold">Consonants only:</span>
</li>
<li>
<span class="font-bold md:inline block">Consonants only:</span>
<span class="text-consonants-display"></span>
</div>
<div>
<span class="font-bold">Unique consonants:</span>
</li>
<li>
<span class="font-bold md:inline block">Unique consonants:</span>
<span class="text-unique-display"></span>
</div>
<div>
<span class="font-bold">Letters to numbers:</span>
</li>
<li>
<span class="font-bold md:inline block">Letters to numbers:</span>
<span class="text-sigil-numbers"></span>
</div>
<div>
<span class="font-bold">Digital root:</span>
</li>
<li>
<span class="font-bold md:inline block">Digital root:</span>
<span class="text-sigil-root"></span>
</div>
<div>
<span class="font-bold">The final grid:</span>
</div>
</div>
</li>
<li>
<span class="font-bold md:inline block">The final grid:</span>
</li>
</ol>
<div class="wompum-container wompum-container--demo h-48 mb-8">
<div class="wompum-grid h-full"

2696
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +1,8 @@
{
"comments": {
"dependencies": {},
"devDependencies": {
"@tailwindcss/typography": "hugo-starter-tailwind-basic",
"autoprefixer": "hugo-starter-tailwind-basic",
"postcss": "hugo-starter-tailwind-basic",
"postcss-cli": "hugo-starter-tailwind-basic",
"postcss-purgecss": "hugo-starter-tailwind-basic",
"tailwindcss": "hugo-starter-tailwind-basic"
}
},
"devDependencies": {
"@tailwindcss/typography": "^0.4.1",
"autoprefixer": "^10.3.1",
"postcss": "^8.3.6",
"postcss-cli": "^8.3.1",
"postcss-purgecss": "^2.0.3",
"tailwindcss": "^2.2.7"
},
"scripts": {
"build:css": "postcss assets/css/tailwind.css -o static/css/tailwind.css",
"watch:css": "postcss assets/css/tailwind.css -o static/css/tailwind.css --watch"
"@tailwindcss/cli": "^4.0.0",
"tailwindcss": "^4.0.0",
"@tailwindcss/typography": "^0.5.16"
},
"name": "protocol-oral-history-project",
"version": "0.1.0"

View File

@ -1,6 +0,0 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};

View File

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -1,18 +1,8 @@
module.exports = {
content: [
'./layouts/**/*.html',
'./content/**/*.md',
'./assets/scss/**/*.scss',
],
theme: {
extend: {
fontFamily: {
'garamond': ['EB Garamond 12', 'serif'],
'iosevka': ['Iosevka', 'monospace'],
},
},
},
plugins: [
require('@tailwindcss/typography'),
],
};
/*
This file is present to satisy a requiremenet of the Tailwind CSS IntelliSense
extension for Visual Studio Code.
https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss
The rest of this file is intentionally empty.
*/

View File

@ -1,4 +0,0 @@
node_modules/
public/
resources/
.hugo_build.lock

View File

@ -1,3 +0,0 @@
{
"autoHide.autoHidePanel": false
}

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2020 Bjørn Erik Pedersen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,58 +0,0 @@
# Hugo Basic Starter for TailwindCSS v3.x
[![Netlify Status](https://api.netlify.com/api/v1/badges/5a510ba1-96b4-4834-9a07-913dce4b5061/deploy-status)](https://app.netlify.com/sites/lucid-nightingale-60a4e2/deploys)
A very simple starter set up with [TailwindCSS](https://tailwindcss.com/) and its [typography plugin](https://tailwindcss.com/docs/typography-plugin) and a build setup using [PostCSS](https://postcss.org/) and PurgeCSS (when running the production build).
In the preview deployment on Netlify it currently has a 100 score on both mobile and desktop on [Google PageSpeed](https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Flucid-nightingale-60a4e2.netlify.app%2F&tab=mobile).
This setup can be used both as a starter project and a theme.
## As a Project
```bash
npm install
hugo server
```
## As a Theme
Import `github.com/bep/hugo-starter-tailwind-basic/v3` (use `github.com/bep/hugo-starter-tailwind-basic/v2` if you want/need Tailwind 2.x.) into your project, and then run:
```bash
hugo mod npm pack
npm install
```
You need to add (something like) this to your `hugo.toml`:
```toml
[module]
[module.hugoVersion]
extended = false
min = "0.112.0"
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
source = "hugo_stats.json"
target = "assets/watching/hugo_stats.json"
[build]
writeStats = true
[[build.cachebusters]]
source = "assets/watching/hugo_stats\\.json"
target = "styles\\.css"
[[build.cachebusters]]
source = "(postcss|tailwind)\\.config\\.js"
target = "css"
[[build.cachebusters]]
source = "assets/.*\\.(js|ts|jsx|tsx)"
target = "js"
[[build.cachebusters]]
source = "assets/.*\\.(.*)$"
target = "$1"
```
Then run your project as usual.

View File

@ -1 +0,0 @@
@import "buttons.css";

View File

@ -1,15 +0,0 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@import "components/all.css";
html {
font-size: 14px;
}
@screen md {
html {
font-size: 20px;
}
}

View File

@ -1,311 +0,0 @@
---
title: TailwindCSS Basic Hugo Starter
---
## Overview
### Philosophy
Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
Readability, however, is emphasized above all else. A Markdown-formatted
document should be publishable as-is, as plain text, without looking
like it's been marked up with tags or formatting instructions. While
Markdown's syntax has been influenced by several existing text-to-HTML
filters -- including [Setext](http://docutils.sourceforge.net/mirror/setext.html), [atx](http://www.aaronsw.com/2002/atx/), [Textile](http://textism.com/tools/textile/), [reStructuredText](http://docutils.sourceforge.net/rst.html),
[Grutatext](http://www.triptico.com/software/grutatxt.html), and [EtText](http://ettext.taint.org/doc/) -- the single biggest source of
inspiration for Markdown's syntax is the format of plain text email.
```go
// New creates a new Workers with the given number of workers.
func New(numWorkers int) *Workers {
return &Workers{
sem: make(chan struct{}, numWorkers),
}
}
```
## Block Elements
### Paragraphs and Line Breaks
A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing but spaces or tabs is considered
blank.) Normal paragraphs should not be indented with spaces or tabs.
The implication of the "one or more consecutive lines of text" rule is
that Markdown supports "hard-wrapped" text paragraphs. This differs
significantly from most other text-to-HTML formatters (including Movable
Type's "Convert Line Breaks" option) which translate every line break
character in a paragraph into a `<br />` tag.
When you *do* want to insert a `<br />` break tag using Markdown, you
end a line with two or more spaces, then type return.
### Headers
Markdown supports two styles of headers, [Setext] [1] and [atx] [2].
```go
// Require loads a module the Node.js way.
// Note that this requires that the require function is present;
// if in the browser, and not in Node.js, try Browserify.
func Require(path ...string) *ReactComponent {
m, err := support.Require(path...)
if err != nil {
panic(err)
}
return &ReactComponent{node: m, needsCreate: true}
}
```
Optionally, you may "close" atx-style headers. This is purely
cosmetic -- you can use this if you think it looks better. The
closing hashes don't even need to match the number of hashes
used to open the header. (The number of opening hashes
determines the header level.)
### Blockquotes
Markdown uses email-style `>` characters for blockquoting. If you're
familiar with quoting passages of text in an email message, then you
know how to create a blockquote in Markdown. It looks best if you hard
wrap the text and put a `>` before every line:
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
>
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
> id sem consectetuer libero luctus adipiscing.
Markdown allows you to be lazy and only put the `>` before the first
line of a hard-wrapped paragraph:
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.
Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
adding additional levels of `>`:
> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.
Blockquotes can contain other Markdown elements, including headers, lists,
and code blocks:
> ## This is a header.
>
> 1. This is the first list item.
> 2. This is the second list item.
>
> Here's some example code:
>
> return shell_exec("echo $input | $markdown_script");
Any decent text editor should make email-style quoting easy. For
example, with BBEdit, you can make a selection and choose Increase
Quote Level from the Text menu.
### Lists
Markdown supports ordered (numbered) and unordered (bulleted) lists.
Unordered lists use asterisks, pluses, and hyphens -- interchangably
-- as list markers:
* Red
* Green
* Blue
is equivalent to:
+ Red
+ Green
+ Blue
and:
- Red
- Green
- Blue
Ordered lists use numbers followed by periods:
1. Bird
2. McHale
3. Parish
It's important to note that the actual numbers you use to mark the
list have no effect on the HTML output Markdown produces. The HTML
Markdown produces from the above list is:
If you instead wrote the list in Markdown like this:
1. Bird
1. McHale
1. Parish
or even:
3. Bird
1. McHale
8. Parish
you'd get the exact same HTML output. The point is, if you want to,
you can use ordinal numbers in your ordered Markdown lists, so that
the numbers in your source match the numbers in your published HTML.
But if you want to be lazy, you don't have to.
To make lists look nice, you can wrap items with hanging indents:
* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.
But if you want to be lazy, you don't have to:
* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.
List items may consist of multiple paragraphs. Each subsequent
paragraph in a list item must be indented by either 4 spaces
or one tab:
1. This is a list item with two paragraphs. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit. Aliquam hendrerit
mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet
vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
sit amet velit.
2. Suspendisse id sem consectetuer libero luctus adipiscing.
It looks nice if you indent every line of the subsequent
paragraphs, but here again, Markdown will allow you to be
lazy:
* This is a list item with two paragraphs.
This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit.
* Another item in the same list.
To put a blockquote within a list item, the blockquote's `>`
delimiters need to be indented:
* A list item with a blockquote:
> This is a blockquote
> inside a list item.
To put a code block within a list item, the code block needs
to be indented *twice* -- 8 spaces or two tabs:
* A list item with a code block:
<code goes here>
### Code Blocks
Pre-formatted code blocks are used for writing about programming or
markup source code. Rather than forming normal paragraphs, the lines
of a code block are interpreted literally. Markdown wraps a code block
in both `<pre>` and `<code>` tags.
To produce a code block in Markdown, simply indent every line of the
block by at least 4 spaces or 1 tab.
This is a normal paragraph:
This is a code block.
Here is an example of AppleScript:
tell application "Foo"
beep
end tell
A code block continues until it reaches a line that is not indented
(or the end of the article).
Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)
are automatically converted into HTML entities. This makes it very
easy to include example HTML source code using Markdown -- just paste
it and indent it, and Markdown will handle the hassle of encoding the
ampersands and angle brackets. For example, this:
<div class="footer">
&copy; 2004 Foo Corporation
</div>
Regular Markdown syntax is not processed within code blocks. E.g.,
asterisks are just literal asterisks within a code block. This means
it's also easy to use Markdown to write about Markdown's own syntax.
```
tell application "Foo"
beep
end tell
```
## Span Elements
### Links
Markdown supports two style of links: *inline* and *reference*.
In both styles, the link text is delimited by [square brackets].
To create an inline link, use a set of regular parentheses immediately
after the link text's closing square bracket. Inside the parentheses,
put the URL where you want the link to point, along with an *optional*
title for the link, surrounded in quotes. For example:
This is [an example](http://example.com/) inline link.
[This link](http://example.net/) has no title attribute.
### Emphasis
Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
emphasis. Text wrapped with one `*` or `_` will be wrapped with an
HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML
`<strong>` tag. E.g., this input:
*single asterisks*
_single underscores_
**double asterisks**
__double underscores__
### Code
To indicate a span of code, wrap it with backtick quotes (`` ` ``).
Unlike a pre-formatted code block, a code span indicates code within a
normal paragraph. For example:
Use the `printf()` function.

View File

@ -1,3 +0,0 @@
module github.com/bep/hugo-starter-tailwind-basic/v3
go 1.19

View File

@ -1,29 +0,0 @@
baseURL = "https://example.org"
disableKinds = ["page", "section", "taxonomy", "term"]
[module]
[module.hugoVersion]
extended = false
min = "0.112.0"
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
source = "hugo_stats.json"
target = "assets/watching/hugo_stats.json"
[build]
writeStats = true
[[build.cachebusters]]
source = "assets/watching/hugo_stats\\.json"
target = "styles\\.css"
[[build.cachebusters]]
source = "(postcss|tailwind)\\.config\\.js"
target = "css"
[[build.cachebusters]]
source = "assets/.*\\.(js|ts|jsx|tsx)"
target = "js"
[[build.cachebusters]]
source = "assets/.*\\.(.*)$"
target = "$1"

View File

@ -1,23 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>
{{ .Title }}
</title>
<meta name="description" content="{{ .Description }}" />
{{/* styles */}}
{{ $options := dict "inlineImports" true }}
{{ $styles := resources.Get "css/styles.css" }}
{{ $styles = $styles | resources.PostCSS $options }}
{{ if hugo.IsProduction }}
{{ $styles = $styles | minify | fingerprint | resources.PostProcess }}
{{ end }}
<link href="{{ $styles.RelPermalink }}" rel="stylesheet" />
</head>
<body class="my-10">
<div class="container px-4 lg:mx-auto">
{{ block "main" . }}{{ end }}
</div>
</body>
</html>

View File

@ -1,13 +0,0 @@
{{ define "main" }}
<article class="prose lg:prose-xl">
<h1>Tailwind 3 Hugo Starter</h1>
<h2 class="text-4xl">Testing Tailwind 3 Features</h2>
<div>
<button class="bg-[green] p-4">Share on Twitter</button>
</div>
<h2 class="text-4xl">Markdowns: {{ .Title }}</h2>
{{ .Content }}..
</article>
{{ end }}

View File

@ -1,58 +0,0 @@
[build]
publish = "public"
command = "hugo --gc --minify -d public;"
[context.production.environment]
HUGO_VERSION = "0.112.0"
[context.branch-deploy]
command = "hugo --minify --gc -d public -b $DEPLOY_PRIME_URL"
[context.branch-deploy.environment]
HUGO_VERSION = "0.112.0"
[context.deploy-preview]
command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
[context.deploy-preview.environment]
HUGO_VERSION = "0.112.0"
[[headers]]
for = "/*.jpg"
[headers.values]
Cache-Control = "public, max-age=604800"
[[headers]]
for = "/*.png"
[headers.values]
Cache-Control = "public, max-age=604800"
[[headers]]
for = "/*.css"
[headers.values]
Cache-Control = "public, max-age=604800"
[[headers]]
for = "/*.js"
[headers.values]
Cache-Control = "public, max-age=604800"
[[headers]]
for = "/webfonts/*"
[headers.values]
Cache-Control = "public, max-age=604800"
[[headers]]
for = "/*"
[headers.values]
X-Frame-Options = "DENY"
X-XSS-Protection = "1; mode=block"
X-Content-Type-Options = "nosniff"
Referrer-Policy = "no-referrer"
Content-Security-Policy = "script-src 'self' 'unsafe-inline'"

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +0,0 @@
{
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/bep/hugo-starter-tailwind-basic.git"
},
"dependencies": {},
"devDependencies": {
"@tailwindcss/typography": "^0.4.1",
"autoprefixer": "^10.3.1",
"postcss": "^8.3.6",
"postcss-cli": "^8.3.1",
"postcss-purgecss": "^2.0.3",
"tailwindcss": "^2.2.7"
},
"name": "hugo-starter-tailwind-basic",
"version": "0.1.0"
}

View File

@ -1,16 +0,0 @@
{
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/bep/hugo-starter-tailwind-basic.git"
},
"devDependencies": {
"@tailwindcss/typography": "^0.5.9",
"autoprefixer": "^10.4.14",
"postcss": "^8.4.23",
"postcss-cli": "^10.1.0",
"tailwindcss": "^3.3.2"
},
"name": "hugo-starter-tailwind-basic",
"version": "0.1.0"
}

View File

@ -1,8 +0,0 @@
let tailwindConfig = process.env.HUGO_FILE_TAILWIND_CONFIG_JS || './tailwind.config.js';
const tailwind = require('tailwindcss')(tailwindConfig);
const autoprefixer = require('autoprefixer');
module.exports = {
// eslint-disable-next-line no-process-env
plugins: [tailwind, ...(process.env.HUGO_ENVIRONMENT === 'production' ? [autoprefixer] : [])],
};

View File

@ -1,6 +0,0 @@
const typography = require('@tailwindcss/typography');
module.exports = {
content: ['./hugo_stats.json'],
plugins: [typography],
};