5월, 코드와 현실 사이에서 성장, 좌절, 그리고 통찰
2025년 5월 회고록: 일상 속 성찰과 아이디어 정리
프롤로그: 학문과 덕질, 그리고 일상의 교차점
5월은 학문적 호기심과 오타쿠적 취향이 대담하게 융합된 달이었다. ISYE6501 중간고사 대비로 머신러닝 모델을 정복하는 한편, 디지털 아트와 BL 소설 세계에 분류 알고리즘을 접목하는 실험을 감행했다. 일상적 기록과 성찰, 그리고 창의적 탈출구를 찾으려는 시도가 뒤섞였다.
5월은 원래 꽃이 피고, 사람들은 괜히 들떠서 산책이라도 나가야 할 것 같은 계절이다. 하지만 현실은, 뭐랄까. 꽃은 피는데 내 통장은 시들고, 세상은 시끄러운데 내 머릿속은 더 시끄럽다.
이런 와중에 나는 또다시 코드와 싸우고, 정치 뉴스를 보며 한숨을 쉬고, 정신 건강을 챙긴답시고 픽션이나 쓰고 있었다.
이쯤 되면, ‘성장’이라는 단어가 과연 나한테 어울리는지 의심스럽지 않겠는가.
flowchart LR
A[Remotion] -- "영상 합성" --> B[Shader]
B -- "비주얼 효과" --> C[TouchDesigner]
C -- "데이터/컨트롤" --> A
A -.-> D[나의 멘탈]
D -- "좌절" --> A
5월의 이중 궤도
├── Academic Track: ML 모델 기초이론 숙지 후 시험 준비 │ └── ARIMA → CART → … → SVM ├── Personal Track: 일상 성찰 및 아이디어 정리 │ └── 매일 노트 → 생각 정리 → 미래 계획 └── Synergy: 학습이 성찰을, 성찰이 학습을 도움
프로젝트와 성장, 그리고 좌절의 미학
기술적 도전과 창의적 탈출구
머신러닝 모델 암기
ISYE6501 중간고사를 대비하며 ARIMA, CART, SVM, PCA 등 13가지 머신러닝 모델을 외웠다.
데이터란 의심과 검증의 연속임을 다시 확인했다. 이름만 들어도 머리가 아파온다.
“None of the other choices”라는 함정 문제에 당하지 않으려면,
결국 모든 선택지를 의심해야한다.
데이터란 의심과 검증의 연속이다.
동시에, 머신러닝의 ‘분류(Classification)’ 개념을 디지털 아트와 BL 소설 세계에 비유하여 학습하는 콘텐츠를 기획했다.
BL 소설의 문체와 스토리 특징을 분석해 장르 분류, 독자층 예측, 시각적 테마 자동 변형 등 다양한 실험을 구상했다.
“None of the other choices”라는 함정 문제에 당하지 않으려면, 모든 선택지를 의심해야 한다.
대학원 데이터 마이닝 수업 프로젝트
줄노트 그림 스캔본에서 줄노트 부분을 추출해 픽셀 데이터로 전통적 머신러닝과 CNN 성능을 비교했다.
도메인 지식과 데이터 품질의 중요성을 실감했다.
데이터 아날리틱스 수강하며 등록금을 녹여 만든 강의 시작
KR-making-first-time-youtube-vid-with-remotion 에 어떻게 제작을 했는지 얼추 테크니컬한 면모를 구술하였다.
창의적 기술과 정신 건강의 줄다리기
코딩, 팬픽션, 요리…
이 모든 게 정신 건강을 위한 ‘창의적 탈출구’라고들 한다.
하지만 현실은, 코딩하다가 빡치면 팬픽션을 쓰고, 팬픽션 쓰다가 허기지면 요리를 한다. 이쯤 되면, 내가 창의적인 건지, 그냥 산만한 건지 헷갈린다.
Remotion, Shader, Touch Designer 통합 시도
KR-how-i-make-a-youtube-series-with-remotion-dynamic-srt-script-setup-exp-likejennie 에 테크니컬한 제작 과정을 얼추 구술하였다. KR-remotion-and-shader
처음으로 시도한 댄스커버 + 터치 디자이너
[[ KR-touchdesigner-start ]] [[ KR-web-animation-gsap-scrollax ]]
Remotion과 Shader, Touch Designer를 엮어서 유튜브 영상을 만들겠다고 덤볐다. 기술적 통합? 실제로는 각 툴의 문서와 버그, 그리고 내 멘탈이 삼각관계를 이루며 서로를 갉아먹는 구조였다.
이쯤에서 깨달은 점?
flowchart LR
A[영상 자동화 프레임워크] -- "영상 합성" --> B[Shader]
B -- "비주얼 효과" --> C[TouchDesigner]
C -- "데이터/컨트롤" --> A
A -.-> D[나의 멘탈]
D -- "좌절" --> A
기술은 멋있어 보이지만, 실제로는 ‘이거 왜 안 되지?’라는 질문을 하루에 30번쯤 반복하게 만든다.
답은 대부분 문서에 없거나, 이슈에 묻혀 있다.
그리고 그 답은 대부분 ‘문서에 없다’거나 ‘깃허브 이슈에 묻혀 있다’는 사실이다. 이쯤 되면, 내가 코딩을 하는 건지, 코딩이 나를 하는 건지 헷갈릴 지경이다.
일상적 기록과 성찰, 그리고 무력감
매일 노트를 쓰고, 아이디어를 정리하고, 프로젝트의 진행 상황을 기록했다.
이게 다 자기계발의 일환이라고들 한다.
하지만 솔직히 말해서, ‘기록’이라는 건 때로는 내 무력감도 발자취도, 성취도 더 또렷하게 보여주는 증거물이 되기도 한다.
| 날짜 | 기록 내용 | 감정 상태 |
|---|---|---|
| 2025-05-10 | Remotion 영상 제작 삽질 | 좌절 |
| 2025-05-12 | 정치 뉴스 정리 | 분노 |
| 2025-05-30 | 머신러닝 모델 정리 | 허무 |
이렇게 표로 정리해놓고 보니 참 데이터셋의 한 행(row)처럼 느껴진다.
‘성장’이라는 게 결국, 좌절과 분노와 허무를 얼마나 잘 정제해서 다음 행으로 넘기느냐의 문제 아닐까 싶다.
UI 개선이라는 끝없는 여정
챌린지 큐레이션 서브 페이지 구축
그간 디버깅 하느라 막혔던 것들 다 별개의 컴포넌트로 분리해서 이제 컴포넌트 별로 day ui 챌린지 플랜을 짜고 디버깅하며 챌린지를 이어나가기 시작했다.
얼추 Day 58까지 진행했다.
https://antiperfectclub.github.io/100daysofui/#/100daylogs/Days51to60/Day54 https://antiperfectclub.github.io/100daysofuijs/#/100daylogs
이 달은 좀 대대적으로 홈페이지 컴포넌트 업데이트 및 이런저런 과정들을 진행해 보았다.
메인 페이지 리디자인: 완벽주의 몰입의 함정
4월 말부터는 포트폴리오 사이트의 UI 개선에 몰두했다… 거의 매일 밤 3시까지 픽셀 하나하나를 조정하고 있었다
/* 이런 미세 조정을 수십 번 반복했다 */
.hero-section {
/* 첫 번째 시도 */
padding: 120px 0;
/* 두 번째 시도 */
padding: 100px 0; /* 너무 넓나? */
/* 세 번째 시도 */
padding: 110px 0; /* 이것도 애매하고... */
/* 최종 결정 */
padding: 105px 0; /* 완벽하다! ...잠깐, 모바일에서는? */
}
뉴 글리치 히어로 배너: 기술적 자아도취
마키 애니메이션과 글리치 효과를 조합한 히어로 배너를 만들었다. 기술적으로는 만족스러웠지만…
// 자아도취용 코드
const GlitchEffect = () => {
const [glitchActive, setGlitchActive] = useState(false);
useEffect(() => {
const interval = setInterval(() => {
setGlitchActive(true);
setTimeout(() => setGlitchActive(false), 200);
}, 3000);
return () => clearInterval(interval);
}, []);
return (
<div className={`hero-banner ${glitchActive ? 'glitch' : ''}`}>
<marquee className="retro-text">
CYBERPUNK DEVELOPER VIBES
</marquee>
</div>
);
};
문제: 사용자들이 “이게 뭐하는 건가요?“라고 물어봤다.
깨달음: 멋있어 보이는 것과 유용한 것은 다르다.
GSAP 애니메이션의 복잡성
레퍼런스 사이트의 멋진 3D 그리드 애니메이션을 재구현하려 했다.
// 원본 GSAP 코드 (동작함)
gsap.timeline({
scrollTrigger: {
trigger: ".gallery",
start: "top bottom",
end: "bottom top",
scrub: true,
onUpdate: (self) => {
// 복잡한 3D 변형 로직
gsap.set(".grid-item", {
rotationX: self.progress * 360,
z: self.progress * 100,
});
}
}
});
// 내가 만든 React 버전 (동작 안 함)
const AnimationComponent = () => {
const [progress, setProgress] = useState(0);
useEffect(() => {
// ScrollTrigger 설정 시도
// 하지만 이미지 로딩 타이밍 문제로 애니메이션 미작동
}, []);
return (
<div className="gallery">
{/* 이미지들이 로드되지 않아서 애니메이션 실행 안 됨 */}
</div>
);
};
레퍼런스를 따라하는 것과 이해하는 것은 다르다. “동작 안 함”이라는 네 글자, 이보다 더 허무한 결론이 또 있을까.
처음으로 그냥 아무말해보는 초반 작업 시도한 유튜브, 그리고 좌절
기대했던 것
자연스러운 설명 명확한 음성 흥미로운 콘텐츠 편집 실력 발휘
실제로 일어난 것
카메라 공포증 더듬더듬한 말 “어… 음… 그…” 남발 20번의 재촬영 후 포기
배운 점: 개발 실력과 콘텐츠 제작 능력은 완전히 다른 영역이다.
음성 편집의 복잡성
Logic Pro를 사용해서 보코더 오디오 편집을 시도했다. 코딩은 할 줄 알지만, 오디오 편집은 완전히 다른 세계였다.
24년 12월에 벌어진 비상계엄 이후 5월 30일까지의 한국 정치사 정리 기사 발행
2월 말 이후 멈춰있던 비상계엄 뉴스들 5월 말까지 정리하였다. 이재명 후보의 당선을 빈다. 아무리 그래도 윤석열은 아니잖아.
윤석열은 아니잖아, 라는 말에 굳이 부연설명은 필요 없을 것이다.
정치적 무력감이란, 아무리 떠들어도 바뀌지 않는 현실을 마주할 때 느끼는 그 특유의 씁쓸함이다. 비상계엄이 발표된 후 벌어진 지난 6개월간의 일을 정리하는 기사들을 최종 마무리했다.
KR-Memo-Map-of-Contents-timeline-event-log-since-coup-24dec
결론: 성장, 좌절, 그리고 건조한 희망
5월은 성장과 좌절, 그리고 건조하고 냉소적인 희망이 뒤섞인 한 달이었다.
기록을 남기고, 기술을 배우고, 세상을 관찰하는 과정에서
나는 또 한 번, ‘이만큼이나 버텼다’는 사실에 위안을 삼는다.
그리고 내일도, 똑같은 좌절과 희망을 반복하겠지.
“성장은 좌절의 반복 위에 쌓이는 법이다. 그리고 그 좌절을 기록하고 내가 이뤄온 것들을 스스로 확인하며 북돋자“
다음 단계 구상:
기획한 콘텐츠를 실제 분류 모델 구축으로 발전시켜, 특정 BL 소설의 텍스트 데이터를 입력하면 어떤 독자층에게 어필할지 예측하거나, 해당 소설의 ‘탐미성’ 또는 ‘퇴폐성’ 점수를 부여하는 등 구체적인 예측 시스템을 데모로 보여주는 프로젝트로 확장하는 것 혹은 이를 통해 개념 설명에 더해 실제 적용 사례를 보여주는 걸 구상해보면 어떨까?