김준기
IT 업계에서 일하고 계시는 보다 다양한 분들을 만나고, 친구들로부터 워낙 대안언어축제가 괜찮다(?)는 얘기를 들어서 참석하게 되었습니다.
(사실 그 친구가 esoteric programming languages에 관심이 많은 녀석이라...)
현재 텍스트큐브 개발에 참여하고 있고, KAIST 전산과(학사)에 재학 중입니다.
저에 대한 더 자세한 정보는 제 개인 웹사이트 http://daybreaker.info를 참고하세요. :)
Ice Breaking : 6x6 Game
게임 규칙
한 테이블에 6명씩 앉는다.
프로젝터로 6x6 보드판을 띄워놓는데 각 칸에는 각종 미션이 적혀있다.
옆 테이블 사람과 자리 바꾸기, 자신이 참여한 가장 성공적인/실패한 프로젝트, 첫사랑 이야기, 자기에 대한 가장 큰 오해, 취미, 가장 듣고 싶은 칭찬, PT 체조(-_-) 등등
돌아가면서 주사위를 두 번 던져 행렬로 칸을 선택하고 해당 미션을 수행한다.
자리 바꾸기가 나오면 옆 테이블에서 현재 미션을 진행 중인 사람과 자리를 바꾼다. (그 사람이 뭔가 하고 있더라도 중간에 끊어서 데려온다)
Ice breaking 용으로는 상당히 괜찮은 아이디어인 듯.
문제점 : 한 테이블로 오는 자리바꾸기와 가는 자리바꾸기가 동시에 일어났을 때 concurrency 문제가 있어서 삼각 교환(?)이 이루어지는 경우가 꽤 있었다.
Project Hours - 자유 프로젝트 (보드게임 만들기)
Silent Hill: 환승 게임 제작 참여
실제 play를 진행하면서 점진적으로 개선하는 것이 짧은 시간에 원하는 결과를 만들어내는 데엔 큰 도움이 되는 것 같다.
일종의 애자일 방법론 체험이라고 생각된다.
대신, 좀더 고도의 설계·사고를 요하는 아이디어는 playable해지기까지 어느 정도 시간이 걸리므로 이런 방식으로 만들기는 힘들 것 같다
실제 프로그래밍 세계에서 이런 케이스로 어떤 것이 있을까?
가장 인상깊었던(?) 게임은 수학여행에서 살아남기였다.
게임 자체는 단순하지만 벌칙과 상벌에 대한 아이디어로도 충분히 재미를 줄 수 있음을 깨달음. 즉, 게임의 구성요소에서 승리와 패배, 혹은 종료 조건이 꼭 필요한 것은 아니란 것.
언어튜토리얼 1, 2 - Haskell
사실 학교 수업에서 functional language로 Scheme/LISP, Ocaml을 다뤄본 경험이 있어 까먹은 내용 다시 복습하는 기분이었지만, 워낙 평소에 잘 안(?) 쓰는 내용이다보니 생각보다 많이 까먹었던(...) 것을 알 수 있었다.
그러나 함수형 언어 자체를 처음 접하시는 분들은 좀 어려워하셨다. 함수형 언어에서는 기존의 생각을 지우고 백지에서 다시 처음부터 체계를 수학적으로 쌓아올라간다고 생각하면 쉬운데, 자꾸 C/Java 같은 언어와 비교해가며 배우려고 해서 그런 것 같다. 이게 보통 일반적인 프로그래밍 언어를 배우는 데엔 도움이 되나 패러다임이 완전히 다른 경우엔 오히려 독이 되기도.
Type inference 과정 추적해보기, 함수형 언어에서 말하는 class, polymorphism, overloading등의 개념을 다시 정리할 수 있어서 좋았다.
Haskell로 구현한 미니 Quake가 인상적이었다.
언어튜토리얼 3 - Smalltalk
말로만 듣던 Smalltalk이 뭔지 알 수 있었다.
일종의 기본 가상 월드가 담긴 이미지 파일 하나를 두고 계속 변경 이력을 쌓아가는 방식으로 하나의 프로그램이 만들어진다는 과정이 특이했다. 소스코드라고 하면 보통 텍스트파일 형태로 된 것을 생각하는데 GUI 구성이 결합된 작업 공간 자체가 소스코드의 역할을 한다는 점에 많은 사람들이 혼란스러웠던 것 같다.
Smalltalk UI 사용하는 것이 조금 복잡(?)했지만 일단 익숙해지니 무엇이든 해킹해 밑바닥까지 내려갈 수 있겠다는 생각이 든다.
위의 두 언어튜토리얼을 들으면서 느꼈던 점은, 이미 어느 정도 고정된 세계관(?)을 제공하는 "대중" 언어(C, C++, Java, ...)들과 달리 이런 언어들은 프로그래머가 자신만의 사고 체계를 그 언어 자체로 스스로 구축하게 만든다는 특징이 있다는 점이다. 이것은 DSEL로 그대로 적용되기도 하고, 이런 점이 이들을 또다른 쓰임새 있는 특별한 존재로 만들어주는 것 같다.
Project Hour - Media Art (II)
내가 스웨덴 교환학생할 때 KTH(Kungliga Teknisk Högskolan)에서 들은 Music Technology & Musical Communication 수업에서 사용했던 비디오 처리 프로그램인 EyesWeb과, 이곳을 통해 배운 Scratch, 그리고 이 둘을 연결해주기 위한 Python 데몬을 하나 만들었다.
아이디어는 웹캠으로 실시간 캡처한 영상에서 사람의 팔, 다리, 손, 머리 좌표값을 읽어 Scratch로 보내 사람과 똑같이 움직이는 졸라맨을 만들어보려고 했던 것.
결과는 삽질만 하다가 미완성.
EyesWeb이 윈도 전용인데다 Parallels에서는 iSight를 인식하지 못하는 문제가 있어 다른 분의 윈도 노트북을 이용했는데, 웹캠이 동작하다 안 하다 해서 테스트가 힘들었다.
내 맥북프로에서 Python 데몬을 돌렸는데 이때 Open Sound Control 프로토콜을 해석해주는 라이브러리(SimpleOSC 0.2.5)를 하나 가져다 썼다. 그런데 아무리 해도 아무런 패킷 수신이 발생하지 않아서 패킷스니퍼까지 동원한 끝에 결국 그 라이브러리 자체의 문제임을 알아냈다. orz 직접 소켓 열어서 받으니 잘 받아졌으나 이미 시간 종료.
LETS (지역화폐를 통한 소통 시간)
특정한 지역에서만 지역적으로 사용 가능한 신뢰 기반의 가상 화폐 개념을 통해, 사람들 사이에서 자유롭게 서비스의 유통이 일어나고 서로 학습하는 공유를 실현하는 시간이었다.
"세 사람이 길을 가면 그 중 반드시 스승이 있다"라는 말과 잘 어울리는 듯?
배운 것
인터넷 중고서점 정보 (from 이명은)
PHPUnit 기초 사용법 (from 홍민희)
RoR 맛보기 (일부, from 아샬) - 이상하게 아샬님은 땀 이체가 안 되더군요..;;
가르쳐준 것
오픈소스 프로젝트 참여 방법
Subversion + Trac 설정하는 방법