궁극의 덕질
줄리아 프로그래밍 책을 쓴 것은 저한테는 ‘궁극의 덕질’이었다는 생각이 드네요. 어차피 제 학생들 지도하는데 필요해서 시작한 일이니, 책 내용을 준비하는 일은 그리 번거롭지는 않았고, 저도 배우는 것이 많아 재미있었습니다. 책을 준비하는 동안 제가 재미있어 하고 관심가지고 즐기는 요소들이 아주 많이 등장했습니다.
- Julia Programming
먼저, 당연하게도 줄리아 프로그래밍입니다. 다른 언어를 사용할 떄는 몰랐는데, Julia는 정말 코딩이 재미있네요. 이게 뭔가 Github, Open Source 등등의 요소들과 합쳐지면서, 코딩도 재미있고 패키지 개발하는 재미도 있습니다. 언어 자체가 편하기도 하지만, Github의 영향으로 소셜코딩의 측면이 강화되어 더욱 재미있네요. Julia는 각각의 패키지가 그냥 아예 Github 저장소입니다. Python의 인기가 대폭발한 계기도 Github 혹은 git 때문이라는 말을 들어 본 듯도 하네요.
- Operations Research
Operations Research는 제 전공입니다. 가르치고 배우고 연구하고 논문쓰고 발표하는 제 전공입니다. 당연히 제 덕질의 대상입니다.
- LaTeX
- web
- softcover.io
이 책은 컴퓨터 프로그래밍 책이기도 하고, 수학 모델링에 대한 책이기도 합니다. 온라인으로도 출판하고 싶었고, 종이책으로도 출판하고 싶었습니다. 온라인책/종이책 모두 될 수 있으면 self-publishing으로 하고 싶었습니다. 컴퓨터 코드도 소스 코드 그대로 잘 임베드가 되어야 하고, 여러가지 수식도 수식번호를 포함하여 잘 보여야합니다. PDF형식과 HTML형식 모두를 완벽하게 지원해야 합니다. 당연히 두 번 작업하지 않고 한 번에 모든 것이 되어야 합니다. Pandoc이라는 도구도 알아보고, Jupyter Notebook도 생각해보고, 다른 여러가지 방법을 알아보던 중, softcover.io 라는 웹사이트를 알게 되었고, 거기서 제공하는 softcover라는 툴이 이 목적에 완벽히 부합한다는 사실을 알게 되었습니다. 완벽한 도구는 아니지만, 제 목적에는 가장 잘 맞는 도구라서 편하게 쓸 수 있었습니다.
LaTeX은 제가 너무 좋아하는 글쓰기 도구입니다. 수식이 많이 들어가는 문서는 아무래도 LaTeX이 가장 적합합니다 — 사실 수식이 안들어가도 대부분의 경우에 LaTeX이 좋습니다. Softcover가 Markdown + LaTeX 기반입니다. 저는 web programming도 좋아합니다. 대학원에 진학하기 전 잠깐 web application programmer로 일한적도 있었습니다. (지금의 web technology와 그 당시의 기술은 비교 할 수 없을 정도로 다른 기술인 것 같기도 합니다.) Softcover는 이 두가지를 이어주는 즐거운 도구였습니다. 게다가 온라인 출판물의 판매도 할 수 있으니 일석삼조입니다.
- git
책은 기본적으로 LaTeX 문서이기 때문에, git으로 버전관리하며 썼습니다. 사실 그냥 혼자 진행하는 작은 취미 프로젝트이기 때문에, 버전관리보다는 백업의 느낌에 가깝습니다. 책 문서는 Bitbucket에서 제공하는 무료 private 저장소에 넣어뒀고, 프로그램 코드는 Github의 무료 public 저장소를 통해서 공유했습니다. 파일이름에 ver01, ver02, final, final_final 등의 이름을 덧붙이며 버전관리하다가 git으로 하니 왠지 멋진일을 하고 있는 것 같은 느낌이 들어 즐겁습니다. (그나저나 git은 복잡하고 이해가 안 되는 부분도 많네요. 이해를 제대로 하지 못하고 쓰고 있어서, 중간 중간 많이 날려먹었습니다. 혼자 일했기에 망정이지 팀으로 일했으면 민폐를 많이 끼쳤을 것 같습니다. 조금 전에도 subtree로 뭐 하다가 좀 날려먹었네요.)
- writing
책이니까 기본적으로 쓰기와 관련이 있습니다. 글이든 컴퓨터 코드이든 뭔가를 써내려간다는 건 자기자신을 표현하는 한가지 방법입니다. 노래도 못 부르고, 그림도 못 그리고, 패션감각도 없는 제가 제 개성을 내보이는 유일한 표현방법이 쓰기입니다. 재미없을리가 없습니다 — 물론 고통스러울 때도 많습니다.
- education
이 책은 기본적으로 산업공학과에 진학해서 Operations Research를 전공하려는 대학원 1년차 학생들을 도와주고 싶어서 쓴 책입니다. 주로 제 학생들을 돕게 되겠지만, 아무튼 학생 교육이 목적입니다.
- research
이 책은 제 연구와도 관련이 있습니다. 지난 몇년간 연구를 하면서 몇가지 관련 알고리즘을 Julia 패키지로 만들었습니다. 제가 연구를 하면서 다른 사람의 논문을 읽고, 그 논문에 나오는 알고리즘을 패키지로 만들기도 했고, 제 연구 결과를 구현해서 패키지로 만들기도 했습니다. 제가 만든 패키지들도 책에 소개를 했습니다.
- publication
마지막으로 출판입니다. 왜인지는 잘 모르겠지만, 무언가 출판물을 만들어내는 것이 굉장히 재미있습니다. 연구를 하고 논문을 쓰는 것도 재미있지만, 제가 쓴 것이 논문이라는 출판물로 나오는 것을 보는 것이 굉장히 재미있습니다. Self-publishing이니 책을 출판하는 모든 과정에 제가 관여할 수 있습니다. 기획, 집필, 조판, 출판, 심지어 가격 결정까지. 너무 신나네요. 온라인 책을 공개했으니, 계속 수정 보완해서 여름에는 종이책으로 출판하는 것이 제 목표입니다.
그럼 저는 이만 또 ‘덕질’하러 갑니다.
교수님, 항상 좋은 가르침 주시는데 이번에도 덕분에 Julia 공부좀 해야겠습니다 ^^
줄리아 재미있습니다 :)
git 이 뭔지 하나도 모르는 다른 분야 석사유학생이지만, 자신의 학문분야가 이토록 즐겁다니 다시 한번 더 제 자신을 성찰해봐야겠어요.. 대단하신것 같고 부럽기도 합니다.