Klaatu, Hope, So Said the Lighthouse Keeper(5:51)

하드보일드는 전날의 하드보일드를 전범으로 간주한다. 심지어 전날의 드러운 감상주의까지 고대로 재현한다. 그래도 깨알같은 활자체의, 마이클 코넬리가 지은 블랙 아이스는 괜찮았다. '나는 내가 누구인지 발견했다.' 번역솜씨가 좋은걸. 어, 이 양반, 크리시 번역한 사람이구나.

삼성 컴퓨터는 수백명의 박사급 인재들이 모여 별로 긍정적이지 않은, 때로는 의아할 정도로 거지 같아 뵈는 컴퓨터를 만들어 내는 회사로 잘 알려져 있다, 있을 줄로 안다. 삼성 컴퓨터의 장점은 이를테면 a/s가 확실하다는 것인데 노트북의 배터리가 고장난 것만으로도 새 것으로 교체해주기도 한다는 소문을 들었다. 문제가 좀 있긴 했다. 예를 들면 후지쯔 노트북은 사고 나서 3년 동안 온갖 비바람에 시달려도 a/s껀이 한 번도 발생하지 않은 반면, 주변에 삼성 노트북을 들고 다니는 사람들은 기분전환도 할겸 자주 '새 것'으로 교체했다.

삼성 노트북을 선전하는 띨빵하게 생긴 로봇 캥거루, '센스캥'은 워낙 바보라서 삼성 노트북을 선택한 것을 후회하지 않는 것처럼 보였다. 그 순진하고 착하게 생겨 먹은 커다란 눈동자를 보고 있노라면... 그 얘기가 아니었지.

칫솔질 하면서 웹 브라우징을 하고 화장실에서 메시징을 하며 약속을 잡고 국 끓이면서 컴파일을 하는 사람은 분명 전세계에서 손에 꼽을 정도로 적을 것이다. 요즘 노트북을 한 손에 들고 한 손으로 코딩을 하거나 디버깅을 하면서 걸어 다니는데, 거리를 지나가던 어떤 녀석이 들고 있던 노트북을 센스로 착각했고, 심지어는 내가 센스깽의 흉내를 내고 있다고 여겼다. 그러면 안 되는데, 잘못 생각한 것이다.

template inline c_element*
hash_table::_get (const c_key& that_key, bool cf)
{
return ((idx = get_index(that_key, cf)) < 0) ? null : &bucket[idx];
}
extern "C" {
namespace hash {
typedef hash_table hash_type;
inline void* get(HND h, char *key) { return *((void**)((hash_type*)h)->_get(key, true)); }
};
}

소스는 그다지 아름답지 못했다. hash::get()함수는 두번째 인수로 진실함(true)을 사용하나, 그 결과값으로 공허함(void)을 얻는다. 그다지 아름답진 않지만 리얼리티 만큼은 싱싱하게 살아 있었다. 알레고리 프로그래밍, 에피파니 프로그래밍, 데시스 프로그래밍, 소울 프로그래밍. 하지만 나는 프로그래밍을 못 한다. 15년 삽질의 중간평가는진실 그대로 공허하고 처참했다.

#define IDX(h) ((((h ^ (h << 4)) >> (3*8 - HLOG)) + h*3) & (HSIZE - 1))

렘펠, 지브, 허프만의 비손실 압축 알고리즘 구현 중 정말이지 우아하다 싶을 정도로 작은 어떤 소스 코드 중의 한 매크로 정의는 저랬다. 대체 어떻게 해서 저런 해시 함수가 나왔을까 싶어 의문을 품었는데, 아니다 다를까 거기에 이런 주석이 달려 있었다: decompression is not dependent on the hash function. the hashing function might seem strange, just believe me. it works. 이걸 작성한 친구는 시프트를 누르기 귀찮다는 이유 만으로 문장의 첫 글자를 소문자로 시작했다. 그래서 믿을만 했다.

사람들이 외면하고 있는 진실인데, html과 마찬가지로 c/c++ 프로그래밍은 20일이면 누구나 배워서 생활에 활기를 불어넣을 수 있다. 그에 따른 즐비한 변명과 거짓말은 우아하게 개무시하면 된다.

모자익에서 최초의 hypertext를 목격했다. 사실 언제 봤는지 기억도 잘 안났다. 문서에 그래프와 수식을 간단하게 포함시킬 수 있다는 점 자체가 경이였다. 지금의 홈페이지는 클릭커블한 링크에 대해 일종의 강박관념을 강요하는 시대다 -- 더 이상 나빠질 수 없는 상태가 되었다. 더 나빠질 것이 없기에 기대하는 것도 없다. 하이퍼텍스트는 어디론가 메뚜기처럼 뛰어다니는 '하이퍼'에만 충실할 뿐, '텍스트'나 컨텍스트는 무시하기 일쑤였다. 표제어 '효리, 드디어 벗다' 밑에 효리가 더워서 점퍼를 벗었다. 라고 씌어 있는 것처럼. 당연히 웹 기획자들의 궤변에 넘어가는 일 따위는 없었지만, 그들의 새로운 직업관과 철학에는 아낌없이 비웃음을 쏟아부었다. 그들의 대가리에 들은 것이라고는 웹이 TV 광고와 얼마나 비슷해 질 수 있을까 하는 정도인 것 같다.

만삼천원 짜리 작업이 잘된 안심을 사다가 스테이크를 해먹었다. 만들 때 포도주를 너무 많이 부어 고기 먹고 대낮부터 알딸딸했던 기억이 갑자기 났다. 어젯밤에는 히히덕거리면서 헤네시 xo를 감사히 마셨다. 그저 저따위 소스 만드는 단순반복 작업에 머리가 확 돌아버릴 지경이어서 일 하다 말고 뛰쳐나와 술을 마셨다.

7시간 동안 넋이 빠져 괄호를 세다보니 담배를 세 대 밖에 피우지 못했다. 체내 니코틴 고갈로 제대로 행복을 추구하지 못하는 실정이다.

울트라 에디터 10.0 이상 버전에서는 소스를 에디트할 때 matching parentheses라는 작고 편리한 기능을 지원하기 시작했다. 그래서 괄호 세느라 눈에 힘주던 가난한 시절은 광속으로 멀어져 갔다. 그런데 왜 ctags를 디폴트로 지원할 생각을 안 하는 것일까. 많은 프로그래머들이 행복해질텐데. 편지나 쓸까?

맛있는 밥 짓는 법

적당한 양의 물을 붓는다.
한 시간 정도 물에 담가 둔다.
전기밥솥일 경우에는 전기 스위치를 누른다.
뜸을 적당히 들인다.
맛있는 밥이 된다.

선배는 내가 밥을 굶는다고 생각해서 쌀을 사다 주었다. '강화쌀' 4kg 짜리의 포장지 뒷면에 적혀 있는 저런 글은 여러 모로 심금을 울렸다. 인스트럭션의 요점: 적당히 잘하면 맛있는 밥이 된다. 한국에 산다는 것이 이다지도 감동적이지는 않았다.

그런데... 얼씨구?
밥 해 놓고 갔네?
오늘은 북어해장국이다.
이걸 먹고 기뻐할 내 얼굴을 떠올리며 신선한 재료를 엄선해 정성껏 칼질해서 만들자.
,