Wonho Ha

Contact

Who am i

함수형 프로그래밍을 좋아하는 고등학생 프로그래머 하원호입니다.

Experience

LazyPython, Commiter (2019.04.10 ~ NOW)

https://github.com/Las-Wonho/LazyPython

Pure functional programming을 할 수 있도록 도와주는 python 라이브러리입니다. Scala의 cats effect에 많은 영향을 받아 제작하게 되었습니다.

다른 함수형 라이브러리는 사용 방법이 굉장히 알기 어렵습니다. 그래서 저는 LazyPython의 인터페이스를 설계할 때 EDSL를 적극적으로 활용할 수 있도록 고려하였습니다. 사용자 친화적인 인터페이스를 설계하면서 문서화도 같이 하게 되었습니다. 마크다운으로 사용법을 적고 실제로 동작하는 예시 코드를 작성하기도 하였습니다. 이러한 작업을 하면서 서로 다른 사용법을 발견하였고 조금 더 일관적인 디자인을 달성할 수 있었습니다.

프로젝트를 진행하면서 테스트 코드에 관한 필요성이 커졌습니다. 테스트 코드가 있었으나 실제로 기능하고있지 않았습니다. 저는 CircleCI를 깃헙과 연동한 후 CI 작업을 진행하였고 테스트 코드를 보강하여 현재 커버리지 100%를 유지 중 입니다.

이 라이브러리를 단지 재미로 만든 것이 아니라 실제로 활용할 수 있을 정도의 기능을 원하였습니다. 따라서 웹 프레임워크인 sanic을 LazyPython친화적이게 wrapping한 functional sanic이라는 라이브러리를 제작하였습니다. 이러한 라이브러리들을 사용하여 Noticification 이라는 간단한 웹서버를 제작하였습니다.

Buzzvil, Server Engineer (2019.01.07 ~ 2019.02.28, Internship)

광고를 서빙하는 서버를 작업하였습니다. ElasticSearch, MySQL, Redis, Docker, AWS, Sentry를 사용하였으며 Django로 제작된 서버에서 작업을하였습니다.

많은 코드베이스가 있는 프로젝트였기에 레거시를 이해하는데 어려움을 겪었습니다. 따라서 git log를 처음부터 따라 읽기 시작하였고 어느정도 구조를 잡을 수 있었습니다.

제가 맡았던 일은 애드네트워크를 연동하는 일이었습니다. 기존에 연동이 되어있던 애드네트워크를 새로운 버전으로 수정하거나 새로운 애드네트워크를 연동하는 일이었습니다. 이 과정에서 Server2Server Integration을 경험하게되었고 여러 오류사항을 체험해보았습니다. 또한 이러한 API호출과정을 테스트코드로 작성하였으며 내부 광고처리 로직을 볼 수 있는 기회가 있었습니다.

Skill

  • Python, Java, Golang, Scala

  • Tensorflow, Keras, Spring Boot, Sanic, Django, Koa, Express

  • MySQL

  • Git

  • ISTQB

More

I Organize Sadistix Coders

Sadistix Coders는 코딩을 잘하고 싶은 사람들이 모인 동아리입니다. 이 동아리 멤버들은 애자일, 소프트웨어 장인정신에 바탕을 두고 있으며 함께 성장해나가고 있습니다. 이 동아리에서는 매주 페어 프로그래밍을 하고 그 코드를 리뷰합니다. 그리고 좋은 책이나 자료, 정보들을 공유하며 발표를 진행하기도 합니다. 이러한 조직을 이끌어나가면서 함께 성장하는 방법에 대하여 많이 고민하였습니다. 처음엔 어색하고 소극적이던 분위기가 이제는 활기차고 토론이 이루어지는 장소로 바뀌었습니다. 물리적인 거리를 줄여 이야기 편한 환경을 구성했습니다. 그리고 인원이 15명이 넘는 큰 그룹이었기에 작은 그룹으로 쪼개서 이야기를 꺼내기 쉬운 분위기를 만들었습니다. 매주 활동이 끝난 다음엔 회고를 진행합니다. 이러한 동아리 문화가, 활동들이 너무나 행복한 것 같습니다.

I Love Study

저는 책 읽고 공부하는 것을 좋아합니다. 어릴 때부터 부모님이 책읽는것을 장려하셨습니다. 자본론이나 뉴턴의 프린키피아, 홉스의 리바이어던과 같은 책들을 이 시기에 자주 읽었습니다. 최근에 읽은 책은 CSAPP(Computer Systems: A Programmer's Perspective)함께 자라기라는 책입니다. 컴퓨터 구조를 잘 몰랐기에 추상화되지 않은 내부 동작을 알고 싶어서 CSAPP책을 읽게 되었습니다. 저는 매주 서점에 들러 읽고 싶은 책이 있는지, 어떤 책들이 새로 나왔는지 살펴봅니다. 저는 책으로 공부하는 것뿐만 아니라 다양한 언어를 공부하는 것을 좋아합니다. Python, Lisp같은 동적언어부터 C++, Rust 같은 정적언어, Scala, Elixir와 같은 함수형 언어 등, 다양한 언어 종류를 공부하였습니다.

I Like Anime

일본어를 어느 정도 할 수 있습니다. 그리고 일본 개발 커뮤니티인 PythonJP에서 가끔 활동하고 있으며 2019 ScalaMatsuri에 자원봉사 스태프로 참여합니다. 이러한 활동을 하게 된 원인은 애니메이션이었습니다. 저는 중학생 때 우연히 애니메이션을 본 이후로 자주 보게 되었습니다. 이러한 취미로 일본어를 자연스럽게 터득할 수 있었습니다. 이러한 취미는 제 공부에도 영향을 주었습니다. 좋아하는 캐릭터를 만들고 싶어서 인공지능을 공부하여 논문을 읽고 구현체를 직접 만들어보는 원동력이 되었습니다.

Inspire Others

다른 사람들에게 영감을 주는 삶을 살고 싶습니다. 제가 배운 것들을 남과 나누면서 더 좋은 세상을 만들 수 있다고 생각합니다. 제가 배우고 생각한 것들을 공유하기 위한 작은 블로그를 운영 중입니다. 오픈소스 활동도 열심히 하고 있습니다. 대부분의 프로젝트를 오픈소스로 공개하고 있으며 번역 활동도 하고 있습니다. 몇 가지 오픈소스 프로젝트에 참여하였으며 저 또한 다른 분들의 도움을 많이 받고 있습니다.

이러한 활동뿐 아니라 저는 여러 모임에서 발표하는 것을 좋아합니다. PyconKR 2018에서 함수형 프로그래밍에 관한 주제로 처음 발표했고 이 경험은 저에게 많은 도움이 되었습니다. 회사에서 인턴을 하던 기간에 TDD에 관한 주제로 사내세미나에서 발표하기도 하였습니다. 최근에는 Golang Korea 5월 Meetup에서 발표하였습니다. 올해 Pycon에서 DSL에 관한 주제로 발표를 할 예정입니다. 이러한 활동들이 개발자의 생태계에 좋은 영향을 준다고 생각합니다.

Software Meister High School

광주소프트웨어마이스터고등학교에 재학중입니다. 학교에서는 Java, C, C++, C#, PHP, Python, SQL, Javascript, 운영체제, 자료구조, 인공지능, 소프트웨어공학등을 배웠습니다. 마이스터고등학교를 선택한 이유는 저의 질문을 일반계 고등학교에선 받아들이지 않는다고 생각했기 때문입니다. 학교에서는 여러가지 분야를 다양하게 경험해 볼 수 있었고 각각 과목마다 프로젝트를 진행하기도 했습니다.