
개발자라면 누구나 '데스크테리어(Deskterior)'에 대한 로망, 하나쯤은 가지고 계시죠?
기계식 키보드 옆에 은은하게 빛나는 무언가가 있으면 일이 더 잘 되는 기분이 들거든요.
그중에서도 'Divoom Pixoo 64' 같은 픽셀 아트 디스플레이는 개발자들의 필수 장난감 중 하나입니다.
보통은 스마트폰 앱으로 예쁜 그림을 띄워놓고 만족하곤 합니다.
하지만 우리 같은 엔지니어들은 금방 손이 근질거리기 시작합니다.
"이거, 내가 짠 코드로 제어할 수 없을까?"
"배포가 성공하면 초록색, 실패하면 빨간색 불이 들어오게 하고 싶은데."
이런 고민을 하던 찰나, 아주 반가운 소식을 발견했습니다.
바로 루비(Ruby) 생태계의 전설적인 인물, Aaron Patterson(닉네임 tenderlove) 님이 재미있는 장난감을 공개했거든요.
바로 Ruby용 Pixoo 클라이언트(pixoo-rb) 라이브러리입니다.
GitHub을 구경하다가 "역시 고수는 노는 물이 다르구나" 싶어서 무릎을 쳤습니다.
오늘은 이 라이브러리를 통해 우리가 얻을 수 있는 '코딩의 즐거움'에 대해 이야기해 볼까 해요.
단순한 장난감이 어떻게 나만의 모니터링 대시보드가 되는지 살펴보시죠.
가볍게 커피 한 잔 들고 따라오세요.
사실 하드웨어 제어라고 하면 막연한 두려움을 갖는 분들이 꽤 많습니다.
저도 신입 시절엔 시리얼 통신이니 프로토콜이니 하는 말만 들어도 머리가 지끈거렸어요.
그런데 이 라이브러리는 정말 'Ruby스럽게' 우아합니다. 복잡한 네트워크 통신 과정을 아주 직관적인 메서드로 추상화해 뒀거든요.
코드를 한번 볼까요? 우리가 그림판에 점을 찍듯이, 64x64 픽셀 캔버스에 좌표를 찍으면 됩니다.
img.set_pixel(x, y, color)이 한 줄이면 원하는 위치에 점이 찍힙니다. 여기에 반복문을 돌리고 수학적인 패턴을 넣으면, 순식간에 화려한 애니메이션이 만들어지죠.

하지만 진짜 매력은 단순한 그림 그리기가 아닙니다. 이 라이브러리에는 '원격 데이터 바인딩' 기능이 숨어 있거든요. 이게 무슨 뜻이냐고요?
Pixoo 디스플레이가 단순히 내 명령만 기다리는 수동적인 화면이 아니라는 겁니다. 스스로 특정 서버에 접속해서 데이터를 가져와 보여주도록 설정할 수 있어요.
Aaron 님은 이 기능을 이용해 집안의 이산화탄소(CO2) 농도나 미세먼지(PM2.5) 수치를 띄우는 예시를 보여줍니다. 집에 라즈베리파이 같은 홈 서버를 구축해 두고 센서 데이터를 수집하고 있다고 가정해 봅시다. 그 서버가 같은 간단한 JSON만 뱉어주면 됩니다. 그럼 우리는 Ruby 코드로 Pixoo에게 이렇게 명령만 내리면 끝이에요.
"야, 너 10초마다 저 URL 찔러서 데이터 가져와. 그리고 화면에 띄워."
이때 라는 타입을 사용합니다. 이 코드가 실행되면, 이제 제 책상 위 픽셀 액자는 실시간 홈 모니터링 대시보드로 변신합니다. 단순히 예쁜 그림만 보여주던 장식품이, 실질적인 가치를 주는 IoT 기기가 되는 순간이죠.
현업에서 대시보드 만든다고 그라파나(Grafana) 설정하느라 골머리 앓던 기억, 다들 있으시죠? 그런데 이렇게 물리적인 장치에 내 코드가 살아 숨 쉬는 걸 보면, 묘한 해방감이 듭니다. 화면 속의 코드가 현실 세계로 튀어나오는 느낌이랄까요.
심지어 PNG 이미지를 바로 로드해서 띄우는 기능도 있습니다. 디자이너 동료가 만들어준 도트 이미지를 그대로 디스플레이에 전송할 수 있다는 뜻입니다. 배포가 완료되면 따봉 이미지를 띄우거나, 서버 장애가 나면 해골 이미지를 띄우는 상상을 해보세요. 생각만 해도 짜릿하지 않나요?
제가 10년 넘게 개발을 해오면서 느낀 게 하나 있습니다. 우리는 매일 '비즈니스 로직'과 '생산성'이라는 압박 속에 살고 있어요. 클린 아키텍처, MSA, 리팩토링... 물론 다 중요합니다.
하지만 가끔은 이렇게 '순수한 재미'를 위한 코딩이 필요해요. 내가 짠 루프가 화면에서 반짝거릴 때 느끼는 원초적인 기쁨. 그게 우리가 처음 개발자가 되기로 마음먹었던 이유 아니었나요?
GitHub에서 님의 코드를 보면서 느낀 건 기술적인 감탄뿐만이 아니었습니다. 그 바쁜 와중에도 이런 '장난'을 진심으로 즐기는 태도가 더 존경스러웠죠.
여러분도 책상 위에 먼지 쌓인 디스플레이나 안 쓰는 태블릿이 있다면 한번 도전해 보세요. 거창한 프로젝트가 아니어도 좋습니다. "오늘 점심 메뉴"를 랜덤으로 띄워주는 기능이라도 좋아요. 그 작은 시도가 잃어버렸던 코딩의 재미를 다시 찾아줄지도 모릅니다.
오늘 퇴근하고 집에 가서, 묵혀뒀던 장비들을 한번 꺼내보는 건 어떨까요? 저도 오늘 밤엔 제 픽셀 시계에 '칼퇴 기원' 메시지를 띄우는 루비 스크립트를 짜볼 생각입니다.


