2021년 회고 / 2022년 계획
02 Jan 20222020년에 시작된 COVID-19는 2021년에 잠잠해지기는 커녕 확산되어 우리들의 일상 생활을 더욱 힘들게 했다. 그러나 백신 접종이 본격적으로 시작되면서 조금씩 진정되지 않을까 기대하고 있다. 내년에는 회복되었으면 하는 바람이다. 올해도 여러가지 일이 있었는데 그 중에는 인생의 전환점을 맞게된 계기도 있다. 하나씩 이야기해보자.
1월 - 넥슨 5년 근속 감사패
2015년 9월, 넥슨에 전문연구요원으로 입사해 3년 동안 복무했다. 대체 복무를 하면서 많은 것들을 배울 수 있었고 좋은 팀원들 덕분에 짧은 기간에 비약적으로 성장할 수 있었다. 그래서 복무가 끝난 뒤에도 계속 다니게 되었고 시나브로 다닌 지도 5년이 되어 근속 감사패를 받게 되었다. 마영전 클라이언트유닛팀에서 5년 동안 근무할 수 있어서 행복했고 앞으로도 팀원들과 함께 멋진 작업들을 해내고 싶다는 생각이 들었다. (그 일이 일어나기 전까지는 말이다.)
2월 - 공기청정기 선물
1월에 부모님께서 집에 오신 적이 있는데, 12월에 샀던 공기청정기 덕분에 숨쉬기가 편해졌다고 본가에도 있으면 좋겠다고 이야기하신 적이 있다. 그리고 본가에 설치할 공기청정기 2대를 샀다. 20대까지는 부모님께 제대로 선물도 못해드리고 스스로 독립하는 데 시간을 보냈다면, 30대인 지금은 어느 정도 여유도 생겨서 조금이나마 보답하는 시간을 보내고 있다. 이렇게 효도 1스택을 추가해서 기분이 좋다. 감사합니다, 부모님.
2월 - [슬기로운 커뮤니티 생활] Microsoft MVP
2020년 11월에 소프트웨어 아카데미와 함께 촬영했던 Microsoft MVP와 Student Ambassador 소개 영상이 공개되었다. Olivia Ha님과 같이 진행했는데 영상이 잘 나와서 뿌듯했다.
영상 주소 : https://www.youtube.com/watch?v=2FR-LBuIn0s
3월 - 새로운 물리 엔진 업데이트
넥슨에서 ‘마영전 클라이언트유닛’ 팀에서만 6년 가까이 일을 했는데, 전반부는 게임 플레이 프로그래머로 신규 컨텐츠 작업, 버그 수정 등을 위주로 작업했다면 후반부는 게임 엔진 프로그래머로 64비트 클라이언트를 지원하기 위해 반드시 선행되어야 하는 작업이었던 “새로운 물리 엔진” 구현 작업을 담당했다. 처음에 아무 것도 없는 상태에서 시작할 때는 막막했지만 인터넷에 여러 정보를 찾아가며 하나씩 구현해 3~4년 만에 빛을 보게 되었다. 패치 노트에는 “물리 엔진이 PhysX로 교체되었습니다.”라고 나온 1줄이 전부이지만, 이를 위해 몇 년 동안 고생했다는 점을 알아주셨으면 좋겠다. 새로운 물리 엔진 작업을 자세히 이야기하기엔 너무 길어길 거 같아 따로 써 볼 생각이다. 개인적으로는 NDC에서 이 주제로 발표했으면 좋겠다는 생각이 있었지만, 패치 일정으로 인해 하지 못해 아쉽다.
패치 노트 : https://heroes.nexon.com/news/update/view?postno=961
3월 - 생일 기념 신라호텔 휴가
3월 초에 회사에서 바쁜 나날을 보내고 잠깐이지만 신라호텔에서 생일을 대신한 휴가를 보내고 있다. 혼자 가기는 아까워서 주변에 쉼표가 필요한 사람들끼리 가게 되었는데 오랜만에 이야기꽃도 피워보고 맛있는 음식도 먹으며 재충전의 시간을 보냈다.
3월 - KAIST Include 스터디 “AlphaGo, AlphaGo Zero를 활용한 인공지능 바둑” 시작
KAIST Include 동아리장이었던 재우의 부탁으로 어떤 스터디를 할까 고민하다가, 강화학습 기초가 아닌 그 이후의 내용을 주제로 해보고 싶어서 AlphaGo와 AlphaGo Zero를 활용한 인공지능 바둑 스터디로 결정했다. 처음에는 학생들이 잘 따라올 수 있을까 걱정했는데, 오랜 시간 동안 마지막까지 잘 완주해줘서 고마웠다.
저장소 : https://github.com/utilForever/2021-KAIST-Include-AlphaGoZero
3월 - 강화학습 논문 리뷰 스터디 4~6기 스터디 시작
2020년에 시작했던 강화학습 논문 리뷰 스터디 1~3기가 성공적으로 진행되고 2021년에 4기 스터디를 시작하게 되었다. 작년과 달라진 점이 있다면 초기에는 주로 최신 논문보다는 강화학습 핵심 알고리즘 위주로 발표가 되었다면 4기부터는 2019~2020년 논문들이 제법 많이 보이기 시작했다는 거다. 그래서 최신 트렌드를 따라가는데 많은 도움이 되었다.
저장소 : https://github.com/utilForever/rl-paper-study
5월 - 전북과학고등학교 R&E 멘토링 시작
2020년 전북과학고등학교에서 진행했던 특강을 진행한 적이 있다. 올해 3월에 학교에서 연락이 와서 받았는데 1학년이 하는 R&E 중 강화학습을 주제로 한 팀이 있다고 혹시 멘토링을 해주실 수 있겠냐는 부탁을 받았다. R&E를 해 본 적은 없지만 해보고 싶었던 주제였기에 흔쾌히 수락하게 되었다. 처음에 학생들이 제안한 주제가 있었는데 좀 더 재밌는 연구를 해보면 좋겠다는 생각이 들었다. 나는 “Unrailed”라는 게임을 강화학습으로 해보자는 제안을 했고 학생들도 좋다고 해서 현재도 진행중이다. 올해 2월이면 마무리될텐데 좋은 결과 냈으면 좋겠다.
저장소 : https://github.com/utilForever/Corailed
5월 - AIFrenz 세미나 “강화학습 환경 개발” 발표
유용균님의 제안으로 AI 프렌즈에서 “강화학습 환경 개발”이라는 주제로 발표하게 되었다. 지금까지 강화학습 환경 개발을 경험하면서 겪었던 시행 착오들과 개발할 때 고려해야 되는 것들, 그리고 OpenAI Gym과의 연결 방법을 실제 코드로 살펴 보며 알아보는 시간을 가졌다.
저장소 : https://github.com/utilForever/2021-AIFrenz-RLEnv
영상 주소 : https://www.youtube.com/watch?v=PuVLgXhEBpQ
5월 - 짧은 휴식 겸 여행 (?)
수도권에 있다 보니 지방에 있는 사람들을 만나기가 너무 힘들어 연차도 쓸 겸 4박 5일 여행을 다녀왔다. 익산 - 대구 - 울산 - 부산 일정으로 다녀왔으며 전북과학고등학교와 대구소프트웨어고등학교에서는 특강도 진행했다. 어째 여행이 아니라 출장을 다녀온 느낌이 들긴 하지만, 정말 많은 사람들을 만나면서 새로운 스터디와 프로젝트들을 계획할 수 있어서 나름 의미있는 일정이었다.
5월 - Microsoft Build 2021 라이브 세션 진행
Microsoft Build 2021에 개발자와 멘토링을 주제로 발표하게 되었다. 유일한 한국어 세션으로 큰 행사에 참여하게 되어 기쁘고 영광이었다. 비록 발표 시간은 5~10분 정도로 짧았지만 이소영님과 인터뷰를 진행하면서 많은 사람들에게 도움이 되었다고 생각하니 보람을 많이 느꼈다.
영상 주소 : https://docs.microsoft.com/en-us/events/build-may-2021/general/connection-zone/con009/
6월 - 얀센 백신 접종
당시만 해도 잔여 백신으로만 접종이 가능한 상황이었는데 다행히 얀센 백신이 들어와서 접종할 수 있게 되었다. 아스트라제네카, 화이자 백신과 달리 1회 접종만으로 끝나서 편하겠지만 그만큼 방어율이 떨어질 수도 있어서 백신을 맞고난 뒤에도 마스크 잘 쓰고 손도 잘 씻고 조심해야겠다고 생각했다. 백신 접종한 날에는 컨디션에 아무 문제가 없었는데, 잘 때가 되니 슬슬 몸살 기운이 느껴져 타이레놀 2알을 먹고 잤으며 다음 날까지 이어져 하루 푹 쉬었다. 그 뒤로는 괜찮아져서 주말까지 휴식을 취한 뒤 정상적으로 회사 업무를 했다.
6월 - 오픈 소스 프로젝트 기부
그동안 다양한 오픈 소스를 써왔는데 내가 이 분들을 위해서 할 수 있는 건 없을까 고민하다가, 유용하게 사용하는 몇몇 오픈 소스 프로젝트에 기부를 했다. 현재 1달에 약 150달러를 기부하고 있는데 크지는 않지만 내 기부를 통해 이 분들에게 도움이 되었으면 좋겠다. 오픈 소스 생태계가 좀 더 건강해지길 바란다.
7월 - Microsoft MVP 선정
2021-2022 Microsoft MVP로 선정되어 새로운 1년을 함께하게 되었다. 2015년이 첫 시작이었는데 어느덧 7년차가 되었다. 도와주신 모든 분들께 진심으로 감사드리며, 앞으로도 많은 커뮤니티 활동을 하도록 노력할 생각이다. C++과 개발 전반에 관련해 도움이 필요하시다면 주저하지 말고 말씀해주시기 바란다.
7월 - 게임이랑 무관합니다만 밋업 “ECS 기반 게임 개발” 발표
이전부터 “코딩이랑 무관합니디만” 그룹에서 발표 제의가 몇 번 왔었는데, 주제나 시간이 맞지 않아 여러번 거절한 적이 있다. 그러다가 게임 개발 관련을 주제로 발표 요청이 와서 이번에 발표하게 되었다. 어떤 주제로 발표할 지 고민하다가 최근에 사이드 프로젝트에서 사용했던 ECS 기반 게임 개발로 발표하면 좋을 거 같아 예제 코드를 만들어 발표했다.
저장소 : https://github.com/utilForever/2021-CoMu-ECS-Development
7월 - Nexon Korea 퇴사
7월 말에 넥슨코리아를 떠나게 되었다. 넥슨에 전문연으로 입사해 어느덧 5년 10개월이라는 시간이 지났는데, 게임 프로그래밍에 대해 거의 모르는 상태로 입사해 수많은 시행 착오를 거치며 많이 배웠고 성장할 수 있었다. 이 자리를 빌어 저를 도와주신 모든 분들께 감사의 인사를 드린다. 길다면 길고, 짧다면 짧은 시간이지만 게임 개발과 관련해 여러 작업을 해볼 수 있었다. 버그 수정부터 보스 레이드, 신규 캐릭터, 라이브 서비스, VS 마이그레이션, 게임 물리 엔진 개발까지 이거저거 다 해봤다. 덕분에 다양한 경험을 해보게 되었다. 작년부터 게임 물리 엔진 개발이 어느 정도 마무리되면 새로운 도전을 해볼까 생각하고 있었는데, 몇 군데서 좋은 제안이 와 검토한 끝에 모멘티로 이직하게 되었습니다. 대기업이 아닌 스타트업이고, 게임 회사도 아니라서 모든 게 달라진다고 볼 수 있었다. 하지만 새로운 도전을 하기에 최적의 시기라고 생각해 심사숙고해 결정하게 되었다.
관련 내용 : 첫번째 이직 이야기
8월 - Momenti 입사
7월 말에 퇴사하고 8월 초에 바로 모멘티에 엔진 엔지니어로 입사하게 되었다. 내가 맡은 업무는 다음과 같다.
- Frontend, Backend 및 iOS에 사용할 Rust 기반 엔진을 설계하고 구현합니다.
- Frontend : Rust ↔ WebAssembly ↔ Javascript/Typescript
- Backend : Rust ↔ Elixir
- iOS : Rust ↔ Objective-C ↔ Swift
- Frontend, Backend, iOS 개발자분들과 함께 더 나은 엔진 아키텍처를 위해 고민하고 논의합니다.
- 제품과 엔진에 필요한 새로운 기능을 구현합니다.
- 여러 플랫폼에서 발생할 수 있는 다양한 문제의 원인을 분석하고 해결합니다.
사용하고 있는 기술 스택은 다음과 같다.
- Programming Language
- Rust
- WebAssembly
- Javascript/Typescript
- Elixir
- Objective-C/Swift
- Framework
- wasm-bindgen (Wasm modules and JavaScript API)
- serde (Serialization Framework)
- rxrust (ReactiveX API)
- Build & CI
- Github Actions
넥슨에서도 물리 엔진 개발을 했지만, 하는 일은 전혀 다르다. 지금은 크로스 플랫폼을 고려한 코어 엔진을 만드는 작업을 하고 있고 문제가 발생했을 때 검색해도 나오지 않는 게 많아서 해결하기도 쉽지 않다. 어찌 보면 비슷한 점도 있는 거 같다. 처음에는 혼자 작업하느라 어려운 점이 많았지만 엔진 엔지니어 한 분이 새로 입사하셔서 서로 코드 리뷰를 진행하니 진행 속도에도 탄력이 붙고 많이 성장하고 있다고 느끼는 중이다. 마지막 팀 미팅 때 Rust 엔진이 들어간 앱이 정상적으로 실행되는 모습을 보며 많이 감동했는데 앞으로도 이 기분을 계속 느끼게 될 것이다.
8월 - 오픈 소스 관련 인터뷰
OpenUP에서 인터뷰 제안을 해주셔서 오픈 소스 관련 인터뷰를 진행하게 되었다. 평소에 하고 있던 사이드 프로젝트 이야기, 그리고 평소에 갖고 있던 생각들을 이야기하게 되었는데 기자님께서 잘 정리해주셔서 좋았다. 자세한 내용은 기사 링크를 참고해주시면 좋겠다.
기사 링크 : https://www.ddaily.co.kr/news/article/?no=220499
9월 - rxRust 기여
회사에서 코어 엔진을 개발하려면 Reactive Extension이 필요한데 Rust로 구현된 프로젝트 중에 마땅한 게 없어서 그나마 진행이 많이 된 rxRust를 선택했다. 그런데 필요한 Subject나 Operator가 없어서 구현하는데 애를 먹었다. 그래서 필요한 것들을 하나씩 구현해서 기여하기 시작했다. 올해 나와 팀원분이 제출한 PR만 10개가 넘는다. 회사를 다니면서 오픈 소스에 의미있는 작업을 해서 보람을 많이 느꼈다.
저장소 : https://github.com/rxRust/rxRust
9월 - 한양대학교 HAI 스터디 “강화학습 부트캠프” 시작
HAI 동아리장이었던 성환이의 부탁으로 강화학습 부트캠프 스터디를 시작했다. 강화학습 부트캠프는 강화학습 기초 수업을 들은 학생들을 대상으로 다양한 알고리즘들을 배우는 과정으로 기획했다. DQN Extensions으로 시작해 DDPG, TRPO, PPO 등 최신 알고리즘을 다루다 보니 난도가 좀 높은 편인데, 갈수록 참여율이 떨어져 아쉽다고 느낀 스터디였다. 아직 끝나지는 않았고 2022년 1월 말까지 진행할 예정이다.
저장소 : https://github.com/utilForever/2021-HYU-HAI-RLBootCamp
9월 - 경북대학교 ICPC World Finals 2020 항공권 지원
학교 후배들이 좋은 기회를 얻어 2020 ICPC World Finals Moscow에 진출하게 되었는데, 항공권 금액이 생각보다 비싸서 고민을 하고 있길래 흔쾌히 지원해주기로 했다. 흔치 않은 기회인데 항공권 때문에 참가하지 못하면 얼마나 슬픈 일이겠는가? 선배란 무엇인가… 후배들이 더 좋은 경험과 도전을 할 수 있게끔 뒤에서 말이 아닌 행동으로 지원하는 사람이라 생각한다. (이후에 학교에서 지원 결정이 내려져 지원했던 항공권 금액은 정산되었다.)
10월 - 탈잉 “월간 코드리뷰 ver 0.1” 웨비나
신수철님의 제안으로 10월 1일, 탈잉에서 진행하는 “월간 코드리뷰 ver 0.1” 웨비나에서 “오픈소스 프로젝트 키우기 : 파종부터 추수까지! 오픈소스 재배 일기”라는 제목으로 발표하게 되었다. 그동안 진행했던 여러 오픈 소스 프로젝트들을 바탕으로 어떻게 구성하고 발전시킨 과정을 압축해 내용을 채웠다. 자세한 내용은 다음 링크를 참고하시면 좋겠다.
영상 주소 : https://taling.me/Talent/Detail/38586
10월 - 대구소프트웨어마이스터고등학교 특강 “Rainbow Is All You Need”
올해도 오프라인 강의를 한 번도 못하나 싶었는데, 선생님과 이야기가 잘 되어서 1박 2일 동안 강화학습 특강을 맡게 되었다. 어느 정도 시간이 확보되어서 강화학습 기초부터 Rainbow DQN까지 배워보는 걸 목표로 했다. 빡빡한 일정 속에서도 학생들이 잘 따라와줘서 고마웠고 마지막에 간단한 대회를 열어서 마무리했다.
저장소 : https://github.com/utilForever/2021-DGSW-RL-Rainbow
10월 - 사내 기술 세미나 발표 “A Tour of Rust”
사내 기술 세미나에 발표할 기회가 생겨 다른 팀원들에게도 Rust 언어를 소개해드리면 좋겠다는 생각이 들어 “A Tour of Rust”라는 주제로 3주에 걸쳐 발표했다. 처음 보시는 분들도 쉽게 이해할 수 있도록 비유를 들어가며 설명했는데 팀원분들이 많은 도움이 되었다고 칭찬해주셔서 기분이 좋았다.
10월 - RustFest Global 2021 Organizer 합류
우연찮은 기회로 RustFest Global 2021 Organizer로 합류하게 되었다. 홈페이지 텍스트를 한국어로 번역하고, 한국 연산자들이 원활하게 의사소통할 수 있도록 통역하는 역할을 맡았다. 이후 연사자가 충분히 모집되지 않아 행사가 취소되었지만 짧은 기간 동안 뜻깊은 작업을 함께할 수 있어서 영광이었다.
홈페이지 : https://rustfest.world/
10월 - 새 노트북 구입
마이크로소프트 서피스 북 2를 산 지 어느덧 6년이 되었다. 회사나 카페에서 작업을 하다 보면 빌드 속도가 느려서 답답함을 느낀 적이 많았다. 이번에 서피스 북 4가 나오면 교체할 생각이었으나, 다른 노트북 라인업이 발표되었는데 예상보다 성능이 좋지 않았으며 내년에 출시된다고 해서 다른 노트북을 알아보게 되었다. 이후 애플에서 발표한 M1 Pro/Max 맥북 프로가 생각보다 뛰어난 성능으로 나와서 구입하게 되었다. 최상위 라인업으로 약 600만원의 지출이 있었는데 내 시간을 아껴준다는 생각으로 망설임없이 구입했다. 앞으로 몇 년 간은 이 노트북으로 개발하게 될 것이다.
11월 - 세종과학예술영재학교 특강 “게임 프로그래머와 엔진 프로그래머”
11월 18일에 세종과학예술영재학교에서 진행하는 진로 체험의 날에 “게임 프로그래머와 엔진 프로그래머”라는 주제로 발표를 했다. 넥슨에서 일했던 경험들을 바탕으로 두 프로그래머가 어떤 일을 하는지 정리해서 발표했다. 학생들이 사전 질문을 잘 해줘서 답변하는데 오랜 시간이 걸렸다. 즐거운 시간이었다.
11월 - 부스터샷 백신 접종
6월에 얀센 백신을 접종한 이후로 부스터샷 백신 접종 안내를 받아 11월에 접종하게 되었다. 어떤 백신을 맞을지 몰랐는데 가보니 모더나였고 정량의 절반만 투여한다고 했다. 우려와는 달리 큰 부작용 없이 지나가서 다행이라 생각했다. 아마 올해 상반기에 한 번 더 맞지 않을까 싶은데, 빨리 종식되었으면 하는 바람이다.
11월 - “Rust For Rustaceans” 번역 계약
도서출판 인사이트(@insightbook)와 Jon Gjengset(@jonhoo)의 “Rust for Rustaceans” 책의 번역을 진행하게 되었다. 최근 Rust 언어의 관심이 갈수록 커지고 있고, 회사에서도 Rust로 엔진을 만들고 있는데 운좋게 번역할 기회가 생겼다. 올해 상반기를 목표로 양질의 번역서를 출간할 수 있도록 노력하겠다.
12월 - 게임 개발자 인터뷰
동빈이의 부탁으로 게임 개발자 인터뷰를 진행하게 되었다. 다양한 질문에 답변을 했고, 유튜브에 올라간 뒤 댓글을 보니 많은 분들에게 도움이 된 거 같아 잘 대답했다는 생각을 했다. 이후에 발표할 기회가 있다면 현재 회사에서 하고 있는 경험들을 토대로 이야기할 수 있으면 좋겠다.
영상 주소 : https://www.youtube.com/watch?v=Yye5SF4MLps
12월 - 선린인터넷고등학교 2021 알고리즘 컨퍼런스 “Rust로 알고리즘 문제 풀어보기”
심준님의 요청으로 선린인터넷고등학교 2021 알고리즘 컨퍼런스에서 발표를 하게 되었다. 최근 Rust로 알고리즘 문제들을 풀면서 느꼈던 경험들을 정리해 이야기하면 좋겠다고 생각했다. Rust는 어떤 언어이며 알고리즘 문제를 풀 때 어떤 점들이 불편하고 어떻게 해결하면 좋은지 말했다.
발표 슬라이드 : https://www.slideshare.net/utilforever/2021-rust
12월 - game-developer-roadmap 리뉴얼
2017년에 처음 game-developer-roadmap을 만들고 나서, 한 번도 리뉴얼을 하지 않았는데 미루고 미루다가 5년 만에 전면 개편하게 되었다. 클라이언트 로드맵의 경우 아예 처음부터 다시 만들었고, 서버 로드맵의 경우 기존 내용에 불필요한 부분을 삭제하고 새로운 내용을 추가하는 형태로 작업했다. 많은 분들에게 도움이 되었으면 좋겠다.
저장소 : https://github.com/utilForever/game-developer-roadmap
오픈소스 기여
- imgui - Fix unreferenced formal parameter warning in SanitizeFormatString()
- SFML - Add support for Visual Studio 2022
- rxRust - Add subject ‘BehaviorSubject’
- rxRust - Add operator ‘WithLatestFrom’
- rxRust - Add operator ‘StartWith’
2022년 계획
- 기술 도서 집필하기 (올해는 꼭 마무리했으면 좋겠다…)
- C++ Crash Course 번역 마무리 및 출간
- Rust for Rustaceans 번역 마무리 및 출간
- C++ Korea 임의단체 출범
- 자연어 처리 (NLP) 공부하기
- C++ 및 Rust 기반 사이드 프로젝트 진행
- 프로그래밍 언어 TypeScript 및 Elixir, Julia, F# 배우기
- Rust로 배우는 인터프리터/컴파일러 스터디 진행
- 컴퓨터 그래픽스 스터디 진행
- 건강 관리하기
- 식단 조절 (선식)
- 꾸준한 운동 (필라테스 또는 PT)
- 체중 감량 (15kg)
회고를 쓰다 보니 작년에도 이리저리 한 일들이 많았다. 특히 물리 엔진을 출시하고 이직한 게 기억이 많이 남는다. 올해도 많은 일들을 계획하고 있는데 건강과 컨디션 잘 지키면서 목표 달성했으면 좋겠다. 2022년 새해 복 많이 받으시고, 원하는 목표 다 이루는 한 해가 되었으면 합니다! 끝까지 읽어주셔서 감사합니다.