Edsger: reMarkable 2에 수기 Clojure REPL 도입하기

촉각적인 필기와 고수준 프로그래밍의 교차점은 현대 소프트웨어 개발에서 보기 드문 영역입니다. 대부분의 개발자는 기계식 키보드와 고해상도 모니터에 의존하지만, "Edsger" 프로젝트는 디지털 노트의 아날로그적 느낌과 Read-Eval-Print Loop (REPL)의 상호작용적 특성 사이의 간극을 메우고자 시도합니다. 특히 reMarkable 2를 위해 설계된 Edsger는 사용자가 Clojure 코드를 손으로 직접 쓰고 기기에서 바로 실행할 수 있게 해줍니다.

이 실험은 코딩의 전통적인 입력 방식을 거부하며, reMarkable 2를 수동적인 노트 필기 기기에서 능동적인 계산 환경으로 변환합니다. e-ink와 디지털 잉크의 독특한 특성을 활용하여, Edsger는 Clojure의 상징적 특성에 참여할 수 있는 명상적이면서도 기능적인 방법을 제공합니다.

수기 REPL의 아키텍처

reMarkable 2와 같은 기기를 위한 REPL을 구축하려면 필기에서 실행 가능한 코드로의 전환을 처리하기 위한 전문화된 아키텍처 접근 방식이 필요합니다. 시스템은 다음과 같은 몇 가지 뚜렷한 다른 처리 계층을 관리해야 합니다.

  1. Ink Capture: 기기는 사용자가 글을 쓸 때 스타일러스의 원시 좌표와 압력을 캡처합니다.
  2. Handwriting Recognition: 필기된 기호들은 ASCII/UTF-8 문자로 변환되어야 합니다. Clojure가 괄호, 대괄호, 중괄호에 크게 의존한다는 점을 고려할 때, 인식 엔진은 이러한 구조적 구분자와 함께 특히 정밀해야 합니다.
  3. The Clojure Runtime: 필기가 텍스트로 변환되면 Clojure 인터프리터로 전달됩니다. REPL은 그런 다음 식을 평가하고 결과를 반환합니다.
  4. Visual Feedback: 평가의 결과물은 다시 e-ink 화면에 렌더링되어 루프를 완성합니다.

왜 Clojure인가?

Clojure는 미니멀리즘적인 구문과 상징적 구조 덕분에 수기 REPL의 이상적인 후보입니다. 이 언어의 S-expressions (중첩된 리스트)에 대한 의존성은 수학자나 컴퓨터 과학자들이 화이트보드나 종이에 논리를 스며듭니다. 물리적으로 괄호를 쓰는 행위는 키보드로 타이핑하는 것보다 특정 유형의 알고리즘 스케칭에 더 직관적으로 느껴질 수 있으며, 이는 "종이 위에서 생각하기"의 정신과 일치합니다.

기술적 과제와 구현

reMarkable 2에서 이러한 시스템을 구현하는 것은 하드웨어의 제약 사항을 탐색하는 것을 포함합니다. e-ink 디스플레이의 느린 재생률은 피드백 루프가 당혹스러운 지연 시간을 피하기 위해 최적화되어야 함을 의미합니다. 또한, 통합을 위해서는 필기 입력 계층과 기반이 되는 Clojure 환경 사이의 통신을 처리할 위한 커스텀 브릿지가 필요합니다.

프로젝트의 문서와 아키텍처 스케치에 따르면, 시스템은 디지털 잉크를 구조화된 데이터로 변환한 다음 평가하는 파이프라인에 의존합니다. 이 프로세스는 태블릿을 코드가 단순히 생각의 기록이 아니라 페이지의 실행 가능한 부분인 살아있는 문서로 만듭니다.

Slow Coding의 철학

기술적 성취를 넘어, Edsger는 "slow coding"을 향한 변화를 나타냅니다. 자동 완성 기능과 AI 생성 스니펫이 만연한 시대에, 코드를 손으로 직접 쓰는 것은 개발자가 속도를 늦추고 모든 문자와 구조적 선택을 신심하게 고려하도록 강제합니다. 이러한 촉각적 참여는 구현되는 논리를 더 깊이 이해하게 만들 수 있으며, 프로그래밍을 캘리그래피의 한 형태로 변ط환합니다.

프로젝트의 이름을 알고리즘에 대한 엄격한 접근 방식과 논리의 우아함에 대한 선호로 알려진 컴퓨터 과학의 개척자인 Edsger W. Dijkstra의 이름을 따서 명명한 것은, 저자가 단순한 생산 속도보다 프로그래밍의 지적적 규율을 지정합니다.

Sources