생물정보학 S/W 교육을 마치고

얼마 전에 썼던 지난 5일간의 교육이 드디어 끝났습니다. 준비 기간을 포함하면 8일 정도 되는데, 빡빡한 일정으로 끝내고 나니까 무척 뿌듯하고 감동의 밤이었습니다. 🙂 수강생 분들께서 맛있는 밥을 사 주시고 해서, 배부르게 먹고 와서 자느라 배가 안 꺼져서 한참을 잠을 못 자고 뒤척였지만.. 킁.

이번 워크샵은 다른 분들도 대안언어축제나 코드레이스 같은 공개 행사에서 보신 전통적인 형식에서 벗어난 학습자 중심의 참여가 풍부한 코스를 구성하려고 많은 노력을 했습니다. 그리고, 계획을 착실하게 따르기 보다는, 시시각각의 상황에 맞는 최적의 다음 행동을 고려해서 계획을 계속적으로 수정했습니다. 그래서 원래 계획에 있던 것들 중에 못한 것도 상당히 많았지만, 그렇게 했기에 더 나은 것을 전해드릴 수 있었다는 점에서, 원래의 목적을 잘 살린 것 같아서 마음이 좋습니다. 🙂

준비 기간 중에 코치들끼리 같이 공부한 책에서 몇 가지 방법을 도입해서 실험을 해 봤던 것도 대부분 결과가 나쁘지 않았습니다. 강규영씨가 후반기에 질문의 답을 학습자가 이미 알고있는 사실로 부터 연역적으로 알아낼 수 있도록 계속 질문을 던져주는 방법을 시도해 보았는데, 몇 번은 정말로(!) 성공했었고, 처음부터 여러 분들의 개인적인 성장 단계를 세밀하게 파악했더라면 더 좋은 결과를 얻을 수 있지 않았을까 합니다. 그리고, “학생들의 입을 열기” 기법 몇 가지도 시도를 해 보았는데, 영향이 뚜렷하게 있지는 않았지만, 후반기에 활발하게 질문하시는 분들이 많이 늘어나기는 했습니다. 무엇보다도, 학습자의 성취감과 상태를 구체적으로 고려하게 되어서 재빠르게 대응한 것은 책에서 얻은 좋은 결실인듯 합니다. 그렇지만 다른 단계에서는 성취감 관리가 약간 부족했던 것은 아쉬움이 남습니다.

개인적으로는 첫 날에는 하려고 하는 이야기도 하다가 까먹고 그랬었는데, 점점 말하는 것에 좀 더 익숙해진 것이 좋았고, 한 사람이 말하는 동안에 다른 사람이 보고 있다가 넓은 시야로 보고 말을 잇는 페어 티칭의 위력을 느낄 수 있었습니다. 오히려 너무 상세하게 미리 준비하는 것 보다, 2명 이상이 페어로 상황에 맞게 이야기 하는 것이 더 생생하고 시의적절한 이야기가 많이 나왔던 것 같습니다.

4일째에 냈던 숙제는 아무래도 너무 많아서 아무도 안 해올 것 같았는데, 한 분이 집에서 새벽까지 해 보시고서는 그 다음 날 아침에 와서 주변 분들에게 숙제가 재미있어서 열심히 해 봤는데, TDD로 했더니 자신이 전에 짰던 코드들 보다 훨씬 질이 좋았다는 걸 말씀하시는 것을 듣고는 무척 뿌듯했습니다. 그리고 마지막 날에는 새벽 4시 넘어서까지 숙제 하신 분도 있었습니다. 숙제하느라 밤새신 분들에 감동해서, 아침에 가는 길에 사진을 인쇄해서 모든 분들의 이름을 외워서 아침 1문장 발표 시간에 개개인의 이름을 불러드렸는데, 한 분이 무척 헷갈려서 틀릴까봐 고민을 많이 했는데, 결국 다 맞아서 안심.. ^.^;;

끝나고 모여서 봤던 교육평가에서는 실명제 평가의 위력인지(-O-) 굉장한 점수가 나왔는데, 그래도 교육을 받는 동안에 많은 분들이 느끼셨던 마음이 그대로 전해지는 것 같아서 짠~ 하는 마음이..

저도 이제 내년에는 생물정보분야로 대학원에 진학하려고 하는데, 분야의 많은 분들을 알게 된 것도 좋은 기회였고, 사용사례 같은 것들과 회사나 연구실에서 어떤 것이 필요한지도 어렴풋이 알게되어서 개인적으로도 많은 도움이 되었습니다. 이런 좋은 기회를 같이 할 수 있었던 30분의 교육생분들과 다른 코치분들 모두 정말 감사합니다. 상상을 초월하는 놀라운 열의 때문에 이 겨울에도 강의실이 무척 더웠던 기억은 무척 오래 갈 것 같습니다. 🙂

참고: 교육 중에 사용된 정보 대부분은 NGIC 위키에 공개되어 있습니다.

28명의 Io 프로그래머 탄생~

이번 주 초부터 1주일간의 일정으로 『생물정보학 소프트웨어 개발방법 워크샵』을 진행하고 있습니다. 곁에 있으면 하루 종일 배울 것이 솔솔 들어오는 세 분, 김창준, 김형용, 강규영씨와 함께 코치로 참여하고 있는데, 숭실대학교에서 하루종일 하고 있습니다. -O-

시작 전에는 2박 3일 합숙도 다녀오고, 나름대로 준비를 열심히 했지만, 그래도 늘 빠듯한 일정에 쫓기고 피곤한 것이.. 하루 종일 수업하는 초등학교 선생님들 목 아프다고 그러던 것이 이제서야 고마운 생각이 드네요.

제가 참여하지는 않았지만, 지난 번 워크샵까지는 주로 파이썬으로 진행을 했다고 합니다. 그렇지만, 모두가 모르는 언어를 공통으로 새로 배우면서 시작하는 효과를 위해 실험적으로 상당 부분을 Io로 여러 XP 프랙티스를 실습하고 있습니다. 즉, 이미 한국에 28명의 새로운 Io 프로그래머가 탄생한 것! (한국언론식 부풀리기를 약간 이용 -.-;)

저도 Io를 처음 볼 때, 굉장히 서먹서먹한게 괄호, if, Sequence 등 온갖게 다 거슬리다가 차차 적응을 했었는데, 놀랍게도 이번 교육에 참가하시는 참가자분 28명 모두 거의 문법에 대한 설명을 하지 않았음에도 불구하고, 1 페이지짜리 위키에 적은 짧은 가이드를 읽으시면서 순식간에 적응해서 코딩을 하는 장관을 연출하였습니다! 강의실 곳곳을 돌아다니면서 봐도 모든 모니터에 “abcd” println이나 x := (y – z) abc 이런 것 타이핑하고 계신 것 보고 있는게 마치 앨리스가 굴에 들어간 기분이더군요~

돌아오는 버스에서 여러 가지 생각해 보면, 아무래도 모두가 다 모르는 언어라는 점이 크게 작용한 것 같습니다. 만약에 파이썬이나 자바 같은 언어로 했다면, 모르는 분도 있고 아는 분도 있기 때문에, 아는 분은 문법 설명하면 졸리고 지루해지는 감이 있는데, 모르는 분은 또 따라가기 힘들고 옆 사람들이 알고 있다고 생각하면 쉽게 물어보기도 힘들지 않을까 싶네요.

물론, 배우는 분들의 열의에도 매일 놀라고 있습니다. 보통 다른 곳에서 TDD나 리팩토링 얘기를 하는 것을 보고 있으면 듣는 사람들은 대체로 기존의 손에 익숙한 방법과 완전히 다른 것에 적대감까지도 보이기도 하는데, 대부분 분들이 적극적으로 생판 처음보는 언어로 가이드를 대체로 지키면서 하시는 것을 보고 많은 감동을 받았습니다. 저도 앞으로 다음학기에 들을 미적분학-_-과 유기화학-_-, 미생물학-_- 열심히 해야겠다는 다짐을 해 봅니다;;

파이썬 IDE가 쓸만한 것이 없는 이유?

파이썬 IDE로는 BoA 건설역군^^이나 상용인 WingIDE 같은 것들이 대표적입니다. 파이썬에 포함된 IDLE도 있지만, 다른 IDE 들에 비하면 IDE라기 보다는 그냥 에디터와 커맨드라인을 합쳐놓은 것 정도라고 할 수 있겠지요.

그동안 파이썬 IDE가 좋은 것이 잘 안 나오는 이유는 무엇인가! 에 대해 돈이 안 돼서 안 나온다, 사용자가 별로 없어서 안 나온다 등등 여러가지 분분했는데, Thinking in Java/C++/Python 씨리즈로 유명한 브루스 엑켈씨가 새로운 의견을 내놓았는데, 제법 설득력이 있군요.

파이썬은 이미 입력할 것들이 충분히 짧기 때문에, 자바같이 1000타 코더가 배출될 정도로 입력할 필요가 없어서, IDE가 생산성 향상에 별 필요가 없다는 주장입니다. dir()만 해 보면 뭐가 있는지 대충 보이고, 인터랙티브 모드에서 시험해 보면 오토 컴플리션 없이도 나름대로 편하게 개발할 수 있다는 것입니다.

물론, 뭐 있어서 나쁠 것은 없겠지만, 저도 아직까지 eclipse PyDev가 좋다는 말만 듣고, 아직까지도 별로 쓸 생각은 안 드는게.. 뭐시기가 거시기 한 것 같네요~ 므흐흐…

그렇지만… wxPython의 노가다 앞에서는 무력해지는 파이썬의 생산성.. -.- wxPython을 위한 완벽한 IDE에 목이 말라요!

꼬릿말: 그나저나, 그럭저럭 괜찮은 명령행 히스토리 자동완성 모듈이 나왔군요~

PyCon2006 앞으로 1주일

늘 열리던 워싱턴DC가 아닌 텍사스에서 열리는 PyCon 2006이 1주일 앞으로 다가왔습니다. 작년까지는 거의 항상 3월 중순에서 말 사이에 했지만, 올해는 2월에 하게 되었습니다.

간단하게 올해의 PyCon 하이라이트를 정리해 보자면,
올해의 키노트는 24일에 Plone 개발자들, 25일에는 귀도가 “파이썬의 현상태”에 대해, 26일에는 파이썬으로 된 프로그램 중에 가장 많은 엔드유저를 확보하고 있는 BitTorrent의 Bram Cohen씨가 하게 됩니다. 이 중에서, Cohen씨는 독특하게도 기조연설을 인터뷰 방식으로 하겠다고 하고 있어서, 참가자들이 미리 질문을 올려 놓으면 그에 대해 대답하고 덧붙이는 방법으로 하겠다고 합니다. 재미있을 것 같네요. 🙂

강연/연설 들은 상당히 많은 세션이 배정되어 있는데, 작년에 비해서 꽤 늘어난 것이 파이썬 개발자들의 수가 확실히 늘고 있는 느낌이 듭니다. 작년 PyCon과 OSCon에서 상당히 인기를 끌었던 IronPython 세션의 후속편도 준비되어 있는데, 이번에는 Hugunin씨의 implementation 세션 외에도 MS의 다른 직원의 .NET 스크립팅 발표도 있습니다. 그리고, 웹 프레임워크 계에서는 역시 TurboGears와 Django, Zope 모두 마련되어 있고, 23일에도 상당히 많은 시간이 배정돼 있어서 역시 열띤 토론과 스프린트가 있을 듯 합니다.
그리고, PyPy의 구조에 대한 세션, Stackless의 사례, reST, docutils 같은 늘 나오던 사람들도 나와 있고, 사업에 파이썬을 사용하는 것, 엠베디드에서의 활용 사례, 노키아 S60의 사례 같은 것에 대한 발표도 있습니다.

작년 대안언어축제에서도 했던 OST를 위해 공간이 마련되어 있는데, 작년 PyCon 사진을 보고 우루루 바닥에 앉아 얘기하는 것들을 부러워했었는데, 올해도 PyCon에서 재미있는 이야기가 많이 나올 것 같아서 참 아쉽게 되었네요. 🙂

이번에는 RVSP로 실황 중계도 있고 녹화도 할 예정이라고 하니까, 직접 참가하지 않더라도 현장의 상황을 볼 수 있어서 무척 좋을 것 같구요. 24일에는 모여서 보드게임도 한다고 합니다. 🙂 그리고 참가자들 중에서 워낙 유명한 사람이 많다보니, 키사이닝 파티가 아니라 북사이닝 파티를 할 수 있을 정도라고 하니까 참 부럽군요~

PyCon의 더 자세한 이야기는, 곧 PyCon에 참가하러 텍사스로 떠나시는 OSK의 이만용이사님께서 돌아오시면 파이썬마을 번개를 한번 해서 듣는 자리를 마련 하도록 하겠습니다~ ^^

굴소스버섯볶음밥

오늘은 왠지 새로운 메뉴에 도전해 보고 싶은 마음에, 어디선가 본 듯한 재료들을 마구 섞어서 볶음밥을 만들어 봤습니다. 이히히.

퍼키식당의 굴소스버섯볶음밥~

굴소스버섯볶음밥~ 볶다가 맛을 보니, 왠지 파인애플이 들어가면 더욱 맛있을 것 같아서, 냉장고에 있던 후르츠 칵테일을 살짝~ ^__^

원래는 양송이와 표고를 쓴다는데, 집 앞 슈퍼에 안 팔아서.. -O- 감으로 대충대충 만든 순서를 적어 봅니다. 🙂

그런대로 맛있군요! 🙂 다음엔 칠리새우볶음밥에 도전을!

불여우 빠른 검색

불여우 빠른 검색 기능을 사용하면 주소창에서 바로 검색어를 입력할 수 있어서 여러모로 편리합니다. 그런데, 구글이나 네이버 검색은 UTF-8을 지원하기 때문에, 쉽게 연결 기능을 정의해서 쓸 수가 있지만 네이버 지식인이나 네이버 사전은 검색어를 EUC-KR로 입력해야지만 받아주기 때문에 그냥은 쓸 수가 없습니다.

그래서, 간단하게 하나 만들어서 쓰고 있던 것을 친구가 물어봐서 공개해 봅니다. 으흐흐. (더 좋은 방법이 있으려나 =3)

  • 네이버 지식인: http://openlook.org/cgi-bin/eucredir.cgi?t=naverkin&q=%s
  • 네이버 사전: http://openlook.org/cgi-bin/eucredir.cgi?t=naverdic&q=%s
  • 연세한국어사전: http://openlook.org/cgi-bin/eucredir.cgi?t=yonsei&q=%s
  • 서울지하철공사: http://openlook.org/cgi-bin/eucredir.cgi?t=smrt&q=%s

별 것 아니지만, 직접 돌리고 싶으시면 trac browser에서 다운받아서 쓰세용. 크흐;

시간표 최적화 프로그램 (이번엔 GUI다~)

지난 학기에 복학하는 기념으로 좋은 시간표를 만들어보고자
시간표 최적화 프로그램을 만들어서 열심히 돌려서 한 학기를
널럴한 시간표에 즐겁게 보냈습니다.
그래서 이번 학기도 어떻게 좀 더 삶을 이롭게 하고자 한번 돌려
봤는데, 글쎄 학교에서 웹 디자인 수정을 하나도 안 하는 바람에
연도만 바꾸니까 바로 돌아가는!.. 한편으로는 너무 시시하게 끝나서 실망한 나머지, 괜시리 일거리를 만들어서 GUI 공부를 한번 해 봤습니다. 그래서 이번에는 wxPython 버전으로 껍데기를 씌웠습니다. ^^ (기왕이면 누구나 쓸 수 있는 윈도우용 GUI 프로그램으로~)

OptiTT wxPython GUI

사실 파이썬은 오랫동안 해왔지만, 그동안 GUI에는 관심이
전혀 안 생겨서, wxPython이고 Tkiner이고 “Hello, World!” 버튼 1개 있는 것
말고는 만들어 본 적이 없는데~ GUI 툴킷을 배워서
써먹어 보고 싶은 마음에 둔 곳이 하나 있어서, 간단한 것
해보려고 해봤습니다. 그런데, 생각보다 훨씬 삽질이네요. -O-;
파이썬이라고 간단하다더니 이런 삽질을!!!

시간표 프로그램으로 돌아가서ㅡ. 저기 보이는 그리드 박스에
학정번호와 선호도, 그룹을 입력해 주면, 자동으로 학교
홈페이지에서 시간표와 학점을 긁어와서 가능한 모든 시간표
배치를 시도하여 최고 점수의 시간표를 HTML로 뽑아주는 프로그램입니다. 컴과 학생들은 다들 한번씩은 생각해봤음직한~ 으흐;;

앞으로도 되도록이면 GUI 하는 일을 줄여야겠다고 굳게 다짐해 봅니다. -O-;

다운로드:

힌트: optitt.py에 있는 get_subjectinfo() 함수를 각 학교 수강편람 홈페이지에 맞게 고치시면 다른 학교에서도 쓸 수 있습니다.

lambda는 영원히..

얼마 전, 2.4에 들어온 itemgetter, attrgetter와 2.5에 들어온 partial과 비슷한 새로운 제안으로 methodcaller라는 obj.meth(*args, **kwds) 를 줄여쓸 수 있는 뭔가를 만들자고 제안이 올라왔었습니다.
그에 대한 대답으로, FreeBSD의 bikeshedding 만큼이나 Python-Dev에서는 전통적인 여러 사람이 별의 별 희한한 자기 입맛에 맞는 문법을 마구 올려놓고, 서로 여기저기 투표하기만 하고 결론이 안 나는 상황이 꽤 오랫동안 있었습니다. lambda 를 더 짧게 쓰는 방법을 만들자, 그런 것 자꾸 만들면 복잡하다 그냥 def 하자, def를 리턴하는 키워드로 만들어서 안에 집어넣자 등등.. 나올 수 있을 만한 얘기는 거의 다 나왔습니다.

이에 대한 귀도의 답변: Let’s just *keep* lambdaPython 3000에서 lambda와 함수형 프로그래밍 함수들을 빌트인에서 빼려는 계획을 귀도가 그동안 여러번 언급을 했었는데, 그냥 lambda를 유지하고 다른 문법 논의는 다들 수긍할 만한 대안이 안 나왔으니 앞으로는 얘기하지 말자는 결론을 올렸습니다.

그동안 귀도의 눈치를 보며 숨을 죽이고 있던, 한국언론식으로 부르자면 이른바 “원로”라고 부를 만한 사람들이 우루루 귀도의 이런 선언에 전적으로 찬성한다는 댓글을 마구 올렸습니다. 오늘의 교훈은 “이도 저도 아니면 그냥 원래대로 놔두자.” 정도 랄까요? -O-;;;

구글에서는 파이썬을 어디에 쓰나요

SDForum Python Meeting이라는 모임에서 PSF 멤버이자, ASF의 의장이기도 하며, 구글 직원이기도 한 Greg Stein에게 한 호기심 많은 파이썬 사용자가 인터뷰를 해서 정보를 마구 캐내어 왔습니다. (SDForum은 실리콘 밸리의 개발자들의 기술 사교모임 비슷한 것 같군요. 흐흐) 파이썬을 쓴다고 하기는 하고, 귀도를 데려가는 걸 봐서 뭔가 하는 것 같긴 한데, 구체적으로 어떻게 쓰는지는 베일에 싸여 있었던 것이 이제 명확히 드러났습니다!

글에 구체적으로 나와 있지만, 주요한 몇가지만 요약하자면,

  • 구글은 주로 C++을 쓰기 때문에, C++ 코드를 SWIG으로 감싸서 쓰는 경우가 많고 점차 늘어나고 있다.
  • 다른 언어간의 통신을 위해 자체적인 바이너리 기반 RPC 프로토콜이 있다.
  • 구글 내부의 모든 파이썬 코드는 반드시 PEP-8을 따라야 하는데 인덴트는 2칸으로 하는 것이 차이가 있다.
  • 구글의 빌드 시스템은 완전히 파이썬으로 돼 있고, 의존성 관리, 주기적 빌드 등 모든 것을 관리한다.
  • RPM같은 내부 패키징 시스템이 있는데 파이썬으로 된 것이다.
  • 서버 관리와 서버간 정적 데이터 전송 등에 파이썬을 쓴다. 물론 모니터링, 리포팅, 로그/분석 등도 파이썬이다.
  • code.google.comGoogle Groups 등 일부는 프론트엔드 서비스까지도 파이썬으로 되어 있는 것도 있다.
  • 구글에서는 파이썬을 어울리는 적소에 사용하고 있기 때문에, 파이썬의 속도가 문제되는 경우는 거의 없다. 퍼포먼스가 필요한 경우에는 C/C++라이브러리를 SWIG으로 긁어서 사용한다.

그 외에도 구글이 MySQL을 주로 사용하고 있는 이유가 무척 흥미로운데, 상용 DBMS를 쓰던 시절에 벤더에게 새로운 기능을 추가해달라고 요청했을 때 심지어 개발자 비용을 대겠다고 해도 거절을 당한 경험을 하고서는, 그 다음부터 오픈소스로 바꿨다고 합니다. 그리고, 오픈소스가 아님에도 불구하고 자바를 쓰는 이유는 워낙 좋은 자바 프로그래머 인력이 많기 때문에 어쩔 수 없이 그러는 것 같군요. 흐흐.;;
더 재미있는 것들이 많이 내용에 나와 있으니 관심 있는 분들은 읽어보세요~

자.. 이제 느려서 파이썬 아무데도 못 쓰겠다고 하는 사람? =3=3