흑백요리사 보는데 재미는 있지만 룰이 엉성하고 개판이라 찜찜하다. PD들을 모아서 코딩 교육을 시키고 싶다.
bgl gwyng
@bgl@hackers.pub · 98 following · 123 followers
GitHub
- @bglgwyng
VCS와 패키지 매니저가 통합되어야 한단 얘기를 했었는데, shadcn의 인기가 그런 방향에 대한 지지를 간접적으로 보여주고 있다. shadcn은 UI 라이브러리를 만들어봤자 어차피 고쳐쓰는 경우가 많아서 나왔다. 문제는 기존의 npm 패키지 같은 것들은 받는건 쉬운데 그다음에 고치는게 열불터지는 것이다.
- 조건에 맞는 소스 코드를 받는 것 2. 그걸 고치는 것, 에서 패키지 매니저는 1은 잘하는데 2를 불편하게 만든다. VCS는 1을 할수있는데, 약간 번거롭게 되어있고(git submodule을 생각해보라), 2는 당연히 쉽다. VCS에서 1을 개선해야한다.
Zed는 망치가 좀 부족한가.. 심지어 성능도 좋은게 잘 체감 되지 않는데, 렌더링이 아닌 다른 곳에서(아마도 LSP와의 통신?) 구현이 구린지 랙이 빈번하다.
AI 물 사용량 떡밥의 문제는, 그 이야기를 하는 사람의 상당수가 AI의 결과물은 모조리 무가치하다는 생각을 하고있다는 것이다. 결과물의 가치가 0이라면, 뭐 물을 500ml만 써도 낭비는 낭비겠지요? AI와 관련해 해결해야할 문제가 한두개가 아닌데, 논의에 질을 높이고 고품격의 토큰이 오갔으면 좋겠다.
(아무도 관심없겠지만) 요거의 예시로는 tree-sitter의 파싱 테이블 + AST node 메타데이터 export가 있다. 지금은 파싱 테이블 대신 parser.c만 뱉고 중요한 메타데이터를 몇개 빼먹는다. 하는 김에 rewrite in haskell도 하면 더 좋고..
좀 웃긴 생각이 났는데, '해결해주면 나랑 친해질수 잇는 문제들'이란 목록을 만들어서 공유하고 싶다. 네임드가 되면 실제로 잘 동작하려나.
https://news.hada.io/topic?id=25285
추상화가 강력한 더 좋은 언어를 쓰는 것 이상의 확실한 방법이 없고, 그 외에는 그냥 임시방편이라고 생각함.
NextJS 처음 써보는데, 챗봇 UI처럼 인터액티브한 웹앱을 만들때 도움이 되는 부분이 뭔지를 모르겠다. 처음엔 SPA + API 서버 만드는것과 비교해, 자명한 데이터 바인딩 보일러플레이트를 줄여줄거라 생각했다. 근데, 순수 SSR로 처리할 수 없는, 클라에서 상태를 업데이트하는 약간만 복잡한 플로우에서도 전혀 도움이 안된다.
NextJS + Vercel AI SDK로 챗봇 UI 만들다가 수명이 줄겠네..
그동안 Nix 쓰면서 고통도 많이 받았는데 그래도 주변에 꾸준히 Nix를 권한다. Nix가 '빌드'라는 소프트웨어 개발의 아주 일반적인 문제를 한방에 푸는 방법론이기 때문이다. 물론 아직 몇가지 문제가 좀 있지만(잘 안된다, 불편하다 식의 단순한 문제는 아니다), 나 자신도 그 해결책을 위한 몇가지 아이디어를 가지고 있고, 머지않은 미래에 풀릴거라 생각한다.
UNIX 철학이 작은 기능을 확실하게 수행하는 프로그램들을 만들어 조합하자인데, ls, cat, grep 등이 그 예시다. 내가 볼땐 Nix도 생각도 거기에 해당된다. Nix도 좋은 의미로 의외로 꽤 작다.
Vercel AI SDK는 LLM이라는 훌륭한 기술을 주옥같은 인터페이스로 감싸놓았다. 정말 이해가 안가는 추상화 투성이다.
으악 송년회 오늘인줄알고 헛걸음했네
요즘 개발자들 만나면 죄다 AI 얘기밖에 안하는데, 대부분 ‘동물원 가서 코끼리 봤어’ 수준의 이야기라 다 들어주기가 피곤하다. 여기서 들은 얘기 저기서 또 들어야하고.
Zed 에디터 써보는 중인데 Git 연동이 좀 부실하다. 보통은 GitKraken이나 lazygit 등의 도구를 병행해서 쓰니까, 꼭 에디터에서 Git을 빵빵하게 지원해야하냐는 의문은 든다. 다만 Git의 특정 기능들은 에디터 연동이 불가피한데(diff 보기, conflict 해결하기 등), 이런거보면 에디터가 Git의 인터페이스가 되어야하는거 같기도하고 그렇다.
Nushell 반나절동안 썼는데, 지금까지 문제는... 그 리치한 기능을 전혀 안 썼다는것이다. 그래서 단지 zsh와 비교해 익숙하지않음+플러그인부족에서 기인한 불편함만 체험하고 말았다.
primes :: (Integral a) => [a]
primes = 2 : ([3, 5 ..] & filter (not . has_divisor))
where
has_divisor n =
any ((0 ==) . (n `mod`) . fst) $ takeWhile ((n >=) . snd) primes_with_square
primes_with_square :: (Integral a) => [(a, a)]
primes_with_square = [(p, p * p) | p <- primes]
euler project 문제 풀다가..
리액트의 dumb component는 이름과달리 약간은 더 똑똑할 필요가 있는데. dumb component는 업데이트를 반드시 부모를 통해서만 해야한다. 이때 fine-grained reactivity로 성능을 높이려면 (딱히 별 하는 일도 없는) wrapper가 필요하다. 그리고 데이터 페칭과 관련될 경우 또 wrapper를 반드시 만들어 줘야한다.
이걸 어떻게 해결할수 있나? dumb component가 Props로 raw value가 아닌 signal을 받게하는 것이다. 아쉽게도 현재 JS에 표준 Signal 인터페이스가 없기에 jotai atom 등을 써야하는데, 그러면 컴포넌트가 프레임워크에 의존하게 되어 덜 dumb해지는 문제가 있다.
어쩌다 커서, 윈드서프 대신에 오리지널 VS Code + 코파일럿을 쓰고 있는데, AI의 UX 통합이랑 측면에선 이쪽이 더 낫네? 윈드서프는 채팅 UI 벗어나면 잡버그때문에 못쓸 수준이다.
Vercel 제품들은 딱 봐도 설계가 너무 구리게 느껴지는데, 그렇다고 깊게 생각해보진 않고 또 쨋든 사람들이 젤 많이 쓰긴하니까, 내 느낌이 잘못된건지 헷갈린다.
https://djot.net/ djot이라고 Markdown 개발자가 Markdown의 문제점을 고쳐서 내놓은 마크업 언어이다. 이러고보니 Deno같군.
(최근에 직장을 옮겨 풀타임 근무를 시작함)
새 동료들과 이야기하다 함수형 언어 이야기가 나왔는데, 밈에 불과한 이야기만 나와서(함수형 언어 사용자들의 컬트스러움 등) 좀 아쉬웠다. 답답하거나 짜증난다기 보단, 빨리 그부분을 스킵하고 진짜 재밌는 이야기로 넘어갔으면 하는 생각이 들었다. 다행히 동료들이니 앞으로 이야기할 기회가 아주 많을 것이다.
불변성, 사이드이펙트 없음, 아름다움(?) 추구 등의 이야기가 나왔는데, 물론 다 함수형 언어와 관계있지만 본질적인건 아니다. 내게 함수형 언어는 코드를 조합하는 방법을 연구하고, 조합이 잘되는 코드를 짜는걸 실천하는 것이다. 이를 통해 많은 것을 공짜로 안전하게 얻는 것이 목표이다. 그래서 '함수형'의 칭호를 부여받지 못한 방법론들은(ex: 상속), 그냥 해보니까 조합성에 한계가 있어서, 설계를 구성하는 근본적인 요소로 포함시키기에 부적절하다고 결론이 내려졌을 뿐이다. 그럼... 그냥 좋은 방법들을 엄선해놓은게 함수형인가? 그럴지도? 다함께 좋은거 합시다.
LLM들한테 JSON 출력을 시킬때마다 이스케이핑하느라 얼마나 머리아플까 걱정되고 안쓰럽다.
나는 옷에 별관심 없어가지고 롱패딩 시즌이 은근히 기다려진다
코드에디터 만들고싶다..
요즘 AI 수학자/과학자를 만들겠다는 스타트업들이 생기고있는데, 멤버들도 빅테크 출신에 쟁쟁하고 투자도 크게 받는 등 절대 장난같은건 아니다. 그치만 의문이 드는건 피할수가 없는데... 만약에 AI 사업가를 만드는 스타트업을 세워서 VC를 찾아가면, '...그냥 직접 비즈니스를 하시죠?'라고 할게 당연하지 않나. AI 수학자/과학자를 만드는 스타트업도 비슷한 느낌이다. 그냥 연구 결과 낸다음 빅테크 인수될 계획이라고 하면 할말은 없다만.
많은 언어들의 많은 패키지 매니저들이, 패키지에 대한 테스트를 돌릴 방법은 제공하면서(npm test 등) 막상 그 패키지 레포를 클론떴을때 그 패키지를 사용하는 아무 예제나 실행시켜볼 쉽고 통일된 방법은 잘 제공 안하는 거 같다. 가령 examples/*의 코드들을 실행시킬 방법은 npm 패키지들마다 제각각이다. 왓더??
돌이켜보니 내가 처음으로 소프트웨어의 '품질'을 경험한게 스타1이랑 디아2였다. 게임이 재밌는거랑 별개로, 그때 기준으로 저 두 게임은 소프트웨어로써 품질이 훌륭했다. 그당시 다른 게임들은 느리고, 심각한 버그가 있고, UI가 덜컹 거리기 일쑤였다. 스타1, 디아2는 게임을 켤때부터 끌때까지 매끄러운 경험을 줬다.
지금 시즌272611번째 ’이 버그를 고칠 선택받은 용사가 왜 하필 나인가‘ 단계에 있다
git submodule 쓰다가 생각난건데, VCS 레벨에서 수정할 파일과 아닌 파일을 구분해주는게 좋을거 같다. 읽기 전용 파일의 경우엔 복사하지않고 심볼링 링크만 제공해도 되어서 성능적 이점도 있을 것이다.
여자친구가 나한테 과학 이야기 해달라고 해서 '혹시 아인슈타인이 뭐 했는지 알아?'라고 물으니까 '다이너마이트 만들었잖아!'라고 대답했다. 흠..
Ghostty, Warp 등의 터미널을 써보곤 싶은데, 어차피 VS Code 안에서 못쓰다보니까 큰 의미가 있을지 아리까리하다..
방금 보이스피싱을 당할뻔 한거 같은데, 내가 법원등기서류를 수령 못했다면서 온라인으로 받아보라고
http://온라인검찰민원.kr/ 이 사이트로 들어가도록 유도했다. 보다시피 인증서가 없는 페이지이다. 그래서 바로 전화를 끊고 보이스피싱 신고사이트에 신고했다.
근데 나야 인증서 확인하고 이렇게 했지, 만약 우리 엄마였으면 그대로 당했을거같아서 기분이 안좋네..
클로드 코드 쓰고있으니 더 나은 VCS에 대한 욕심이 커진다. 나는 클로드가 브랜치를 더 자주 쪼개서, 원하는 시점으로의 롤백이 더 편해졌으면 좋겠다.
하나 생각나는 아이디어는 브랜치 명을 hierachial하게 만들어서 가령 fix-bug-1/refactor-class-foo/fix-function-bar 이런식으로, 무슨 일하는지의 맥락을 브랜치명에 나타내는 것이다. 그리고 a/b 브랜치는 a 브랜치의 자식이어야 한다는 제약도 강제한다.
어쩌다보니 Claude skills같은걸 재발명하고 있는듯하다;;
요즘 심심할때 굴리고 있는 VCS에 대한 나이브한 아이디어가 있는데
-
각 커밋에 대해 메타데이터를 줄수 있어야 한다
레포 내의
metadata.json같은 파일을 인식해도 되고, 아니면Commit -> Metadata를 해주는 프로그램을 hook으로 등록하게 해줘도 된다. 이를 통해 package.json, cargol.toml 같은 파일을 읽어서 거기에 버전 의존성을 커밋의 메타데이터로 추출한다. -
메타데이터에 대해 인덱싱을 한다
가령
version이라는 메타데이터가 있을때2 <= version < 3를 만족하는 커밋의 범위를 인덱스를 활용해 빠르게 알아낼수 있게 한다. -
메타데이터로 커밋을 찾는 표현식을 제공한다
max(2 <= version < 3 and has(fix-bug-foo) and has(add-feature-bar)이런식으로 하면, 구간 내의 버전에서 foo 버그가 해결되고 bar 피쳐가 추가된 커밋중 가장 최신의 커밋을 구한다. git에서는fix-bug-foo,add-feature-bar각각의 브랜치로는 쉽게 갈수 있지만, 해당 브랜치가 main에 머지되기 전까지 그 브랜치 밖을 벗어나 작업하기가 까다로워진다. -
이런 레포들을 모아서 모노레포를 모은다음, 메타데이터에 상호 의존성을 기술한다
그리고 dependency resolve를 해서(메타데이터 검색의 일종일 뿐임) 조건을 만족하는 모노레포 스냅샷을 구한다. 이제 우린 패키지 매니저를 공짜로 얻었다.
이 아이디어는, 현재 패키지 매니저와 VCS가 분리되어있는데 사실 그래선 안된다는 생각에서 나온것이다. 기존의 비슷한 아이디어를 찾아봤는데 gitman 이런게 있더라. 근데 내가 원하는만큼 일반적이진 못하다.
챗봇 UI를 만들고 있는데, AI한테 툴 사용을 따로 주지말고, 채팅 자체를 어떤 REPL안에(Python이라던가) 임베딩 시키는게 나은 디자인인거 같다. 근데 이거 먼가 모나드트랜스포머스러운데..
강아지 뇌삽관 수술이 잘 끝난거 같다. 다시 코딩도 하고 일상으로 돌아가야지..
도대체가 한달만에 열어본 프로젝트의 포매터가 고장나 있는일은 왜 생기는 것일까..
emacs 개발자들은 LLM 시대에 빛을볼 중요한 선견지명을 가지고 있었는데
- 텍스트 에디터는 범용 인터페이스다(반 OS가 되어버린 emacs)
- RAG할 지식데이터베이스를 만들고 관리할수 있어야한다(org-mode).
근데 이걸 알고도 한푼도 못벌었다ㅋㅋㅋ 열매는 cursor와 notion에게로...
강아지가 아파서 다른일에 집중하기가 힘들다ㅠㅠ 이제 막 10살됐는데 점점 굼떠지는건 괜찮다만 아프진 않았으면 좋겠다..
테슬라 팬보이들이 좀 밉상이긴 하지만, 그래도 기술에 대한 이해도가 높은 편일거라 생각했는데. 얼마전에 어디 게시글에서 FSD에 카메라 외에 라이다 등의 추가 센서를 쓰면, 여러 센서 입력 중에 뭘 신뢰해야하는지 결정해야하는 문제가 추가로 생겨서 안좋다... 라는 얘기를 보았다(그리고 다른 테슬라 팬보이들이 동조함).
해외리모트잡 페이가 국내에 비해 너무 좋길래, 주변에 어떻게 이럴수 있냐고 했더니 다들 너무 당연하게 국내 페이가 싸서라고 한다. 그리고 해외에서 한국 개발자 선호하는것도 그냥 단순히 싸고 가성비 좋아서라고 한다.
세계 10위권의 경제대국의 국민으로써 느낌이 좀 이상하다. 그러니까 나는 K-인도 개발자였구나..
OpenAI의 Sora가 기어이 나로 하여금 인간이 수제로 만든 개똥같은 숏폼 비디오들을 지지하게 만드는구나..
타입시스템이 충분히 좋은 언어는, 특정 함수(타입을 만족하는 프로젝트 내의 아무 함수)를 CLI 바이너리로 빌드하는 기능을 one-liner로 지원할 수 있을 것이고, 그건 아마 지원할만한 기능일 것이다.
Context: Cabal의 어떤 내부 함수를 끄집어내서 CLI 툴로 만드는데 황금같이 귀중한 내 주말을 써야했다.
주로 하스켈만 하는 분께 좀 유명한 JS 라이브러리의 깃헙 링크를 공유드렸는데, 스타가 10k인걸 보고는 엄청나게 훌륭한 프로젝트인가보다... 하시길래 / 20 정도로 보정을 하라고 했다.
브랜치명은 해결하려는 문제가 아닌 시도하는 방법을 묘사해야한다.
Claude와 함께 react-form-mozard 문서를 만들었다. 2년전에 만들었는데 귀찮아서 문서 안쓰고 버티고 있었다.
글은 Claude가 다 썼는데 솔직히 맘에 안든다(하지만 장기적인 협력을 고려해서 일단 칭찬했다).
숏폼 UI가 진짜 무섭긴한게, 잠깐 멍하니 유튜브 쇼츠를 넘기고 있었는데 정신차려보니 카톡 쇼츠였다;;
GitHub UX는 왜케 구릴까 생각이 들때마다,이게 지구촌 모노레포 관리툴 같은거라고 생각해보자... 라고 이해해주기엔 너무 구려!!


