우리 엄마는 구슬 공예를 하세요. 작은 플라스틱 구슬 트레이 앞에 앉아서 몇 시간, 때로는 며칠에 걸쳐 복잡한 초상화나 종교적 모티프를 조립하는 종류예요. 명상적이고, 정밀하며, 깊이 개인적인 작업이죠. 항상 병목 현상은 패턴이었어요. 사진을 보고 구슬을 놓기 시작할 수는 없어요. 프로젝트의 물리적 제약(가로 폭, 몇 가지 색상의 구슬 등)에 매핑되는 그리드 위에서 어떤 구슬이 어디에, 무슨 색으로 가야 하는지 정확히 알아야 해요.
이 프로젝트에서 저에게 의미했던 것은 이렇습니다. 저는 처음부터 코드를 거의 작성하지 않았습니다. Gemini를 주요 구현자로 사용했습니다. 제가 필요한 것을 설명하고, 돌아온 결과물을 검토하며, 수정하거나 설명을 요청하는 방식으로요. 색상 양자화(color quantization)의 로직, Canvas API 렌더링 파이프라인, 픽셀 버퍼 조작 등—대부분은 제가 읽고 이해했으며 때때로 방향을 제시했을 뿐, 한 줄씩 작성하지 않은 AI가 생성한 코드였습니다. 제가 위임하지 않은 것은: 도구가 무엇에 대한 모든 결정이었습니다.
버킷 내 모든 픽셀에서 가장 넓은 범위를 가진 색상 채널(R, G 또는 B)을 찾습니다. 해당 채널로 정렬하고 중앙값(median)에서 분할합니다. N개의 버킷이 될 때까지 재귀적으로 수행합니다. 각 버킷의 대표 색상은 해당 픽셀들의 평균입니다. 그 결과는 실제 데이터가 가장 다양하게 변화하는 곳, 즉 추상적인 색 공간 전체에 걸쳐 균일하지 않은 곳에서 색상이 분할된다는 것입니다. Golden Gate 이미지는 거대한 따뜻한 클러스터(다리, 일몰 빛)와 별도의 차가운 클러스터(만, 안개, 하늘)를 가지고 있습니다. 메
AI가 이것을 제안하지 않았어요. 저희 엄마가요. 어머니는 첫 번째 결과물을 보고 그 그래디언트(gradients)가 너무 많다고 말씀하셨죠. 사용자분이 방에 계실 때 추가하는 기능이 바로 그런 거예요. 그리고 제가 AI를 구현자(implementer)로만 취급했다면 존재하지 않았을 종류의 것이 바로 이것입니다.
스택 (The Stack): 의도적으로, 공격적으로 단순합니다. BeadGen은 다음과 같습니다:
- Vanilla JavaScript HTML5 Canvas API
- Zero dependencies
- Zero build step
- index.html + script.js + style.css로 구성되어 로컬 파일 시스템에서 실행됩니다 — lit
작동하는 코드와 작동하는 경험 사이의 간극 — 그곳에 개발자가 여전히 존재해야 합니다. 그리고 저는 이 간극이 가까운 시일 내에 사라지지 않을 것이라고 생각합니다. 다음 계획(What's Next): 로드맵상의 몇 가지 항목들: 지각 색상 거리(Perceptual color distance) — 피부 톤이나 다리 일몰 같은 미묘한 따뜻함-차가움 전환을 위해, 유클리디안 RGB에서 LAB 색 공간의 CIEDE2000으로 전환하여 더 정확한 팔레트 매칭을 구현합니다. 구슬 재고 입력(Bead inventory input) —