% !TEX program = xelatex
\documentclass[10pt,letterpaper,twocolumn]{article}

% === GEOMETRY ===
\usepackage[top=0.75in, bottom=0.75in, left=0.75in, right=0.75in]{geometry}

% === FONTS ===
\usepackage{fontspec}
\usepackage{unicode-math}

% Body: Latin Modern (Computer Modern successor — the academic standard)
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}

% Custom AC fonts
\newfontfamily\acbold{ywft-processing-bold}[
  Path=../system/public/type/webfonts/,
  Extension=.ttf
]
\newfontfamily\aclight{ywft-processing-light}[
  Path=../system/public/type/webfonts/,
  Extension=.ttf
]
% Berkeley Mono only available as .woff2 — use Latin Modern Mono (academic standard)
\setmonofont{Latin Modern Mono}[Scale=0.85]

% === PACKAGES ===
\usepackage{xcolor}
\usepackage{titlesec}
\usepackage{enumitem}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{multicol}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{ragged2e}
\usepackage{microtype}

% === COLORS (AC palette) ===
\definecolor{acpink}{RGB}{180,72,135}
\definecolor{acpurple}{RGB}{120,80,180}
\definecolor{acdark}{RGB}{64,56,74}
\definecolor{acgray}{RGB}{119,119,119}

% === HYPERREF ===
\hypersetup{
  colorlinks=true,
  linkcolor=acpurple,
  urlcolor=acpurple,
  citecolor=acpurple,
  pdfauthor={Jeffrey Scudder},
  pdftitle={Aesthetic.Computer — Proposal for Social Software Cycle 2},
}

% === SECTION FORMATTING ===
\titleformat{\section}
  {\normalfont\bfseries\normalsize\uppercase}
  {}
  {0em}
  {}
\titlespacing{\section}{0pt}{1.2em}{0.3em}

\titleformat{\subsection}
  {\normalfont\bfseries\small\scshape}
  {}
  {0em}
  {}
\titlespacing{\subsection}{0pt}{0.8em}{0.2em}

% === HEADER/FOOTER ===
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[C]{\footnotesize\color{acgray}Aesthetic{\color{acpink}.}Computer Research Template 1.0 \quad$\cdot$\quad \texttt{@jeffrey} \quad$\cdot$\quad github.com/whistlegraph/aesthetic-computer}

% === CUSTOM COMMANDS ===
\newcommand{\acdot}{{\color{acpink}.}}
\newcommand{\pe}[2]{\texttt{\color{acpurple}#1} #2}
\newcommand{\peh}[1]{\vspace{0.3em}\noindent\textbf{\textsc{#1}}\par\vspace{0.1em}\hrule\vspace{0.2em}}

% === LIST SETTINGS ===
\setlist[itemize]{nosep, leftmargin=1.2em, itemsep=0.1em}
\setlist[enumerate]{nosep, leftmargin=1.2em}

% === COLUMN SEPARATION ===
\setlength{\columnsep}{1.8em}
\setlength{\columnseprule}{0.4pt}

% === PARAGRAPH SETTINGS ===
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.5em}

\begin{document}

% ============ TITLE BLOCK ============

\twocolumn[{%
\begin{center}
{\acbold\fontsize{26pt}{30pt}\selectfont\color{acdark} Aesthetic{\color{acpink}.}Computer}\par
\vspace{0.3em}
{\aclight\fontsize{12pt}{14pt}\selectfont\color{acpink} Proposal for Social Software Cycle 2}\par
\vspace{0.5em}
{\small Jeffrey Scudder \enspace/\enspace \texttt{@jeffrey}}\par
{\small\color{acgray} Score for Social Software --- Cycle 2 \enspace$\cdot$\enspace DESMA 596/199 \enspace$\cdot$\enspace March 2026}\par
{\small\color{acpurple} \url{https://aesthetic.computer} \enspace$\cdot$\enspace \url{https://github.com/whistlegraph/aesthetic-computer} \enspace$\cdot$\enspace \url{https://nopaint.art}}\par
\vspace{0.6em}
\rule{\textwidth}{2pt}
\vspace{0.8em}
\end{center}
}]

% ============ PAGE 1: PROPOSAL ============

\section*{The Score}

I'm submitting Aesthetic Computer (AC)---the open-source creative computing platform I've been building since 2021---as a social software project in active development. I'm not proposing to build a new thing for this cycle. I'm bringing the thing I'm already building into the room for dialogue, feedback, and critical exchange as I continue to develop it alongside its community.

AC is a mobile-first runtime and social network where users write, publish, and share small interactive programs called \emph{pieces}. It has real-time chat, @handles with per-character color customization, ephemeral status updates (ATProto integration for identity and Bluesky bridging), a pixel painting system, a built-in Lisp dialect (KidLisp), multiplayer WebSocket sessions, and user profiles that track creative output. The codebase is open source with 4+ years of continuous development.

The score is simple: I develop AC in the open over 10 weeks, sharing what I'm working on, what decisions I'm facing, and what the community is doing on the platform. The cohort engages as users and as critics---trying the tools, reading the design choices, and giving me feedback I can't get from inside the project.

\section*{What I'm Looking For}

I've been deep inside AC's architecture for years. I know how the systems work. What I lack is outside perspective on the social design---the questions I can't answer alone:

\begin{itemize}
  \item What feels inviting and what feels opaque when you first encounter the platform?
  \item Which social features sustain participation vs.\ which are technically impressive but socially inert?
  \item How does the ``instrument'' metaphor land for people who aren't already invested in it?
  \item What would you want to do on AC that you currently can't?
  \item Where does the design accidentally exclude the people it claims to welcome?
\end{itemize}

These questions require sustained dialogue, not a single usability test. A cohort of practitioners thinking about social software from different angles is the right context for this kind of exchange.

\section*{What the Cohort Gets}

\begin{itemize}
  \item \textbf{A live codebase}---open source, documented, actively changing week to week
  \item \textbf{The dev process}---I work with Emacs, VS Code, and Claude Code, and maintain a living \texttt{SCORE.md}; the process is as legible as the product
  \item \textbf{Platform accounts}---everyone gets an @handle, can paint, chat, set moods, write KidLisp, publish pieces
  \item \textbf{Real community data}---2,800 handles, 18k chat messages, 4,400 paintings, 16k KidLisp programs; the social patterns are there to observe
\end{itemize}

\section*{Why This Cycle}

Casey's framing of ``scores for social software'' maps directly onto how I already think about AC. The platform's \texttt{SCORE.md} literally uses the metaphor of a musical score to organize the project. The interface is designed to work like an instrument---users discover memorizable paths, build literacy through play, and eventually improvise. But I've been composing alone. This cycle is a chance to compose in conversation.

I'm at a specific inflection point. The technical infrastructure is mature. The question now is about social design: how do the features I've built actually shape the way people relate to each other and to creative computing? That's best answered through dialogue with people thinking critically about social software, not through more engineering.

\section*{Practice}

I'm an artist, educator, and software developer. Before AC, I created No Paint (2020), a pixel art tool whose community of non-technical users taught me how people learn computing through social participation in software they love. AC extends that into a full platform: anyone can write, publish, and share interactive programs at a URL.

I teach creative computing and have used AC as infrastructure in courses and workshops. My interest in social software comes from watching people learn computation through social participation---first in No Paint, now in AC. I'm bringing this not as a finished project but as an ongoing practice I want to develop through critical exchange.

% ============ APPENDIX A: NETWORK ============

\onecolumn
\vspace{0.5em}
\rule{\textwidth}{2pt}
\vspace{0.3em}

\begin{center}
{\large\bfseries Appendix A: The Network}\par
\vspace{0.2em}
{\small\itshape Live data from AC's MongoDB cluster --- March 2, 2026}
\end{center}

\vspace{0.5em}

% Stat grid as table
\begin{center}
\begin{tabular}{ccccccccc}
\toprule
\textbf{\color{acpink}\large 2,798} & \textbf{\color{acpink}\large 18,016} & \textbf{\color{acpink}\large 4,392} & \textbf{\color{acpink}\large 2,900} & \textbf{\color{acpink}\large 16,174} & \textbf{\color{acpink}\large 265} & \textbf{\color{acpink}\large 333} & \textbf{\color{acpink}\large 102} & \textbf{\color{acpink}\large 93,122} \\
{\scriptsize\color{acpurple}\textsc{@handles}} &
{\scriptsize\color{acpurple}\textsc{chat msgs}} &
{\scriptsize\color{acpurple}\textsc{paintings}} &
{\scriptsize\color{acpurple}\textsc{moods}} &
{\scriptsize\color{acpurple}\textsc{kidlisp}} &
{\scriptsize\color{acpurple}\textsc{pieces}} &
{\scriptsize\color{acpurple}\textsc{clocks}} &
{\scriptsize\color{acpurple}\textsc{tapes}} &
{\scriptsize\color{acpurple}\textsc{boots}} \\
\bottomrule
\end{tabular}
\end{center}

\begin{center}
\small\textbf{Who makes things:} 1,067 have painted $\cdot$ 997 have posted moods $\cdot$ 59 have written KidLisp $\cdot$ 19 have published pieces
\end{center}

\vspace{0.3em}

\begin{multicols}{2}

\subsection*{The Instrument Loop}

\begin{center}
\small
\texttt{\color{acpurple}prompt} $\rightarrow$ type a piece name $\rightarrow$ \texttt{\color{acpurple}enter} $\rightarrow$ play the piece $\rightarrow$ \texttt{\color{acpurple}esc} $\rightarrow$ back to prompt
\end{center}

\subsection*{User Data Flow}

\begin{center}
\small
\texttt{\color{acpurple}@handle} $\rightarrow$ paint / chat / mood / kid / publish $\rightarrow$ \texttt{\color{acpurple}MongoDB} $\rightarrow$ profile $\rightarrow$ \texttt{\color{acpurple}public URL}\\[0.3em]
{\footnotesize\itshape\color{acpurple} ATProto PDS $\rightarrow$ Bluesky (identity + moods) $\cdot$ paintings $\rightarrow$ DO Spaces CDN}
\end{center}

\columnbreak

\subsection*{Sample Documents (live)}

{\small\ttfamily
\textbf{\color{acpurple}mood}~~\{ mood: "studying astronomy", when: "2026-03-02T12:32:49Z", atproto: \{ rkey: "3mg3b6jcj4k2x" \} \}\\[0.3em]
\textbf{\color{acpurple}painting}~~\{ code: "gfl", slug: "2026.03.02.14.14.39", when: "2026-03-02T13:14:48Z" \}\\[0.3em]
\textbf{\color{acpurple}kidlisp}~~\{ code: "27z", source: "fade:red-blue-black-blue-red\textbackslash nscroll (* 100 amp)", hits: 1 \}\\[0.3em]
\textbf{\color{acpurple}chat}~~\{ text: "y'all gonna piss me off", when: "2026-03-02T05:26:25Z", font: "font\_1" \}\\[0.3em]
\textbf{\color{acpurple}piece}~~\{ code: "zod", slug: "zod", name: "3d-cube", extension: ".mjs", hits: 1 \}
}

\end{multicols}

% ============ ARCHITECTURE & SITEMAP ============

\rule{\textwidth}{2pt}
\vspace{0.3em}

\begin{center}
{\large\bfseries Architecture \& Sitemap}\par
\vspace{0.2em}
{\small\itshape 22 domains $\cdot$ \textasciitilde355 disk routes $\cdot$ \textasciitilde85 API endpoints $\cdot$ open source since 2021}
\end{center}

\vspace{0.3em}

% Service cards as 3x2 table
{\small
\begin{tabularx}{\textwidth}{|X|X|X|}
\hline
\textbf{\textsc{aesthetic.computer}} & \textbf{\textsc{session server}} & \textbf{\textsc{oven.aesthetic.computer}} \\
\begin{itemize}[nosep,leftmargin=0.8em]
\item Netlify --- \textasciitilde85 API endpoints, edge functions
\item Canvas 2D + WebGL2 frontend
\item ES Modules, WebSocket hot-reload
\item Auth0, Firebase, Stripe
\item 351 built-in pieces
\end{itemize} &
\begin{itemize}[nosep,leftmargin=0.8em]
\item Fastify + Geckos.io (WebSocket)
\item Jamsocket ephemeral containers
\item Redis state sync
\item Chat, multiplayer, rooms
\item DigitalOcean + pm2
\end{itemize} &
\begin{itemize}[nosep,leftmargin=0.8em]
\item Express.js + FFmpeg
\item Tape $\rightarrow$ MP4, screenshots
\item OG image generation
\item Caddy (auto HTTPS)
\item DigitalOcean droplet
\end{itemize} \\
\hline
\textbf{\textsc{feed.* / grab.*}} & \textbf{\textsc{data layer}} & \textbf{\textsc{kidlisp.com}} \\
\begin{itemize}[nosep,leftmargin=0.8em]
\item Cloudflare Workers
\item Hono + TypeScript (feed)
\item Browser Rendering API (grab)
\item KV, Durable Objects
\end{itemize} &
\begin{itemize}[nosep,leftmargin=0.8em]
\item MongoDB Atlas --- user content
\item Redis --- session cache
\item DO Spaces (S3 CDN) --- media
\item ATProto PDS --- identity + Bluesky
\end{itemize} &
\begin{itemize}[nosep,leftmargin=0.8em]
\item 118 built-in functions, 12 categories
\item Evaluator: lib/kidlisp.mjs
\item Programs stored in MongoDB
\item Shareable by 3-char code
\end{itemize} \\
\hline
\end{tabularx}
}

\vspace{0.4em}

% Source box
\noindent\fbox{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule}{%
\small
\textbf{Source:} github.com/whistlegraph/aesthetic-computer $\cdot$ boot.mjs $\rightarrow$ bios.mjs $\rightarrow$ disk.mjs (\textasciitilde572KB API) $\rightarrow$ disks/*.mjs\\
\textbf{Languages:} JavaScript (ES Modules), TypeScript (workers), KidLisp, HTML/CSS\\
\textbf{Dev:} Docker devcontainer across Windows / macOS / Fedora $\cdot$ Emacs (Evil mode) + VS Code + Claude Code $\cdot$ Fish shell $\cdot$ esbuild, Jasmine, Vitest, Wrangler, pm2\\
\textbf{22 domains:} notepat.com, kidlisp.com, sotce.net, botce.ac, wipppps.world + subdomains (feed, grab, help, oven, etc.)
}}

\vspace{0.5em}

% ============ PIECE CATALOG ============

\noindent\textbf{\textsc{362 Pieces}} --- type a name at the prompt to play

\vspace{0.3em}

\begin{multicols}{3}
\scriptsize

\peh{Drawing \& Painting}
\pe{paint}{AI-powered auto-painting from text}\\
\pe{nopaint}{paint or reject, then publish}\\
\pe{line}{simple line brush}\\
\pe{pline}{perfect 1px line algorithm}\\
\pe{shape}{filled freehand shapes}\\
\pe{oval}{draw ovals and circles}\\
\pe{box}{rectangles with modes + thickness}\\
\pe{fill}{flood fill with a color}\\
\pe{spray}{stylus-based spray painting}\\
\pe{smear}{smear brush (co-designed by Rapter)}\\
\pe{marker}{brush interpolation tool}\\
\pe{crayon}{draw with a crayon}\\
\pe{sparkle-brush}{sparkle emitter}\\
\pe{bits}{confetti/speckle brush}\\
\pe{multipen}{multi-touch tracked cursors}\\
\pe{doodle}{build up and replay points}\\
\pe{wand}{generative art viewer}\\
\pe{blur}{blur pixels with a radius}\\
\pe{crop}{crop or extend painting}\\
\pe{stamp}{import painting as stamp}\\
\pe{pull}{copy + move pixels}\\
\pe{snap}{camera still to painting}\\
\pe{camera}{paste stills to painting}\\
\pe{paste}{load external image}\\
\pe{handprint}{stamp your hand}\\
\pe{selfie}{decorated photo (w/ Molly Soda)}\\
\pe{painting}{view any painting by number}\\
\pe{paintings}{user portfolio page}\\
\pe{colors}{scrollable CSS color list}\\
\pe{nail}{multiplayer thumbnailing}\\
\pe{wipe}{clear painting with a color}\\
\pe{icon}{add vector glyphs (Molly Soda)}\\
\pe{colplay}{painting as tonal keyboard}\\
\pe{make}{KidLisp from text prompts}\\
\pe{vary}{AI-vary an existing image}

\peh{Music \& Audio}
\pe{notepat}{tap pads to play notes}\\
\pe{beat}{rhythmic percussion}\\
\pe{tone}{single frequency + wave type}\\
\pe{chord}{play a musical chord}\\
\pe{melody}{plays back a tracker score}\\
\pe{song}{melody + lyrics sing-along}\\
\pe{sing}{character responds with notes}\\
\pe{bleep}{colored box tone maker}\\
\pe{say}{text-to-speech}\\
\pe{whistle}{mic input $\rightarrow$ sine wave melody}\\
\pe{metronome}{visual metronome}\\
\pe{microphone}{audio + video monitor}\\
\pe{uke}{live ukulele pitch detector}\\
\pe{pedal}{audio effect pedal for Ableton}\\
\pe{amp}{microphone amplifier}\\
\pe{tracker}{12-tone composer}\\
\pe{3x3}{ortholinear pad instrument}\\
\pe{rattle}{accelerometer shaker}\\
\pe{squaresong}{a song as a program}\\
\pe{dync}{percussive pad instrument}\\
\pe{slip}{single voice instrument}\\
\pe{clock}{clock with melody + live keyboard}\\
\pe{clocks}{browse saved clock melodies}\\
\pe{stick}{render clock melody to WAV}\\
\pe{amby}{tonal radial music generator}\\
\pe{autopat}{notepat autoplay jukebox}\\
\pe{stample}{spread a sample across pats}\\
\pe{sfx}{sound effects player}\\
\pe{bgm}{background music + visualizer}\\
\pe{r8dio}{Danish talk radio stream}\\
\pe{kpbj}{KPBJ.FM community radio}\\
\pe{audio}{longform player + subtitles}\\
\pe{butterflies}{multi-touch bitmap instrument}\\
\pe{seashells}{bytebeat algorithmic synthesis}\\
\pe{shh}{noise drones}\\
\pe{notepat-tv}{remote notepat pictures}

\peh{Games \& Interactive}
\pe{1v1}{multiplayer Quake-like 3D shooter}\\
\pe{brick-breaker}{brick breakout game}\\
\pe{scawy-snake}{snake game with color growth}\\
\pe{run\&gun}{2D side-scrolling shooter}\\
\pe{hop}{first-person shooter}\\
\pe{sno}{snowball game (ida, mxsage, jeffrey)}\\
\pe{words}{Word Munchers-style game}\\
\pe{gostop}{body movement regulation game}\\
\pe{staka}{stack colors with your hand}\\
\pe{flap}{animated flapping sequence}\\
\pe{fly}{bounce around in 3D}\\
\pe{field}{open 3D walking space}\\
\pe{pond}{chat in ripples}\\
\pe{bubble}{floating bubbles (mxsage + jeffrey)}\\
\pe{balls}{balls bouncing on lines}\\
\pe{rain}{rain falling (drawn by Aspen)}\\
\pe{toss}{two oscillators at once}\\
\pe{starfield}{classic starfield effect}\\
\pe{metaballs}{blob rendering}\\
\pe{ant}{colony simulation + pheromones}\\
\pe{fps}{basic first-person environment}\\
\pe{game}{basic game template}\\
\pe{horizon}{side-scrolling world}\\
\pe{i}{walk as the letter ``i''}\\
\pe{paintball}{paint on a 3D ball}\\
\pe{cards}{playing card (tap to flip)}\\
\pe{tremory}{temporal memory trainer}

\peh{Social \& Community}
\pe{mood}{choose a mood + build image}\\
\pe{moods}{live feed of all moods}\\
\pe{chat}{multiplayer messaging}\\
\pe{share}{QR code link sharing}\\
\pe{sign}{IRL message, upside down}\\
\pe{signature}{timestamped painting stamp}\\
\pe{mail}{email preferences + blast history}\\
\pe{list}{comprehensive piece directory}\\
\pe{handle}{customize @handle colors}\\
\pe{handles}{directory of all handles}\\
\pe{get-handle}{claim your @handle}\\
\pe{profile}{public user scorecard}\\
\pe{ptt}{push-to-talk voice chat}\\
\pe{handtime}{hand-based messaging}\\
\pe{insta}{browse Instagram profiles}\\
\pe{play}{dramaturgical messaging game}

\peh{Characters}
\pe{mom}{doting mother}\\
\pe{dad}{handyman disguised as father}\\
\pe{brother}{younger brother}\\
\pe{sister}{know-it-all sister}\\
\pe{husband}{forgetful husband}\\
\pe{wife}{nagging wife}\\
\pe{boyfriend}{avoidant boyfriend}\\
\pe{girlfriend}{GF with savior complex}\\
\pe{kid}{software kid}\\
\pe{angel}{guardian angel (Judeo-Christian)}\\
\pe{liar}{compulsive liar}\\
\pe{sage}{walker demo (mxsage + jeffrey)}\\
\pe{tobby}{type characters in time}\\
\pe{valbear}{valentine bear card maker}\\
\pe{gargoyle}{character (@georgica)}\\
\pe{dolls}{2D cartoon videos with mic}\\
\pe{robo}{robot drawing automation}\\
\pe{botce}{paywalled AI chatbot}

\peh{KidLisp \& Programming}
\pe{kidlisp}{default KidLisp piece}\\
\pe{keep}{preserve KidLisp as Tezos KEEP}\\
\pe{kept}{view KEEP mint result}\\
\pe{prompt}{LLM-backed console}\\
\pe{learn}{chatbot tutorial}\\
\pe{lang}{interface language chooser}\\
\pe{decode}{tokens $\rightarrow$ poems}\\
\pe{encode}{poems $\rightarrow$ tokens}\\
\pe{docgen}{generate piece API docs}\\
\pe{\$}{live KidLisp code preview feed}\\
\pe{pack}{offline HTML for KidLisp piece}\\
\pe{code}{graphical KidLisp editor (.lisp)}\\
\pe{chart}{make a piece from a diagram}

\peh{Sequencing \& Routing}
\pe{merry}{URL-able piece sequencer with timing}\\
\pe{merryo}{looping merry (plays forever)}\\
\pe{mo}{quick looping merry shorthand}\\
\pe{merry-fade}{crossfade between KidLisp \$codes}\\
\pe{pip}{piece-in-piece, run multiple at once}\\
\pe{split}{two AC instances side by side}\\
\pe{m4d}{generate Max for Live device}

\peh{Whistlegraph \& Media}
\pe{whistlegraph}{2D recording tool}\\
\pe{wg}{Feral File card player}\\
\pe{wgr}{whistlegraph recorder}\\
\pe{wipppps}{audio-reactive fractals}\\
\pe{neo-wipppps}{wipppps music visualizations}\\
\pe{m2w2}{Music 2 Whistlegraph 2}\\
\pe{stage}{performance tool}\\
\pe{tv}{vertical tape feed (``For You'')}\\
\pe{tapes}{browse recent tapes}\\
\pe{replay}{view any tape recording}\\
\pe{video}{playback + export video}\\
\pe{cap}{camera video recorder}\\
\pe{screen}{mirror system display}\\
\pe{desk}{webcam/Elmo selector}\\
\pe{screenshots}{browse dev screenshots}

\peh{Visualization \& Art}
\pe{halley}{Halley's method fractal}\\
\pe{morpho}{pixel sorting morphogenesis lab}\\
\pe{noise}{noise on every pixel}\\
\pe{rainbow-x}{centered rainbow X}\\
\pe{neural-garden}{GPT learns drawing gestures}\\
\pe{a-star}{A* pathfinding demo}\\
\pe{zzzwap}{dynamic pathfinding for wipppps}\\
\pe{spline}{interactive line with curves}\\
\pe{digitpain0--3}{animated DIGITPAIN series}\\
\pe{hell\_-world}{random hell\_ painting viewer}\\
\pe{freaky-flowers}{random Freaky Flower token}\\
\pe{commits}{live GitHub commit visualization}\\
\pe{visualizer}{color history decay effect}\\
\pe{lmn-flower}{pull a petal}\\
\pe{lmn-petal}{touch an interactive petal}\\
\pe{opinion}{essays on computing \& creativity}\\
\pe{weather}{Weather Channel + smooth jazz}

\peh{System \& Utility}
\pe{about}{AC Q\&A chatbot}\\
\pe{demo}{what is aesthetic.computer?}\\
\pe{deck}{slide deck explainer}\\
\pe{description}{read about any command}\\
\pe{desktop}{download Electron desktop app}\\
\pe{mobile}{download iOS/Android app}\\
\pe{os}{bootable FedAC OS image}\\
\pe{theme}{prompt theme chooser}\\
\pe{token}{display auth token (3 taps)}\\
\pe{wallet}{animated Tezos wallet display}\\
\pe{connect-wallet}{wallet connection page}\\
\pe{download}{screenshottable download screen}\\
\pe{ads}{advertise on AC}\\
\pe{mug}{ceramic mug with your painting}\\
\pe{mugs}{browse recent mugs}\\
\pe{boots}{boot telemetry viewer}\\
\pe{booted-by}{who booted AC}\\
\pe{404}{error page}\\
\pe{delete-erase-and-forget-me}{delete account}

\peh{Translation}
\pe{english}{/ \texttt{\color{acpurple}en} translate to English}\\
\pe{danish}{/ \texttt{\color{acpurple}da} translate to Danish}\\
\pe{spanish}{/ \texttt{\color{acpurple}es} translate to Spanish}

\peh{External \& Hardware}
\pe{ableton}{Max for Live device browser}\\
\pe{aframe}{A-Frame VR drawing (WebXR)}\\
\pe{gameboy}{GameBoy emulator}\\
\pe{gamepad}{gamepad connectivity test}\\
\pe{ff1}{send art to FF1 Art Computer}\\
\pe{ordfish}{virtual fish viewer}\\
\pe{ordsy}{B\&W ordsy picture palette}\\
\pe{snappidaggs}{Goodiepal archive browser}\\
\pe{prutti}{Lessons NOT Learnt (Goodiepal)}\\
\pe{triquilt}{half-square triangle quilt tool}\\
\pe{hueber}{psychedelic Uber}

\peh{Education \& Workshop}
\pe{ucla-1}{-- \texttt{\color{acpurple}ucla-7} UCLA workshop lessons}\\
+ \texttt{\color{acpurple}-keyboard} \texttt{\color{acpurple}-box} \texttt{\color{acpurple}-turtle} \texttt{\color{acpurple}-balls} \texttt{\color{acpurple}-dial} \texttt{\color{acpurple}-jump} variants\\
\pe{baktok}{learn to talk backwards}\\
\pe{laer-klokken}{learn the clock}\\
\pe{alphapoet}{alphabetical nonsense poet}

\peh{ABC123 Series (36)}
\pe{a}{\texttt{\color{acpurple}--z} interactive letters with musical notes}\\
\pe{0}{\texttt{\color{acpurple}--9} interactive numbers with sounds}

\peh{Dynamic Patterns}
\pe{/@handle}{$\rightarrow$ user profile}\\
\pe{/@handle/piece}{$\rightarrow$ user-published piece}\\
\pe{/preview/*}{$\rightarrow$ OG images}\\
\pe{/session/*}{$\rightarrow$ multiplayer rooms}

\end{multicols}

\end{document}
