Zed는 아직 쓰지도 않는데도 요즘 보기드문 장인정신이 느껴지는 소프트웨어라 호감이 간다. 지금 쓰고있는 Windsurf는 VS Code 포크떠서 AI 채팅만 추가했는데 하루에 3번 터져서 에디터를 재시작해야한다(AI 채팅 패널이 터지는거라 VS Code가 아닌 Windsurf 문제로 보임). 5조 투자받은건 어따썼니??

bgl gwyng
@bgl@hackers.pub · 87 following · 107 followers
슈티를 함께 만들 팀을 만들고 있습니다. 관심 있으신 분, 또는 잘 모르겠지만 이야기를 나눠보고 싶은 분도 bgl@gwyng.com으로 편하게 연락주세요.
GitHub
- @bglgwyng
shootee
- www.shootee.io
4년만에 하는 웹개발... 난 그저 간단한 퀴즈 푸는 사이트를 만들려고 했던것 뿐인데... 살면서 boilerplate만 한 10번쯤 만드는것 같음. 만들어두면 또 한동안 웹개발 할 일 없어서 방치되고, 그 사이에 온갖 라이브러리가 사라지면서 못쓰는 코드가 되어버림. 프레임워크들도 엄청나게 많이 바뀌어있고.
이번에 작업한거: 4년전에 만들어둔 boilerplate인데 좀 최신화를 했습니다. Django + Vue 조합. 기능이라고는 겨우 로그인해서 'Home' 문구 하나 볼 수 있는 웹페이지인데 어쩌다가 이렇게까지 복잡해졌을까요...
@bglbgl gwyng 저는 회사에서 쓸 때는 일회성 데이터 분석용 애드혹 쿼리 짤 때 종종 썼던 것 같아요.
@hongminhee洪 民憙 (Hong Minhee) 답변을 보고 든 생각인데, 인터페이스가 아예 코드 에디터거나 REPL이어야하지 그 사이에 있으면 애매해지는거 같습니다. 제가 지금쓰는 Altair가 그런거 같네요.
지금 GraphQL Client로 Altair를 쓰고있는데, 요즘 이런 류의 API 테스트 툴에 살짝 회의가 든다. 쓰다보면 일찌감치 스크립팅을 하고싶어지고 그건 그냥 JS로짜면 된다. API 테스트 환경도 그냥 개발 환경과 같이 관리하면 되서 오히려 더 편하다. Postman은 조금밖에 안써봐서 모르겠다.
해커스펍.... 모임.... 아마 가능할 수도 있을 것 같습니다.... 이제 장소와 시간만 구하면 된다.....
오늘 개발은 ! 하나 빼먹은거 못찾아서 귀중한 2시간 날아가고 시작~
🚀MoonBit Beta is here!
After 2 years of fast iteration, MoonBit enters its stable phase with regard to language syntax!
✨Built-in async
🛠 Fast tooling and IDE-aware error handling
어라라라라라라 이게 왜 된거야
@kodingwarriorJaeyeol Lee 와 축하드려요!!
어라라라라라라 이게 왜 된거야
펑터를 지하철 노선으로 설명해도 좋을거 같다. 서울의 지하철 노선도를 외우고 있는거랑 서울의 지리에 대해 빠삭한 거랑은 거리가 멀다. 그리고 지하철만으로 서울의 모든 곳을 구석구석 돌아다닐수 없다. 중간에 내려서 걷거나 버스를 타야 한다. 하지만 효율적인 경로를 찾는데 큰 도움이 된다는 사실은 부정할수 없다.
F : 지하철 노선도 -> 서울
에서 F
는 지하철 노선도를 참고해 현실에서 실제로 지하철을 타는 행위가 된다. 우리는 서울의 지하를 돌아다니고 싶어서 지하철을 타는게 아니다. 서울을 돌아다니고 싶은데 여기에 지하철의 도움을 빌리는거다.
프로그래밍도 어떤 경로를 찾는것으로 이해할 수 있다. f : a -> b
란 함수를 구현하는 것은 a
에서 출발해서 b
에 도착하는 길을 찾는 것이다(도착만 한다고 장땡이 아니란 점에서(=타입만 맞는 쓸모없는 함수를 구현하기) 위에서 든 지하철 비유랑 갈라지기 시작한다).그런데 함수(경로)는 무수히 많고 그중에 내가 원하는걸 하나 찾아내는건 어려운 일이다. 이때 좀더 단순한 이해하기 쉬운 지도와(다른 카테고리), 그 지도를 따라서 움직이는 방법(펑터)를 알고있으면 도움이 된다. 펑터 F : C -> D
는 D
라는 넓은 영토를 돌아다닐때 C
라는 지도의 도움을 받는 방법으로 볼수있다.
제텔카스텐이니 세컨드브레인이니 하지만, 정작 우리나라에서 만든 창의적 방법론에는 무관심한 듯.
우리나라에서 제텔카스텐 기법을 극대화하신 분은 다산 정약용 선생 아닐까? 여유당 전서, 흠흠신서, 목민심서, 경세유표 등등 엄청난 저술 활동을 해낸 분. 여유당 전서는 500권이 넘는다. 제텔카스텐을 창안(?)한 루만도 고작(?!!!) 300편의 논문만 썼다.
예전 다산 선생을 다룬 책에서 제텔카스텐 기법을 본 적이 있는데...
와 이 도메인을 진짜 왜 아직 아무도 안 샀지??
https://github.com/krafton-ai/Orak
Orak (오락) is a foundational benchmark for evaluating Large Language Model (LLM) agents in diverse popular video games.
한 2년전부터 XState 대충 알고 쓰면서 느끼는 점들.
-
처음부터 정의가 verbose하고 그걸 작성하는게 수고로운건 알고있었다. 하지만 LLM을 믿고 쓰기로 결정했는데, 지금 2025년에도 여전히 LLM이 상태머신 설계를 잘 못한다. 얘한테 설계를 맡겨놓으면 뭐랄까, 성의가 없다고까지 느껴진다. 왜 그런거지?
-
Snapshot은 subscribe할 수 있다. 근데 그 Snapshot을 유발한 Transition이 같이 전달이 안된다. 사실 이게 필요했던 핵심 기능이었어서 이게 안된다는걸 알고 매우 당황했다. Transition에 반응하는건 오로지 상태머신 내에 설계된 action을 통해서만 가능하고, 상태머신을 구독하는 쪽에서는 안된다. 왜 이렇지?
-
상태머신을 확장하는 방식이 제한적이다. 이미 정의해놓은 action, actor들을 다른걸로 override하는 방식을 제공하는데, 상속 비스무리하다는 점에서 한계가 느껴진다. 실제로 사용하면서도 그 한계를 느꼈다.
종합하면 아직까진 수지타산이 안 맞다.
today at work:
"GNU/Linux is just a small part of the systemd operating system"
bzip2 crate switches from C to 100% rust https://lobste.rs/s/g3wtej #rust
https://trifectatech.org/blog/bzip2-crate-switches-from-c-to-rust/
오버엔지니어링을 자제해야 하지만 이게 또 일하면서 보람을 느낄 수 있는 방법 중 하나라 타협점을 찾아야겠음
요즘 '이건 잘못된 코드지만 당분간 고칠일이 없기를 기도하자'고 하며 넘어간 코드들에서 나온 버그들을 계속 고치는 중이다.
과거의 나의 정확한 안목에 뿌듯해하며 동시에 피눈물을 흘리고 있다.
이뿐만이 아니다. 예스24는 낙후된 시스템을 운용하는 것으로 전해진다. 단적인 예로 사이트 개발에 '닷넷 프레임워크'를 사용하고 있다. 닷넷 프레임워크는 현재는 잘 사용하지 않는 개발 언어로 윈도 서버에서만 운영 가능하기 때문에 개발자의 외면을 받고 있다.
닷넷 프레임워크는
- 현재는 잘 사용하지 않는 -> 아님¹
- 개발 언어로 -> 아님²
- 윈도 서버에서만 운영 가능하기 때문에 -> 아님³
- 개발자의 외면을 받고 있다 -> 일단 점유율은 아님¹
예를 확인 없이 내세운 기사네요 🙃
- [1]: StackOverflow 2024 서베이 웹 부문 중 16% 가량을 차지함. (https://survey.stackoverflow.co/2024/technology#1-web-frameworks-and-technologies)
- [2]: .NET은 개발 언어가 아니고 어플리케이션 프레임워크. C#이 언어. (https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet)
- [3]: 리눅스 환경에서도 운영 가능. 선호하지 않을 순 있어도. (https://learn.microsoft.com/ko-kr/dotnet/core/install/linux)
@nyeongAn Nyeong (安寧) .NET이랑 .NET Framework가 서로 다른 물건이예요. .NET은 .NET Core가 리브랜딩된 거고, 10년 전에 .NET Framework를 대체했습니다. .NET Framework는 Windows에서만 돌아가는 것도 사실이고요. .NET Core, 즉 현재의 .NET은 .NET Framework와 브랜드 측면에서는 연속성이 있지만, 기술적으로는 아예 새로 만들어진 구현입니다. 오픈 소스라는 점도 다르고요. 전반적으로 .NET Framework는 레거시 기술이 맞아요.
Biome v2—codename: Biotype is here! The first type-aware linter that doesn't require tsc
🔐 Type-aware lint rules
🧑🚒 Plugins
📚 Monorepo support
📝 Revamped, configurable import sorting
🧐 Linter domains
🙅♀️ Bulk suppressions
👩✈️ Analyzer assist
@bglbgl gwyng 네, 맞아요… 다행히 저는 그런 케이스는 아니었어서 다행이긴 했는데…
@hongminhee洪 民憙 (Hong Minhee) 아하 로깅 라이브러리는 end-use?에 가까우니 그렇겠군요
@bglbgl gwyng 손발이 튼튼하면 머리가 고생할 일이 없습니다. 두 벌 구현하면 됩니다! 💨 (LogTape에서 정말로 그렇게 했어요…)
@hongminhee洪 民憙 (Hong Minhee) 이게 구현은 두벌 하는건 괜찮은데, 그걸 활용한 코드들에 대해 2x가 전염되는걸 못막는거 때문에 처음부터 지원하는게 꺼려지네요ㅋㅋ 근데 LogTape처럼 여러 백엔드를 지원해야할땐 불가피하겠네요ㅠ
데이터에 대한 modality, 가령 동기/비동기, 더 나아가 캐시됨, 캐시되었지만 stale됨 등에 대해 일반적인(polymorphic) 함수를 만드려면 HKT가 필요하다. Relay와 같은 현존하는 JS 상태관리 라이브러리들은 저런 modality를 한번에 다 지원하는 대신, 확장에 열려있지 않는 구조로 되어있다. 타입을 제대로 지원못한다고 해서 구현을 못하는건 아닐테니, HKT 없음이 주된 이유는 아니겠지만 말이다.
최근 TS 코딩중에 async/sync에 대해 polymorphic한 인터페이스를 제공하려하다보니 HKT의 필요성을 느끼게 되었다. 해결책은 그냥 synchronous만 제공하기로;;
웹핑거 사이트에 하스켈 클라이언트 링크를 추가하는 PR을 제출했다. PR은 바로 머지(merge) 되었는데 배포에 이슈가 있어서 아직 사이트에 반영되지는 않았다.
그리고 하스켈 클라이언트 예제 코드에 해커즈 퍼브 주소를 은근히 적어 넣었다!(깨알 광고)
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Default
import Web.Finger.Client
query :: Query
query = def { qryTarget = resource }
where
resource = ResAccount (Account "curry" "hackers.pub")
main :: IO ()
main = do
manager <- newManager
result <- webfinger manager query
print result
웹핑거 사이트에 하스켈 클라이언트 링크를 추가하는 PR을 제출했다. PR은 바로 머지(merge) 되었는데 배포에 이슈가 있어서 아직 사이트에 반영되지는 않았다.
라이브러리를 좀 대국적으로 만드십시오!!!
@hongminhee洪 民憙 (Hong Minhee) 저도 그렇게 들어서, 우선 계획 세우라고 했는데 맘대로 실행까지 해버리면서 그러더라구요 ㅎ...
@perlmint
@hongminhee洪 民憙 (Hong Minhee) 저도 다른 작업하다가 눈에 밟히는 코드 리팩토링하고 지나가는 경우가 종종 있는데요. 사실 좋은 습관은 아니죠. 근데 이런걸 LLM이 사람으로부터 학습하려면(사실 안 하는게 좋겠지만) commit 단위로 학습을 했어야할텐데, 그랬을거 같진 않고요. 그렇다면 정말로 정체불명의 창발적 현상인걸까요.
어제부터 Jujutsu라는 버전 관리 시스템을 써보고 있습니다. git의 branch는 연속적인 단일 작업을 표현하는 느낌이 강하게 드는데 사실 그저 어느 commit을 가리키는 포인터일 뿐이라는 걸 느끼게 해주네요. Jujutsu에서는 같은 커밋에서 다음 커밋을 여러 개 만들면 그게 브랜치이고, 여러 커밋을 parent로 하는 커밋을 하나 만들면 그게 머지이고, 수정이 다 끝나면 그냥 원하는 브랜치 이름의 포인터를 적절히 옮기면 됩니다. 부분 변경을 커밋 간에 자유롭게 옮길 수 있는 것까지 합치면 재미있는 사용 방법이 많이 있을 것 같습니다. 특히 megamerge workflow를 쓰면 git 쓰다가 생겼던 "지금 하는 작업을 끝내야 다음 변경사항을 작업"하는 강박이 해소될 것 같아 기대가 많이 됩니다.
@bubbler 문서를 읽어보인 jj에서 브랜치는 git에서와 같이 끝점이 하나인거 같은데 맞을까요? darcs와 같이 브랜치에 '시작' 리비전도 있는 경우와 비교해서 질문드렸습니다.
어제부터 Jujutsu라는 버전 관리 시스템을 써보고 있습니다. git의 branch는 연속적인 단일 작업을 표현하는 느낌이 강하게 드는데 사실 그저 어느 commit을 가리키는 포인터일 뿐이라는 걸 느끼게 해주네요. Jujutsu에서는 같은 커밋에서 다음 커밋을 여러 개 만들면 그게 브랜치이고, 여러 커밋을 parent로 하는 커밋을 하나 만들면 그게 머지이고, 수정이 다 끝나면 그냥 원하는 브랜치 이름의 포인터를 적절히 옮기면 됩니다. 부분 변경을 커밋 간에 자유롭게 옮길 수 있는 것까지 합치면 재미있는 사용 방법이 많이 있을 것 같습니다. 특히 megamerge workflow를 쓰면 git 쓰다가 생겼던 "지금 하는 작업을 끝내야 다음 변경사항을 작업"하는 강박이 해소될 것 같아 기대가 많이 됩니다.
@bglbgl gwyng Jules는 전 한 번도 일을 제대로 해내는 걸 본 적이 없습니다… Claude Code는 훨씬 나은 것 같아요.
@hongminhee洪 民憙 (Hong Minhee) 아 그냥 다른것들보다 확실히 구린거였어요? 저는 구글 이름값믿고 sota는 아니더라도 많이 뒤쳐지진 않을거라 짐작했네요.
Existential Lens란걸 알게되었는데 정의는 다음과 같다
data Lens s a = forall c. Lens (s -> (c, a)) ((c, a) -> s)
돌무식 렌즈(get
, set
레코드)보다는 좀더 어렵지만 Van Laarhoven Lens보다는 훨씬 더 직관적이라서 렌즈의 이해에 도움이 많이 되었다.
전체 설명은 요깄다.
@bglbgl gwyng 그런 거 다 나중에 Claude Code한테 시키시면…
@hongminhee洪 民憙 (Hong Minhee) 지금 저런식으로 남긴 TODO, FIXME 도합 350개가 있습니다. 이전에 jules한테 시켰는데 거의 하나도 못 고치더라고요. 제가 일을 좀더 잘 시키면 훨씬 나은 결과가 나올거 같은데 당장은 시간이 없네요ㅠ
똥코드 짜놓고 TODO: refactor
를 남기며 죄책감을 덜어내는중...
bgl gwyng shared the below article:
LogTape 0.12.0 Release Notes

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
LogTape, a zero-dependency logging library for JavaScript and TypeScript, has released version 0.12.0 with several enhancements. The update introduces a new `trace` log level for more granular debugging and improves file sink performance through configurable buffering. A significant addition is the `@logtape/syslog` package, enabling log message transmission to syslog servers using RFC 5424. The update also includes `Logger.warning()` as an alias for `Logger.warn()` for consistency. Furthermore, all LogTape packages now share unified versioning for better compatibility. The build infrastructure has been migrated from `dnt` to `tsdown`, enhancing compatibility with modern JavaScript toolchains and improving build times. This release optimizes logging capabilities and ensures smoother integration with various JavaScript runtimes.
Read more →작곡을 JavaScript로 하는 도구가 있었네
AI 아니고 직접 자바스크립트 코딩으로 전체 작곡을 다함.
사실상 JS 코드가 악보 역할을 하는듯
C# NotNull
같은 기능을 TypeScript에서는 asserts <arg> is Exclude<T, null>
같이 쓸 수 있고 vitest에서는 assert.isNotNull
처럼 쓰면 되더라 📝
LLM들은 무슨 게으름 피우는 사람 프로그래머처럼 테스트 코드를 작성할 때 실질적인(substantial) 테스트를 안 짜고 어물쩍 넘어가는 경우가 많은 것 같다.
@hongminhee洪 民憙 (Hong Minhee) 테스트 데이터 쌍을 만드는곳도 귀찮아하는거 같습니다. 좀 진짜같고 리치한 데이터를 지어냈으묜 좋겠는데 딱 사람이 만들법한 미니멀한 데이터를 만들더라고요.
2개월 전에 애자일 이야기 글을 편하게 읽고 싶었던 것과 검색 기능의 필요를 느껴 삼아 작성했던 프로젝트[1]를 아카이브 했습니다. 글도 다 읽었고 읽으면서 수정하다 보니 내가 쓸만큼의 무언가는 되어서 특별히 더 동기가 남아있지 않았기 때문입니다. 불필요하게 SSR로 돌려서 서버 비용이 나가는 것이 걱정거리로 남아있었는데 그것도 어제 오늘 작업해서 이제는 GitHub Pages로 배포하기 때문에 아카이브할 수 있게 되었습니다. 그냥 놔둬도 괜찮지만 괜히 신경 쓰여서 아카이브로 돌려놓습니다.
코드 퀄리티는 좋지 않을텐데... 혹여나 수정이 필요하신 분은 AGPL-3.0 라이센스이니 편하게 포크해서 사용하시면 될 듯합니다.
https://github.com/moreal/agilestory.blog/
https://agilestory.blog
bgl gwyng shared the below article:
스마트홈 세팅

제이미 @theeluwin@hackers.pub
신혼집에 스마트홈을 구축한 경험을 공유하는 이 글은 LG 가전제품과 헤이홈, 미니빅 기기를 활용한 자동화 루틴을 소개합니다. 아침 기상 시 전동 커튼이 열리고, 로봇청소기가 작동하는 등 시간대별로 설정된 자동화 시스템을 통해 일상생활의 편리함을 더했습니다. 특히, 화장실 환풍기를 헤이홈 푸쉬봇으로 제어하여 반신욕 시 온도 유지를 돕는 등 개인적인 필요에 맞춘 스마트홈 환경을 구축했습니다. 이 글은 독자들에게 스마트홈 구축에 대한 아이디어를 제공하고, 자동화를 통해 삶의 질을 향상시킬 수 있는 가능성을 보여줍니다.
Read more →예전에(혹시 지금도?) 신문 컬럼에서 흔히 볼수 있는 글 구조가 있는데, 우선 뜬금없는 주제로 서문을 연다. 가령, '고대 그리스에는 이러저러한 풍습이 있었다' 하는 식으로.
이러고 글의 3/4 정도 지점까지 고대 그리스의 어떤 풍습에 대해 설명한다. 소재가 흥미로운데다가 기본적인 글솜씨는 있기에 술술 재미있게 익힌다. 이제 유익하고 흥미로운 내용이 끝나면 '하지만 작금의 대한민국의 현실은 어떠한가'며 갑자기 핸들을 꺽는다. 그리고 자기 하고싶은 말로 나머지 분량을 채우고 글이 마무리된다.
앞부분 3/4의 시사교양정보와 뒷부분 1/4의 아무말대잔치의 연관성을 찾아내는것은 오롯이 독자의 몫이다. 아마 수십년간 이 황금(?)패턴으로만 글을 수백편 써온 소위 평론가/칼럼니스트 등등이 상당수 있을것이다.
React Native 라이브러리 쓸때 제일 (충분한 까닭없이) 고통받는 경우가 JS 단에 노출되어야할 API가 쓸데없이 한번 래핑되서 네이티브 단에 숨어있는 경우인거 같다. 오히려 래핑을 안했으면 JS 단에서 알아서 쇼부를 볼텐데, 쓸수있는 인터페이스가 충분히 원자적이지 않아서 네이티브단 코드를 까거나 아니면 꼼수를 써야한다.
@iamuhun김무훈 링크가 깨졌네요ㅠ
The Case for Software Craftsmanship in the Era of Vibes
Link: https://zed.dev/blog/software-craftsmanship-in-the-era-of-vibes
Discussion: https://news.ycombinator.com/item?id=44264376
지난번 read papers with me에 이어서... 이번에도 어차피 논문 읽을겸, 세미나 발표 준비하듯 피피티도 만들고, 영상도 촬영해봤는데요,
결국 촬영 + 편집에 오버헤드가 너무 많이 걸려서 이것도 그다지 좋은 방법이 아니었네요. 혹시라도 비슷한 생각 하신 분들은 참고하시길(...)
예전에는 주로 Windows랑 Mac을 왔다 갔다 하면서 작업했는데, 요즘은 Mac mini랑 MacBook Air를 나눠서 쓰는 일이 많아지다 보니까, 슬슬 dotfiles
백업이나 공유가 필요하겠다~ 싶어졌다.
우선은 셸 히스토리를 백업하고 공유할 수 있도록 https://atuin.sh/ 를 설치해봤다. (@daidaisuke 님 블로그에서 우연히 본 건데, 감사합니다!)