[카테고리:] 문학

  • 봄날의 창가에서

    봄날의 창가에서

    창 밖으로 걸어가는 여인의 모습을 바라보며 나는 잠시 시간이 멈춘 듯한 느낌에 젖어든다. 봄날의 나른한 오후, 이 한적한 카페의 창가에 앉아 나는 무심코 바깥세상을 관찰하고 있었다. 따스한 햇살이 유리창을 통해 내 테이블 위에 부드럽게 내리쬐고, 풍부한 커피 향이 코끝을 간질이는 순간이었다.

    그때 그녀가 나타났다.

    살랑이는 봄바람에 그녀의 연보라색 원피스 자락이 춤을 추듯 나풀거렸다. 어깨까지 살포시 내려앉은 밤색 머리카락은 햇살에 반사되어 금빛으로 빛났다. 그녀의 걸음걸이는 마치 시간을 거스르는 듯한 느긋함이 있었다. 조급함도, 서두름도 없이 오직 자신만의 리듬으로 거리를 걸어가는 모습이 마치 한 편의 시를 보는 듯했다.

    한 손에는 작은 꽃다발을 들고 있었다. 아마도 근처 꽃집에서 막 산 것 같은 들꽃 다발이었을까. 연분홍색과 연보라색이 섞인 꽃들이 그녀의 원피스와 묘하게 어울렸다. 다른 한 손으로는 때때로 바람에 흩날리는 머리카락을 귀 뒤로 넘기는 모습이 무척이나 여성스러웠다.

    그녀의 옆모습은 또 얼마나 인상적이었던가. 조금은 높은 콧대와 부드러운 곡선을 그리는 입술, 그리고 긴 속눈썹 아래 빛나는 눈동자. 그녀의 표정에는 어딘가 가볍게 웃고 있는 듯한 여유로움이 느껴졌다. 마치 자신만의 비밀을 간직한 채 미소 짓는 모나리자처럼.

    그녀가 카페 앞을 지나갈 때, 잠시 걸음을 멈추고 유리창 너머로 안을 들여다보는 듯했다. 우리의 시선이 일순간 마주쳤을까? 그 순간 나는 숨을 죽였다. 하지만 그녀는 잠시 후 미소를 띠며 다시 걸음을 옮겼다. 어쩌면 그저 자신의 모습을 비추는 유리창을 바라본 것인지도 모른다.

    그녀의 뒷모습이 점점 작아지면서, 나는 문득 그녀가 어디로 향하는 것인지 궁금해졌다. 그 꽃다발은 누구를 위한 것일까? 사랑하는 사람을 만나러 가는 길일까, 아니면 그저 자신을 위한 작은 선물일까? 그녀의 발걸음에는 어떤 이야기가 담겨 있을까?

    인생은 참 이상하다. 우리는 수많은 사람들과 스쳐 지나가면서도 대부분의 순간을 기억하지 못한다. 하지만 가끔은, 이렇게 특별한 이유 없이도 한 사람의 모습이 마음속에 깊이 새겨지는 순간이 있다. 아마도 그것은 우리의 무의식 속에 자리한 어떤 기억이나 감정을 자극하기 때문일 것이다.

    창밖으로 보이는 풍경은 계속해서 변한다. 그녀가 사라진 자리에 노부부가 천천히 걸어오고, 그들이 지나간 뒤에는 자전거를 타고 달리는 아이가 나타난다. 그렇게 시간은 흐르고, 사람들은 각자의 목적지를 향해 발걸음을 옮긴다. 하지만 나의 생각은 여전히 그녀에게 머물러 있다.

    다시 커피잔을 들어 한 모금 마시니, 어느새 미지근해진 커피의 쓴맛이 혀끝에 맴돈다. 따스한 봄날의 햇살과 함께 나른함이 몸을 감싼다. 문득 나도 이 카페를 나서서 그녀가 걸었던 길을 따라가보고 싶다는 충동이 일어난다. 어쩌면 그 길의 끝에서 내가 찾고 있던 무언가를 발견할 수 있을지도 모른다는 막연한 희망이 가슴 한편에서 일렁인다.

    하지만 나는 여전히 이 자리에 앉아 창밖으로 흘러가는 시간을 바라본다. 그녀는 이제 내 시야에서 완전히 사라졌지만, 그녀가 남긴 인상은 여전히 내 마음속에 선명하게 남아있다. 마치 봄날의 햇살처럼 따스하게, 봄바람처럼 부드럽게, 그리고 봄꽃처럼 아름답게.

    우리의 삶은 이런 순간들로 이루어진 것이 아닐까. 지나가는 순간의 아름다움을 발견하고, 그것에 의미를 부여하는 찰나의 연속. 봄날의 나른한 오후, 한적한 카페의 창가에서 나는 오늘도 그런 순간을 선물 받았다. 그녀는 모르겠지만, 오늘 그녀는 한 사람의 마음속에 잊히지 않을 봄날의 풍경이 되었다.

  • 얼음 위의 불씨

    얼음 위의 불씨

    1991년, 헬싱키의 겨울은 매서웠다. 리누스 토르발스는 대학 기숙사 방에서 낡은 386 컴퓨터 앞에 앉아 있었다. 창밖엔 눈이 쌓이고, 방 안엔 전자기기의 따뜻한 열기와 키보드 소리만이 가득했다. 스무 살의 리누스는 유닉스 책을 펼쳐놓고 코드를 짜고 있었다. 그가 사랑한 유닉스(Minix)는 강력했지만, 제약이 많았다. “내가 원하는 건 더 자유로운 거야,” 그는 혼잣말로 중얼거렸다.

    리누스는 몇 달 전부터 작은 프로젝트를 시작했다. 터미널 에뮬레이터로 시작한 코드는 점점 커졌다. 파일을 읽고, 프로세스를 관리하고, 디스크를 제어하는 기능이 하나씩 쌓였다. 그는 잠을 줄이고 커피를 늘리며 밤을 보냈다. “이건 그냥 취미일 뿐이야,”라고 스스로를 다독였지만, 손은 멈추지 않았다.

    어느 날, 그는 Minix 사용자 그룹에 글을 올렸다.
    “안녕하세요, 저는 386용 무료 운영체제를 만들고 있어요. 그냥 재미로 하는 거지만, 관심 있으면 봐주세요.”
    그는 파일을 올리고 잠이 들었다. 다음 날 아침, 메일함은 터져 있었다. “코드 보내주세요!” “어떻게 돼요?” 전 세계의 프로그래머들이 반응했다. 리누스는 얼떨떨했다. “뭐야, 진짜로 관심 있는 거야?”

    이름은 고민 끝에 정했다. 리눅스(Linux). 자기 이름에서 따온 건 좀 쑥스러웠지만, 어쩐지 잘 어울렸다. 그는 소스 코드를 공개했다. “누구든 고치고 싶으면 고쳐도 돼요.” 그 결정은 폭풍을 일으켰다. 핀란드의 작은 방에서 시작된 코드는 인터넷을 타고 퍼졌다. 독일의 해커가 버그를 잡았고, 미국의 학생이 기능을 추가했다. 리누스는 메일을 읽으며 웃었다. “내가 만든 게 이렇게 커질 수가 있나?”

    1992년, 리눅스는 점점 모양을 갖췄다. 하지만 문제도 생겼다. Minix의 창시자 앤드류 타넨바움이 반발했다. “리눅스는 구식이야. 설계가 엉망이야!” 온라인에서 논쟁이 붙었다. 리누스는 키보드를 두드리며 반박했다. “완벽하지 않아도 돼요. 중요한 건 사람들이 쓰고 싶어 한다는 거예요.” 그 말대로였다. 리눅스는 단순하고 자유로웠다. 누구나 뜯어보고 고칠 수 있었다.

    시간이 지나며 커뮤니티는 거대해졌다. 리누스는 기숙사를 떠나 작은 아파트로 옮겼지만, 여전히 혼자였다. 그는 코드를 리뷰하고, 패치를 적용하며 중심을 잡았다. “내가 다 할 필요는 없어. 다 같이 만드는 거야,” 그는 생각했다. 어느 날, 누군가 턱시도를 입은 펭귄 이미지를 보냈다. “리눅스의 마스코트로 어때요?” 리누스는 피식 웃었다. 턱스(Tux)라는 이름이 붙었다.

    1994년, 리눅스 1.0이 나왔다. 헬싱키의 눈 덮인 거리에서 리누스는 친구들과 맥주를 들었다. “이제 진짜 운영체제야,” 친구가 말했다. 리누스는 고개를 저었다. “아직 시작이야.” 그의 예감은 맞았다. 리눅스는 서버, 슈퍼컴퓨터, 심지어 안드로이드까지 뻗어나갔다. 얼음 위에서 피운 작은 불씨는 세상을 따뜻하게 덥혔다.

    어느 겨울밤, 리누스는 창밖을 보며 미소 지었다. 화면엔 턱스가 깜빡이고, 메일함엔 여전히 전 세계의 메시지가 쌓여 있었다. “내가 만든 게 아니야,” 그는 중얼거렸다. “우리 모두가 만든 거지.” 헬싱키의 추운 방에서 시작된 꿈은 이제 전 세계의 손끝에서 숨 쉬고 있었다.

  • 거미줄의 시작

    거미줄의 시작

    1989년, 스위스 제네바 근처의 CERN 연구소. 팀 버너스-리는 복도 끝 사무실에서 낡은 NeXT 컴퓨터 앞에 앉아 있었다. 창밖으론 알프스 산맥이 어렴풋이 보였고, 그의 책상엔 종이가 어지럽게 흩어져 있었다. 서른넷의 팀은 물리학자가 아니었다. 그는 정보의 흐름에 푹 빠져 있었다. “이 데이터들은 서로 연결돼야 해,” 그는 중얼거렸다.

    CERN은 세계 최고의 물리학자들이 모인 곳이었지만, 혼란이었다. 실험 데이터, 논문, 메모—모두 제각각 흩어져 있었다. 팀은 꿈꿨다. 모든 정보를 하나로 묶는 시스템을. 그는 몇 년 전부터 ‘ENQUIRE’라는 프로그램을 만들었지만, 한계가 있었다. “더 큰 걸 해야 해. 전 세계를 잇는 거야.”

    어느 날, 그는 상사 로버트 카이야우에게 제안을 던졌다. “정보를 하이퍼텍스트로 연결하면 어떨까요? 누구나 접근할 수 있게요.” 로버트는 눈썹을 치켰다. “팀, 그게 가능해?” 팀은 단호했다. “제가 해볼게요.” 허락은 떨어졌다. 코드명은 없었다. 그냥 월드 와이드 웹(World Wide Web)이라 불렀다.

    팀은 키보드를 잡았다. HTML—정보를 구조화하는 언어. HTTP—정보를 주고받는 규칙. URL—정보의 주소를 정하는 체계. 그는 밤을 새우며 코드를 썼다. “이건 거미줄 같아야 해. 모든 게 얽히고 연결돼야 해.” 1990년, 첫 웹사이트가 완성됐다. NeXT 화면에 “http://info.cern.ch”가 떴다. “세계 최초의 웹페이지야,” 그는 웃었다.

    하지만 혼자였다. 팀은 동료들에게 보여줬다. “이걸로 논문을 공유할 수 있어요!” 반응은 미지근했다. “너무 복잡해.” 팀은 좌절하지 않았다. 그는 브라우저를 만들었다. “WorldWideWeb”이라는 이름의 소프트웨어. 클릭하면 정보가 펼쳐졌다. “이제 이해하겠지?”

    1991년 8월, 팀은 인터넷 뉴스그룹에 글을 올렸다. “웹을 공개했어요. 무료로 써보세요.” 소문이 퍼졌다. 연구소 밖으로, 대학교로, 전 세계로. “이게 뭐야?” “너무 쉬워!” 개발자들이 코드를 뜯어보며 확장했다. 팀은 조건을 걸었다. “특허 없어요. 누구나 써도 돼요.” 그의 꿈은 돈이 아니라 연결이었다.

    1993년, 웹은 날았다. 모자이크 브라우저가 나오며 대중이 손을 댔다. 팀은 CERN 밖으로 나와 W3C를 세웠다. “웹은 열려 있어야 해.” 하지만 위기도 왔다. 기업들이 돈 냄새를 맡았다. “특허를 내라!”라는 압박이 쏟아졌다. 팀은 버텼다. “이건 인류의 것이야.”

    2019년, 제네바의 밤. 팀은 창밖을 보며 맥주를 들었다. WWW는 30년 만에 세상을 뒤덮었다. “내 거미줄이 이렇게 커질 줄이야,” 그는 미소 지었다. 페이스북, 구글, 모든 웹이 그의 씨앗에서 자랐다. 하지만 그는 걱정도 했다. “너무 커져서 통제할 수 없게 됐어.”

    알프스 바람이 불었다. 1989년의 그 사무실에서 시작된 거미줄은, 이제 전 세계를 감싸는 그물이 되었다.

  • 전화, 그 이상한 물건에 대하여

    전화, 그 이상한 물건에 대하여

    나는 전화를 싫어한다.

    그 사실에 대해서는 특별히 숨길 생각도 없고, 부끄러워할 생각도 없다. 그저 평범한 사실을 말하는 것뿐이다. 아마도 이 세상에는 나처럼 전화를 싫어하는 사람이 꽤 많을 것이다. 특히 소프트웨어 프로그래머들 중에는. 우리는 컴퓨터와 대화하는 데는 능숙하지만, 사람과의 대화는 때때로 불편하게 느껴진다. 코드는 명확하고 논리적이지만, 사람의 말은 그렇지 않기 때문이다.

    어제도 전화가 울렸다. 오후 세 시 십오 분쯤이었을까. 나는 모니터 앞에 앉아 새로운 알고리즘을 구상하고 있었다. 두 시간 동안 완전히 몰입한 상태였다. 그때 갑자기 전화벨이 울렸다. 마치 깊은 바닷속에서 갑자기 수면 위로 끌어올려진 것 같은 느낌이었다. 평소 같았으면 무시했을 테지만, 그날은 중요한 클라이언트의 전화를 기다리고 있었기 때문에 어쩔 수 없이 수화기를 들었다.

    “여보세요?”

    내 목소리는 항상 전화 속에서는 낯설게 들린다. 마치 다른 사람의 목소리를 빌려 쓰고 있는 것처럼.

    “안녕하세요, ○○기업의 △△입니다.”

    여자의 목소리였다. 아주 낮고 부드러운 목소리. 마치 오래된 재즈 바에서 들리는 색소폰 소리 같았다. 하지만 나는 그 목소리의 주인공을 알지 못했다. 그리고 기다리던 전화도 아니었다.

    전화의 문제점은 바로 그것이다. 상대방의 표정을 볼 수 없다는 것. 오직 목소리만으로 상대방의 의도나 감정을 파악해야 한다는 것. 프로그래밍에서라면 나는 디버거를 사용할 수 있다. 코드의 모든 상태를 확인하고, 문제가 발생한 정확한 지점을 찾아낼 수 있다. 하지만 전화 통화에는 디버거가 없다. 그저 내 감각에 의존해야 할 뿐이다.

    코드를 작성할 때는 시간을 들여 생각할 수 있다. 잘못된 부분이 있으면 지우고 다시 쓸 수 있다. 하지만 전화 통화에서는 그럴 수 없다. 한 번 말한 것은 되돌릴 수 없다. 마치 커밋 후에 푸시 버튼을 눌러버린 것과 같다.

    아주 오래 전, 나는 좋아하는 여자아이에게 전화를 걸었던 적이 있다. 세 번이나 번호를 눌렀다가 바로 끊어버렸다. 네 번째 시도에서 겨우 통화 버튼을 누를 수 있었다. 그리고 전화가 연결되자마자 나는 아무 말도 할 수 없었다. 그저 그녀의 “여보세요?”라는 말만 세 번 들었을 뿐이다. 결국 나는 아무 말도 하지 못한 채 전화를 끊어버렸다. 소프트웨어의 무한 루프처럼, 나의 뇌는 제자리를 맴돌고 있었다.

    그래서 나는 이메일이나 메신저를 더 선호한다. 글로 쓰면 내 생각을 정리할 시간이 있다. 적절한 단어를 선택할 시간이 있다. 마치 코드를 작성하듯이, 하나하나 정확하게 선택할 수 있다. 그리고 무엇보다, 상대방의 반응을 즉각적으로 마주하지 않아도 된다.

    어쩌면 내 전화 공포증은 버그를 발견당하는 것에 대한 두려움일지도 모른다. 내가 작성한 코드가 완벽하지 않다는 것을 누군가에게 들키는 것에 대한 두려움. 혹은 내가 작성한 함수가 예상치 못한 결과를 반환할 때의 당혹감. 마치 빈 우물 속에 돌을 던지고, 그 돌이 바닥에 닿는 소리를 듣지 못하는 것과 같은 불안감.

    “○○님, 계십니까?”

    전화 속 여자의 목소리가 다시 들려왔다. 나는 잠시 생각에 빠져 있었던 모양이다.

    “네, 있습니다.”

    내가 대답했다. 그리고 우리는 새로운 프로젝트에 관한 이야기를 나누었다. 일 이야기는 항상 쉽다. 정해진 주제, 정해진 목적이 있기 때문이다. 마치 잘 정의된 함수처럼. 입력과 출력이 명확하다. 하지만 그 외의 전화는 항상 어렵다. 특히 오랜만에 연락하는 친구나 가족과의 전화. 무슨 말을 해야 할지, 어떤 이야기부터 시작해야 할지 항상 헷갈린다. 그것은 마치 문서화되지 않은 API를 사용하는 것과 같다.

    전화 공포증이라는 것이 존재한다면, 아마도 나는 그것을 가지고 있을 것이다. 하지만 그렇다고 해서 내가 전화를 아예 사용하지 않는 것은 아니다. 필요할 때는 사용한다. 마치 좋아하지 않는 프로그래밍 언어를 어쩔 수 없이 사용해야 할 때처럼, 약간의 불편함을 감수하면서도.

    때로는 그런 불편함이 프로그래밍에 도움이 되기도 한다. 왜냐하면 불편함은 새로운 해결책을 생각하게 만들기 때문이다. 그리고 프로그래머에게 있어서 새로운 해결책이란 소중한 자산이다.

    어쩌면 나는 언젠가 전화 공포증을 위한 앱을 만들지도 모르겠다. 인공지능이 대신 전화를 받고, 중요한 내용만 텍스트로 정리해주는 그런 앱. 그렇게 되면 나 같은 사람들도 조금은 편안하게 살 수 있지 않을까.

    전화가 울린다. 나는 깊은 숨을 들이마시고, 수화기를 든다. 그리고 또 다른 코드가 시작된다.

  • 의식의 흐름

    의식의 흐름

    시계는 02:37을 가리키고 있다. 모니터의 푸른빛만이 어두운 방을 밝힌다. 커서가 깜빡이는 검은 화면 앞에서 나는 오늘도 코드와 씨름 중이다. 디버깅을 시작한 지 벌써 세 시간째. 버그는 어디에 숨어 있는 걸까.

    if (response.status === 200) {

    그런데 문득, 창밖으로 보이는 달빛이 내 시선을 사로잡는다. 곧 보름달이 되겠군. 이런 밤에 어머니는 만두를 만드셨지. 어린 시절의 기억이 스쳐 지나간다. 반죽을 동그랗게 빚던 손길, 그 옆에서 서툴게 따라하던 나의 모습.

    console.log("Debug point 1:", data);

    다시 현실로 돌아온다. 로그를 확인해 보자. 아, 여기서 데이터 구조가 예상과 다르게 나오는군. JSON 포맷이 잘못됐나? API 문서를 다시 확인해야겠다. 그런데 API 문서라… 대학 시절에 교수놈이 항상 강조하셨지. “문서화는 코드만큼 중요하다.” 그때는 그 말의 의미를 완전히 이해하지 못했다.

    for (let i = 0; i < array.length; i++) {

    반복문을 작성하는데, 문득 인생의 반복성에 대해 생각한다. 매일 아침 일어나 출근하고, 코드를 작성하고, 퇴근하는 일상. 그 속에서 나는 어떤 의미를 찾고 있는 걸까? 가끔은 이 모든 것이 무한 루프처럼 느껴질 때가 있다. 종료 조건은 어디에 있는 걸까.

    try {

    예외 처리 구문을 작성하며 인생의 불확실성에 대해 생각한다. 코드도, 인생도 항상 예상대로 흘러가지는 않는다. 버그와 예외는 언제든 발생할 수 있다. 중요한 것은 그것을 어떻게 처리하느냐.

    function recursive() {

    함수… 재귀 함수… 자신을 다시 호출하는 함수. 마치 내 의식이 자신을 되돌아보는 것처럼. 의식은 끊임없이 자신을 관찰하고, 분석하고, 질문한다. 이것이 인간의 독특한 특성이 아닐까? 내가 프로그래밍을 좋아하는 이유도 여기에 있다. 코드를 통해 나의 생각을 구체화하고, 문제를 해결하는 과정이 의식의 흐름과 닮아있다.

    return new Promise((resolve, reject) => {

    프라미스. 코드에서의 비동기 처리. 지금은 완료되지 않았지만, 언젠가는 결과를 돌려주겠다는 약속. 인생의 많은 일들도 그렇다. 당장의 결과를 볼 수 없더라도, 꾸준히 노력하면 언젠가는 그 결실을 맺을 것이다.

    // TODO:

    항상 미뤄두는 코드 정리. 내일의 나에게 맡기는 오늘의 문제들. 인생에서도 그렇게 중요한 일들을 자꾸 미루고 있진 않은지.

    화면을 바라보다 문득 내 모습이 모니터에 희미하게 비친다. 나는 코드를 작성하고 있지만, 사실 코드가 나를 표현하고 있는 것 같다. 의식의 흐름은 마치 프로그램의 실행 흐름과도 같다. 순차적이기도 하고, 때로는 예상치 못한 방향으로 튀기도 한다.

    git commit -m "Fix the bug that kept me up all night"

    드디어 버그를 찾았다. 지금은 새벽 4시 30분. 커밋 메시지를 작성하고 푸시한다. 오늘의 의식의 흐름은 여기서 끝이 난다. 내일은 또 다른 코드, 또 다른 생각들이 나를 기다리고 있을 것이다.

    // End of today's journey

  • 창고 속의 꿈 : 매킨토시(Macintosh) 이야기

    창고 속의 꿈 : 매킨토시(Macintosh) 이야기

    1981년, 캘리포니아 쿠퍼티노. 애플의 본사 한구석에 자리 잡은 창고는 먼지와 땀 냄새로 가득했다. 형광등 아래, 스티브 잡스는 낡은 책상에 앉아 스케치북에 뭔가를 끄적이고 있었다. 그의 앞엔 제프 래스킨이 가져온 이상한 기계가 놓여 있었다. 작고 네모난 상자, 단출한 화면, 그리고 키보드 하나. “이게 미래야, 스티브.” 제프가 말했다. 그의 목소리엔 확신이 묻어났지만, 스티브의 눈빛은 회의적이었다.

    “이건 너무 느려. 그리고 별로 안 예뻐.” 스티브가 툭 내뱉었다. 제프는 한숨을 쉬며 대꾸했다. “기술은 점진적으로 발전하는 거야. 급할 필요 없어.” 하지만 스티브는 급했다. 그는 제록스 PARC에서 본 것을 잊을 수 없었다. 마우스, 아이콘, 창—컴퓨터가 사람처럼 말하는 듯한 그 인터페이스. “우린 저걸 뛰어넘어야 해,” 스티브는 혼잣말처럼 중얼거렸다.

    며칠 뒤, 스티브는 창고로 팀을 끌고 왔다. 버렐 스미스, 앤디 허츠펠드, 빌 앳킨슨—각기 다른 괴짜들이었다. “우린 세상을 바꿀 컴퓨터를 만들 거야. 이름은 매킨토시.” 스티브의 선언에 팀은 반신반의했지만, 그의 열정은 전염성이 있었다. 제프는 프로젝트를 시작한 사람이었지만, 스티브가 들어오면서 모든 게 뒤바뀌었다. 제프는 점점 밀려났고, 스티브는 매킨토시를 자신의 비전으로 물들였다.

    창고는 곧 전쟁터가 되었다. 버렐은 밤을 새우며 회로를 설계했고, 앤디는 코드를 짜다 키보드에 엎어져 잠들었다. 빌은 그래픽 인터페이스를 다듬으며 “이건 예술이야!”라고 외쳤다. 스티브는 그들 사이를 오가며 채찍과 당근을 휘둘렀다. “이건 엉망이야!”라며 소리를 지른 뒤, 다음 순간엔 “너희는 천재야”라며 어깨를 두드렸다. 팀은 지쳤지만, 이상하게도 그를 미워할 수 없었다.

    1983년 여름, 첫 프로토타입이 완성되었다. 스티브는 화면에 떠오른 “Hello”라는 단어를 보며 미소 지었다. 마우스를 클릭하면 창이 열리고, 아이콘이 움직였다. 하지만 문제는 끝나지 않았다. 속도는 느렸고, 메모리는 턱없이 부족했다. “이걸로 게임 하나 제대로 못 돌리겠네,” 앤디가 투덜거렸다. 스티브는 이를 악물고 말했다. “최적화해. 무조건 빨라져야 해.”

    시간은 그들을 기다려주지 않았다. 애플 내부에선 매킨토시를 의심하는 목소리가 커졌다. “너무 비싸. 누가 사?”라는 비판이 쏟아졌다. 스티브는 더 독해졌다. 그는 팀을 몰아붙이며 “이건 그냥 기계가 아니야. 사람들의 삶을 바꿀 거라고!”라고 외쳤다. 어느 날 밤, 버렐이 지친 목소리로 물었다. “스티브, 우리가 이걸 왜 하는 거지?” 스티브는 잠시 멈추더니 말했다. “세상에 흔적을 남기려고.”

    1984년 1월 24일, 샌프란시스코 플린트 센터. 스티브는 검은 터틀넥을 입고 무대에 섰다. 수천 명의 눈이 그를 향했다. 그는 가방에서 매킨토시를 꺼내 스위치를 켰다. 화면이 밝아지며 합성음이 흘렀다. “Hello, I’m Macintosh. Nice to meet you.” 관객은 숨을 멈췄고, 곧 환호가 터졌다. 창고에서 보낸 수백 개의 밤이 그 순간 빛을 발했다.

    무대 뒤, 팀은 서로를 끌어안았다. 제프는 멀리서 그 광경을 지켜보며 씁쓸히 웃었다. 그의 꿈은 스티브의 손에서 다른 모습으로 태어났지만, 어쨌든 세상에 나왔다. 매킨토시는 단순한 컴퓨터가 아니었다. 그것은 가능성의 상징이었다.

    그날 밤, 창고는 텅 비었다. 형광등 아래 남은 건 땀과 열정의 흔적뿐이었다. 그리고 어디선가, 매킨토시의 부드러운 부팅 소리가 세상으로 퍼져나갔다.

  • 비의 밤, 코드의 시작 : MS-DOS 이야기

    비의 밤, 코드의 시작 : MS-DOS 이야기

    1980년, 시애틀의 밤은 비로 젖어 있었다. 팀 패터슨은 작은 아파트의 책상에 앉아 PDP-11 미니컴퓨터를 두드리고 있었다. 화면엔 녹색 글자들이 깜빡였고, 방 안엔 커피 냄새와 전자기기의 윙윙거리는 소리만 가득했다. 그는 시애틀 컴퓨터 프로덕츠(SCP)라는 작은 회사에서 일하며, 취미 삼아 운영체제를 만들고 있었다. 이름은 QDOS. ‘Quick and Dirty Operating System’—빠르고 지저분한 운영체제. 이름처럼 단순했지만, 그의 손끝에서 점점 생명을 얻고 있었다.

    “이걸로 86-DOS라고 부르면 어떨까?” 팀은 혼잣말로 중얼거렸다. 인텔 8086 프로세서를 겨냥한 이 시스템은 복잡한 메인프레임이 아니라, 개인이 쓸 수 있는 작은 컴퓨터를 위한 것이었다. 그는 대기업의 거대한 소프트웨어가 아닌, 손에 잡히는 무언가를 꿈꿨다.

    같은 시각, 시애틀에서 멀지 않은 벨뷰의 애플비 애비뉴. 빌 게이츠는 폴 앨런과 함께 허름한 사무실에서 전화기를 붙잡고 있었다. IBM이라는 거물이 그들에게 연락을 해왔다. “PC 프로젝트에 운영체제가 필요해요. 할 수 있겠소?” IBM의 목소리는 단호했다. 빌은 침을 삼키며 대답했다. “물론입니다. 준비돼 있어요.” 사실 준비된 건 없었다. 그들의 회사는 BASIC 언어로 돈을 벌고 있었지만, 운영체제는 손도 안 댄 분야였다.

    “빌, 우리 운영체제 없잖아.” 폴이 전화를 끊자마자 말했다. 그의 눈엔 불안이 묻어났다.
    “그러니까 찾아야지.” 빌은 단호하게 말했다. 그는 책상 위에 흩어진 서류를 뒤지며 말했다. “시애틀 컴퓨터 프로덕츠에 뭔가 있다던데. 팀 패터슨인가 하는 녀석이 만든 거.”

    며칠 뒤, 빌과 폴은 팀을 만났다. 비가 내리는 카페에서 팀은 QDOS에 대해 설명했다. “간단해요. 파일 관리하고, 프로그램 돌리고. 화려하진 않지만 쓸모 있죠.” 빌은 그의 말을 들으며 눈을 빛냈다. “이걸 사겠습니다. 얼마면 됩니까?” 팀은 잠시 망설이다 말했다. “5만 달러면 어때요?” 빌은 속으로 웃었다. IBM과의 계약이 성사되면 그보다 훨씬 큰 돈이 굴러들어올 터였다.

    1981년 여름, 애플비 애비뉴의 사무실은 전쟁터가 됐다. 빌은 팀의 QDOS를 들여와 다듬기 시작했다. 이름도 바꿨다. MS-DOS. 마이크로소프트 디스크 운영체제. 코드 몇 줄을 고치고, IBM의 요구에 맞춰 기능을 추가했다. “이건 단순해야 해. 누구나 쓸 수 있을 정도로,” 빌은 팀원들에게 다그쳤다. 밤낮없이 키보드를 두드리며, 그들은 MS-DOS 1.0을 완성했다.

    IBM PC가 세상에 나왔다. 1981년 8월 12일, 회색 상자와 함께 MS-DOS가 탑재된 컴퓨터가 상점에 깔렸다. 첫날은 조용했지만, 소문은 빠르게 퍼졌다. “이거 싸고 쓸만하네,” 사람들이 말했다. MS-DOS는 화려하지 않았다. 그래픽도, 마우스도 없었다. 하지만 단순함이 힘을 발휘했다. 프로그래머들은 그 위에 소프트웨어를 얹었고, 회사들은 문서 작업에 썼다.

    팀은 어느 날 TV에서 IBM PC 광고를 봤다. 화면엔 그의 QDOS가 뿌리로 자리 잡은 MS-DOS가 돌아가고 있었다. “내가 저걸 시작했는데…” 그는 씁쓸히 웃었다. 5만 달러는 적은 돈이 아니었지만, 빌 게이츠가 그걸로 얻게 될 부는 상상 이상이었다.

    빌은 사무실 창밖을 보며 커피를 마셨다. 비는 그쳤고, 시애틀의 하늘은 맑았다. “이건 시작일 뿐이야,” 그는 중얼거렸다. MS-DOS는 단순한 도구였지만, 그 도구가 세상을 컴퓨터 앞으로 끌고 왔다. 비의 밤에 시작된 작은 코드는 이제 거대한 제국의 첫걸음이 되었다.

  • 친구 사이에 키스 정도는 괜찮잖아

    친구 사이에 키스 정도는 괜찮잖아

    어릴 적부터 민수와 지영은 단짝이었다. 둘은 서로를 보면 늘 놀리기 바빴다. 민수가 “야, 너 얼굴 진짜 못생겼다!“라고 쏘아붙이면, 지영은 “너나 거울 보고 말해, 등신아!“라며 받아쳤다. 그렇게 티격태격하며 자란 두 사람은 공교롭게도 모태 솔로였다. 연애? 그건 남들 얘기였다.

    어느 날 저녁, 지영이 민수에게 전화를 걸었다.
    “야, 오늘 술 마실래?”
    민수는 의아한 목소리로 물었다. “갑자기 웬 술이야?”
    “그냥 심심해서. 빨리 와!” 지영의 목소리는 이미 살짝 들떠 있었다.
    술집에서 만난 둘은 맥주를 들이켰다. 민수는 한두 잔으로 끝내려 했지만, 지영은 잔을 거푸 비우더니 얼굴이 빨갛게 달아올랐다. 술기운이 돌자 지영이 느닷없이 물었다.
    “너, 키스해 본 적 있어?”
    민수는 맥주를 뿜을 뻔했다. “뭐? 아니, 없어. 너는?”
    지영이 고개를 저었다. “나도 없어. 근데 궁금하지 않아? 키스가 어떤 느낌일까?”
    민수는 어색하게 웃으며 말했다. “뭐… 궁금하긴 하지.”
    그런데 갑자기 지영의 눈에 눈물이 고였다. “나 키스해 보고 싶어… 한 번도 안 해봤는데…”
    민수는 당황해서 손을 내저었다. “야, 왜 울어? 너 진짜 취했구나!”
    하지만 지영은 고개를 들고 민수를 똑바로 쳐다봤다. “우리, 키스해 볼래?”
    민수의 눈이 휘둥그레졌다. “뭐? 갑자기?”
    “응, 그냥 호기심에. 친구끼리 해보는 거야.” 지영이 술취한 목소리로 고집을 부렸다.
    민수는 망설이다가 결국 말했다. “알았어, 딱 한 번만.”
    둘은 어색하게 얼굴을 가까이 댔다. 입술이 살짝 닿았다 떨어졌다. 2초도 안 되는 짧은 키스였지만, 민수와 지영의 얼굴은 동시에 토마토처럼 붉어졌다.
    “어땠어?” 지영이 물었다.
    “음… 잘 모르겠어. 이상했어.” 민수가 머리를 긁적이며 대답했다.
    지영은 킥킥 웃었다. “나도. 근데 재미있었어.”

    그날 이후, 둘은 호기심에 키스를 몇 번 더 해봤다. 처음엔 “친구끼리 실험이다”라는 핑계였지만, 점점 어색함은 줄고 묘한 설렘이 생겨났다. 그러던 어느 날, 지영이 또 전화를 걸었다.
    “야, 우리 집에 올래? 키스하고 싶어.”
    민수는 웃으며 말했다. “너 또 취했구나.”
    “아니, 안 취했어! 그냥 하고 싶다고!” 지영이 발끈했다.
    민수는 결국 지영의 집으로 갔다. 소파에 나란히 앉은 둘은 이번엔 좀 더 자연스럽게 키스를 했다. 짧았던 첫 키스와 달리, 이번엔 길고 부드러웠다. 키스가 끝난 후 지영이 물었다.
    “야, 우리 이거 계속 하면 안 돼?”
    “뭘?” 민수가 멍한 표정으로 되물었다.
    “키스. 그냥 친구끼리 하는 거야.”
    민수는 고개를 저었다. “그건 좀 이상해. 친구끼리 키스는 안 하는 거야.”
    지영은 입을 삐죽이며 실망한 표정을 지었다. “그래? 난 좋은데…”
    그 순간, 민수는 지영의 눈을 바라봤다. 술에 취해 반짝이는 눈동자 속에서 무언가가 느껴졌다. 그러곤 깨달았다. 자기가 지영을 좋아하고 있다는 걸.
    “야, 우리 사귀어 볼래?” 민수가 불쑥 말했다.
    지영은 놀라서 눈을 동그랗게 떴다. “뭐? 갑자기?”
    “응, 너 좋아해.” 민수가 단호하게 말했다.
    지영은 잠시 멍하니 있다가 피식 웃었다. “나도 너 좋아해, 등신아.”

    그렇게, 둘의 사랑은 키스에서 시작되었다. 모태 솔로의 굴레를 벗어난 민수와 지영은 더 이상 서로를 못생겼다고 놀리지 않았다. 대신, “사랑해”라는 말을 주고받으며 티격태격하는 연인이 되었다.

    끝.

  • 나른한 휴일의 오전

    나른한 휴일의 오전

    햇살이 창문 틈으로 스며들어 눈꺼풀을 간질이는 순간, 시계는 이미 아홉 시를 가리키고 있다. 평일이었다면 벌써 세상이 다 끝난 듯한 조급함에 시달렸겠지만, 오늘은 휴일. 이불 속에서 뒤척이며 조금 더, 그래 조금만 더 누워있기로 한다.

    천장에 그려진 희미한 그림자가 바람에 흔들리는 나뭇가지처럼 일렁인다. 어제 읽다 만 소설책이 침대 옆에 놓여있고, 핸드폰에는 읽지 않은 메시지들이 쌓여있겠지만 굳이 확인하고 싶은 마음이 들지 않는다. 온전히 나만의 시간, 느릿한 흐름 속에 몸을 맡긴다.

    기지개를 켜니 등허리가 끈적하게 늘어진다. 이제 슬슬 일어나야 할까. 아니, 조금만 더. 창밖으로 들리는 새소리가 달콤한 나른함을 더해준다. 행인의 발걸음 소리, 멀리서 들려오는 아이들의 웃음소리. 세상은 이미 깨어났지만, 나의 세계는 아직 반쯤 꿈속에 잠겨있다.

    침대에서 몸을 일으키자 발바닥이 차가운 바닥에 닿는다. 따뜻한 양말을 신을까 말까 고민하다 그냥 맨발로 부엌으로 향한다. 커피 한 잔이 생각나는 순간. 분쇄된 원두 향기가 코끝을 자극한다. 물이 끓는 동안 창가에 서서 바깥을 내다본다. 햇살이 나뭇잎 사이로 반짝이며 아스팔트 위에 그림자 놀이를 만들어내고 있다.

    커피 잔을 들고 소파에 몸을 묻는다. 음악을 틀까, 책을 읽을까, 그냥 아무것도 하지 않을까. 선택의 자유로움이 오히려 어떤 결정도 내리지 못하게 한다. 결국 창밖을 바라보며 커피를 한 모금 마신다. 쓰면서도 달콤한 이 맛, 혀끝에 남는 여운이 마음을 편안하게 한다.

    머릿속에 어제의 일들이 조각조각 떠오른다. 미처 끝내지 못한 일들, 내일로 미뤄둔 약속들. 하지만 오늘은 그 모든 것들을 잠시 내려놓는 날. 시간은 마치 꿀처럼 느릿하게 흐른다.

    문득 배고픔이 느껴진다. 냉장고를 열어보니 어제 남은 빵과 잼이 눈에 들어온다. 토스터에 빵을 넣고 기다리는 시간마저 느긋하다. 달그락거리는 소리와 함께 빵이 튀어오르고, 버터가 녹아내리는 모습을 바라본다. 작은 행복이 이런 순간에 있다는 걸 새삼 깨닫는다.

    창가에 앉아 늦은 아침을 먹으며 생각한다. 점심은 뭘 먹을까, 오후에는 무얼 할까. 계획 없는 하루가 주는 자유로움. 그래, 그냥 흘러가는 대로 놔두자. 시간이 흐르고 햇살이 점점 더 짙어질 때, 어쩌면 산책을 나갈지도 모른다. 아니면 그냥 이 자리에서 온종일 게으름을 피울지도.

    나른한 휴일의 오전, 시간은 마치 멈춘 듯 천천히 흐르고, 그 속에서 일상의 작은 행복들이 반짝인다. 이런 순간들을 위해 우리는 바쁜 나날을 견디는 것인지도 모르겠다.

  • 회색 방의 혁명 : 유닉스 이야기

    회색 방의 혁명 : 유닉스 이야기

    1970년, 뉴저지의 벨 연구소. 복도 끝에 자리 잡은 회색 방은 늘 조용했다. 형광등이 깜빡이며 낮인지 밤인지 구분하기 힘든 그곳에서, 켄 톰슨은 낡은 PDP-7 컴퓨터 앞에 앉아 있었다. 그의 손가락은 키보드 위를 춤추듯 움직였고, 화면엔 끝없이 이어지는 코드가 흘렀다. 옆자리의 데니스 리치는 책상 위에 종이를 잔뜩 펼쳐놓고 연필로 뭔가를 끄적이고 있었다. 두 사람은 마치 세상과 단절된 섬에 사는 듯 보였다.

    “켄, 이거 정말 될까?” 데니스가 고개를 들며 물었다. 그의 목소리엔 피로와 기대가 뒤섞여 있었다.
    “안 되면 우리가 만드는 거지.” 켄은 화면에서 눈을 떼지 않은 채 툭 던지듯 말했다. 그의 눈빛엔 고집과 장난기가 동시에 빛났다.

    몇 년 전, 그들은 멀틱스(Multics)라는 거대한 프로젝트에 매달렸었다. 여러 사용자가 동시에 시스템을 쓸 수 있는 꿈의 운영체제. 하지만 너무 복잡하고 무거웠다. AT&T가 자금을 끊자, 멀틱스는 쓰레기통 속으로 사라졌다. 그 실패의 잿더미에서 켄은 뭔가를 건져내고 싶었다. 그는 집에서 아내와 아이들이 잠든 밤마다 PDP-7을 붙잡고 작은 시스템을 만들기 시작했다. 이름은 농담처럼 붙였다. 유닉스(UNIX)—멀틱스에서 ‘멀티’를 빼고 단순함만 남긴, 반항적인 이름이었다.

    “멀틱스는 너무 거창했어. 난 그냥 내가 쓰기 편한 걸 만들고 싶었을 뿐이야.” 켄은 어느 날 데니스에게 털어놨다. 그 ‘편한 것’은 곧 두 사람의 집착이 되었다. 데니스는 새로운 언어를 고안해냈다. C언어. 어셈블리어의 복잡함을 덜어내고, 인간과 기계가 더 가까워질 수 있는 다리 같은 언어였다. 유닉스는 그 C언어로 다시 태어났다.

    회색 방은 점점 활기로 채워졌다. PDP-11이라는 새 컴퓨터가 들어오면서 유닉스는 더 날렵해졌다. 파일 시스템, 파이프, 멀티태스킹—켄과 데니스는 단순하면서도 강력한 아이디어를 하나씩 쌓아갔다. 어느 날, 데니스가 파이프 개념을 제안했다. “프로그램들이 서로 데이터를 주고받게 하면 어떨까? 물이 흐르듯이.” 켄은 즉시 키보드를 잡고 코드를 썼다. 몇 시간 뒤, 그들은 화면에서 명령어가 물 흐르듯 연결되는 걸 보며 웃음을 터뜨렸다.

    하지만 벨 연구소의 높은 사람들은 관심이 없었다. “그게 뭐에 쓰이는데?”라는 질문이 돌아왔다. 유닉스는 공식 프로젝트도 아니었다. 그냥 두 괴짜가 낡은 기계로 노는 취미처럼 보였다. 그러던 어느 날, 연구소의 특허 부서에서 문서 작업을 자동화할 시스템이 필요하다는 요청이 왔다. 켄과 데니스는 유닉스를 내밀었다. 결과는 놀라웠다. 느리고 비효율적이던 작업이 순식간에 끝났다. 그제야 사람들은 회색 방에서 무슨 일이 벌어지고 있는지 눈치챘다.

    소문은 퍼졌다. 대학, 연구소, 심지어 정부 기관까지 유닉스를 원했다. AT&T는 운영체제를 상업적으로 팔 수 없었기에 소스 코드를 공개했다. 그 결정은 폭발을 일으켰다. 전 세계의 프로그래머들이 유닉스를 뜯어보고, 고치고, 자신만의 버전을 만들었다. 회색 방에서 시작된 작은 불씨는 거대한 불길이 되었다.

    몇 년 뒤, 켄과 데니스는 연구소 창밖을 바라보며 맥주를 들었다. PDP-7은 이제 박물관의 전시품이 되었고, 유닉스는 세상을 바꾸고 있었다. “우리가 만든 게 이렇게 커질 줄 알았어?” 데니스가 물었다.
    켄은 피식 웃으며 말했다. “난 그냥 게임 하나 돌리고 싶었을 뿐인데.”

    밤이 깊어갔다. 회색 방의 형광등은 여전히 깜빡였지만, 그 빛 아래에서 태어난 유닉스는 이제 세상 곳곳에서 숨 쉬고 있었다. 단순함 속에 숨겨진 혁명, 그건 두 사람의 손끝에서 시작된 이야기였다.