Container Timing origin trial : Chrome 148부터 Container Timing performance API를 실험적으로 사용할 수 있다. Container Timing은 요소가 언제 로드되는지 알 수 있는 Element Timing을 확장해서 콘텐츠 블록이 사용할 수 있는 시점을 파악할 수 있다. 이은 HTML 요소에 containertiming 속성을 지정해서 해당 요소가 측정해야 함을 알려주고 PerformanceObserver로 관찰할 수 있다.(영어)
그 밖의 개발 관련
QUIC and HTTP/3 Come To Node.js (finally) : 아직 릴리스에 포함되진 않았지만 코드에 --experimental-quic 플래그를 통한 QUIC, HTTP/3 지원이 Node.js에 들어왔다. 실험적이지만 사용할 수 있게 되었으므로 Node.js에서 Quic을 어떻게 사용할 수 있는지를 설명한다.(영어)
Redis array type: short story of a long development : antirez가 Redis의 새로운 Array 데이터 타입을 구현했다. LLM을 이용해서 4개월 동안 작업했는데 LLM 없이도 4개월 정도면 구현했겠지만, LLM 덕에 훨씬 더 많은 일을 할 수 있게 되었다. 첫 달에는 사양 문서만 작성했는데 AI와 논의하면서 훨씬 더 진화할 수 있게 되었고 두 번째 달부터 자동 프로그래밍으로 구현을 시작했고, 코드를 한 줄씩 익으면서 비효율이나 오류를 수동이나 AI로 고쳤고 세 번째 달에는 다양하게 스트레스 테스트를 했다. 이러한 과정을 통해서 고품질 시스템 프로그래밍 작업에 여전히 관여해야 하지만 AI가 없었다면 하지 않았을 복잡성 수준에 도전할 수 있었는데 AI는 매우 피곤한 대규모 작업과 복잡한 알고리즘에 버그가 없는지 확인하는 데에 안전망을 제공해 준다는 것을 깨달았다.(영어)
An Overview of Spinel, Matz's AOT Ruby Compiler : Matz가 예전부터 가지고 있던 아이디어를 최근 Claude Code를 이용해서 한달 만에 Ruby AOT 컴파일러인 Spinel을 만들었다. Spinel은 Ruby 소스코드를 단독으로 실행할 수 있는 바이너리로 변환하는 AOT 컴파일러로 CRuby보다 상당한 속도를 보여준다. CRuby의 계승자는 아니지만 Ruby 4.0.2와 비교해 봤을 때 YJIT 비활성화 상태보다는 3%, YJIT 활성화 상태보다는 18% 정도의 시간 만에 컴파일이 되는 상당한 속도 차이를 보여주고, 이는 타입 추론을 통해 최적화된 C 코드를 생성하기 때문이다.(영어)
Formatting an entire 25 million line codebase overnight: the rubyfmt story : Fable Tales이 과거 RubyConf에서 Ruby 포매터에 대한 논의를 듣고 와서 혼자서 설정이 필요하지 않은 자동 포매터인 rubyfmt를 만들기 시작했고, 작업에 영향을 주지 않으려고 100ms라는 엄격한 기준을 두고 만들었다. 처음에는 Ruby로 만들었지만 점점 느려져서 Rust로 전환하게 되고 rubyfmt가 완성되진 않았지만, 세계에서 가장 큰 Ruby 코드 베이스를 가진 Stripe에 입사하게 된다. Stripe는 prettier-ruby를 도입하려고 했지만 너무 느렸기에 Fable Tales에게 rubyfmt를 적용할 수 있는지 논의를 시작했고, Stripe는 전담 엔지니어를 할당해서 rubyfmt를 오픈소스로 완성하게 되었다. 처음에는 옵트인 방식으로 포매팅을 적용하고 충돌이 생기지 않게 주말에 작업했지만 결국 Stripe의 4,200만 라인 전체를 rubyfmt로 포맷했고 아무런 문제가 발생하지 않았다.(영어)
Agent Harness Engineering : Google Gemini 팀의 Addy Osmani가 하네스 엔지니어링을 설명한 글이다. 모델 + 하네스를 에이전트라고 할 수 있고 모델을 감싸는 도구, 파일시스템, Git, 랄프 루프, 검증 방법 등이 모두 하네스이고 모델이 실패할 때마다 하네스에 추가해서 실수를 막아야 한다. 하네스를 잘 설계하려면 원하는 동작에서 출발해서 그 동작을 제공하는 컴포넌트를 만드는 것이다.(영어)
SPZ 4 is here: leaner, faster, and more future-proof : 2024년 Niantic이 3D의 Gaussian spalt의 파일 형식인 SPZ를 공개했는데 더 큰 데이터셋을 지원하는 SPZ 4를 공개했다. SPZ 4는 압축과 로딩속도가 개선되어 인코딩이 3~5배 빨라졌고, 로딩은 1.5~2배가 빨라지고 저장 파일인 PLY 대비 더 작은 파일을 유지한다.(영어)
Agent Skills : 시니어 엔지니어의 업무는 코드 변경 이력에 드러나지 않는 것들이 많은데 이러한 경험을 에이전트에도 적용될 수 있도록 Google Gemini 팀의 Addy Osmani가 스킬을 만들어서 공개했다. 이 스킬에는 소프트웨어 개발 생명주기의 단계를 포함하고 있으면 다음 5가지 원칙을 따르고 있고 이러한 접근은 Google의 관행을 따르고 있다.(영어)
서술보다는 프로세스
하기 싫은 부분을 건너뛰지 않는 합리화지 않도록 반합리화 테이블 작성
검증은 협상할 부분이 아니다.
점진적 공개
범위 규율
Notion 개발자 플랫폼을 소개합니다 : Notion에서 호스팅 런타임을 Worker로 제공해서ntn CLI로 커스텀 로직을 작성하고 배포할 수 있게 되었다. 비즈니스와 엔터프라이즈 플랜에서는 공개 베타를 8월까지 무료로 사용할 수 있다.(한국어)
Advancing voice intelligence with new models in the API : OpenAI가 새로운 오디오 모델 3가지를 API에 도입했다. 더 어려운 요청을 처리하고 자연스러운 대화를 할 수 있는 GPT-Realtime-2, 화자의 속도에 맞춰 70개 이상의 언어를 13개의 언어로 라이브 전역하는 GPT-Realtime-Translate, 화자가 말하는 동안 실시간으로 음성을 텍스트로 전사하는 GPT-Realtime-Whisper를 공개했다.(영어)
State of Routing in Model Serving : Netflix에서 중앙 모델 서빙 플랫폼이 필요했는데 상용 솔루션으로는 요구사항을 만족하지 못해서 Switchboard라는 서비스를 직접 구축해서 클라이언트를 통일하고 컨텍스트 인식 라우팅 동적 트래픽 분리, 모델 라이프사이클 관리, 섀도우 테스트 등의 기능을 제공하고 Objectives 개념과 규칙을 도입해서 실험 구성을 서빙 플랫폼 코드와 분리할 수 있게 되었다. 이후 라우팅 제어를 더 세밀하게 하고 싶은데 Envoy만으로는 충분하지 않아서 Lightbulb를 만들어서 개선했다.(영어)
TeamPCP's Mini Shai-Hulud Is Back: A Self-Spreading Supply Chain Attack Compromises TanStack npm Packages : TeamPCP가 OIDC 토큰을 사용해서 GitHub Actions 릴리스 파이프라인을 통해 Mini Shai-Hulud 웜을 포함한 악성 버전을 배포했다. 이는 유효하게 증명된 악성 패키지를 생성한 최초의 npm 웜으로 TanStack을 포함해서 UiPath, DraftLab 등의 170여 개의 패키지를 공격했고, 메모리를 읽어 시크릿과 크리덴셜 등 100개가 넘는 파일 경로에서 자격 증명을 수집하고 리부팅 후에도 훅을 설치했다. TanStack의 공격을 살펴보면 PR의 pull_request_target 워크플로우를 이용해서 GitHub Actions의 캐시를 오염시키고 이후 메인테이너가 릴리스를 할 때 오염된 캐시를 복원하고 OIDC 토큰을 이용해서 오염된 패키지를 게시했는데 이때 SLSA Level 3 신뢰 증명까지 포함되었다. Tanstack에서 Postmortem을 공개했다.(영어)
Mythos finds a curl vulnerability : Anthropic의 차세대 모델인 Mythos를 Project Glasswing을 통해 Linux 재단에 제공하면서 curl을 만든 Diniel Stenberg도 Mythos로 분석한 보고서를 받게 되었다. 기존에도 AI 도구를 사용해서 curl을 분석하고 취약점을 10건 이상 수정한 상태였는데 Mythos의 분석으로 5개의 취약점이 나왔지만, curl 보안팀에서는 이를 분석한 결과 3건을 오탐이고 1건은 버그로 판단해서 낮은 심각도로 분류한 1개만 취약점으로 분류했고 Mythos 모델은 약간 과대광고로 보인다고 한다.(영어)
Going Full Time on Open Source : 로컬 개발 환경 관리 도구인 mise를 만든 Jeff Dickey가 mise에 더 집중하기 위해서 Figma에서 퇴사하고 en.dev라는 만들어서 풀타임 오픈소스 개발을 하기로 했다. 수입은 문서 광고와 GitHub Sponsors로 약간 벌지만, 충분치 않기 때문에 멤버십과 스폰서십을 통해 지원받고 컨설팅을 할 것이라고 한다.(영어)
Vibe coding and agentic engineering are getting closer than I’d like : Simon Willison이 코드를 전혀 들여다보지 않고 작성하는 vibe coding과 보안, 유지보수성, 운영, 성능을 고려해서 고품질로 프로덕션 시스템을 만드는 agentic engineering을 구분하고 있었고 vibe coding은 개인 도구라면 괜찮지만, 다른 사람이 사용하는 프로덕션 시스템에 사용하면 무책임하다고 생각해 왔다. 하지만 코딩 에이전트가 더 신뢰할 수 있게 되면서 죄책감이 들면서도 프로덕션 수준의 코드도 모두 검토하지 않게 되고 vibe coding과 agentic engineering의 경계가 모호해지고 있다.(영어)
OpenSource is still art : Node.js 커미터인 James Snell의 글로 오픈소스와 소프트웨어 개발은 기존에도 단순한 엔지니어링이 아니라 공예이자 예술이었다. AI는 유용한 도구이지만 문제 이해, 설계 판단, 취향, 시스템적 사고는 여전히 숙련된 개발자의 몫이다. 하지만 AI로 인해서 일자리가 줄어들고 코드 학습, 저작권, 편향 같은 윤리적 문제는 커질 수 있다.(영어)
Cognitive Surrender : 인지적 오프로딩(cognitive offloading)은 AI에 위임하되 답에 대한 소유권을 유지하는 것이고 인지적 항복(cognitive surrender)은 AI의 출력물을 그대로 받아들이는 것을 의미하고 논문의 실험에서 대다수가 AI에 인지적 항복을 하는 것으로 나타났다. 소프트웨어 개발에서 인지 항복을 통해 인지 부채를 떠안게 되는데 이는 AI가 부채를 만드는 것이 아니라 AI를 대하는 태도에서 생기는 것이라 인지적 항복을 거부하는 조치를 설명한다.(영어)
IT 업계 뉴스
Rewrite Bun in Rust : JavaScript/TypeScript 런타임인 Bun이 알려진 대로 Rust로 재작성되었고 백만 라인 이상을 추가한 PR을 머지했다.(영어)
Comments