
돌아가는 것만 싣는다
서버가 앱이 되는 여섯 편, 실물 보드 두 대, 그리고 앞선 주장들을 코드로 갚은 글들. 이 달부터 실행 로그와 실제 렌더 없이는 싣지 않는다.
Vol. 7
horizon
- 내놓지 않은 것이 앱을 지킨다 — 모든 서버가 앱이다, 그 다음 이야기서버가 앱이 된다는 건 모든 능력을 화면에 올린다는 뜻이 아니다. 무엇을 끝내 도구로 만들지 않을지가 그 앱의 모양이자 안전이다. 2026-04에 이 주장을 폈고 "다음 글에서 보이겠다"고 미뤘다. 이번엔 미루지 않는다 — 도구 목록에 없는 능력이 실제로 닿지 않는다는 것을, 실행 로그와 실보드 응답으로 갚는다.FREE
- 통역 없이 앉는다 — 판단 한 조각이 규칙이 되는 자리2026-03에 "도구의 8할은 판단이고 그 판단은 이미 손에 들려 있다"고 적었다. 그 8할이 어떻게 통역 없이 화면에 앉는지는 말로만 적었다. 이번엔 실물로 갚는다 — 농부의 판단 한 조각은 일곱 줄이었고, 반장의 점검표는 한 글자도 안 바꾸도록 검증이 막고 있다.FREE
- 화면 층만 녹는다 — 설치 없는 앱, 그리고 컴파일이 얼려 둔 것2026-01과 02에 나눠 실었던 두 비전 글을 하나로 합치고, 그때 재지 않고 적은 숫자를 전부 실측으로 바꿨다. 화면 정의는 정말 작은가 — 656 바이트다. 수정이 정말 즉시 도달하는가 — 83 밀리초, 빌드 0회. 그리고 무엇이 여전히 얼어 있어야 하는지까지.FREE
build
- 칩 하나에 붙이면, 붙인 기기가 단말이 된다 — POS·키오스크·주방 화면을 한꺼번에매장에 이미 있는 결제기 옆에 서버 하나를 세우고, 태블릿·PC·주방 화면을 붙였다. 세 기기 어디에도 앱을 만들지 않았는데 각각 키오스크·POS·주방 디스플레이가 됐다. 카드 승인 경로는 한 줄도 건드리지 않았다. 코드 전체와 실행 로그, 실제로 렌더된 세 화면을 그대로 싣는다.DEV
- 보드가 자기 화면을 건넨다 — 실물 두 대, 전송 두 가지, 클라이언트 하나STM32H723은 USB 시리얼로, ESP32는 mDNS로 발견해 Wi-Fi TCP로 붙었다. 두 보드가 각자 화면 정의를 건네고, 버튼을 누르면 실제 LED가 켜진다. 클라이언트 코드는 두 경우에 한 글자도 다르지 않다. 시뮬레이터 없음 — 이 편만은 하드웨어가 없으면 검증이 실패한다.DEV
- 묻지 않는 화면 — 벽에 걸린 것은 물어서는 안 된다이 시리즈의 모든 화면은 물어서 알았다. 손에 든 화면은 그래도 되지만 벽에 박힌 주방 화면은 안 된다 — 계속 묻거나 늦거나 둘 중 하나가 된다. 구독하고 나서 세 건이 도착하는 동안 화면이 호출한 도구는 0개다.DEV
- 재시도가 무는 값 — 다시 걸어 보는 쪽 말고, 받는 쪽재시도에 관한 글은 대개 거는 쪽에서 쓰여 있다. 이 편은 받는 쪽에서 센다. 700밀리초 장애를 네 명이 두 가지 방법으로 넘겼고, 둘 다 결국 통과했다. 다른 건 게이트웨이가 그동안 맞은 횟수다 — 64번과 25번.DEV
- 둘 다 "예약됐습니다" — await 하나가 가르는 것같은 시간을 두 사람이 동시에 잡는다. 두 처리기는 말로 설명하면 똑같은 일을 한다 — 비었는지 보고, 비었으면 잡는다. 한쪽은 두 사람에게 다 확정을 보내고, 다른 쪽은 안 보낸다. 차이는 중간에 있는 await 하나다.DEV
- 이건 누가 눌러도 되나 — 버튼을 숨기는 것은 권한이 아니다화면 하나를 두 사람이 연다. 취소 버튼은 둘 다에게 보인다. 알바가 누르면 서버가 거절하고, 거절이 장부에 남는다. 화면 파일은 같은 파일이고, 그 해시를 로그에 찍어 뒀다.DEV
- 화면이 서버에서 온다 — 클라이언트가 화면을 하나도 안 갖고 있으면이 시리즈의 모든 샘플은 화면 파일을 앱 옆에 두고 있었다. 이번 클라이언트에는 화면이 한 장도 없다. 서버에 무엇을 그릴지 물어서 그리고, 서버가 바뀌었다고 하면 다시 묻는다. 재설치도 재시작도 빌드도 없다.DEV
- MCP 서버 첫 구현 — 채팅창에서 내 코드가 돈다Claude Desktop에 "노트에 저장해줘"라고 적으면 내 노트북에서 도는 몇십 줄짜리 서버가 실행된다. 스토어도 배포도 없이 설정 한 줄이다. 그 왕복을 처음부터 끝까지 만들고, dart test로 스스로 검사하게 했다.DEV
field
- 읽지 않는 도구 — 진료 흐름에서 판단을 밖에 두는 법2026-04에 의사가 진료 흐름 도구를 만든 이야기를 실었다. 그 글은 도구가 무엇을 하지 않는지를 말로만 적었다. 이번엔 코드에 그었다 — 이 서버에는 판단을 내는 도구가 없고, 판정처럼 들리는 단어를 내보내려 하면 예외가 난다.DEV
- 기준은 여전히 당신 것이다 — 채점 도구가 하지 않는 일2026-03에 교사가 채점 도구를 만든 이야기를 실었다. 그 글에는 도구가 무엇을 근거로 점수를 줬는지가 없었다. 이번엔 직접 만들었다 — 모든 점수가 루브릭의 어느 갈래에서 나왔는지 달고 나오고, "3번에서 미끄러진다"는 답안에서 세어져 나온다.DEV
- 물어볼 수 있는 기록 — 노트 서른 권이 못 보여 준 것2026-04에 어느 농부가 30년 치 손글씨 노트를 한 화면으로 옮긴 이야기를 실었다. 그 글의 심장인 "말하면 화면이 된다"에 실물이 0이었다. 현장은 실제 형태대로 구성해 처음부터 끝까지 직접 만들었다 — 그리고 "18일"은 소스 어디에도 없다. 기록에서 계산되어 나온다.DEV
- 마흔다섯 줄 — 주말에 만든 작은 것의 실제 크기2026-01에 비개발자가 주말 오후에 회비 도구를 만든 이야기를 실었다. 그 글에는 화면도 정의도 과정도 없었다. 이번엔 직접 만들었고, 만드는 사람이 실제로 건드리는 것이 몇 줄인지 세었다 — 마흔다섯 줄이다. 그리고 그 숫자가 늘어나면 검증이 실패한다.DEV