모든 게 멈추었다.

급한 불 앞에선 불끄는 것외엔 집중할 여유가 없다. 불끄다 잠시 눈돌려서 할 수 있는 것이라고는 눈에 들어오는 것에 시선을 잠시 고정시켜 따라가는 것일 뿐.

문득문득 나이듦이 머리를 들고, 잃어버린듯한 기회에 대한 아쉬움도 머리를 들고, 할 수 있을 것 같은 자신감은 외면을 한다.

 

지킬 박사와 하이드씨

지킬이 정상이고 하이드가 살인자, 우리 말 어감상 지킬이 강해 보이므로 이름을 한국식으로 바꾼다.

박재권과 하익두씨라고 하면 좀 더 강한 것 같기도 하고...

센서로부터 측정되는 데이터는 전압,전류,저항 값들이다. 그 값을 온도, 기압, 광량, 풍속 등에 매핑하여 각종 의미를 부여한다.

어느 한 순간에 모든 센서의 데이터를 측정한다고 해보자. 이것을 하나의 프레임이라 정한다면 하나의 프레임은 동일 시간대의 모든 센서의 값의 모음이다.

만약 프레임을 벡터로 나타낸다면, (현재 시각, 온도, 습도, GPS 위도, GPS 경도, 빛의 세기, 지구 자기) 이런 식으로 하나의 벡터는 하나의 시간에 표현할 수 있는 모든 데이터의 집합으로 나타낼 수 있다.

또한 만약 1초에 100번의 측정이 일어난다면 저 벡터가 1초에 100개가 생성된다고 할 수 있겠다. 조금 더 나아가서 각 센서 마다 측정되는 주기가 다르다면 어떤 데이터는 비어 있을 수 있는데 이것은 연속량이라고 가정했을 때 대략 측정되는 중간 값을 추정하면 해당 시각의 값을 추정하여 얻을 수 있다. (인터폴레이션, 혹은 보간 이라는 방법으로 알려져있다)

이런 데이터를 저장할 수 있는 가장 좋은 형식은 어쩌면 멀티미디어 파일 아닐까? mkv, mp4 등의 컨테이너들은 내부에 여러 채널을 두고 있다. 또한 각 데이터들은 시간의 흐름에 따른 데이터를 저장하기에도 충분하다.

시간 흐름에 따른 데이터를 적절한 codec을 두어 저장한다면, 굳이 보간법을 이용하여 추정하여 기록하지 않아도 측정 데이터만 넣어두고 codec을 이용하여 특정시간에서의 값을 추출할 수 있게 된다.

이도 저도 아니면, 평면 이미지의 흐름을 저장하는 데이터만으로도 가능하다. 이미지의 각 점을 특정 센서의 측정값으로 저장하면 640x480 짜리 동영상은 30만개나 되는 센서의 흐름을 표현할 수 있기 때문이다.

서사라는 것은 시간의 흐름에 따라 떠오르는 생각을 표현하는 것이다. 그것이 말이 되기도하고 말이 되지 않기도 한다. 생각이 몇 단어 혹은 몇 장면으로 매핑이 되는 순간 정보 손실은 일어 날 수 밖에 없다. 그럼에도 불구하고 두 개의 지점에서 (뇌 혹은 데이터 저장소) 같은 '것'을 공유하기 위해서는 어떤 식으로든 서사적으로 표현된다. 손실을 최소화하는 방향으로 서로가 합의하게 되면서 시간을 단축할 수 있고, 시간 효율성을 높일 수 있다.

무작위 시도와 효율적인 것의 취사 선택의 누적은 자연의 진화에서 일어 났듯이, 매 일상에서 반복되는 것이며, 모든 독립 개체간에 발생하는 것이다.

인간이 꿈을 꾼다는 것은 일종의 무작위적인 시도의 결과이다. 그나마 근사하게 전달의 효율이 높은 방향에서의 전개를 선택했기 때문에 뭔가 말이 되는듯 되지 않는 것이다. 이런 무작위의 말도 되기도하고 되지않기도하는 꿈이 뇌리에서 사라진다는 것은 때론 원치않는 상황이기도하다. 하지만 취사선택에 빠른 두뇌 신경망은 중요도에 대한 판단을 심각하게하지 않으며, 곧 망각하게 된다. 꿈을 오래 간직하고 싶다면 기록을 하는 정도의 영구 보존 영역으로 옮겨야한다.

말이 되는 장면만 최대한 선택해서 말이 되는 표현으로 최대한 기록해야한다.

퇴근, 변명, 얼굴

노래하는 고속도로를 지날 때 언젠가는 한 번 정리해봐야겠다고 도로의 홈 간격에 대한 생각.

일단 속도마다 다른 음이 날테니까 기준되는 속도를 100km/h로 정해보자.

100km/h는 초속으로 100*1000m/3600sec 이므로 1000/36 m/s = 27.7777 m/s


100km/h = 27.7777 m/s

시속 100km를 달리면 1초에 28m를 간다.


기준음 '라'는 진동수가 440Hz라는 것은 그냥 알고 있다. 즉, 1초에 440번 두드리면 '라' 소리가 난다.

옥타브가 하나 올라가면 진동수가 배가 된다. 즉 한 옥타브 높은 '라'는 880Hz다.

한 옥타브는 12개의 반음이 있다. 

평균율 음계에서의 음의 증가는 주파수를 log를 취했을 때 일정한 간격으로 증가하는 것을 알고 있다.

즉,


880Hz = 2 * 440Hz

log 880 = log (2 * 440) = log 2 + log 440

한 옥타브가 올라가면 주파수의 로그값은 log 2 만큼의 증가가 일어난다. 그러면 12개 들어 있으므로 하나의 반음은  log2의 1/12만큼 증가한다.


피아노 건반을 보면 도는 라부터 반음 3개를 더한만큼의 주파수를 가지게 된다. 따라서, 도의 주파수를 X라고 한다면


log X = log 2 * (3 / 12) + log 440

X = 10 ^ (log 2 * (3 / 12) + log 440)

X = 10 ^ (log 2 * (3 / 12)) * 440 = 523.2511 (Hz)


즉, 1초에 523번 두드리면 '도' 음이 난다.
만약 시속 100km로 달린다면 1초에 28m (27.7777m)를 간다.
28Hz의 소리를 낸다면, 1m 마다 한번씩 홈을 내면 되는 것이고,
280Hz라고 한다면 0.1m (10cm)마다 한번씩 홈을 내면 된다.
즉 계산식을 만들자면, 100km/h로 달릴때는,
28m 혹은 2800cm를 원하는 진동수로 나누면 될 것 같다.


만약 도, 레, 미, 파, 솔을 연주한다면, 


도 = 라 + 반음 3개

레 = 라 + 반음 5개

미 = 라 + 반음 7개

파 = 라 + 반음 8개

솔 = 라 + 반음 10개


이므로, 각각의 Hz를 구하면

10 ^ (log 2 * (3 / 12)) * 440 = 523.2511

10 ^ (log 2 * (5 / 12)) * 440 = 587.3295

10 ^ (log 2 * (7 / 12)) * 440 = 659.2551

10 ^ (log 2 * (8 / 12)) * 440 =  698.4564

10 ^ (log 2 * (10 / 12)) * 440 = 783.9908


각각을 시속 100km/h인 초속 27.7777m/s, (2777 cm/s)에 대해서 나누면

2777 / 523.2511 = 5.3 cm (도)

2777 / 587.3295 = 4.7 cm (레)

2777 / 659.2551 = 4.2 cm (미)

2777 / 698.4564 = 4.0 cm (파)

2777 / 783.9908 = 3.5 cm (솔)


간격으로 홈을 내면 연주할 수 있다. 그리고 28m가 1초이므로 대략 9m 홈을 내면 는 0.3초정도 지속 될 것 같다.



난, 이번 문재인 정권이 과거 정권에서 있었던 공무원 혹은 극우들이 저지른 소리없이 다 들춰내 도려내는 모습에 묘한 쾌감을 느낀다.

도무지, 출근 중에 떠올랐던 아이디어가 뭐였는지 생각이 나질 않는다.

아마도, 뭔가를 해석하는 관점에 관련된 것이었는데, 출근상황을 다시한 번 시뮬레이션하고, 어느 지점을 지날 때 쯤이었는지 어렴풋하게 기억만 나지 그 상황에서 무슨 생각을 했는지 기억이 나질 않는다.


나는 원래 기억을 못하거나, 기억하기 위한 여러 연결고리를 미쳐 만들지 못한채 잊었거나, 기억할 량이 많을 정도로 버라이어티한 주제를 떠올렸거나 하는 문제겠지.

인간이 실재 일어나지 않은 일을 시뮬레이션할 수 있는 능력이야말로 인간이 현재 지구를 지배하는  지위에 올려 놓은 중요한 요소 중 하나이다. 이런 지위에 올려 놓은 역할로서 시뮬레이션은 크게 두 가지인데, 하나는 위험을 그려보는 일이고, 다른 하나는 현실에 만족하지 못하도록 계속 몰아가는 역할이다.


지금 먹고 있는 이 음식을 다음에 먹을 수 있을까. 그렇지 못할 것 같다면 그것은 위험한 요소다.

아무 위험이 없는 상황에서도, 신의 위치에 올라가지 못한 이상 현실에 만족할 수 없다.

그 상황을 극복하기 위한 역할이 시뮬레이션으로 시작한다.


어느 팀에서 1년간 Node.js 로 작업을 하고나서 다시 python으로 돌아 갔다는 을 보고나서는 그럴 수 있다고 생각했다. nodejs에서 사용하는 Javascript는 기존의 Javascript와 설계 방식이 다르다. 모든 곳에서 비동기적인 상황을 고려해야한다. 정확히는 I/O가 일어나는 함수의 경우에서 비동기적인 처리를 고려해야한다.


Nodejs는 구글의 자바스크립트 엔진인 V8이 JIT 컴파일러를 도입하면서 괜찮은 성능을 제공하였기 때문에 가능한 프레임웍이었다. 그리고, 최대한 동기적인 작업을 설계에서 배제시켰고, 그에 따라 nodejs 생태계는 비동기 철학에 맞춰 확장이 되었다.


처음 nodejs가 나왔을 때 비동기적인 설계를 편하게 구현할 수 있는 자바스크립트의 문법적 기능으로는 closure 밖에는 없었던 것 같다. 지금은 co-routine을 구현하기 위한 generator가 들어가고, Promise가 들어가면서 지금과는 다른 설계방식이 앞으로는 유행하지 않을까 한다.


Nodejs는 javascript라는 것이 특징이 아니다. javascript가 클라이언트에서 사용되다가 비로소 서버에서도 사용되는 것에 열광할 일이 아니라는 것이다. 마이크로소프트의 ASP가 VB만이 아닌 Javascript로도 제공됐었다는 사실을 아시려나 모르겠다. npm 마저도 특징이 아니다. 요샌 다 패키지 매니저는 기본이지 않은가. Nodejs의 매력은 "비동기적인 설계를 강제"한 것에 있다. 만약, python이든, java든 php든 심지어 C++이라할지라도 비동기적인 함수로만 패키지의 생태계가 만들어진다면, 아마 열광할 요소가 있을 것이다. 그러나 전통강자가 있으니 아마 쉽지는 않을 것이다.



의식의 확장.


1인 회사가 가능한 이유를 잘 생각해보면, 두 가지에 근거한다.


1. 사회의 분업화

2. 단순 노동의 자동화


분업화된 사회는 일을 공정으로 나누고, 각 공정에 전문가 혹은 숙련공을 만들어냈기 때문이다. 하나의 조직에서 분업화가 이루어진 이후에는 아웃소싱이라는 방법을 통해 외부에서 전문적인 기능을 제공하는 방향으로 진화하였다. 1인 회사의 필수 요소는 하나의 회사를 지원하기 위한 외부 회사가 존재하기 때문이다.

기계에 의한 단순노동의 자동화는 한 사람이 처리해야하는 일을 필수적인 부분에 집중할 수 있게 했다. 자동화의 최전방에 있는 온라인서비스가 있기 때문에 가능해졌다. 이런 사회적인 현상은 비가역적이다. 웬만해서는 다시 원래의 불편한 사회로 돌아가지 않을 것이다.


1인회사를 만든다는 것은 내 전문기술에 대한 자부심에서 시작하는 것이며, 둘 이상의 커뮤니케이션 비용에서 오는 위험을 최대한 감수하고, 초기 이익을 최대한 재투자를 하는데 부담없이 하려는 것이다. 이런 1인 회사의 한계점은 내가 할 수 있는 전문영역에서의 만족할만한 품질에 대해서는 누군가에게 의존할 수 없는 지점에 있다. 말 그대로 내가 둘이었으면 하는 마음이 드는 때가 그 한계라는 것이다. 내가 할 수 있는 세무 대리를 지원해주는 회사, 디자인을 지원하는 회사, 온라인 마케팅 등등 모든 전문영역은 내가 할 일을 제외한 나머지 회사들의 지원에서 가능한 것이고, 그렇게 다 외부로 떼어냈을 때, 남는 것은 나만 할 수 있는 영역에 대한 한계를 실감하는 것이다.


나와 같은 지능을 갖는 누군가를 또 만든다는 것은 어려운 일이다. 하지만, 내가 하는 지적인 판단의 일부를 복제하는 일은 이제 조금씩 가능해질 것이다. 그런 것이 가능한 영역을 도와주는 어시스턴트 프로그램을 쉽게 구할 수 있을 것이며, 사람들의 우려처럼 직업이 바로 없어진다거나 새로운 직업이 바로 등장하지는 않을 것이다. 엑셀과 이메일이 회사에서 일하는 방식을 바꾸는데도 사회가 수용하는데 10년은 더 걸렸다. 그 동안 직업군은 천천히 변했고, 사람들의 기술은 천천이 이관되어 갔다. 어떤 산업군은 빨리 도입될 것이며, 어떤 산업군은 느릴것이다. 지능의 확장을 도입하는 것은 어떤 식으로든 이루어질 것이며, 그것은 지금의 우리가 사용하는 기술과 크게 다르지 않은 방식으로 시작한다.


지적인 판단을 도와주는 확장이 일어나는 순간이 그 시작이된다.

기대반, 우려반.

놀라운 시점을 살고 있다.





+ Recent posts