- 掃描 ID:
- 4e57ed58-0413-4dc0-9b12-259d104ba2f8已完成
- 已提交的 URL:
- https://spencer.place/
- 報告完成時間:
連結 · 找到 35 個
從頁面中識別的傳出連結
連結 | Text |
---|---|
https://www.naiveweekly.com/p/url-poetry-club?publication_id=3348&post_id=136896792&isFreemail=true&r=2037y | * |
https://spencerchang.substack.com | subscribe to my mailing list |
https://spencerchang.substack.com/ | Newsletter |
https://twitter.com/spencerc99/ | |
https://www.are.na/spencer-chang/ | Arena |
https://www.instagram.com/spence.r.chang/ | |
https://indieweb.social/@spencerchang | Mastodon |
https://bsky.app/profile/spencerchang.me | Bluesky |
https://github.com/spencerc99/ | Github |
https://spencerchang.me |
JavaScript 變數 · 找到 34 個
在頁面的視窗物件上載入的全域 JavaScript 變數是在函數外部宣告的變數,可從目前範圍內程式碼中的任何位置存取
名稱 | 類型 |
---|---|
0 | object |
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
__assign | function |
__rest | function |
TextMode | object |
isTextMode | function |
_lastHoveredTime | number |
DefaultReplacements | object |
主控台記錄訊息 · 找到 3 條
記錄到 Web 主控台的訊息
類型 | 類別 | 記錄 |
---|---|---|
error | network |
|
log | other |
|
log | other |
|
HTML
頁面的原始 HTML 主體
<!DOCTYPE html><html lang="en" style="position: relative; min-height: 100dvh; cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='10 9 34 34' width='36' height='36' fill='none' fillRule='evenodd' %3E%3Cg fill='rgba(0,0,0,.2)' transform='translate(1,1)'%3E%3Cpath d='m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z' /%3E%3Cpath d='m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z' /%3E%3C/g%3E%3Cg fill='white'%3E%3Cpath d='m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z' /%3E%3Cpath d='m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z' /%3E%3C/g%3E%3Cg fill='%2360db95'%3E%3Cpath d='m19.751 24.4155-1.844.774-3.1-7.374 1.841-.775z' /%3E%3Cpath d='m13 10.814v11.188l2.969-2.866.428-.139h4.768z' /%3E%3C/g%3E%3C/svg%3E"), auto;"><head><!-- Global Metadata --><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><meta name="generator" content="Astro v4.14.5"><!-- Canonical URL --><link rel="canonical" href="https://spencer.place/"><!-- Primary Meta Tags --><title>𝚜𝚙𝚎𝚗𝚌𝚎𝚛'𝚜 spot</title><meta name="title" content="𝚜𝚙𝚎𝚗𝚌𝚎𝚛'𝚜 spot"><meta name="description" content="spencer is a programmer, artist, and internet caretaker based in San Francisco. He works to create technology that cultivate interdependence and human agency."><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://spencer.place/"><meta property="og:title" content="𝚜𝚙𝚎𝚗𝚌𝚎𝚛'𝚜 spot"><meta property="og:description" content="spencer is a programmer, artist, and internet caretaker based in San Francisco. He works to create technology that cultivate interdependence and human agency."><meta property="og:image" content="https://spencer.place/name-stamp.png"><!-- Twitter --><!-- TODO: should be "summary" if home --><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://spencer.place/"><meta property="twitter:title" content="𝚜𝚙𝚎𝚗𝚌𝚎𝚛'𝚜 spot"><meta property="twitter:description" content="spencer is a programmer, artist, and internet caretaker based in San Francisco. He works to create technology that cultivate interdependence and human agency."><meta property="twitter:image" content="https://spencer.place/name-stamp.png"><!-- Don't index draft posts --><meta name="robots" content="noodp"><!-- icons --><link rel="stylesheet" href="https://unicons.iconscout.com/release/v3.0.6/css/line.css"><link rel="stylesheet" href="https://unicons.iconscout.com/release/v3.0.6/css/solid.css"><link rel="apple-touch-icon" sizes="180x180" href="/name-stamp.png"><link rel="icon" type="image/png" sizes="32x32" href="/name-stamp.png"><link rel="icon" type="image/png" sizes="16x16" href="/name-stamp.png"><link rel="manifest" href="/site.webmanifest"><!-- lazy load images to prioritize those in view --><script async="" src="/lazysizes.min.js"></script><!-- telescopic text --><script src="https://unpkg.com/telescopic-text@latest/lib/index.js"></script><link href="https://unpkg.com/telescopic-text@latest/lib/index.css" rel="stylesheet"><!-- plausible.io --><script defer="" data-domain="spencer.place" data-api="https://sharingan.spencerc99.workers.dev/genjutsu/event" src="https://sharingan.spencerc99.workers.dev/genjutsu/script.js"></script><script data-goatcounter="https://spencer.goatcounter.com/count" async="" src="//gc.zgo.at/count.js"></script><!-- HammerJS --><!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.min.js" integrity="sha512-UXumZrZNiOwnTcZSHLOfcTs0aos2MzBWHXOHOuB0J/R44QB0dwY5JgfbvljXcklVf65Gc4El6RjZ+lnwd2az2g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> --><link rel="stylesheet" href="/_astro/_slug_.B5ZljYn-.css">
<style>#friends[data-astro-cid-pj3evk5o]{position:relative;width:7em;height:7em;animation:spin 45s linear infinite}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]{position:absolute;width:2em;height:2em;transform-origin:50% 50%;margin-top:-1em;margin-left:-1em;border-radius:50%;animation:reverse-spin 45s linear infinite}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(1){left:6em;top:2.5em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(2){left:5.5990960898em;top:4.1265311022em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(3){left:4.4882266136em;top:5.3804435306em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(4){left:2.9218783809em;top:5.9744810593em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(5){left:1.2588828954em;top:5.7725568494em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(6){left:-.1197876186em;top:4.8209293038em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(7){left:-.898296361em;top:3.337604825em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(8){left:-.898296361em;top:1.662395175em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(9){left:-.1197876186em;top:.1790706962em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(10){left:1.2588828954em;top:-.7725568494em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(11){left:2.9218783809em;top:-.9744810593em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(12){left:4.4882266136em;top:-.3804435306em}#friends[data-astro-cid-pj3evk5o]>[data-astro-cid-pj3evk5o]:nth-child(13){left:5.5990960898em;top:.8734688978em}#friends[data-astro-cid-pj3evk5o] a[data-astro-cid-pj3evk5o]{text-decoration:none}@keyframes spin{to{transform:rotate(360deg)}}@keyframes reverse-spin{to{transform:rotate(-360deg)}}
</style>
<link rel="stylesheet" href="/_astro/Footnote.CGS0qudi.css"><link rel="stylesheet" href="https://unpkg.com/playhtml@latest/dist/style.css"></head> <body> <!-- src: https://blog.christopherianmurphy.com/2017/05/expand-collapse-navbar/ --><nav id="navbar"> <div class="navbarContainer"> <a href="/" class="avatarLink"> <img class="avatar small" src="/assets/companion-in-a-box-final.png" alt="a cartoonish rendering of spencer chang"> spencer chang</a> <div class="navbarActions"> <a href="/creation" class=""><span>index</span> <b>🪄</b></a><a href="/collab" class=""> <b>🌻</b></a><a href="/fits" class=""> <b>🧢</b></a><a href="/about" class=""> <b>🙇</b></a> <div class="divider"></div> <button id="darkModeToggle" class="link"><b>🌑</b></button> </div> <script>
function setDarkMode(state) {
document.documentElement.classList.toggle("dark-mode", state);
document.querySelector("#darkModeToggle").children[0].innerHTML = state ? "☀️" : "🌑";
}
function toggleDarkMode() {
setDarkMode(!document.documentElement.classList.contains("dark-mode"));
}
document.querySelector("#darkModeToggle").addEventListener("click", toggleDarkMode);
const useDark = window.matchMedia("(prefers-color-scheme: dark)");
useDark.addListener((evt) => setDarkMode(evt.matches));
setDarkMode(useDark.matches);
</script> </div> <script>
// Store navbar classes
var navbarElem = document.getElementById("navbar");
var navClasses = navbarElem.classList;
var navbarHeight = navbarElem.clientHeight;
function downAction() {
navClasses.remove("open");
navClasses.add("collapse");
}
function upAction() {
navClasses.remove("collapse");
navClasses.add("open");
}
// returns current scroll position
var scrollTop = function() {
return window.scrollY;
};
// Initial scroll position
var scrollState = 0;
// Primary scroll event function
var scrollDetect = function(down, up) {
// Current scroll position
var currentScroll = scrollTop();
if (currentScroll > scrollState && currentScroll > navbarHeight / 3) {
down();
} else if (currentScroll < scrollState) {
up();
}
// Set previous scroll position
scrollState = scrollTop();
};
window.addEventListener("scroll", function() {
scrollDetect(downAction, upAction);
});
</script> </nav> <div id="construction">
A
<br>
WIP
<br>
FOREVER
<img src="https://media.tenor.com/MRCIli40TYoAAAAi/under-construction90s-90s.gif" style="width:40px; margin:auto"> </div> <div id="background" style="opacity:0.2"></div> <div id="content"> <div class="two-columns"> <div class="headerContainer home textContent"> <div class="textContent"> <p>Hi, I'm <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();;(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t)},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="2664o1" component-url="/_astro/Footnote.ClYpWZaN.js" component-export="Footnote" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{"asChild":[0,true],"caption":[0,"hi! hover around other parts of the site and you might find other hidden treasures."]}" client="only" opts="{"name":"Footnote","value":"react"}" await-children=""><div class="footnote-container"><span class=""><astro-slot>Spencer</astro-slot></span></div></astro-island>. Welcome to my internet home.</p> <img class="lamp __playhtml-element __playhtml-can-toggle" id="lamp-akari" src="/assets/noguchi-akari-1at.png" can-toggle="" title="this is one of my favorite Noguchi lamps..."> <p>I'm interested in making communal computers<astro-island uid="Z2drbwr" component-url="/_astro/Footnote.ClYpWZaN.js" component-export="Footnote" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{"hoverImg":[0,"/footnotes/people-and-computers.png"],"caption":[0,"My independent practice is focused around the idea of \"communal computing,\" or computing that is made by _us_ for _us_. You can read more in this [interview I did with Are.na](https://www.are.na/editorial/an-interview-with-spencer-chang)"]}" client="only" opts="{"name":"Footnote","value":"react"}"><div class="footnote-container"><span class="footnote hasHover">*</span></div></astro-island> that gather people around play, connection, and creation. I'm an indie engineer, artist, and designer making things like open-source infrastructure<astro-island uid="ZqoQ3M" component-url="/_astro/Footnote.ClYpWZaN.js" component-export="Footnote" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{"caption":[0,"for making a more handmade and cared for internet"]}" client="only" opts="{"name":"Footnote","value":"react"}"><div class="footnote-container"><span class="footnote hasHover">*</span></div></astro-island>, small apps<astro-island uid="ZtBaPO" component-url="/_astro/Footnote.ClYpWZaN.js" component-export="Footnote" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{"imageSrc":[0,"https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-CNxtIJ2qWy/e32bd526c5d5feb83e8b5132510677bba717ef5e04a8080c9f259bf66da3e261ab189aaa3a664fee6951b90a14a6d839fdaa2140456cc162a86c5fd326ce3bbc7cb24ab66363b1b9ea9b40e1802a5cff3bc9f72f9dc02488e129321442ddbcf166665982?auto=format%2Ccompress&fit=max&w=1000"],"caption":[0,"an <a href='/creation/gather'>app</a> for recording your curiosities"],"isHtmlCaption":[0,true]}" client="only" opts="{"name":"Footnote","value":"react"}"><div class="footnote-container"><span class="footnote hasHover"><img src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-CNxtIJ2qWy/e32bd526c5d5feb83e8b5132510677bba717ef5e04a8080c9f259bf66da3e261ab189aaa3a664fee6951b90a14a6d839fdaa2140456cc162a86c5fd326ce3bbc7cb24ab66363b1b9ea9b40e1802a5cff3bc9f72f9dc02488e129321442ddbcf166665982?auto=format%2Ccompress&fit=max&w=1000" class="footnote-image"></span></div></astro-island>, internet art<astro-island uid="1HgD98" component-url="/_astro/Footnote.ClYpWZaN.js" component-export="Footnote" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{"imageSrc":[0,"/footnotes/botanus-still-transparent.png"],"hoverImg":[0,"/footnotes/botanus-still.png"],"isHtmlCaption":[0,true],"caption":[0,"from my internet <a href='/creation/html-garden'>garden</a>"]}" client="only" opts="{"name":"Footnote","value":"react"}"><div class="footnote-container"><span class="footnote hasHover"><img src="/footnotes/botanus-still-transparent.png" class="footnote-image"></span></div></astro-island>, and computing-infused objects<astro-island uid="ZdPmsz" component-url="/_astro/Footnote.ClYpWZaN.js" component-export="Footnote" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{"imageSrc":[0,"/footnotes/sigil-ii-transparent.png"],"hoverImg":[0,"https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-_oF1Z2Cgv5/e2a2a3580891820d7a19c46bd907160948e125676cfd4be0f8a81157b18658759233817d582444e29b30c85aaa5783c5f8d2c7fa50b10745d3f018281dd93fcd74b20753b513074257bfd9b23f29533d83d514e670112b2a9d12bf5adfa679d81fd056f0?auto=format%2Ccompress&fit=max&w=400"],"caption":[0,"the webstone I carry around to hold this very website (read about <a href='https://spencerchang.substack.com/p/touching-computers'>it here</a>)!"],"isHtmlCaption":[0,true]}" client="only" opts="{"name":"Footnote","value":"react"}"><div class="footnote-container"><span class="footnote hasHover"><img src="/footnotes/sigil-ii-transparent.png" class="footnote-image"></span></div></astro-island>.</p> <p>In all I do, I try to be an "internet caretaker"<astro-island uid="Z11Bbn0" component-url="/_astro/Footnote.ClYpWZaN.js" component-export="Footnote" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{"url":[0,"https://www.naiveweekly.com/p/url-poetry-club?publication_id=3348&post_id=136896792&isFreemail=true&r=2037y"]}" client="only" opts="{"name":"Footnote","value":"react"}"><div class="footnote-container"><a href="https://www.naiveweekly.com/p/url-poetry-club?publication_id=3348&post_id=136896792&isFreemail=true&r=2037y" class="footnote">*</a></div></astro-island>, stewarding the internet towards a space that enables us to not only love & support each other but also create & dream together.</p> <p>My work is supported by my generous <a href="/support">sponsors</a>. You can <a href="https://spencerchang.substack.com">subscribe to my mailing list</a> to hear about new work and reflections on carving out an independent creative practice.</p> <astro-island uid="GOX5w" component-url="/_astro/Signature.CGpUWDgW.js" component-export="default" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{}" client="only" opts="{"name":"Signature","value":"react"}"><div class="signature" style="float: none;"><div class="signatureContent"><div class="serif">Spencer 張正 Chang<br>[email protected]</div><div class="footnote-container"><span class=""><img can-spin="true" id="stamp" class="stamp __playhtml-element __playhtml-can-spin" src="/assets/name-stamp.png" style="transform: rotate(282.794deg);"></span></div><div class="socialMediaContainer"><a class="socialMediaLink" href="https://spencerchang.substack.com/" aria-label="Newsletter"><i class="uil uil-mailbox"></i></a><a class="socialMediaLink" href="https://twitter.com/spencerc99/" aria-label="Twitter"><i class="uil uil-twitter"></i></a><a class="socialMediaLink" href="https://www.are.na/spencer-chang/" aria-label="Arena"><span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150.38 88.986"><path d="M148.93 62.356l-20.847-16.384c-1.276-1-1.276-2.642 0-3.645l20.848-16.38c1.28-1.002 1.815-2.695 1.19-3.76-.626-1.062-2.374-1.44-3.88-.84l-24.79 9.874c-1.507.606-2.927-.22-3.153-1.83L114.57 2.926C114.34 1.317 113.13 0 111.877 0c-1.247 0-2.456 1.317-2.68 2.925l-3.73 26.467c-.228 1.61-1.646 2.434-3.155 1.83l-24.38-9.71c-1.512-.602-3.975-.602-5.483 0l-24.384 9.71c-1.508.604-2.928-.22-3.154-1.83L41.186 2.925C40.956 1.317 39.748 0 38.5 0c-1.252 0-2.463 1.317-2.688 2.925l-3.73 26.467c-.226 1.61-1.645 2.434-3.153 1.83L4.14 21.35c-1.507-.603-3.252-.223-3.878.838-.625 1.066-.092 2.76 1.184 3.76l20.85 16.38c1.277 1.003 1.277 2.645 0 3.646L1.446 62.356C.166 63.358-.364 65.152.26 66.34c.627 1.19 2.372 1.668 3.877 1.064l24.567-9.866c1.51-.603 2.914.218 3.125 1.828l3.544 26.696c.214 1.607 1.618 2.923 3.12 2.923 1.5 0 2.905-1.315 3.12-2.923l3.55-26.696c.21-1.61 1.62-2.43 3.122-1.828l24.164 9.698c1.506.606 3.97.606 5.477 0l24.16-9.698c1.504-.603 2.91.218 3.125 1.828l3.55 26.696c.212 1.607 1.617 2.923 3.115 2.923 1.502 0 2.907-1.315 3.12-2.923l3.55-26.696c.216-1.61 1.62-2.43 3.124-1.828l24.57 9.866c1.5.604 3.25.125 3.876-1.063.627-1.186.094-2.98-1.185-3.982zM95.89 46.18L77.53 60.315c-1.285.99-3.393.99-4.674 0L54.49 46.18c-1.284-.99-1.294-2.62-.02-3.625l18.4-14.493c1.274-1.005 3.363-1.005 4.638 0l18.4 14.493c1.277 1.004 1.267 2.634-.02 3.626z"></path></svg></span></a><a class="socialMediaLink" href="https://www.instagram.com/spence.r.chang/" aria-label="Instagram"><i class="uil uil-instagram"></i></a><a class="socialMediaLink" href="https://indieweb.social/@spencerchang" aria-label="Mastodon"><span><svg xmlns="http://www.w3.org/2000/svg" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="18 0 480 539.675"><path fill-rule="nonzero" d="M509.934 119.48C502.047 61.492 450.957 15.797 390.393 6.943 380.174 5.444 341.461 0 251.779 0h-.669c-89.706 0-108.95 5.444-119.169 6.943C73.064 15.552 19.296 56.613 6.25 115.283c-6.274 28.896-6.943 60.93-5.779 90.315 1.663 42.141 1.984 84.206 5.854 126.175a587.526 587.526 0 0013.962 82.76c12.4 50.284 62.598 92.13 111.779 109.203a302.928 302.928 0 00163.538 8.535 244.938 244.938 0 0017.707-4.782c13.169-4.148 28.621-8.782 39.981-16.927.154-.113.282-.262.374-.432.089-.17.138-.358.146-.549v-40.666a1.197 1.197 0 00-.465-.929 1.242 1.242 0 00-1.023-.227 457.85 457.85 0 01-106.125 12.264c-61.505 0-78.048-28.87-82.784-40.888a125.62 125.62 0 01-7.194-32.23c-.01-.186.026-.369.102-.539a1.165 1.165 0 01.834-.674c.181-.04.371-.034.552.01a449.063 449.063 0 00104.389 12.264c8.457 0 16.888 0 25.347-.219 35.366-.981 72.64-2.772 107.436-9.493.868-.173 1.736-.319 2.482-.538 54.884-10.427 107.113-43.149 112.422-126.005.199-3.264.696-34.168.696-37.555.023-11.503 3.744-81.604-.547-124.676zm-84.473 206.752H367.75V186.417c0-29.435-12.4-44.445-37.625-44.445-27.727 0-41.615 17.758-41.615 52.834v76.528h-57.363v-76.528c0-35.076-13.915-52.834-41.642-52.834-25.075 0-37.599 15.01-37.625 44.445v139.815H94.219V182.173c0-29.432 7.597-52.818 22.792-70.151 15.675-17.293 36.234-26.171 61.754-26.171 29.539 0 51.859 11.234 66.741 33.676l14.359 23.844 14.385-23.844c14.88-22.442 37.201-33.676 66.691-33.676 25.494 0 46.053 8.878 61.777 26.171 15.196 17.317 22.793 40.7 22.793 70.151l-.05 144.059z"></path></svg></span></a><a class="socialMediaLink" href="https://bsky.app/profile/spencerchang.me" aria-label="Bluesky"><span><svg version="1.1" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="-10 -5 80 62"><defs><linearGradient x1="0" y1="0" x2="0" y2="1" id="sky"><stop offset="0"></stop><stop offset="1" stop-opacity="1"></stop></linearGradient></defs><path d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805ZM50.127 3.805C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745Z"></path></svg></span></a><a class="socialMediaLink" href="https://github.com/spencerc99/" aria-label="Github"><i class="uil uil-github"></i></a></div></div></div></astro-island> <br> <astro-island uid="bfE9T" component-url="/_astro/Now.BEzBVLg8.js" component-export="NowBlock" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{}" client="only" opts="{"name":"NowBlock","value":"react"}"><div class="now" style="position: relative;"><div id="nowTitle"><span id="new">NOW</span> <span class="descriptionText" style="float: right; margin-right: 6px;">Updated 09-25-24</span></div><p>- Releasing <a href="/creation/gather">Gather</a>, an app companion to your curiosity.</p><p>- Creating <a href="/creation/computing-shrines">computing shrines</a> in my neighborhood</p><p>- (coming out of hibernation) Designing <a href="/creation/playhtml">playhtml</a>, open-source infrastructure for tiny social networks</p><p>- Open to <a href="/collab">invitations & collborations</a> for teaching, crafting, and scheming.</p></div></astro-island> <div class="hideMedium"> <p>Below, you'll find my selection of live furniture. Visitors can change them, and I'll move them around every time I visit my website. The more of a regular you are, you might
just find that you get extra privileges with these items...</p> <br> <div id="trinkets"> <!-- window of window --> <div class="trinket"> <div can-spin="" id="window" title="" style="background: rgb(0, 150, 255); display: flex; flex-direction: column; border-radius: 8px; box-shadow: rgba(0, 0, 0, 0.133) 0px 0px 8px 0px; width: 100%; margin: auto 0px; padding: 10px; position: relative; justify-content: center; transform: rotate(4870deg); max-width: 250px;" class="__playhtml-element __playhtml-can-spin"> <div style="position:relative;width: inherit;"><img width="200" loading="lazy" src="https://i.imgur.com/mJxf0Yz.jpg" style="width: inherit;object-fit:cover;"> <div style="position:absolute;z-index:1;top:1px;right:-1px;font-size:8px;font-family:'Press Start 2P', cursive;color:rgb(249, 184, 91);backdrop-filter:blur(2px);line-height:16px;padding:0px 3px;border-radius:0px 0px 0px 4px;background:rgba(0, 0, 0, 0.4) none repeat scroll 0% 0% / auto padding-box border-box;">12:25:03 11/05/2023</div> </div> <div style="background: rgb(0, 150, 255);position:absolute;font-family:Orbitron;border-radius:4px;bottom:-20px;width: 110%;left:-12px;z-index:2;display:flex;justify-content:center;padding:0px .5em; font-size: 18px;">sky</div> </div> <em style="margin-top: 1em">the last photo of the sky I took</em> </div> <div class="trinket"> <astro-island uid="Z1KKPD8" component-url="/_astro/ClockEmbed.D6D8NRHX.js" component-export="ClockEmbed" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{}" client="only" opts="{"name":"ClockEmbed","value":"react"}"><div id="clockEmbed"><a href="https://clock.spencer.place" class="button"><div class="footnote-container"><span class=""><iframe src="https://clock.spencer.place"></iframe></span></div></a></div></astro-island> <em>my website clock</em> </div> <div class="trinket"> <div id="friends" data-astro-cid-pj3evk5o=""> <div class="friend" style="--shadow-color: rgba(213, 218, 40, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://spencerchang.me" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/spencerchang.me/144" alt="the favicon for spencer's site at https://spencerchang.me" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(10, 75, 173, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://kayserifserif.place/" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/kayserifserif.place/144" alt="the favicon for katherine's site at https://kayserifserif.place/" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(46, 60, 234, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://henry.codes" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/henry.codes/144" alt="the favicon for henry's site at https://henry.codes" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(142, 123, 252, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://liuleslie.github.io" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/liuleslie.github.io/144" alt="the favicon for leslie's site at https://liuleslie.github.io" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(120, 97, 88, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://anhvn.com" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/anhvn.com/144" alt="the favicon for anh's site at https://anhvn.com" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(195, 243, 61, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://mangotango.mmm.page" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/mangotango.mmm.page/144" alt="the favicon for alicia's site at https://mangotango.mmm.page" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(146, 131, 157, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://www.mathurah.com/" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/www.mathurah.com/144" alt="the favicon for mathu's site at https://www.mathurah.com/" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(15, 147, 249, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://jzhao.xyz" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/jzhao.xyz/144" alt="the favicon for jacky's site at https://jzhao.xyz" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(228, 180, 17, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://index.niksethi.com/" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/index.niksethi.com/144" alt="the favicon for nikhil's site at https://index.niksethi.com/" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(190, 152, 190, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://cloudlord.management/" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/cloudlord.management/144" alt="the favicon for kristoffer's site at https://cloudlord.management/" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(122, 214, 92, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://azlen.me" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/azlen.me/144" alt="the favicon for azlen's site at https://azlen.me" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(180, 205, 9, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://ivanzhao.me" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/ivanzhao.me/144" alt="the favicon for ivan's site at https://ivanzhao.me" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div><div class="friend" style="--shadow-color: rgba(181, 104, 154, .4)" data-astro-cid-pj3evk5o=""> <a class="noanchor" href="https://www.boboland.xyz/" data-astro-cid-pj3evk5o=""> <img src="https://api.faviconkit.com/www.boboland.xyz/144" alt="the favicon for shaobo's site at https://www.boboland.xyz/" style="width:100%; height: 100%; border-radius: 50%;" data-astro-cid-pj3evk5o=""> </a> </div> </div> <br> <em>my friends webring</em> </div> <!-- tv of sliding i want to remember this --> <!-- <div id="tv">
<img src="macbook.png"/> --> <!-- arena channel --> <!-- </div> --> <!-- computer of garage --> <!-- record --> <!-- polaroid of latest "i love living" ? --> <!-- <Polaroid client:only="react" imgSrc="texture.jpeg"/> --> <!-- "boil water" --> <!-- "make tea" --> <!-- "pick cursor" (all of these configure your cursor..?) --> <!-- table with book --> <!-- writing desk --> <!-- some sort of plant that grows and can be watered --> <!-- cyanotype --> </div></div> </div> </div> <!-- BODY --> <!-- TODO: replace this with kaleidoscope or feral.earth stuff --> <astro-island uid="10mKY0" component-url="/_astro/CreationsView.D84UwbWU.js" component-export="CreationsView" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{"creations":[1,[[0,{"id":[0,"internet-sculptures"],"collection":[0,"creation"],"data":[0,{"title":[0,"Internet Sculptures"],"subtext":[0,"a shop for handmade computing-infused objects"],"parentCategory":[0,"Project"],"categories":[1,[[0,"Object"],[0,"Website"]]],"date":[3,"2024-09-25T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-AOj56DDY09/bf571efbb7bb96431e3e8e6de0cc85b2685cdd9f44d0ac5e6fa7f80ee5fce2a01408f690338cab41906530faf392cf6b7bcab9db0d2582b60656bc122eb84f98137d33d6bd2a8b233ed70104d20f27107eb991805deb3bb754c5a88231c29c74d71d1a00"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-AOj56DDY09/bf571efbb7bb96431e3e8e6de0cc85b2685cdd9f44d0ac5e6fa7f80ee5fce2a01408f690338cab41906530faf392cf6b7bcab9db0d2582b60656bc122eb84f98137d33d6bd2a8b233ed70104d20f27107eb991805deb3bb754c5a88231c29c74d71d1a00"]]],"imageDescriptions":[1,[[0,""]]],"link":[0,"https://objects.spencer.place/"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"neighborhood-internets-workshop"],"collection":[0,"creation"],"data":[0,{"title":[0,"neighborhood internets workshop"],"subtext":[0,"creating tiny social networks using playhtml @ Gray Area"],"descriptionMd":[0,"We live in the age of the \"personal computer\" these days. Even as the internet connects billions around the world every day, we still feel alone on the web. Our devices and interfaces were designed for individual experiences rather than collective ones. **Communal Computing** explores the shape of a world of \"communal computers,\" filled with software made for people to create together and love each other and made by people who care about maintaining it for the long-term. How can technology bring us together and give us space to support one another and create together? How can we build it in a way that lets the human behind the design shine through the bits and circuits?\nIn this one day workshop, we'll explore alternative device interfaces and internet environments that foster intimacy, co-creation, and solidarity. The workshop is hands-on and experiential: each participant is expected to walk away with a functional \"communal computing\" interface."],"parentCategory":[0,"Speaking & Workshops"],"categories":[1,[[0,"Website"],[0,"Software Tool"],[0,"Community"]]],"date":[3,"2024-08-18T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-gJeK22pxMj/026f6b64aacc00c60fd953a617e0f69a0a829d6088f5bab78c7455e5be53a19e99982c869956c3f32f61a57046ea05965d14eef21d05e38809c23c833aa7ab3bcebe22cfa4d540d657344cbc1ecd27b4b21283f72d5c5040a7e5e02efc349f8e19c482ee"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-gJeK22pxMj/026f6b64aacc00c60fd953a617e0f69a0a829d6088f5bab78c7455e5be53a19e99982c869956c3f32f61a57046ea05965d14eef21d05e38809c23c833aa7ab3bcebe22cfa4d540d657344cbc1ecd27b4b21283f72d5c5040a7e5e02efc349f8e19c482ee"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-AFUtvvKdYo/3f8b30b6a99f5e0acba707bf78c12505ba4b30aba9109de5cdc8e239d1ed8ab7eab0010bdc4f002a17a53ea76c4af59103988826725c2d4b389843d4c4871c1efb61bb0d7790427d24d9285f4828f6e4dc23e11f66d6298dacccd8a5e1a241dba1711375"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-BrNEoloce4/8bacfef410e1432122d234eb1479524272d64b7564f4f44bca3cd768aeae2f6932e9dd5f3cc459fef623748b0d1c6fcca018bcc5eaa777ec723804e5fd8577a401029fa15db18baf77e3d378ab3f303104a70bf5380dad3d97d0e5e9ca41579f7ac378bc"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-KpA0zKns-I/3124cc72465da4d8029644f994e97dd7f4ee821215c16d8429bd73743d0fbb23b62f03c3d8c268a04763027799b2f9f894452d9fb7dcaa37d66dde297c4cdbee501231f6e8b328bbd72176db4a4c07791d56f161b799e83d123c9157e93e8496b975218e"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-0oqE8zHtLn/fcd7faffe744ef3c2186fd0fceb1517a30c3e3beb9473396c9abf2a0abc6e658ad162e91e533788959db558ff8abf770c4f90f2a2b2d205219d6f89ef038a831e0efd1ed84efa0b0956953122cac0e7e51fd9fc08132054e0c766f01ae5cc9fdf24298c2"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-ck27WOblyt/9f29d054dcf8c84099ef62cfbb04bdc91aa4abb85428cce4bfe4a4971e126649399055f6b2bc82aa10fc181535a7e655d0b99ac1b508a32753a7727fe5f2dc3506fd2daf01244e385ebddb7be16ae8238fe974d238dada39af59ef7c5455182f50256375"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://grayarea.org/event/communal-computing-workshop-neighborhood-internets/"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,true]}]}],[0,{"id":[0,"computing-infused-pillow"],"collection":[0,"creation"],"data":[0,{"title":[0,"computing-infused pillow"],"parentCategory":[0,"Tinkering"],"categories":[1,[[0,"Object"]]],"date":[3,"2024-07-31T07:00:00.000Z"],"heroImage":[0,"https://abs.twimg.com/responsive-web/client-web/icon-ios.77d25eba.png"],"media":[1,[[0,"https://abs.twimg.com/responsive-web/client-web/icon-ios.77d25eba.png"]]],"imageDescriptions":[1,[]],"link":[0,"https://x.com/spencerc99/status/1818721711858368890"],"materials":[0,"clay, electronics, phone"],"movieUrl":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-NLOtkVUaYf/8a8fb4d349ae0be462605c95d61853367d1e9fe0b75b757918d7b051eb2d3e9f834cf3c27384f4decba529df66b52ae70565f31e9ab54ef38cacc62ed01343b10c357e396661db041eae7225f8699bd4678307a6297fc033ebf12d482f382d187d32d908"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"acknowledgenet"],"collection":[0,"creation"],"data":[0,{"title":[0,"acknowledgeNET"],"subtext":[0,"a dedication to the human infrastructure that makes up the Internet and the infrastructure used to make this installation"],"descriptionMd":[0,"Anywhere you go on the internet, you find comments left by someone, somewhere in the world. So much of the internet—its content—is created by us. The internet is the internet because of our labor.\nAcknowledgeNET is an internet art installation dedicated to us, the creators of the Internet. An ever-growing list of our contributions to the Internet masquerades as an artist label for the Internet as an art object to juxtapose the human faces that make up the Internet with the huge platforms that are commonly attributed as its creators. Meanwhile, a computer operates the piece's open-source comment archival infrastructure in a live performance. Extending Mierle Laderman Ukeles’ “maintenance art,” the installation highlights the often-overlooked human infrastructure behind the internet while exposing the infrastructure used to create itself.\nIntimate memories mingle with the spark of love stories while frustrated complaints dance with absurdist reviews and crude jokes, all the while voices from bloggers and artists cascade alongside video game music and ASMR unboxing sounds, capturing a blurry self-portrait of the Internet and the people that make it what it is. The computer's live performance features a livestream of its desktop as it pulls up link after link of comments, reviews, and posts across the web. On each post, it selects each part of the comment to archive that streams down the open code terminal on the right side.\nVisitors are invited to offer their phone to the installation in order to not only submit new acknowledgments for archival but also run the work’s infrastructure themselves. Transforming encounters into collaborations, AcknowledgeNET becomes the seed of a community network devoted to our Internet presence, connection, and labor.\nAcknowledgeNET was shown at [Gray Area in July](https://grayarea.org/event/gray-area-artist-showcase-summer-2024/) and presented at [the Internet Archive](http://tiat.place/) in November."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Art"],[0,"Installation"],[0,"Website"]]],"date":[3,"2024-07-11T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-_nuypn6MBn/dfe6afd738ab26cf4f46bff4fd7ee6904fac0f9008bab9baf0ec9c1e6e75d206cabb8f01cb801c36b9a0616a82312fae7cf3bc009bf31042e9fd14639be049f619a22f41043fa9b3b9443abf2de13adece49bdc5013dd716c8b2652a3d9e3f0ba0e620d4"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-_nuypn6MBn/dfe6afd738ab26cf4f46bff4fd7ee6904fac0f9008bab9baf0ec9c1e6e75d206cabb8f01cb801c36b9a0616a82312fae7cf3bc009bf31042e9fd14639be049f619a22f41043fa9b3b9443abf2de13adece49bdc5013dd716c8b2652a3d9e3f0ba0e620d4"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-BNjuevUyVr/9dad1d0ec3d9df22b7389872d6156ebc5271b86743fd0ad7735e0a550c13490abafca9472e54d3b26e2c0820ad14507e7b88908344082f706c698b0ef28a0961e665c44a3c6132d36a3eef0724b53df6020c504a8ba46b8ab78b2727e51a2749ea6e98a4"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-L1utx-ZiL2/8665e0945060ece89ad01be52c5a96616dbdca854ed9a0ec6569414c692114cdecaa7b17fb1ba0862d3d6393860ffaa6867f427a520f5571392aa02f23f0089716823ed748d749b0b4f948adea0f7d2da62bbc6aaa5324c0955a4d382e560377f177bc19"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-RGVymfLpg0/3cafb50eee1d7c3fe714a8d4bc325cd49f426bd64af8a19ac1c4da1c0ce3d56bcb8c4d905969be55e37c08f7ca5afe4d75a380b83992e40bca299d0c232efbf62b83717da670dac31df73311995733dcc7e4d7a31b4034b40c423934dc5cf73e22cae5f6"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-OoIwix8_3Z/bcb95aa367584e40513e9ae452a95e6dca43e8ce3941330a155ff5b89a795c6251241b2235f5476a230ef6b0cb773342250893741167841afa289872f310432f7ff0230c66dd6bdb5d2ee297747d5a068a18559c29b872bfa7cbc04cab152f11f92b29a5"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-cx3hmVJACb/a6cc868d83d2f8b7497e360cf34645dbf8a773f4ae22bab17f5cd12550f2f8303176946a6a0217fd5d17fc1ac4472c60097c78b715b623203c3057cb74216ebb75ebbd70f9d7f99beb80e930e2aa7c8ea1b3315cc4156a901dd80994c0d598c4b05f2908"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-4lIgRdccvP/0778b4a437898908a42bcd82d5710fcd24b9ec042661757ff89f1c8c1fd5194d2a2c33727900e3581784b00f1e676898fe966f34ff27586c35abf26cc80e4363fc9845d6e2432cbba1d6200dfe5569de64395b23974bef7b2caed84ae49bc23ba95254dc"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-GA5ag5CV9b/9e8b0754999bd3395e60076e12fed3815ace567069f1fd538dc2d30c7bad0dae15fb598623ae2aa8a845a0856216a3e4e15aeae0a0d72a9005992832163fd5c36454c7957fcdc870069f7164a4c5febd352be301c12a10bbc42de29d2b40d8bd4e2783aa"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-Ld_Fd9zg35/1152311cbab2f95583bd123860115e4b06869e9c5c440730ce5ff8db497ac6f50dc362190b38f498f5b87e55ed8532fb2c41f702e0151398753856d9dbb2815248a0c176bfab9485cb2172e561482023fe02d84a6a789efa24d9bed65cb7552fcde506b3"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-zVJ4PS_giw/87f39e4d7e4b1f2b3e67dbe1713b4b6bd371ed7225d2bdbeac2623a4d9cd4e316ce3bc0c7b142258272bca6ac48bd2e146d625329a74676c958648f21ee3df689cf5791dc78850ca787447d1b8b8f16f8911aceedc2c22a78cadabad4cb201a89dff6541"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://acknowledge.our-inter.net/"],"materials":[0,"Internet comments, community archives, interactive website, router, white plinth, acrylic display case, phone stand, printed out instruction comments, projector, employed computer, speaker, HDMI & power cables, chair, desk, user link submissions."],"movieEmbed":[0,"https://player.vimeo.com/video/992244617?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"we-are-all-(folk)-programmers"],"collection":[0,"creation"],"data":[0,{"title":[0,"We are All (Folk) Programmers"],"parentCategory":[0,"Writing"],"categories":[1,[[0,"Writing"]]],"date":[3,"2024-07-01T07:00:00.000Z"],"heroImage":[0,"https://substackcdn.com/image/fetch/w_1200,h_600,c_fill,f_jpg,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dbf8bfa-7dc0-441e-9530-41ea352c7ae9_1280x720.jpeg"],"media":[1,[[0,"https://substackcdn.com/image/fetch/w_1200,h_600,c_fill,f_jpg,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dbf8bfa-7dc0-441e-9530-41ea352c7ae9_1280x720.jpeg"]]],"imageDescriptions":[1,[]],"link":[0,"https://joinreboot.org/p/folk-programmers?publication_id=37465&post_id=146112666&isFreemail=true&r=2037y&triedRedirect=true"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"gather"],"collection":[0,"creation"],"data":[0,{"title":[0,"Gather"],"subtext":[0,"a local-first collections client"],"descriptionMd":[0,"Gather is a mobile app for collecting, sorting, and revisiting multimedia data. It works completely offline, stores all data locally, and optionally syncs to external data sources (Are.na) when there’s internet connection.\nGather provides the infrastructure for a new way of interacting with apps with user data ownership inherent to the experience and new interfaces for archiving, sorting, and revisiting the digital objects that are meaningful to you. Gather stores all user data locally and requires no internet connection to use, while allowing users to sync media to and from external data sources like are.na. Gather is an app posed as speculative fiction that points to a world where all the data we produce is fundamentally ours, and apps become tools that we form partnerships with instead of platforms that we are beholden to."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Software Tool"]]],"date":[3,"2024-06-01T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-i6iLqPBXV-/0a714634b25891170584552bea49eedf5828587e7fca3168e00b1fe3b9cb0ee49a5c44747eac74c552ac9407fcd3dec0207d824dfef08f4a7c85b1c569833c5a6b3a0885491a28f3d8d62294bb91dd1fd79acc4c4060efb38aee3cbe69b02cb3aa03ab39"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-i6iLqPBXV-/0a714634b25891170584552bea49eedf5828587e7fca3168e00b1fe3b9cb0ee49a5c44747eac74c552ac9407fcd3dec0207d824dfef08f4a7c85b1c569833c5a6b3a0885491a28f3d8d62294bb91dd1fd79acc4c4060efb38aee3cbe69b02cb3aa03ab39"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-CNxtIJ2qWy/e32bd526c5d5feb83e8b5132510677bba717ef5e04a8080c9f259bf66da3e261ab189aaa3a664fee6951b90a14a6d839fdaa2140456cc162a86c5fd326ce3bbc7cb24ab66363b1b9ea9b40e1802a5cff3bc9f72f9dc02488e129321442ddbcf166665982"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-atwPzj0XVt/1b1f4cb87333f3ba62fc103856b9a56692192273d1d2958c5c4b91aedb21682c4984007c395b5a6b033f67a7195791aba7133310779ee2ebc2488dc49896874144e73acd45cb0bfa25ac4e2166ca0279dcf244f877b8895068b07fcf6f5038482fabe60c"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-nsRzqjJCBU/d99f2d6dd115bda4f8393d1098cef6149b710a7615b68481a6f3d7390ca8041b544bc1291467d5d563a611e0b26ba7a2f9744eab1817a34314cf46adf59ed7b2b6b4147ce0fdb516a1520672c78be3621fdc85255214aedd54a0efb4f82d3ee58d3bb4a6"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://gather.directory/"],"ongoing":[0,true],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,true],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"touching-computers-creating-data-talismans"],"collection":[0,"creation"],"data":[0,{"title":[0,"Touching Computers: Creating Data Talismans"],"subtext":[0,"a workshop weaving digital and physical worlds"],"descriptionMd":[0,"I made \"[SIGIL I](https://spencer.place/creation/SIGIL-I/)\" to be my first *webstone*, a handheld ceramic sculpture that holds my website. I carry my website around in my pocket and \"give\" my website to people I meet by tapping their phones with the talisman. But these stones aren’t just limited to holding websites. They can be infused with any digital media, from a message to a nostalgic image to a favorite song, and even programmed to take actions like sending messages to friends or joining a wifi network. These webstones can be molded (much like clay) in both form and function into intimate portals for their creators’ identities.\nIn this workshop, we’ll interweave the physical and digital worlds and create a clay computing sculptures using natural air-dry clay. After, we'll explore how these \"touching computers\" can create a foundation for an intimate communal exchange. Attendees will leave with their own functional data talisman.\nI’ve hosted this workshop internationally across 3 different cities for several hundred people now. Each time I’m still blown away by the creativity that attendees come with and the generosity they show in their gifts to one another. From tiny ceramic phones to phone parents to miniatures of pets that pull up a photos album to apartment guestbooks, people are always making a new creation that combines physical and digital craft into a single artifact.\n**Workshop History**\n- (forthcoming) with IDEO in San Francisco\n- 09/24/24 at Hex House in New York\n- 07/28/24 for **[Fidget Camp](https://fidgetcamp.com/)** in San Francisco\n- 07/21/24 at **[Trust](https://trust.support/)** in Berlin\n- 05/04/24 **ancient futures** at Stanford University in San Francisco\n- 04/24/24 at **[madsci](https://www.madsci.io/)** in San Francisco\nContact me if you’d like to [invite me](https://spencer.place/collab#invite) to host it with you."],"parentCategory":[0,"Speaking & Workshops"],"categories":[1,[[0,"Community"],[0,"Art"],[0,"Ceramics"],[0,"Hardware"]]],"date":[3,"2024-04-24T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-TS2ozyy3uz/86a04769e5ca2ea81691a08322eb57f2e5bb9e230b00e3acd5de25d39ce4c7afec191458bee5b0286f3f9937a40ac3e94027a512f1e3088f2fa195464baa1e30399468294dcf83c056bc1dd9581ef6d1de805117d4ef7bb0d3eda14aebeb145341b4f3dd"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-TS2ozyy3uz/86a04769e5ca2ea81691a08322eb57f2e5bb9e230b00e3acd5de25d39ce4c7afec191458bee5b0286f3f9937a40ac3e94027a512f1e3088f2fa195464baa1e30399468294dcf83c056bc1dd9581ef6d1de805117d4ef7bb0d3eda14aebeb145341b4f3dd"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-xWhKfWWX4I/42b3682b1af48e7c2c11c67ecd30d2f34d565999a7f05fed2cf69aee98c8dfe80cc29f3184e427133ed0ca0f09df4041618134fe9bc0dc3975dcfb14ac9aa05eb79d723b209ada27de833ba2e6bef39441372a9b786c48c4cbeb54fe82b0ab3bc337a044"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-_oF1Z2Cgv5/e2a2a3580891820d7a19c46bd907160948e125676cfd4be0f8a81157b18658759233817d582444e29b30c85aaa5783c5f8d2c7fa50b10745d3f018281dd93fcd74b20753b513074257bfd9b23f29533d83d514e670112b2a9d12bf5adfa679d81fd056f0"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-trfyonNyDS/0c47e98d1e651805fe4df55fd6a1783e05e29b93b7e7ba0b9788d11ef382f86ac6d401cf9195b4158a9ea1f1e6f03c424c0a0c57ce9b16dccd3d4382f1abfabe9afe643d40682ed80bc3e22084953747cc6207b2c801f6115e2bdbf41e53c7452ee9e7ea"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-33unPrtjOf/35abac00a840b52c2ecf3f0893d7fadd765f2d34a223a3f8aecb90f782fe4dfb91d8c276dc8dff677538cc8f16f17f2ea808331929eafb5f0acc2f9bf88a2184efe676ce255732e1bf0adde40f608aa8275ebeaccb2ab3da4ac49d7c95d8e203b0637160"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-YNI-oP4sph/37118f225059443b66fad00df2ecb091f3d40b9b1620379dc6b3de5dd518280947fc1b9d386ee922d4eec4f6780dfc648bebd46d81db4ae8bae5d305d82d6b614e78b392c71b58946c232ddeb74e3fb334662fe7cbf955c90c6fb1e7953a6cf3cdb59054"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-nDNCSFsSHw/4ac5494dad484a8b4b119b3bca9374041e0a7b6b3c97ce9f5c71754b6907193cb081b3573cb30d97decccdd9d097c3b085745eccb2c6a4d7acee6e877c37e02f948ef7221114961eb112995a6985faeafd21ecdf599760d12f352b2dcc3f98782985a485"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-Fbxfe8UpDp/b34be301d6465fc490ed0f912373e30c4d048181188c75c06dcf59353037d3332baa12ea4aca419df7376d7ce3ac4639e302222302754661ea265c8ca82ed6454edf35221c9da6ebe37d8d3682495d87b641d991607487c38335d0acec96be179dcb7a06"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-bVUhhcGE5U/9c5b3b3a86c4991e1386f7867125fa5929c94819cfa9158924cbd18f9b2981b6732e866c33cceada96da9fac143c01776f13c3b22ad6613b2d79641d8eb584a4fc9399ebc291c5a16ed63a5a68ae5a0db0d88e2a04ce601ae9991978329f04b2d9d5d926"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-X0w6ghSiYN/fca5f05a485bd9edeab5246ff9ce191974c50cfcb13ec93a41fb8abbe50074cf45e35f71997231746e4ef67fad266c1be5cb1a7e5d86f4b3c70e16756f89f3802370ac9a4b91b4e9442dcf1b0b29c5695d0c9a02e3310106601ecb2dc91498d364af2354"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-AUJzClKMBz/457a5ec8e87f5f51f061e26fcd1066c3f9951ee37017ed5a5b4d7751b11cf347312ceeea884ef2190df7d1b195dac8d4e8fe70b3dbf689b2b404074c2a3bffbebcba7c61beab687524b45fffbd82c88d7e79bcf609b729a9a3632fb1a9b8e7e20f5c7094"]]],"imageDescriptions":[1,[[0,""],[0,"a sample of finished webstones from a workshop"],[0,"spencer's finished webstone made with fired clay"],[0,"alicia guo's webstone, painted and finished at home"],[0,"Leia Chang's phone and \"phone pillow\""],[0,"a sample of finished webstones to give away at Stanford University"],[0,"Fiona's sketch and completed webstone"],[0,"the full group at my first workshop at Madsci"],[0,""],[0,""],[0,""]]],"ongoing":[0,true],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,true]}]}],[0,{"id":[0,"reinternet"],"collection":[0,"creation"],"data":[0,{"title":[0,"RE:INTERNET"],"subtext":[0,"a talk about my creative practice & the internet"],"descriptionMd":[0,"There isn’t much hope for the internet these days. The same 5 apps, our data harvested by large algorithms and platforms, ad banners and cookies banners and more flourish.\nWhat did we want from the Internet before? What do we want now? And how can we make that dream a reality?\nThis talk was given at [Gray Area](https://grayarea.org/) in May 2024."],"parentCategory":[0,"Speaking & Workshops"],"categories":[1,[[0,"Community"]]],"date":[3,"2024-04-17T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-KZ7M8kuq-u/d80691142eea96b9961377af76b94137a4cdb8a7926f0783aa2a220228be7b1adff645cd3a6fd92a5cfeda9fedca64107aa724ec38a35e508830987646f59b68deab7f13e986dcbb42e1eda651ed2b6918008cc97192542e8e7340676e659becfdcd7e88"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-KZ7M8kuq-u/d80691142eea96b9961377af76b94137a4cdb8a7926f0783aa2a220228be7b1adff645cd3a6fd92a5cfeda9fedca64107aa724ec38a35e508830987646f59b68deab7f13e986dcbb42e1eda651ed2b6918008cc97192542e8e7340676e659becfdcd7e88"]]],"imageDescriptions":[1,[[0,""]]],"link":[0,"https://www.youtube.com/watch?v=EbaQecvGR3E"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,true]}]}],[0,{"id":[0,"cursor-watching"],"collection":[0,"creation"],"data":[0,{"title":[0,"cursor watching"],"subtext":[0,"a multimedia installation and internet environment exploring the extremes of watching one another online"],"descriptionMd":[0,"Surveillance involves a kind of watching that invokes fear, while seeing one another with full attention is called \"the rarest and purest form of generosity\" by Simone Weil. While I hate the idea of a government watching through my webcam, sitting in a public park and people-watching is one of my greatest pleasures. When we use the web, we inhabit a world that exists simultaneously within these two extremes: our data extracted by platforms and logged by governments while we bear witness to acts of love between strangers in the depths of a forum.\nSituating visitors in a position of surveillance and simulating a large surveillance feed, cursor watching reveals itself, upon closer attention, to be a collection of live windows looking onto various corners of the internet. \nEach \"video feed\" shares a live window into websites from across the internet that show the life and actions of present and past visitors. The frames are zoomed in on displaced corners and unusual details of the websites to create surreal compositions that render even familiar places strange. Across the different feeds, the life of the internet unfolds: from the traces of former visitors to real-time movement and croaking to the neverending movement of GIFs. When installed physically, cursor watching features a mobile activation, which empowers their phones to induct them as performers in the piece.\nUnlike a static surveillance feed, visitors can choose to interact with the featured sites, recording themselves into the history of the website, or embrace lurking and simply watch.\nSwitching between these modes yields conflicting emotions: the whimsy that comes from watching the movements of people and the voyeurism that comes from watching while unseen. Presenting our everyday internet activity as a collective performance, the site serves as an ode to the diverse life unfolding in every moment on the internet and positions the attention we pay one another on these internet corners as paths for liberation from an oppressive kind of watching.\n*cursor watching* has been exhibited in New York and nominated for a [Tiny Award](https://tinyawards.net/)."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Art"],[0,"Website"]]],"date":[3,"2024-03-02T08:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-dG9eR41xrG/0488dde3ae8ba22149bfb56596ace598a6678b33964ece2d7cfd5bd5115e5bc43956da7d5377ad2ca3e46b185b317f622e13fd01e54b0f84430b829f514986398d3a6351b99c001bf1657812af74500a49db7968f28af3086097abae534f51afc31aab18"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-dG9eR41xrG/0488dde3ae8ba22149bfb56596ace598a6678b33964ece2d7cfd5bd5115e5bc43956da7d5377ad2ca3e46b185b317f622e13fd01e54b0f84430b829f514986398d3a6351b99c001bf1657812af74500a49db7968f28af3086097abae534f51afc31aab18"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-sL8oHA_EJb/f23e72e00d0285b73eb3ad1e410c133d2e358d92a235f6c876d69a7a69d795685c3ba5395d285c8479b03fbbdeb192fca2687194d0928539e49031a16a53d03248971381afed0319c4ba063cb84cd18477f92a9d81f89fc0c2bc6661ca083293fc9cc1a2"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-7bRFmy_dRd/25b56faae433dd24621589ee9f184d54aeba7c1ba579ae3351a6be9147ed895cc54f953c4c54c9f1191b90cb2654f6e209415e85975fc1b9c4f0009b192a4a5335cd912ca37963273263153b08649c3cd55922fe0e656a7f4a593cc3c039d34bdff4f356"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-YXlJzIfZHQ/77bef5664fccbe7749376b74a37e5365956e21247fa0dee181d3dcdadbd6cfcb5010adf4a69cb275339b84206d9fa500c30ea3c2f2cc20b11761958d5371c8124c1e57404214aaaccc452b7e2afaf23163cc920cd4ca825dcae067fdc254118c7cdad671"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-NHWeAufDj0/a291eef0dd9c7388a6f9b80d55672a0e2f5e3978a85c56104885d9c51b48a37225a8a174598f114a2989b3b04a3b079ad99730e10c20bc344f961fdb21194e286e3569620fb55adee41bfe171c1bb1cbb47b2bdfddfe64563f8ff68dc686f7c55679356f"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://cursorwatch.ing/"],"materials":[0,"20 iframes, a real-time web server, interactive website, visitor cursors, phone participatory interface"],"movieUrl":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-3sAn_jqexq/6e35369817dd439b24587281e58f34cd939a69aeaee18dcb2a8f165948087bd1443c86903e3e4c89ec901d167ee8d46f3647a967025b51f6a2d3ba385d4afe50ec7b50c86bb7b1de346a5283389d44a82a55cd2108f78bcd917f31ced0bd0fd4d0d49253"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"sigil-i"],"collection":[0,"creation"],"data":[0,{"title":[0,"SIGIL I"],"subtext":[0,"a ceramic computer"],"descriptionMd":[0,"*SIGIL I* is a ceramic charm that holds my website. It is embossed with my personal logo, derived from my Chinese name (正). I carry it around with me whenever I want to keep my website close, and when I meet people who want to learn more about my work, I ask them “can I give you my website?” and tap their phone with *SIGIL I*.\n*SIGIIL I* is a first experiment in creating single-purpose objects to represent digital ones, giving them form, texture, and history."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Art"],[0,"Ceramics"]]],"date":[3,"2023-12-13T08:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-TsfkAv_YtK/1b8d4284efb9fb9553a9602bb68022c877a4a51f32f84a2278c3b85c8faa1b31c6977b42693ed34b40d1d4681bdbb3ba4530db02935c5a6e6925f19561a5a1658707c344dede3a1d0052fe7ee41217638c9fcd3887af96f9ad3838593c7f96f6cf801375"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-TsfkAv_YtK/1b8d4284efb9fb9553a9602bb68022c877a4a51f32f84a2278c3b85c8faa1b31c6977b42693ed34b40d1d4681bdbb3ba4530db02935c5a6e6925f19561a5a1658707c344dede3a1d0052fe7ee41217638c9fcd3887af96f9ad3838593c7f96f6cf801375"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl--f9cYu6qOB/62144e0861ef76b60f45ea771b141ce68bf261eceadd2bef4b908f8800b4b5caa06788b14a6330424327dcaaa49e42b4b7d3a7b4f128938f08762cf1cdd052f38226d4a1ea375a3ec787da10229d54d52885a5e78269a40672909f034497bdfc830f8482"]]],"imageDescriptions":[1,[[0,""],[0,""]]],"materials":[0,"ceramic, epoxy putty, and NFC chip"],"movieEmbed":[0,"https://player.vimeo.com/video/992246193?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"syllabus-taking-an-internet-walk"],"collection":[0,"creation"],"data":[0,{"title":[0,"Syllabus: Taking an Internet Walk"],"subtext":[0,"with Kristoffer Tjalve"],"descriptionMd":[0,"Kristoffer Tjalve and I collected the parts of the internet we don't see often anymore: the hole-in-the-walls, the shrines by the street, neighborhood cafes, and secret sunset nooks into a syllabus.\nWe explore practices for discovering, maintaining, and adding to the many internets blossoming beneath app hedges and large platforms: from visiting local neighborhoods, to foraging for messages in source code, to cultivating and publishing your own lists to the internet & more.\nThrough these practices, we imagine our ability to create a plurality of internets as opposed to a single, monolithic Internet. \npublished in the [Syllabus Project](https://syllabusproject.org/)"],"parentCategory":[0,"Writing"],"categories":[1,[[0,"Writing"]]],"date":[3,"2023-11-08T08:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-vo4stgPu9h/c1a2325145e61b111900d53231e9e0325a78647acc2a1b00e8dae2bb4b95a900c1eb405c8619eb7d18d372737d5043f0f3a9237f8aa6f963ce834229f9cf06a7157cd0e63dce0cf91e4187372d73b6a80bbd19dcb9da6e9ef7cbaca37642207663cf28c4"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-vo4stgPu9h/c1a2325145e61b111900d53231e9e0325a78647acc2a1b00e8dae2bb4b95a900c1eb405c8619eb7d18d372737d5043f0f3a9237f8aa6f963ce834229f9cf06a7157cd0e63dce0cf91e4187372d73b6a80bbd19dcb9da6e9ef7cbaca37642207663cf28c4"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-U9R4D2OUay/f25708918453b4566314b34f863d7d107ca677d3c9d3e324c4f9a250b1130ff27253a70cda7cfb19c53c23949f568f1a349576a4bb8ea8a5f93e71424f0e8021f071c38ba384e3a33abaa202717c14dabe1cf1206b6e3d39fef72bfa88fda104ba8b9367"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-IUDxhi6y75/ccbb29fe7dec2fdfb7c906d223b4df056502eca1ada6291268ad04135ede2654c68dcdf9841ddcc6d5b03eee217577c4cb77a741ccf5250ea67d0a6e911680194b7a59e327f76780a53625f05fd14777fef40c1d7d2146a3b4cce4eb38cf3b3775bcdc66"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-topgqSiO2S/3bca090c8e5b86c500a7ead0124975390462fbfbd252a56de5d739c2570a3eee8ebc87731efb6ac494c94b895e770f647aeb350ef584f6ad2c97f6a92d356e2d9a1d3f9c4917c1fa7ece6f389b80c842fb490f08b54f74c7379c47ecbf1ca92d20a02df0"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-sQ8gBGnZZk/f3f01124e2022fe2907056e2b8f0a27b0f69fb70e730af9d54d2c697405ceb71bcd438ac9babd6b557ed5ed399b30933090456105c6cd939beffc4b4ec0711924248e2c856a4483a74644daec8e5f2734789b5681b22be01b1c9a36f4c097eea2011fd65"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://syllabusproject.org/syllabus-for-taking-an-internet-walk/"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"iframe-quilt"],"collection":[0,"creation"],"data":[0,{"title":[0,"iframe quilt"],"subtext":[0,"a composition of iframes of the poetic computation webring member sites in a quilt"],"parentCategory":[0,"Project"],"categories":[1,[[0,"Art"],[0,"Website"]]],"date":[3,"2023-09-23T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-LS25nh2Pwr/2c16db5e210835e184a158d668a396674b381cbdd21d0e3b6421f3ae75f67b1e821c20ae1457875175df249a98e1991c1b92df401769cab6d7e3d4459d2c69062de8f1faa048b08071a7ee739a75bcbd7ab44ca11bf37e8f910649211a718427bd2fa990"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-LS25nh2Pwr/2c16db5e210835e184a158d668a396674b381cbdd21d0e3b6421f3ae75f67b1e821c20ae1457875175df249a98e1991c1b92df401769cab6d7e3d4459d2c69062de8f1faa048b08071a7ee739a75bcbd7ab44ca11bf37e8f910649211a718427bd2fa990"]]],"imageDescriptions":[1,[[0,""]]],"link":[0,"https://twitter.com/spencerc99/status/1706385150471500094"],"movieUrl":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-WWhDKi1Q-U/cf8eeb4be82428d3e48c541fa4e479063c870f69f3ec549245a14ca8504b6a4f7f8eca9d7b915cf10cbda81b18d2d1ec4d3487b3a4b16c8cecef296ef398c127596a55bc9983fbc29225e90c99523c2dc9e0f817d98734ba7b85d857e7d2ac6dd426b1f5"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"poems-we-found-with-the-internet"],"collection":[0,"creation"],"data":[0,{"title":[0,"poems we found with the internet"],"subtext":[0,"a neighborhood fridge wall"],"descriptionMd":[0,"A poem about picking up trash is materialized as fridge magnets. Each word is movable by visitors, so the piece is changed by anyone who visits, creating a site of communal poetry creation. By giving visitors the power of free-form movement, words take on a life of their own and the shape of the original poem is transformed into the particular desires and intuitions of visitors on any given day. How do words transform when they are adopted by a new owner? Who dictates meaning in a communal space?\nThis project has been featured by [Rock Paper Shot](https://www.rockpapershotgun.com/this-web-game-lets-you-drag-words-around-a-communal-fridge-door-to-create-poetry) and nominated for a [Tiny Award](https://tinyawards.net/). \nAn [open-source archive](https://github.com/spencerc99/spencer-net-shots/tree/main/fridge-poem) of all poems captured on the wall is available for each day."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Art"],[0,"Website"]]],"date":[3,"2023-09-10T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-1xMvMHVyQr/345c37ce2f62f5aeab6d84ccbfe61a58434600f22d1a33dda28b976fee722a1a2ac1eec34d661200d39015679d9259079394f854287faed03c1b514acc24ca525bd508f6edf88026b40a7f689b3131e86e52195164c2e0adc7915fb90620a625f5a34414"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-1xMvMHVyQr/345c37ce2f62f5aeab6d84ccbfe61a58434600f22d1a33dda28b976fee722a1a2ac1eec34d661200d39015679d9259079394f854287faed03c1b514acc24ca525bd508f6edf88026b40a7f689b3131e86e52195164c2e0adc7915fb90620a625f5a34414"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-52h_5xlU7w/d61afc0d55b692394607ebb5731246e34a8e242cac53c4285ed48139c515d3103a00b1ba3a8607f6a9efcccf11c8f758299032131764dd45f4322279358b8a58c85172e2c878cd30da4dda22c0743aa7d3533413c4a127e898cdeaad91587db7b89f1250"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-aKvHMQX03S/541093ac94e3dc151c464f3994d96a75f58dd6f75b91ca16a26d5222deaf5c09b0ed47a72164fe5d32cc7396438712b47f1d9ff25cf09b4388c12e1f84e5f913143141252d667968d2bc7bc3923a315f0e8d2d7e390bd16c6b74a66ff02c1e10e806292d"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-BDOtVEMT1E/094cfebc3acd6564c339db50616a802b3770251737c85e64be9af142b99e27fa97c27f187f5984ff01f212a0366603e001132e0cca87213bc12a660a623666703b99529e404ed605b8366785a87781bb9088879d6d053a7381b97bb559d7fc4a615a0fd5"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-2HSy9Y1eDK/567c450ec16a44a22aa0dc196732f932891fbc1204e4f9e6ee10b7b0ad29d37dace0fa294c42bc82bd1648a08b67b545dc7c0c6118c460a2b128525c2417970bbd21aff5088a0b60c48797067850dc02c8820f9f62617d718ee030a958e2ee3e842aa6af"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-Ga8PPQJr0O/da25003f0025395efa5edd3b18f4214e37301a68beb780db5574ea325f1a82c3d64b24350dcb7e17c90c9929931cc2b443b7627cdb3d6033a830c72d925caab9625b73f044a7adee76ae3432009620716282566082d92f12c2b565956e414b0e0276d20e"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-rLfFmFiadL/697e4a01571b97a0358b80189bcbc1bc92d2c5fb17535dbfb6bc5c3f8dc115f99739ef0c49212cd0bef612367c5c647af11bfc778587a425690aa66b375b5f75f5a15c686e792e49ed7be27eca7c1f80a98e09431463863fd13cdd845e944a9b47c63340"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-sjw0xpLCB6/06f73a816bc9eeb39988bf1be723b0ce6f751d61dc7eca6e91ed19678f154ec0fdcdb426449ac3169b154cb93f8aae3f3c263c78f5fe1ad777f8f881c50027d1256bb9023a3f642d346a64f1daedbefac5a161019e371ee2b153ab9d1aeed915b9fae662"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-A1yA-I37Ee/c5acfbd9f7ff29467ff8eaf1d852367456b2696f1420362614318a8a34200fed87490c18f0e3c29969d1aa4e8cab0d81aa181b9a93649b2c02ba169bbfe445ce8d377bc038252d03ebde7c0211fb11389862fce400ea4377d11d8b04f82d051f6ecd5a46"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-6KdhVrTEWj/e1f7cb799faed15d808c85916b2be8972b480678ec691d196799b7e33a4f450d7e59070e0d45beb61e334df4f3834f48d404ad5b6d94a6dfc19b6025512c26c3edd432ba836ad5a855f5777e9c1f2e8794b282dafe557331144f36cba8ab11277a1f15e2"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-b7EXcmUjTQ/5463a085d989b6f6b91fa3c1d3f234164be8a0e5195daadc1af84bc7c4e860033dd697bf2f159149fc3302460c91174efbadd29e8f7cdd2f89495c7e9b4d99b73458f145f9d1ee2d12af455dd6b48459a3563e07fb2d0add75a5dc2272c14cdc93f1218a"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-kWTNdDUhjN/b48a4c9e1778ccfbbc49492e189d971ac09b335f04226ce84f5c4680a690bb45024ce1b86a4d6cf33c5459131933314a860992df505817742dee4cb82cf133d27b9b0df4bc43d831539a9f458047d6139c05d675a399f3d80b8ab70e7cc3fa3f5848b65e"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-BRkBjghdWm/837e71fb3673d544b38453b4108067a64dec525db9b41f6729117af7eb674f30ef9376fb86ede35b67331a347c8d81adcfef5c922e6e291233191a16909158d6666cbf979cb218b6f44e04a253e2bb3d595c05a7a74f2a325b321fbacefe96f08f1490a9"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-rDYZOZadaB/f4fe25d154679c9d20e327c2c480434f75dbfc9c5b7301c9a978df7e02a032835861e976759d0f39dc8ab97c230db8da2f7a04231d3f81acb1b7832b5da0462b5c9678a11d99665991412de0d4c9300a8b04393170a740a71098a13179b9f6583e2cf5b1"],[0,"https://playhtml.fun/playhtml-fridge.png"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://playhtml.fun/fridge.html"],"materials":[0,"internet cursors, fridge magnet words, communal website, playhtml"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"playhtml"],"collection":[0,"creation"],"data":[0,{"title":[0,"playhtml"],"subtext":[0,"open-source infrastructure for communal web futures"],"descriptionMd":[0,"playhtml is an [open-source library](https://github.com/spencerc99/playhtml) for designing communal internet experiences by enhancing web elements with real-time, collaborative interactivity.\nWhy do websites feel lonely even though so much humanity is woven through the internet these days? I think it's largely because most of the internet is designed around a personal experience. We need new imaginations and speculations for what the web could be and who we could be on it.\nplayhtml aims to provide the infrastructure for making new diverse and open forms of \"social media\" that make the [web feel alive](https://spencerchang.substack.com/p/ti-08-aliving-the-web). By providing the means to shape the way we interact with each other on the web, I invite people to imagine what websites can become and who we can become when we inhabit them.\nPart community infrastructure, part personal tool, and part interactive art collection, playhtml pushes the boundaries of what art can be—it’s definition constantly shifting relative to the viewer’s perspective. This infrastructural art posits how art can become not only a [useful](https://pioneerworks.org/broadcast/caroline-sinders-in-defense-of-useful-art) tool for speculative action but also an interactive environment that engages with communities in their everyday lives.\nI’ve hosted workshops at [If, Then](https://ifthen.cargo.site/) and [Gray Area](https://grayarea.org/) around creating neighborhood internets using playhtml. Example websites created by attendees can be found in the open [Arena channel](https://www.are.na/spencer-chang/playhtml-sites). Thousands of people use playhtml on their own websites and visit the broader archipelago of playhtml experiments & games to find connection in an increasingly fractured digital world. \nSee also *[poems we found with the internet](https://spencer.place/creation/poems-we-found-with-the-internet)* and [neighborhood internets workshop](https://spencer.place/creation/neighborhood-internets-workshop)"],"parentCategory":[0,"Project"],"categories":[1,[[0,"Open Source"],[0,"Software Tool"],[0,"Website"]]],"date":[3,"2023-07-09T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-BliRr_OfeZ/31a3bda223877cab8f7b792298315cc838b5ecaa92900fe8ae2f4b192cc473ee64dee0823b390bcd94f9ac2ab04d7b51890adee7937300b6e5eccd38f8ce20a53b43113f607e3be8df6c89341907daf710c5752ad70860833c407e8df4706c4f7fe8057b"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-BliRr_OfeZ/31a3bda223877cab8f7b792298315cc838b5ecaa92900fe8ae2f4b192cc473ee64dee0823b390bcd94f9ac2ab04d7b51890adee7937300b6e5eccd38f8ce20a53b43113f607e3be8df6c89341907daf710c5752ad70860833c407e8df4706c4f7fe8057b"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-CZcGmXh8IS/fefbd7c2d009f4bade81bc49c6a5f71cf90b6509fd09240760335cc88897e81c7db5ffc1da18816a06e148920583e209ade805ef51036d3f0552ed0157d28819299cdb373b09c9ddb750b25356ddbc42e02cbe62e101a7bdaca98f8ba178e359ee3e5ce9"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-E0MfV7n9BU/18655a8aa108d12707ebb6871f0797e47e02ee1a192f59d20a670cc3661be7bb647be3685cb3438c65d943881b7c7739f2156c0e50b94e20f75ab8e490cffb79112db255e7521f2d7fdaa8dbb29c4feff4db1f3858b9af244d58bee03524aadad904a80c"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-2eKYlKm-Us/ae9c19abe24b5763b4deae5625c3bf18eed596caada2b589aeef7f97dcbef3b7148a329bfdd62b185b2bdcaa8be70c500971da5a7ee5cd99c996488b9826237e7326f8b3ffdae3e5c6271998db9dcde07bfb599205691cf695c5d2f65120ad777e4206c4"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-OjZ2ai5Tfd/10ff093cbea27c024d99df0bf9a97fb37d734c054063f8e2253c991af48416f694dd224210fdb4ae5774a235865b6dd592c9dfc3cbb3aad493a7fdf96a9cd3c88a30f5566a2383b6831dedf6bdfbd0b1856f8867fd779132cae5e5d067220f8d689061ed"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://playhtml.fun/"],"movieUrl":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-1JtvwPkD5S/83a57a8952143c1143762f301a210179454399a12914279bb42588a68a3fb4947968668bfb2087fb2f21186673f727124ca8d86be6cccb3f8274ca7a0dcc535ed08891ac44f2eed455ff5c75fb07fa08e496f9ef8df7cb88609ced863ddf29a5e11c6f6a"],"ongoing":[0,true],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,true],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"www-gathering"],"collection":[0,"creation"],"data":[0,{"title":[0,"WWW gathering"],"descriptionMd":[0,"A gathering facilitated with HTML Energy for freewriting HTML in the park. \nThe gathering happened in the same few hours across 5 different locations around the world, including New York, London, Amsterdam, and Boston. I built a website that connected each location with a portal, which allowed location-specific participants to decorate their own location link and see a collective artifact at the end.\nThis took place with over 20 attendees in Alamo Square Park\n(photos & artifacts [https://www.are.na/bay-area-95sssqibasq/w-s-www-gathering](https://www.are.na/bay-area-95sssqibasq/w-s-www-gathering))"],"parentCategory":[0,"Gathering"],"categories":[1,[[0,"Community"],[0,"Art"]]],"date":[3,"2023-06-03T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-ZoZwMwv1fX/6c2b8fb6ff725f826ab4b382ed5bd380ca68f507de1d143d35dc152996bfbf56ce534d47f60481601956c4a6c952ed5301c0fd51ee06fe209fff56870ffd9bdeddf096f096c8e0a0eb585e639fb1782e13da07f8a03dd4d814726ec8443fed7f5beecad6"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-ZoZwMwv1fX/6c2b8fb6ff725f826ab4b382ed5bd380ca68f507de1d143d35dc152996bfbf56ce534d47f60481601956c4a6c952ed5301c0fd51ee06fe209fff56870ffd9bdeddf096f096c8e0a0eb585e639fb1782e13da07f8a03dd4d814726ec8443fed7f5beecad6"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-q0b29MzHJy/3a867d28a82f6afbfd7922bd9159bd2303c7d425f4dddc4bdd05ce644b5adfee6a1b8b1c8a074ad1cadf55d9783d4550d2e627f121b70969570318683e90b452f9a74d59f9f682326c525d5f8ef2a8cc2a3623d9859963d6d3b32dcd00f0b87b5dcfb0f3"]]],"imageDescriptions":[1,[[0,""],[0,""]]],"link":[0,"https://docs.google.com/document/d/1jzIv2fag3j6bnZrlenUCL_1nDG-LV--A53OTZf_RZl8/edit"],"movieUrl":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-O6ADCVY5DS/ac0b21a8e18c3ed6960b8175fe00845c8d3234e64d95a7abe107f55ceb5e082ca4b63d0a79d975f6f340c13c75a9db65943729e4786f9c609063f70beb60ee5992247baa2c53aa368ae041144972a27c72507b1de0af3437fc625264d35907be419dde64"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,true]}]}],[0,{"id":[0,"html-garden"],"collection":[0,"creation"],"data":[0,{"title":[0,"html garden"],"subtext":[0,"a seasonal website that honors the humble html element"],"descriptionMd":[0,"html garden is a seasonal website hosting an internet garden that changes day after day, season after season. filled with plant species corresponding to HTML elements.\nAt a time when so much of our digital consumption comes from an overwhelming flood of information, html garden imagines a seasonal website that offers a sanctuary of quiet change, which rewards visitors for returning. html garden is composed of digitally-native plants, each species derived from a set of related HTML elements (the fundamental building blocks for a website). These internet plants simulate the organic growth of real plants using a computational grammar that can be modified by visitors to create their own plant. \nIn the background, the ambient sounds of internet life unfold in an emergent symphony. Human voices intertwine with artificial ones as recordings of natural environments overlap with synthetic recreations. \nVisitors are encouraged to take a stroll through and use their inherent browser mechanisms to zoom in and take a closer peek at the plants that call to them. Each species has its own aesthetic quirks and interaction mechanisms according to its personality that reveal themselves upon closer attention. Regulars who visit repeatedly over time are rewards with sights of growth in each plant along with new budding offspring as the website grows each day and changes with each season.\nSituating viewers in an environment of close attention, html garden prompts us to imagine alternate forms of digital being where technology can be a medium for human connection and attention.\n*html garden* was created for[ thehtml.review](http://thehtml.review), exhibited in Amsterdam, New York (CultureHub), and San Francisco (the de Young Museum), and featured in[ Frieze](https://www.frieze.com/article/online-publications-bridging-poetry-and-code) and[ MIT Technology Review](https://www.technologyreview.com/2023/12/21/1084525/internet-whimsy-html-energy/)."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Art"],[0,"Open Source"],[0,"Website"]]],"date":[3,"2023-04-01T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-obAcMCSK_k/a32cdcef0c7c64bd16a49384f9f43924156f63f37ff11e331ed4f41c15800f67246ba2a89983cbc4b549ced91269e702dd9c7e04bb11b56f422c89fdda3adb306c441d577cf59d0e6f8b73d0f908a6377540cab71e8597b07a08622cb6c663e96ebfdadc"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-obAcMCSK_k/a32cdcef0c7c64bd16a49384f9f43924156f63f37ff11e331ed4f41c15800f67246ba2a89983cbc4b549ced91269e702dd9c7e04bb11b56f422c89fdda3adb306c441d577cf59d0e6f8b73d0f908a6377540cab71e8597b07a08622cb6c663e96ebfdadc"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-6JpyP0N3fk/d65c87bc4fd8c0c8aa57b777cfabece320347c657e8032bc9607b331a9521e630d8e82a11f1dde027b7ad2fe43ce8dfdb9daef23f035019c529626c3cd209e42eed87e311a7d7b9c7bb0d8f44ab118cf6886ed8ba25ce736b971d9888880b69d09be35bb"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-2uQrykNp8j/60a3ef054fda713e322f89b436897ad99f2849eae626ca4cad35d81294da6590ae6e34bca64fbc9cc3a52d40d6454beda9184735a042351ce045ed83fbba46cc079a1119e64f7cb7fe3dc9f166f25c6c5e3fe0c1e713d5a9da83577b5662d95c1f9998a4"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-shDTLinGLK/6f5004f59c17f082dc6bbb9471bdb689570d51f521d19f4da070ef83d39511c16c7591acc0032fd0e4f6bbb025e57b54790ab7b016262d8249c204e176aa92bab4007f24d9e8fe70468713f3ab2113746a6d6712e6244a4987192cd6e31065c9f316cdbb"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-7_gIuq_-sr/9b4c2a252ac7eb82cdc42bb1f14a4adf68be578c08a0d5bc4dd6ec9902ab49529399abcd6801f038f00dc132ee3fc77382fed835daeb668f0194d666854777f19e08804d40110c7ef9d91c01bbf0975b90343c59f189f1c2098a395c9208ba4a85737ee7"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-q3TfCBY4me/cea7297543abcf39a9b9872695339a961c6b0a2de7a2c09a1a22e52bfa0f12dd0bdaae2142a2140e7e4b29a0ba86cc23b113062dfb03b32195e69ff11131438e0d523ebdca523b33a2006eeb2f0ac4b9be143a4b093c1cf650843958dd63aa58d8295592"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://htmls.garden/"],"materials":[0,"html, javascript, css, p5.js"],"movieUrl":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-oWbNjGXdjK/bd070993748939f7c01e4d629566cc95ea3cb65ed6f49b6559ce12fb86eeddfd448e53d3bccdca8bd6e58a430f5fcbbabbd20590de44d7fd8474c92bd3e7b91a2d98309dfb50d1e5d2bff39892acf0af62ca7e5476fec61023eac7494dce5831cf97fa2f"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"(we)bsite"],"collection":[0,"creation"],"data":[0,{"title":[0,"(we)bsite"],"subtext":[0,"a garden for everyday internet dreams"],"descriptionMd":[0,"*(we)bsite* is a living collection of internet dreams from people like you, inhabitants of the internet. It aims to create space to hold, show, and uplift everyday visions and hopes for the internet. A living exhibit that continuously evolves with the actions of visitors (each letter contains fingerprints from past visitors who have touched them)\nDespite all the time we spend on the internet, most of us are passive consumers of content and interfaces. Our standard digital environments do not offer let alone encourage us to imagine and create alternative futures for the internet.\nWhat if everyone who used the internet was encouraged to dream about it? What would it look like if we collectively imagine and build a better internet together?\nChange starts with possibility. We hope *(we)bsite* can be a catalyst for change by showing all the love, care, memories, and dreams that people have for the internet."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Website"],[0,"Art"],[0,"Open Source"]]],"date":[3,"2023-02-25T08:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-gYZFkUt_FL/2d4d18f709dbc8b84c44035f9a209d9c5cbfa5743fd4449fd72ec23b8f4f34346c5ebc18dec85c3d0bda28389b379be6649fae8796ab971863efb151c47118953ee4d461d1033652e6903542594d9db202fe20046a1f94732d45d0f61a0c5bf4c75e0e43"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-gYZFkUt_FL/2d4d18f709dbc8b84c44035f9a209d9c5cbfa5743fd4449fd72ec23b8f4f34346c5ebc18dec85c3d0bda28389b379be6649fae8796ab971863efb151c47118953ee4d461d1033652e6903542594d9db202fe20046a1f94732d45d0f61a0c5bf4c75e0e43"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-O8jRexzuRT/409f93a1c5ea568bede7e9cd3f461bbe7bab077ebaf6d644154d48111a829d9925f2a35e7aea63421be61d7d9298dd0258a916d370e360bad0706f36a710042dcfd1ab522e0a191ed8200216876ff942c43eb8d033ff0a916622be5eacf4bd16d397de07"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-lQ2xut7U5z/6801e1ae357f881088ef167d257a44ae78a38197a39507410489b482d45159b56f6d922fe83df720cad45e7caf3684fead6480c7fa67e43325cb0a249a8e218fa5ce8cb187a02c8de0878d262231cc599e33ee0f28874e0b6cc8e0a452306f2d7d9bb896"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-NNNKmYt9m-/ce3a40584691ce2d16987d27b550685a809683e96ed54456b7cd0924afa81aefddaf28c8abb0e19047b915ac33f448c18ab6846a9648378d12b378e2583540be4456fe1609e50db27ad35b1ab98256da97cc417707cff67373dc22b3afcdb92164a9556d"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-8iG4RXrba1/2e83ddf847afce6630a6a3ccf33597ccade1c6bd65265ac1e129a06343513a7ea7080879d830a9483003b31cb94629ba8c919e6df769b7ed4061ba23b83c0fa0b1bb05ec2b4f003e2616ac89b3e3b09a0408ea41a1b31856c843b31ac7f3aed9a00367e2"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://we-b.site"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,true],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"i-love-living"],"collection":[0,"creation"],"data":[0,{"title":[0,"i love living"],"subtext":[0,"a homegrown automation for gratitude"],"descriptionMd":[0,"*i love living* is an ongoing archival piece of all the moments you feel gratitude for life created by folk software, the kind made in-place in the context of existing devices and technologies. The piece is activated for each individual when it is installed onto phone as an automation. Once installed, the automation enables the user to tell their device voice assistant “I love living,” which archives a timestamp, location, and a front and back photo from the device’s camera to an on-device note called “i love living.” This piece leverages the power of archival that all of our devices offer us and activates a lasting archive and performance piece for each person that installs it.\n\nThis originated from me repeatedly being intimate with this **[feeling of overwhelming gratitude](https://x.com/spencerc99/status/1589157443627778051?s=20)** for being alive and wanting to create a time capsule to preserve these feelings. It started off as just recording the date and time and leaving me space to write a little note about it, and increasingly I added more and more metadata to capture as much of the surrounding context as possible to “bottle” up this feeling. I added the location, front and back camera photos (BeReal style), and I really wanted a way to capture the surrounding snippet of audio (in the same way Live Photos do) but that wasn’t technically feasible.\nI turned it into an iOS shortcut so I could run it from my home screen and also just tell Siri to run it by saying “i love living” so it was as easy as possible for me to capture without detracting from the moment.\n**[Download (iOS only)](https://www.icloud.com/shortcuts/8524b99cb6264e62aaeb5c32b18f8d7b)** \n**Instructions**: Install the shortcut using the link above and then create a note in your Apple Notes app called \"I love living\" You should be able to immediately start using the shortcut after that by either telling Siri \"run I love living\" or adding it to your homescreen (if you click into the shortcut there will be an option in there).\n**Share a note with your loved ones**: you can modify the shortcut by just a little to also create tiny social networks around your gratitudes for living. To do so, just add a new \"append to note\" action, copy + paste the content from the existing one to the new one, and choose the shared note. \n"],"parentCategory":[0,"Project"],"categories":[1,[[0,"Software Tool"],[0,"Collecting"],[0,"Art"]]],"date":[3,"2022-12-21T08:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-8LORXEo3yt/ae1e981e069e4d5a2eac08618d56b15fefab996fbc4028d71c2990870aecd2935529294acf5036951e67fdef7b27ac351ccaab985b6e9297d748f3d286fc86cbbbeee537b2607953c46b94a0ccd358db6c2ac913c8f9314d05de158c1918160fc3e4eeec"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-8LORXEo3yt/ae1e981e069e4d5a2eac08618d56b15fefab996fbc4028d71c2990870aecd2935529294acf5036951e67fdef7b27ac351ccaab985b6e9297d748f3d286fc86cbbbeee537b2607953c46b94a0ccd358db6c2ac913c8f9314d05de158c1918160fc3e4eeec"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-SDfPygk4j8/2742e0e8af8ecc6352eb8e35435e8e493cd1cb71d16bca36ca03070dfb80c9b7d293d223b4436689ff2cf1963e6b3a87b4b731958c427ebde2134d299447604a5a960449a933c79c51b71f59e462d46f68a6798f60a2c0ea354787aa1b91beb4efc1d206"]]],"imageDescriptions":[1,[[0,""],[0,""]]],"materials":[0,"Apple Shortcuts, Apple Notes, Siri"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,true],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"statusspencerchangme"],"collection":[0,"creation"],"data":[0,{"title":[0,"status.spencerchang.me"],"subtext":[0,"a personal API of my latest consumptions and creations"],"descriptionMd":[0,"*status.spencerchang.me* is an experiment in sharing the latest updates from my latest digital platforms on my website. Data is continuously pulled every hour from platforms I use daily that track my activity: Spotify, Strava, Goodreads, Substack, and Github. These activities are distilled into the latest things I’m listening to, moving, reading, writing, and building.\nEach activity has a timestamp in **Spencer Epoch Time**, a personal take on UNIX time equal to the number of milliseconds that have elapsed since my birth. It felt meaningful to ascribe a personal timestamp to these activities that are markers of my own life.\nThis project feeds the live activity marquee on my [personal website](https://spencerchang.me/)."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Website"],[0,"Software Tool"],[0,"Open Source"]]],"date":[3,"2022-11-10T08:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-2EURu_3QBN/9034f98e549cb2eb44ac0a4445dca3a05e8c9159d0edc4291fb363fe1a43e243aafa3572b03d3f596ad197e577c8aeba276ee24da200c94663feea195131a00ad71082246b9a6005ccbfd654f376dfb499f154ecc6b27155d232c9eeb28526145b0e2553"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-2EURu_3QBN/9034f98e549cb2eb44ac0a4445dca3a05e8c9159d0edc4291fb363fe1a43e243aafa3572b03d3f596ad197e577c8aeba276ee24da200c94663feea195131a00ad71082246b9a6005ccbfd654f376dfb499f154ecc6b27155d232c9eeb28526145b0e2553"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-Jw8-V-W5Jy/b43ff27f3f73c9bfc077dc4a1489bbf5fc2dd71e2ac6139d6ebe8b833f100ce2523f8eeef0dce01838a2c3507f08077d8406358aeb919ab54fbca0dae8d79e2f791b7970b4336b272755852d2835ea467ade676b4e819f0b647ecf0fe27c0d4d14142076"]]],"imageDescriptions":[1,[[0,""],[0,""]]],"link":[0,"status.spencerchang.me"],"movieUrl":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-Rjv1_aLpqz/366bdafa9210875503f9146c4b49516e35f3c8da313d6b9262e0146854386f50a8a0663675bebc43891bd972ad8550926e4d296e290d35b66812107741adce56cd405592052b05f24ba54aaf10c2d10b370b8475fda44f8f76a1fc1fc714266c9cbde502"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"tiny-internets"],"collection":[0,"creation"],"data":[0,{"title":[0,"tiny internets"],"subtext":[0,"an inquiry into how we create more human, natural, and homey spaces to shape, live in, and form bonds in."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Website"],[0,"Software Tool"]]],"date":[3,"2022-06-15T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-R-dHPOiM8u/11dd3c0d2b66ae324a6db7d482ad285cf60a66a83c1dbc5919d45a08a53b78e534f93ef15c4dff00356573841751eb999f98a78b9d208038b7f7366e6759ca048c253ce63f50110a4fd71aa319de70c662d5d9e399c43ba092c8f305dcbd36077bc3a1ae"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-R-dHPOiM8u/11dd3c0d2b66ae324a6db7d482ad285cf60a66a83c1dbc5919d45a08a53b78e534f93ef15c4dff00356573841751eb999f98a78b9d208038b7f7366e6759ca048c253ce63f50110a4fd71aa319de70c662d5d9e399c43ba092c8f305dcbd36077bc3a1ae"]]],"imageDescriptions":[1,[[0,""]]],"link":[0,"https://tiny-inter.net/"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"8-bite"],"collection":[0,"creation"],"data":[0,{"title":[0,"8-bite"],"subtext":[0,"Pacman reimagined as an interactive poetry game\n(collaboration with Kelsey Chen)"],"descriptionMd":[0,"An 8-ball is reimagined as an 8-bit game reimagined as a poetry machine. Readers play the game using their arrow keys to move the 8-ball around to consume words. Rather than collecting points like in Pacman, readers eat words and punctuations to create their own poem, which automatically fills in the space below the grid. The grid is filled with a select number of random words from a pre-filled work bank for each part of speech, including punctuation, and the game is over when all words have been consumed. Replay variety is amplified through randomization and words that multitask in sentence function (e.g. as both verb and noun), despite a limited word bank. Toying with consumption (eight=ate), luck (8-ball), constraint (the 4 directions), and poetic composition (with 8 words in a grid of 16), 8-Bite is a playful poetic contraption that literally makes you eat your words. How do you win a game of poetry? What happens when luck is a functional constraint on beauty?\nWhat does it mean to create poetry by eating your words (taking things back) in an irretractable gameplay?\nA simplified version was published in [taper 8](https://taper.badquar.to/8), an issue of a computational poetry journal."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Website"],[0,"Art"],[0,"Open Source"]]],"date":[3,"2022-05-05T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-DzP8mVYWTB/d202a3841c34bcc1a60a7114d60c23b76020937e81ed3c911b820bb6e0642303c916bf6fe5ab98d24e72c665b646b0f20d1ada3212cf50d93e30c0153505e43f36b72f6d2c32071cf7c27fc20272357551538e66ce8c689844002627ab36467b26c29d7e"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-DzP8mVYWTB/d202a3841c34bcc1a60a7114d60c23b76020937e81ed3c911b820bb6e0642303c916bf6fe5ab98d24e72c665b646b0f20d1ada3212cf50d93e30c0153505e43f36b72f6d2c32071cf7c27fc20272357551538e66ce8c689844002627ab36467b26c29d7e"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-VBR9EonD3F/f3a5faf0c5b01e306bb0197b3a61a0c2a9749a02699a436879288f8e0dd92106d014e8eb37afdb99fa18fbc9ba0d753dbcc8f16927363974d552dca56a054a45e5390bf1250e1123e32e5c8d7062617537910648fc671b2dc9c86bb8784a462208292fbb"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-lGE1SjtuGL/8b05f87ed2bc24c8d0137d9c7424f9c264c0e0b440f2053d53494ae2f350cf52c524134836edd53460e18d8cced3c93b5210c97c777b63589c2f1570298f33d81183243f32d092c22fd92ce46e1ea778148ab226d6fbda074e788cb00bcd79ebd8cc4036"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-6OABSXdYaa/418505b77bcde0cffc5f6e594713e1e669bf0395b31ce9bc94855d1375f993ef921dabb44d0e9040e8644b8d851dc63c99ed04fd099879c08bfd294c987932fdf7636b0cf3edbceb476986a87bb2f3297747a42285550bc57bb7dd62c32af74cd17e1ed6"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-hJNcNnmB10/291753c25b9769c2314229f18a4d5ae49ed05d458d7eafbe1627aa9b40c7a7361f4ca127bca4d6ca68046db5a13aaac6d7f7608d9cf3b13f40cae497f8244908a2b0bf77ca9362771d5d8a513f0e64329469e2bdf30301c7cd55f02478594e4b91d45e61"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://www.spencerchang.me/pacman-poem/"],"movieUrl":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-cK6dTkWnSp/b4443486d4b4e97ac7f6693772433c229c856f1c9119ab2239b4dd452139a50d64d91503786443971683fb2cf0e27fd0685fb16d6dfe5eccebad67c5290201da9abcf2cd38ec222035b9f55bb0aecfc7779fe97205aee8bfd4dc39fafb82ba14479235f8"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,false],"useImageForPreview":[0,true],"isEvent":[0,false]}]}],[0,{"id":[0,"verses-verses"],"collection":[0,"creation"],"data":[0,{"title":[0,"verses verses"],"subtext":[0,"A collection of transforming verses from the verses community and an interactive lab to make your own."],"descriptionMd":[0,"Part transforming poem on the nature of words and part infrastructure for creating these kinds of shapeshifting verses. \nPart transforming poem on the nature of words and part infrastructure, \"verses verses\" is an open-source library and communal gallery of interactive, transforming verses.\nThis piece leverages the unique capability of the digital medium to create poems that have a life of their own and transform depending on how the reader chooses, giving them the power of authorship. How does meaning shift as the text changes with engagement? How can the reader create, and choose, their own meaning as they explore in the textual landscape?\nBy providing the infrastructure behind the tool and creating [a playground](http://poems.verses.xyz/test) to create transforming poems from plain text, verses verses pushes the bounds for what a poem can be, as both a poem and a tool for creating poems.\nverses verses has been taught as a tool for creative writing classes at SFSU."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Website"],[0,"Software Tool"],[0,"Art"],[0,"Open Source"]]],"date":[3,"2022-04-15T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-xI7GcceUIl/021b1ce5f0c7ba2874d645cb6dee8619eb9d1a0201a6bf81313d0b369ec61078da6a5cabb001c5db650826e69e2cadb31abd096a0761d5e4608361bebf90ce01f45b6f2df4fe67628bac64b15be1aa658c0cc1ceaf55efa5111542e22a4b84a6a5e53a44"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-xI7GcceUIl/021b1ce5f0c7ba2874d645cb6dee8619eb9d1a0201a6bf81313d0b369ec61078da6a5cabb001c5db650826e69e2cadb31abd096a0761d5e4608361bebf90ce01f45b6f2df4fe67628bac64b15be1aa658c0cc1ceaf55efa5111542e22a4b84a6a5e53a44"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-pzBkAl3Nlx/829e9c9f3fc5f6175dd0072cc77d9f3a0dedb9ba1dede3b9e955fccbb5b686362dbd0a8ab389e9e4c8842201daf0e94f05d8bf52d2422686e352f89044638a327c07888144763e133a3e97c2b51b8a2b5f4cf959eb5ed2c4fa7d83bc1c5c834f609f25fc"],[0,"https://poems.verses.xyz/assets/android-chrome-512x512.png"]]],"imageDescriptions":[1,[[0,""],[0,""]]],"link":[0,"https://poems.verses.xyz/"],"materials":[0,"html, javascript, css, bullet lists"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"pluriverseworld"],"collection":[0,"creation"],"data":[0,{"title":[0,"pluriverse.world"],"subtext":[0,"An interactive, participatory essay proposing the “pluriverse” as a new banner for the community to rally around for how we look at imagining a “new web.” It is co-created with visitors and readers of the site."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Website"]]],"date":[3,"2022-02-15T08:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-rht86Knhl5/10623ba04845a87190c6a55433a96b9f649fe937d3f255ca567d5bf3514f8ddaf6b5b4856d27964dce3ce3adda383e559d2d0db18440c656d2989adbe4dda161c7086e5c7a01515492cd0c2e8fbb92d351235af28ecf46652c09ea0e4d9291742ae08bb1"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-rht86Knhl5/10623ba04845a87190c6a55433a96b9f649fe937d3f255ca567d5bf3514f8ddaf6b5b4856d27964dce3ce3adda383e559d2d0db18440c656d2989adbe4dda161c7086e5c7a01515492cd0c2e8fbb92d351235af28ecf46652c09ea0e4d9291742ae08bb1"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-sB6wRzOLAg/82e09c434cbf113f8da13914cb6549576effcd13b42a260824e3956611190ee320dd309923dfa055fb65d9feb8e4edfc31d0d6c4214b5da937abebb23eb30f47463cb105c1f6f6bbee9d390c17c77717b1c597a02781cf6bed15446f8b38c92151b069a9"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-4yGa7kbo8M/97d3849f4198e7bf127eebbdfaf8ddfa64d2587ece11936fcd6e7158f129b79792996d20f655249c44fb984ab943d36c0a3ac1a65ef2ae424c898d0ae397285de1a39985b8d10c1e97148b5815e2a633141f9cb995c6cd160604a1b25fef45e9cd6e24f7"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-lEAzri9RF5/d8aaacdc47e37e119722d5a96bb720456c612fae1e00d5f70c575d9e0781ccfc2fbf2c2c9f673c98f81d201e7470b9ac068e4597be252e803b8876f1fcbc1082f0a14a2fbb70b4fcbc04621fe3575a90275e2ab00bf10bdaf9063e20c545470fa141a2be"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-F5PcrhL-oh/47a4080a83ff62e2677a172c8ec8807a72932bda95d1b12ac002c6eaaf3c950601ca2de345dd3728a766cb78279f20a0aa80050f22195999d7d71d468bb2e891d73cb89669bee48d45867e5d0c3ac6bacb6640b2858d82a53625d5b33194e305faf6806a"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"https://pluriverse.world/"],"movieUrl":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-shFOl7m95z/25a6cad869cfa79769fbace3816a5a90876c12049c85131018fb6e4a9f7d4f3b5f633179a8af7f1a261532b3264c483da952d89fb1165a8400689b1dd67f49840180f76e091ecee951d8746b584bdd6453eece3820475b388200c51dbe4cb4a11777cd8b"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,true],"isEvent":[0,false]}]}],[0,{"id":[0,"spencers-paradoxes"],"collection":[0,"creation"],"data":[0,{"title":[0,"spencer’s paradoxes"],"descriptionMd":[0,"*spencer’s paradoxes* is the name of my personal newsletter. I’ve written regularly on this blog since 2022. Some notable endeavors include a [100 mini-essay experiment](http://spencerchang.me/experiments/100posts) over the course of 2022 and a subsidiary newsletter for my regular research log, called *tiny internets*. \nMy writing acts as a public journal recording my ongoing questions, struggles, and joys. I also document my creative process and share my thinking about leading a creative life."],"parentCategory":[0,"Writing"],"categories":[1,[[0,"Writing"]]],"date":[3,"2022-01-01T08:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-A2UACIyEKe/592c835cac2427adc94f71f46faafb1b766759d3494cf459ff78a54006b1d8a8e27c6aab9b7f8013af4fe57d9f86820444a0c112fb59e9d9a46fb3f16f1ba287f0fae656a7840772ba72a53f1b920933e12c03b910d127fd462c8907b18bd9e66313941f"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-A2UACIyEKe/592c835cac2427adc94f71f46faafb1b766759d3494cf459ff78a54006b1d8a8e27c6aab9b7f8013af4fe57d9f86820444a0c112fb59e9d9a46fb3f16f1ba287f0fae656a7840772ba72a53f1b920933e12c03b910d127fd462c8907b18bd9e66313941f"]]],"imageDescriptions":[1,[[0,""]]],"link":[0,"https://spencerchang.substack.com/"],"ongoing":[0,true],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,true],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"everyday-magic"],"collection":[0,"creation"],"data":[0,{"title":[0,"Everyday Magic"],"parentCategory":[0,"Writing"],"categories":[1,[[0,"Writing"]]],"date":[3,"2021-12-13T08:00:00.000Z"],"heroImage":[0,"https://substackcdn.com/image/fetch/w_1200,h_600,c_fill,f_jpg,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fcdn.substack.com%2Fimage%2Fupload%2Fw_728%2Cc_limit%2Fnqoigyxb9yvdihrh4ub2"],"media":[1,[[0,"https://substackcdn.com/image/fetch/w_1200,h_600,c_fill,f_jpg,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fcdn.substack.com%2Fimage%2Fupload%2Fw_728%2Cc_limit%2Fnqoigyxb9yvdihrh4ub2"]]],"imageDescriptions":[1,[]],"link":[0,"https://joinreboot.org/p/everyday-magic"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"coda-packs-platform"],"collection":[0,"creation"],"data":[0,{"title":[0,"Coda Packs Platform"],"subtext":[0,"A Pack is an extension that adds new powers to your doc. Packs work by supplementing the core building blocks of Coda, so you can customize how your doc looks, works, and integrates."],"descriptionMd":[0,"Pack Makers can create functions that let you re-use a formula's complex logic across documents or even communicate with third-party APIs, with or without user authentication.\nFor two years, I was a core engineer on [Packs](https://coda.io/packs), a platform for extending Coda’s functionality by bringing in and taking action on external apps’ data. I worked across the board on the [user-](https://community.coda.io/t/launched-improvements-for-copying-cross-doc-tables/23707) and [developer-facing experience](https://coda.io/packs/build/latest/tutorials/get-started/web/), platform infrastructure, and the open-source [Packs SDK](https://github.com/coda/packs-sdk). Select highlights:\n- Created [Pack Cards](https://community.coda.io/t/pack-makers-assemble-add-cards-to-your-packs/39318), a live data, customizable card for external app data.\n- Created [OpenAI Pack](https://community.coda.io/t/pack-makers-assemble-add-cards-to-your-packs/39318), an integration for everyone to leverage AI for their work and creative expression with their everyday tools. [#6 on ProductHunt](https://www.producthunt.com/products/open-ai-for-coda#openai-for-coda)\nThis was a key feature highlighted in the [Coda 3.0 launch](https://coda.io/@coda/the-doc-that-brings-it-all-together)."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Software Tool"],[0,"Coda"]]],"date":[3,"2021-11-01T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-3Qk9djtK_i/1e3d0b6b977da036d8495750b9bf5093f3a3fc2e796fa647e1f79bb5049ec29ffee77a7315ed2741aa88620039894da06c191f6e209637e6aa870b08775fbc785c1e8e919af26513c86533605ba885afd4f7df286b6bf15fda1203b0e8399967fbd9737a"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-3Qk9djtK_i/1e3d0b6b977da036d8495750b9bf5093f3a3fc2e796fa647e1f79bb5049ec29ffee77a7315ed2741aa88620039894da06c191f6e209637e6aa870b08775fbc785c1e8e919af26513c86533605ba885afd4f7df286b6bf15fda1203b0e8399967fbd9737a"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-LMIyEiNsu5/323837e8970b480f3b6e7163b5eaab29bd19b7f109a32028e99b4fb082cb4ebf0a65a07bbbe26b280ce6ecf8c5ddeebc080cd8c02f67faa2ec1d062564f4c53e7afeb9c7eda7f56d757d4c76b9e87860781009cb262b82eacb12d1a7ac03ffcb872835c7"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-vHqRF-ZRsH/e0b41fba89275be39e01425be61a9dd3cdb4a4728f5ab3b02f1082bc19133c8ddb99b6bf9d44fc610c69ab7531a0aadddebf77112f91027f097f69961e5b88e77f801f8c5b96477e2518190d4193a8fa3f5cff510409efa79a4ddf270a6df494b80fb1e8"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-nVhYR8F5-d/88d749da156666629e5779941b8cc8412e0cb40bdba8071eb320a44790ec19425ee33dd43be70b22b8865ad314532a7c10197c6e34f4a7d824ea66739f6b5b8604724e467246f705c8ebce64ca0c088b8af0e75c5a3223b01abab2876776dfe2f1870ba0"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-YOtrLS_4WL/057ab8d15e3e7d5f1a2c55fa4f82714fa8f3347e9f54c32e722670e14d3fa17437c5fd04fec4920d14979db280d3929149cd3cb56e18e0e5c4024b2b96e89e2bd33d7db8c5ec29abc169984f6f9e14403c213598b6a3b808431e22de5afe5edd5b9d944e"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-U-fIBZyBcD/d6bbf2eca59fba640b476d8e40b5f8d4bd6f03cf7820192247e4bbd5b0d822bb4a4635053daef39710cce8dee8b58a88b4cb47b52fbb7d44da1b0a20fb603eeb22ab34786b318c8e89c8251618547a1b8259f642287af3d7976be5d50d48bd3eb9f7eb73"]]],"imageDescriptions":[1,[[0,""],[0,""],[0,""],[0,""],[0,""],[0,""]]],"link":[0,"http://coda.io/packs"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,true],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"fits-stream"],"collection":[0,"creation"],"data":[0,{"title":[0,"Fits Stream"],"subtext":[0,"A stream of my daily outfits."],"parentCategory":[0,"Project"],"categories":[1,[[0,"Software Tool"],[0,"Website"],[0,"Art"]]],"date":[3,"2021-10-12T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-tM2HRAWLip/7d6421146cb483542f338845264cacde9875a4200bcaaa70904bfd18946a873d006abd56b4652326065da089be4f8a274d1033e0b0da5106340375b4fa6bd141b65d5d3c891a2595b47c7673b4ed8655483e8959fa87860119fdc0922f7470d1ebae46e1"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-tM2HRAWLip/7d6421146cb483542f338845264cacde9875a4200bcaaa70904bfd18946a873d006abd56b4652326065da089be4f8a274d1033e0b0da5106340375b4fa6bd141b65d5d3c891a2595b47c7673b4ed8655483e8959fa87860119fdc0922f7470d1ebae46e1"]]],"imageDescriptions":[1,[[0,""]]],"link":[0,"https://www.spencerchang.me/fits"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"coda-custom-templates"],"collection":[0,"creation"],"data":[0,{"title":[0,"Coda Custom Templates"],"subtext":[0,"a system for saving everything from repeated snippets to entire workflows into shareable, reusable templates"],"descriptionMd":[0,"[Templates](https://community.coda.io/t/launched-custom-templates-drag-drop-and-slash-your-way/22718) are a system enabling anyone to create reusable shared snippets and tools (from idea brainstorms, to task trackers, to coffee brew guides), available to drag-and-drop into docs, which dramatically increased the ease of getting started and making things with Coda\nLead engineering and a team of 2 others and actively worked with product and design for shaping out the final interaction model and design details.\nThis was a key feature highlighted in the [Coda 3.0 launch](https://coda.io/@coda/the-doc-that-brings-it-all-together).\n([blog post](https://coda.io/@spencer/rituals-at-scale-how-we-remixed-templates))"],"parentCategory":[0,"Project"],"categories":[1,[[0,"Software Tool"],[0,"Coda"]]],"date":[3,"2021-05-13T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-lAQsOhGgr5/218c73f02b2a598728669749ede00803c6c9f687791de16f32f613ab5b369f1178fa80a9149b4b2a5e9ce11e33603383b857dbefa7557a5e223669def223487706c27cfdfa87bffa4a70d527a6c097c74a0473a8c2c01b854e49682ed9a1491b42a87cf2"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-lAQsOhGgr5/218c73f02b2a598728669749ede00803c6c9f687791de16f32f613ab5b369f1178fa80a9149b4b2a5e9ce11e33603383b857dbefa7557a5e223669def223487706c27cfdfa87bffa4a70d527a6c097c74a0473a8c2c01b854e49682ed9a1491b42a87cf2"],[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-jAA_eKruyX/6327e68120c50567f9f97493face68dbbfd57bc034016fedae6ec63fbba25e8c577378f772a6218a97542b7565c971abf3c036ecd7a38ce5871f1c1945a08d4213b866f4c6a66f2c0a72e880375f4664965fd94ca0acd52464d922a49664d57de5f0c073"]]],"imageDescriptions":[1,[[0,""],[0,""]]],"link":[0,"https://coda.io/@spencer/rituals-at-scale-how-we-remixed-templates"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,true],"useImageForPreview":[0,false],"isEvent":[0,false]}]}],[0,{"id":[0,"100-mini-essays"],"collection":[0,"creation"],"data":[0,{"title":[0,"100 mini-essays"],"subtext":[0,"an experiment to publish raw, lightly edited pieces semi-daily towards achieving 100 public pieces."],"parentCategory":[0,"Writing"],"categories":[1,[[0,"Writing"]]],"date":[3,"2021-04-11T07:00:00.000Z"],"heroImage":[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-s_0aDwk_ox/c9aac4c978f3d72aad3fafeb7bc5a36cd08bed5fb2419f24107ececcd50c061c6528401d8ca25e88d3ab0d4f030b52c6031c4b2b2282991772aa362523de3d6fddeb82015b22ccf6b2d1e77f5186ce32112aefae19850d42944e3e034e7226b1ee3eb70b"],"media":[1,[[0,"https://codahosted.io/docs/_ObKm8enqO/blobs/bl-s_0aDwk_ox/c9aac4c978f3d72aad3fafeb7bc5a36cd08bed5fb2419f24107ececcd50c061c6528401d8ca25e88d3ab0d4f030b52c6031c4b2b2282991772aa362523de3d6fddeb82015b22ccf6b2d1e77f5186ce32112aefae19850d42944e3e034e7226b1ee3eb70b"]]],"imageDescriptions":[1,[[0,""]]],"link":[0,"https://www.spencerchang.me/experiments/100posts/"],"ongoing":[0,false],"forthcoming":[0,false],"featured":[0,true],"featuredArt":[0,false],"featuredWork":[0,false],"useImageForPreview":[0,false],"isEvent":[0,false]}]}]]],"description":[0,"selected"]}" client="only" opts="{"name":"CreationsView","value":"react"}"><div class="creationsView"><div class="actions"><select><option value="all">All</option><option value="Project">Project</option><option value="Speaking & Workshops">Speaking & Workshops</option><option value="Tinkering">Tinkering</option><option value="Writing">Writing</option><option value="Gathering">Gathering</option></select><i>selected works I've given energy to. <a href="/creation">see everything</a></i></div><div class="creationsMasonry"><div><div style="display: flex; flex-direction: row; place-content: stretch center; box-sizing: border-box; width: 100%; gap: 2em;"><div style="display: flex; flex-direction: column; place-content: stretch flex-start; flex: 1 1 0%; width: 0px; gap: 2em;"><div id="internet-sculptures" class="creationSummary nomove"><a class="noanchor external" href="https://objects.spencer.place/" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(253, 100%, 50%, 1); --aura-color-transparent: hsla(253, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-AOj56DDY09/bf571efbb7bb96431e3e8e6de0cc85b2685cdd9f44d0ac5e6fa7f80ee5fce2a01408f690338cab41906530faf392cf6b7bcab9db0d2582b60656bc122eb84f98137d33d6bd2a8b233ed70104d20f27107eb991805deb3bb754c5a88231c29c74d71d1a00?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>Internet Sculptures</span></div></div><div id="computing-infused-pillow" class="creationSummary nomove"><a class="noanchor external" href="https://x.com/spencerc99/status/1818721711858368890" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-100, 100%, 50%, 1); --aura-color-transparent: hsla(-100, 100%, 50%, 0.3);"><div style="border-radius: inherit;"></div></div></a><div class="creationSummaryTitle"><span>computing-infused pillow</span></div></div><div id="we-are-all-(folk)-programmers" class="creationSummary nomove"><a class="noanchor external" href="https://joinreboot.org/p/folk-programmers?publication_id=37465&post_id=146112666&isFreemail=true&r=2037y&triedRedirect=true" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(203, 100%, 50%, 1); --aura-color-transparent: hsla(203, 100%, 50%, 0.3);"><img data-src="https://substackcdn.com/image/fetch/w_1200,h_600,c_fill,f_jpg,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dbf8bfa-7dc0-441e-9530-41ea352c7ae9_1280x720.jpeg?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>We are All (Folk) Programmers</span></div></div><div id="touching-computers-creating-data-talismans" class="creationSummary nomove"><a class="noanchor" href="/creation/touching-computers-creating-data-talismans" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-182, 100%, 50%, 1); --aura-color-transparent: hsla(-182, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-TS2ozyy3uz/86a04769e5ca2ea81691a08322eb57f2e5bb9e230b00e3acd5de25d39ce4c7afec191458bee5b0286f3f9937a40ac3e94027a512f1e3088f2fa195464baa1e30399468294dcf83c056bc1dd9581ef6d1de805117d4ef7bb0d3eda14aebeb145341b4f3dd?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>Touching Computers: Creating Data Talismans</span></div></div><div id="cursor-watching" class="creationSummary nomove"><a class="noanchor" href="/creation/cursor-watching" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-59, 100%, 50%, 1); --aura-color-transparent: hsla(-59, 100%, 50%, 0.3);"><div style="border-radius: inherit;"></div></div></a><div class="creationSummaryTitle"><span>cursor watching</span></div></div><div id="syllabus-taking-an-internet-walk" class="creationSummary nomove"><a class="noanchor" href="/creation/syllabus-taking-an-internet-walk" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-322, 100%, 50%, 1); --aura-color-transparent: hsla(-322, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-vo4stgPu9h/c1a2325145e61b111900d53231e9e0325a78647acc2a1b00e8dae2bb4b95a900c1eb405c8619eb7d18d372737d5043f0f3a9237f8aa6f963ce834229f9cf06a7157cd0e63dce0cf91e4187372d73b6a80bbd19dcb9da6e9ef7cbaca37642207663cf28c4?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>Syllabus: Taking an Internet Walk</span></div></div><div id="poems-we-found-with-the-internet" class="creationSummary nomove"><a class="noanchor" href="/creation/poems-we-found-with-the-internet" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-202, 100%, 50%, 1); --aura-color-transparent: hsla(-202, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-1xMvMHVyQr/345c37ce2f62f5aeab6d84ccbfe61a58434600f22d1a33dda28b976fee722a1a2ac1eec34d661200d39015679d9259079394f854287faed03c1b514acc24ca525bd508f6edf88026b40a7f689b3131e86e52195164c2e0adc7915fb90620a625f5a34414?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>poems we found with the internet</span></div></div><div id="www-gathering" class="creationSummary nomove"><a class="noanchor" href="/creation/www-gathering" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-250, 100%, 50%, 1); --aura-color-transparent: hsla(-250, 100%, 50%, 0.3);"><div style="border-radius: inherit;"></div></div></a><div class="creationSummaryTitle"><span>WWW gathering</span></div></div><div id="(we)bsite" class="creationSummary nomove"><a class="noanchor" href="/creation/(we)bsite" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-106, 100%, 50%, 1); --aura-color-transparent: hsla(-106, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-gYZFkUt_FL/2d4d18f709dbc8b84c44035f9a209d9c5cbfa5743fd4449fd72ec23b8f4f34346c5ebc18dec85c3d0bda28389b379be6649fae8796ab971863efb151c47118953ee4d461d1033652e6903542594d9db202fe20046a1f94732d45d0f61a0c5bf4c75e0e43?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>(we)bsite</span></div></div><div id="statusspencerchangme" class="creationSummary nomove"><a class="noanchor" href="/creation/statusspencerchangme" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-41, 100%, 50%, 1); --aura-color-transparent: hsla(-41, 100%, 50%, 0.3);"><div style="border-radius: inherit;"></div></div></a><div class="creationSummaryTitle"><span>status.spencerchang.me</span></div></div><div id="8-bite" class="creationSummary nomove"><a class="noanchor" href="/creation/8-bite" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(341, 100%, 50%, 1); --aura-color-transparent: hsla(341, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-DzP8mVYWTB/d202a3841c34bcc1a60a7114d60c23b76020937e81ed3c911b820bb6e0642303c916bf6fe5ab98d24e72c665b646b0f20d1ada3212cf50d93e30c0153505e43f36b72f6d2c32071cf7c27fc20272357551538e66ce8c689844002627ab36467b26c29d7e?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>8-bite</span></div></div><div id="pluriverseworld" class="creationSummary nomove"><a class="noanchor external" href="https://pluriverse.world/" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(33, 100%, 50%, 1); --aura-color-transparent: hsla(33, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-rht86Knhl5/10623ba04845a87190c6a55433a96b9f649fe937d3f255ca567d5bf3514f8ddaf6b5b4856d27964dce3ce3adda383e559d2d0db18440c656d2989adbe4dda161c7086e5c7a01515492cd0c2e8fbb92d351235af28ecf46652c09ea0e4d9291742ae08bb1?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>pluriverse.world</span></div></div><div id="everyday-magic" class="creationSummary nomove"><a class="noanchor external" href="https://joinreboot.org/p/everyday-magic" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(310, 100%, 50%, 1); --aura-color-transparent: hsla(310, 100%, 50%, 0.3);"><img data-src="https://substackcdn.com/image/fetch/w_1200,h_600,c_fill,f_jpg,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fcdn.substack.com%2Fimage%2Fupload%2Fw_728%2Cc_limit%2Fnqoigyxb9yvdihrh4ub2?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>Everyday Magic</span></div></div><div id="fits-stream" class="creationSummary nomove"><a class="noanchor external" href="https://www.spencerchang.me/fits" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-162, 100%, 50%, 1); --aura-color-transparent: hsla(-162, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-tM2HRAWLip/7d6421146cb483542f338845264cacde9875a4200bcaaa70904bfd18946a873d006abd56b4652326065da089be4f8a274d1033e0b0da5106340375b4fa6bd141b65d5d3c891a2595b47c7673b4ed8655483e8959fa87860119fdc0922f7470d1ebae46e1?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>Fits Stream</span></div></div><div id="100-mini-essays" class="creationSummary nomove"><a class="noanchor external" href="https://www.spencerchang.me/experiments/100posts/" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(61, 100%, 50%, 1); --aura-color-transparent: hsla(61, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-s_0aDwk_ox/c9aac4c978f3d72aad3fafeb7bc5a36cd08bed5fb2419f24107ececcd50c061c6528401d8ca25e88d3ab0d4f030b52c6031c4b2b2282991772aa362523de3d6fddeb82015b22ccf6b2d1e77f5186ce32112aefae19850d42944e3e034e7226b1ee3eb70b?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>100 mini-essays</span></div></div></div><div style="display: flex; flex-direction: column; place-content: stretch flex-start; flex: 1 1 0%; width: 0px; gap: 2em;"><div id="neighborhood-internets-workshop" class="creationSummary nomove"><a class="noanchor" href="/creation/neighborhood-internets-workshop" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-313, 100%, 50%, 1); --aura-color-transparent: hsla(-313, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-gJeK22pxMj/026f6b64aacc00c60fd953a617e0f69a0a829d6088f5bab78c7455e5be53a19e99982c869956c3f32f61a57046ea05965d14eef21d05e38809c23c833aa7ab3bcebe22cfa4d540d657344cbc1ecd27b4b21283f72d5c5040a7e5e02efc349f8e19c482ee?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>neighborhood internets workshop</span></div></div><div id="acknowledgenet" class="creationSummary nomove"><a class="noanchor" href="/creation/acknowledgenet" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(305, 100%, 50%, 1); --aura-color-transparent: hsla(305, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-_nuypn6MBn/dfe6afd738ab26cf4f46bff4fd7ee6904fac0f9008bab9baf0ec9c1e6e75d206cabb8f01cb801c36b9a0616a82312fae7cf3bc009bf31042e9fd14639be049f619a22f41043fa9b3b9443abf2de13adece49bdc5013dd716c8b2652a3d9e3f0ba0e620d4?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>acknowledgeNET</span></div></div><div id="gather" class="creationSummary nomove"><a class="noanchor" href="/creation/gather" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(123, 100%, 50%, 1); --aura-color-transparent: hsla(123, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-i6iLqPBXV-/0a714634b25891170584552bea49eedf5828587e7fca3168e00b1fe3b9cb0ee49a5c44747eac74c552ac9407fcd3dec0207d824dfef08f4a7c85b1c569833c5a6b3a0885491a28f3d8d62294bb91dd1fd79acc4c4060efb38aee3cbe69b02cb3aa03ab39?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>Gather</span></div></div><div id="reinternet" class="creationSummary nomove"><a class="noanchor" href="/creation/reinternet" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(128, 100%, 50%, 1); --aura-color-transparent: hsla(128, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-KZ7M8kuq-u/d80691142eea96b9961377af76b94137a4cdb8a7926f0783aa2a220228be7b1adff645cd3a6fd92a5cfeda9fedca64107aa724ec38a35e508830987646f59b68deab7f13e986dcbb42e1eda651ed2b6918008cc97192542e8e7340676e659becfdcd7e88?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>RE:INTERNET</span></div></div><div id="sigil-i" class="creationSummary nomove"><a class="noanchor" href="/creation/sigil-i" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-107, 100%, 50%, 1); --aura-color-transparent: hsla(-107, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-TsfkAv_YtK/1b8d4284efb9fb9553a9602bb68022c877a4a51f32f84a2278c3b85c8faa1b31c6977b42693ed34b40d1d4681bdbb3ba4530db02935c5a6e6925f19561a5a1658707c344dede3a1d0052fe7ee41217638c9fcd3887af96f9ad3838593c7f96f6cf801375?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>SIGIL I</span></div></div><div id="iframe-quilt" class="creationSummary nomove"><a class="noanchor external" href="https://twitter.com/spencerc99/status/1706385150471500094" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-7, 100%, 50%, 1); --aura-color-transparent: hsla(-7, 100%, 50%, 0.3);"><div style="border-radius: inherit;"></div></div></a><div class="creationSummaryTitle"><span>iframe quilt</span></div></div><div id="playhtml" class="creationSummary nomove"><a class="noanchor" href="/creation/playhtml" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(255, 100%, 50%, 1); --aura-color-transparent: hsla(255, 100%, 50%, 0.3);"><div style="border-radius: inherit;"></div></div></a><div class="creationSummaryTitle"><span>playhtml</span></div></div><div id="html-garden" class="creationSummary nomove"><a class="noanchor" href="/creation/html-garden" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(338, 100%, 50%, 1); --aura-color-transparent: hsla(338, 100%, 50%, 0.3);"><div style="border-radius: inherit;"></div></div></a><div class="creationSummaryTitle"><span>html garden</span></div></div><div id="i-love-living" class="creationSummary nomove"><a class="noanchor" href="/creation/i-love-living" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(336, 100%, 50%, 1); --aura-color-transparent: hsla(336, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-8LORXEo3yt/ae1e981e069e4d5a2eac08618d56b15fefab996fbc4028d71c2990870aecd2935529294acf5036951e67fdef7b27ac351ccaab985b6e9297d748f3d286fc86cbbbeee537b2607953c46b94a0ccd358db6c2ac913c8f9314d05de158c1918160fc3e4eeec?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>i love living</span></div></div><div id="tiny-internets" class="creationSummary nomove"><a class="noanchor external" href="https://tiny-inter.net/" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-342, 100%, 50%, 1); --aura-color-transparent: hsla(-342, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-R-dHPOiM8u/11dd3c0d2b66ae324a6db7d482ad285cf60a66a83c1dbc5919d45a08a53b78e534f93ef15c4dff00356573841751eb999f98a78b9d208038b7f7366e6759ca048c253ce63f50110a4fd71aa319de70c662d5d9e399c43ba092c8f305dcbd36077bc3a1ae?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>tiny internets</span></div></div><div id="verses-verses" class="creationSummary nomove"><a class="noanchor" href="/creation/verses-verses" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(-304, 100%, 50%, 1); --aura-color-transparent: hsla(-304, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-xI7GcceUIl/021b1ce5f0c7ba2874d645cb6dee8619eb9d1a0201a6bf81313d0b369ec61078da6a5cabb001c5db650826e69e2cadb31abd096a0761d5e4608361bebf90ce01f45b6f2df4fe67628bac64b15be1aa658c0cc1ceaf55efa5111542e22a4b84a6a5e53a44?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>verses verses</span></div></div><div id="spencers-paradoxes" class="creationSummary nomove"><a class="noanchor" href="/creation/spencers-paradoxes" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(215, 100%, 50%, 1); --aura-color-transparent: hsla(215, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-A2UACIyEKe/592c835cac2427adc94f71f46faafb1b766759d3494cf459ff78a54006b1d8a8e27c6aab9b7f8013af4fe57d9f86820444a0c112fb59e9d9a46fb3f16f1ba287f0fae656a7840772ba72a53f1b920933e12c03b910d127fd462c8907b18bd9e66313941f?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>spencer’s paradoxes</span></div></div><div id="coda-packs-platform" class="creationSummary nomove"><a class="noanchor" href="/creation/coda-packs-platform" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(248, 100%, 50%, 1); --aura-color-transparent: hsla(248, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-3Qk9djtK_i/1e3d0b6b977da036d8495750b9bf5093f3a3fc2e796fa647e1f79bb5049ec29ffee77a7315ed2741aa88620039894da06c191f6e209637e6aa870b08775fbc785c1e8e919af26513c86533605ba885afd4f7df286b6bf15fda1203b0e8399967fbd9737a?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>Coda Packs Platform</span></div></div><div id="coda-custom-templates" class="creationSummary nomove"><a class="noanchor" href="/creation/coda-custom-templates" style="border-radius: inherit;"><div class="previewWrapper" style="--aura-color: hsla(33, 100%, 50%, 1); --aura-color-transparent: hsla(33, 100%, 50%, 0.3);"><img data-src="https://codaio.imgix.net/docs/_ObKm8enqO/blobs/bl-lAQsOhGgr5/218c73f02b2a598728669749ede00803c6c9f687791de16f32f613ab5b369f1178fa80a9149b4b2a5e9ce11e33603383b857dbefa7557a5e223669def223487706c27cfdfa87bffa4a70d527a6c097c74a0473a8c2c01b854e49682ed9a1491b42a87cf2?auto=format%2Ccompress&fit=max&w=450" class="lazyload registryImage loading" loading="lazy"></div></a><div class="creationSummaryTitle"><span>Coda Custom Templates</span></div></div></div></div></div></div></div></astro-island> </div> </div> <footer> <div class="footerContent textContent"> <!-- TODO: make this an input --> <p>If you enjoyed your stay, <a href="https://spencerchang.substack.com">sign your email up</a> to receive updates from my explorations.</p> <p>My work is made possible, in large part, by <a href="/support">support from community members</a>.</p> <astro-island uid="GOX5w" component-url="/_astro/Signature.CGpUWDgW.js" component-export="default" renderer-url="/_astro/client.Dx9pp6Fx.js" props="{}" client="only" opts="{"name":"Signature","value":"react"}"><div class="signature" style="float: none;"><div class="signatureContent"><div class="serif">Spencer 張正 Chang<br>[email protected]</div><div class="footnote-container"><span class=""><img can-spin="true" id="stamp" class="stamp" src="/assets/name-stamp.png"></span></div><div class="socialMediaContainer"><a class="socialMediaLink" href="https://spencerchang.substack.com/" aria-label="Newsletter"><i class="uil uil-mailbox"></i></a><a class="socialMediaLink" href="https://twitter.com/spencerc99/" aria-label="Twitter"><i class="uil uil-twitter"></i></a><a class="socialMediaLink" href="https://www.are.na/spencer-chang/" aria-label="Arena"><span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150.38 88.986"><path d="M148.93 62.356l-20.847-16.384c-1.276-1-1.276-2.642 0-3.645l20.848-16.38c1.28-1.002 1.815-2.695 1.19-3.76-.626-1.062-2.374-1.44-3.88-.84l-24.79 9.874c-1.507.606-2.927-.22-3.153-1.83L114.57 2.926C114.34 1.317 113.13 0 111.877 0c-1.247 0-2.456 1.317-2.68 2.925l-3.73 26.467c-.228 1.61-1.646 2.434-3.155 1.83l-24.38-9.71c-1.512-.602-3.975-.602-5.483 0l-24.384 9.71c-1.508.604-2.928-.22-3.154-1.83L41.186 2.925C40.956 1.317 39.748 0 38.5 0c-1.252 0-2.463 1.317-2.688 2.925l-3.73 26.467c-.226 1.61-1.645 2.434-3.153 1.83L4.14 21.35c-1.507-.603-3.252-.223-3.878.838-.625 1.066-.092 2.76 1.184 3.76l20.85 16.38c1.277 1.003 1.277 2.645 0 3.646L1.446 62.356C.166 63.358-.364 65.152.26 66.34c.627 1.19 2.372 1.668 3.877 1.064l24.567-9.866c1.51-.603 2.914.218 3.125 1.828l3.544 26.696c.214 1.607 1.618 2.923 3.12 2.923 1.5 0 2.905-1.315 3.12-2.923l3.55-26.696c.21-1.61 1.62-2.43 3.122-1.828l24.164 9.698c1.506.606 3.97.606 5.477 0l24.16-9.698c1.504-.603 2.91.218 3.125 1.828l3.55 26.696c.212 1.607 1.617 2.923 3.115 2.923 1.502 0 2.907-1.315 3.12-2.923l3.55-26.696c.216-1.61 1.62-2.43 3.124-1.828l24.57 9.866c1.5.604 3.25.125 3.876-1.063.627-1.186.094-2.98-1.185-3.982zM95.89 46.18L77.53 60.315c-1.285.99-3.393.99-4.674 0L54.49 46.18c-1.284-.99-1.294-2.62-.02-3.625l18.4-14.493c1.274-1.005 3.363-1.005 4.638 0l18.4 14.493c1.277 1.004 1.267 2.634-.02 3.626z"></path></svg></span></a><a class="socialMediaLink" href="https://www.instagram.com/spence.r.chang/" aria-label="Instagram"><i class="uil uil-instagram"></i></a><a class="socialMediaLink" href="https://indieweb.social/@spencerchang" aria-label="Mastodon"><span><svg xmlns="http://www.w3.org/2000/svg" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="18 0 480 539.675"><path fill-rule="nonzero" d="M509.934 119.48C502.047 61.492 450.957 15.797 390.393 6.943 380.174 5.444 341.461 0 251.779 0h-.669c-89.706 0-108.95 5.444-119.169 6.943C73.064 15.552 19.296 56.613 6.25 115.283c-6.274 28.896-6.943 60.93-5.779 90.315 1.663 42.141 1.984 84.206 5.854 126.175a587.526 587.526 0 0013.962 82.76c12.4 50.284 62.598 92.13 111.779 109.203a302.928 302.928 0 00163.538 8.535 244.938 244.938 0 0017.707-4.782c13.169-4.148 28.621-8.782 39.981-16.927.154-.113.282-.262.374-.432.089-.17.138-.358.146-.549v-40.666a1.197 1.197 0 00-.465-.929 1.242 1.242 0 00-1.023-.227 457.85 457.85 0 01-106.125 12.264c-61.505 0-78.048-28.87-82.784-40.888a125.62 125.62 0 01-7.194-32.23c-.01-.186.026-.369.102-.539a1.165 1.165 0 01.834-.674c.181-.04.371-.034.552.01a449.063 449.063 0 00104.389 12.264c8.457 0 16.888 0 25.347-.219 35.366-.981 72.64-2.772 107.436-9.493.868-.173 1.736-.319 2.482-.538 54.884-10.427 107.113-43.149 112.422-126.005.199-3.264.696-34.168.696-37.555.023-11.503 3.744-81.604-.547-124.676zm-84.473 206.752H367.75V186.417c0-29.435-12.4-44.445-37.625-44.445-27.727 0-41.615 17.758-41.615 52.834v76.528h-57.363v-76.528c0-35.076-13.915-52.834-41.642-52.834-25.075 0-37.599 15.01-37.625 44.445v139.815H94.219V182.173c0-29.432 7.597-52.818 22.792-70.151 15.675-17.293 36.234-26.171 61.754-26.171 29.539 0 51.859 11.234 66.741 33.676l14.359 23.844 14.385-23.844c14.88-22.442 37.201-33.676 66.691-33.676 25.494 0 46.053 8.878 61.777 26.171 15.196 17.317 22.793 40.7 22.793 70.151l-.05 144.059z"></path></svg></span></a><a class="socialMediaLink" href="https://bsky.app/profile/spencerchang.me" aria-label="Bluesky"><span><svg version="1.1" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="-10 -5 80 62"><defs><linearGradient x1="0" y1="0" x2="0" y2="1" id="sky"><stop offset="0"></stop><stop offset="1" stop-opacity="1"></stop></linearGradient></defs><path d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805ZM50.127 3.805C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745Z"></path></svg></span></a><a class="socialMediaLink" href="https://github.com/spencerc99/" aria-label="Github"><i class="uil uil-github"></i></a></div></div></div></astro-island> </div> <!-- Root element of PhotoSwipe. Must have class pswp. --> <!-- <div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"> --> <!-- Background of PhotoSwipe.
It's a separate element, as animating opacity is faster than rgba(). --> <!-- <div class="pswp__bg"></div> --> <!-- Slides wrapper with overflow:hidden. --> <!-- <div class="pswp__scroll-wrap"> --> <!-- Container that holds slides.
PhotoSwipe keeps only 3 of them in DOM to save memory.
Don't modify these 3 pswp__item elements, data is added later on. --> <!-- <div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div> --> <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. --> <!-- <div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar"> --> <!-- Controls are self-explanatory. Order can be changed. --> <!-- <div class="pswp__counter"></div>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<button class="pswp__button pswp__button--share" title="Share"></button>
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button> --> <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR --> <!-- element will get class pswp__preloader--active when preloader is running --> <!-- <div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
</button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
</button>
<div class="pswp__caption">
<div class="pswp__caption__center"></div>
</div>
</div>
</div>
</div> --> <script type="module">
// TODO: not working
// import PhotoSwipeLightbox from 'photoswipe/lightbox';
// const lightbox = new PhotoSwipeLightbox({
// gallery: '.gallery',
// pswpModule: () => import('photoswipe')
// });
// lightbox.init();
</script> </footer> <div id="snackbar"></div> <script src="https://cursor-party.spencerc99.partykit.dev/cursors.js"></script><div class="cursors-root"><div style="position: absolute; inset: 0px; overflow: clip; pointer-events: none;"></div></div> <script type="module">
import "https://unpkg.com/playhtml@latest";
playhtml.init();
</script> <link rel="stylesheet" href="https://unpkg.com/playhtml@latest/dist/style.css"> <link rel="preload" href="/fonts/Cooper-Regular.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-Italic.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-Medium.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-MediumItalic.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-SemiBoldItalic.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-Bold.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-BoldItalic.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-ExtraBold.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-ExtraBoldItalic.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-Black.woff2" as="font" type="font/woff2" crossorigin=""> <link rel="preload" href="/fonts/Cooper-BlackItalic.woff2" as="font" type="font/woff2" crossorigin=""> <div class="marquee" title="this is a set of live attributes from what I consume and make streamed to this little status bar. The numbers represent Spencer epoch time, a play on UNIX epoch."> <span class="marqueeContent"> [<span class="date"><span class="timestamp">2024-10-28T19:04:11.000Z</span><span class="epoch">869531471</span></span>] ✍️ <a href="https://spencerchang.substack.com/p/the-moments-i-manifest">the moments I manifest</a> •[<span class="date"><span class="timestamp">2024-11-07T07:16:21.417Z</span><span class="epoch">870349401</span></span>] 🎧 <a href="https://open.spotify.com/track/58Me2uOBcH7fTVZh1GxvYM">Yakosei feat. Sai Chung-ho</a> •[<span class="date"><span class="timestamp">2022-10-30T07:00:00.000Z</span><span class="epoch">806502420</span></span>] 📿 “I start every day with two empty hands” •[<span class="date"><span class="timestamp">2024-11-06T09:04:09.000Z</span><span class="epoch">870269469</span></span>] 🔨 <a href="https://github.com/spencerc99/home">home</a> •[<span class="date"><span class="timestamp">2022-10-13T05:56:48.155Z</span><span class="epoch">805029828</span></span>] 📖 <a href="https://goodreads.com/book/show/65214963-wrong-way">Wrong Way</a> •[<span class="date"><span class="timestamp">2024-10-31T07:00:00.000Z</span><span class="epoch">869747220</span></span>] 🏃♂️ <a href="https://www.strava.com/activities/">hello upstate: 2.2km</a> •[<span class="date"><span class="timestamp">2024-11-06T20:29:48.655Z</span><span class="epoch">870310609</span></span>] 🖇️ <a href="’https://are.na/channels/1964087’">art that makes me feel</a> • [<span class="date"><span class="timestamp">2024-10-28T19:04:11.000Z</span><span class="epoch">869531471</span></span>] ✍️ <a href="https://spencerchang.substack.com/p/the-moments-i-manifest">the moments I manifest</a> •[<span class="date"><span class="timestamp">2024-11-07T07:16:21.417Z</span><span class="epoch">870349401</span></span>] 🎧 <a href="https://open.spotify.com/track/58Me2uOBcH7fTVZh1GxvYM">Yakosei feat. Sai Chung-ho</a> •[<span class="date"><span class="timestamp">2022-10-30T07:00:00.000Z</span><span class="epoch">806502420</span></span>] 📿 “I start every day with two empty hands” •[<span class="date"><span class="timestamp">2024-11-06T09:04:09.000Z</span><span class="epoch">870269469</span></span>] 🔨 <a href="https://github.com/spencerc99/home">home</a> •[<span class="date"><span class="timestamp">2022-10-13T05:56:48.155Z</span><span class="epoch">805029828</span></span>] 📖 <a href="https://goodreads.com/book/show/65214963-wrong-way">Wrong Way</a> •[<span class="date"><span class="timestamp">2024-10-31T07:00:00.000Z</span><span class="epoch">869747220</span></span>] 🏃♂️ <a href="https://www.strava.com/activities/">hello upstate: 2.2km</a> •[<span class="date"><span class="timestamp">2024-11-06T20:29:48.655Z</span><span class="epoch">870310609</span></span>] 🖇️ <a href="’https://are.na/channels/1964087’">art that makes me feel</a> • </span> </div> <script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"rayId":"8ec4e5b0ff08367c","version":"2024.10.5","r":1,"serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"726f3a00f9ea448b910374d8aad9a2c2","b":1}" crossorigin="anonymous"></script>
</body></html>