Captain's Log

03 / Journal

Observatory

학습 로그, 데이터 인사이트, 그리고 에세이.

증시 리포트15파이프라인이 자동 발행
Project

팝콘톡 진수 — 2주짜리 항해에서 내가 맡은 두 갑판

5인 팀 'hope'로 2주간 NCP 위에 영화 추천 AI 에이전트 '팝콘톡'을 올려 우수상을 받았다. 나는 어드민 콘솔(FE·BE)과 리뷰 데이터 수집을 맡았다 — 명세를 먼저 쓰고 CI로 지키게 했고, 관람평 12만 건을 모아 HyperCLOVA X로 회원 리뷰로 바꿨다.

#NCP#CLOVA#Admin#Data Pipeline
Training

빌린 바다에서 배를 짓는다 — NCP 인프라와 CLOVA, 첫 주의 훈련

NIPA·네이버클라우드 Sovereign AI PBL 과정 3주 중 첫 주. VPC에서 모니터링까지 인프라를 손으로 깔고, 플레이그라운드에서 멀티 에이전트까지 CLOVA를 훑었다. 모의시험 72점이 알려준 것은 '만들 줄 아는 것'과 '아는 것'이 다르다는 사실이었다.

#Cloud#NCP#CLOVA#LangGraph
Underway

미래 날짜로 출항한 리포트 — 저자가 둘이면 배가 흔들린다

7월이 절반밖에 안 지났는데 '2026년 07월 증시 월간 리포트'가 미래 날짜(7/31)를 달고 공개돼 있었다. 내가 테스트로 돌린 산출물을 커밋했고, 15분 뒤 파이프라인이 주워서 게시했다. 게시자는 파일 존재만 믿었다. 게시 경계·커밋 경계·푸시 경계, 세 겹의 관문을 세웠다 — 그리고 첫 진단이 틀렸다는 기록도 남긴다.

#Automation#CI#Postmortem
Underway

무료 회원제로 전환 — 경계는 파일로 가른다

리포트 완성도가 올라와 무료 회원제로 전환했다. 691줄 f-string 하나가 화면 전부였는데 이제 Next.js가 그리고 파이썬은 파이프라인으로 남는다. 회원 경계는 CSS가 아니라 파일로 가른다 — server-only가 진짜 방어선이다. 그리고 배포가 일곱 번 막혔는데, 다섯이 저장소 밖에 있었다.

#Auth#Next.js#Deploy
Underway

세 번 틀린 뒤에 얻은 답 — 실적발표일, 종목은 요동친다

지수에서는 12개 카테고리 전부 검정력 미달이라 판정조차 못 했다. 종목으로 내려가니 신호가 잡음보다 컸다 — 9종목 중 8종목이 실적발표일에 평소의 1.6~6.3배로 요동친다(다중비교 보정 후). 이 저장소가 보정을 뚫은 최초의 결과다. 그런데 여기 오기까지 세 번 틀렸고, 매번 결과가 화려했다.

#Data#Statistics#Research
Training

코드로 빚은 3D 아이콘 15종 — AI와 함께 판 파이프라인, 그리고 미완의 품질

디자인 시스템에 넣을 3D 아이콘 15종을 AI 에이전트와 함께 전부 코드로 만들었다. bpy 프로시저럴 모델링부터 Cycles 프리렌더, join()의 좌표계 함정과 오일러 순서의 배신까지 — 시행착오의 전 과정을 기록한다. 결론부터: 품질이 실사용 기준에 못 미쳐 배치는 보류했다. 대신 파이프라인은 남았고, AI의 발전에 맞춰 계속 갱신해 실사용까지 끌고 갈 계획이다.

#AI#Blender#3D#Three.js#Design System
Training

색을 쪼개는 유리 큐브 — 코드로만 빚은 작품

3D 아이콘 파이프라인에서 파생된 랩 작품. 레퍼런스 이미지 한 장에서 출발해, 모델링 UI를 열지 않고 bpy + Cycles 코드만으로 색분산 유리 큐브 필드를 재현했다. Dispersion 입력이 없는 유리를 Glass BSDF 3개의 채널별 IOR로 속이는 법, 그리고 조명 시행착오 4회의 기록.

#AI#Blender#3D#Creative Coding
Training

그리드 필드 스터디 — @seohyo 작가님 오마주

@seohyo 작가님의 그리드 기반 제너러티브 애니메이션을 분석하고 바닐라 Canvas 2D로 재현한 스터디. 시간축을 가진 노이즈 필드를 밴드로 양자화하고, 각 밴드에 제한된 글리프 어휘와 4색 팔레트를 매핑하면 등고선을 따라 도넛 사슬이 나타난다.

#Creative Coding#Generative Art#Canvas
Underway

시세를 쓰던 배가, 엔진을 만들다 — 거래소 코어로 키를 돌리다

COCOMSS는 거래소 시세를 '소비'만 하던 배였다. 이번 항해에서 거래소 백엔드의 가장 어려운 정확성 문제로 키를 돌렸다 — 가격-시간 우선순위 호가창과 복식부기 원장을 직접 구현하고, Rust로 매칭 지연을 나노초까지 낮추고, HMAC 서명·정산·커스터디 상태머신을 샌드박스로 세웠다. 그리고 실자금·규제는 코드 밖임을 정직하게 남겼다.

#Exchange#Rust#Matching Engine#Backend
Project

네 개의 프로젝트를 하나로 — COCOMSS라는 여정

카드 추천·백서 학습(widigg)·설명가능 AI(TrustFin)·증시 리서치 — 흩어져 있던 네 실험을 '투자 전에 배우고 판단한다'는 하나의 제품 논리로 합쳐 COCOMSS를 만들었다. 기능을 늘리는 것과 이야기를 만드는 것은 다른 일이었다.

#Fintech#Crypto#XAI#Full-stack
Underway

운항 종료 — widigg의 화물을 COCOMSS 갑판으로 옮겨 싣다

3월 13일 첫 커밋에서 7월 4일 마지막 커밋까지 114일, 81번의 기록으로 widigg의 단독 항해는 끝났다. 사흘 뒤 백서 45편·Gemini Q&A·퀴즈·Base 온체인 배지가 통째로 COCOMSS의 /learn으로 옮겨졌고, 이식은 옮기는 순간이 아니라 그 뒤 반나절 동안 드러난 이음매에서 끝났다.

#Migration#Web3#Design System
Underway

증시 리서치, 클라우드로 출항 — 매일 스스로 도는 파이프라인

노트북 위에서만 돌던 증시 분석을 클라우드로 띄웠다. 로컬 crontab을 GitHub Actions로 옮겨 평일 18:00 무인 실행하고, 결과를 저장소에 자동 커밋하면 Vercel이 현황판·대시보드를 재배포한다. Mac 전원과 무관하게 매일 도는 배가 됐다.

#Data#Automation#CI
Project

감으로 말하던 것을 숫자로 — 한국 증시 이벤트 스터디 파이프라인

'관세 때문에 주가가 떨어졌다'는 말을 실제로 얼마나·며칠이나 움직였는지 숫자로 검증하는 파이프라인을 만들었다. 핵심은 예측 모델이 아니라, 시장 전체의 등락을 걷어내고 사건이 만든 초과등락만 남기는 '통제'였다.

#Data#Event Study#Quant
Underway

온체인 입항 — 학습 수료를 NFT 배지로, Base 메인넷 발행

백서 학습 서비스에 Web3 돛을 올렸다. 퀴즈 만점 시 ERC-721 배지를 Base 메인넷에 실제 민팅 — 부정 발급을 막는 EIP-712 서버 검증까지. 다른 프로젝트(project-EF)의 지갑·Firebase 모듈을 이식해 학습을 온체인 인증으로 이었다.

#Web3#NFT#Smart Contract#Base
Underway

크롬 웹 스토어 입항 — AIB10 확장 프로그램 v1.0.0 공개

웹 서비스로 운항하던 AIB10이 크롬 확장 프로그램이라는 두 번째 돛을 올렸다. 검토 제출 → 심사 통과 → 공개 게시까지의 짧은 기록.

#Release#Chrome Extension
Training

같은 뼈대, 반대의 선택 — F1과 콘텐츠, 두 데이터 파이프라인 비교

F1 대시보드와 문화 콘텐츠 프로젝트는 같은 '수집→전처리→분석→시각화' 뼈대를 쓰지만, 저장·전처리·분석·시각화가 단계마다 반대로 갈렸다. 데이터의 모양과 프로젝트의 목표가 어떻게 기술 선택을 결정하는지, 이론과 실무 양쪽에서 복기한다.

#Data#Architecture
Project

문화 콘텐츠를 데이터로 — 수집부터 추천까지 파이프라인 만들기

영화 데이터를 모아 정리하고, 그 위에 추천·트렌드·시대별·인물별 분석을 올렸다. 핵심은 화려한 모델이 아니라 '같은 인물을 하나로 합치는' 지루한 전처리와, 분야를 넘어 재사용되는 데이터 모델이었다.

#Data#Recommendation
Underway

미등록에서 공개로 — Tatispa v1.1.0

v1.0.0은 미등록(unlisted)으로 조용히 띄워 링크를 아는 사람만 태웠다. v1.1.0에서 공개로 전환 — 이제 누구나 스토어에서 Tatispa를 찾을 수 있다.

#Release#Chrome Extension
Underway

하루의 전력 항해 — 파이프라인에서 Cloud Run 배포, 규정 인과 분석까지

하루 19커밋의 항해 기록. 수집→분석→시각화→예측 파이프라인 구축, OpenF1 실시간 해설, Docker+Cloud Run 배포, 그리고 '규정이 경기에 미친 영향'을 파고든 diff 엔진과 인과 추정까지.

#Data#Deployment
Underway

웹으로 뻗은 항로, 그리고 플립 시계와 씨름한 하루 — v1.1.0 준비

확장과 같은 Firebase 백엔드를 쓰는 웹 버전(tatispa.web.app)을 띄우고, XSS·CSP·Firestore 규칙을 정비하고, split-flap 시계 하나에 커밋 스무 개를 쏟아부은 뒤 v1.1.0으로 스토어 등록 자료까지 실은 이틀의 기록.

#Release#UI
Project

검증이 통찰을 지킨다 — F1 개인 프로젝트 회고

기획자로서 데이터·ML·배포까지 직접 만든 F1 대시보드. 화려한 결과보다, 검증 과정에서 잡은 '버그처럼 보인 진실'들이 더 많은 것을 가르쳐 줬다.

#Data#ML
Underway

백서에 AI를 태우다 — Q&A·퀴즈, 그리고 저작권 항로 조정

Gemini 기반 근거 인용 Q&A와 이해도 퀴즈를 올리고, 저작권·광고 정책에 맞춰 항로를 조정하고, RWA·리퀴드 스테이킹 카테고리로 해역을 넓힌 열흘간의 기록.

#AI#Policy
Underway

감성 모델 대수리 — 데이터 누수를 찾아서, 그리고 확장의 씨앗

감성 분석 모델에서 데이터 누수·도메인 불일치·과적합을 발견해 선체를 뜯어고쳤다. Gemini 자동 라벨링으로 실뉴스 데이터셋을 새로 깔고, 재학습을 CI로 자동화하고, 크롬 확장이라는 새 돛의 목재까지 실었다.

#ML#Data
Project

우리는 각자의 경계를 허물기로 했다 — 구름톤 12기 DEEP DIVE 해커톤 회고

구름톤 12기 DEEP DIVE 해커톤에 12조 PM 겸 프론트엔드로 참여해 만든 CoChat 회고. 수상은 못 했지만, 오래 품어온 아이디어를 단시간에 프로덕트로 만든 경험과 시간·역할 배분에 대한 배움을 남긴다.

#Hackathon#구름톤#PM#Frontend#CoChat
Training

네이버 API로 뉴스 수집 — 함수화와 모듈화

네이버 검색 API로 핀테크 뉴스 제목을 수집해 MySQL과 CSV에 저장하고, 반복되는 코드를 함수화·모듈화(myfunc)로 정리한 기록. 수집 스크립트를 '재사용 가능한 도구'로 만들기.

#Scraping#API
Training

분류 모델 입문 — 의사결정나무에서 앙상블까지

대출 승인 예측으로 의사결정나무를 학습·해석하고, 텔코 고객이탈 예측으로 인코딩·스케일링·배깅/부스팅 앙상블까지 — 첫 분류 모델링 파이프라인을 밟은 기록.

#ML#Classification
Training

데이터 전처리 — 결측값 처리와 얕은/깊은 복사

Kaggle House Prices 데이터로 결측값을 수치형/범주형에 맞게 다르게 채우고, 얕은 복사와 깊은 복사의 차이를 직접 확인하며 전처리 파이프라인을 구성한 기록.

#Data#Preprocessing
Training

이상치를 어떻게 다룰까 — 데이터 척도와 IQR

House Prices 데이터에서 Boxplot·Scatter로 이상치를 눈으로 찾고, IQR로 경계를 계산해 '제거할 것인가 클리핑할 것인가'를 판단하며 처리 전/후 분포를 비교한 기록.

#Data#Preprocessing
Training

탐색적 데이터 분석 — House Prices로 배우는 EDA

구조 파악부터 결측 탐색, 수치형/범주형 분석, 타깃 분포와 로그 변환, 상관 히트맵까지 — House Prices 데이터로 EDA의 전체 흐름을 밟고 인사이트를 서술로 정리한 기록.

#Data#EDA
Training

데이터를 보이게 만들기 — matplotlib·seaborn 시각화

Line·Bar·Pie·Histogram·Box·Scatter·Heatmap부터 Twin Axis·Log Scale·주석까지 13가지 그래프를 매출 데이터로 실습하며, '명확성·일관성·맥락'의 시각화 원칙을 익힌 기록.

#Data#Visualization
Training

Selenium으로 환율 수집 자동화 — 예외 처리와 DB 적재

Selenium으로 하나은행 환율을 수집하며 공휴일·오류 상황을 방어하고, 외부 dbio 모듈로 DB에 적재하는 과정을 정리한 기록. '오류를 만나며 완성해가는' 크롤링의 현실.

#Scraping#Selenium
Training

분석의 뼈대 — NumPy와 Pandas

NumPy 100문제로 ndarray·shape·슬라이싱·브로드캐스팅을, Pandas 문제로 DataFrame 조작·조건 필터링·문자열 메서드를 익히며 데이터 분석의 기본 도구를 손에 붙인 기록.

#Data#Pandas
Training

딕셔너리와 흐름 제어 — 조건문·반복문 실전

딕셔너리에 if·for를 결합해 '이름을 입력하면 가격을 알려주는' 실전 로직을 만들며, 자료구조와 흐름 제어가 만나는 지점을 연습한 기록.

#Python#Fundamentals
Training

데이터 수집 첫걸음 — 공공 API와 크롤링, 그리고 DB 저장

소상공인 상권정보 API로 치킨집 데이터를 수집하고, 하나은행 환율을 read_html로 크롤링해 자동화하고, Selenium+DB까지 — 데이터를 '가져와서 쌓는' 파이프라인의 첫 경험.

#Scraping#API
Training

클래스로 배우는 객체지향 — 상태와 행동을 묶다

Person·BankAccount·Student 같은 예제로 클래스·생성자·메서드·인스턴스 변수를 익히며, 데이터(상태)와 기능(행동)을 하나로 묶는 객체지향의 감각을 잡은 기록.

#Python#OOP
Training

파이썬 기초 다지기 — 자료형부터 함수·예외처리까지

출력·자료형·연산자부터 리스트·딕셔너리, 함수와 예외 처리, 환경변수 관리와 JSON 다루기까지 — 파이썬의 기본기를 문제 풀이로 다진 기록.

#Python#Fundamentals
Training

SQL 첫걸음 — Sakila로 배우는 SELECT부터 JOIN까지

MySQL 예제 DB Sakila로 조회(SELECT)의 전 범위를 직접 쿼리하며 익힌 기록 — 조건·연산자·BETWEEN·IN·LIKE·NULL부터 정렬·집계·GROUP BY·HAVING, 그리고 여러 테이블을 잇는 JOIN까지.

#SQL#Database
Training

지도 위의 핀 하나 — POI 마커를 웹 3D로 옮기기

TINA 로고 토큰이 박힌 3D 위치 핀(POI) 모델을 웹 뷰어로 게시한 두 번째 기록. 이번 관문은 거대한 작업 씬에서 히어로 오브젝트만 추려내는 것, 그리고 glTF가 실어주지 않는 절차적 재질의 색을 살려내는 것이었다.

#Blender#3D#Three.js
Training

Blender 모델을 웹에서 돌려보기 — glTF, Draco, three.js

Blender로 만든 3D 모델을 이미지나 영상이 아니라 '진짜 3D'로 게시하고 싶었다. .blend를 애니메이션째 glTF로 내보내고, Draco로 12MB를 629KB까지 줄이고, three.js 뷰어로 이 블로그 안에서 직접 돌려보게 만든 기록.

#Blender#3D#Three.js#Creative Coding
Training

SVG로 만든 hero 모션그래픽 연습 — 별과 정칠각형

Heptone 재직 시절, 회사 홈페이지 hero 영역에 넣을 코드 기반 모션그래픽이 필요해 만든 두 개의 SVG 연습. 손으로 좌표를 찍은 별에서 시작해, 삼각함수로 기하를 생성하는 정칠각형까지.

#SVG#Motion#Creative Coding
Training

도형 셋과 물방울 — Web3 애니메이션 스터디를 웹 3D로

콘·큐브·구 세 도형이 물방울 사이에 떠 있는 미니멀 애니메이션 스터디를 웹 뷰어로 게시한 기록. 이번 편의 관문은 하나의 절차적 재질이 오브젝트마다 다른 색을 내는 트릭을 웹으로 옮기는 것이었다.

#Blender#3D#Three.js
Research

2024년 Web3 UX에서 반복되는 5가지 패턴

1년간 10개 Web3 서비스를 분석하며 발견한 반복 패턴. 문제보다 해결책이 먼저 등장하는 구조적 이유.

#Web3#UX#Pattern
Essay

캡틴스 로그를 시작한 이유

포트폴리오를 단순한 작업물 모음이 아닌, 항해의 기록으로 만들고 싶었다.

#Design#Portfolio
Essay

기획은 항해다 — 불확실성을 다루는 방법

정답을 모르는 상태에서 결정을 내려야 할 때, 기획자는 무엇에 의지해야 하는가.

#Planning#Thinking
Training

틴더 역기획 — 소셜 디스커버리 앱 분해하기

완성된 프로덕트에서 거꾸로 고객가치·비즈니스 모델·핵심 플로우·추정 메트릭을 추론하고 개선안까지 도출한 역기획 연습. 대상은 매치그룹의 소셜 디스커버리 앱 틴더.

#PM#역기획#Tinder#Product Teardown
Training

COACH — 열정을 돕는 페이스메이커, 나의 첫 UX 프로젝트

라이트브레인 UX 아카데미 5기 오픈프로젝트 — [AI × Smartphone × 1인가구]를 주제로, 자기계발을 이어가도록 동기를 부여하는 AI 코치 'COACH'를 설계한 기록. 처음으로 받은 UX 교육이자, 6인 팀으로 기수 우수팀에 선정된 프로젝트.

#UX#Service Design#AI
Project

만들다 멈춘 게임 — 나를 UX로 이끈 1년 2개월

2015–2016년, 3인 남짓의 팀에서 만든 모바일 게임의 UI. 테스트 빌드에서 멈췄지만 UI 시스템·상태 설계·리텐션 흐름을 손으로 익혔고, 갈린 피드백 앞에서 내 판단을 검증하려 UX를 배우러 간 출발점이 된 프로젝트.

#Game#UI