2021년 회고

올 한 해 한 것은 별로 없지만 매년 무엇을 했는지 기록 해야겠다고 생각이 들었다.

사이드 프로젝트

My Muse List 개발

공부

Svelte + Phaser 3

회사

2020년 2월 8일 책모임

이번에는 모임 초기에 한 번 진행했던 이상한 정상가족을 읽기로 했다. 몇 년 전부터 사고싶은 책이 있으면 먼저 전자책을 찾아보고, 없으면 종이책을 구매한다. 이 책도 과거에 모임을 진행하려고 할 때 리디북스에서 샀었고, 다시 불러와서 읽었다.

이상한 정상가족이라는 책 이름을 처음 봤을 때는 사회가 일반적으로 생각하는 비정상적인 구성의 가족에 대한 이야기라고 생각했다. 다 읽고나니 처음 생각했던 내용도 있지만, 주제는 다르다는 걸 알았다. 하지만 모두들 한 번은 생각해봐야 할 주제다. 가족 내에서의 체벌, 가족의 역할, 가족의 규정, 문제의 해결방안까지 제시해주는 책이었다.

그 중 기록으로 남기고 싶은 부분을 정리한다.

가끔 기사를 보면, 자녀를 자신의 소유물(말그대로 물건)으로 생각하고 대하는 사람들이 있다. 자신과 동등한 존재로 인식하지 못하고 내 자식인데 내가 체벌하는 게 무슨 잘못인가? 혹은 어른이 아이를 옳은 길(옳은 길은 무엇인가?)로 인도하는 것이 무슨 잘못인지 인식하지 못하는 것 같다. 그 사람들에게 저런 글을 보여주고 싶다고 생각했다.

‘일가족 동반자살’이라는 불가능성에 관하여 챕터에서 나왔는데, 지은이가 언론사에 보낸 ‘동반자살’이라는 용어를 쓰지 말 것을 요청하는 의견서에 나오는 글이다. 이 책에서 나온 얘기기도 한데, 한 연구에 따르면 일가족 동반자살로 보도된 사건의 절반 이상은 부모가 미성년 자녀를 살해한 뒤 자살한 사건이라고 한다.

앞에서 발췌한 부분과 마찬가지로 부모가 자녀를 소유물로 생각하고 동등한 존재로 인식하지 못하는 것이 문제라고 생각한다. 하지만 책에서는 문제의 모든 원인이 부모뿐만 아니라 사회와 정부에게도 있다고 한다. 사회는 부모에게 자녀에 대한 무한적인 책임을 요구하고, 정부에서는 성장을 위해 복지, 교육, 의료, 부양같은 사회 문제들을 가족에게 떠넘긴 문제들이 부모가 자녀 살해 후 자살이라는 극단적 선택을 하게됐다는 얘기다.

정부의 역할과 사회의 역할이 제대로 수행되지않을 때, 가족이 어떻게 무너질 수 있는지 한 예라고 생각한다.

미혼모라는 단어는 자주 듣고 봤지만, 미혼부라는 단어는 못들어봤다. 파트너의 임신 사실을 알게되면 절반 정도의 남자들이 부정하거나 소식을 감춘다고한다. 출산에 동의한 남자의 경우도 출산 후에는 소식을 끊거나 책임을 방기하는 경우가 있다고한다. 한 연구에서 미혼부로부터 양육비를 지원받는 경우는 10%도 안된다는 글은 생각보다 많은 남자들이 책임회피를 하고 있다는 생각을 하게했다. 어떤 일이든지 일을 만들고나면 책임을 져야하지 않나? 단순하게 회사를 다닌다고 해도 책임이 있는 일이라면 이렇게까지 무책임할까?라는 생각도 든다.

사랑의 매가 전통이라고, 문화적 특성이라고 말하는 사람들은 사라져야한다.

가장 중요한 것이라고 생각한다. 공감은 매우 어려운 일이지만 공감하지 못하면 문제를 해결할 수가 없다. 시작은 공감이다.

2020년 1월 4일 책모임

2020년의 첫 책모임은 재작년에 진행했던 랩 걸로 결정됐다. 새로운 멤버도 생겨서 지금까지 진행했던 책 중에 다시 읽어보고싶은 책을 정해서 두 달 동안 진행하기로 했다. 예전에 랩 걸로 모임을 했을 때는 일이 있어서 참여를 못했는데, 이번 기회에 읽어보기로했다.

병원은 아픈 사람을 가둬두고 그 사람이 죽거나 나을 때까지 계속 약을 주입하는 곳일 뿐 그 이상도 이하도 아니었다. 나는 누구도 치료할 수가 없었다. 정해진 레시피에 따라 행동한 다음 어떤 일이 벌어지는지를 기다릴 뿐이었다.

부모님이 병원에 오래 입원해야했던 적이 있는데, 같이 병실에 있으면서 비슷한 생각이 들었다. 병원에서는 처방된 약을 주고 기다릴뿐이었다. 뭔가 마법처럼 뿅!하고 병이나 아픈 것이 한 번에 낫는 일은 없고, 그저 좀 더 나아지기를 기다리는 것이 다였다. 그 후로는 아플 때 꼭 병원에 가야하는 건 맞지만 병원은 그저 도움을 받는 곳이라고 생각하기로 했다. 그저 병원에 가서 진찰받고 수술하는 것만으로도 병이 낫는다고 생각하는 것은 틀리다고 생각한다.

나는 그 텅 빈 방을 우리가 언제나 계획하고 꿈꿔왔던 실험실과 비교하지 않고, 그 자체로 받아들이고, 열심히 노력하면 얼마든지 바꿀 수 있는 가능성을 본 빌의 눈에 감탄했다.

빌과 같이 어떤 상황에서도 가능성을 볼 수 있는 사람이 돼야겠다고 생각했다.

우리 모두 일하며 평생을 보내지만 끝까지 하는 일에 정말로 통달하지도, 끝내지도 못한다는 사실은 좀 비극적이라고 나는 생각했다. 그 대신 우리의 목표는 세차게 흐르는 강물로 그가 던진 돌을 내가 딛고 서서 몸을 굽혀 바닥에서 또 하나의 돌을 집어서 좀 더 멀리 던지고, 그 돌이 징검다리가 되어 신의 섭리에 의해 나와 인연이 있는 누군가가 내딛을 다음 발자국에 도움이 되기를 바라는 것이다.

피프티 피플을 재밌게 읽었는데, 거기서 이호 교수가 소현재에게 했던 말이 생각나서 다시 찾아봤다. 우리가 하는 일이 돌을 멀리 던지는 거라고 생각합시다. 어떻게든 한 껏 멀리. (중략) 소 선생은 시작선에서 던지고 있는 게 아니에요. 내 세대와 우리의 중간 세대가 던지고 던져서 그 돌이 떨어진 지점에서 다시 주워 던지고 있는 겁니다. 우리가 어떤 일을 하던지 그 일이 무의미하다고 느껴질 때는 저 말을 생각하면서 일을 하면 좀 위안이 되는 것 같다. 단 1cm 라도 더 멀리 던진 것에 의미가 있다고 생각한다.

2019년 한 해 회고

한 해의 정리를 위해 뒤돌아보니 다섯 가지 주제가 남았다.

퇴사

가을에 퇴사했다. 원래는 봄에 퇴사가 예정되어 있었는데, 나와 회사의 동의하에 재택근무 형태로 반년 정도 더 일했다. 회사에서 퇴사를 제안했을 때는 이젠 쉴 수 있겠다는 생각에 어떻게 놀고 쉴지를 계획하는 것이 재밌었다. 퇴사 통보를 받은 후 며칠 뒤에 일을 좀 더 해줄 수 없겠냐는 말을 들었고, 집에서 일하고 회사에 보고할 일이 있을 때만 출근하는 조건으로 승낙했다. 그 후로 반년을 더 일했다.

처음엔 다른 지방에 공연 보러 다니고, 그동안 미뤄왔던 토이 프로젝트도 하고, 좀 더 나에게 시간을 쓰려고 계획했다. 하지만 재택근무를 처음 해봐서 일과 쉬는 것의 경계선을 명확하게 긋지 못했다. 일을 완전하게 마무리하지 못한 상태로 쉬게 되니 쉬어야 하는 시간에도 머릿속에서 그 일을 마무리해야 된다는 생각에 사로잡혀 있었다. 하지만 40+20 작업법(을 만나고 내 인생이 달라졌다.) 을 적용하고 나니 일과 쉬는 것(사실은 집안일이 대부분이었지만)의 경계선을 확실히 그을 수 있었고, 재택근무에 적응하게 되었다. 반년 뒤 회사는 나를 대체할 인력을 뽑아서 교육하고 일을 시킬 준비가 되었고 나에게 퇴사 일자를 통보했다.

소스코드 리딩

올해 진행한 소스코드 리딩 모임에서는 마젠타 프로젝트를 공부하는 데 대부분의 시간을 썼다. 예전부터 만들어보고 싶었던 프로젝트들을 마젠타를 공부하면 만들 수 있을 것 같아서 공부를 시작했다. 덕분에 지난 여름, 파이콘에서 발표도 했다. 마젠타 프로젝트를 어느 정도 공부한 후에 아이디어로만 있던 토이 프로젝트를 좀 더 진행했다. 내년 봄에 완성하는 것을 목표로 삼았다. 내년 소스코드 리딩 모임 주제는 아마도 소형 자율주행 자동차를 만드는 것이 되지 않을까 생각한다. 얼마 전 아마존에서 발표한 DeepRacer로 진행할 수도 있고, 아니면 집에 하나씩은 있는 라즈베리파이와 RC카로 진행할 것 같다.

파이콘 코리아 2019

2019년에 한 일 중에서 하게 될 것이라도 생각도 못 한 일이 있다면 파이콘에서 발표하는 것이다. 소스코드 리딩 모임에서 마젠타 프로젝트에 대해서 공부한 것을 소개하고 예제 코드들을 읽으면서 작년에 고민했던 것들을 해소할 수 있었다. 작년에는 책과 파이썬으로 머신러닝, 인공신경망을 공부하면서 붓꽃을 분류하거나 사진에서 강아지와 고양이 찾기 말고 다른 재밌는 프로젝트가 없을까 고민했었다. 텐서플로 기반의 마젠타 프로젝트는 재밌는 예제들이 많았고, 그 중 Piano Scribe 예제에 제일 흥미가 있어서 그 예제를 주로 봤다.

Piano Scribe는 피아노 연주를 들려주거나 녹음 파일을 업로드하면 그대로 연주를 카피해서 미디 포맷으로 만들어주는 예제다. Onsets and Frames 모델을 사용해서 피아노 음의 시작과 길이, 세기를 분석해주는데 학습된 모델 파일이 있어서 웹 서비스로 만들어봤다. 웹 브라우저에서 피아노 연주 파일을 업로드하면 미디 파일을 받을 수 있는 간단한 서비스를 만들었고, 이 데모를 기반으로 파이콘 발표를 했다.

넓은 공간에서, 많은 사람 앞에서 발표하는 건 정말 재밌었다. 정작 발표할 때는 시간이 쏜살같이 흘렀는데, 그 발표를 위해 예제 코드를 만들고, 발표 자료를 만드는 과정이 재밌었다. 다음에 기회가 되면 재밌는 주제로 한 번 더 발표해 보고 싶다.

토이 프로젝트

일을 쉬면서 투윅스라는 프로젝트에 참여했는데, 참가자들이 2주 동안 서비스를 출시하고 피드백을 받는 경험을 하는 것이 목적인 행사였다. 좋은 기회라고 생각해서 그동안 미뤄왔던 토이 프로젝트 중 인디 셋리스트 라는 서비스를 만들었다. 평소에 공연을 보러다니기 좋아해서 다른 지방으로 공연 보러 가는 일이 많은데, 직접 보지 못한 경우 동영상으로나마 그 공연을 보고 싶어서 유튜브에서 공연 영상들을 많이 찾아봤었다. 세상에는 자신이 녹화한 영상을 유튜브에 올려주는 착한 사람들이 많다. 그 영상들을 음악가, 공연장, 공연 날짜별로 분류해서 보여주는 기능을 하는 서비스가 인디 셋리스트이다.

DB는 Firebase의 Cloud Firestore를 이용했고, 이후 관리용 웹페이지를 위해 파이썬과 Flask로 웹 서버를 만들고, 관리자 인증을 위해 Firebase의 Authentication을 이용했다. 공연 정보, 영상 정보를 수집하기 위해 Twitter API, YouTube API를 이용했다.

공연장 공식 채널(홈페이지, SNS 계정 등)에서 공연 정보를 수집하고, 수집한 공연 정보로 생성한 쿼리를 YouTube API를 이용해서 영상 정보를 수집하는 봇을 만들어 알아서 동작하도록 웹 서버를 만드는 것이 처음 목표였는데, YouTube API를 사용하다가 초반에 너무 많은 쿼리를 요청해서 사용 제한이 걸렸다. 사용량을 계산해보니 무료로 제공해주는 사용량은 음악가 10명의 공연을 검색하는데도 부족했다. 유튜브에서 하나씩 검색해서 Firebase 콘솔에서 추가하기에는 너무… 힘들었다. 그렇다고 Python 스크립트를 만들바에 차라리 관리용 웹 페이지를 만들어버리자 생각을 해서 만들어버렸다. 덕분에 공연 정보와 영상을 폭풍 수집할 수 있었고 지금은 제법 데이터가 많이 쌓여서 사람들에게 소개할 수 있는 서비스가 되었다. 음악가와 공연장은 요청을 받으면 바로 추가 가능해서 주변 사람들에게 혹은 서비스 사용자들에게 제안을 받고 있다.

읽었던 책들

2년 전 책 모임에 처음 참가했다. 평소에 IT 관련 서적 말고는 책을 전혀 읽지 않아서 책을 더 읽고 싶은 마음과 다른 사람들의 생각을 듣고 싶은 마음으로 참가했다. 2년 동안 여러 책을 읽었고, 매번 참가하지는 못하지만 좋은 책들을 많이 알게 됐다. 2019년에 읽은 책 목록은 다음과 같다.

올해 읽었던 책 중에서 단 하나의 문장이 제일 좋았다. 작년에 정세랑 작가를 알게 된 것처럼 구병모 작가를 알게 됐고(너무 늦었지만!), 이야기가 너무 재밌어서 금방 읽었기 때문이다. 그 책의 단편 중 ‘한 아이에게 온 마을이’라는 단편은 어딘가에 존재할 것만 같은 이야기라서 조금 소름이 돋았고 읽으면서 조금 힘들었다.

책을 읽고 나서 한 가지 아쉬운 건, 책을 읽고 나서의 감상을 모임에서 얘기하고 끝냈다는 것이다. 내년에는 감상을 간단하게라도 기록하려고 한다.

Please YouTube Playlist

Please Playlist GitHub

애플 뮤직에는 내 취향의 재생목록들이 많다. 안드로이드 유저가 된 후로 애플 뮤직은 안쓰게 됐는데, 재생목록 만큼은 포기할 수가 없었다. 처음에는 재생목록에 있는 곡들을 전부 복사해서 텍스트 에디터에 붙여넣기 한 다음에 파싱과 문자열 바꾸기를 적절하게 수행해서 곡명과 가수명으로 정리한 다음에 유튜브나 VIBE 앱으로 재생목록을 만들어서 하나씩 곡을 추가 하는 작업을 했었다. 하지만 어떤 재생목록은 4, 50 곡은 넘게 들어 있어서 작업을 포기한 적도 있다. 그나마 다행으로 VIBE 앱에서는 재생목록을 캡쳐해서 불러오기하면 알아서 추가해주는 기능이 있는데, 곡 수가 많으면 재생목록을 여러 장 캡쳐하는 것도 일이라 좀 더 쉬운 방법을 찾게 됐다. 유튜브 뮤직은 재생목록을 만들어주는 API를 제공해서 애플 뮤직에서 재생목록을 잘 가져와서 곡명과 가수명만 잘 뽑아낸다면 유튜브 재생목록을 만들 수 있지 않을까 생각해서 개발하기로 했다.(VIBE에 재생목록을 만들어주는 네이버 API가 있는지 찾아보니 없었다. 혹시 관계자가 이 글을 본다면 VIBE도 외부에서 접근 가능한 API를 제공해주면 좋겠다. 혹은 직접 개발하고 싶다.)

애플 뮤직의 재생목록은 URL로 공유 가능하다. 웹 브라우저로 해당 URL로 접근하면 애플 홈페이에 곡 이름과 가수, 앨범 커버 이미지 등이 나온다. 왠지 파이썬으로 스크래핑하면 쉬울 것 같아서 크롬 개발자도구로 DOM을 살펴봤다. 필요한 건 곡명과 가수명이라서 곡명으로 검색하니 곡명을 감싼 HTML 태그가 바로 나왔다. 적절한 id와 class 값을 찾은 후, BeautifulSoup으로 곡명과 가수명을 가져와봤는데, 한 번에 성공했다. 애플 뮤직의 재생목록을 가져왔으니 웹페이지를 만들어 보고 싶었다. 디자인에 큰 에너지를 쏟지 않기 위해 Bootstrap을 이용했고, CSS와 조금 싸우고 난 후 애플 뮤직 재생목록만 보여주는 1차 버전을 만들었다.

alt 2016-09-19 01

다음에 구현해야 하는 것은 유튜브에서 곡명, 가수명으로 영상을 검색하고 해당 영상들을 모아서 재생목록 초안을 만들어서 웹페이지에 보여준 후 사용자가 확인하면 유튜브 재생목록으로 만들어주는 기능이다. 근데 걱정이 되는 점이 있는데, 1. 애플 뮤직에서 웹 스크래핑을 막지 않을까? 2. 영상을 찾기 위해 API를 사용하다보면 이전에 IndieSetList 만들 때처럼 사용 제한이 걸리지않을까? 하는 점이다. 일단 완전한 서비스를 구현한 뒤에 해당 문제가 발생하면 더 고민해봐야겠다.

나중에 애플 뮤직에서 재생목록을 가져오는 것을 구현하고 나면 스포티파이 재생목록을 가져오는 기능도 구현하려고 한다. 스포티파이에도 취향에 맞는 재생목록이 많았다.

이미 비슷한 기능을 하는 서비스들이 있는데, 무료 서비스는 없었다. 그래서 직접 개발해보기로 했다. 아마도 API를 사용하려면 애플 개발자 프로그램 등록, 구글 API 사용한도 증가 때문에 서비스 비용을 받는게 아닌가 생각한다.