Notes
디지털 가든
완성된 글이 아니라 자라고 있는 노트들입니다. 🌱 새싹은 초기 아이디어, 🌿 자라는 중은 발전 중, 🌳 상록수는 여러 번 다듬어 정착한 노트입니다.
상록수6
Codex 경쟁 — 모든 작업을 두 번 굴려보기
중요한 작업은 Claude와 Codex 두 모델에 동시에 던지고, 결론이 갈리는 지점만 사람이 판단한다. 내 검증 루프에 두 번째 모델을 상시 배치한 방식.
- #claude
- #workflow
- #ai
- #verification
콘텐츠 = 파일 — MDX + Vite의 자동 확장 패턴
콘텐츠 한 개 = MDX 파일 한 개. import.meta.glob으로 자동 인덱싱하면 코드 수정 없이 사이트가 확장된다.
- #frontend
- #mdx
- #vite
- #content-architecture
One-way vs Two-way Door — Bezos의 의사결정 분류
되돌릴 수 있는 결정(two-way)은 빠르게, 되돌릴 수 없는 결정(one-way)은 신중하게. 대부분의 결정은 two-way인데 사람들은 one-way처럼 다룬다.
- #decision-making
- #tradeoff
- #leadership
dispatch — 의도 기반 라우팅 패턴
모든 사용자 메시지를 3 에이전트 경쟁으로 최적 스킬에 라우팅. 키워드 매칭이 아닌 의미론적 의도 분석.
- #claude
- #workflow
- #routing
- #ai
quality-gate — 결정론적 평가·개선 루프
모호한 품질 목표를 측정 가능한 rubric으로 바꾸고, 페르소나 평가로 채점한 뒤, 통과까지 개선·재평가하는 패턴.
- #workflow
- #verification
- #ai
- #design
결정론적 루프 — 사람 개입 없이 스스로 검증하는 작업
"잘해"는 사람이 확인해야 하지만 "A와 B가 동일한지 확인해"는 기계가 스스로 검증 가능하다. 생산성의 핵심 차이.
- #workflow
- #ai
- #verification
자라는 중5
한국어 letter-spacing — Pretendard에서 -0.025em이 상한
영문 헤딩의 -0.04em letter-spacing은 한국어에 적용하면 받침 있는 자모가 뭉친다. -0.02em ~ -0.025em이 한글 균형점.
- #typography
- #korean
- #design
- #frontend
개인 인프라 스택 — 회사 인프라 없이도 production-grade
회사 인프라 없이, 외부 API 7개를 긁어 Notion 7개에 쌓는 시스템을 신용카드 0원으로 굴리는 중. GitHub과 Notion 무료 한계를 어디까지 밀어붙일 수 있는지 직접 부딪혀 본 기록.
- #infrastructure
- #side-project
- #github
- #notion
혼자 7개 공개 API를 한 시스템에 욱여넣으며 배운 것
홈레이더를 만들며 국토부·네이버·카카오 등 공개 API 7개를 혼자 통합했다. case문 더미가 되기 직전, rate limit·재시도·boundary를 라이브러리 수준으로 끌어올린 기록.
- #api
- #integration
- #backend
- #side-project
동작하는 코드를 일부러 버린다 — spike로 먼저 배우는 법
문서가 빈약한 API를 만났다. 바로 잘 만들려는 대신 30분짜리 버릴 코드부터 짰다. 사실 하나를 확인하고, 그 코드를 버리고, 처음부터 다시 만들었다.
- #swe
- #prototyping
- #learning
코드 리뷰의 진짜 가치 — 코드보다 결정
코드 리뷰에서 가장 가치 있는 코멘트는 변수명·스타일 지적이 아니라 "이 결정의 이유는?"이다. 코드는 자명하면 충분, 결정은 자명하지 않으면 영영 잃는다.
- #code-review
- #swe
- #decision-making
새싹22
일일 카운트는 자정이 아니라 비즈니스 경계에 앵커한다 — 일일 집계·cap·랭킹의 자정 선점
하루 단위 집계·상한을 UTC나 서버 로컬 자정에 묶으면 자정 직전 항목이 다음 날 버킷을 미리 선점한다. 의미 있는 운영 경계 시각에 명시적으로 앵커한다.
- #backend
- #distributed
- #timezone
- #scheduling
죽은 재시도 인프라 — 만들어두고 연결 안 한 retry는 0번 재시도한다
재시도를 만들어두고 연결을 안 하면 0번 재시도하고, 무제한으로 풀면 폭주하고, 영구 에러까지 재시도하면 헛고생을 반복한다. 세 증상의 공통 원인은 빠진 한 조각이다.
- #reliability
- #backend
- #retry
- #automation
지표를 보기 전에 나를 빼라 — 내부 트래픽이 작은 서비스의 KPI를 오염시킨다
청첩장 사이트의 '방문 수' 셋 중 하나는 나였다. 작은 서비스의 KPI에서 측정자 자신을 먼저 빼야 진짜 사용자가 보인다.
- #metrics
- #data
- #analytics
신뢰할 수 없는 XML 파싱 — XXE·billion laughs를 DOCTYPE 거부로 막기
RSS 같은 외부 XML을 파싱할 때 DTD·외부 엔티티가 열려 있으면 XXE(파일 읽기·SSRF)와 billion laughs(엔티티 확장 DoS)에 노출된다. 가장 단순하고 확실한 방어는 DOCTYPE을 만나면 파싱을 거부하는 것.
- #security
- #xml
- #parsing
- #python
GitHub Pages에서 SPA 라우팅을 동작시키는 404 트릭
GitHub Pages는 SSR이 없어 클라이언트 라우팅 새로고침 시 404가 뜬다. public/404.html에 SPA fallback redirect를 두면 해결.
- #frontend
- #github-pages
- #routing
- #deployment
광고 지표 함정 — CTR·CVR·viewability·정산 불일치
광고주와 매체가 같은 "클릭"을 두고 싸운다. 버그가 아니라 정의 차이였고, 나는 지표를 양면 시장의 신뢰 계약으로 바꿨다.
- #advertising
- #data
- #metrics
- #backend
AI 반복 위임의 mode collapse — 출력이 한 점으로 수렴한다
AI에게 "5개 더"를 반복했더니 다섯 묶음이 다 닮아 있었다. 다양성은 모델의 기본값이 아니다 — 워크플로우로 강제해야 나온다.
- #ai
- #workflow
- #collaboration
- #content
커버리지 갭 분석 — 강한 곳 말고 빈 곳을 측정으로 찾기
사람은 잘하는 영역에 더 추가하고 빈 영역은 못 본다. 작업물의 분포를 측정하면 어디가 비었는지 객관적으로 드러난다. 테스트·콘텐츠·문서·스킬 포트폴리오 공통.
- #process
- #analysis
- #quality
- #testing
Frequency capping을 분산 환경에서 — 정확성 vs 비용
"같은 광고 하루 3번까지"가 서버 수십 대를 만나는 순간, 정확한 카운팅은 매출을 갉아먹는 병목이 된다. 광고를 망치지 않으면서 비용을 비선형으로 줄인 방법.
- #advertising
- #distributed
- #performance
- #backend
새벽 장애를 AI 페어와 7단계로 — 결정은 사람, 검증은 AI
알람이 울리면 가장 먼저 AI 세션을 연다. rollback 영향 범위부터 PR 본문까지 검증을 위임하고, 결정만 내 손에 남기는 야간 incident 워크플로우.
- #incident
- #ai
- #debugging
- #workflow
AI에게 "잘 해줘"는 통하지 않는다 — 모호함을 측정 기준으로 번역하기
AI에게 "전체적으로 개선해줘"를 던지면 매번 다른 결과가 나온다. 코드 0줄 쓰기 전에 모호한 품질 단어를 셀 수 있는 기준으로 번역하는 것 — 이게 내가 AI 위임에서 재작업을 줄이는 방식이다.
- #workflow
- #communication
- #delegation
- #quality
Plan Mode → Auto 1-shot — 재작업 30% 절감 패턴
80%를 만들고서야 "이게 아닌데"를 깨닫던 AI 코딩 루프를, 코드 0줄 상태에서 방향을 합의하고 Auto로 한 번에 구현하는 워크플로우로 바꾼 기록.
- #claude-code
- #workflow
- #productivity
같은 함정에 두 번 빠지면 체크리스트가 된다
한 번의 실수는 수정으로 끝나지만, 같은 실수가 두 번 반복되면 그건 개인의 부주의가 아니라 시스템의 공백이다. 함정의 재발 횟수에 따라 대응을 격상하는 사다리.
- #swe
- #process
- #quality
- #automation
AI 4명에게 내 시스템을 심판시켰더니, 가장 아픈 곳을 짚은 건 '나'였다
자동화 PoC를 AI 페르소나 4명에게 평가시켰다. SRE·법무·콘텐츠 전략가는 기능적 위험만 봤고, "이 시스템, 6개월 뒤에도 내가 쓸까?"를 묻는 건 본인 페르소나 한 명뿐이었다.
- #workflow
- #design-process
- #self-review
- #automation
자동화 시스템 vs 거버넌스 부담 — 숨은 trade-off
자동화는 사람 부담을 줄이려는 의도지만, 보안·품질 검증·운영 의지 같은 거버넌스 요구가 증가하면 net 부담은 늘 수 있다.
- #workflow
- #automation
- #governance
- #tradeoff
채용 담당자의 10초 — 사이트 첫 화면이 결정하는 것
86%의 채용 담당자가 포트폴리오 링크를 클릭하지만 평균 체류 시간은 1분 미만. 첫 10초에 "이 사람이 무엇을 잘하는가"가 박혀야 한다.
- #career
- #content-strategy
- #design
CodeRabbit + Cubic 이중 자동 리뷰 — 노이즈인가 신호인가
PR마다 CodeRabbit과 Cubic AI가 둘 다 리뷰를 단다. 두 자동 리뷰를 같이 쓰는 게 가치인지 노이즈인지를 며칠 써본 후의 관찰.
- #code-review
- #tools
- #automation
- #pr
GitHub Releases를 personal CDN으로 — 무료·무제한·영구
HTML 리포트에 비디오·큰 이미지가 들어갈 때 어디에 호스팅하나. GitHub Releases는 파일당 2GB·무제한 트래픽·무료. 도메인 신뢰까지 따라온다.
- #github
- #cdn
- #infrastructure
- #side-project
회사에 RFC를 던지기 전에, 나는 주말에 먼저 만들어본다
회사에서 새 기술 도입은 3주짜리 합의다. 그래서 나는 주말 학습 레포에서 먼저 만져보고, 함정을 손에 쥔 채 RFC를 쓴다.
- #learning
- #side-project
- #career
- #sandbox
학부 C/C++ 프로젝트가 6년 후에도 가르치는 것
bptree·myshell·steganography. 학부 시절 C/C++ 프로젝트가 6년 후 프론트엔드 일에 어떻게 영향을 주나. fundamentals는 framework로 못 배운다.
- #learning
- #fundamentals
- #career
- #education
서버 0대로 백엔드를 굴렸다 — 노션 DB 7개로 만든 무료 인프라
홈레이더 백엔드를 노션 DB 7개로 직접 설계했다. 서버비 0원으로 굴리며 PK도 JOIN도 없는 한계를 hotfix로 직접 넘은 기록.
- #notion
- #backend
- #side-project
- #automation
vite manualChunks — vendor와 콘텐츠를 분리해 캐시 효율 ↑
단일 청크는 작은 콘텐츠 변경에도 전체 재다운로드. vendor(거의 안 바뀜) + 콘텐츠(자주 바뀜) 분리하면 캐시 hit 비율 ↑, 첫 로드도 줄어든다.
- #build
- #vite
- #performance
- #frontend