저널

학습 로그와 데이터 인사이트, 그리고 에세이를 싣는다.

Underway

스스로 채점하는 배 TrendReport SNS, 120시간 390커밋의 출항

NIPA-Google Study Jam PBL 3기 120시간에 트렌드 수집부터 AI 영상 숏폼 게시까지 도는 파이프라인을 월 0원 인프라에 올렸다. 예측에 자동 채점을 붙였더니 모델이 아니라 재는 대상이 틀렸다고 나왔다. 영상 수에서 검색량으로 바꾸자 동전 수준을 넘어 66~78%가 됐다.

#GCP#LLM#Pipeline#Validation
Underway

다시 띄운 배 TrendReport SNS, 열흘 270커밋의 채비

교육 첫날 합류한 RAG 챗봇 팀 대신, 운영 중인 SNS에 실제로 필요한 TrendReport SNS를 1인 팀으로 다시 띄웠다. 열흘 270커밋에 생성·승인 콘솔·네 곳 게시 경로까지 이었고 병목은 만들기에서 올리기로 옮겨 갔다.

#GCP#RAG#LLM#Console
Underway

스스로를 반증한 배, 추천 엔진의 패배와 2027년 과세라는 새 항로

자기 추천 엔진을 바깥 데이터로 재 보니 공격형 −99.1% vs BTC +75.5%였다. 테스트가 260개에서 1,017개로 늘어난 두 달 동안 가장 중요한 검증이었다. 반증을 받아들여 무엇을 살지 묻던 항로를 2027년 과세 대비로 튼다.

#Verification#Data#Tax
Underway

AIB10, 6주의 침묵 뒤 3주 85커밋으로 상수예측을 넘다

커밋 0건의 6주 뒤 3주간 85커밋이 쌓였고 감성 모델이 처음으로 상수예측을 넘었다(향상 +0.286). 보내지 않은 메일을 보냈다고 말하던 화면도 고쳤다. 비어 있다시피 한 운영 DB는 전환 실패로 보지 않고 유입 부재로 판정했다.

#ML#Data#Release
Underway

81.8%가 혼자 탄 배였다, Tatispa v1.2.0~v1.2.3 나흘의 정비

두 달 만에 돌아와 나흘 동안 릴리스 넷을 냈다. 실사용 감사에서 1인 방 81.8%, 초대 성공 18.2%가 나와 초대 퍼널을 다시 깔았다. 권한 검증은 서버 규칙으로 회수했고 번들은 633KB에서 199KB로 줄였다.

#Security#Release#Accessibility
Underway

멈춘 줄 몰랐던 증시 리서치의 운항 종료 보고

마지막 자동 갱신은 7월 17일이었고 이후 49일 동안 32회 연속 실패를 아무도 몰랐다. 원 목표였던 예측의 실패를 숫자로 남기며 9월 4일 전수점검을 끝으로 65일의 항해를 닫는다.

#Retrospective#Automation#Statistics
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

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

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

#Data#Statistics#Research
Training

AI와 코드로 빚은 3D 아이콘 15종, 파이프라인은 남고 품질은 미완

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

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

코드로만 빚어 색을 쪼개는 유리 큐브

레퍼런스 이미지 한 장에서 출발해 모델링 UI를 열지 않고 bpy + Cycles 코드만으로 색분산 유리 큐브 필드를 재현했다. 3D 아이콘 파이프라인에서 파생된 랩 작품이다. 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 갑판으로 옮겨 싣고 운항을 끝내다

widigg의 단독 항해는 3월 13일 첫 커밋부터 7월 4일 마지막 커밋까지 114일, 81번의 기록으로 끝났다. 사흘 뒤 백서 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

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

백서 학습 서비스에 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.1.0에서 공개로 전환해 이제 누구나 스토어에서 Tatispa를 찾을 수 있다. v1.0.0은 미등록(unlisted)으로 조용히 띄워 링크를 아는 사람만 태웠다.

#Release#Chrome Extension
Underway

파이프라인·Cloud Run 배포·규정 인과 분석을 하루에 달린 전력 항해

하루 19커밋으로 수집·분석·시각화·예측 파이프라인을 세우고 OpenF1 실시간 해설과 Docker+Cloud Run 배포를 붙였다. 규정이 경기에 미친 영향은 diff 엔진과 인과 추정으로 파고들었다.

#Data#Deployment
Underway

v1.1.0을 준비하며 웹으로 항로를 뻗고 플립 시계와 씨름한 하루

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

#Release#UI
Project

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

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

#Data#ML
Underway

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

열흘 동안 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으로 데이터 시각화하기

매출 데이터로 13가지 그래프를 실습하며 명확성·일관성·맥락이라는 시각화 원칙을 익혔다. Line·Bar·Pie·Histogram·Box·Scatter·Heatmap에 Twin Axis·Log Scale·주석까지 다뤘다.

#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

Sakila로 SELECT와 JOIN을 익힌 SQL 첫걸음

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

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

Blender로 만든 3D 모델을 이미지나 영상 대신 3D 그대로 이 블로그에 올려 three.js 뷰어로 직접 돌려보게 했다. .blend는 애니메이션째 glTF로 내보냈고 Draco로 12MB를 629KB까지 줄였다.

#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

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

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

#UX#Service Design#AI
Project

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

2015–2016년 3인 남짓의 팀에서 모바일 게임의 UI를 만들었다. 게임은 테스트 빌드에서 멈췄지만 UI 시스템·상태 설계·리텐션 흐름을 손으로 익혔다. 피드백이 갈릴 때 내 판단을 검증하고 싶어 UX를 배우러 간 출발점이기도 하다.

#Game#UI