Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

cv: unify /bio + /cv at justanothersystem.org/cv, add PDF export

- Merge bio.html and cv.html into one document at /cv (portrait slideshow,
narrative timeline, full CV listings). /bio now 301s to /cv.
- jas.life top-right "Biography & CV" link → https://justanothersystem.org/cv
(replaces stale Google Doc).
- build-cv-pdf.mjs renders /cv via headless Chrome and writes
papers.aesthetic.computer/jeffrey-alan-scudder-cv.pdf, linked from the
top of the CV page. Exposed as npm run cv:pdf / cv:pdf:file.
- CLAUDE.md + SCORE.md: clarify that lith (DO VPS, pulling from the
tangled knot) is the production host — Netlify is no longer the deploy
target; system/netlify/functions/ is kept as a historical path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

+793 -822
+2 -2
CLAUDE.md
··· 202 202 ### Servers and Services 203 203 204 204 1. **System Server** (`system/` + `lith/`) 205 - - Production: lith monolith (Express + Caddy on DigitalOcean VPS) 205 + - Production: **lith** monolith — Express + Caddy on a DigitalOcean VPS (`lith.aesthetic.computer`). Deployed with `fish lith/deploy.fish`, which pulls from the tangled knot `git@knot.aesthetic.computer:aesthetic.computer/core`. Netlify is no longer the host. 206 206 - Dev: `npm run site` (port 8888) 207 - - Backend functions in `system/netlify/functions/` 207 + - Backend function handlers live in `system/netlify/functions/` — the path is historical, but lith's Express adapts each file as a route, so keep adding new endpoints there. 208 208 - Handles piece serving, authentication, storage APIs 209 209 210 210 2. **Session Server** (`session-server/`)
+2 -2
SCORE.md
··· 58 58 59 59 **Backend** 60 60 - `session-server/` — Real-time multiplayer (Socket.io) 61 - - `lith/` — Monolith deploy (Express wrapping Netlify function handlers + static files, served via Caddy on a DigitalOcean VPS) 61 + - `lith/` — Production monolith deploy (Express + Caddy on a DigitalOcean VPS, pulled from the tangled knot `git@knot.aesthetic.computer:aesthetic.computer/core` via `lith/deploy.fish`). Express adapts the handlers in `system/netlify/functions/` as routes — the `netlify/functions/` path is historical; Netlify is no longer the host. 62 62 - Authentication and data storage 63 63 64 64 **Languages** ··· 197 197 - `ac-chat-clock` — Start clock chat 198 198 - `ac-stripe-print` — Stripe print service 199 199 - `ac-stripe-ticket` — Stripe ticket service 200 - - `ac-logger` — View netlify function logs 200 + - `ac-logger` — View lith backend logs (the handlers living under `system/netlify/functions/` run under lith's Express; the name is legacy) 201 201 - `ac-oven` — Oven service 202 202 - `ac-offline` — Offline mode 203 203
+2
package.json
··· 17 17 "test:kidlisp-wasm:audio": "jasmine spec/kidlisp-wasm-sonic-spec.mjs", 18 18 "papers": "node papers/cli.mjs", 19 19 "papers:publish": "node papers/cli.mjs publish", 20 + "cv:pdf": "node system/public/justanothersystem.org/build-cv-pdf.mjs", 21 + "cv:pdf:file": "node system/public/justanothersystem.org/build-cv-pdf.mjs --file", 20 22 "user": "f() { echo -n \"https://cloud.digitalocean.com/spaces/user-aesthetic-computer?path=\"; curl -s \"https://aesthetic.computer/user?from=$1\" | jq -r '.sub'; }; f", 21 23 "filter": "cd shared; node --experimental-repl-await -i -e \"import('./filter.mjs').then(m => global.filter = m.filter)\"", 22 24 "chat": "echo '\n💬 Chat\n';",
+2 -2
system/netlify.toml
··· 826 826 force = true 827 827 [[redirects]] 828 828 from = "https://justanothersystem.org/bio" 829 - to = "/justanothersystem.org/bio.html" 830 - status = 200 829 + to = "https://justanothersystem.org/cv" 830 + status = 301 831 831 force = true 832 832 [[redirects]] 833 833 from = "https://justanothersystem.org/*"
+2 -2
system/public/jas.life/index.html
··· 31 31 <h2 style="position: relative;"> 32 32 Selected Content 2026 33 33 <div style="position: absolute; right: 0; top: 0;"> 34 - <a href="https://docs.google.com/document/d/12mDwAeRqif5jKvgw_di5WzqKKCYiT6pkpmAxIPF-QW4/edit?usp=sharing">Biography 34 + <a href="https://justanothersystem.org/cv">Biography 35 35 & 36 36 CV</a> 37 37 </div> ··· 65 65 <h2 style="position: relative;"> 66 66 Selected Content 67 67 <div style="position: absolute; right: 0; top: 0;"> 68 - <a href="https://docs.google.com/document/d/12mDwAeRqif5jKvgw_di5WzqKKCYiT6pkpmAxIPF-QW4/edit?usp=sharing">Biography 68 + <a href="https://justanothersystem.org/cv">Biography 69 69 & 70 70 CV</a> 71 71 </div>
-574
system/public/justanothersystem.org/bio.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="UTF-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 - <meta name="color-scheme" content="light dark"> 7 - <title>Bio — Jeffrey Alan Scudder</title> 8 - <meta name="author" content="Jeffrey Alan Scudder"> 9 - <meta name="description" content="Jeffrey Alan Scudder is a painter based in Los Angeles working across canvas, custom software, and live performance. Creator of Aesthetic Computer, Whistlegraph, and No Paint."> 10 - <link rel="icon" href="https://aesthetic.computer/favicon.ico"> 11 - 12 - <!-- Social sharing meta tags --> 13 - <meta property="og:title" content="Bio — Jeffrey Alan Scudder" /> 14 - <meta property="og:description" content="Jeffrey Alan Scudder is a painter based in Los Angeles working across canvas, custom software, and live performance. Creator of Aesthetic Computer, Whistlegraph, and No Paint." /> 15 - <meta property="og:url" content="https://justanothersystem.org/bio" /> 16 - <meta property="og:type" content="profile" /> 17 - <meta property="og:image" content="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--07.jpg" /> 18 - <meta name="twitter:card" content="summary_large_image" /> 19 - <meta name="twitter:title" content="Bio — Jeffrey Alan Scudder" /> 20 - <meta name="twitter:description" content="Jeffrey Alan Scudder is a painter based in Los Angeles working across canvas, custom software, and live performance. Creator of Aesthetic Computer, Whistlegraph, and No Paint." /> 21 - <meta name="twitter:site" content="@whistlegraph" /> 22 - <meta name="twitter:image" content="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--07.jpg" /> 23 - 24 - <style> 25 - @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap'); 26 - 27 - @font-face { 28 - font-family: 'PP Mori'; 29 - src: url('https://aesthetic.computer/assets/fonts/PPMori-Regular.woff2') format('woff2'); 30 - font-weight: 400; 31 - font-style: normal; 32 - font-display: swap; 33 - } 34 - 35 - @font-face { 36 - font-family: 'PP Mori'; 37 - src: url('https://aesthetic.computer/assets/fonts/PPMori-SemiBold.woff2') format('woff2'); 38 - font-weight: 600; 39 - font-style: normal; 40 - font-display: swap; 41 - } 42 - 43 - :root { 44 - --bg: #faf9f6; 45 - --fg: #1a1a1a; 46 - --dim: #666; 47 - --accent: #333; 48 - --border: #ddd; 49 - --pink-dot: #ff4ca8; 50 - } 51 - 52 - @media (prefers-color-scheme: dark) { 53 - :root { 54 - --bg: #0a0a0a; 55 - --fg: #f0f0f0; 56 - --dim: #888; 57 - --accent: #ccc; 58 - --border: #333; 59 - } 60 - } 61 - 62 - html { 63 - color-scheme: light dark; 64 - } 65 - 66 - * { 67 - box-sizing: border-box; 68 - margin: 0; 69 - padding: 0; 70 - } 71 - 72 - a { 73 - color: inherit; 74 - text-decoration: none; 75 - } 76 - 77 - body { 78 - font-family: 'IBM Plex Mono', monospace; 79 - background: var(--bg); 80 - color: var(--fg); 81 - min-height: 100vh; 82 - line-height: 1.7; 83 - font-size: 16px; 84 - } 85 - 86 - .page { 87 - max-width: 860px; 88 - margin: 0 auto; 89 - padding: 1.5rem; 90 - } 91 - 92 - /* Bio layout — text left, portrait right */ 93 - .bio-layout { 94 - display: grid; 95 - grid-template-columns: 1fr 280px; 96 - gap: 2rem; 97 - align-items: start; 98 - } 99 - 100 - .bio-portrait { 101 - position: relative; 102 - overflow: hidden; 103 - border-radius: 4px; 104 - } 105 - 106 - /* First image flows normally to establish container height */ 107 - .bio-portrait img:first-child { 108 - display: block; 109 - width: 100%; 110 - height: auto; 111 - object-fit: cover; 112 - object-position: 50% 20%; 113 - opacity: 1; 114 - transition: opacity 1.2s ease-in-out; 115 - } 116 - 117 - /* Subsequent images overlay on top */ 118 - .bio-portrait img:not(:first-child) { 119 - position: absolute; 120 - inset: 0; 121 - width: 100%; 122 - height: 100%; 123 - object-fit: cover; 124 - object-position: 50% 20%; 125 - opacity: 0; 126 - transition: opacity 1.2s ease-in-out; 127 - } 128 - 129 - .bio-portrait img.active { 130 - opacity: 1; 131 - } 132 - 133 - .bio-portrait img:first-child:not(.active) { 134 - opacity: 0; 135 - } 136 - 137 - @keyframes kb-zoom-in { 138 - 0% { transform: scale(1) translate(0, 0); } 139 - 100% { transform: scale(1.06) translate(-1%, -1%); } 140 - } 141 - @keyframes kb-zoom-out { 142 - 0% { transform: scale(1.06) translate(1%, 0); } 143 - 100% { transform: scale(1) translate(0, 1%); } 144 - } 145 - @keyframes kb-zoom-center { 146 - 0% { transform: scale(1) translate(0, 0); } 147 - 100% { transform: scale(1.06) translate(0, -1%); } 148 - } 149 - 150 - @media (max-width: 640px) { 151 - .bio-layout { 152 - grid-template-columns: 1fr; 153 - } 154 - 155 - .bio-portrait { 156 - order: -1; 157 - max-width: 100%; 158 - margin: 0 0 1rem; 159 - } 160 - } 161 - 162 - .ac-dot { 163 - color: var(--pink-dot); 164 - } 165 - 166 - .np-dot { 167 - color: #ff6b35; 168 - } 169 - 170 - .ac-link { 171 - color: #7b61ff !important; 172 - } 173 - 174 - .np-link { 175 - color: var(--fg) !important; 176 - } 177 - 178 - .np-no { 179 - color: var(--dim); 180 - } 181 - 182 - .np-dot { 183 - color: #ff6b35; 184 - } 185 - 186 - .wg-link { 187 - color: var(--fg); 188 - border-bottom: 1px solid var(--border); 189 - } 190 - 191 - .tiktok-icon { 192 - display: inline-block; 193 - width: 0.85em; 194 - height: 0.85em; 195 - vertical-align: -0.05em; 196 - margin-left: 0.15em; 197 - } 198 - 199 - /* Chapters */ 200 - .chapter-label { 201 - font-size: 0.75rem; 202 - font-weight: 600; 203 - text-transform: uppercase; 204 - letter-spacing: 0.08em; 205 - color: var(--dim); 206 - } 207 - 208 - /* Media breaks */ 209 - .media { 210 - margin: 1.5rem 0; 211 - } 212 - 213 - .media img { 214 - width: 100%; 215 - display: block; 216 - } 217 - 218 - .media-row { 219 - display: grid; 220 - grid-template-columns: 1fr 1fr; 221 - gap: 0.5rem; 222 - margin: 1.5rem 0; 223 - } 224 - 225 - .media-row img { 226 - width: 100%; 227 - display: block; 228 - } 229 - 230 - .media-caption { 231 - font-size: 0.75rem; 232 - color: var(--dim); 233 - margin-top: 0.35rem; 234 - } 235 - 236 - /* Inline video embed */ 237 - .video-embed { 238 - position: relative; 239 - width: 100%; 240 - padding-bottom: 56.25%; 241 - background: #000; 242 - margin: 1.5rem 0; 243 - } 244 - 245 - .video-embed iframe { 246 - position: absolute; 247 - inset: 0; 248 - width: 100%; 249 - height: 100%; 250 - border: none; 251 - } 252 - 253 - /* Pull quote */ 254 - .pull-quote { 255 - font-family: 'PP Mori', 'Helvetica Neue', Helvetica, Arial, sans-serif; 256 - border-left: 2px solid var(--border); 257 - padding-left: 1rem; 258 - margin: 1.5rem 0; 259 - color: var(--dim); 260 - font-style: italic; 261 - } 262 - 263 - /* Media player */ 264 - .player-wrapper { 265 - margin-bottom: 1rem; 266 - } 267 - 268 - .player-embed { 269 - position: relative; 270 - width: 100%; 271 - padding-bottom: 56.25%; 272 - background: #000; 273 - } 274 - 275 - .player-embed iframe { 276 - position: absolute; 277 - inset: 0; 278 - width: 100%; 279 - height: 100%; 280 - border: none; 281 - } 282 - 283 - .player-placeholder { 284 - position: absolute; 285 - inset: 0; 286 - display: flex; 287 - align-items: center; 288 - justify-content: center; 289 - color: var(--dim); 290 - font-size: 0.85rem; 291 - } 292 - 293 - .player-now-playing { 294 - font-size: 0.8rem; 295 - color: var(--dim); 296 - margin-top: 0.5rem; 297 - min-height: 1.4em; 298 - } 299 - 300 - .video-list { 301 - list-style: none; 302 - font-size: 0.85rem; 303 - } 304 - 305 - .video-list li { 306 - padding: 0.3rem 0; 307 - cursor: pointer; 308 - display: flex; 309 - align-items: baseline; 310 - gap: 0.25rem; 311 - } 312 - 313 - .video-list li:hover { 314 - color: var(--fg); 315 - } 316 - 317 - .video-list li:hover .video-title { 318 - border-color: var(--fg); 319 - } 320 - 321 - .video-list li.active { 322 - color: var(--fg); 323 - } 324 - 325 - .video-list li.active .video-title { 326 - border-bottom: 1px solid var(--fg); 327 - } 328 - 329 - .video-title { 330 - border-bottom: 1px solid transparent; 331 - transition: border-color 0.15s; 332 - } 333 - 334 - .video-venue { 335 - color: var(--dim); 336 - } 337 - 338 - .video-play-icon { 339 - font-size: 0.7rem; 340 - color: var(--dim); 341 - flex-shrink: 0; 342 - width: 1rem; 343 - text-align: center; 344 - } 345 - 346 - .video-list li.active .video-play-icon { 347 - color: var(--fg); 348 - } 349 - 350 - /* CV sections */ 351 - section { 352 - margin-bottom: 2rem; 353 - } 354 - 355 - section h2 { 356 - font-size: 1.4rem; 357 - font-weight: 500; 358 - letter-spacing: -0.02em; 359 - color: var(--fg); 360 - margin-bottom: 0.75rem; 361 - border-bottom: 1px solid var(--border); 362 - padding-bottom: 0.35rem; 363 - } 364 - 365 - section ul { 366 - list-style: none; 367 - font-size: 0.85rem; 368 - } 369 - 370 - section ul li { 371 - padding: 0.2rem 0; 372 - } 373 - 374 - section p { 375 - font-family: 'PP Mori', 'Helvetica Neue', Helvetica, Arial, sans-serif; 376 - font-size: 1.15rem; 377 - line-height: 1.8; 378 - margin-bottom: 1rem; 379 - } 380 - 381 - section ul li .year { 382 - color: var(--dim); 383 - display: inline-block; 384 - min-width: 3.5rem; 385 - } 386 - 387 - section a { 388 - color: #7b61ff; 389 - border-bottom: 1px solid var(--border); 390 - } 391 - 392 - section a:hover { 393 - border-color: var(--fg); 394 - } 395 - 396 - /* Abstract */ 397 - .abstract { 398 - margin-bottom: 3rem; 399 - padding-bottom: 2rem; 400 - border-bottom: 1px solid var(--border); 401 - } 402 - 403 - .abstract p { 404 - font-family: 'PP Mori', 'Helvetica Neue', Helvetica, Arial, sans-serif; 405 - font-size: 1.15rem; 406 - line-height: 1.8; 407 - } 408 - 409 - /* Collapsible chapters */ 410 - details.chapter { 411 - margin-bottom: 1rem; 412 - border-bottom: 1px solid var(--border); 413 - } 414 - 415 - details.chapter > summary { 416 - list-style: none; 417 - cursor: pointer; 418 - padding: 0.75rem 0; 419 - display: flex; 420 - align-items: baseline; 421 - gap: 0.75rem; 422 - user-select: none; 423 - } 424 - 425 - details.chapter > summary::-webkit-details-marker { 426 - display: none; 427 - } 428 - 429 - details.chapter > summary::marker { 430 - display: none; 431 - } 432 - 433 - details.chapter > summary .chapter-label { 434 - margin-bottom: 0; 435 - flex-shrink: 0; 436 - } 437 - 438 - details.chapter > summary h2 { 439 - margin-bottom: 0; 440 - font-size: 1rem; 441 - color: var(--dim); 442 - } 443 - 444 - details.chapter > summary::after { 445 - content: '+'; 446 - margin-left: auto; 447 - color: var(--dim); 448 - font-size: 1rem; 449 - line-height: 1; 450 - } 451 - 452 - details.chapter[open] > summary::after { 453 - content: '\2212'; 454 - } 455 - 456 - details.chapter > summary:hover h2 { 457 - color: var(--fg); 458 - } 459 - 460 - .chapter-body { 461 - padding-bottom: 2.5rem; 462 - } 463 - 464 - .chapter-body p { 465 - font-family: 'PP Mori', 'Helvetica Neue', Helvetica, Arial, sans-serif; 466 - font-size: 1.15rem; 467 - line-height: 1.8; 468 - margin-bottom: 1rem; 469 - } 470 - 471 - .chapter-body a { 472 - color: #7b61ff; 473 - border-bottom: 1px solid var(--border); 474 - } 475 - 476 - .chapter-body a:hover { 477 - border-color: var(--fg); 478 - } 479 - 480 - /* Divider */ 481 - hr { 482 - border: none; 483 - border-top: 1px solid var(--border); 484 - margin: 3rem 0; 485 - } 486 - 487 - @media (max-width: 560px) { 488 - .media-row { 489 - grid-template-columns: 1fr; 490 - } 491 - } 492 - </style> 493 - </head> 494 - <body> 495 - <div class="page"> 496 - 497 - <section> 498 - <h2>Bio</h2> 499 - <div class="bio-layout"> 500 - <div class="bio-text"> 501 - <p>Jeffrey Alan Scudder (b. 1989, Assonet, MA) is a painter based in Los Angeles. His work moves between stretched canvas, custom software, and live performance, treating painting as a practice that extends across surfaces and systems.</p> 502 - <p>Scudder builds his own tools for making images. <a href="https://aesthetic.computer" class="ac-link">Aesthetic<span class="ac-dot">.</span>Computer</a> is a creative computing platform he designed as an instrument for drawing, painting, and interaction. <a href="https://nopaint.art" class="np-link"><span class="np-no">No</span>Paint<span class="np-dot">.</span>art</a>, an earlier project, reimagined the paint program as a medium rather than a utility. These tools inform his studio paintings and vice versa&mdash;code becomes a way to think about color, gesture, and composition, while painting on canvas stays immediate and physical.</p> 503 - <p>With <a href="https://www.tiktok.com/@whistlegraph" class="wg-link">Whistlegraph<svg class="tiktok-icon" viewBox="0 0 24 24" fill="currentColor"><path d="M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-2.88 2.5 2.89 2.89 0 0 1-2.89-2.89 2.89 2.89 0 0 1 2.89-2.89c.28 0 .54.04.79.1v-3.5a6.37 6.37 0 0 0-.79-.05A6.34 6.34 0 0 0 3.15 15a6.34 6.34 0 0 0 6.34 6.34 6.34 6.34 0 0 0 6.34-6.34V9.05a8.27 8.27 0 0 0 4.76 1.51v-3.5a4.83 4.83 0 0 1-1-.37z"/></svg></a>, a collaborative performance practice with Camille Klein and Alex Freundlich, Scudder has performed at the New Museum, Pioneer Works, ZKM Karlsruhe, and dozens of venues across the US and Europe. The group's work treats drawing as a live, social act.</p> 504 - <p>He has given over 65 lectures and performances on Radical Digital Painting internationally, including at the Chaos Communication Congress and in conversation with Casey Reas at bitforms gallery. His work is in the collections of KADIST (San Francisco) and SMK (National Gallery of Denmark). He was invited to present at the inaugural Hash Award at ZKM Karlsruhe in 2018.</p> 505 - <p>Scudder holds a BFA in Fine Art from Ringling College of Art and Design (2011) and an MFA in Sculpture from Yale School of Art (2013). He has taught at UCLA, Parsons The New School for Design, and Southern Oregon University. In Spring 2026, he is Author in Residence at UCLA's Social Software studio with Casey Reas. He also demos biweekly at <a href="https://nelacomputer.club">NELA Computer Club</a>, a biweekly demo night at <a href="https://plot.place">Plot.Place</a> in Chinatown, Los Angeles.</p> 506 - </div> 507 - <div class="bio-portrait" id="heroSlideshow"> 508 - <img src="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--07.jpg" alt="Jeffrey Alan Scudder" class="active"> 509 - <img src="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--06.jpg" alt="Jeffrey Alan Scudder"> 510 - <img src="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--10.jpg" alt="Jeffrey Alan Scudder"> 511 - </div> 512 - </div> 513 - </section> 514 - 515 - <hr> 516 - 517 - <section> 518 - <h2>Upcoming</h2> 519 - <p>Scudder's last public exhibition of physical pictures was <a href="https://www.artsy.net/show/johannes-vogt-gallery-radical-digital-painting">Radical Digital Painting</a> with Julia Yerger at <a href="https://johannesvogt.nyc/jeffrey-scudder-and-julia-yerger-radical-digital-paintings/">Johannes Vogt Gallery</a> in New York (June 2018), where he showed large-format digital prints on paper. In the years since, he has focused on building Aesthetic Computer, touring with Whistlegraph, and returning to painting on canvas and board.</p> 520 - <p>In May 2026, he will show new physical paintings at the <a href="https://venicefamilyclinic.org">47th Venice Family Clinic Art Exhibition + Auction</a> at 910 Abbot Kinney Blvd in Venice, CA&mdash;his first gallery exhibition of physical work in eight years.</p> 521 - </section> 522 - 523 - <section> 524 - <h2>Selected Press &amp; Writing</h2> 525 - <ul> 526 - <li><span class="year">2023</span> <a href="https://dirt.fyi/article/2023/09/whistlegraph">Whistlegraph &mdash; A new audience for generative art</a>, Dirt</li> 527 - <li><span class="year">2023</span> <a href="https://sexmag.shop/products/the-whistlegraph-zine">The Whistlegraph Zine</a>, Sex Magazine &mdash; interviews by Asher Penn, essays by Jacob Ciocci &amp; Perry</li> 528 - <li><span class="year">2022</span> <a href="https://feralfile.com/journal/close-up/whistlegraph-doodling-clockwork-in-lore-and-score">Doodling Clockwork in Lore and Score</a>, Dorothy Howard, Feral File</li> 529 - <li><span class="year">2019</span> <a href="https://thecreativeindependent.com/weekends/drawing-is-the-best-videogame-by-jeffrey-alan-scudder">Drawing is the best videogame</a>, The Creative Independent</li> 530 - <li><span class="year">2019</span> <a href="https://soundcloud.com/theartword/9-jeffrey-alan-scudder-on">On Radical Digital Painting</a>, The Artword Podcast</li> 531 - <li><span class="year">2018</span> <a href="https://www.are.na/blog/podcast/2018/09/25/radical-digital-painting.html">Radical Digital Painting &amp; Political Rock</a>, Are.na Blog</li> 532 - <li><span class="year">2017</span> <a href="https://rhizome.org/editorial/2017/dec/05/Artist-Profile-Jeffrey-Alan-Scudder">Artist Profile: Jeffrey Alan Scudder</a>, Rhizome</li> 533 - <li><span class="year">2017</span> <a href="https://schloss-post.com/manifesto-radical-digital-painting">A Manifesto for Radical Digital Painting</a>, Schlosspost</li> 534 - <li><span class="year">2017</span> <a href="https://www.artsy.net/article/artsy-editorial-microsoft-paints-influence-artists-bigger">Microsoft Paint's Influence on Artists Is Bigger Than You Might Think</a>, Artsy</li> 535 - </ul> 536 - </section> 537 - 538 - </div> 539 - 540 - <script> 541 - (function () { 542 - const kbAnims = ['kb-zoom-center', 'kb-zoom-in', 'kb-zoom-out']; 543 - const duration = 8000; // ms per slide 544 - const fadeDuration = 1200; // ms (matches CSS transition) 545 - const slideshow = document.getElementById('heroSlideshow'); 546 - const slides = Array.from(slideshow.querySelectorAll('img')); 547 - let current = 0; 548 - 549 - function applyKenBurns(img, animName) { 550 - img.style.animation = 'none'; 551 - img.offsetHeight; // force reflow to restart animation 552 - img.style.animation = `${animName} ${duration + fadeDuration}ms ease-in-out both`; 553 - } 554 - 555 - // Start first slide — no fade from black 556 - slides[0].style.transition = 'none'; 557 - slides[0].classList.add('active'); 558 - slides[0].offsetHeight; // force paint 559 - slides[0].style.transition = ''; 560 - applyKenBurns(slides[0], kbAnims[0]); 561 - 562 - setInterval(function () { 563 - const prev = current; 564 - current = (current + 1) % slides.length; 565 - const animName = kbAnims[current % kbAnims.length]; 566 - 567 - slides[prev].classList.remove('active'); 568 - applyKenBurns(slides[current], animName); 569 - slides[current].classList.add('active'); 570 - }, duration); 571 - })(); 572 - </script> 573 - </body> 574 - </html>
+179
system/public/justanothersystem.org/build-cv-pdf.mjs
··· 1 + #!/usr/bin/env node 2 + // build-cv-pdf.mjs — Generate jeffrey-alan-scudder-cv.pdf from cv.html. 3 + // 4 + // Renders /cv via a local Caddy dev server (preferred) or falls back to 5 + // rendering the local file directly, then prints to PDF using headless 6 + // Chrome through puppeteer-core. The output lands in 7 + // system/public/papers.aesthetic.computer/ so papers.aesthetic.computer 8 + // serves it at https://papers.aesthetic.computer/jeffrey-alan-scudder-cv.pdf. 9 + // 10 + // Usage: 11 + // node build-cv-pdf.mjs # render http://localhost:8111/cv 12 + // node build-cv-pdf.mjs --file # render the local cv.html file 13 + // node build-cv-pdf.mjs --url https://justanothersystem.org/cv 14 + 15 + import { existsSync, mkdirSync } from "node:fs"; 16 + import { fileURLToPath, pathToFileURL } from "node:url"; 17 + import { dirname, join, resolve } from "node:path"; 18 + import { createRequire } from "node:module"; 19 + 20 + const require = createRequire(import.meta.url); 21 + const __dirname = dirname(fileURLToPath(import.meta.url)); 22 + 23 + const SITE_DIR = __dirname; 24 + const PUBLIC_DIR = resolve(SITE_DIR, ".."); 25 + const PAPERS_DIR = resolve(PUBLIC_DIR, "papers.aesthetic.computer"); 26 + const OUTPUT_PDF = join(PAPERS_DIR, "jeffrey-alan-scudder-cv.pdf"); 27 + 28 + const DEFAULT_URL = "http://localhost:8111/cv"; 29 + const FALLBACK_FILE = pathToFileURL(join(SITE_DIR, "cv.html")).href; 30 + 31 + const CHROME_CANDIDATES = [ 32 + process.env.PUPPETEER_EXECUTABLE_PATH, 33 + "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", 34 + "/Applications/Chromium.app/Contents/MacOS/Chromium", 35 + "/usr/bin/google-chrome", 36 + "/usr/bin/chromium", 37 + "/usr/bin/chromium-browser", 38 + ].filter(Boolean); 39 + 40 + function pickChrome() { 41 + for (const p of CHROME_CANDIDATES) { 42 + if (existsSync(p)) return p; 43 + } 44 + throw new Error( 45 + "No Chrome/Chromium found. Set PUPPETEER_EXECUTABLE_PATH to a Chrome binary.", 46 + ); 47 + } 48 + 49 + function parseArgs(argv) { 50 + const args = { url: null, useFile: false }; 51 + for (let i = 2; i < argv.length; i++) { 52 + const a = argv[i]; 53 + if (a === "--file") args.useFile = true; 54 + else if (a === "--url") args.url = argv[++i]; 55 + } 56 + return args; 57 + } 58 + 59 + async function main() { 60 + const { url: urlArg, useFile } = parseArgs(process.argv); 61 + 62 + let puppeteer; 63 + try { 64 + puppeteer = require("puppeteer-core"); 65 + } catch { 66 + puppeteer = require("puppeteer"); 67 + } 68 + 69 + if (!existsSync(PAPERS_DIR)) mkdirSync(PAPERS_DIR, { recursive: true }); 70 + 71 + const target = useFile ? FALLBACK_FILE : urlArg || DEFAULT_URL; 72 + const executablePath = pickChrome(); 73 + 74 + console.log(`[cv-pdf] chrome: ${executablePath}`); 75 + console.log(`[cv-pdf] target: ${target}`); 76 + console.log(`[cv-pdf] output: ${OUTPUT_PDF}`); 77 + 78 + const browser = await puppeteer.launch({ 79 + executablePath, 80 + headless: "new", 81 + args: ["--no-sandbox", "--disable-dev-shm-usage"], 82 + }); 83 + 84 + try { 85 + const page = await browser.newPage(); 86 + await page.emulateMediaType("print"); 87 + 88 + try { 89 + await page.goto(target, { 90 + waitUntil: "networkidle0", 91 + timeout: 60_000, 92 + }); 93 + } catch (err) { 94 + if (!useFile && !urlArg) { 95 + console.warn( 96 + `[cv-pdf] ${DEFAULT_URL} failed (${err.message}); falling back to ${FALLBACK_FILE}`, 97 + ); 98 + await page.goto(FALLBACK_FILE, { 99 + waitUntil: "networkidle0", 100 + timeout: 60_000, 101 + }); 102 + } else { 103 + throw err; 104 + } 105 + } 106 + 107 + // Downsample the hero portrait to a small inline JPEG so the PDF 108 + // doesn't embed 25 MB of CDN source photos. We keep only the first 109 + // slide, render it to a ~360 px wide canvas, and replace the src 110 + // with the resulting data URL. 111 + await page.evaluate(async () => { 112 + if (document.fonts?.ready) await document.fonts.ready; 113 + 114 + const portrait = document.getElementById("heroSlideshow"); 115 + if (portrait) { 116 + const first = portrait.querySelector("img"); 117 + portrait 118 + .querySelectorAll("img:not(:first-child)") 119 + .forEach((el) => el.remove()); 120 + 121 + if (first) { 122 + if (!first.complete) { 123 + await new Promise((res) => { 124 + first.addEventListener("load", res, { once: true }); 125 + first.addEventListener("error", res, { once: true }); 126 + }); 127 + } 128 + 129 + try { 130 + const maxW = 360; 131 + const ratio = first.naturalWidth 132 + ? Math.min(1, maxW / first.naturalWidth) 133 + : 1; 134 + const w = Math.max(1, Math.round(first.naturalWidth * ratio)); 135 + const h = Math.max(1, Math.round(first.naturalHeight * ratio)); 136 + const canvas = document.createElement("canvas"); 137 + canvas.width = w; 138 + canvas.height = h; 139 + const ctx = canvas.getContext("2d"); 140 + ctx.drawImage(first, 0, 0, w, h); 141 + first.src = canvas.toDataURL("image/jpeg", 0.82); 142 + } catch { 143 + // If canvas taint blocks us (CORS), just drop the portrait. 144 + portrait.remove(); 145 + } 146 + } 147 + } 148 + 149 + const remaining = Array.from(document.images); 150 + await Promise.all( 151 + remaining.map((img) => 152 + img.complete 153 + ? null 154 + : new Promise((res) => { 155 + img.addEventListener("load", res, { once: true }); 156 + img.addEventListener("error", res, { once: true }); 157 + }), 158 + ), 159 + ); 160 + }); 161 + 162 + await page.pdf({ 163 + path: OUTPUT_PDF, 164 + format: "letter", 165 + printBackground: true, 166 + preferCSSPageSize: true, 167 + margin: { top: "0.6in", right: "0.6in", bottom: "0.6in", left: "0.6in" }, 168 + }); 169 + 170 + console.log(`[cv-pdf] wrote ${OUTPUT_PDF}`); 171 + } finally { 172 + await browser.close(); 173 + } 174 + } 175 + 176 + main().catch((err) => { 177 + console.error(err); 178 + process.exit(1); 179 + });
+602 -238
system/public/justanothersystem.org/cv.html
··· 3 3 <head> 4 4 <meta charset="UTF-8"> 5 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 - <title>CV — Jeffrey Alan Scudder</title> 6 + <meta name="color-scheme" content="light dark"> 7 + <title>Bio &amp; CV — Jeffrey Alan Scudder</title> 7 8 <meta name="author" content="Jeffrey Alan Scudder"> 8 - <meta name="description" content="Curriculum vitae of Jeffrey Alan Scudder — painter, educator, artist-programmer."> 9 + <meta name="description" content="Biography and curriculum vitae of Jeffrey Alan Scudder — painter, educator, artist-programmer based in Los Angeles. Creator of Aesthetic Computer, Whistlegraph, and No Paint."> 9 10 <link rel="icon" href="https://aesthetic.computer/favicon.ico"> 11 + <link rel="canonical" href="https://justanothersystem.org/cv"> 10 12 11 - <meta property="og:title" content="CV — Jeffrey Alan Scudder" /> 12 - <meta property="og:description" content="Curriculum vitae of Jeffrey Alan Scudder — painter, educator, artist-programmer." /> 13 + <!-- Social sharing meta tags --> 14 + <meta property="og:title" content="Bio &amp; CV — Jeffrey Alan Scudder" /> 15 + <meta property="og:description" content="Biography and curriculum vitae of Jeffrey Alan Scudder — painter, educator, artist-programmer based in Los Angeles. Creator of Aesthetic Computer, Whistlegraph, and No Paint." /> 13 16 <meta property="og:url" content="https://justanothersystem.org/cv" /> 14 17 <meta property="og:type" content="profile" /> 15 - <meta name="twitter:card" content="summary" /> 18 + <meta property="og:image" content="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--07.jpg" /> 19 + <meta name="twitter:card" content="summary_large_image" /> 20 + <meta name="twitter:title" content="Bio &amp; CV — Jeffrey Alan Scudder" /> 21 + <meta name="twitter:description" content="Biography and curriculum vitae of Jeffrey Alan Scudder — painter, educator, artist-programmer based in Los Angeles." /> 22 + <meta name="twitter:site" content="@whistlegraph" /> 23 + <meta name="twitter:image" content="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--07.jpg" /> 16 24 17 25 <style> 18 26 @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap'); 19 27 28 + @font-face { 29 + font-family: 'PP Mori'; 30 + src: url('https://aesthetic.computer/assets/fonts/PPMori-Regular.woff2') format('woff2'); 31 + font-weight: 400; 32 + font-style: normal; 33 + font-display: swap; 34 + } 35 + 36 + @font-face { 37 + font-family: 'PP Mori'; 38 + src: url('https://aesthetic.computer/assets/fonts/PPMori-SemiBold.woff2') format('woff2'); 39 + font-weight: 600; 40 + font-style: normal; 41 + font-display: swap; 42 + } 43 + 20 44 :root { 21 45 --bg: #faf9f6; 22 46 --fg: #1a1a1a; 23 47 --dim: #666; 24 48 --accent: #333; 25 49 --border: #ddd; 50 + --pink-dot: #ff4ca8; 26 51 } 27 52 28 53 @media (prefers-color-scheme: dark) { ··· 35 60 } 36 61 } 37 62 38 - * { box-sizing: border-box; margin: 0; padding: 0; } 63 + html { 64 + color-scheme: light dark; 65 + } 39 66 40 - a { color: inherit; text-decoration: none; } 67 + * { 68 + box-sizing: border-box; 69 + margin: 0; 70 + padding: 0; 71 + } 72 + 73 + a { 74 + color: inherit; 75 + text-decoration: none; 76 + } 41 77 42 78 body { 43 79 font-family: 'IBM Plex Mono', monospace; ··· 45 81 color: var(--fg); 46 82 min-height: 100vh; 47 83 line-height: 1.7; 48 - font-size: 14px; 84 + font-size: 16px; 49 85 } 50 86 51 87 .page { 52 - max-width: 720px; 88 + max-width: 860px; 53 89 margin: 0 auto; 54 90 padding: 1.5rem; 55 91 } 56 92 57 - header { 93 + /* Top meta bar: back link + PDF download */ 94 + .meta-bar { 95 + display: flex; 96 + justify-content: space-between; 97 + align-items: center; 98 + gap: 1rem; 58 99 margin-bottom: 2rem; 100 + font-size: 0.85rem; 101 + color: var(--dim); 59 102 } 60 103 61 - header a { 104 + .meta-bar a { 62 105 color: var(--dim); 63 - font-size: 0.85rem; 106 + transition: color 0.15s; 64 107 } 65 108 66 - header a:hover { 109 + .meta-bar a:hover { 67 110 color: var(--fg); 68 111 } 69 112 70 - h1 { 71 - font-size: 1.4rem; 72 - font-weight: 600; 73 - margin-bottom: 0.25rem; 113 + .pdf-link { 114 + border: 1px solid var(--border); 115 + padding: 0.35rem 0.7rem; 116 + border-radius: 3px; 117 + display: inline-flex; 118 + align-items: center; 119 + gap: 0.4rem; 120 + transition: border-color 0.15s, color 0.15s; 74 121 } 75 122 76 - .subtitle { 123 + .pdf-link:hover { 124 + border-color: var(--fg); 125 + } 126 + 127 + .pdf-icon { 128 + width: 0.9em; 129 + height: 0.9em; 130 + } 131 + 132 + /* Bio layout — text left, portrait right */ 133 + .bio-layout { 134 + display: grid; 135 + grid-template-columns: 1fr 280px; 136 + gap: 2rem; 137 + align-items: start; 138 + } 139 + 140 + .bio-portrait { 141 + position: relative; 142 + overflow: hidden; 143 + border-radius: 4px; 144 + } 145 + 146 + /* First image flows normally to establish container height */ 147 + .bio-portrait img:first-child { 148 + display: block; 149 + width: 100%; 150 + height: auto; 151 + object-fit: cover; 152 + object-position: 50% 20%; 153 + opacity: 1; 154 + transition: opacity 1.2s ease-in-out; 155 + } 156 + 157 + /* Subsequent images overlay on top */ 158 + .bio-portrait img:not(:first-child) { 159 + position: absolute; 160 + inset: 0; 161 + width: 100%; 162 + height: 100%; 163 + object-fit: cover; 164 + object-position: 50% 20%; 165 + opacity: 0; 166 + transition: opacity 1.2s ease-in-out; 167 + } 168 + 169 + .bio-portrait img.active { 170 + opacity: 1; 171 + } 172 + 173 + .bio-portrait img:first-child:not(.active) { 174 + opacity: 0; 175 + } 176 + 177 + @keyframes kb-zoom-in { 178 + 0% { transform: scale(1) translate(0, 0); } 179 + 100% { transform: scale(1.06) translate(-1%, -1%); } 180 + } 181 + @keyframes kb-zoom-out { 182 + 0% { transform: scale(1.06) translate(1%, 0); } 183 + 100% { transform: scale(1) translate(0, 1%); } 184 + } 185 + @keyframes kb-zoom-center { 186 + 0% { transform: scale(1) translate(0, 0); } 187 + 100% { transform: scale(1.06) translate(0, -1%); } 188 + } 189 + 190 + @media (max-width: 640px) { 191 + .bio-layout { 192 + grid-template-columns: 1fr; 193 + } 194 + 195 + .bio-portrait { 196 + order: -1; 197 + max-width: 100%; 198 + margin: 0 0 1rem; 199 + } 200 + } 201 + 202 + .ac-dot { 203 + color: var(--pink-dot); 204 + } 205 + 206 + .np-dot { 207 + color: #ff6b35; 208 + } 209 + 210 + .ac-link { 211 + color: #7b61ff !important; 212 + } 213 + 214 + .np-link { 215 + color: var(--fg) !important; 216 + } 217 + 218 + .np-no { 77 219 color: var(--dim); 78 - font-size: 0.85rem; 79 - margin-bottom: 1.5rem; 80 220 } 81 221 222 + .wg-link { 223 + color: var(--fg); 224 + border-bottom: 1px solid var(--border); 225 + } 226 + 227 + .tiktok-icon { 228 + display: inline-block; 229 + width: 0.85em; 230 + height: 0.85em; 231 + vertical-align: -0.05em; 232 + margin-left: 0.15em; 233 + } 234 + 235 + /* Contact */ 82 236 .contact { 83 237 font-size: 0.85rem; 84 238 color: var(--dim); 85 - margin-bottom: 2rem; 239 + margin: 2rem 0; 86 240 line-height: 1.9; 87 241 } 88 242 ··· 94 248 color: var(--fg); 95 249 } 96 250 97 - .bio { 251 + /* Section headings */ 252 + section { 98 253 margin-bottom: 2.5rem; 99 - line-height: 1.8; 100 254 } 101 255 102 - h2 { 256 + section h2 { 257 + font-size: 1.4rem; 258 + font-weight: 500; 259 + letter-spacing: -0.02em; 260 + color: var(--fg); 261 + margin-bottom: 0.75rem; 262 + border-bottom: 1px solid var(--border); 263 + padding-bottom: 0.35rem; 264 + } 265 + 266 + /* Compact heading for CV listing sections */ 267 + section.cv-list h2 { 103 268 font-size: 0.85rem; 104 269 font-weight: 600; 105 270 text-transform: uppercase; 106 271 letter-spacing: 0.08em; 107 272 color: var(--dim); 108 - margin-top: 2.5rem; 109 - margin-bottom: 1rem; 110 - padding-bottom: 0.5rem; 111 - border-bottom: 1px solid var(--border); 112 273 } 113 274 114 - .entry { 115 - margin-bottom: 0.6rem; 116 - padding-left: 4.5em; 117 - text-indent: -4.5em; 275 + section p { 276 + font-family: 'PP Mori', 'Helvetica Neue', Helvetica, Arial, sans-serif; 277 + font-size: 1.15rem; 278 + line-height: 1.8; 279 + margin-bottom: 1rem; 118 280 } 119 281 120 - .entry .year { 121 - color: var(--dim); 122 - display: inline; 123 - } 124 - 125 - .entry a { 282 + section a { 283 + color: #7b61ff; 126 284 border-bottom: 1px solid var(--border); 127 285 } 128 286 129 - .entry a:hover { 130 - color: var(--accent); 287 + section a:hover { 288 + border-color: var(--fg); 131 289 } 132 290 133 - .narrative { 134 - margin-bottom: 2rem; 135 - } 136 - 291 + /* Narrative timeline */ 137 292 .narrative .year-label { 293 + font-family: 'IBM Plex Mono', monospace; 294 + font-size: 0.9rem; 138 295 font-weight: 600; 139 296 margin-top: 1.5rem; 140 297 margin-bottom: 0.25rem; 298 + color: var(--fg); 141 299 } 142 300 143 301 .narrative p { 302 + color: var(--dim); 144 303 margin-bottom: 0.75rem; 304 + } 305 + 306 + /* CV entry list (education, press, lectures, exhibitions, etc.) */ 307 + .cv-list .entry { 308 + font-size: 0.85rem; 309 + margin-bottom: 0.6rem; 310 + padding-left: 4.5em; 311 + text-indent: -4.5em; 312 + line-height: 1.6; 313 + } 314 + 315 + .cv-list .entry .year { 145 316 color: var(--dim); 317 + display: inline; 146 318 } 147 319 148 - .geo .entry { 320 + .cv-list .entry a { 321 + color: inherit; 322 + border-bottom: 1px solid var(--border); 323 + } 324 + 325 + .cv-list .entry a:hover { 326 + color: var(--accent); 327 + } 328 + 329 + .cv-list.geo .entry { 149 330 color: var(--dim); 150 331 } 151 332 333 + /* Divider */ 152 334 hr { 153 335 border: none; 154 336 border-top: 1px solid var(--border); 155 - margin: 2.5rem 0; 337 + margin: 3rem 0; 156 338 } 157 339 340 + /* Footer */ 158 341 footer { 159 342 margin-top: 3rem; 160 343 padding-top: 1.5rem; ··· 164 347 text-align: center; 165 348 padding-bottom: 2rem; 166 349 } 350 + 351 + footer a { 352 + color: var(--dim); 353 + border-bottom: 1px solid var(--border); 354 + } 355 + 356 + footer a:hover { 357 + color: var(--fg); 358 + } 359 + 360 + /* Print styles — optimized for PDF generation */ 361 + @media print { 362 + :root { 363 + --bg: #ffffff; 364 + --fg: #000000; 365 + --dim: #555555; 366 + --accent: #000000; 367 + --border: #cccccc; 368 + } 369 + 370 + @page { 371 + size: letter; 372 + margin: 0.6in; 373 + } 374 + 375 + html, body { 376 + background: #ffffff !important; 377 + color: #000000 !important; 378 + } 379 + 380 + body { 381 + font-size: 10pt; 382 + line-height: 1.5; 383 + } 384 + 385 + .page { 386 + max-width: 100%; 387 + padding: 0; 388 + } 389 + 390 + .meta-bar, 391 + .no-print { 392 + display: none !important; 393 + } 394 + 395 + .bio-layout { 396 + grid-template-columns: 1fr 180px; 397 + gap: 1.2rem; 398 + } 399 + 400 + .bio-portrait img:not(:first-child) { 401 + display: none !important; 402 + } 403 + 404 + .bio-portrait img:first-child { 405 + opacity: 1 !important; 406 + animation: none !important; 407 + } 408 + 409 + section { 410 + margin-bottom: 1.2rem; 411 + page-break-inside: avoid; 412 + } 413 + 414 + section h2 { 415 + font-size: 1rem; 416 + margin-bottom: 0.4rem; 417 + } 418 + 419 + section.cv-list h2 { 420 + font-size: 0.75rem; 421 + } 422 + 423 + section p { 424 + font-size: 10pt; 425 + line-height: 1.5; 426 + margin-bottom: 0.5rem; 427 + } 428 + 429 + section a { 430 + color: #000 !important; 431 + border-bottom: none !important; 432 + } 433 + 434 + .cv-list .entry { 435 + font-size: 9pt; 436 + margin-bottom: 0.2rem; 437 + line-height: 1.4; 438 + page-break-inside: avoid; 439 + } 440 + 441 + .narrative .year-label { 442 + font-size: 10pt; 443 + margin-top: 0.6rem; 444 + } 445 + 446 + hr { 447 + margin: 1rem 0; 448 + } 449 + 450 + footer { 451 + display: none; 452 + } 453 + } 454 + 455 + @media (max-width: 560px) { 456 + .meta-bar { 457 + flex-direction: row; 458 + flex-wrap: wrap; 459 + gap: 0.5rem; 460 + } 461 + } 167 462 </style> 168 463 </head> 169 464 <body> 170 465 <div class="page"> 171 - <header> 466 + 467 + <div class="meta-bar no-print"> 172 468 <a href="/">&larr; justanothersystem.org</a> 173 - </header> 469 + <a href="https://papers.aesthetic.computer/jeffrey-alan-scudder-cv.pdf" class="pdf-link" download> 470 + <svg class="pdf-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg> 471 + Download PDF 472 + </a> 473 + </div> 174 474 175 - <h1>Jeffrey Alan Scudder</h1> 176 - <p class="subtitle">Curriculum Vitae</p> 475 + <section> 476 + <h2>Bio</h2> 477 + <div class="bio-layout"> 478 + <div class="bio-text"> 479 + <p>Jeffrey Alan Scudder (b. 1989, Assonet, MA) is a painter based in Los Angeles. His work moves between stretched canvas, custom software, and live performance, treating painting as a practice that extends across surfaces and systems.</p> 480 + <p>Scudder builds his own tools for making images. <a href="https://aesthetic.computer" class="ac-link">Aesthetic<span class="ac-dot">.</span>Computer</a> is a creative computing platform he designed as an instrument for drawing, painting, and interaction. <a href="https://nopaint.art" class="np-link"><span class="np-no">No</span>Paint<span class="np-dot">.</span>art</a>, an earlier project, reimagined the paint program as a medium rather than a utility. These tools inform his studio paintings and vice versa&mdash;code becomes a way to think about color, gesture, and composition, while painting on canvas stays immediate and physical.</p> 481 + <p>With <a href="https://www.tiktok.com/@whistlegraph" class="wg-link">Whistlegraph<svg class="tiktok-icon" viewBox="0 0 24 24" fill="currentColor"><path d="M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-2.88 2.5 2.89 2.89 0 0 1-2.89-2.89 2.89 2.89 0 0 1 2.89-2.89c.28 0 .54.04.79.1v-3.5a6.37 6.37 0 0 0-.79-.05A6.34 6.34 0 0 0 3.15 15a6.34 6.34 0 0 0 6.34 6.34 6.34 6.34 0 0 0 6.34-6.34V9.05a8.27 8.27 0 0 0 4.76 1.51v-3.5a4.83 4.83 0 0 1-1-.37z"/></svg></a>, a collaborative performance practice with Camille Klein and Alex Freundlich, Scudder has performed at the New Museum, Pioneer Works, ZKM Karlsruhe, and dozens of venues across the US and Europe. The group's work treats drawing as a live, social act.</p> 482 + <p>He has given over 65 lectures and performances on Radical Digital Painting internationally, including at the Chaos Communication Congress and in conversation with Casey Reas at bitforms gallery. His work is in the collections of KADIST (San Francisco) and SMK (National Gallery of Denmark). He was invited to present at the inaugural Hash Award at ZKM Karlsruhe in 2018.</p> 483 + <p>Scudder holds a BFA in Fine Art from Ringling College of Art and Design (2011) and an MFA in Sculpture from Yale School of Art (2013). He has taught at UCLA, Parsons The New School for Design, and Southern Oregon University. In Spring 2026, he is Author in Residence at UCLA's Social Software studio with Casey Reas. He also demos biweekly at <a href="https://nelacomputer.club">NELA Computer Club</a>, a biweekly demo night at <a href="https://plot.place">Plot.Place</a> in Chinatown, Los Angeles.</p> 484 + </div> 485 + <div class="bio-portrait" id="heroSlideshow"> 486 + <img src="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--07.jpg" alt="Jeffrey Alan Scudder" class="active"> 487 + <img src="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--06.jpg" alt="Jeffrey Alan Scudder"> 488 + <img src="https://assets.aesthetic.computer/jeffreys/shoot/jeffery-av--10.jpg" alt="Jeffrey Alan Scudder"> 489 + </div> 490 + </div> 491 + </section> 177 492 178 493 <div class="contact"> 179 494 <a href="https://jas.life">jas.life</a> &middot; ··· 184 499 Instagram: <a href="https://instagram.com/whistlegraph">@whistlegraph</a>, <a href="https://instagram.com/aesthetic.computer">@aesthetic.computer</a> 185 500 </div> 186 501 187 - <div class="bio"> 188 - Jeffrey is a painter based in Los Angeles who builds tools for image-making and performance. His work moves between stretched canvas, custom software, and live performance. He is the creator of <a href="https://aesthetic.computer">Aesthetic Computer</a>, <a href="https://www.tiktok.com/@whistlegraph">Whistlegraph</a>, and <a href="https://nopaint.art">No Paint</a>. Collections include KADIST (San Francisco) and SMK (National Gallery of Denmark). 189 - </div> 502 + <section> 503 + <h2>Upcoming</h2> 504 + <p>Scudder's last public exhibition of physical pictures was <a href="https://www.artsy.net/show/johannes-vogt-gallery-radical-digital-painting">Radical Digital Painting</a> with Julia Yerger at <a href="https://johannesvogt.nyc/jeffrey-scudder-and-julia-yerger-radical-digital-paintings/">Johannes Vogt Gallery</a> in New York (June 2018), where he showed large-format digital prints on paper. In the years since, he has focused on building Aesthetic Computer, touring with Whistlegraph, and returning to painting on canvas and board.</p> 505 + <p>In May 2026, he will show new physical paintings at the <a href="https://venicefamilyclinic.org">47th Venice Family Clinic Art Exhibition + Auction</a> at 910 Abbot Kinney Blvd in Venice, CA&mdash;his first gallery exhibition of physical work in eight years.</p> 506 + </section> 190 507 191 - <!-- Narrative Timeline --> 192 - <h2>Timeline</h2> 193 - <div class="narrative"> 508 + <section class="narrative"> 509 + <h2>Timeline</h2> 194 510 <p class="year-label">2026</p> 195 511 <p>Author in Residence at UCLA Social Software studio with Casey Reas. Participating in the 47th Venice Family Clinic Art Exhibition + Auction. Demoing biweekly at <a href="https://nelacomputer.club">NELA Computer Club</a> at Plot.Place in Chinatown.</p> 196 512 ··· 214 530 215 531 <p class="year-label">2016&ndash;2019</p> 216 532 <p>Jeffrey travels and spends his time performing, programming and making pictures. Since 2016 he has given over 65 lecture performances on Radical Digital Painting and related topics in the US and in Europe, often with collaborators Goodiepal &amp; Pals, Julia Yerger, Artur Erman, and Casey REAS. He has taught at UCLA and Parsons The New School for Design and worked previously at the design studio Linked by Air. Jeffrey received an MFA in Sculpture from Yale University School of Art in 2013. He is currently an Assistant Professor of Emerging Digital Practices at Southern Oregon University.</p> 217 - </div> 533 + </section> 218 534 219 - <!-- Geo. Log --> 220 - <h2>Geo. Log</h2> 221 - <div class="geo"> 535 + <hr> 536 + 537 + <section class="cv-list geo"> 538 + <h2>Geo. Log</h2> 222 539 <div class="entry"><span class="year">2025</span> &mdash; Los Angeles, CA</div> 223 540 <div class="entry"><span class="year">2023</span> &mdash; New York, NY</div> 224 541 <div class="entry"><span class="year">2019</span> &mdash; Ashland, OR</div> ··· 229 546 <div class="entry"><span class="year">2011</span> &mdash; New Haven, CT</div> 230 547 <div class="entry"><span class="year">2007</span> &mdash; Sarasota, FL</div> 231 548 <div class="entry"><span class="year">1989</span> &mdash; Assonet, MA (Born)</div> 232 - </div> 549 + </section> 233 550 234 - <!-- Education --> 235 - <h2>Education</h2> 236 - <div class="entry"><span class="year">2013</span> &mdash; Yale School of Art &mdash; MFA</div> 237 - <div class="entry"><span class="year">2011</span> &mdash; Ringling College of Art + Design &mdash; BFA</div> 238 - <div class="entry"><span class="year">2010</span> &mdash; AICAD New York Studio Program Residency</div> 239 - <div class="entry"><span class="year">2006</span> &mdash; Ringling College of Art + Design PreCollege Perspective</div> 240 - <div class="entry"><span class="year">2007</span> &mdash; Apponequet Regional High School</div> 551 + <section class="cv-list"> 552 + <h2>Education</h2> 553 + <div class="entry"><span class="year">2013</span> &mdash; Yale School of Art &mdash; MFA</div> 554 + <div class="entry"><span class="year">2011</span> &mdash; Ringling College of Art + Design &mdash; BFA</div> 555 + <div class="entry"><span class="year">2010</span> &mdash; AICAD New York Studio Program Residency</div> 556 + <div class="entry"><span class="year">2006</span> &mdash; Ringling College of Art + Design PreCollege Perspective</div> 557 + <div class="entry"><span class="year">2007</span> &mdash; Apponequet Regional High School</div> 558 + </section> 241 559 242 - <!-- Press --> 243 - <h2>Press, Interviews, Articles and Pages</h2> 244 - <div class="entry"><span class="year">2023</span> &mdash; <a href="https://kadist.org/work/rdp-98-jas-17-4-16-17-03">Kadist Foundation Artwork Profile</a></div> 245 - <div class="entry"><span class="year">2023</span> &mdash; <a href="https://dirt.fyi/article/2023/09/whistlegraph">Whistlegraph &mdash; A new audience for generative art</a>, Dirt</div> 246 - <div class="entry"><span class="year">2023</span> &mdash; <a href="https://sexmag.shop/products/the-whistlegraph-zine">Sex: The Whistlegraph Zine</a></div> 247 - <div class="entry"><span class="year">2019</span> &mdash; <a href="https://soundcloud.com/theartword/9-jeffrey-alan-scudder-on">On Radical Digital Painting</a>, The Artword Podcast</div> 248 - <div class="entry"><span class="year">2019</span> &mdash; <a href="https://thecreativeindependent.com/weekends/drawing-is-the-best-videogame-by-jeffrey-alan-scudder">Drawing is the best videogame</a>, The Creative Independent</div> 249 - <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.are.na/blog/podcast/2018/09/25/radical-digital-painting.html">Radical Digital Painting &amp; Political Rock</a>, Are.na Blog</div> 250 - <div class="entry"><span class="year">2018</span> &mdash; Harvard Advocate, Winter 2018, Noise</div> 251 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://rhizome.org/editorial/2017/dec/05/Artist-Profile-Jeffrey-Alan-Scudder">Rhizome Artist Profile: Jeffrey Alan Scudder (Jeffrey Heart)</a></div> 252 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://schloss-post.com/manifesto-radical-digital-painting">A Manifesto for Radical Digital Painting</a>, Schlosspost</div> 253 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://www.artsy.net/article/artsy-editorial-microsoft-paints-influence-artists-bigger">Microsoft Paint's Influence on Artists Is Bigger Than You Might Think</a>, Artsy</div> 560 + <section class="cv-list"> 561 + <h2>Press, Interviews, Articles and Pages</h2> 562 + <div class="entry"><span class="year">2023</span> &mdash; <a href="https://kadist.org/work/rdp-98-jas-17-4-16-17-03">Kadist Foundation Artwork Profile</a></div> 563 + <div class="entry"><span class="year">2023</span> &mdash; <a href="https://dirt.fyi/article/2023/09/whistlegraph">Whistlegraph &mdash; A new audience for generative art</a>, Dirt</div> 564 + <div class="entry"><span class="year">2023</span> &mdash; <a href="https://sexmag.shop/products/the-whistlegraph-zine">Sex: The Whistlegraph Zine</a>, interviews by Asher Penn, essays by Jacob Ciocci &amp; Perry</div> 565 + <div class="entry"><span class="year">2022</span> &mdash; <a href="https://feralfile.com/journal/close-up/whistlegraph-doodling-clockwork-in-lore-and-score">Doodling Clockwork in Lore and Score</a>, Dorothy Howard, Feral File</div> 566 + <div class="entry"><span class="year">2019</span> &mdash; <a href="https://soundcloud.com/theartword/9-jeffrey-alan-scudder-on">On Radical Digital Painting</a>, The Artword Podcast</div> 567 + <div class="entry"><span class="year">2019</span> &mdash; <a href="https://thecreativeindependent.com/weekends/drawing-is-the-best-videogame-by-jeffrey-alan-scudder">Drawing is the best videogame</a>, The Creative Independent</div> 568 + <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.are.na/blog/podcast/2018/09/25/radical-digital-painting.html">Radical Digital Painting &amp; Political Rock</a>, Are.na Blog</div> 569 + <div class="entry"><span class="year">2018</span> &mdash; Harvard Advocate, Winter 2018, Noise</div> 570 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://rhizome.org/editorial/2017/dec/05/Artist-Profile-Jeffrey-Alan-Scudder">Rhizome Artist Profile: Jeffrey Alan Scudder (Jeffrey Heart)</a></div> 571 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://schloss-post.com/manifesto-radical-digital-painting">A Manifesto for Radical Digital Painting</a>, Schlosspost</div> 572 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://www.artsy.net/article/artsy-editorial-microsoft-paints-influence-artists-bigger">Microsoft Paint's Influence on Artists Is Bigger Than You Might Think</a>, Artsy</div> 573 + </section> 254 574 255 - <!-- Lectures --> 256 - <h2>Lectures, Conferences &amp; Performances</h2> 257 - <div class="entry"><span class="year">2025</span> &mdash; Talk @ El Cid, Los Angeles, CA</div> 258 - <div class="entry"><span class="year">2020</span> &mdash; New Dynamic Graphics: Whistlegraph Recital @ Korea HCI 2020</div> 259 - <div class="entry"><span class="year">2019</span> &mdash; New Dynamic Graphics @ India HCI 19, Hyderabad, India</div> 260 - <div class="entry"><span class="year">2019</span> &mdash; VJ @ Internet Archive's World Night Market w/ Patrick Vogel, San Francisco</div> 261 - <div class="entry"><span class="year">2019</span> &mdash; RDP @ SF Art Book Fair w/ Alex Freundlich</div> 262 - <div class="entry"><span class="year">2019</span> &mdash; RDP &amp; VJ @ Internet Archive's DWeb Camp w/ Alex Freundlich</div> 263 - <div class="entry"><span class="year">2019</span> &mdash; RDP @ Yale &mdash; IEEE GEM Conference</div> 264 - <div class="entry"><span class="year">2019</span> &mdash; <a href="http://www.raflost.is/jeffrey-alan-scudder">RDP @ RAFLOST Festival, Iceland</a></div> 265 - <div class="entry"><span class="year">2019</span> &mdash; <a href="https://www.youtube.com/watch?v=xZMsXPgg_9U">Radical Digital Painting w/ Ella Fleck (650mAh) @ Weber State University</a></div> 266 - <div class="entry"><span class="year">2019</span> &mdash; <a href="https://www.instagram.com/p/BtY342PFPpO">Island Crisis w/ Artur Erman, San Juan, PR</a></div> 267 - <div class="entry"><span class="year">2019</span> &mdash; <a href="https://day.processing.org/pcd-la-tracks.html">Radical Pedagogy I &mdash; Flower Eater Drawing Workshop @ Processing Community Day, LA</a></div> 268 - <div class="entry"><span class="year">2018</span> &mdash; <a href="https://media.ccc.de/v/35c3-9774-radical_digital_painting">RDP (JAS on Paper), 35c3: Chaos Communication Congress, Leipzig</a></div> 269 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper), The House on Sunset, Los Angeles, CA</div> 270 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper), 1 Thoresby St. w/ Leon Sadler, Nottingham, UK</div> 271 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, Centrala, Birmingham, UK</div> 272 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, Colchester Arts Center, Colchester, UK</div> 273 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, Cafe OTO, London, UK</div> 274 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper), Gazelli Art House, London, UK</div> 275 - <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.youtube.com/watch?v=ndz-co7Xpn8">RDP (JAS on Paper), Digital Painting Class, Sibelius Academy, Helsinki</a></div> 276 - <div class="entry"><span class="year">2018</span> &mdash; <a href="http://650mah.com/drawing-is-the-best-videogame.html">RDP (Drawing is the Best Videogame), Hove, UK</a></div> 277 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Yale School of Art (Painting), New Haven, CT</div> 278 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) generate!_lab meets Querfeldein, Tubingen, Germany</div> 279 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) One Night in Club Danger, curated by Taissa Fromme, Apolda, Germany</div> 280 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Bauhaus University: Arts, Weimar, Germany</div> 281 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS (Rowan van As) Serendip Festival, Paris</div> 282 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Klasse Digitale Grafik | HFBK, Hamburg, Germany</div> 283 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Exploration Laboratory @ Sibelius Academy, Helsinki</div> 284 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Jan van Eyck Academie, Maastricht, Holland</div> 285 - <div class="entry"><span class="year">2018</span> &mdash; Radical Digital Painting &amp; Political Rock @ Erratum Galerie, Berlin</div> 286 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, Kammer-Pop, Hamburg</div> 287 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, Dans for voksne, Oslo</div> 288 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Dalin, Rowan &amp; Ben, Open Forum, Oslo National Academy of the Arts</div> 289 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) @ Royal Institute of Art, Stockholm</div> 290 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) @ Estonian Academy of Arts, Tallinn</div> 291 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, dodo.org HarFest, Helsinki</div> 292 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, Mayhem, Copenhagen</div> 293 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Det Jyske Kunstakademi, Aarhus, Denmark</div> 294 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, Louisiana Museum Literature Festival</div> 295 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, KUNSTHAL AARHUS</div> 296 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, Spanien 19C, Aarhus</div> 297 - <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, West Germany Venue, Berlin</div> 298 - <div class="entry"><span class="year">2018</span> &mdash; RDP @ Headquarters, Asheville, NC</div> 299 - <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.instagram.com/p/BlTvNt-BJQ5DbNzzsEGyegK0-f4Uz7O1MwEAB80/?taken-by=justanothersystem">RDP @ Pioneer Works, Brooklyn, NY</a></div> 300 - <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.youtube.com/watch?v=Up2-myTEviE">RDP Malibu w/ Matty Mo, Malibu, CA</a></div> 301 - <div class="entry"><span class="year">2018</span> &mdash; RDP Lecture @ Johannes Vogt Gallery, NYC</div> 302 - <div class="entry"><span class="year">2018</span> &mdash; RDP (x2) @ RISD Foundations w/ Travess Smalley's students, Providence, RI</div> 303 - <div class="entry"><span class="year">2018</span> &mdash; RDP @ UC Santa Barbara, Santa Barbara, CA</div> 304 - <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.facebook.com/events/2058744684449454">In conversation | on drawing, animation, and coding systems, makeroom.la, LA</a></div> 305 - <div class="entry"><span class="year">2018</span> &mdash; RDP @ Harvard Advocate's Noise Launch Party, Boston, MA</div> 306 - <div class="entry"><span class="year">2018</span> &mdash; RDP @ SUNY Purchase, NY</div> 307 - <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.facebook.com/events/1901578033465958">Casey Reas &amp; Jeffrey Alan Scudder in Conversation, bitforms gallery, NYC</a></div> 308 - <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.youtube.com/watch?v=533s7uZ35rQ">RDP @ 1st Annual HASH Award, ZKM, Karlsruhe</a></div> 309 - <div class="entry"><span class="year">2018</span> &mdash; RDP @ Coaxial Arts in LA</div> 310 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://justanothersystem.org">Radical Digital Painting Northeast US Lecture Tour w/ JAS Team</a> (Parsons, Victoria's Basement, Rutgers, RISD, UMASS, Harvard, Temple University, Baltimore, Yale, Kimberly-Klark)</div> 311 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://vimeo.com/230450728">RDP @ Cafe OTO, London</a></div> 312 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://youtu.be/9Ry0Dwa-gbA">RDP @ RBABARRAB, Copenhagen</a></div> 313 - <div class="entry"><span class="year">2017</span> &mdash; <a href="http://neumeisterbaram.com/event/jeffrey-alan-scudder-radical-digital-painting">RDP @ Neumeister Bar-Am, Berlin</a></div> 314 - <div class="entry"><span class="year">2017</span> &mdash; RDP @ GIPHY's TIME_FRAME Exhibition</div> 315 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://youtu.be/_5YLPA_3l2I">Radical Digital Painting @ Oberlin College</a></div> 316 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://youtu.be/OAtstjg7owU">JAS: In The Grid @ Babycastles, New York</a></div> 317 - <div class="entry"><span class="year">2016</span> &mdash; Explained Pictures Basement Show &mdash; Victoria Sobel's Basement, Brooklyn, NY</div> 318 - <div class="entry"><span class="year">2016</span> &mdash; <a href="https://www.youtube.com/watch?v=Zf-COj81KYw">Explained Pictures, The New School, New York</a></div> 319 - <div class="entry"><span class="year">2016</span> &mdash; Guest Lecturer: Projects Class, Cooper Union, New York</div> 320 - <div class="entry"><span class="year">2015</span> &mdash; <a href="http://aigany.org/event/history-of-the-web-part-2">History of the Web Part II, AIGA/NY, New York</a></div> 321 - <div class="entry"><span class="year">2015</span> &mdash; <a href="http://ieee-gem.org">Arts Panel, IEEE GEM Conference, Toronto, Canada</a></div> 575 + <section class="cv-list"> 576 + <h2>Lectures, Conferences &amp; Performances</h2> 577 + <div class="entry"><span class="year">2025</span> &mdash; Talk @ El Cid, Los Angeles, CA</div> 578 + <div class="entry"><span class="year">2020</span> &mdash; New Dynamic Graphics: Whistlegraph Recital @ Korea HCI 2020</div> 579 + <div class="entry"><span class="year">2019</span> &mdash; New Dynamic Graphics @ India HCI 19, Hyderabad, India</div> 580 + <div class="entry"><span class="year">2019</span> &mdash; VJ @ Internet Archive's World Night Market w/ Patrick Vogel, San Francisco</div> 581 + <div class="entry"><span class="year">2019</span> &mdash; RDP @ SF Art Book Fair w/ Alex Freundlich</div> 582 + <div class="entry"><span class="year">2019</span> &mdash; RDP &amp; VJ @ Internet Archive's DWeb Camp w/ Alex Freundlich</div> 583 + <div class="entry"><span class="year">2019</span> &mdash; RDP @ Yale &mdash; IEEE GEM Conference</div> 584 + <div class="entry"><span class="year">2019</span> &mdash; <a href="http://www.raflost.is/jeffrey-alan-scudder">RDP @ RAFLOST Festival, Iceland</a></div> 585 + <div class="entry"><span class="year">2019</span> &mdash; <a href="https://www.youtube.com/watch?v=xZMsXPgg_9U">Radical Digital Painting w/ Ella Fleck (650mAh) @ Weber State University</a></div> 586 + <div class="entry"><span class="year">2019</span> &mdash; <a href="https://www.instagram.com/p/BtY342PFPpO">Island Crisis w/ Artur Erman, San Juan, PR</a></div> 587 + <div class="entry"><span class="year">2019</span> &mdash; <a href="https://day.processing.org/pcd-la-tracks.html">Radical Pedagogy I &mdash; Flower Eater Drawing Workshop @ Processing Community Day, LA</a></div> 588 + <div class="entry"><span class="year">2018</span> &mdash; <a href="https://media.ccc.de/v/35c3-9774-radical_digital_painting">RDP (JAS on Paper), 35c3: Chaos Communication Congress, Leipzig</a></div> 589 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper), The House on Sunset, Los Angeles, CA</div> 590 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper), 1 Thoresby St. w/ Leon Sadler, Nottingham, UK</div> 591 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, Centrala, Birmingham, UK</div> 592 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, Colchester Arts Center, Colchester, UK</div> 593 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, Cafe OTO, London, UK</div> 594 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper), Gazelli Art House, London, UK</div> 595 + <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.youtube.com/watch?v=ndz-co7Xpn8">RDP (JAS on Paper), Digital Painting Class, Sibelius Academy, Helsinki</a></div> 596 + <div class="entry"><span class="year">2018</span> &mdash; <a href="http://650mah.com/drawing-is-the-best-videogame.html">RDP (Drawing is the Best Videogame), Hove, UK</a></div> 597 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Yale School of Art (Painting), New Haven, CT</div> 598 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) generate!_lab meets Querfeldein, Tubingen, Germany</div> 599 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) One Night in Club Danger, curated by Taissa Fromme, Apolda, Germany</div> 600 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Bauhaus University: Arts, Weimar, Germany</div> 601 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS (Rowan van As) Serendip Festival, Paris</div> 602 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Klasse Digitale Grafik | HFBK, Hamburg, Germany</div> 603 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Exploration Laboratory @ Sibelius Academy, Helsinki</div> 604 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Jan van Eyck Academie, Maastricht, Holland</div> 605 + <div class="entry"><span class="year">2018</span> &mdash; Radical Digital Painting &amp; Political Rock @ Erratum Galerie, Berlin</div> 606 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, Kammer-Pop, Hamburg</div> 607 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, Dans for voksne, Oslo</div> 608 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Dalin, Rowan &amp; Ben, Open Forum, Oslo National Academy of the Arts</div> 609 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) @ Royal Institute of Art, Stockholm</div> 610 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) @ Estonian Academy of Arts, Tallinn</div> 611 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, dodo.org HarFest, Helsinki</div> 612 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ GP&amp;PLS, Mayhem, Copenhagen</div> 613 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) Det Jyske Kunstakademi, Aarhus, Denmark</div> 614 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, Louisiana Museum Literature Festival</div> 615 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, KUNSTHAL AARHUS</div> 616 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, Spanien 19C, Aarhus</div> 617 + <div class="entry"><span class="year">2018</span> &mdash; RDP (JAS on Paper) w/ Goodiepal &amp; Pals, West Germany Venue, Berlin</div> 618 + <div class="entry"><span class="year">2018</span> &mdash; RDP @ Headquarters, Asheville, NC</div> 619 + <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.instagram.com/p/BlTvNt-BJQ5DbNzzsEGyegK0-f4Uz7O1MwEAB80/?taken-by=justanothersystem">RDP @ Pioneer Works, Brooklyn, NY</a></div> 620 + <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.youtube.com/watch?v=Up2-myTEviE">RDP Malibu w/ Matty Mo, Malibu, CA</a></div> 621 + <div class="entry"><span class="year">2018</span> &mdash; RDP Lecture @ Johannes Vogt Gallery, NYC</div> 622 + <div class="entry"><span class="year">2018</span> &mdash; RDP (x2) @ RISD Foundations w/ Travess Smalley's students, Providence, RI</div> 623 + <div class="entry"><span class="year">2018</span> &mdash; RDP @ UC Santa Barbara, Santa Barbara, CA</div> 624 + <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.facebook.com/events/2058744684449454">In conversation | on drawing, animation, and coding systems, makeroom.la, LA</a></div> 625 + <div class="entry"><span class="year">2018</span> &mdash; RDP @ Harvard Advocate's Noise Launch Party, Boston, MA</div> 626 + <div class="entry"><span class="year">2018</span> &mdash; RDP @ SUNY Purchase, NY</div> 627 + <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.facebook.com/events/1901578033465958">Casey Reas &amp; Jeffrey Alan Scudder in Conversation, bitforms gallery, NYC</a></div> 628 + <div class="entry"><span class="year">2018</span> &mdash; <a href="https://www.youtube.com/watch?v=533s7uZ35rQ">RDP @ 1st Annual HASH Award, ZKM, Karlsruhe</a></div> 629 + <div class="entry"><span class="year">2018</span> &mdash; RDP @ Coaxial Arts in LA</div> 630 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://justanothersystem.org">Radical Digital Painting Northeast US Lecture Tour w/ JAS Team</a> (Parsons, Victoria's Basement, Rutgers, RISD, UMASS, Harvard, Temple University, Baltimore, Yale, Kimberly-Klark)</div> 631 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://vimeo.com/230450728">RDP @ Cafe OTO, London</a></div> 632 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://youtu.be/9Ry0Dwa-gbA">RDP @ RBABARRAB, Copenhagen</a></div> 633 + <div class="entry"><span class="year">2017</span> &mdash; <a href="http://neumeisterbaram.com/event/jeffrey-alan-scudder-radical-digital-painting">RDP @ Neumeister Bar-Am, Berlin</a></div> 634 + <div class="entry"><span class="year">2017</span> &mdash; RDP @ GIPHY's TIME_FRAME Exhibition</div> 635 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://youtu.be/_5YLPA_3l2I">Radical Digital Painting @ Oberlin College</a></div> 636 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://youtu.be/OAtstjg7owU">JAS: In The Grid @ Babycastles, New York</a></div> 637 + <div class="entry"><span class="year">2016</span> &mdash; Explained Pictures Basement Show &mdash; Victoria Sobel's Basement, Brooklyn, NY</div> 638 + <div class="entry"><span class="year">2016</span> &mdash; <a href="https://www.youtube.com/watch?v=Zf-COj81KYw">Explained Pictures, The New School, New York</a></div> 639 + <div class="entry"><span class="year">2016</span> &mdash; Guest Lecturer: Projects Class, Cooper Union, New York</div> 640 + <div class="entry"><span class="year">2015</span> &mdash; <a href="http://aigany.org/event/history-of-the-web-part-2">History of the Web Part II, AIGA/NY, New York</a></div> 641 + <div class="entry"><span class="year">2015</span> &mdash; <a href="http://ieee-gem.org">Arts Panel, IEEE GEM Conference, Toronto, Canada</a></div> 642 + </section> 322 643 323 - <!-- Solo Exhibitions --> 324 - <h2>Solo Exhibitions</h2> 325 - <div class="entry"><span class="year">2022</span> &mdash; <a href="https://feralfile.com/exhibitions/ten-whistlegraphs-thv">Ten Whistlegraphs</a>, Feral File (w/ Whistlegraph)</div> 326 - <div class="entry"><span class="year">2018</span> &mdash; Radical Digital Painting: Los Angeles, The Newsstand Project &amp; CAP, Los Angeles, CA</div> 327 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://left.gallery/tumpin">Tumpin</a>, left.gallery, Online</div> 328 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://youtu.be/EvtZbcvuV48">Imaginary Screenshots</a>, Whitcher Projects, Los Angeles, CA</div> 329 - <div class="entry"><span class="year">2016</span> &mdash; <a href="http://www.essexflowers.us/commissions/jeffreyscudder/">No Paint: Release One</a>, Essex Flowers (Digital Commission), Website</div> 330 - <div class="entry"><span class="year">2016</span> &mdash; <a href="http://screen-space.info">What do we see when we close our eyes?</a>, SCREEN_, Email</div> 331 - <div class="entry"><span class="year">2013</span> &mdash; <a href="http://parallelograms.info/78-JS">Attn: Trap</a>, Parallelograms, World Wide Web</div> 332 - <div class="entry"><span class="year">2008</span> &mdash; Open Your Heart To Me, Crossley Gallery, Sarasota, FL</div> 644 + <section class="cv-list"> 645 + <h2>Solo Exhibitions</h2> 646 + <div class="entry"><span class="year">2022</span> &mdash; <a href="https://feralfile.com/exhibitions/ten-whistlegraphs-thv">Ten Whistlegraphs</a>, Feral File (w/ Whistlegraph)</div> 647 + <div class="entry"><span class="year">2018</span> &mdash; Radical Digital Painting: Los Angeles, The Newsstand Project &amp; CAP, Los Angeles, CA</div> 648 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://left.gallery/tumpin">Tumpin</a>, left.gallery, Online</div> 649 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://youtu.be/EvtZbcvuV48">Imaginary Screenshots</a>, Whitcher Projects, Los Angeles, CA</div> 650 + <div class="entry"><span class="year">2016</span> &mdash; <a href="http://www.essexflowers.us/commissions/jeffreyscudder/">No Paint: Release One</a>, Essex Flowers (Digital Commission), Website</div> 651 + <div class="entry"><span class="year">2016</span> &mdash; <a href="http://screen-space.info">What do we see when we close our eyes?</a>, SCREEN_, Email</div> 652 + <div class="entry"><span class="year">2013</span> &mdash; <a href="http://parallelograms.info/78-JS">Attn: Trap</a>, Parallelograms, World Wide Web</div> 653 + <div class="entry"><span class="year">2008</span> &mdash; Open Your Heart To Me, Crossley Gallery, Sarasota, FL</div> 654 + </section> 333 655 334 - <!-- Group Exhibitions --> 335 - <h2>Group Exhibitions</h2> 336 - <div class="entry"><span class="year">2026</span> &mdash; 47th Venice Family Clinic Art Exhibition + Auction, 910 Abbot Kinney Blvd, Venice, CA</div> 337 - <div class="entry"><span class="year">2025</span> &mdash; Turbo Cheap (inaugural exhibition), Los Angeles, CA</div> 338 - <div class="entry"><span class="year">2019</span> &mdash; <a href="https://blog.archive.org/2019/06/22/the-internet-archives-2019-artist-in-residency-exhibition">Internet Archive Artist in Residency Exhibition</a></div> 339 - <div class="entry"><span class="year">2018</span> &mdash; <a href="http://www.650mah.com/drawings.html">drawings</a>, 650mAh</div> 340 - <div class="entry"><span class="year">2018</span> &mdash; INTENTIONS BASED ON A FUTURE WHICH HAS ALREADY HAPPENED (curated by Alex Corbett), Naming Gallery, Oakland, CA</div> 341 - <div class="entry"><span class="year">2018</span> &mdash; Radical Digital Painting w/ Julia Yerger, Johannes Vogt Gallery, NYC</div> 342 - <div class="entry"><span class="year">2018</span> &mdash; OPEN CODES (Schloss Solitude Web Residencies), ZKM, Karlsruhe</div> 343 - <div class="entry"><span class="year">2017</span> &mdash; <a href="http://february.today/drawinghomework">drawinghomework.net Presents</a>, February Gallery, Austin, TX</div> 344 - <div class="entry"><span class="year">2017</span> &mdash; <a href="http://neumeisterbaram.com/exhibition/newdawn">New Dawn</a>, Neumeister Bar-Am, Berlin</div> 345 - <div class="entry"><span class="year">2017</span> &mdash; <a href="http://konstanet.com">Coping Copy</a>, Konstanet, Online</div> 346 - <div class="entry"><span class="year">2016</span> &mdash; Becoming That, becomingthat.com, curated by Levi Easterbrooks, Online</div> 347 - <div class="entry"><span class="year">2016</span> &mdash; <a href="http://www.drawinghomework.net/jeffrey.html">Drawing Homework</a>, Online</div> 348 - <div class="entry"><span class="year">2015</span> &mdash; VIDEO MIXER, Yale School of Art, New Haven, CT</div> 349 - <div class="entry"><span class="year">2015</span> &mdash; P.S.1 Commencement, ALLGOLD @ MoMA PS1 Printshop, Long Island City, NY</div> 350 - <div class="entry"><span class="year">2015</span> &mdash; RENDER SERIES (3), ALLGOLD @ MoMA PS1 Printshop, Long Island City, NY</div> 351 - <div class="entry"><span class="year">2015</span> &mdash; Clorox/Envy, STILL HOUSE GROUP, Brooklyn, NY</div> 352 - <div class="entry"><span class="year">2013</span> &mdash; 'Toonskin, Artspace, New Haven, CT</div> 353 - <div class="entry"><span class="year">2013</span> &mdash; APARTMENT SHOW &mdash; Hosted by Nouriel Roubini, Nouriel Roubini's Apartment, New York, NY</div> 354 - <div class="entry"><span class="year">2013</span> &mdash; Yale Sculpture MFA Thesis Exhibition, Yale School of Art, New Haven, CT</div> 355 - <div class="entry"><span class="year">2013</span> &mdash; "Now that I have your attention, what do I do with it?", New York Studio Program, Brooklyn, NY</div> 356 - <div class="entry"><span class="year">2012</span> &mdash; 3rd Floor, The New Haven Business Center, New Haven, CT</div> 357 - <div class="entry"><span class="year">2012</span> &mdash; MFA 2013 Second Year Show, Yale School of Art, New Haven, CT</div> 358 - <div class="entry"><span class="year">2011</span> &mdash; Frais Peint MFA 2013 First Year Show, Yale School of Art, New Haven, CT</div> 359 - <div class="entry"><span class="year">2011</span> &mdash; 1408: Group Show, 1408 Art Space (Joint Collective), Sarasota, FL</div> 360 - <div class="entry"><span class="year">2011</span> &mdash; Fine Arts BFA Thesis Exhibition, Crossley Gallery, Sarasota, FL</div> 361 - <div class="entry"><span class="year">2011</span> &mdash; SURPLUS, curated by RCAD Senior Thesis Class, Sarasota, FL</div> 362 - <div class="entry"><span class="year">2011</span> &mdash; Best of Ringling (President's Award), curated by Chie Fueki, RCAD, Sarasota, FL</div> 363 - <div class="entry"><span class="year">2011</span> &mdash; NUGENT &middot; PHILLIPS &middot; SCUDDER &mdash; Compulsory Thesis Exhibition, Crossley Gallery, Sarasota, FL</div> 364 - <div class="entry"><span class="year">2010</span> &mdash; Best of Ringling 2010, curated by Jay Davis, RCAD, Sarasota, FL</div> 365 - <div class="entry"><span class="year">2009</span> &mdash; Advanced Drawing, with Bradley Wester's Junior Advanced Drawing, Crossley Gallery, Sarasota, FL</div> 366 - <div class="entry"><span class="year">2009</span> &mdash; OPEN, with Bradley Wester's Fine Arts Painting III, Crossley Gallery, Sarasota, FL</div> 367 - <div class="entry"><span class="year">2009</span> &mdash; no ones little grr, with Jenny Vu and Sarah Valdez, Crossley Gallery, Sarasota, FL</div> 368 - <div class="entry"><span class="year">2009</span> &mdash; The New Easy, curated by Lars Eijssen, Artnews Projects, Berlin</div> 369 - <div class="entry"><span class="year">2009</span> &mdash; No Bad Memories, with the NYSP class of Spring 2009, New York Studio Program, Brooklyn, NY</div> 370 - <div class="entry"><span class="year">2008</span> &mdash; Best of Ringling 2008 (Juror's Award), curated by Dominique Nahas, RCAD, Sarasota, FL</div> 371 - <div class="entry"><span class="year">2008</span> &mdash; Realia, curated by Kayla Carlson, Big E's, Sarasota, FL</div> 656 + <section class="cv-list"> 657 + <h2>Group Exhibitions</h2> 658 + <div class="entry"><span class="year">2026</span> &mdash; 47th Venice Family Clinic Art Exhibition + Auction, 910 Abbot Kinney Blvd, Venice, CA</div> 659 + <div class="entry"><span class="year">2025</span> &mdash; Turbo Cheap (inaugural exhibition), Los Angeles, CA</div> 660 + <div class="entry"><span class="year">2019</span> &mdash; <a href="https://blog.archive.org/2019/06/22/the-internet-archives-2019-artist-in-residency-exhibition">Internet Archive Artist in Residency Exhibition</a></div> 661 + <div class="entry"><span class="year">2018</span> &mdash; <a href="http://www.650mah.com/drawings.html">drawings</a>, 650mAh</div> 662 + <div class="entry"><span class="year">2018</span> &mdash; INTENTIONS BASED ON A FUTURE WHICH HAS ALREADY HAPPENED (curated by Alex Corbett), Naming Gallery, Oakland, CA</div> 663 + <div class="entry"><span class="year">2018</span> &mdash; Radical Digital Painting w/ Julia Yerger, Johannes Vogt Gallery, NYC</div> 664 + <div class="entry"><span class="year">2018</span> &mdash; OPEN CODES (Schloss Solitude Web Residencies), ZKM, Karlsruhe</div> 665 + <div class="entry"><span class="year">2017</span> &mdash; <a href="http://february.today/drawinghomework">drawinghomework.net Presents</a>, February Gallery, Austin, TX</div> 666 + <div class="entry"><span class="year">2017</span> &mdash; <a href="http://neumeisterbaram.com/exhibition/newdawn">New Dawn</a>, Neumeister Bar-Am, Berlin</div> 667 + <div class="entry"><span class="year">2017</span> &mdash; <a href="http://konstanet.com">Coping Copy</a>, Konstanet, Online</div> 668 + <div class="entry"><span class="year">2016</span> &mdash; Becoming That, becomingthat.com, curated by Levi Easterbrooks, Online</div> 669 + <div class="entry"><span class="year">2016</span> &mdash; <a href="http://www.drawinghomework.net/jeffrey.html">Drawing Homework</a>, Online</div> 670 + <div class="entry"><span class="year">2015</span> &mdash; VIDEO MIXER, Yale School of Art, New Haven, CT</div> 671 + <div class="entry"><span class="year">2015</span> &mdash; P.S.1 Commencement, ALLGOLD @ MoMA PS1 Printshop, Long Island City, NY</div> 672 + <div class="entry"><span class="year">2015</span> &mdash; RENDER SERIES (3), ALLGOLD @ MoMA PS1 Printshop, Long Island City, NY</div> 673 + <div class="entry"><span class="year">2015</span> &mdash; Clorox/Envy, STILL HOUSE GROUP, Brooklyn, NY</div> 674 + <div class="entry"><span class="year">2013</span> &mdash; 'Toonskin, Artspace, New Haven, CT</div> 675 + <div class="entry"><span class="year">2013</span> &mdash; APARTMENT SHOW &mdash; Hosted by Nouriel Roubini, Nouriel Roubini's Apartment, New York, NY</div> 676 + <div class="entry"><span class="year">2013</span> &mdash; Yale Sculpture MFA Thesis Exhibition, Yale School of Art, New Haven, CT</div> 677 + <div class="entry"><span class="year">2013</span> &mdash; "Now that I have your attention, what do I do with it?", New York Studio Program, Brooklyn, NY</div> 678 + <div class="entry"><span class="year">2012</span> &mdash; 3rd Floor, The New Haven Business Center, New Haven, CT</div> 679 + <div class="entry"><span class="year">2012</span> &mdash; MFA 2013 Second Year Show, Yale School of Art, New Haven, CT</div> 680 + <div class="entry"><span class="year">2011</span> &mdash; Frais Peint MFA 2013 First Year Show, Yale School of Art, New Haven, CT</div> 681 + <div class="entry"><span class="year">2011</span> &mdash; 1408: Group Show, 1408 Art Space (Joint Collective), Sarasota, FL</div> 682 + <div class="entry"><span class="year">2011</span> &mdash; Fine Arts BFA Thesis Exhibition, Crossley Gallery, Sarasota, FL</div> 683 + <div class="entry"><span class="year">2011</span> &mdash; SURPLUS, curated by RCAD Senior Thesis Class, Sarasota, FL</div> 684 + <div class="entry"><span class="year">2011</span> &mdash; Best of Ringling (President's Award), curated by Chie Fueki, RCAD, Sarasota, FL</div> 685 + <div class="entry"><span class="year">2011</span> &mdash; NUGENT &middot; PHILLIPS &middot; SCUDDER &mdash; Compulsory Thesis Exhibition, Crossley Gallery, Sarasota, FL</div> 686 + <div class="entry"><span class="year">2010</span> &mdash; Best of Ringling 2010, curated by Jay Davis, RCAD, Sarasota, FL</div> 687 + <div class="entry"><span class="year">2009</span> &mdash; Advanced Drawing, with Bradley Wester's Junior Advanced Drawing, Crossley Gallery, Sarasota, FL</div> 688 + <div class="entry"><span class="year">2009</span> &mdash; OPEN, with Bradley Wester's Fine Arts Painting III, Crossley Gallery, Sarasota, FL</div> 689 + <div class="entry"><span class="year">2009</span> &mdash; no ones little grr, with Jenny Vu and Sarah Valdez, Crossley Gallery, Sarasota, FL</div> 690 + <div class="entry"><span class="year">2009</span> &mdash; The New Easy, curated by Lars Eijssen, Artnews Projects, Berlin</div> 691 + <div class="entry"><span class="year">2009</span> &mdash; No Bad Memories, with the NYSP class of Spring 2009, New York Studio Program, Brooklyn, NY</div> 692 + <div class="entry"><span class="year">2008</span> &mdash; Best of Ringling 2008 (Juror's Award), curated by Dominique Nahas, RCAD, Sarasota, FL</div> 693 + <div class="entry"><span class="year">2008</span> &mdash; Realia, curated by Kayla Carlson, Big E's, Sarasota, FL</div> 694 + </section> 372 695 373 - <!-- Residencies --> 374 - <h2>Residencies</h2> 375 - <div class="entry"><span class="year">2026</span> &mdash; Author in Residence, UCLA Social Software (Casey Reas), Los Angeles, CA</div> 376 - <div class="entry"><span class="year">2018</span> &mdash; <a href="http://gazell.io/author/jeffreyas">Gazell.io Art House Web Residency</a></div> 377 - <div class="entry"><span class="year">2017</span> &mdash; <a href="https://tenminutepainting.com">Schloss-Post Web Residencies No. 2</a> by Solitude &amp; ZKM</div> 696 + <section class="cv-list"> 697 + <h2>Residencies</h2> 698 + <div class="entry"><span class="year">2026</span> &mdash; Author in Residence, UCLA Social Software (Casey Reas), Los Angeles, CA</div> 699 + <div class="entry"><span class="year">2018</span> &mdash; <a href="http://gazell.io/author/jeffreyas">Gazell.io Art House Web Residency</a></div> 700 + <div class="entry"><span class="year">2017</span> &mdash; <a href="https://tenminutepainting.com">Schloss-Post Web Residencies No. 2</a> by Solitude &amp; ZKM</div> 701 + </section> 378 702 379 - <!-- Curated Exhibitions --> 380 - <h2>Curated Exhibitions</h2> 381 - <div class="entry"><span class="year">2018</span> &mdash; <a href="http://www.bitforms.com/exhibitions/exhibition-history/make-pictures/make-pictures-2018">Make Pictures</a>, bitforms gallery, NYC</div> 382 - <div class="entry"><span class="year">2014</span> &mdash; Island Girl, Gordilloscudder, Brooklyn, NY</div> 383 - <div class="entry"><span class="year">2013</span> &mdash; Interludes &amp; Remnants, Gordilloscudder, Brooklyn, NY</div> 703 + <section class="cv-list"> 704 + <h2>Curated Exhibitions</h2> 705 + <div class="entry"><span class="year">2018</span> &mdash; <a href="http://www.bitforms.com/exhibitions/exhibition-history/make-pictures/make-pictures-2018">Make Pictures</a>, bitforms gallery, NYC</div> 706 + <div class="entry"><span class="year">2014</span> &mdash; Island Girl, Gordilloscudder, Brooklyn, NY</div> 707 + <div class="entry"><span class="year">2013</span> &mdash; Interludes &amp; Remnants, Gordilloscudder, Brooklyn, NY</div> 708 + </section> 384 709 385 - <!-- Workshops --> 386 - <h2>Workshops</h2> 387 - <div class="entry"><span class="year">2019</span> &mdash; <a href="https://day.processing.org/pcd-la-tracks.html">Radical Pedagogy I &mdash; Flower Eater Drawing Workshop @ Processing Community Day, LA</a></div> 388 - <div class="entry"><span class="year">2017</span> &mdash; Programming for Graphic Designers, Yale University School of Art, New Haven, CT</div> 710 + <section class="cv-list"> 711 + <h2>Workshops</h2> 712 + <div class="entry"><span class="year">2019</span> &mdash; <a href="https://day.processing.org/pcd-la-tracks.html">Radical Pedagogy I &mdash; Flower Eater Drawing Workshop @ Processing Community Day, LA</a></div> 713 + <div class="entry"><span class="year">2017</span> &mdash; Programming for Graphic Designers, Yale University School of Art, New Haven, CT</div> 714 + </section> 389 715 390 - <!-- Teaching --> 391 - <h2>Teaching Experience</h2> 392 - <div class="entry"><span class="year">2026</span> &mdash; Author in Residence, UCLA Social Software (Casey Reas), Los Angeles, CA</div> 393 - <div class="entry"><span class="year">2024</span> &mdash; UCLA DMA Summer Section: Interactivity</div> 394 - <div class="entry"><span class="year">2019</span> &mdash; Assistant Professor of Emerging Digital Practices, Southern Oregon University, Ashland, OR</div> 395 - <div class="entry"><span class="year">2017</span> &mdash; RDP Lecture &amp; Workshop, Yale University School of Art &mdash; Graphic Design, New Haven, CT</div> 396 - <div class="entry"><span class="year">2016</span> &mdash; Visiting Professor, UCLA Digital Media Arts, Los Angeles, CA</div> 397 - <div class="entry"><span class="year">2013&ndash;2016</span> &mdash; Adjunct Professor, Parsons New School for Design, New York, NY</div> 716 + <section class="cv-list"> 717 + <h2>Teaching Experience</h2> 718 + <div class="entry"><span class="year">2026</span> &mdash; Author in Residence, UCLA Social Software (Casey Reas), Los Angeles, CA</div> 719 + <div class="entry"><span class="year">2024</span> &mdash; UCLA DMA Summer Section: Interactivity</div> 720 + <div class="entry"><span class="year">2019</span> &mdash; Assistant Professor of Emerging Digital Practices, Southern Oregon University, Ashland, OR</div> 721 + <div class="entry"><span class="year">2017</span> &mdash; RDP Lecture &amp; Workshop, Yale University School of Art &mdash; Graphic Design, New Haven, CT</div> 722 + <div class="entry"><span class="year">2016</span> &mdash; Visiting Professor, UCLA Digital Media Arts, Los Angeles, CA</div> 723 + <div class="entry"><span class="year">2013&ndash;2016</span> &mdash; Adjunct Professor, Parsons New School for Design, New York, NY</div> 724 + </section> 398 725 399 - <!-- Professional Experience --> 400 - <h2>Professional Experience</h2> 401 - <div class="entry"><span class="year">2021</span> &mdash; Artist Mentor / Adviser, <a href="https://wild.xyz">wild.xyz</a>, San Francisco, CA</div> 402 - <div class="entry"><span class="year">2017</span> &mdash; Technical Curator, GIPHY, New York, NY</div> 403 - <div class="entry"><span class="year">2016</span> &mdash; Contractor, Kickstarter, Brooklyn, NY</div> 404 - <div class="entry"><span class="year">2016</span> &mdash; Contractor, New Art Dealers Association &amp; Linked by Air, New York, NY</div> 405 - <div class="entry"><span class="year">2013&ndash;2014</span> &mdash; Linked by Air, New York, NY</div> 406 - <div class="entry"><span class="year">2013&ndash;2014</span> &mdash; Partner &mdash; <a href="http://gordilloscudder.com">Gordilloscudder gallery</a>, New York, NY</div> 407 - <div class="entry"><span class="year">2013</span> &mdash; Programmer &mdash; allmyfriendsatonce.com, New York, NY</div> 408 - <div class="entry"><span class="year">2012&ndash;2013</span> &mdash; Web Development &mdash; New York &amp; Los Angeles Art Book Fair, Printed Matter, New York, NY</div> 409 - <div class="entry"><span class="year">2012</span> &mdash; Teaching Assistant for Johannes DeYoung, Yale School of Art, New Haven, CT</div> 410 - <div class="entry"><span class="year">2012</span> &mdash; art.yale.edu Student Administrator, Yale School of Art, New Haven, CT</div> 411 - <div class="entry"><span class="year">2012</span> &mdash; Checkout Assistant &mdash; Digital Media Center for the Arts, Yale University, New Haven, CT</div> 412 - <div class="entry"><span class="year">2011</span> &mdash; Studio Assistant &mdash; Nathan Skiles, Sarasota, FL</div> 413 - <div class="entry"><span class="year">2010</span> &mdash; Children's Activity Programmer &mdash; Travels With Max Books, Naples, FL</div> 414 - <div class="entry"><span class="year">2010</span> &mdash; Information Technology Assistant &mdash; Ringling College of Art + Design, Sarasota, FL</div> 415 - <div class="entry"><span class="year">2009</span> &mdash; Gallery Assistant &mdash; Ringling College of Art + Design, Sarasota, FL</div> 416 - <div class="entry"><span class="year">2007</span> &mdash; Dishwasher &mdash; The Perch Restaurant, Denali, AK</div> 417 - <div class="entry"><span class="year">2004&ndash;2006</span> &mdash; Boys Gymnastics Coach &mdash; East Bay Gymnastics, Bristol, RI</div> 726 + <section class="cv-list"> 727 + <h2>Professional Experience</h2> 728 + <div class="entry"><span class="year">2021</span> &mdash; Artist Mentor / Adviser, <a href="https://wild.xyz">wild.xyz</a>, San Francisco, CA</div> 729 + <div class="entry"><span class="year">2017</span> &mdash; Technical Curator, GIPHY, New York, NY</div> 730 + <div class="entry"><span class="year">2016</span> &mdash; Contractor, Kickstarter, Brooklyn, NY</div> 731 + <div class="entry"><span class="year">2016</span> &mdash; Contractor, New Art Dealers Association &amp; Linked by Air, New York, NY</div> 732 + <div class="entry"><span class="year">2013&ndash;2014</span> &mdash; Linked by Air, New York, NY</div> 733 + <div class="entry"><span class="year">2013&ndash;2014</span> &mdash; Partner &mdash; <a href="http://gordilloscudder.com">Gordilloscudder gallery</a>, New York, NY</div> 734 + <div class="entry"><span class="year">2013</span> &mdash; Programmer &mdash; allmyfriendsatonce.com, New York, NY</div> 735 + <div class="entry"><span class="year">2012&ndash;2013</span> &mdash; Web Development &mdash; New York &amp; Los Angeles Art Book Fair, Printed Matter, New York, NY</div> 736 + <div class="entry"><span class="year">2012</span> &mdash; Teaching Assistant for Johannes DeYoung, Yale School of Art, New Haven, CT</div> 737 + <div class="entry"><span class="year">2012</span> &mdash; art.yale.edu Student Administrator, Yale School of Art, New Haven, CT</div> 738 + <div class="entry"><span class="year">2012</span> &mdash; Checkout Assistant &mdash; Digital Media Center for the Arts, Yale University, New Haven, CT</div> 739 + <div class="entry"><span class="year">2011</span> &mdash; Studio Assistant &mdash; Nathan Skiles, Sarasota, FL</div> 740 + <div class="entry"><span class="year">2010</span> &mdash; Children's Activity Programmer &mdash; Travels With Max Books, Naples, FL</div> 741 + <div class="entry"><span class="year">2010</span> &mdash; Information Technology Assistant &mdash; Ringling College of Art + Design, Sarasota, FL</div> 742 + <div class="entry"><span class="year">2009</span> &mdash; Gallery Assistant &mdash; Ringling College of Art + Design, Sarasota, FL</div> 743 + <div class="entry"><span class="year">2007</span> &mdash; Dishwasher &mdash; The Perch Restaurant, Denali, AK</div> 744 + <div class="entry"><span class="year">2004&ndash;2006</span> &mdash; Boys Gymnastics Coach &mdash; East Bay Gymnastics, Bristol, RI</div> 745 + </section> 418 746 419 - <footer> 420 - <a href="/bio">&larr; bio</a> &middot; <a href="/">justanothersystem.org</a> 747 + <footer class="no-print"> 748 + <a href="/">justanothersystem.org</a> 421 749 </footer> 750 + 422 751 </div> 752 + 753 + <script> 754 + (function () { 755 + const kbAnims = ['kb-zoom-center', 'kb-zoom-in', 'kb-zoom-out']; 756 + const duration = 8000; // ms per slide 757 + const fadeDuration = 1200; // ms (matches CSS transition) 758 + const slideshow = document.getElementById('heroSlideshow'); 759 + if (!slideshow) return; 760 + const slides = Array.from(slideshow.querySelectorAll('img')); 761 + let current = 0; 762 + 763 + function applyKenBurns(img, animName) { 764 + img.style.animation = 'none'; 765 + img.offsetHeight; // force reflow to restart animation 766 + img.style.animation = `${animName} ${duration + fadeDuration}ms ease-in-out both`; 767 + } 768 + 769 + // Start first slide — no fade from black 770 + slides[0].style.transition = 'none'; 771 + slides[0].classList.add('active'); 772 + slides[0].offsetHeight; // force paint 773 + slides[0].style.transition = ''; 774 + applyKenBurns(slides[0], kbAnims[0]); 775 + 776 + setInterval(function () { 777 + const prev = current; 778 + current = (current + 1) % slides.length; 779 + const animName = kbAnims[current % kbAnims.length]; 780 + 781 + slides[prev].classList.remove('active'); 782 + applyKenBurns(slides[current], animName); 783 + slides[current].classList.add('active'); 784 + }, duration); 785 + })(); 786 + </script> 423 787 </body> 424 788 </html>
+2 -2
system/public/justanothersystem.org/index.html
··· 172 172 173 173 <div class="overlay"> 174 174 <div class="top-bar"> 175 - <h1 class="site-title"><a href="/bio">Jeffrey Alan Scudder</a></h1> 175 + <h1 class="site-title"><a href="/cv">Jeffrey Alan Scudder</a></h1> 176 176 </div> 177 177 <div class="bottom-bar"> 178 - <a href="/bio" class="location" id="location"></a> 178 + <a href="/cv" class="location" id="location"></a> 179 179 </div> 180 180 </div> 181 181
system/public/papers.aesthetic.computer/jeffrey-alan-scudder-cv.pdf

This is a binary file and will not be displayed.