Profile img

bgl gwyng

@bgl@hackers.pub · 95 following · 119 followers

GitHub
@bglgwyng

emacs 개발자들은 LLM 시대에 빛을볼 중요한 선견지명을 가지고 있었는데

  1. 텍스트 에디터는 범용 인터페이스다(반 OS가 되어버린 emacs)
  2. RAG할 지식데이터베이스를 만들고 관리할수 있어야한다(org-mode).

근데 이걸 알고도 한푼도 못벌었다ㅋㅋㅋ 열매는 cursor와 notion에게로...

4
4

테슬라 팬보이들이 좀 밉상이긴 하지만, 그래도 기술에 대한 이해도가 높은 편일거라 생각했는데. 얼마전에 어디 게시글에서 FSD에 카메라 외에 라이다 등의 추가 센서를 쓰면, 여러 센서 입력 중에 뭘 신뢰해야하는지 결정해야하는 문제가 추가로 생겨서 안좋다... 라는 얘기를 보았다(그리고 다른 테슬라 팬보이들이 동조함).

1

해외리모트잡 페이가 국내에 비해 너무 좋길래, 주변에 어떻게 이럴수 있냐고 했더니 다들 너무 당연하게 국내 페이가 싸서라고 한다. 그리고 해외에서 한국 개발자 선호하는것도 그냥 단순히 싸고 가성비 좋아서라고 한다.

세계 10위권의 경제대국의 국민으로써 느낌이 좀 이상하다. 그러니까 나는 K-인도 개발자였구나..

10
3

타입시스템이 충분히 좋은 언어는, 특정 함수(타입을 만족하는 프로젝트 내의 아무 함수)를 CLI 바이너리로 빌드하는 기능을 one-liner로 지원할 수 있을 것이고, 그건 아마 지원할만한 기능일 것이다.

Context: Cabal의 어떤 내부 함수를 끄집어내서 CLI 툴로 만드는데 황금같이 귀중한 내 주말을 써야했다.

5

주로 하스켈만 하는 분께 좀 유명한 JS 라이브러리의 깃헙 링크를 공유드렸는데, 스타가 10k인걸 보고는 엄청나게 훌륭한 프로젝트인가보다... 하시길래 / 20 정도로 보정을 하라고 했다.

8
4
3
3
3
5

IQ 테스트로 인간을 판별하고 구분짓는것에는 불편한 느낌이 들지만(그게 쓸모없단 얘긴 아님), 그와중에 우리집 강아지 견종인 요크셔테리어가 똑똑한 견종으로 분류되는 글을 보면 진심으로 뿌듯하다...

4

https://github.com/bglgwyng/nix-x-cabal

한달간의 삽질끝에 Nix + Haskell 빌드 프레임워크를 완성했다. 늘 Nix, Haskell에 기여하고 싶었지만, 솔직히 이걸 내가 직접해야하는 상황이 올줄은 몰랐네. Nix 디버깅하느라 정말 개고통이었다..

4

몇년전에 모 기업 공채를 지원했는데. 마지막 인적성 면접만 남긴 상태에서 간접적으로 그때까지의 점수를 짐작할 방법이 있었는데, 정말 99% 합격했다고 생각했다. 결국 인적성 면접보고 떨어졌는데 거기서 정말 점수를 엄청나게 까먹었단 얘기다. 근데 지금도 이유가 뭔지 모르겠다. 진짜 모든 질문에 무난~한 대답만 했는데 말이지... 그거 떨어지고 다른 회사 갔는데 거기서 커리어도 꽤 꼬여서, 종종 다시 생각하면 아쉬워진다.

3

부연설명을 하자면. Git에선 브랜치 자체로는 '변경 사항'이라는 의미가 없습니다. 왜냐면 끝점만 있고 시작점만 있으니까요. 변경 사항을 논하려면 비교 대상인 커밋이 필요합니다.

Rebase를 하는 이유는 연속된 커밋들로(예쁩니다) '변경 사항'을 나타내기 위해서입니다. 그 의도한 '변경 사항'을 만들기 위해, 비교 대상이 될 커밋을 바꾸는게 리베이스입니다. 그러니까 개발자가 의도한 diff를 그대로 표현하지 못해서, diff = head - x니까 이 방정식을 만족시키는 x 커밋을 찾아서 diff를 의도한데로 계산되게 만드는거지요.

참 뻘스럽습니다.

1

Git 떡밥이 지나갔군요. 리베이스가 왜 필요할까요? Git 브랜치에 시작점의 개념이 없기 때문입니다. 브랜치는 커밋 ref가 아니라 (시작 커밋 ref, 끝 커밋 ref)가 되어야 합니다.

3

친구 회사에서 react-form-mozard의 잠깐 언급되었는데, Generator 기반인게 문제가 되어 도입이 바로 기각되었다. yield*async, await, try, catch 등등과 달리 혐오스러운 외양을 갖고 있는게 문제가 되었다. 여러분 제발 키워드 차별을 멈춰주세요ㅠㅠ

5

소스코드 사이의 안정적인 하이퍼링크를 만들수 있는 기능이 없다. 가령 A.hs에서 주석을 쓰면서 B.hs의 foo란 함수의 구현의 특정 부분을 언급하고자 할때, 그냥 B.hs L:77 이렇게, 소스코드가 수정이라도 되면 바로 유효하지 않게되는 방식으로 언급할수 밖에 없다. 만약 소스 코드 어디에서든 전역적인 심볼을 자유롭게 선언할 수 있다면 이 문제를 해결할 수 있을텐데...

3
4

지금 리눅스 진영에서 컨테이너/네임스페이스의 입지가 어떻게 될까요? 사실 요즘 서비스 배포할때는 죄다 컨테이너 쓰잖아요? 근데 또 컨테이너로 할수 있는 것중 상당수는 그냥 기존 권한 관리로도 가능하단 말이죠? 근데 컨테이너를 쓸땐 기존 권한 관리를 그냥 없는셈 치고 접근하게 되는데 이게 정말로 다들 동의하는 방식인지가 궁금합니다.

3

'둠'의 개발자 존 카멕이 '게임의 스토리는 포르노 영화의 스토리와 똑같다. 있어야 하긴 하지만, 딱히 중요하진 않다고'라고 말한적이 있다. 뭐 곧이 곧대로 이해해도 괜찮은데 약간 재밌게 해석하는 방법이 있는데.

종종 스토리가 훌륭하다고 언급되는 게임들이 있다. 나한텐 그런 게임으로 하프라이프2가 처음이었는데, 실제로 해보면 흥미진진하고 몰입감이 상당하긴 하다. 근데 막상 엔딩을 보고 무슨 내용이었지, 하고 돌이켜보면 전체 플레이타임(한 40시간?)에 비해 그렇게 플롯이 밀도있지 않다는걸 깨닫게 된다.

  • 죽기 싫으면 A로 가세요
  • A로 가려면 무슨 아이템이 필요해서 B를 먼저 가야하네요?
  • B로 갔더니, 여기가 아닌가벼~ C로 가야겠군요
  • 이러쿵저러쿵하다가 결국 A에 도착

이런게 대부분이라, 의미있는 내용만 추리면 전체 게임의 스토리가 아마 세줄 요약도 가능할 것이다. 사실 하프라이프만 이런게 아니라, 대부분의 스토리가 훌륭하다는 게임이 까보면 이런식이다. 잉, 그럼 스토리가 좋다는 얘긴 다 허상이었나?

자, 근데 포르노 영화의 스토리가 어땠더라? 움베르토 에코가 어떤 영화가 멀쩡한 영화인지 포르노 영화인지 구분하는 방법을 알려주는 가벼운 에세이를 쓴 적이 있다. 여기서 포르노 영화라 함은, 21세기에 인터넷에서 볼수 있는 '야동'보단, 옛날에 영화관에서 상영되던, 꼴에 1시간이 넘는 상영시간을 가지는 포르노 '영화'를 뜻한다.

아무튼 그 방법이 뭐냐면. 가령, 남녀 주인공들이 만나서 택시를 타고 집으로 간다. 이때 집으로 가는 동안의 시간을 아무 편집없이 그대로 보여주면 그게 포르노다. 멀쩡한 영화는 당연히 쓸데없는 장면은 바로 끊고, 집에 도착해서 거사를 치르고, 그리고 다시 다음 내용으로 이어질 것이다. 하지만, 지금 당신이 보고 있는게 포르노 영화라면! 택시 타고 가는 아무 의미없는 장면을 10분간 본다음, 그 다음에야 원래 보려고 했던걸 보게 된다.

도대체 왜 10분 동안 택시 타는걸 보여줄까? 움베르토 에코의 대답은, 만약 그 쓸데없는 장면이 없이 주인공들이 바로 물고빨기 시작해버리면, 관객들이 그걸 못 버틸거란 것이다. 아무리 그걸 보려고 온 관객들이라지만, 너무... 바로 그래버리면 쪼끔 부담스럽고 그렇다. 그래서 완충제 역할을 할, 택시에서의 10분이 필요하다. 21세기의 포르노는 고전 포르노 영화에 비해 완충제 구간이 많이 짧아지긴 했지만, 그래도 여전히 흔적은 남아있다.

다시 게임으로 돌아와서. 눈치챘겠지만, 게임에서의 전투(나 아무튼 핵심 플레이)가 포르노의 섹스씬에 대응된다. 그럼 게임에서의 스토리는, 포르노 영화에서 남녀 주인공이 택시를 타고 가는, 플레이어의 정서적 안정감을 위해서가 아니라면 굳이 필요없는 그런 역할을 한다는 얘기가 된다. 게임의 즐거움은 총칼로 맘에 안드는 놈들을 한 3,000명 쯤 조지는데 있는데, 그게 아무리 즐거운 활동이라지만 브레이크가 전혀 없이 스트레이트로 3,000명을 해치우는것은 정서적으로 만만치않은 일이다. 그래서 100명씩, 30번씩 나눠서 죽일 방법이 필요하고, 그 사이를 매꿔주는것이 것이 하프라이프2에서의 '여기가 아닌가벼~'란 결론이다.

존 카멕 님아, 이런 의도로 말씀하신거 맞죠?

2

난 어떤 CLI 툴들이 자기가 실제로 쓰고있는 설정값(기본값이거나, 환경변수에서 왔거나, 파일에서 왔거나)를 읽는 명령어를 필수적으로 포함했으면 좋겠다. 사실 법제화까지 하고싶다..

2

커뮤니티에서 정치적 발언을 하는 것을 금지하는 것의 문제는, 정치적인(또는 그렇게 들린다고 다른사람들이 주장하는) 발언으로 문제가 생겼을때(안 생길수가 없다) 발언의 옳고그름을 떠나, 발언이 정치적인지 아닌지를 따지는쪽으로 흘러가기 때문이라고 생각한다.

아 물론, 대놓고 정치적 발언을 많이 해서 커뮤니티 구성원들을 피곤하게 하는건 좀 다른 문제고, 그걸 피하기 위해 정치적 발언을 금지하는 강령이 있는것일 테다. 근데 이건 그냥 각자 눈치껏 잘치기길 기대하는 수준이고, 커뮤니티의 방향성과는 무관한, 각자 지켜야할 운전 매너에 가깝다. 내 말은, 언젠가 커뮤니티내에서 큰 의견 차이가 생겼을때, '정치적 발언 안됨'이 해결책이 되길 기대할순 없단거다.

2
5

방금 친구랑 모의면접을 봤는데(내가 면접관), 면접으로 알아낼 수있는게 딱히 있는지에 회의가 생겨버렸다. 아 물론, 내가 초보 면접관이라 면접스킬이 떨어지긴 한다만, 친구 얘기론(면접관 경험이 더 많음) 그래도 무난의 범위엔 든다고 한다. 이력서 기반으로 이것저것 물었는데, 만약에 이력서가 구라로 점철되있으면 그걸 걸러낼순 있었을 것이다. 근데 친구의 이력서는 당연히 그렇지 않았으니, 그냥 이력서가 구라가 아니란 사실 정도만;; 알아낼수 있었다. 이 이상 뭔가 더 꿰뚫어 보는게 가능할까... 하겠지? 그럼 어떻게 하는걸까.

4

디버깅을 하다가 도저히 모르겠어서 Gemini한테 시켜서 해보라고했는데, 걔도 나랑 똑같은 시도를 한다음에 잘 모르겠다고 하니까 덤앤더머같다;;

5
12

만약 페디버스가 지금보다 훨씬 활성화되어서, 사람들이 커스터마이징된 개성있는 인스턴스를 갖게 되면, 그게 UX의 측면에서 정말로 좋을까요? 가령, 트위터를 하는데 사용자마다 UI가 다르다고 상상해보세요.

사실 저는 크게 부정적이진 않는데(좋은 쪽으로 개성있을수도 있으니까), 그런 상황이 머릿속에서 아주 잘 시뮬레이션 되지 않네요. 어떨거 같나요?

6
2
0

conal 리팩토링하면서 느끼는건데, 그래프 다루는 코드는 검증하는게 특히 어렵다. 특히 중요한 성질들을 타입으로 보장을 못해서 테스트와 assert 문으로 때우는수밖에 없다. 아마 하스켈로 했더라도 별반 다르지 않았을듯.

5
2
8

요즘 아이디어를 긴 글로 옮기는게 힘들다. AI와 비교해 최대 10토큰/분이란 저열한 속도에 자괴감이 들고, 그렇다고 AI랑 같이 쓰자니 이것도 합을 맞춰서 같이 쓰는게 어렵단 말이지. 그래서 시도해보려는 방법은 AI한테 인터뷰어 역할을 맡기고 내가 인터뷰이가 되는거다. 주제만 내가 정해주고 세부 사항에 대한 비판이나 질문은 AI한테 맡긴다. 그리고 대화가 끝나고 스크립트를 그대로 공유한다.

7
3

RxJS의 pipe를 흉내내서 뭔가 만들고 있는데, pipe안에 들어가는 함수가 operation oriented가 되도록 유도한다. 즉, x.pipe(f(y))f(y,x)로 해석되어야하니, f는 data oriented가 아닌 operation oriented가 되어야하는 것이다. 근데, 나도 일반적으로 operation oriented를 선호하긴하지만 JS의 관례는 그게 아니다. 그래서 fpipe를 통해서 쓰지 않을 경우에 어떤 사람들은 생소하게 느낄거 같다. 나는 xthis 처럼 사용되고(data oriented), pipe는 메소드 확장의 역할을 맡게 하고 싶다.

어떻게 하는게 맞을까?

1
2

JS에선 Java처럼 package-level visible property를 못만들다보니, 상호 참조가 많은 클래스를 정의할때 죄다 public으로 해야하는게 별로네. 내부 클래스와 그걸 래핑한 유저한테 노출하는 클래스(또는 인터페이스)를 따로 만들어야 하나.

3

평소에 OOP 별로다, 상속은 거품이다 비난만 하다가, 막상 클래스 만들어야할 상황이 오니까 기어코 아름다운 상속 구조를 만들어보려 애쓰는 나, 정상인가요?

5
3
2

여행 다녀왔는데 또 가고싶다... 예전에 1인 창업을 위해 베트남에서 생활하는 개발자를 만난적이 있다. 사실 휴양지에 가면 플렉스를 해버려서 그렇지 그걸 참으면 돈을 아낄수 있긴하다. 디지털 노마드의 로망을 1년 정도는 실현해보고 싶은데...

6
0
12
4

(CLI 툴을 쓰다 느낀건데), UX 이슈 중에 no-op과 관련된 것이 특히 까다로운것 같다. 예를들어 유저가 뭔가를 했는데 에러나서 안되면 에러 메시지로 다른 사람에게 물어볼수 있다. 근데 예상한 동작이나 변경이 안 일어났을 경우엔 그게 불가능하다. 어떤 설정을 하는걸 빼먹어서 그렇게 된 경우엔, 운좋게 다른 사람들도 자주 겪는 문제라서 쉽게 답을 찾는 경우가 아니라면, 결국엔 문서를 읽으며 내가 하려는 동작엔 어떤 설정이 요구된다는 사실을 알아내야하는데, 이러면 문서를 사실상 통독하게 된다.

5

내가 개발자로써 딱히 내세울 커리어는 없지만, 그래도 일평생 XCode 개발에 전혀 기여하지 않았다는 점에서는 자긍심을 느낀다.

4

평소에 이펙트 시스템의 필요성을 때가 비동기 코드 테스트할때 인듯. 특히 setTimeout등 실제로 현실 시간만큼 기다리는 코드가 섞여있을때 이펙트 시스템이 없으면 테스트에서도 실제로 그만큼의 시간을 기다려야한다. 그러다보니 안 짜게 되고...

3

https://github.com/bglgwyng/deferred-cleanup-resource-map 이런 라이브러리를 만들었다. ref counting 해서 GC 해주는 map인데, 해제를 임의로 늦출수 있다. LRU 캐시같은걸 일반화한 형태라고 보면 된다.

이름이 참 저질인데, 나도 upyo같은 센스있는 이름을 붙이고 싶었지만, 이게 클로드랑 머리맞대서 나온 최선이다;;

7