diff --git a/venture-one-pager.md b/venture-one-pager.md new file mode 100644 index 0000000000..61cb8661bf --- /dev/null +++ b/venture-one-pager.md @@ -0,0 +1,65 @@ +# Aesthetic Computer + +**A creative computing platform that runs everywhere — from the browser to bare metal.** + +--- + +## The Problem + +Creative tools are fragmented, expensive, and locked inside corporate ecosystems. Drawing lives in one app, music in another, code in another. None of them talk to each other, none of them let you publish or sell what you make without leaving the tool, and none of them run on hardware you actually own. + +## The Product + +Aesthetic Computer is a unified runtime for creative computing — painting, music, generative art, games, and code — accessible from a single URL or bootable from a USB stick. + +- **361 creative tools** (drawing, music, games, simulations, educational pieces) +- **KidLisp** — a custom Lisp dialect for generative art (16,779 programs written by users) +- **Keeps** — on-chain minting (Tezos) so artists can sell work without leaving the platform +- **AC Native OS** — bare-metal Linux that boots to a creative instrument in ~2 seconds +- **Social layer** — handles, profiles, real-time chat, piece publishing, QR sharing + +Everything is immediate-mode, URL-addressable, and forkable. A user can visit `aesthetic.computer/paint`, make something, publish it as `@theirname/remix`, and share it via QR code — in one session. + +## Traction + +| | | +|---|---| +| **183 active users** (60-day window) | **2,812 registered handles** | +| **4,429 paintings** created | **16,779 KidLisp programs** written | +| **265 user-published pieces** | **78 Keeps minted** (first 3 weeks) | +| **UCLA curriculum integration** | **3 platforms** (web, desktop, bare-metal OS) | + +## Revenue Model + +Six active streams, all early: + +- **Keeps minting fees** (2.5 XTZ per mint + 10% royalties on secondary sales) +- **Subscriptions** (sotce.net — handle + page + chat access) +- **Donations** ($5–$100+ via Stripe/PayPal) +- **Print-on-demand** (stickers, mugs, physical prints of user art) +- **Shop** (books, records, artworks) +- **Botce tickets** (limited-use access passes) + +The long-term play: platform take-rate on a growing marketplace of user-created and user-sold creative tools, art, and music. + +## Why Now + +1. **AI makes creation easier but ownership harder** — AC gives creators a platform where their work is theirs, on-chain if they want it. +2. **The "personal computer" is impersonal** — AC Native OS is a bet that people will want dedicated creative hardware again, like musical instruments. +3. **Creative coding is going mainstream** — Processing/p5.js proved the market; KidLisp makes it radically simpler. + +## Team + +**Jeffrey Scudder** — artist, educator, software engineer. Built the entire stack solo. Previously taught at UCLA (creative computing curriculum now runs on AC). Published academic work on creative computing interfaces. + +## The Ask + +Raising a seed round to: +- Hire 1–2 engineers (multiplayer infrastructure, mobile) +- Scale the Keeps marketplace (artist onboarding, collector tools) +- Ship AC Native OS hardware (dedicated creative computing device) +- Grow the user base from 183 → 10,000 active creators + +--- + +**aesthetic.computer** · **kidlisp.com** · **@jeffrey** diff --git a/vscode-extension/extension.ts b/vscode-extension/extension.ts index 62f88cd261..45b55bced0 100644 --- a/vscode-extension/extension.ts +++ b/vscode-extension/extension.ts @@ -1279,16 +1279,22 @@ async function activate(context: vscode.ExtensionContext): Promise { }>; } + const OTA_STAGES: Record = { + 'preflight-sync': { icon: '$(repo-sync~spin)', label: 'sync', step: 1 }, + 'prune': { icon: '$(trash~spin)', label: 'prune', step: 1 }, + 'docker-build': { icon: '$(container~spin)', label: 'docker', step: 2 }, + 'binary': { icon: '$(gear~spin)', label: 'binary', step: 3 }, + 'initramfs': { icon: '$(package~spin)', label: 'initramfs', step: 4 }, + 'kernel': { icon: '$(cpu~spin)', label: 'kernel', step: 5 }, + 'smoke-test': { icon: '$(beaker~spin)', label: 'test', step: 6 }, + 'upload': { icon: '$(cloud-upload~spin)', label: 'upload', step: 7 }, + 'done': { icon: '$(check)', label: 'done', step: 8 }, + }; + const OTA_TOTAL_STEPS = 7; + function getOTAIcon(stage: string, status: string): string { if (status === 'running') { - switch (stage) { - case 'binary': return '$(gear~spin)'; - case 'initramfs': return '$(package~spin)'; - case 'kernel': return '$(cpu~spin)'; - case 'smoke-test': return '$(beaker~spin)'; - case 'upload': return '$(cloud-upload~spin)'; - default: return '$(sync~spin)'; - } + return OTA_STAGES[stage]?.icon || '$(sync~spin)'; } switch (status) { case 'success': return '$(check)'; @@ -1360,10 +1366,15 @@ async function activate(context: vscode.ExtensionContext): Promise { const timeStr = mins > 0 ? `${mins}m${secs}s` : `${secs}s`; const name = a.buildName || a.ref?.substring(0, 7) || ''; const variant = a.stage?.startsWith('cl-') ? ' CL' : ' C'; - const stageClean = a.stage?.replace('cl-', '') || ''; - statusBarOTA.text = `${getOTAIcon(a.stage, 'running')} ${name}${variant} | ${stageClean} ${a.percent}% | ${timeStr}`; + const rawStage = a.stage?.replace('cl-', '') || ''; + const stageInfo = OTA_STAGES[rawStage]; + const stageLabel = stageInfo?.label || rawStage; + const stepNum = stageInfo?.step || 0; + const progress = a.percent > 0 ? ` ${a.percent}%` : ''; + const stepStr = stepNum > 0 ? ` [${stepNum}/${OTA_TOTAL_STEPS}]` : ''; + statusBarOTA.text = `${getOTAIcon(a.stage, 'running')} ${name}${variant} | ${stageLabel}${progress}${stepStr} | ${timeStr}`; statusBarOTA.backgroundColor = getOTAColor('running'); - let tip = `AC-OS Building: ${name}\nVariant:${variant}\nStage: ${stageClean} (${a.percent}%)\nElapsed: ${timeStr}`; + let tip = `AC-OS Building: ${name}\nVariant:${variant}\nStage: ${stageLabel}${progress}${stepStr}\nElapsed: ${timeStr}`; if (a.commitMsg) tip += `\n${a.commitMsg}`; if (a.ref) tip += `\nCommit: ${a.ref.substring(0, 11)}`; statusBarOTA.tooltip = tip; diff --git a/vscode-extension/package-lock.json b/vscode-extension/package-lock.json index 7885751dab..d8793f187b 100644 --- a/vscode-extension/package-lock.json +++ b/vscode-extension/package-lock.json @@ -1,12 +1,12 @@ { "name": "aesthetic-computer-code", - "version": "1.271.1", + "version": "1.271.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aesthetic-computer-code", - "version": "1.271.1", + "version": "1.271.2", "license": "None", "dependencies": { "acorn": "^8.15.0", diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 05ec231341..d913b1a7d1 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -4,7 +4,7 @@ "displayName": "Aesthetic Computer", "icon": "resources/icon.png", "author": "Jeffrey Alan Scudder", - "version": "1.271.1", + "version": "1.271.2", "description": "Code, run, and publish your pieces. Includes Aesthetic Computer themes and KidLisp syntax highlighting.", "engines": { "vscode": "^1.105.0"