학교 바깥의 세상으로 나아가며

RanolP·2023년 1월 7일
2

길다면 길고 짧다면 짧을 고등학교 3년이 끝났습니다. 많은 일이 있었고, 원하던 대로 술술 풀린 날도, 되는 게 없어 한탄스러운 날도 있었습니다. 이 글에선 고등학교 3년 생활의 총정리와 앞으로 제가 무엇을 할지 적어보고자 합니다.

버추얼 고등학교를 시작합니다

2020년은 코로나19로 인한 원격 수업이 도입되던 시기입니다. 저는 고등학교에 입학하자마자 아침에 일어나 컴퓨터 앞에 앉는 일상을 시작하게 되었고, 몸이 멀면 마음이 멀어진다고 하던가요? 여기에 쓰기 적절한 말일지는 모르겠습니다만, 대체로 과제는 대충 처리하게 되었습니다. 남는 시간엔 코드를 짜며 보냈죠. 그나마 공부와 관련 있는 건 영어 자기주도학습 자료를 간단한 HTML 사이트로 만들어버린 것이었을 터입니다.

오늘은 뭐하세요? 바쁘세요? 문제 푸실 수 있나요?

2020년 4월 즈음, 저는 백준 온라인 저지에서 매일 한 문제 이상 풀기를 약속하는 소모임 daily-boj에 참여했습니다. 여러 문제를 풀었고, 이러한 문제 풀이 과정을 보조할 도구를 만들기도 했습니다. 홈페이지위키를 만드는 등 소모임을 위한 몇 가지 활동을 시도했습니다. 현재로서는 그리 활발이 운영되고 있지는 않습니다.

문서화되지 않은 API라도 좋아

앞서 말했던 문제 풀이 보조 도구를 만들면서 solved.ac의 문서화되지 않은 엔드포인트에 접근해야 하는 일이 자주 생겼습니다. 해당 엔드포인트들의 문서는 API 제공 측이 문서화를 할 경우 드는 문서화에 쓰이는 비용 그 자체와 호환성 유지 비용 등을 걱정해 할 수 없었던 것이므로 제가 직접 하면 되겠다는 생각을 했고, 실천했습니다.

대회를 운영하기

여름방학 시즌을 맞이해 한 그룹에서 PS 대회를 개최하게 되었습니다. 처음 열어보는 대회였기에 무슨 플랫폼을 써야 커스텀 문제를 낼 수 있는지, PS 대회라는 게 어떻게 운영되는지도 하나도 모른 채 무작정 시작해서 어찌저찌 마무리한 대회입니다. G번 문제를 하나 출제했고, 대회 운영진을 맡았습니다. 아쉽게도 문제 본문은 공개되어 있지 않습니다만 에디토리얼은 남아있습니다.

원격 수업에도 타종은 필요하다

원격 수업이 단순 과제형이라면 시간 엄수가 필수적이진 않습니다. 하지만, 2학기에 접어들며 Google Meet 등을 활용한 실시간 수업이 늘어나고야 말았습니다. 오전 내내 자고 오후에 과제를 몰아서 하는 생활이 불가능해지고 만 것입니다. 이렇게 된 이상, 시간표도 보여주고 타종도 해주는 프로그램을 만들기로 마음먹었습니다. 그리고 결론은... "힙스택이 밥 먹여주지는 않지만 기분이 좋다".

한 달 안에 나온 폰트

때는 바야흐로, 한글날이 한 달 정도 남은 때였습니다. 한글날이면... 한글을 그려야지! 라는 짧고 굵은 아이디어는 장장 4편에 걸친 글을 쓸 정도로 거대한 프로젝트가 되었고, 유명세를 어찌저찌 잘 타서 산돌구름 무료 폰트 중 하나로 자리잡게 되었습니다. 나무위키 상업용 무료 글꼴 문서에도 실렸다고...는 합니다.

프로처럼 일하자. 프로는 안 울어

어쩌다가 연락이 닿아서 ㅇ 단체로부터 내부 관리 도구를 만들어달라는 외주를 받게 되었습니다. 풀스택 웹 개발자가 되어 프론트엔드도 짜고 서버도 짜고 배포도 하고 이게 뭔가 경험치는 쌓이는데 딱히 하고 싶지는 않은 느낌이 짙게 드는 작업이었습니다. 근데 뭐 돈 준다니까...

다음 학년도

학교 이야기는 적은 것도 없는데 프로젝트만 한 바닥 이야깃거리가 나옵니다. 얘는 대체 공부란 걸 하긴 한 걸까요? 수학이 5~6등급을 왔다 갔다 하는 거 보면 별로 한 것 같진 않습니다. 하지만 제가 궁금한 건 수열의 극한 같은 게 아니라 타입을 집합론으로 이해하기 같은 분야인 걸 어찌 하겠습니까.

나만의 작은 WASM 컴파일 언어

방학 동안 할 짓이 없어서 WASM으로 컴파일되는 프로그래밍 언어를 만들었습니다. 어떻게, 그리고 왜 했는지 물어보신다면 저도 모릅니다. 몰라 뭐야 이거 무서워. 외부 함수 호출, 함수 선언해 호출, 그리고 if - else가 대충은 돌아가는 모양입니다.

PDF, 장전됨

외주를 하고 받은 돈에 부모님 찬스를 보태 ASUS ROG Flow X13을 구매했습니다. 당시 제 요구 사항은 1) Windows 랩톱으로 기능할 것, 2) 필기가 가능할 것, 3) 저 둘을 한 디바이스로 가능케 할 것. 이 정도였는데요. 헛된 꿈이라는 사실을 받아들이기에 저는 어렸습니다. 한편, PDF 문서 위에 필기하고 싶던 저의 마음은 대체 왜 원격 수업 시대에도 PDF를 안 주는 거야 싶은 교과서 회사와 감사합니다 소리가 절로 나오게 PDF를 주는 회사, 대체 왜 PDF가 아니라 jpg 모음집을 주는지 모르겠는 회사 등으로 나뉘었습니다. 긁어모을 수 있는 건 싹 다 긁어모아 노트북에 담아두었는데... 자세한 방법은 너무 추잡해서 공개하지 않도록 하겠습니다. 한 가지 확실한 건 auto-incremental id를 쓰는 건 서비스의 취약점이 될 수 있다는 것과 내부 URL은 구글 검색에 잡히지 않도록 미리 신경 써두어야 한다는 것입니다.

가르치는 건 어려운 일이다

2학년 때 한 친구가 꼬드겨서 동아리 부기장을 맡고 애들한테 React를 가르치려고 했습니다. 친구들은 대체로 키보드에 그런 특수 문자가 있냐고 물어보는 상황이었으며 저는 제가 오만했음을 받아들여야 했습니다. 수준이 다른 친구들을 한 곳에 모아놓고 가르치는 건 어렵디 어려운 일인 것을. 그래도 나름대로 저들만의 콘텐츠를 만들어 동아리 발표회 때 출품한 걸 보면 참 대견한 친구들입니다.

오타쿠 짓 하기

진짜 왜인지는 모르겠는데, 「이능배틀은 일상계 속에서」에서 나오는 주옥같은 명대사인 쥬 군이 말하는 건 옛날부터 무엇 하나도, 요만큼도 모르겠다고! 를 웹 프론트엔드 엔지니어 버전으로 각색했습니다. 왜 그랬을까요? 과거의 저를 이해하는 건 항상 어려운 법입니다.

꿈꾸었던 마크업 언어

저는 과거에 Nuxt.js와 markdown-it을 활용해 여러 Markdown 확장을 포함하는 블로그 엔진을 만들려 시도했던 적이 있습니다. 하지만 Markdown이라는 언어는 대체로 규칙이 느슨하며, 문법 확장이라는 것들도 제멋대로인 터라 늘 일관성 있고 확장성 높은 마크업 언어를 꿈꿔왔습니다. 문제 풀이 해설 문서에 쓸 수 있도록 연동하지는 못했지만, 과거 sezong이라고 이름지었던 그 언어를 hanzzok이란 이름으로 리브랜딩하고, Rust로 엔진을 교체해 표준 구현체를 만들었습니다. 이후 홍보용 웹사이트도 만들려고 했는데 놀이터 만들다가 지쳐서 던져두었습니다.

가짜로 문제 내기

트위터에는 No context BOJ라는 계정이 있습니다. 진짜 아무 맥락 없이 웃긴 백준 온라인 저지 상의 한 부분을 갖다 올리는 계정인데, 굳이 그게 백준에 실제로 있어야 하는 걸까요? 대충 백준스럽고 웃긴 거면 오케이 아닐까요? 그리고 그 마인드는 백준 문제처럼 보이는 WYSIWYG 에디터를 만들고 싶다는 이상한 욕구로 발전해 그럴듯한 결과물을 냈다는 것이 제일 코미디입니다.

문제 본문을 VS Code에서 보고 싶어

진짜 얘는 어쩌다가 백준 온라인 저지를 이렇게 사랑하고 말게 된 걸까요? 기어코 VS Code 안에서 백준 온라인 저지 속 문제의 본문을 읽을 수 있게 돕는 VS Code Extension을 만들고 맙니다. 백준 온라인 저지는 크롤링을 막고 있기 때문에 Cross-Origin에서 요청을 넣으면 당연히 안되는데, 기어코 프록시를 끼워넣어서 VS Code on Web에서까지 돌아가게 만드는 광기를 보여주고 있습니다.

마지막 학년도

예상하셨겠지만 저 프로젝트 활동으로 하면서 공부 같은 건 하지 않았습니다. 늘 그렇듯이 수학이 5등급 대역에서 머물고 있죠. 과연 프로젝트 활동을 이렇게나 많이 했다고 대학이 저를 뽑아줄까요?

Windows 11이 깨부순 것

Windows 11은 제가 노트북에서 잘 쓰고 있던 NetSpeedMonitor와 BatteryBar를 깨부쉈습니다. 그래서 저는 measurrred라는 프로젝트로 그 둘을 대체하려고 열심히 개발했는데... 문제는 그걸 개발하는 동안 없는 것에 적응해버려서 개발할 의욕이 식어버렸다는 것입니다. 사람이 적응의 동물이란 말이 괜히 나온 건 아닌가 봅니다.

새로운 동아리

고등학교 3학년 동아리는 분위기가 사뭇 다릅니다. 아무래도 수능을 준비하는 친구들이라 그런 거겠죠. 프로젝트 활동을 1학기 동안 하며 NEIS랑 컴시간을 파싱해 시간표와 급식 식단을 보여주는 사이트를 만들긴 했습니다만, 사실 잘 모르겠습니다. 동아리는 과연 필요한 걸까요?

번역과 반역은 한 끗 차이

저는 개인적으로 번역을 참 좋아합니다. 이 벨로그에도 번역 글이 두 개(#1, #2)나 있습니다. 과거에 ReasonML 홈페이지 번역을 시도했던 선발대이기도 하고, 제가 개인적으로 매우 좋아하는 Tauri의 한국어 번역에 제 기여분이 상당히 많이 있기도 하며 제 스스로 번역의 품질과 일관성을 유지하고자 하는 마음으로 번역 용례집을 만들기도 했으니까요. 하지만 기계 번역을 그대로 붙여 넣은 제안이나 오타를 인지하지 못한 채 계속 번역 문자열에 남아 있는 꼴을 보니 잘못하다간 반역이겠다 싶어서 쉬고 있습니다.

Rust로 Serverless 봇 만들기

원래 목표는 Discord 봇만 만드는 거였는데... 봇 프레임워크 오버 엔지니어링 하기 만큼 재밌는 일이 어디에 있다고 원래 목표만 이루겠습니까. 당연히 HTTP 리퀘스트를 날리는 바닥부터 우아하게 명령어를 처리하는 인터페이스까지 오버엔지니어링하며 부수고 만들기를 반복하다 결국 변하지 않는 훌륭한 디자인이라 생각되는 일부분만 공개한 상태입니다.

Oracle Cloud에 Minecraft 서버를 놓다

많이 늦긴 했습니다만, 제가 토스뱅크카드를 만든 건 주민등록증을 만들고 난 후였으며, 주민등록증은 기한이 지나기 한 달 전인가 가서 만들었습니다. 게으름(Laziness)의 극치이니 참으로 연산을 적게 하는 사람입니다. 당연히 저는 Arch Linux 외의 배포판을 생각할 수도 없게 되어서 Oracle Linux부터 Arch Linux로 갈아버리고 최대한 인프라를 코드로 관리하기 위해 부단히 노력해 마인크래프트 서버를 올렸습니다.

트위터에 불이 났다면서요?

결국은 Elon Musk가 Twitter를 인수했습니다. 저는 별 생각이 없었는데 옆에서 대피소를 만들자길래 어쩌다보니 관리를 하게 되었습니다. Misskey라는 아주 독자적인 마스토돈 확장을 운용하는 서버 구현체를 구동 중인 twt.rs 인스턴스에서 어쩌다보니 "Alpine Linux의 아름다움을 모르는 당신이 불쌍해"를 당하고 있었습니다. 아니 openrc가 뭔데, doas가 뭔데 대체....

작고 귀여운 오픈 소스 기여

작고 귀여운 오픈 소스 기여도 몇몇개 했습니다. solved-ac/ui-react #5에서는 타입 마술을 보였고, daangn/stackflow #274에서는 단순한 오타 수정을 했으며, 어쩌다보니 rustc 코드 리뷰를 했다고 Co-Author 당해서 그대로 Rust 1.65.0 Contributors 목록에 이름을 올렸습니다. 아니 근데 난 별로 한 게 없는데...

그래서 대학은?

저는 공부를 소홀히 하고 저 많은 프로젝트들을 해낸 걸 후회하지 않습니다. 만약 제가 시간을 돌릴 수 있다고 해도 학교 공부를 하진 않을 것 같습니다. 특기자 전형이 축소된 건지 어쩐지는 모르겠지만 최대한 특기자 전형을 골라서 수시 원서를 넣었습니다. 보험용으로 넣은 한 곳 빼고는 다 떨어지더군요. 솔직히 좌절했습니다. 내 삶이 헛되었나 하는 생각이 안 들 수가 없었죠. 정시 시즌은 어영부영 삶을 보내다가 놓쳐버렸습니다. 사이버대학? 다닐 수는 있지만 솔직히 잘 모르겠습니다. 학위가 무슨 소용일까요.

하지만 대학 바깥에도 세상이 있다

제 특기자 서류는 대체로 이 벨로그에 올라온 글이나, 커밋 히스토리를 보며 기억을 되짚으며 만들어졌습니다. 3개의 프로젝트를 엄선해 담았고, 대학은 저를 거부했습니다. 그들이 제게 입상 실적을 원했든, 높은 성적을 원했든, 제가 무언가를 충족시키지 못했던 거겠죠. 하지만 세상은 넓고, 인생에 정답이 정해져 있지는 않습니다. 대학이 거부한 제 실적을 지켜봐주는 사람이 있습니다. 그리고 저는 아직 젊으니, 실패하더라도 다시 시도할 시간이 넉넉하니까요. 주저 없이 일단 사회에 뛰어들어보고자 합니다.

profile
사람과 컴퓨터 사이를 이어주는 소프트웨어를 만듭니다

0개의 댓글