Monorepo for Aesthetic.Computer
aesthetic.computer
1% !TEX program = xelatex
2\documentclass[10pt,letterpaper,twocolumn]{article}
3
4% === GEOMETRY ===
5\usepackage[top=0.75in, bottom=0.75in, left=0.75in, right=0.75in]{geometry}
6
7% === FONTS ===
8\usepackage{fontspec}
9\usepackage{unicode-math}
10
11% Body: Latin Modern (Computer Modern successor — the academic standard)
12\setmainfont{Latin Modern Roman}
13\setsansfont{Latin Modern Sans}
14
15% Custom AC fonts
16\newfontfamily\acbold{ywft-processing-bold}[
17 Path=../system/public/type/webfonts/,
18 Extension=.ttf
19]
20\newfontfamily\aclight{ywft-processing-light}[
21 Path=../system/public/type/webfonts/,
22 Extension=.ttf
23]
24% Berkeley Mono only available as .woff2 — use Latin Modern Mono (academic standard)
25\setmonofont{Latin Modern Mono}[Scale=0.85]
26
27% === PACKAGES ===
28\usepackage{xcolor}
29\usepackage{titlesec}
30\usepackage{enumitem}
31\usepackage{booktabs}
32\usepackage{tabularx}
33\usepackage{multicol}
34\usepackage{fancyhdr}
35\usepackage{hyperref}
36\usepackage{graphicx}
37\usepackage{ragged2e}
38\usepackage{microtype}
39
40% === COLORS (AC palette) ===
41\definecolor{acpink}{RGB}{180,72,135}
42\definecolor{acpurple}{RGB}{120,80,180}
43\definecolor{acdark}{RGB}{64,56,74}
44\definecolor{acgray}{RGB}{119,119,119}
45
46% === HYPERREF ===
47\hypersetup{
48 colorlinks=true,
49 linkcolor=acpurple,
50 urlcolor=acpurple,
51 citecolor=acpurple,
52 pdfauthor={Jeffrey Scudder},
53 pdftitle={Aesthetic.Computer — Proposal for Social Software Cycle 2},
54}
55
56% === SECTION FORMATTING ===
57\titleformat{\section}
58 {\normalfont\bfseries\normalsize\uppercase}
59 {}
60 {0em}
61 {}
62\titlespacing{\section}{0pt}{1.2em}{0.3em}
63
64\titleformat{\subsection}
65 {\normalfont\bfseries\small\scshape}
66 {}
67 {0em}
68 {}
69\titlespacing{\subsection}{0pt}{0.8em}{0.2em}
70
71% === HEADER/FOOTER ===
72\pagestyle{fancy}
73\fancyhf{}
74\renewcommand{\headrulewidth}{0pt}
75\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}
76
77% === CUSTOM COMMANDS ===
78\newcommand{\acdot}{{\color{acpink}.}}
79\newcommand{\pe}[2]{\texttt{\color{acpurple}#1} #2}
80\newcommand{\peh}[1]{\vspace{0.3em}\noindent\textbf{\textsc{#1}}\par\vspace{0.1em}\hrule\vspace{0.2em}}
81
82% === LIST SETTINGS ===
83\setlist[itemize]{nosep, leftmargin=1.2em, itemsep=0.1em}
84\setlist[enumerate]{nosep, leftmargin=1.2em}
85
86% === COLUMN SEPARATION ===
87\setlength{\columnsep}{1.8em}
88\setlength{\columnseprule}{0.4pt}
89
90% === PARAGRAPH SETTINGS ===
91\setlength{\parindent}{0pt}
92\setlength{\parskip}{0.5em}
93
94\begin{document}
95
96% ============ TITLE BLOCK ============
97
98\twocolumn[{%
99\begin{center}
100{\acbold\fontsize{26pt}{30pt}\selectfont\color{acdark} Aesthetic{\color{acpink}.}Computer}\par
101\vspace{0.3em}
102{\aclight\fontsize{12pt}{14pt}\selectfont\color{acpink} Proposal for Social Software Cycle 2}\par
103\vspace{0.5em}
104{\small Jeffrey Scudder \enspace/\enspace \texttt{@jeffrey}}\par
105{\small\color{acgray} Score for Social Software --- Cycle 2 \enspace$\cdot$\enspace DESMA 596/199 \enspace$\cdot$\enspace March 2026}\par
106{\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
107\vspace{0.6em}
108\rule{\textwidth}{2pt}
109\vspace{0.8em}
110\end{center}
111}]
112
113% ============ PAGE 1: PROPOSAL ============
114
115\section*{The Score}
116
117I'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.
118
119AC 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.
120
121The 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.
122
123\section*{What I'm Looking For}
124
125I'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:
126
127\begin{itemize}
128 \item What feels inviting and what feels opaque when you first encounter the platform?
129 \item Which social features sustain participation vs.\ which are technically impressive but socially inert?
130 \item How does the ``instrument'' metaphor land for people who aren't already invested in it?
131 \item What would you want to do on AC that you currently can't?
132 \item Where does the design accidentally exclude the people it claims to welcome?
133\end{itemize}
134
135These 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.
136
137\section*{What the Cohort Gets}
138
139\begin{itemize}
140 \item \textbf{A live codebase}---open source, documented, actively changing week to week
141 \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
142 \item \textbf{Platform accounts}---everyone gets an @handle, can paint, chat, set moods, write KidLisp, publish pieces
143 \item \textbf{Real community data}---2,800 handles, 18k chat messages, 4,400 paintings, 16k KidLisp programs; the social patterns are there to observe
144\end{itemize}
145
146\section*{Why This Cycle}
147
148Casey'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.
149
150I'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.
151
152\section*{Practice}
153
154I'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.
155
156I 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.
157
158% ============ APPENDIX A: NETWORK ============
159
160\onecolumn
161\vspace{0.5em}
162\rule{\textwidth}{2pt}
163\vspace{0.3em}
164
165\begin{center}
166{\large\bfseries Appendix A: The Network}\par
167\vspace{0.2em}
168{\small\itshape Live data from AC's MongoDB cluster --- March 2, 2026}
169\end{center}
170
171\vspace{0.5em}
172
173% Stat grid as table
174\begin{center}
175\begin{tabular}{ccccccccc}
176\toprule
177\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} \\
178{\scriptsize\color{acpurple}\textsc{@handles}} &
179{\scriptsize\color{acpurple}\textsc{chat msgs}} &
180{\scriptsize\color{acpurple}\textsc{paintings}} &
181{\scriptsize\color{acpurple}\textsc{moods}} &
182{\scriptsize\color{acpurple}\textsc{kidlisp}} &
183{\scriptsize\color{acpurple}\textsc{pieces}} &
184{\scriptsize\color{acpurple}\textsc{clocks}} &
185{\scriptsize\color{acpurple}\textsc{tapes}} &
186{\scriptsize\color{acpurple}\textsc{boots}} \\
187\bottomrule
188\end{tabular}
189\end{center}
190
191\begin{center}
192\small\textbf{Who makes things:} 1,067 have painted $\cdot$ 997 have posted moods $\cdot$ 59 have written KidLisp $\cdot$ 19 have published pieces
193\end{center}
194
195\vspace{0.3em}
196
197\begin{multicols}{2}
198
199\subsection*{The Instrument Loop}
200
201\begin{center}
202\small
203\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
204\end{center}
205
206\subsection*{User Data Flow}
207
208\begin{center}
209\small
210\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]
211{\footnotesize\itshape\color{acpurple} ATProto PDS $\rightarrow$ Bluesky (identity + moods) $\cdot$ paintings $\rightarrow$ DO Spaces CDN}
212\end{center}
213
214\columnbreak
215
216\subsection*{Sample Documents (live)}
217
218{\small\ttfamily
219\textbf{\color{acpurple}mood}~~\{ mood: "studying astronomy", when: "2026-03-02T12:32:49Z", atproto: \{ rkey: "3mg3b6jcj4k2x" \} \}\\[0.3em]
220\textbf{\color{acpurple}painting}~~\{ code: "gfl", slug: "2026.03.02.14.14.39", when: "2026-03-02T13:14:48Z" \}\\[0.3em]
221\textbf{\color{acpurple}kidlisp}~~\{ code: "27z", source: "fade:red-blue-black-blue-red\textbackslash nscroll (* 100 amp)", hits: 1 \}\\[0.3em]
222\textbf{\color{acpurple}chat}~~\{ text: "y'all gonna piss me off", when: "2026-03-02T05:26:25Z", font: "font\_1" \}\\[0.3em]
223\textbf{\color{acpurple}piece}~~\{ code: "zod", slug: "zod", name: "3d-cube", extension: ".mjs", hits: 1 \}
224}
225
226\end{multicols}
227
228% ============ ARCHITECTURE & SITEMAP ============
229
230\rule{\textwidth}{2pt}
231\vspace{0.3em}
232
233\begin{center}
234{\large\bfseries Architecture \& Sitemap}\par
235\vspace{0.2em}
236{\small\itshape 22 domains $\cdot$ \textasciitilde355 disk routes $\cdot$ \textasciitilde85 API endpoints $\cdot$ open source since 2021}
237\end{center}
238
239\vspace{0.3em}
240
241% Service cards as 3x2 table
242{\small
243\begin{tabularx}{\textwidth}{|X|X|X|}
244\hline
245\textbf{\textsc{aesthetic.computer}} & \textbf{\textsc{session server}} & \textbf{\textsc{oven.aesthetic.computer}} \\
246\begin{itemize}[nosep,leftmargin=0.8em]
247\item Netlify --- \textasciitilde85 API endpoints, edge functions
248\item Canvas 2D + WebGL2 frontend
249\item ES Modules, WebSocket hot-reload
250\item Auth0, Firebase, Stripe
251\item 351 built-in pieces
252\end{itemize} &
253\begin{itemize}[nosep,leftmargin=0.8em]
254\item Fastify + Geckos.io (WebSocket)
255\item Jamsocket ephemeral containers
256\item Redis state sync
257\item Chat, multiplayer, rooms
258\item DigitalOcean + pm2
259\end{itemize} &
260\begin{itemize}[nosep,leftmargin=0.8em]
261\item Express.js + FFmpeg
262\item Tape $\rightarrow$ MP4, screenshots
263\item OG image generation
264\item Caddy (auto HTTPS)
265\item DigitalOcean droplet
266\end{itemize} \\
267\hline
268\textbf{\textsc{feed.* / grab.*}} & \textbf{\textsc{data layer}} & \textbf{\textsc{kidlisp.com}} \\
269\begin{itemize}[nosep,leftmargin=0.8em]
270\item Cloudflare Workers
271\item Hono + TypeScript (feed)
272\item Browser Rendering API (grab)
273\item KV, Durable Objects
274\end{itemize} &
275\begin{itemize}[nosep,leftmargin=0.8em]
276\item MongoDB Atlas --- user content
277\item Redis --- session cache
278\item DO Spaces (S3 CDN) --- media
279\item ATProto PDS --- identity + Bluesky
280\end{itemize} &
281\begin{itemize}[nosep,leftmargin=0.8em]
282\item 118 built-in functions, 12 categories
283\item Evaluator: lib/kidlisp.mjs
284\item Programs stored in MongoDB
285\item Shareable by 3-char code
286\end{itemize} \\
287\hline
288\end{tabularx}
289}
290
291\vspace{0.4em}
292
293% Source box
294\noindent\fbox{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule}{%
295\small
296\textbf{Source:} github.com/whistlegraph/aesthetic-computer $\cdot$ boot.mjs $\rightarrow$ bios.mjs $\rightarrow$ disk.mjs (\textasciitilde572KB API) $\rightarrow$ disks/*.mjs\\
297\textbf{Languages:} JavaScript (ES Modules), TypeScript (workers), KidLisp, HTML/CSS\\
298\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\\
299\textbf{22 domains:} notepat.com, kidlisp.com, sotce.net, botce.ac, wipppps.world + subdomains (feed, grab, help, oven, etc.)
300}}
301
302\vspace{0.5em}
303
304% ============ PIECE CATALOG ============
305
306\noindent\textbf{\textsc{362 Pieces}} --- type a name at the prompt to play
307
308\vspace{0.3em}
309
310\begin{multicols}{3}
311\scriptsize
312
313\peh{Drawing \& Painting}
314\pe{paint}{AI-powered auto-painting from text}\\
315\pe{nopaint}{paint or reject, then publish}\\
316\pe{line}{simple line brush}\\
317\pe{pline}{perfect 1px line algorithm}\\
318\pe{shape}{filled freehand shapes}\\
319\pe{oval}{draw ovals and circles}\\
320\pe{box}{rectangles with modes + thickness}\\
321\pe{fill}{flood fill with a color}\\
322\pe{spray}{stylus-based spray painting}\\
323\pe{smear}{smear brush (co-designed by Rapter)}\\
324\pe{marker}{brush interpolation tool}\\
325\pe{crayon}{draw with a crayon}\\
326\pe{sparkle-brush}{sparkle emitter}\\
327\pe{bits}{confetti/speckle brush}\\
328\pe{multipen}{multi-touch tracked cursors}\\
329\pe{doodle}{build up and replay points}\\
330\pe{wand}{generative art viewer}\\
331\pe{blur}{blur pixels with a radius}\\
332\pe{crop}{crop or extend painting}\\
333\pe{stamp}{import painting as stamp}\\
334\pe{pull}{copy + move pixels}\\
335\pe{snap}{camera still to painting}\\
336\pe{camera}{paste stills to painting}\\
337\pe{paste}{load external image}\\
338\pe{handprint}{stamp your hand}\\
339\pe{selfie}{decorated photo (w/ Molly Soda)}\\
340\pe{painting}{view any painting by number}\\
341\pe{paintings}{user portfolio page}\\
342\pe{colors}{scrollable CSS color list}\\
343\pe{nail}{multiplayer thumbnailing}\\
344\pe{wipe}{clear painting with a color}\\
345\pe{icon}{add vector glyphs (Molly Soda)}\\
346\pe{colplay}{painting as tonal keyboard}\\
347\pe{make}{KidLisp from text prompts}\\
348\pe{vary}{AI-vary an existing image}
349
350\peh{Music \& Audio}
351\pe{notepat}{tap pads to play notes}\\
352\pe{beat}{rhythmic percussion}\\
353\pe{tone}{single frequency + wave type}\\
354\pe{chord}{play a musical chord}\\
355\pe{melody}{plays back a tracker score}\\
356\pe{song}{melody + lyrics sing-along}\\
357\pe{sing}{character responds with notes}\\
358\pe{bleep}{colored box tone maker}\\
359\pe{say}{text-to-speech}\\
360\pe{whistle}{mic input $\rightarrow$ sine wave melody}\\
361\pe{metronome}{visual metronome}\\
362\pe{microphone}{audio + video monitor}\\
363\pe{uke}{live ukulele pitch detector}\\
364\pe{pedal}{audio effect pedal for Ableton}\\
365\pe{amp}{microphone amplifier}\\
366\pe{tracker}{12-tone composer}\\
367\pe{3x3}{ortholinear pad instrument}\\
368\pe{rattle}{accelerometer shaker}\\
369\pe{squaresong}{a song as a program}\\
370\pe{dync}{percussive pad instrument}\\
371\pe{slip}{single voice instrument}\\
372\pe{clock}{clock with melody + live keyboard}\\
373\pe{clocks}{browse saved clock melodies}\\
374\pe{stick}{render clock melody to WAV}\\
375\pe{amby}{tonal radial music generator}\\
376\pe{autopat}{notepat autoplay jukebox}\\
377\pe{stample}{spread a sample across pats}\\
378\pe{sfx}{sound effects player}\\
379\pe{bgm}{background music + visualizer}\\
380\pe{r8dio}{Danish talk radio stream}\\
381\pe{kpbj}{KPBJ.FM community radio}\\
382\pe{audio}{longform player + subtitles}\\
383\pe{butterflies}{multi-touch bitmap instrument}\\
384\pe{seashells}{bytebeat algorithmic synthesis}\\
385\pe{shh}{noise drones}\\
386\pe{notepat-tv}{remote notepat pictures}
387
388\peh{Games \& Interactive}
389\pe{1v1}{multiplayer Quake-like 3D shooter}\\
390\pe{brick-breaker}{brick breakout game}\\
391\pe{scawy-snake}{snake game with color growth}\\
392\pe{run\&gun}{2D side-scrolling shooter}\\
393\pe{hop}{first-person shooter}\\
394\pe{sno}{snowball game (ida, mxsage, jeffrey)}\\
395\pe{words}{Word Munchers-style game}\\
396\pe{gostop}{body movement regulation game}\\
397\pe{staka}{stack colors with your hand}\\
398\pe{flap}{animated flapping sequence}\\
399\pe{fly}{bounce around in 3D}\\
400\pe{field}{open 3D walking space}\\
401\pe{pond}{chat in ripples}\\
402\pe{bubble}{floating bubbles (mxsage + jeffrey)}\\
403\pe{balls}{balls bouncing on lines}\\
404\pe{rain}{rain falling (drawn by Aspen)}\\
405\pe{toss}{two oscillators at once}\\
406\pe{starfield}{classic starfield effect}\\
407\pe{metaballs}{blob rendering}\\
408\pe{ant}{colony simulation + pheromones}\\
409\pe{fps}{basic first-person environment}\\
410\pe{game}{basic game template}\\
411\pe{horizon}{side-scrolling world}\\
412\pe{i}{walk as the letter ``i''}\\
413\pe{paintball}{paint on a 3D ball}\\
414\pe{cards}{playing card (tap to flip)}\\
415\pe{tremory}{temporal memory trainer}
416
417\peh{Social \& Community}
418\pe{mood}{choose a mood + build image}\\
419\pe{moods}{live feed of all moods}\\
420\pe{chat}{multiplayer messaging}\\
421\pe{share}{QR code link sharing}\\
422\pe{sign}{IRL message, upside down}\\
423\pe{signature}{timestamped painting stamp}\\
424\pe{mail}{email preferences + blast history}\\
425\pe{list}{comprehensive piece directory}\\
426\pe{handle}{customize @handle colors}\\
427\pe{handles}{directory of all handles}\\
428\pe{get-handle}{claim your @handle}\\
429\pe{profile}{public user scorecard}\\
430\pe{ptt}{push-to-talk voice chat}\\
431\pe{handtime}{hand-based messaging}\\
432\pe{insta}{browse Instagram profiles}\\
433\pe{play}{dramaturgical messaging game}
434
435\peh{Characters}
436\pe{mom}{doting mother}\\
437\pe{dad}{handyman disguised as father}\\
438\pe{brother}{younger brother}\\
439\pe{sister}{know-it-all sister}\\
440\pe{husband}{forgetful husband}\\
441\pe{wife}{nagging wife}\\
442\pe{boyfriend}{avoidant boyfriend}\\
443\pe{girlfriend}{GF with savior complex}\\
444\pe{kid}{software kid}\\
445\pe{angel}{guardian angel (Judeo-Christian)}\\
446\pe{liar}{compulsive liar}\\
447\pe{sage}{walker demo (mxsage + jeffrey)}\\
448\pe{tobby}{type characters in time}\\
449\pe{valbear}{valentine bear card maker}\\
450\pe{gargoyle}{character (@georgica)}\\
451\pe{dolls}{2D cartoon videos with mic}\\
452\pe{robo}{robot drawing automation}\\
453\pe{botce}{paywalled AI chatbot}
454
455\peh{KidLisp \& Programming}
456\pe{kidlisp}{default KidLisp piece}\\
457\pe{keep}{preserve KidLisp as Tezos KEEP}\\
458\pe{kept}{view KEEP mint result}\\
459\pe{prompt}{LLM-backed console}\\
460\pe{learn}{chatbot tutorial}\\
461\pe{lang}{interface language chooser}\\
462\pe{decode}{tokens $\rightarrow$ poems}\\
463\pe{encode}{poems $\rightarrow$ tokens}\\
464\pe{docgen}{generate piece API docs}\\
465\pe{\$}{live KidLisp code preview feed}\\
466\pe{pack}{offline HTML for KidLisp piece}\\
467\pe{code}{graphical KidLisp editor (.lisp)}\\
468\pe{chart}{make a piece from a diagram}
469
470\peh{Sequencing \& Routing}
471\pe{merry}{URL-able piece sequencer with timing}\\
472\pe{merryo}{looping merry (plays forever)}\\
473\pe{mo}{quick looping merry shorthand}\\
474\pe{merry-fade}{crossfade between KidLisp \$codes}\\
475\pe{pip}{piece-in-piece, run multiple at once}\\
476\pe{split}{two AC instances side by side}\\
477\pe{m4d}{generate Max for Live device}
478
479\peh{Whistlegraph \& Media}
480\pe{whistlegraph}{2D recording tool}\\
481\pe{wg}{Feral File card player}\\
482\pe{wgr}{whistlegraph recorder}\\
483\pe{wipppps}{audio-reactive fractals}\\
484\pe{neo-wipppps}{wipppps music visualizations}\\
485\pe{m2w2}{Music 2 Whistlegraph 2}\\
486\pe{stage}{performance tool}\\
487\pe{tv}{vertical tape feed (``For You'')}\\
488\pe{tapes}{browse recent tapes}\\
489\pe{replay}{view any tape recording}\\
490\pe{video}{playback + export video}\\
491\pe{cap}{camera video recorder}\\
492\pe{screen}{mirror system display}\\
493\pe{desk}{webcam/Elmo selector}\\
494\pe{screenshots}{browse dev screenshots}
495
496\peh{Visualization \& Art}
497\pe{halley}{Halley's method fractal}\\
498\pe{morpho}{pixel sorting morphogenesis lab}\\
499\pe{noise}{noise on every pixel}\\
500\pe{rainbow-x}{centered rainbow X}\\
501\pe{neural-garden}{GPT learns drawing gestures}\\
502\pe{a-star}{A* pathfinding demo}\\
503\pe{zzzwap}{dynamic pathfinding for wipppps}\\
504\pe{spline}{interactive line with curves}\\
505\pe{digitpain0--3}{animated DIGITPAIN series}\\
506\pe{hell\_-world}{random hell\_ painting viewer}\\
507\pe{freaky-flowers}{random Freaky Flower token}\\
508\pe{commits}{live GitHub commit visualization}\\
509\pe{visualizer}{color history decay effect}\\
510\pe{lmn-flower}{pull a petal}\\
511\pe{lmn-petal}{touch an interactive petal}\\
512\pe{opinion}{essays on computing \& creativity}\\
513\pe{weather}{Weather Channel + smooth jazz}
514
515\peh{System \& Utility}
516\pe{about}{AC Q\&A chatbot}\\
517\pe{demo}{what is aesthetic.computer?}\\
518\pe{deck}{slide deck explainer}\\
519\pe{description}{read about any command}\\
520\pe{desktop}{download Electron desktop app}\\
521\pe{mobile}{download iOS/Android app}\\
522\pe{os}{bootable FedAC OS image}\\
523\pe{theme}{prompt theme chooser}\\
524\pe{token}{display auth token (3 taps)}\\
525\pe{wallet}{animated Tezos wallet display}\\
526\pe{connect-wallet}{wallet connection page}\\
527\pe{download}{screenshottable download screen}\\
528\pe{ads}{advertise on AC}\\
529\pe{mug}{ceramic mug with your painting}\\
530\pe{mugs}{browse recent mugs}\\
531\pe{boots}{boot telemetry viewer}\\
532\pe{booted-by}{who booted AC}\\
533\pe{404}{error page}\\
534\pe{delete-erase-and-forget-me}{delete account}
535
536\peh{Translation}
537\pe{english}{/ \texttt{\color{acpurple}en} translate to English}\\
538\pe{danish}{/ \texttt{\color{acpurple}da} translate to Danish}\\
539\pe{spanish}{/ \texttt{\color{acpurple}es} translate to Spanish}
540
541\peh{External \& Hardware}
542\pe{ableton}{Max for Live device browser}\\
543\pe{aframe}{A-Frame VR drawing (WebXR)}\\
544\pe{gameboy}{GameBoy emulator}\\
545\pe{gamepad}{gamepad connectivity test}\\
546\pe{ff1}{send art to FF1 Art Computer}\\
547\pe{ordfish}{virtual fish viewer}\\
548\pe{ordsy}{B\&W ordsy picture palette}\\
549\pe{snappidaggs}{Goodiepal archive browser}\\
550\pe{prutti}{Lessons NOT Learnt (Goodiepal)}\\
551\pe{triquilt}{half-square triangle quilt tool}\\
552\pe{hueber}{psychedelic Uber}
553
554\peh{Education \& Workshop}
555\pe{ucla-1}{-- \texttt{\color{acpurple}ucla-7} UCLA workshop lessons}\\
556+ \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\\
557\pe{baktok}{learn to talk backwards}\\
558\pe{laer-klokken}{learn the clock}\\
559\pe{alphapoet}{alphabetical nonsense poet}
560
561\peh{ABC123 Series (36)}
562\pe{a}{\texttt{\color{acpurple}--z} interactive letters with musical notes}\\
563\pe{0}{\texttt{\color{acpurple}--9} interactive numbers with sounds}
564
565\peh{Dynamic Patterns}
566\pe{/@handle}{$\rightarrow$ user profile}\\
567\pe{/@handle/piece}{$\rightarrow$ user-published piece}\\
568\pe{/preview/*}{$\rightarrow$ OG images}\\
569\pe{/session/*}{$\rightarrow$ multiplayer rooms}
570
571\end{multicols}
572
573\end{document}