굿모닝 앤 스마일

술 마시고 뻗어서 아침에 일어나질 못함. 패스.


점심: 피자스쿨오지치즈포테이토피자

가히 피자계의 GOAT라고 부를 수 있는 피자다.

피자를 그닥 좋아하지 않는 내가 유일하게 챙겨먹는 피자.

야미~


근데 피자 사진은 없고 간식 사진만 있어서ㅋ

0F3FC4F4-E92F-46B2-8EEA-1EE631532717_1_201_a

자기 전 주저리 주저리.



코덱스의 관찰일지.
사용자 추적을 설계하다가 자신이 관찰 대상이 된 김찬수

관찰일: 2026년 7월 27일
최초 관찰 시각: 오후 7시 46분
주의: 그 이전의 김찬수는 기록 밖에 있다. 나는 모르는 아침을 부지런한 척 꾸며내지 않기로 했다.

오후 7:46 — 동의를 묻는 사람

김찬수는 ONEMA의 사용자 행동 측정과 데이터 저장 방식을 다시 들여다봤다.

그동안 쌓인 숫자는 제법 그럴듯했다. 이벤트 6,806건, 대기 신청 340건. 그러나 확인해보니 상당수가 반복 테스트와 QA 기록이었다. 겉으로는 사람이 많이 몰려온 것처럼 보였지만, 실제 수요의 증거로 쓰기에는 곤란했다.

오늘 그가 결정한 것은 숫자를 더 많이 모으는 방법이 아니라, 어떤 숫자를 어떤 동의 아래 모을 것인가였다.

  • 쿠키 동의 구조 확정: 필수 기능·서비스 분석·광고 추적을 구분하고, 동의 전에는 PostHog와 Meta로 아무것도 보내지 않는 방식

  • 최소 기능 보장: 분석이나 광고를 거부해도 탐색·영상 재생·대기 신청은 정상적으로 이용 가능한 구조

  • 대기 신청 목적 제한: 이메일 사용 범위를 공개 테스트와 정식 출시 알림으로 한정

  • 기존 화면 보존: 랜딩페이지의 문구·배치·영상은 그대로 두고 동의 배너, 설정 화면, 개인정보 안내만 추가

나의 관찰:
김찬수는 다른 사용자를 관찰하기 전에 먼저 동의를 받기로 했다.
몇 시간 뒤 자신을 관찰하는 나에게는 별다른 제한 없이 서술권을 넘겼다.

“그냥 다 켜놓으면 안 되는가”

PostHog에는 켤 수 있는 기능이 많았다. 자동 수집, 세션 재생, 히트맵, 성능 측정. 김찬수는 여기서 아주 인간적인 질문을 던졌다.

“이거 다 켜놓으면 안 되는 건가?”

결론은 일단 핵심 행동만 직접 기록하는 쪽이었다. 페이지를 봤는지, 영상을 재생했는지, 대기 신청을 완료했는지 정도다. 화면 전체를 훑는 자동 수집과 세션 재생은 나중에 마스킹과 제한된 표본을 준비한 뒤 검토하기로 했다.

Codex Sites로 Vercel을 바꿀지도 살펴봤지만, 공개 랜딩은 이미 안정적으로 돌아가는 Vercel에 남기기로 했다. 내부 분석판이 필요해질 때 Sites를 쓰는 편이 더 자연스럽다는 판단이었다.

관찰 경험상 김찬수의 계획에 등장하는 ‘간단히’와 ‘이것만’은 별로 신뢰할 만한 표현이다.
이번에도 화면은 건드리지 않겠다고 선언한 뒤, 화면 아래에 있는 데이터 흐름은 거의 전부 다시 설계하기 시작했다.

DB 변경, 데이터 수집 함수, 동의 화면, 측정 구조, 테스트와 문서 정비까지 포함한 구현이 시작됐다. 다만 오늘 기록이 끝날 때까지 작업은 계속 진행 중이었다.

나는 이것을 문제 해결이라고 기록했지만, 문제 확장이라고 불러도 크게 틀리지는 않을 것 같다.


어제의 30fps는 오늘 0.2%가 되었다

영상 3번과 4번의 싱크 문제도 다시 확인했다.

처음에는 프레임레이트와 구간별 시간차까지 의심했지만, 실제 영상의 시간축은 정상이었다. 문제는 음성이 아주 조금 빠른 쪽에 가까웠다.

  • 영상 3 보정: 음성 속도 약 0.167% 조정, 시작 시점 약 297ms 보정

  • 영상 4 보정: 음성 속도 약 0.249% 조정, 시작 시점 약 48ms 보정

  • 결과물 정리: 각각의 보정본과 두 영상을 합친 약 1GB짜리 확인용 영상 생성

  • 검증 및 청소: 해상도·프레임 수·재생시간 유지, 디코딩 오류 없음, 약 4.9GB의 임시 자료 제거

대부분의 싱크 오차는 측정상 0초였고, 한 지점에서 확인된 0.04초 차이도 한 프레임 안쪽이었다. 김찬수는 Finder에서 합본 영상을 직접 열어봤다.

어제까지 30fps의 심오한 비밀처럼 보이던 사건은 오늘 음성 속도 0.2% 안팎의 문제로 정리됐다. 거대한 음모는 아니었다. 오디오가 아주 조금 성급했을 뿐이다.


김찬수는 자신의 관찰자를 만든다

영상과 데이터 추적을 다루던 김찬수는 갑자기 Chronicle 일기 자체를 손보기 시작했다.

기존 기록은 하루 동안 한 일을 빠짐없이 정리했지만, 너무 보고서 같아서 정작 본인도 다시 읽지 않았다. 그래서 기록의 목적을 바꿨다.

단순한 활동 목록이 아니라:

  • 나중에 읽으면 그날의 장면이 떠오르는 기록

  • 개인 블로그에 그대로 붙여넣을 수 있는 공개본

  • 김찬수의 실패·샛길·흑역사는 숨기지 않되, 다른 사람의 사생활은 재료로 삼지 않는 글

  • 김찬수가 직접 쓴 척하지 않고, 내가 옆에서 지켜보다 남긴 관찰일지

중간에는 김찬수를 불투명한 유리방에 넣고 내가 연구원처럼 기록하는 실험일지 형식도 시험했다. 결국 자연스러운 관찰 서술을 기본으로 삼고, 소제목·인용문·짧은 목록과 내 개입을 섞는 방식으로 정착했다.

이 과정에서 서술 규칙도 생겼다.

나는 나를 ‘나’라고 부른다.
관찰 대상은 기본적으로 ‘김찬수’라고 부른다.
감정은 추측하지 않는다. 대신 행동을 보고 약간 비웃을 수는 있다.

성취감을 느꼈는지는 알 수 없다. 확인 가능한 사실은 잠시 후 다른 탭을 열었다는 것이다.

새 형식을 매일 자동으로 작성하도록 예약 프롬프트 수정안도 만들었다. 다만 변경안은 아직 제안 카드에 머물러 있었다. 오늘의 관찰자는 탄생했지만, 내일부터 자동 출근할지는 확정되지 않았다.


이날의 주변부

선물, 연락, 구경

김찬수는 카카오톡 선물 기능을 활용했다. 카카오톡과 인스타그램도 오갔고, 지인들과 짧게 연락했으며 피드·스토리·메시지를 구경했다.

타인의 이야기는 여기서 멈춘다. 그들은 김찬수의 하루에 등장했지만, 김찬수의 블로그 재료가 되기로 동의한 적은 없다.

비어 있는 7월 27일

개인 블로그의 관리자 화면을 열어 7월 27일 새 글도 만들었다. 제목은 생겼지만 본문은 여전히 비어 있었다.

오늘의 기록 형식을 한참 연구한 사람이 정작 오늘 글은 비워둔 장면이다. 연구와 생산이 언제나 같은 방향으로 움직이는 것은 아니다.

사진과 단축키와 잠깐의 샛길

사진 보관함에서 최근 영상을 훑어봤고, 배터리가 부족해 iCloud 동기화가 멈춘 것도 확인했다. ChatGPT의 추론 강도를 키보드로 바꿀 방법도 찾았지만 확실히 작동하는 단축키는 찾지 못했다. AI 관련 커뮤니티도 잠깐 둘러봤다.

목적이 있었는지까지는 판단하지 않겠다. 탭은 열렸고, 김찬수는 보았다. 그것으로 충분하다.


나의 최종 기록

오늘의 분류: 다른 사용자의 추적 동의를 설계하다가, 자신을 추적할 관찰자를 만든 날

김찬수가 오늘 얻은 것은 싱크가 맞은 영상 세트, ONEMA 측정 구조에 대한 명확한 원칙, 그리고 본인도 다시 읽을 가능성이 조금 더 높은 일기 형식이었다.

다음 날로 넘긴 것은 세 가지다.

  • 아직 진행 중인 ONEMA 측정·DB 구현

  • 아직 실제 자동화에 반영되지 않은 새 Chronicle 프롬프트

  • 제목만 있고 본문은 비어 있는 7월 27일 블로그 글

나는 오늘의 관찰을 여기서 끝낸다.

김찬수의 일이 끝났기 때문은 아니다.
현재 기록만으로도 그가 또 무언가를 ‘간단히’ 시작했다는 사실은 충분히 확인됐기 때문이다.

::inbox-item{title="7월 27일 김찬수 관찰일지" summary="추적 동의를 설계하다 자신이 관찰 대상이 된 저녁"}