WWDC행사를 마지막으로, 

이후 일정을 뒤로하고, 

귀국할까 하는 생각이 들었다. 





Posted by hatemogi 트랙백 0 : 댓글 2
WWDC에 성능 관련한 주제가 여러개 있는데, GCD(Grand Central Dispatch)와 OpenCL가 주요하게 소개되고 있다. MacOS X Leopard의 다음 버전인 Snow Leopard에 적극 활용되는 기술들인 듯. GCD의 경우 멀티코어CPU에서의 병렬처리를 돕는 기술인것 같고, OpenCL은 CPU와 GPU를 모두 활용할 수 있는 병렬 컴퓨팅 기술인것 같다. 

내가 쓰고 있는 MacBook Pro 15"만 하더라도, 듀얼코어 CPU한장에다가 GPU는 두장이 들어있다. 화면 디스플레이에는 전력소모가 적은 Integrated GPU만을 쓰고 있기때문에 나머지 한장은 완전히 놀고 있는 상황인거지. (Integrated GPU의 경우역시 거의 놀고있는걸테고 말이다)


OpenCL사이트의 소개문서에서 발췌한 그림이다. OpenCL용 C소스코드를 런타임에 원하는 타겟 프로세서용 코드로 컴파일해서 활용할 수 있다. 상황에 따라 CPU가 될 수도 있고, 아마도 일반적으로는 GPU를 대상으로 할테다. 컴파일된 바이너리는 특정 GPU에 최적화된 코드가 실행될 테고, CPU와는 별도로 병렬 실행되는 구조이다. GPU가 잘하는 일들을 하드웨어 수준에서 빠르게 병렬처리하는 코드를 만들어 활용할 수 있다는 아이디어겠다. (예전의 MMX나 SSE등의 SIMD기술들을 연상시킨다)

OpenCL소스코드는 C소스 비슷하게 생겼는데, 특화된 데이터타입이나 연산자들 함수들이 들어있다. 이 소스를 메인프로그램의 C코드에서 읽어들여, CL함수에 컴파일을 요청하고, 결과로 나온 커널을 실행하는 구조. 

(참고로, 아이폰 3G S에서 지원하는 OpenGL ES 2.0의 Programmable Shader의 경우에도 같은 형태의 컴파일/실행구조다)

한참 하이레벨인 루비쪽에서 놀다가, 이런 C코드 수준으로 내려와서 하드웨어 종속적인 사고를 보고 있으니 참 흥미롭기도 하고, 어떻게 보면 참 구차하다 싶기도 하지만, 분명 이런 성능 관련한 주제가 크게 관심있었던 매력적인 분야임은 부정할 수 없다. 

아마도 내가 직접 병렬처리를 활용하게 된다면 이와는 전혀 상관없이 Erlang을 쓰게 되겠지만, OpenCL같은 하드웨어와 밀접한 환경과 아이디어 자체는 흥미롭게 공부해볼 수도 있겠다. 혹시 또 알아? 내가 직접 쓰게되는 일이 생길지, 그 누구도 모르는 거지.

TAG wwdc
Posted by hatemogi 트랙백 0 : 댓글 0
world2009 프로젝트의 목표중 하나는 영어 실력 향상이다. 생각만큼 열심히 하진 않았지만, 2~3개월 북미에서 돌아다니다 보니, 이런저런 요령들이 생겼다. 이제 여행용 서바이벌 영어로는 충분하다고 생각하는 수준. 터득한 요령들을 나열해보면 다음과 같다.

자신있게 얘기한다

영어를 잘 못한다는 생각에 우물쭈물하면서 웅얼웅얼 얘기하면 더 알아듣기 어렵다. 맞건 틀리건 주어와 술어만이라도 또박또박 크게 얘기하는 게 나을 수 있다. 영어를 잘하는게 중요한게 아니라 의사소통 자체가 중요한 것 아닌가? 발음과 엑센트를 고려하되, 정확히 입밖으로 발성한다. 잘못 이해하고, 틀렸더라도 확실하게 얘기해야, 상대방도 내가 잘못 이해한 사실을 명확히 알고, 다시 질문해오거나 넘어간다. 외국인이고, 외국어를 구사하고 있다는 사실을 명심하자. 미국애들은 자기나라 말 말고 전혀 못하는 애들이 대부분이다. 이 정도 얘기할 줄 아는것도 대단한거다. 자신감 갖자.

게다가, 사실상 한국인의 영어실력 결코 떨어지지 않는다. 영어를 잘하는 것처럼 보이는 유럽애들하고 얘기해보면 문법도 마구 틀리고, 특히 스펠링은 완전 저질임을 금방 파악할 수 있다. 우리는 발음과 억양이 저질이지만, 결코 기죽지 말자. 

문장을 끝까지 이어서 얘기한다

머리 속에서 문장 만드느라고 한단어씩 끊어가며 얘기하면 알아 듣기 어렵다. 시간을 갖고 한문장 다 만든 다음에 끝까지 이어서 말한다. 중간중간 발음이나 엑센트가 틀리더라도, 문장을 다 만들어내면 전체 의미를 유추하며 이해해낼 수 있는 확률이 높아진다. 물론 문장자체를 짧게 만드는게 중요하다 하겠다. 

문맥을 고려한다

종종 상대방의 질문을 잘 못 듣는 경우가 있다. 이럴 때는 어림짐작으로 대충 이해해서 답변하거나, 다시 질문해달라고 얘기할 수 있는데, 다시 얘기해도 못알아듣는 경우도 있다. 좋은 대처방법으로는, 문맥을 고려해서 예상되는 질문에 대한 답변을 이어서하는게 방법일 수 있겠다. 예를 들어, '여기 온지 얼마나 됐니?'라는 질문을 했는데 '언제 여기서 떠나니?'라는 질문으로 잘못 들었다 치자. 어쨌건, 현재 문맥은 난 여행중이고, 얘는 현지인이고, 나의 여행일정에 대한 인사치례성 질문임을 파악했다고 생각해보자.  

이런 문맥에서의 답변은 간단하다. 예상되는 질문에 대한 답변을 줄줄줄 이어서 다 얘기하면 된다. 난 언제왔고, 여기 있은지 며칠됐고, 언제 여기서 떠나고, 그 다음은 어디로간다. 참고로 이 여행의 전체 일정은 몇개월이다. 이 정도 얘기하면, 잘못 들은 질문에 대한 정답도 다 얘기해버렸을 확률도 높고, 더 나아가, 앞으로 날아올 질문에 대한 사전 답변도 되어버린다. 게다가 줄줄줄 이어서 얘기하다보면, 스스로 영어를 잘하는 것 같은 착각도 들지 않는가? 
 
질문을 한다

생각해보라. 어떤 문제건, 질문이 쉬운가 답변이 쉬운가. 쉬운 쪽을 얼릉 선택에 자리를 내주지 말자. 일단 질문을 받으면, 문맥에 맞게 줄줄줄 답변을 한 뒤, 얼릉 질문의 주도권을 가져오거나, 최소한 동등하게 주고 받는다. 우물쭈물하며 계속 질문을 받고, 영어가 짧은 이유로 단답형으로 대답하다보면 금방 대화가 단절될 수 밖에 없다. 어차피 여행중 대화라는게 스몰톡이다. 위의 문맥의 질문을 받았다고 하면, 줄줄줄 이어서 대답한 뒤, 상대방 눈치로 보아, 질문에 대한 명맥한 답변이 됐다는 눈치가 보이면, 바로 이어서 질문을 한다. "너는 어디서 왔니? 여기 사니? 거기는 여기서 가까운거니? 지하철로 갈 수 있는 거리니? 그건 그렇고 한국에 와본 적은 있니? 없으면 앞으로 와볼 계획은 있니? 기회가 되면 꼭 한번 와보렴" 이런 질문을 준비해 놓고 주고 받으면, 어느새 의사소통이 되고 있는 스스로를 발견할 수 있다. 정 물어볼꺼 없으면 "여기 날씨는 정말 좋구나. 넌 참 좋은 도시에 산다"같은 멘트도 써먹을 수 있겠다. 핵심은 이런 문장들은 미리 생각해서 만들어 놓을 수 있다는 거고, 어디서나 반복해서 써먹을 수 있다는 거다. 


호응하며 맞장구를 친다

질문의 주도권을 갖고, 상대방의 답변을 듣고 있으면, 이해한 내용에 대해 호응하며 맞장구를 친다. "That's great", "Good for you", "yeah", "awesome", 등등등 긍정적 답변의 다양한 사례를 적절히 때맞춰 호응해줘만 줘도 대화의 템포를 늦추지 않고 이어갈 수 있다. 답변이 끝나기 전에 주요 포인트에 맞춰 다음 질문을 생각해 놓는 다면, 돌아올 질문에 대한 방어책도 될 수 있겠다. 


그러나...

이건 다 영어를 잘하는 척하는 법이다. 실제로 잘하려면 많은 노력과 시간이 필요하겠지. 그래도, 최소한의 자신감을 갖기 위해서 위의 방법들이 도움이 될 수도 있겠다 생각에서 적어봤다. 나름 자신감을 갖고 있던 중이었는데, 오늘 어머니와 통화하다가 이런 얘기를 들었다. 

"그래, 그 비싼 돈 들여 컨퍼런스 참가하는건데, 뭐 좀 알아는 듣고 있는거냐?"

ㅋㅋㅋ. 




Posted by hatemogi 트랙백 0 : 댓글 5

학창시절의 꿈 하나

2009.06.11 09:10 from programming
Creating iPhone Apps that Communicate with Accessories

이번 WWDC의 전체적 관심주제는 당연히 아이폰 개발. 그중에서도 OpenGL ES에 관심이 많았다. 오늘 OpenGL에 관련한 세션이 많았는데, Intro수준의 세션에는 들어가지 않았다. 줄이 너무 길기도 했고, 나중에 동영상으로 봐도 다 따라서 이해할 수 있을 것 같다는 판단 때문이었지. 

같은 시간에 다른 홀하는 세션 중에 위의 제목의 세션이 있었는데, 아이폰과 외부장치와의 통신을 담당하는 API 프레임웍을 소개하고 데모를 보여주는 세션이었다. 

아이폰이 외부 하드웨어와 통신 할 수 있는 방법은 크게 3가지, 블루투스, UART, USB. (WiFi는 논외로 하겠다). 이중에 UART/USB에 관심이 많이 갔지. 그중에도 UART를 이용한 예제는 오래전 학창시절의 꿈을 상기시켜주었다. 


학창시절의 꿈 하나

학창시절에 컴퓨터로 외부 하드웨어를 제어하는 데에 관심이 있었다. 당시 만들었던것이 장난감 탱크를 컴퓨터 키보드로 제어하는 프로그램과 인터페이스였다. 하드웨어 인터페이스 관련 지식은 전혀 없었기 때문에, 당시 통신망에 떠돌던 패러럴 포트 연결한 LED제어 인터페이스 회로도를 구해다가 병렬로 연결해서 쿵짝쿵짝 만들었던 기억이 있다. 

기계적 릴레이 스위칭 회로를 병렬로 이어붙어 별도 공급하는 직류 전원의 +/-를 교체하기 위해 이래 저래 회로를 구성하느라 밤을 샜던 기억도 있다. (당시에 donny형도 함께였고). 프라모델 탱크를 전후좌우로 움직일 수 있는 프로그램을 만들어 PC의 패러럴포트의 4개핀을 이어 4비트로 제어했었고, 추후에 조금 확장해서, RC자동차를 제어하는 모델로 발전시켰었지. 당시 학과 동아리 전시회에도 출품했었는데, 아주 인기 만점이었다. :)

추후에 더 확장하고 싶었던 내용은, PC수준에서 RC자동차의 예상 움직임을 시뮬레이션해서, 원하는 신호를 적절한 타이밍에 내보내서, 실제 움직임이 그와 같은지 확인하는 프로그램이었다. 자동차의 움직임 시뮬레이션이라는 분야가 "Vehicle Dynamics"라는 동역학 분야의 하나라는 사실을 알기위해서만도 학교 도서관을 한참 돌아다녔던 기억이 난다. (찾고 나서 그 방대한 자료와 수식들에 나가떨어졌지만 말이다) 

대학 생활이라는 것이 공부말고 재밌는 것들이 너무도 많았던 나머지, 얼마 지나지 않아 흐지부지되고 노느라 바빴던 것 같은데, 그 먼 기억속의 꿈이 오늘에야 다시 회상되다니, 거 참 신기하다. 

다시 해볼 수 있을까

오늘의 세션도 소프트웨어 개발자 측면의 이야기만 있어서, 어떻게 UART통신을 처리할 수 있는 하드웨어 인터페이스를 만들 수 있을 지는 깜깜하지만, 그래도 시간좀 들이다 보면 만들어 볼 수도 있지 않을까 싶다. 

꿈이라는게 다른 사람들에게도 의미가 있어야한다는 (내지는 경제적 가치로 이어져야한다는) 누구도 정의하지 않은 압박으로 인해 시들어져버린 나만의 소중한 꿈들이 되살아나며, 작은 생기가 감도는 기분이다. 

또다시 어느새 시들해질지 모르지만 말이다. 
TAG wwdc
Posted by hatemogi 트랙백 0 : 댓글 2

극성스런 호들갑

2009.06.09 12:59 from programming
WWDC 키노트

Apple Worldwide Developers Conference의 첫째날. 첫날 아침의 키노트를 듣겠다고 아침 일찍부터 숙소를 나섰다. 일부 극성스러운 사람들은 전날 저녁부터 가서 밤새 기다리는 열성을 보였지만, 난 그보다 잠을 더 사랑하기에 그럴 수는 없었다. 그래도 나름 실제 진행하는 컨퍼런스 룸에서 (참가자가 너무 많아서, 일찍 간 사람이 아니면 다른 홀에서 생중계로 보아야했다) 보고자, 두시간이나 일찍 가서 줄을 섰지만, 결국 생중계로 보게되고 말았다. 생중계도 꽤 볼만하더군, 장비들이 너무 좋아서, 화면도 아주 깨끗하고, 발표자 모습도 클로즈 업해주어서 오히려 보기 좋다고 생각했다. 생중계 홀은 자리 경쟁도 치열하지 않아서 앞자리에서 볼 수 있었고 말이다. 기대했던, 한국 아이폰 출시소식은 전혀 언급되지 않았다. 이제, 한국의 아이폰 출시 관련한 그 어떤 루머도 믿지 않겠다. 춥고 졸린 아침에 밥도 굶고 2시간이나 기다리는 호들갑도 떨지 않겠다.

개발자들, 내지는 geek들

얼마전에 조나단이랑 얘기하다가, 이런 얘기를 한적이 있다. "난 컴퓨터를 다루는 데에는 아주 능숙하지만, 사람들과 어울리는 데는 아주 미숙하다"고. 아마도 이런 특성이 개발자들의 공통된 특성이자 문제점이 아닐까 싶어. 고작 세 번의 해외 컨퍼런스에 참석하지만, 미국의 개발자들도 비슷한 특성이 있어보인다. 

컴퓨터를 상대로 일을 하지만, 결국은 사람을 위한 일을 하는 것 임을 잊지 말아야 할텐데 말이다. 이상하다, 예전 같으면 열광했을 법한 기술들에 대한 얘기들을 들어도 별 감흥이 없다. '음, 그래 좋은거네, 잘했네' 정도? 

그 극성스런 호들갑들이 다 자잘한 행복거리이자 열광의 대상이었던것 같은데 말이다. 그래도 아직 몇가지 내용들은 내 가슴을 뛰게 하더군. 뼈속 깊이 개발자임에는 아직 변함 없겠지. 

이제 무엇이 나의 가슴을 뛰게하는가.


TAG wwdc
Posted by hatemogi 트랙백 0 : 댓글 10

티스토리 툴바