알리익스프레스의 은밀한 WebAudio 핑거프린팅, 블루투스 멀티포인트를 끊어먹다 — 747 pts
한 블로거가 알리익스프레스 홈페이지를 열 때 알리바바의 AWSC 남용 방지 스크립트(collina.js와 fireyejs.js)가 두 개의 숨겨진 AudioContext 객체를 조용히 생성한다는 사실을 알아챘다. 이 스크립트는 톱니파 오실레이터 → 분석기 → 스크립트 프로세서 → 게인 노드(0으로 설정) → 오디오 대상 노드로 이어지는 WebAudio 그래프를 생성하여 브라우저의 오디오 구현 특성을 핑거프린팅하기 위해 들리지 않는 소리를 발생시킨다. 볼륨(게인)이 0으로 설정되어 귀에는 아무것도 들리지 않지만, 그래프는 여전히 시스템의 실제 오디오 출력 장치와 연결되어 작동한다. 이로 인해 블루투스 멀티포인트의 재생 우선순위를 가로채 다른 기기에서 재생 중이던 오디오를 끊어버리는 부작용이 발생한다.
이는 브라우저 핑거프린팅 중에서도 유독 고약한 형태다. 사용자의 헤드폰을 물리적으로 먹통으로 만드는 눈에 띄는 부작용을 일으키기 때문이다. 스크립트는 고도로 난독화되어 있으며, 화면에 보이는 미디어 요소도 없고, 자동 재생 호출도 없으며, 미디어 세션 상태도 없이 백그라운드에서 은밀히 실행된다. 알리바바의 보안 도구가 단지 브라우저를 식별하겠다는 명목으로 페이지 로드 시 오디오 컨텍스트를 몰래 생성하는 행위를 용인해 왔다는 사실은, 남용 방지 인프라가 사용자의 권익으로부터 얼마나 멀어졌는지를 적나라하게 보여준다. 문제 발견 후 crates.io 팀 등에 통보되었지만, 수백만 명의 사용자는 그저 자기 블루투스 이어폰이 이상하다고만 생각했을 것이다.
Source: blog.laserphile.com
HTML만으로 이것까지 된다고? — 407 pts
크리스 버넬(Chris Burnell)이 자바스크립트 한 줄 없이 순수 HTML만으로 구현 가능한 최신 동적 UI 기능들을 한데 모아 정리했다. 가벼운 클릭으로 닫히는 팝업을 지원하는 popover, 모달 대화상자인 <dialog>, 공유된 name 속성을 통해 상호 배타적 아코디언을 구현하는 그룹화된 <details>, CSS 앵커 포지셔닝(anchor positioning), command/commandFor 속성 등이 망라되어 있다. 2026년 HTML Day 행사 중 한 시간 만에 초안을 작성한 뒤, 브라우저 구현별 접근성(a11y) 미비점까지 솔직하게 주석으로 덧붙였다.
이 글의 본질은 단순히 “HTML로 이런 것도 된다”는 신기함이 아니다. 브라우저 플랫폼 자체가 자바스크립트 라이브러리 전체의 존재 이유를 조용히 흡수해 왔다는 사실이다. 팝오버 메뉴, 모달 창, 아코디언, 자동 완성 제안, 스크롤 연동 애니메이션까지 모두 선언적이고 네이티브한 방식으로 동작한다. 다만 버넬이 솔직히 밝혔듯 브라우저 지원이 고르지 못하고 접근성 지원이 종종 불완전하다는 맹점은 여전히 남아 있다. 그럼에도 드롭다운 하나 열고 닫겠다고 여전히 40KB짜리 JS 번들을 끌어다 쓰는 개발자들에게는 확실한 경종을 울린다.
Source: chrisburnell.com
Show HN: 기기 내에서 피아노 연주를 자동 완성하는 125M 모델을 만들었다 — 404 pts
사이먼 에드워즈(Simon Edwards)가 아이폰 15에서 실시간(초당 약 108음표)으로 피아노 연주를 자동 완성해 주는 1억 2,500만(125M) 파라미터 크기의 트랜스포머 모델을 학습시켰다. RollTab이라는 이름의 이 프로젝트는 피아노를 위한 깃허브 코파일럿이다. 건반을 몇 음 치면 모델이 그 곡을 자연스럽게 이어서 연주한다. 14번의 실험을 거치면서 가장 큰 성능 도약을 이끈 요인은 적절한 MIDI 토큰화(문법 제약형 생성을 지원하는 팩터링된 표현), 공격적인 데이터 정제, 그리고 DPO(직접 선호도 최적화) 사후 학습이었다.
기술적 깊이가 상당하다. 에드워즈는 다양한 MIDI 표현 방식을 시도했다. 전통적인 note-on/note-off 방식은 음표가 중간에 끊기거나 영원히 울리는 문제가 있었고, 명시적 음길이(duration) 방식은 너무 느렸다. 그는 생성 도중 문법적 유효성을 강제하는 팩터링 문법 접근법에 정착했다. 학습 데이터 파이프라인에서도 품질 필터링을 극단적으로 수행했다. 그 결과 스마트폰 위에서 거뜬히 구동되면서도 유명 곡들의 음악적으로 일관된 전개를 이어 나가는 경량 모델을 완성했다. MIDI 키보드가 있다면 앱스토어에서 무료로 체험해 볼 수 있다.
Source: simedw.com
난 깊고 두터운 게 좋다: 영어 선생님들께 드리는 사과문 — 398 pts
Experimental History의 애덤 마스트로이안니(Adam Mastroianni)는 위대한 문학에는 자신이 ’두터움(thickness)’이라 부르는 독특한 특성이 있다고 주장한다. 그것은 독자의 주의력에 비례하여 스스로를 펼쳐 보이는 성질이다. 시간을 쏟을수록 더 많은 것을 돌려받는다. 그는 오랫동안 ‘위대한’ 고전문학이란 영어영문학 전공자들의 일자리를 유지하기 위한 사기극에 불과하다고 여겨왔음을 고백하며, 자신의 생각이 틀렸음을 인정한다. 그러나 동시에 그는 학창 시절의 영어 교사들에게도 사과를 요구한다. 그 작품들이 사실은 “보물이 숨겨진 어둡고 구불구불한 동굴”이었음에도 교사들은 그저 당연하고 자명한 것처럼 가르쳤을 뿐, 동굴 안으로 들어가는 법을 전혀 가르쳐주지 않았기 때문이다.
이 에세이는 우리가 ’깊이’를 가르치는 방식에 대한 사색이다. 두터움은 까다롭다. 정밀한 독자에게 보상을 주는 방식은 필연적으로 가벼운 독자를 밀어내기 때문이다. 마스트로이안니의 통찰은 문학을 넘어 코드, 과학, 음악 등 진정한 깊이를 가진 모든 분야로 확장된다. 그 세계를 깊이 사랑하는 사람들은 종종 그 이유를 명쾌하게 설명하지 못하고, 그것을 가르쳐야 할 사람들은 표면만 훑으며 깊이가 저절로 와닿을 것이라 착각한다. 결코 그렇지 않다. 누군가는 동굴 입구를 똑똑히 가리켜 주어야 한다.
Source: experimental-history.com
윈도우는 모두에게서 로르샤흐 테스트를 끄집어낸다 (2003) — 330 pts
30년 이상 윈도우의 역사를 지켜온 마이크로소프트의 베테랑 레이먼드 첸(Raymond Chen)의 2003년 클래식 블로그 포스트가 다시 수면 위로 올라왔다. 윈도우 95 패키지 박스에는 컴퓨터 모니터를 가리키는 아기 홀로그램 복제 방지 스티커가 붙어 있었다. 그런데 한 국가의 정부가 아기가 “알몸”이라며 공식 항의를 제기했다(실제로는 상의를 입지 않고 허리 윗부분만 나온 그림이었다). 마이크로소프트는 팔 애니메이션을 포기한 채 멜빵바지를 입힌 새 홀로그램을 긴급 제작해야 했다. 윈도우 XP에서도 비슷한 일이 있었다. “붉은 달 사막” 배경화면에서 엉덩이를 보았다는 사람부터, 계정 아이콘에서 히틀러를 보았거나, 사용자 전환 만화 이미지에서 음란한 신체 부위를 연상한 사례들이 쏟아졌다.
레이먼드 첸다운 글이다. 일상적이면서도 동시에 매혹적인 이야기들로 채워져 있다. 지각은 곧 투영이며, 수십억 명의 사용자에게 소프트웨어를 배포한다는 것은 모든 픽셀 하나하나가 거대한 로르샤흐 잉크 얼룩 테스트가 됨을 뜻한다. 당시 논란이 되었던 “알몸 아기” 윈도우 95 홀로그램은 이제 수집가들의 희귀 아이템이 되었다.
Source: devblogs.microsoft.com
Rust 인기 크레이트 arrayref, 빌드 시점 악성 페이로드 실행 사건 — 304 pts
8월 20일, Rust 생태계의 널리 쓰이는 크레이트인 arrayref의 변조된 악성 릴리스가 crates.io에 등록되었다. 버전 0.3.10은 정상적인 proc-macro2와 이름이 유사한 타이포스쿼팅 크레이트 proc-macro1에 의존성을 몰래 추가했다. 원 메인테이너의 계정(droundy)이 탈취되었으며, 공격자는 internment와 append-only-vec에도 유사한 악성 버전을 배포했다. proc-macro1의 빌드 스크립트는 컴파일 시점에 원격 서버에서 바이너리를 다운로드해 실행하는데, 이는 감염된 버전을 의존성으로 당겨와 빌드하기만 해도 즉시 악성 페이로드가 실행됨을 뜻한다.
공격은 대단히 치밀했다. C2 서버 주소는 base64 조각으로 쪼개어 숨겼고, TLS 연결은 모든 인증서를 검증 없이 수용했으며, 바이너리는 빌드 프로세스와 분리되어 백그라운드에서 실행되었다. 심지어 proc-macro1의 소스 디렉터리에는 정품 proc-macro2의 코드를 그대로 넣어두어 악성코드가 도는 중에도 정상적으로 빌드가 완료되도록 위장했다. 배포자 이름 역시 David Tolnay의 실제 계정과 유사하게 꾸몄다. crates.io 팀은 모든 악성 버전을 즉각 삭제했으나, 이는 소프트웨어 공급망 보안 위기를 보여주는 또 하나의 충격적인 사례다. arrayref, internment, append-only-vec에 의존하고 있다면 즉시 락파일을 확인해야 한다.
Source: safedep.io
Mojo, 마침내 오픈소스로 공개되다 — 281 pts
모듈러(Modular)가 소스 안정성을 갖춘 1.0 버전에 도달한 지 일주일 만에 Mojo 컴파일러를 Apache 2.0 라이선스(LLVM 예외 조항 포함)로 오픈소스화했다. 컴파일러, 툴체인, 표준 라이브러리 전체가 modular 깃허브 저장소에 공개되었다. Bazel 기반 빌드 시스템을 채택하여 단 한 줄의 명령어로 소스 컴파일이 가능하다. Mojo는 GPU, AI 가속기, 고급 연산에 최적화된 범용 프로그래밍 언어로, AI 시대에 걸맞은 “현대화된 C++“을 지향한다.
발표문은 폐쇄형 개발에서 오픈소스로 전환한 과정을 신중하게 포장했다. 소수 정예 설계 팀이 언어의 “영혼”을 먼저 찾고, 커뮤니티 피드백을 통해 폐쇄적 에코챔버를 벗어나는 과정이었다는 설명이다. 일리 있는 설명이지만, 4년 동안 비공개로 컴파일러를 개발해 온 기간이 오픈소스 언어로서의 신뢰를 쌓기에는 너무 길었다는 비판도 피하기 어렵다. Apache 2.0 라이선스 선택은 옳았다. 컴파일러와 프로그래밍 언어의 표준 규격이나 다름없기 때문이다. 이제 진짜 시험대는 오픈소스 커뮤니티가 실제로 모여들 것인가다. Mojo는 과거에도 몇 차례 과열된 기대치를 형성한 적이 있다. 컴파일러 공개는 결승선이 아니라 최소한의 입장권에 불과하다.
Source: modular.com
80년대 NeXT의 산소호흡기가 되어준 CIA 자금 — 249 pts
샤론 와인버거(Sharon Weinberger)의 저서 *죽음의 계곡(Valley of Death)*에 실린 월스트리트저널 발췌문에 따르면, 1980년대 후반 잡스의 NeXT가 극심한 자금난으로 피를 흘리고 있을 당시 미 중앙정보국(CIA)이 비밀리에 대량의 특수 워크스테이션을 구매하며 핵심 고객 역할을 해주었던 것으로 드러났다. 1986년 극비 위성 정찰 프로젝트인 ‘프로그램 B’ 소속 CIA 관료들이 NeXT를 방문했고, 이후 약 2만 대에 달하는 워크스테이션 계약을 체결했다. 장비들은 표식이 없는 트럭에 실려 CIA 위장 회사에서 특수 칩과 그래픽 프로세서로 개조된 뒤, 모펫 비행장에서 C-5 수송기에 실려 기밀 목적지로 공수되었다.
미 국가정찰국(NRO)은 위성 사진을 분석하기 위해 NeXT의 고해상도 모니터를 사용했다. 잡스는 1급 비밀 취급 인가를 받았다. 이 계약은 NeXT가 성숙한 비즈니스로 도약할 수 있도록 “5년간의 추가 런웨이”를 제공했고, 이 런웨이는 1996년 애플이 NeXT를 인수하며 잡스를 복귀시키는 결정적 발판이 되었다. NeXTSTEP은 오늘날 macOS, iOS, 그리고 애플이 만드는 모든 운영체제의 모태가 되었다. 이 이야기는 실리콘밸리가 순수한 상업적 노력만으로 꽃피었다는 신화를 바로잡는 유용한 교정제다. 군사·정보 복합체는 세상이 알아채기 수십 년 전부터 애플의 미래 운영체제에 막대한 보조금을 지급하고 있었다.
Source: wsj.com
어떤 규모에서든 Git 호스팅하기 — 209 pts
Cursor의 엔지니어링 블로그가 대규모 환경에서 Git 리포지토리를 호스팅할 때 직면하는 기술적 난제들을 깊이 있게 다루었다. Git은 분산 구조이므로 리포지토리의 모든 인스턴스가 동일하며, 서버 복제본이라고 해서 특별한 지위를 갖지 않는다. 그러나 로컬 환경에서 Git을 효율적으로 만들어주는 팩파일(packfile) 기반 스토리지 포맷은 대규모 호스팅 환경에서는 치명적인 병목이 된다. 단일 파일시스템에 존재해야 하는 거대한 바이너리 파일은 여러 머신으로 분산하기 어렵고, 리팩(repack) 연산은 극도로 비싸다. 글은 세 가지 접근법을 검토한다. 파일시스템을 분산하거나, 팩파일을 분산하거나, 아니면 Git 프로세스 자체를 분산하는 방식이다.
GitHub나 GitLab의 인프라가 왜 그토록 복잡한지 궁금했던 이들에게 매우 훌륭한 기술적 레퍼런스다. 핵심 통찰은 Git이 리눅스 커널의 탈중앙화된 개발 워크플로우를 위해 설계되었다는 점이다. 이는 오늘날 대다수의 팀이 사용하는 방식과 전혀 다르다. 20년이 지난 지금 모두가 중앙화된 호스트를 통해 Git을 쓰고 있으며, 이 분산형 태생은 호스팅 제공자 입장에서는 기능이라기보다 부채에 가깝다. Cursor의 관점이 흥미로운 이유는 대규모 환경에서 초고속 Git 연산이 필요한 AI 코딩 에디터를 만들고 있기 때문이다. 이 글은 자신들의 인프라 투자를 정당화하는 설명서이기도 하다.
Source: cursor.com
맥락 읽기
오늘의 프론트페이지는 세 가지 테마가 지배했다. 첫째, 플랫폼을 향한 신뢰의 붕괴다. 핑거프린팅을 위해 사용자의 블루투스 헤드폰을 몰래 먹통으로 만든 알리익스프레스, 신뢰받던 메인테이너 계정 탈취로 벌어진 Rust 공급망 공격, 그리고 애플의 현대 운영체제를 비밀리에 지탱해 주었던 CIA의 자금 수혈은 모두 같은 결론을 가리킨다. 우리가 일상적으로 의존하는 거대 시스템들이 우리가 모르는 곳에서 전혀 다른 짓을 벌이고 있다는 사실이다. 특히 알리익스프레스의 행태는 버그가 아니라 사용자를 잠재적 적으로 취급하는 의도된 어뷰징 방지 인프라였다는 점에서 더욱 섬뜩하다.
둘째, 플랫폼이 라이브러리를 집어삼키는 현상이다. 자바스크립트의 영역을 declarative하게 흡수하는 HTML, C++과 CUDA의 영역을 대체하려는 Mojo, Git의 태생적 한계를 극복하려는 Cursor의 인프라 씨름은 하나의 반복되는 패턴을 보여준다. 베이스 레이어가 지속적으로 확장되며 과거에 별도의 복잡성을 요구했던 상위 도구들을 흡수하고 있다는 점이다. 이것이 축복인지 저주인지는 베이스 레이어가 그 역할을 얼마나 완성도 있게 해내느냐에 달려 있으며, HTML 글이 솔직히 밝혔듯 브라우저 네이티브 구현은 아직 덜컹거리는 구석이 많다.
셋째, 작은 모델이 일궈낸 진짜 성과다. 1억 2,500만(125M) 파라미터로 스마트폰 위에서 실시간 피아노 자동 완성을 구현한 모델이 그것이다. 클라우드도 없고, API도 없으며, 구독료도 필요 없다. 조 단위 파라미터가 난무하는 프론티어 모델의 과열 속에서, 오직 하나의 과제에 집중해 완벽하게 최적화된 온디바이스 소형 모델은 신선한 안도감을 준다. 대다수의 실생활 문제에 진정으로 필요한 AI 배포 형태는 바로 이런 모습일 것이다.