日本의 TypeScript 컨퍼런스인 TSKaigi 2026이 5月 22日(金)–23日(土)에 東京에서 開催된다고 합니다. 함께 가실 韓國 분 계실까요?
一旦 저랑 @2chanhaeng초무 님하고
@kodingwarriorJaeyeol Lee (a.k.a. kodingwarrior)
님이 같이 가실 것 같습니다.
@d01c2@hackers.pub · 38 following · 38 followers
Yet another PL enthusiast a.k.a. Hyunjoon Kim, d01c2 plz read my nickname as 'dolce'.
日本의 TypeScript 컨퍼런스인 TSKaigi 2026이 5月 22日(金)–23日(土)에 東京에서 開催된다고 합니다. 함께 가실 韓國 분 계실까요?
一旦 저랑 @2chanhaeng초무 님하고
@kodingwarriorJaeyeol Lee (a.k.a. kodingwarrior)
님이 같이 가실 것 같습니다.
크리스마스는 새 프로그래밍 언어를 공개하기에 좋은 날이죠. 아직 미완성이지만 요즘 작업하고 있던 프로젝트를 소개합니다. https://github.com/Kroisse/tribute
순수 함수형이고, 모나드는 없고, 소유권도 없고, 타입클래스나 트레잇도 없습니다. 물론 객체 시스템도 없고요. 대신 제네릭과 대수적 효과를 넣을 예정입니다. ad-hoc polymorphism을 배제하고 어디까지 갈 수 있는지 시험해보려는 게 목적 중 하나인데 생각보다 할만할 것 같아요.
그리고 매우 vibe-coded되어 있습니다. Claude Code와 Codex가 없었으면 엄두도 못 냈을 듯.
문법적으로는 Rust와 Gleam에, 의미론적으로는 Gleam과 Unison에 영감을 많이 받았습니다. 사실 Gleam과 Unison 둘 다 네이티브 바이너리로 컴파일을 아직 못 하고 있어서 시작한 프로젝트이기도 합니다. 하지만 정작 Tribute도 첫 타겟은 네이티브가 아니라 WebAssembly 3.0입니다. GC 구현을 만들기 귀찮았거든요.
얼마 전 웹서핑을 하다가 우연찮게 현재 앤트로픽에서 엔지니어이자 연구원으로 근무하고 있는 Nelson Elhage가 쓴 Computers can be understood(=컴퓨터는 이해가능하다)라는 글을 봤습니다. 다 읽고나니 이 분 마인드가 제가 평소에 CS 공부할 때랑 너무 비슷해서 공감이 가고 아직 CS 뉴비인 저한텐 굉장히 도움이 되는 한편, 이 마인드가 어떠한 단점을 또한 가져다주는지 잘 얘기하는 것 같아 (사실 읽으면서 뜬끔하는 게 많았음) 저만 알기엔 아까워서 이렇게 번역해서 올려봅니다.
번역된 글을 보려면 여기로 이동해주세용.
혹시나 오역 및 CS 용어에 문제가 있다면 언제든 알려주시면 감사하겠습니다.
갑작스레 샤라웃당해서 숨어버렸다 ㅇㅅㅇ
한동안 근황 공유를 못했네요... 내일 오프라인 모임에서 오랜만에 인사드릴게요! 밋업 소식 알려주신
@kodingwarriorJaeyeol Lee 감사합니당
Hyunjoon Kim shared the below article:
notJoon @joonnot@hackers.pub
이 글은 러스트 컴파일러에 기여할 때 자주 사용하는 명령어와 작업 흐름을 소개합니다. 기본적인 빌드 명령어부터 특정 컴포넌트만 빌드하는 방법, 테스트 실행 및 `--bless`, `--force-rerun` 플래그 활용법을 설명합니다. Stage 시스템(Stage 0, 1, 2)을 구분하여 각 Stage의 역할과 사용법을 안내하고, UI 테스트 작성 규칙과 에러 주석 문법을 상세히 다룹니다. 또한, 직접 컴파일러 실행, 디버그 어설션 활성화, 백트레이스 활성화 등 디버깅 명령어와 컴파일러 버그 수정 워크플로우를 예시와 함께 제시합니다. 마지막으로, 자주 발생하는 문제와 해결법, 빌드 시간 단축 방법, 디버깅용 환경 변수 설정까지 다루어 러스트 컴파일러 개발에 실질적인 도움을 제공합니다. 이 글을 통해 러스트 컴파일러 기여자들이 효율적으로 개발하고 디버깅하는 데 필요한 지식을 얻을 수 있습니다.
Read more →쉬는 날인데 연구도 안풀리고 심심해서 xv6를 깔았다. OS 공부 안한지 좀 되서 ppt 보면서 내용 리뷰하면서 구현이나 할까 하는데, 꾸준히 할 거란 보장이 없어서 스터디하는 사람들 사이에 끼긴 좀 그래서 여기다만 올리고 해야겠음. 아마 주말에만 심심할 때 쳐낼 듯. 예전에 돌아본 기억이 있어서 빨리 돌 것 같긴 한데... 모르겠다.
아 단순한 이슈들은 디코에 물어보기도 전에 이미 누가 물어봐서 찾기 쉬워서 좋은 듯
쉬는 날인데 연구도 안풀리고 심심해서 xv6를 깔았다. OS 공부 안한지 좀 되서 ppt 보면서 내용 리뷰하면서 구현이나 할까 하는데, 꾸준히 할 거란 보장이 없어서 스터디하는 사람들 사이에 끼긴 좀 그래서 여기다만 올리고 해야겠음. 아마 주말에만 심심할 때 쳐낼 듯. 예전에 돌아본 기억이 있어서 빨리 돌 것 같긴 한데... 모르겠다.
오랜만에 프로그래밍 언어 이야기하러 왔다. 오늘 주제는 타입스크립트의 핵심 가치다.
많은 사람들이 정적 타입 언어를 도입하는 이유로 안전성(Soundness)를 이야기한다. 맞는 말이다. 하지만 타입스크립트에서 안전성은 2등 가치다. 그럼 1등 가치는 뭘까?
바로 개발 경험 개선이다. 구체적으로, 오류 나기 쉬운 구문을 적당히 줄이고 자동 완성을 개선하며 큰 규모 리팩토링 시 심리적(그리고 any 같은 기능을 안 썼다는 가정하에 런타임에도 유의미한 수준의) 안정성을 얻겠다는 거다.
타입스크립트 공식 위키 문서에도 안전성은 목표가 아니라고 나와있다 (#). 우리는 때때로 도구의 목적에 들어맞지 않는 불필요한 기대를 하곤 한다. 하지만 도구 개발자와 싸우는 건 사용자로서 좋은 전략이 아니다.
조건부 타입과 재귀 타입, 템플릿 문자열 타입, infer 등을 보라. 정적 분석 난이도가 지수적으로 올라가는 희한한 기능들이 언어에 계속 추가되는 이유가 무엇인가. 추론을 포기하고 any가 나오곤 하는 이유가 무엇인가.
그들이 추구하는 게 안전한 세계가 아닌 실용적인 세계이기 때문이다.
Hyunjoon Kim shared the below article:
洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
This post explores the enduring challenge in software programming of how to pass invisible contextual information, such as loggers or request contexts, through applications without cumbersome explicit parameter passing. It examines various approaches throughout history, including dynamic scoping, aspect-oriented programming (AOP), context variables, monads, and effect systems. Each method offers a unique solution, from the simplicity of dynamic scoping in early Lisp to the modularity of AOP and the type-safe encoding of effects in modern functional programming. The post highlights the trade-offs of each approach, such as the unpredictability of dynamic scoping or the complexity of monad transformers. It also touches on how context variables are used in modern asynchronous and parallel programming, as well as in UI frameworks like React. The author concludes by noting that the art of passing the invisible is an eternal theme in software programming, and this post provides valuable insights into the evolution and future directions of this critical aspect of software architecture.
Read more →역시 하스켈을 가르친 덕택일테지...
오늘 발견한 흥미로운 링크들: Matt 타입스크립트 선생님은 종종 Effect 에 대해 트윗하는데 주로 이펙트를 찍먹해보시고 이걸 강의로 만들까말까 만들까말까 하신다. Michael EffectTS 의 BDFL 은 종종 맷 선생의 트윗에 답글을 달아 이펙트 얘기를 풍부하게 가꿔주신다.
오늘은 이펙트의 굿파츠에 대한 얘기로 스레드가 열렸다. https://x.com/mattpocockuk/status/1936083553483157714
나도 EffectTS 도입을 하고 싶지만 여러모로 기존 바닐라JS 스펙과 다른 모양의 코드가 나와서 여러모로 망설이고 있다. (내 기준 이펙트는 실행 코드를 작성하기 보다 실행 계획을 작성하는 개념으로 접근하고 있다) 프로덕션 코드를 새로 만든다면 EffectTS 도입을 고려하고 있지만 학습 난의도가 있어 이를 위해 함께 스터디하고 코드 마이그레이션 계획도 세워야하는데, 그럴 여유는 보통 없는게 현실.
아직은 neverthrow 부터 사용해보는 정도가 지금의 최선이라고 생각한다. 나는 throw 기반의 조건 제어 코드가 불편하다. try catch 안에서 if 절로 throw 하는 코드를 볼 때마다 불만이다. 복구할 수 있는 에러는 throw 하지 않는게 옳다고 생각한다. 물론 언어의 문제도 있지만... 그렇게 스레드를 읽던 중 effectively 라는 애매한 이름의 Alegbraic effects 를 구현한 라이브러리가 공개되어 있다는 것을 발견했다. 작성자 본인도 뻔뻔하게 홍보한다고 어필하고 있다. ;) effectively
EffectTS 라는 이름도 애매하지만 Effectively 는 더 애매하다. 인기가 많아지기 전에 그럴듯 한 이름으로 브랜딩되면 좋겠다. 아, 그렇게 생각하는 이유는 TS 씬에 이런 라이브러리/프레임워크가 자주 거론되면 좋겠다는 생각 때문이다.
얘기하고 싶은 것은, 아이러니하게 이 effectively 의 readme 가 매우 간결하고 읽기 쉽게 EffectTS 에 대해 소개하고 있기 때문이다. effect.website 의 문서는 뭔가 개선이 필요하다. 없는게 없이 다 있지만 실제 읽다보면 어려운 부분이 많고 더 많은 설명이나 예제가 필요한 경우가 생긴다. 미카엘 본인도 문서 개선 필요는 공감하는 것 같다. (해당 스레드 발언 추정) 그리고 또 다른 유저가 포스트를 안내해주셨는데, Effect-like code without Effect 짧게 읽기 좋다. 게다가 이 포스트가 담긴 사이트의 프로덕트도 유용해 보인다.
시작부터 Result 나 Optional 을 제공하는 언어가 많은 소프트웨어 엔지니어들에게 높은 선호도를 가지는 이유가 있다고 본다.
@d01c2Hyunjoon Kim 1. ADT 지원 여부 2. HKT 지원 여부 3. (장난감 언어 개발이 아닌 툴링도 제대로 다 만드는 시도에서) tree-sitter 바인딩 유무
1 >> 3 >> 2 정도로 중요한거 같네요. 러스트는 1, 3이 있어서 부럽고 하스켈엔 3이 없어서 제가 야크셰이빙하는 중입니다. 타스에 스테로이드 먹이면 1, 2, 3 다 되지 않나요?
@bglbgl gwyng 역시 아무래도 1이 제일 큰 것 같고, 3의 경우엔 제가 tree-sitter를 쓰기보다는 parser-combinator로 하나하나 짜다 보니 생각을 못했네요. 2도 있으면 매우 편리하지만 critical하지는 않다는 점 동의합니다. TS에서 HKT를 지원...했었나요? 스테로이드라고 한다면 fp-ts 같은 라이브러리를 말하는 걸까요?
언어 구현을 하는 데에 최고의 언어는 뭘까... 예전엔 OCaml이라고 생각했었고 요즘은 Scala가 최고라고 생각하고 있기는 한데, 더 나은 대안 언어는 없을까? 탈JVM이 하고 싶다 (그렇다고 Scala Native는 아닙니다 진짜...)
타스나 러스트로도 구현을 해보긴 했는데 영... 러스트로 구현하는 사람들도 많은 걸 봐서 러스트는 skill-issue일 확률이 있지만, 타스는 미묘하게 아쉬운 부분이 계속 있는데 그건 아마 static typing이 아니라서일거야
언어 구현을 하는 데에 최고의 언어는 뭘까... 예전엔 OCaml이라고 생각했었고 요즘은 Scala가 최고라고 생각하고 있기는 한데, 더 나은 대안 언어는 없을까? 탈JVM이 하고 싶다 (그렇다고 Scala Native는 아닙니다 진짜...)
슬슬 집에 가고 싶군... 기빨려
역시 랄프정 선생님의 인기는 대단해
음 pldi 첫날 재밌었다
메인 컨퍼런스 전 워크샵 날이라 그런지 재밌었던 발표는 한두개 정도긴 했는데 걍 오랜만에 보는 분들 많아서 좋았음
음 pldi 첫날 재밌었다
모레 SOAP 재밌겠다
결국 왕십리 악어떡볶이 와서 튀김범벅 먹었다
@d01c2Hyunjoon Kim
@kodingwarriorJaeyeol Lee 떡볶이는 역시 인천이 근본이라
@joonnotnotJoon
@kodingwarriorJaeyeol Lee 인천 떡볶이 투어 가이드해 주실 분을 찾은 것 같네요
듣고 싶던 워크샵 일정이 학회출장 귀국 다음 날이군... 아쉽다
며칠 퇴근하고 컨트랙트 파 봤는데, 뭔가 싶었던 용어들도 그다지 특별한 건 아니라는 생각이 들었다. 막연하게 궁금하고 fancy해 보였는데 그냥 좋아하는 거 계속 파도 되겠다. 막연함에서 벗어난 것에서 나름의 소득을 달성한 것 같다. 은탄환은 없다.
나: 건전한 육신에 건전한 정신이 깃든다(Sound body ⇒ Sound mind) ⇔ 건전하지 않은 정신이라면 육신도 건전하지 않다 (¬Sound mind ⇒ ¬Sound body)
@: 당신은 명제와 대우의 참값이 같다는 주장을 하며 배중률을 가정하고 말았습니다!!
나: 아 짜증나
오늘 떡볶이가 정말 먹고 싶은 날인데, 맛있는 떡볶이 집을 알고 계신 전문가 구합니다. 일단 생각나는 두 분이... 👀
@kodingwarriorJaeyeol Lee @joonnotnotJoon
시험 끝나고 실험 결과 뜯어보는데 기가막히게 잘 뽑혔군
@kodingwarriorJaeyeol Lee 님에게 들킨 김에 써보는 #자기소개
여러모로 잘 부탁드립니다. 추가로 깃헙 프로필은 https://github.com/notJoon입니다.
탐라보다가 들켜버렸네요! 오랜만에 #자기소개 할 기회가 생겼습니다:)
새로 오신 분들도 많이 계시니, #자기소개 한 번 해 볼까요? 저부터 해보겠습니다.
,
, Hackers' Pub…)를 만듭니다.아무쪼록 잘 부탁드립니다.
와 오랜만에 다시 이쪽 분야 보니까 formalization이 팍팍하네... 공부 많이 해야겠음
아무래도 transpiler 생태계에선 탈출해야... 지금으로썬 벅차다
뭐야 또 터졌어?
Hyunjoon Kim shared the below article:
bgl gwyng @bgl@hackers.pub
이 글은 AI와 인간의 능력 비교에서 데이터 효율성의 중요성을 강조하며 시작합니다. 현재 AI는 인간에 비해 데이터 효율성이 떨어지지만, 일단 학습된 능력은 복제 가능하다는 점을 지적하며 콜센터 직원과 같은 직업군에 대한 위협은 여전하다고 설명합니다. 데이터 효율성이 중요한 경영인과 연구자는 AI를 유용한 도구로 활용할 수 있지만, 인간의 데이터 효율성이 정말 높은지에 대한 의문을 제기합니다. Yann Lecun의 주장을 인용하여 인간이 받아들이는 데이터 양이 AI 학습에 쓰이는 양보다 적지 않음을 언급하며, 인간은 데이터를 있는 그대로 학습하지 않고 편향에 기반하여 학습한다는 흥미로운 주장을 제시합니다. 마지막으로, AI에게 인간처럼 무모한 결론을 내리도록 가르치는 것이 옳은지에 대한 질문을 던지며, 압도적인 양의 데이터를 통해 더 많은 진실을 알아낼 수 있는지에 대한 고민으로 마무리합니다. 이 글은 AI 개발 방향에 대한 새로운 시각을 제시하며 독자에게 깊은 생각거리를 제공합니다.
Read more →나도 Fedify 처음 만들 때는 TypeScript에서 타입 서커스를 어떻게 잘 해서 Activity Vocabulary를 모델링하려고 했다가 때려쳤던 기억이 난다. 그 때는 복잡도 이전에 내가 그걸 만들 TypeScript 실력이 없었기 때문에 때려친 거긴 하지만. 현재의 Fedify는 그냥 코드 생성을 이용한다.
드디어 swc를 뜯어볼 때가 왔어
Hyunjoon Kim shared the below article:
Ailrun (UTC-5/-4) @ailrun@hackers.pub
이 글은 "논리적"이 되는 두 번째 방법인 논건 대수를 재조명하며, 특히 컴퓨터 공학적 해석에 초점을 맞춥니다. 기존 논건 대수의 한계를 극복하기 위해, 컷 규칙을 적극 활용하는 반(半)공리적 논건 대수(SAX)를 소개합니다. SAX는 추론 규칙의 절반을 공리로 대체하여, 메모리 주소와 접근자를 활용한 저수준 자료 표현과의 커리-하워드 대응을 가능하게 합니다. 글에서는 랜드(∧)와 로어(∨)를 "양의 방법", 임플리케이션(→)을 "음의 방법"으로 구분하고, 각 논리 연산에 대한 메모리 구조와 연산 방식을 상세히 설명합니다. 특히, init 규칙은 메모리 복사, cut 규칙은 메모리 할당과 초기화에 대응됨을 보여줍니다. 이러한 SAX의 컴퓨터 공학적 해석은 함수형 언어의 저수준 컴파일에 응용될 수 있으며, 논리와 컴퓨터 공학의 연결고리를 더욱 강화합니다. 프랭크 페닝 교수의 연구를 바탕으로 한 SAX는 현재도 활발히 연구 중인 체계로, ML 계열 언어 컴파일러 개발에도 기여할 수 있을 것으로 기대됩니다.
Read more →여행 쿨타임이 돌았다
Hyunjoon Kim shared the below article:
Ailrun (UTC-5/-4) @ailrun@hackers.pub
이 글은 어떤 문장이 "논리적"이라고 할 수 있는지에 대한 심도 있는 탐구를 시작합니다. 일상적인 오용을 지적하며, 진정으로 논리적인 주장은 증명 가능성과 체계의 무모순성이라는 두 가지 핵심 조건을 충족해야 한다고 주장합니다. 특히, "좋은 가정 아래" 논리성을 증명하는 두 가지 방법, 즉 함수형 언어와 유사한 구조를 가진 자연 연역과, 약간의 "부정행위"를 통해 무모순성을 쉽게 보일 수 있는 논건 대수를 소개합니다. 글에서는 명제와 판단의 개념을 명확히 정의하고, 자연 연역을 통해 논리적 증명을 구축하는 방법을 상세히 설명합니다. 특히, 자연 연역과 함수형 언어 간의 놀라운 유사성, 즉 커리-하워드 대응을 통해 논리적 사고와 프로그래밍 언어 이해 사이의 연결고리를 제시합니다. 또한, 자연 연역의 한계를 극복하고 무모순성을 보다 쉽게 증명할 수 있는 논건 대수를 소개하며, 자연 연역과의 구조적 차이점을 강조합니다. 이 글은 논리적 사고의 깊이를 더하고, 프로그래밍 언어와 논리 간의 관계에 대한 흥미로운 통찰을 제공합니다. 특히, 커리-하워드 대응을 통해 논리와 프로그래밍이 어떻게 연결되는지 이해하고 싶은 독자에게 유익할 것입니다.
Read more →음 생각보다 안어렵군
첫번째 우매함의 봉우리 도달이라고 할 수 있겠군... 더 파보자
음 생각보다 안어렵군
# Ask Hackers Pub : 이번 주말에 뭐 하시나요?
이번 주말에 뭘 하려고 계획 중인지 편하게 얘기해 보아요.
읽을 책, 가볼 곳, 해볼 것.. 어떤 것이든 좋습니다.
도움 요청이나 피드백 요청도 좋습니다.
물론! 아무것도 하지 않고 쉬는 것도 훌륭합니다.
* 지난 주말에 계획하셨던 일의 회고도 한 번 남겨보면 좋을 것 같아요.
에디터로 Zed를 메인으로 쓰고 있는데, 조만간 Vim 츄라이 시즌 3회차 예정...
vim은 쓰기 어렵고 vscode가 무겁다고 느낀 적이 있어서 zed 쓴 거였는데, 아무래도 더 잘 쓰려면 vim을 쓸 줄 알아야 할 것 같다
에디터로 Zed를 메인으로 쓰고 있는데, 조만간 Vim 츄라이 시즌 3회차 예정...
Actually, this is not an official tweet for introducing our toolchain. Just wanted to casually share that we've built these cool tools - if you're interested in deeper understanding of ECMA-262 and JavaScript, give them a try! (5/n)
FYI, these tools will be officially presented at the FSE'25 Demonstration track in Trondheim, Norway this June. Hope to see some of you there! (6/n)
Want a quick demo? We also made a short intro video showing how it all works: https://youtu.be/4XMjJPNmuBM (4/n)
Actually, this is not an official tweet for introducing our toolchain. Just wanted to casually share that we've built these cool tools - if you're interested in deeper understanding of ECMA-262 and JavaScript, give them a try! (5/n)
Want a quick demo? We also made a short intro video showing how it all works: https://youtu.be/4XMjJPNmuBM (4/n)
Excited to share that we just released ESMeta v0.6.0! Here's two new features that we're really excited about in this release. Since this is my personal account, I won't be introducing the entire toolchain, but if you're curious, check out on https://github.com/es-meta/esmeta/ (1/n)