유아용 그림판 만들다가 flood-fill 셀룰러 오토마타를 발견한 이야기
저자는 3살 아이와 함께 쓰기 위한 초단순 협동 그림판 ‘Mr. Baby Paint’를 만들다가, 여러 flood fill이 동시에 자라며 충돌하는 과정에서 새로운 셀룰러 오토마타 같은 패턴을 발견했다. 글은 유아용 UX 설계, CPU 기반 flood fill의 의도적 느림, Catmull-Rom spline 브러시, 비트맵 폰트 굵게 만들기 실험까지 꽤 알찬 제작기를 담고 있다.
- 1
Mr. Baby Paint는 메뉴와 툴바 없이 전체 화면을 캔버스로 쓰는 유아용 협동 그림 앱이다
- 2
빠르고 불규칙한 마우스 움직임을 부드럽게 잇기 위해 Catmull-Rom spline과 1px 간격 브러시 스탬핑을 썼다
- 3
여러 flood fill이 1000픽셀/frame 성장 예산을 공유하면서 충돌해 유기적인 패턴을 만드는 셀룰러 오토마타가 생겼다
- 4
GPU compute shader 버전은 빠르지만 재미가 덜해서, CPU 단일 스레드의 느림을 일부러 디자인 요소로 남겼다
- 5
비트맵 폰트를 굵게 만들기 위해 JFA, SDF, ray-casting, dilation 등 여러 알고리즘을 실험했고 최종적으로 수동 보정까지 거쳤다
이 글은 ‘아이용 앱’이라는 귀여운 포장 안에 꽤 진지한 인터랙션 설계와 그래픽 알고리즘 삽질이 들어 있다. 특히 버그처럼 보이는 flood fill 충돌을 제거하지 않고 놀이의 핵심으로 남긴 판단이 좋다.
관련 기사
메타, AI가 읽고 쓰는 디자인 시스템 ‘Astryx’ 오픈소스로 공개
메타가 내부 디자인 시스템 Astryx를 오픈소스로 공개했다. React와 StyleX 기반의 150개 이상 접근성 지원 컴포넌트, 디자인 토큰, 테마, 템플릿, CLI를 제공하며, 특히 AI 에이전트가 컴포넌트 구조를 이해하고 UI를 생성·수정할 수 있도록 MCP 서버까지 포함한 점이 핵심이다.
shadcn/ui, 기본 컴포넌트 라이브러리를 Radix에서 Base UI로 변경
shadcn/ui가 새 프로젝트의 기본 컴포넌트 라이브러리를 Radix가 아니라 Base UI로 바꿨어. Radix 지원은 계속되지만, Base UI가 안정화됐고 주간 다운로드 600만 이상, shadcn/create 신규 프로젝트 선택 비율 2대1이라는 이유로 기본값을 바꾼 거야. 동시에 채팅 UI용 MessageScroller와 관련 컴포넌트, headless 패키지인 @shadcn/react도 공개됐어.
버튼의 일은 딱 하나다: 눌렀으면 실행돼야 함
사진 회전 버튼처럼 단순해 보이는 UI도 빠르게 반복 입력하면 제품 철학이 드러남. 아이폰은 탭을 기억해 순서대로 처리하지만, 일부 안드로이드 앱은 애니메이션 중 들어온 입력을 무시해서 사용자가 기다리게 만듦. 저자는 이걸 접근성과 비슷한 ‘상황적 파워유저’ 문제로 봄.
프로즈미러 제작자가 새 브라우저 리치 텍스트 에디터 ‘Wordgard’를 공개
Wordgard는 브라우저 안에서 구조화된 리치 텍스트 에디터를 만들기 위한 오픈소스 자바스크립트 라이브러리다. 자유 HTML 편집기가 아니라, 앱이 지원할 문서 구조를 스키마로 정확히 통제하는 방향을 택했다.
DOM을 직접 조작하는 오픈소스 웹 에이전트 SDK, dotdotduck 공개
dotdotduck은 기존 웹사이트 안에 삽입돼 DOM을 직접 보고 조작하는 AI 에이전트 SDK다. 챗봇을 구석에 붙이는 방식이 아니라, Ctrl+K 팔레트, 인라인 AI, 음성, Dwell 제스처, 번역, 분석까지 한 패키지로 제공하려는 쪽에 가깝다.
댓글
댓글
댓글을 불러오는 중...