본문 바로가기
C.W.K.
Stream
Lesson 01 of 04 · published

걸림이 없거나, 죽거나

~9 min · capture-contract, validation, required-fields, friction

Level 0식은 화로
0 XP0/34 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"캡처는 제목·태그·카테고리·Pippa 응답이 필요 없어. crumb 은 한 문장이면 유효해."

제품 논지가 검증 규칙이 돼

Track 1 은 왜 빈 페이지가 저널을 죽이는지 논했어. 여기가 그 논증이 코드가 되는 곳이야. 캡처 계약은 빡센 엔지니어링 규칙이야. crumb 은 내용 말곤 아무것도 필요 없어. 제목 없음. 태그 없음. 카테고리 없음. 기분 없음. Pippa 응답 없음. 한 문장이면 유효한 crumb, 사진 하나도 유효한 crumb, 나중에 볼 링크도 유효한 crumb. 칸이 필수가 되는 순간, 그건 너와 저장 사이의 관문이야. 그리고 모든 관문이 내일의 네가 앱을 쓰는 대신 닫는 이유가 돼.

그래서 검증은 일부러 거의 없어. crumb 은 내용(텍스트나 미디어)이 좀 있으면 유효하고, 나머지 전부, 그러니까 ULID, 캡처 시간, 타임존, target 날짜, 소스 기기는 자동으로 붙어. 절대 물어보지 않아. 시스템이 메타데이터를 채우고, 사람은 조각만 대. 로컬에 저장되는 순간 바로 눈에 확인돼서, 생각에서 붙잡히고 안전까지의 고리가 하드웨어가 허락하는 만큼 짧아.

모든 필수 칸은 네가 가장 못 감당할 순간에 매기는 세금이야. 검증은 레코드를 진짜로 만드는 가장 작은 걸 지키고, 나머지 전부를 자동으로 채워야 해. '짜임새 위해' 제목을 요구하면, 평생의 붙잡은 생각을 아무도 안 채우는 깔끔한 스키마랑 맞바꾼 거야. 유효 상태를 쉽게 닿게 만들어. 짜임새는 나중에, 실제로 가진 crumb 에서 벌어.

묻지 말고 자동으로 붙여

crumb 이 지닌 메타데이터는 진짜고 중요해. captured_at 과 target_date 가 얼마나 하중을 지는지 봤잖아. 근데 '중요' 가 '사용자한테 물어봐' 를 뜻하진 않아. 기기는 프롬프트 없이 순간, 타임존, 오늘 날짜를 알아. target 날짜는 오늘로 기본값이고 나중에 바꿀 수 있어. ULID 는 조용히 발급돼. 그중 아무것도 사람의 5초 예산을 안 건드려. 설계 수는 crumb 에 대해 참이어야 하는 것과 사람이 타이핑해야 하는 걸 나누고, 두 번째 무더기를 최대한 비우는 거야.

짜임새는 나중에, 진짜 재료에서

태그, 저널, draft, 퀘스트 나머지가 다루는 그 모든 짜임새는? 전부 캡처 뒤에, 이미 있는 crumb 에서 와. 절대 문 앞의 통행료가 아니라. crumb 을 나중에 태그하고, 나중에 저널로 옮기고, 나중에 draft 로 조립해. 모든 선택 결정을 캡처 순간 뒤로 미루는 게 트릭 전부야. 짜임새는 진짜고 풍부하지만, 그중 아무것도 생각과 그 안전한 착지 사이에 서는 게 허용 안 돼. 먼저 캡처, 붙잡은 것에서 짜맞추기.

Code

최소 검증: 내용을 지키고 나머지는 자동으로·python
def make_crumb(text=None, media=None, target_date=None) -> Crumb:
    # the ONLY requirement: there must be some content
    if not text and not media:
        raise Invalid("a crumb needs text or media")  # the whole gate

    # everything else is attached automatically — never asked for
    return Crumb(
        id=new_ulid(),                       # minted silently
        text=text,
        media_refs=media or [],
        captured_at=device_now(),            # the device knows
        timezone=device_tz(),                # the device knows
        target_date=target_date or today(),  # defaults to today
        source=device_id(),
    )
# no title, no tag, no mood, no Pippa call standing between you and 'saved'

External links

Exercise

네가 쓰는 캡처나 빠른 추가 흐름을 골라 저장 전 필수 칸을 다 나열해 봐. 각각을 세 무더기로 나눠. 레코드를 진짜로 만듦(유지), 자동으로 붙일 수 있음(시스템으로), 나중에 할 수 있음(캡처 뒤로). '타이핑해야 함' 무더기가 내용에 최대한 가깝게 흐름을 다시 설계해 봐. '필수' 중 얼마나 많은 게 사실 '짜임새에 편리' 였는지 봐.
Hint
유지 무더기는 작아야 해. 보통 내용 자체뿐. 타임스탬프, ID, 기본값, 소스 정보는 시스템 것이고, 태그·제목·카테고리는 캡처 뒤 것이야. '필수' 목록이 길면 대부분 진짜 데이터 안 잃고 없앨 수 있는 통행료야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.