bgl gwyng

@bgl@hackers.pub · 83 following · 96 followers

슈티를 함께 만들 팀을 만들고 있습니다. 관심 있으신 분, 또는 잘 모르겠지만 이야기를 나눠보고 싶은 분도 bgl@gwyng.com으로 편하게 연락주세요.

GitHub
@bglgwyng
shootee
www.shootee.io
6
3

다른 페디버스 서버에서 온 메시지라 그런가, 약간 외계인이 보낸 전파 신호를 감지한 느낌이 든다.

5
1

JavaScript 번들러를 쓰려고 하니까 확실히 모듈 사이의 원형 의존성을 상당히 엄격하게 잡는 것 같다. 그냥 인터프리터로 실행할 때는 Python처럼 모듈 실행하다 도중에 다른 모듈 실행하고 다시 돌아와서 마저 실행하는 식으로 해결되는 면이 있었는데, 아무래도 정적 분석이 들어가다 보니 그렇게 하기는 어려운 듯. 이참에 모듈을 더 잘게 나누기로 했다. 다행히 그걸로 모두 해결되는 케이스라서…

0
0
1

통신사 해킹 사태 등의 보안 사고에 대해 IT쪽으로 조금이라도 지식이 있는 사람과 아닌 사람(e.g. 우리 엄마 아빠)의 통신사의 잘못에 대한 분노의 크기가 다른거 같다. 가령 나는 해커가 RSA2048를 해독하는 알고리즘이라도 발명해서 해킹했다면 크게 화가 안날것이다. 굿잡, 어쩔수없지 정도? 근데 이번 사고의 디테일은 몰라도 그런거랑은 전~혀 관련 없다는건 당연하다.

근데 우리 엄마도 이게 통신사의 인재라는건 아는데, 동시에 해커들도 뭔가 방어하기 어려운 첨단 기술 그런걸 썼다고 막연히 생각하는거 같다. 그래서 나처럼 통신사들이 한방에 골로 가도 할말 없을 만큼의 잘못을 저질렀다고까지 생각하고 분노하진 않는듯...

8
3

Deno의 침체에 대한 소문은 크게 과장된 것입니다
------------------------------
- 최근 Deno Deploy, KV, Fresh, 전반적인 회사 및 프로젝트 *모멘텀* 에 대한 비판과 우려가 등장함
- 비판 중 일부는 타당하고, 자체적으로 진행상황을 *충분히 공개하지 않아* 혼란을 키우기도 했으나, 이 소문 및 비판 중 많은 부분은 근거 없는 * 추측이나 사실과 다른 내용*임
- Deno 2 출시(2023년 10월 …
------------------------------
https://news.hada.io/topic?id=21027&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

2

jules한테 시킨일을 확인했는데 건질만한 리팩토링은 한 건 이었다. 사실 TODO에 설명을 잘 써놓은게 드물어서 큰 기대를 하면 안되긴 했다(내 자신이 봐도 뭘고치라는건지 헷갈리는거 천지다)

재밌는건, 내가 예외처리를 꼼꼼하게 못한것에 대해 TODO 남겨 놓은것들이 있었는데, jules가 그것들을 많이 고쳤다. 문제는 저게 TS가 예외를 exhaustive하게 처리못하다보니 대충 넘어간건건데, jules가 올린 PR도 같은 이유로 믿고 머지할수가 없었다. 케이스가 보강되긴 했는데 완벽하게 처리한건지는 타입체커 도움 없이는 알수가 없다. AI/타입시스템의 보완적 관계에 대해서 자주 생각했는데, 정말로 구체적인 예시를 이리 쉽게 만날줄이야.

5

방금 청약홈으로 아파트 청약을 했는데, 사이트가 좀 덜컹거리긴 하지만 어쨌건 필요한 문서도 알아서 긁어와서 확인해주는등 편리하게 만들어져있었다. 맨날 불평하면서 쓰긴 하지만, 우리나라의 이런 행정전산의 수준이 세계에서 손꼽히지 않을까? 다른 나라에서 필요한서류 프린트해서 동사무소 찾아다니고 이럴거 생각하면 깜깜하다.

2
4

AI직원의 출근거부사태에 이어, 업데이트가 몇분째 없길래 뭐하고 있냐고 물으니까 황급하게 다시 일하기 시작했다(아마 이용자가 몰려서인것으로 예상). 졸기까지하고 사람 다 됐구만.

6
3
1
3
6

오늘 정말 엄청 운일이 있었는데
AI로 학습 시켜서 자동으로 공정 및 스스로 리스크 제어까지 하는 모델을 실제로 적용 시켜봐야하는데 선뜻 나서주는 고객사가 없었다. 내가 더 많은 사람에게 더 낮은 가격으로 더 많은 희망을 줄수 있게 도와달라고 했을때 한 고객사가 입을 열었다 그런 목적이라면 무조건 적으로 도와주겠다며 본인들 데이터베이스까지 열어줌...

1

Smalltalk의 클래스 레퍼런스 문서는 스스로를 기술할 때 일인칭을 쓴다고 한다. “나는 추상 클래스입니다. 내 인스턴스들은 객체의 컬렉션입니다” 같은 식.

3

각 개인이 GPT로 지브리 스타일 프사 만드는걸 뭐라고 하고싶진 않다. 오히려 수백만명이 그걸 했다는건 미야자키 하야오가 창조한 스타일의 우수성을 직접적으로 증명한다. 미야자기 하야오 본인이 원한 방식은 아니었지만.

근데 샘 알트만이 저 기능을 광고하는 행동은 정말 꼴보기 싫었다. 일단 미야자키 하야오 본인이 그걸 매우 싫어할거란걸 몰랐을리 없는데도 그냥 강행했다. 여기선 일종의 트롤링 내지는 악의가 느껴지는데, 등산객들이 쌓아놓은 소원돌탑 무너뜨리는 행동과 비슷하다. '미신이나 믿는 멍청이들ㅎㅎ'이 '예술에 인간의 영혼 어쩌고가 들어있다고 믿는 멍청이들ㅎㅎ' 로 바뀐 것이다. 샘 알트만의 메시지는, 우리 OpenAI가 예술의 가치를 재정의했으니 너희들은 거기 적응하라는 거다.

물론 미신도 구라고 인간의 영혼 어쩌고도 구라지만, 그래도 좀 덜 asshole이 될 방법은 언제나 존재한다. 심지어 이미 이룰거 다이루고 돈도 많은 사람에겐 더 선택하기 쉽기까지 하다.

8
1

Nix에 GUI 툴이 부실한게 laziness를 적극적으로 쓰다보니 그런거 같다. 작은일을 하는 nix파일도 실제로 설정을 까보면 사실상 nixpkgs를 통째로 export하고 있고, 이런걸 GUI로 잘 보여주긴 힘들 것이다. public export랑 shy(?) export를 구분할수 있으면 해결되려나?

2

농담이 아니라, 어려운 문제 때문에 너무 손이 안가는 상황을 타파하려고, 어제는 일부러 autocompletion 정도만 쓰면서 손맛을 느끼며 잡다구리한 리팩토링을 했다. 그다음 설계 개선해야하는 부분을 20분 정도 하고 잤다.

2

아아~ 여러분 이만한 기여 맛집이 어디 없습니다~
ActivityPub 기반의 오픈소스 블로깅 서비스 HackersPub에 현장에서 기여할 수 있는 기회! 그 외에도,,,

* Fedify : ActivityPub 기반의 소프트웨어 개발하는 난이도를 낮춰주는 라이브러리
* Hollo : 1인 블로깅 플랫폼
* 혹은... 프론트엔드 하시는 분 한정, 마스토돈 클라이언트 만들기 온보딩까지 가능...!!!!

hackers.pub/@hongminhee/0196b9

5월 24일(土) 한국 연합우주 개발자 모임(FediDev KR)에서 두 번째 스프린트 모임을 개최합니다! 장소는 뚝섬역 5번 출구쪽에 위치한 튜링의 사과(@TuringAppleDev)입니다. 참고로 스프린트 모임이란 함께 모여서 오픈 소스 코딩을 하는 자리인데, 한국 연합우주 개발자 모임의 스프린트에서는 새로운 연합우주 서비스나 앱을 개발하거나, 번역이나 문서에 기여하는 등 연합우주와 관련된 다양한 오픈 소스 활동을 모여서 함께 합니다. 지난 스프린트 모임의 기록을 스프린트 블로그(@sprints.fedidev.kr)에서 살펴보실 수 있습니다. 저는 그날 Fedify, Hollo, Hackers' Pub에 기여하시고자 하는 분들을 옆에서 도와드릴 예정입니다. Fedify, Hollo, Hackers' Pub에 기여해보고 싶었던 분들이 계시다면 모임에 참가하여 저와 함께 스프린트를 해보는 것도 좋을 것 같습니다. 이번 모임에 관심이 있으신 분은 행사 신청 페이지를 참고하시기 바랍니다.

5월 24일(土) 한국 연합우주 개발자 모임(FediDev KR)에서 두 번째 스프린트 모임을 개최합니다! 장소는 뚝섬역 5번 출구쪽에 위치한 튜링의 사과(@TuringAppleDev)입니다. 참고로 스프린트 모임이란 함께 모여서 오픈 소스 코딩을 하는 자리인데, 한국 연합우주 개발자 모임의 스프린트에서는 새로운 연합우주 서비스나 앱을 개발하거나, 번역이나 문서에 기여하는 등 연합우주와 관련된 다양한 오픈 소스 활동을 모여서 함께 합니다. 지난 스프린트 모임의 기록을 스프린트 블로그(@sprints.fedidev.kr)에서 살펴보실 수 있습니다. 저는 그날 Fedify, Hollo, Hackers' Pub에 기여하시고자 하는 분들을 옆에서 도와드릴 예정입니다. Fedify, Hollo, Hackers' Pub에 기여해보고 싶었던 분들이 계시다면 모임에 참가하여 저와 함께 스프린트를 해보는 것도 좋을 것 같습니다. 이번 모임에 관심이 있으신 분은 행사 신청 페이지를 참고하시기 바랍니다.

hackers.pub

Link author: 洪 民憙 (Hong Minhee)@hongminhee@hackers.pub

아아~~~ 기여맛집 하나 더! 생겼습니다!!!
플러터로 만드는 마스토돈 클라이언트!! 잘하면 이번 반기안에 출시가 가능할지도!? 여러분의 기여가 함께 한다면 속도가 더 붙을지도 몰라요!?!?

플러터 앱 개인개발하고 있는거 생각보다 속도가 잘 붙고 있어서, 이번 fedidev kr 스프린트 모임에서 기여받을 수 있을 정도는 준비가 가능할 것 같습니다.... SNS 클론코딩이지만 클론코딩이 아닌 실제로 쓸 수 있는 플러터 기반의 소셜앱 만들고 싶은 분들 붙으세요,,

social.silicon.moe/@kodingwarr

0
0

@bglbgl gwyng ㅋㅋㅋㅋ 좋은 관찰이네요. 근데 누군가 학술 용어에 직접 자기 이름 붙이는 걸 상상해보면 "본인을 3인칭으로 칭하기" 이상으로 과하게 귀여운 행위일 거 같아요.

보통은 "Residual Complexity Reversion in Cognitive Task Automation" (Bgl, 2025)에 제시된 "Paradox of residual complexity"라는 개념이 여러 차례 인용되다가 이를 원전을 읽지도 않고 인용하는 이들이 생길 때 즈음 원래 의도에서 살짝 비틀린 의미를 갖는 용어로 "Bgl의 역설"이라는 이름이 탄생하게 되죠. Bgl은 기회가 날 때마다 그 미묘한 차이를 설명하려 하지만 이내 포기합니다.

4
1

리눅스에서 파일의 리비전을 정확하게 구할 방법이 없는거 같다. 혹시 있나요? mtime과 달리 변경될때마다 1씩 증가하는 믿을수있는 값을 원하는데, 알려진 파일시스템 중에서 이 기능을 바로 제공하는게 없어 보인다. 이런게 되면 incremental build를 정확하게 구현할수 있을텐데, 지금은 비슷한 경우에 해시 아니면 mtime 쓰는걸까.

3
1

사이드 프로젝트에 LLM이 쉬운 문제는 다 해치워주는 바람에 이제 머리 아픈 문제밖에 안남아서 그래서 오히려 진도가 안나가고 있다;; 아직 아무도 이 현상에 이름을 붙이지 않았다면 미리 'bgl의 역설'이란 명칭을 선점하고 싶다.

8
4

@bglbgl gwyng "타입은 코드가 스스로를 변호(하는 수단이다)" 라는 표현이 너무 좋습니다. Nix의 타이핑이 매우 약하다는 건 주지의 사실입니다만 그 실사용에 있어서 메타 프로그래밍이라고 칭할 것은 IFD 밖에 떠오르지 않습니다. 혹시 그 이외에 어떤 방식을 "meta-programming in nix"라고 부를 수 있을까요?

@jhhuhJi-Haeng Huh shell 스크립트에 string interpolation하는 것이 있고요. 메타프로그래밍이라고 뭉뚱그려 말해도되는진 모르겠는데, NixOS Module 시스템처럼 Nix 안에서 DSL을 만들어서 사용하는 경우까지 생각하며 썼습니다.

0

bgl gwyng shared the below article:

LogTape 0.10.0 Released

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

LogTape 0.10.0 is now available, bringing enhancements to security, flexibility, and usability for this zero-dependency JavaScript logging library. A key addition is the @logtape/redaction package, which helps protect sensitive information using pattern-based and field-based redaction techniques. This package includes built-in patterns for common sensitive data types like credit card numbers and JWTs. The update also introduces improvements to timestamp formatting, allowing users to omit timestamps from formatted messages, and a lazy file sink option to improve resource utilization. Additionally, the configure() function now detects and prevents duplicate logger configurations. Thanks to external contributions, LogTape 0.10.0 offers more control over log output and improved resource management. Upgrade to this version to leverage these new features and improvements, enhancing your logging capabilities.

Read more →
3

안녕하세요, 여러분.

해커스펍에 들어온 시점 전후로 건강에 문제가 생겨 이제야 hello world 메시지를 남기네요. 초대해주신 @hongminhee洪 民憙 (Hong Minhee) 님 고맙습니다.

애호하고 선호하는 프로그래밍 언어는 Python이고 Back-end 직군이 본진이지만, 그때 그때 엔지니어링에 필요한 직군에서 필요한 도구를 써서 개발해요. 현재는(2025년 5월 기준) 프리랜서로 일하고 있습니다.

개발 외엔 글쓰기, 글짓기를 좋아해서 글로 먹고 살 방법도 모색하고 있어요.

잘 부탁드리며, 또 뵈어요.

8

최근에 마주친 문제/주제들이 우연히 다들 '양방향' 이란 개념과 관련이 있다. 아래는 거기 관련된 러프/나이브한 생각들이다.

세션 타입

이건 노골적인 예시인데, 말그대로 서버/클라가 양방향으로 통신하는걸 기술하게 해준다.

Propagator

대부분의 프로그래밍 언어에서 x = 3 + 2과 같은 우변을 계산해서 좌변의 기호에 할당하는 기능을 제공한다.

그런데 3 = x + 2 라고 썼을때 x = 1을 해주는 언어는 거~의 없다. 이런 기능이 왜 필요하냐는 의문이 들 수 있지만, 이런 방식을 간접적으로 다들 매일 쓰고 있다. 예컨데 패키지 버전 관리를 생각해보자.

foo: >= 2.0.0
bar: =< 3.1.0 

이런 식의 설정 파일을 만지작 거릴텐데, 사실 foo >= 2.0.0, bar =< 3.1.0, ... 같은 부등식을 기술하고 있는 셈이다. 여기서 barfoo를 의존성으로 가지면 문제가 좀더 복잡해진다. 패키지 매니저는 조건을 만족하는 foo, bar의 값을 알아서 계산해준다.

요지는, 구체적인 값 대신에 조건을 나열하는 방식은 이미 다들 쓰고 있다는 얘기다. 그리고 패키지 매니징이 아닌 다른 문제에서도 이 방식이 좋은 경우는 흔하지만, 조건을 풀어서 값을 구하는 부분을 짜는게 까다로워서 도입하기 쉽지 않다.

여기서 양방향과 관련된 부분은 좌변과 우변의 정보 교환이다. x = 3 + 2x <= 3 + 2로, 우변의 정보가 일방적으로 좌변으로 간다고 볼수 있다. 반면 3 = x + 2는 좌변의 정보가 우변으로 가야한다.

x + 1 = y - 3란 예시를 보자. 이 식만 가지고는 x, y의 값을 구할 수 없다. 하지만 x = 3이란 정보가 들어오면 y = 4란걸 알 수 있고, 반대로 y = 5란 정보가 들어오면 x = 1인걸 알 수 있다. 이런 양방향 정보교환을 기술할수 있게 해주는것이 Propagator 패턴이다. Propagator 자체도 세션 타입과 뭔가 관련이 있을거 같은데, 뭐 찾아보면 오히려 서로 관련 없는게 없으니 일단 패쓰.

프로그래밍에서의 타입

모든 프로그래밍 언어는 메타프로그래밍이 가능하고, 대부분의 프로그래밍 언어는 메타프로그래밍을 할 자격이 없다. 나는 그중에서도 특히 자격이 없는 언어인 Nix로 메타프로그래밍을 하는 상황에 쳐해있다. Nix의 특성상 나뿐 아니라 다른 많은 Nix 유저들이 자연스레 이 토끼굴에 빠진다.

Nix의 에러메시지는 읽기가 참 힘든데, 기능이 매우 부족한 언어에다가 여러 개념을 새로 구현해서 얹어놔가지고, 긴 스택트레이스 중에 내가 관심있는 부분은 끝의 일부인데 거기까지의 흐름을 따라가려면 앞의 상관없는 코드도 대충은 이해해야한다. 이게 양방향 정보 교환이 잘 안되고 있는 부분이다.

알다시피 함수 자체는 단방향 정보이다. 스택트레이스는 함수를 통한 단방향 정보의 전달 과정을 보여준다. 그리고 개발자는 그걸 반대로 뒤집은 형태를 분석해야 하는 상황에 놓인다. 이게 개발자 <=> 코드 의 양방향 정보교환의 수단이 제공되지 않아서 생기는 문제다.

개발자 <=> 코드의 양방향 정보코드의 대표적인 수단은 타입이다. 타입은 코드가 스스로를 변호하고, 개발자의 잘못된 변경으로부터 방어하도록 해준다. 대부분의 언어가 메타프로그래밍을 할 자격이 없다는 얘기가, 코드 생성이라는 개발자 -> 코드의 단방향 정보전달만 기술하고 반대로 코드 -> 개발자 방향의 정보를 모조리 잃어버리는 형태로 이루어지기 때문이다.

그런데 타입안전한 메타프로그래밍은 그자체로 어려운 문제이고 아직은 연구주제에 가깝다고 알고있다. 혹시 그냥 개발자에게 뭔가 알려줄수있는 방법 자체를 primitive로 가질 순 없나? 그게 결국 타입이랑 똑같은 것일까? 여기에 TypeScript에서의(역시!) 무근본한 트릭이 소개되어있는데, 약간 관련있을지도 모른다.

7
0

오랜 기간 alfred 를 써왔고, 그동안 raycast 추천을 많이 받아왔음에도, alfred 가 영구 라이선스이기도 했고, 불편한 점도 없이 오랫동안 써와서 선뜻 바꿔 볼 마음이 들지 않았는데 최근 지속적인 뽐뿌가 있어 오늘 raycast 를 깔고 alfred 에서 쓰던 단축키 Ctrl + / 를 할당해 주었다.

2

크롤링 하는 대상이 graphql을 쓰는데, API엔드 포인트를 못 찾겠어서 이전에 이걸 파싱하려고 SSR된 HTML에 포함된 Apollo state를 뽑아서 파싱했다. 좋은 방법 없나...?

0

@bglbgl gwyng @hongminhee洪 民憙 (Hong Minhee) @arkjunJuntai Park "전능한 느낌"이라고 하니까 Bastard Operator From Hell이 생각나요 ㅎ 좀 다르지만 연관있을 거 같은 느낌이 오랫동안 종이와 펜으로만 일하다 보면 거대한 실험장비를 눈앞에 마주하게 됐을 때 가슴이 두근거리면서 저걸 몰아 볼 수만 있으면 얼마나 좋을까 하는 생각이 들어요. 육중한 무언가를 직접 "operation"하고 싶다는 본능적 욕망이 깊이 자리잡고 있나 봅니다. 길에서 우연히 보게 된 중장비에 마음이 뺏겨 장래희망이 덤프트럭 운전기사가 된 전국의 미취학 아동들에게 "너도? 사실은 나도.."라고 말해주고 싶어요.

4
0

‘그냥 tryAny 쓰면 예외는 다 잡을 수 있는 거 아닌가? 왜 ResourceT를 써야 하지?’라고 생각했는데 찾아보니 tryAny로는 비동기 예외를 잡을 수 없다고 한다.

writeGreetingSafeAttempt :: IO ()
writeGreetingSafeAttempt = do
  dir <- getDataDir
  h <- IO.openFile (dir </> "greeting.txt") WriteMode
  _ <- tryAny do
    IO.hPutStrLn h "hello"
    IO.hPutStrLn h "world"
  IO.hClose h
4

더 많은 교육을 받은 노동자가 더 높은 임금을 받아야 하나? 교육을 통해 개인의 생산성이 향상되므로 그렇다는 것이 기능론적 인적자본론의 입장이다. 교육에 드는 비용은 개인의 신체에 자본으로 축적된다. 실무를 통해 얻어지는 능력(직무능력)뿐 아니라, 새로운 지식을 빨리 습득할 수 있는 능력(훈련적합성) 자체가 교육을 통해 길러진다. 교육은 개인의 인지능력, 직무능력, 협업능력을 향상시킨다. 인적자본론에 따르면 소득 불평등이 커지는 이유는 교육에 따른 노동자의 생산성 격차가 커지기 때문이다. 해결법은 교육팽창을 통해 생산성이 낮은 노동자의 생산성을 높이는 것이다.

0

bgl gwyng shared the below article:

Why LogTape Should Be Your Go-To Logging Library for JavaScript/TypeScript

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

LogTape is a modern JavaScript and TypeScript logging library distinguished by its simplicity, flexibility, and broad runtime compatibility. One of its key advantages is its zero-dependency footprint, which reduces bundle size and enhances stability, making it ideal for both applications and libraries. LogTape supports multiple JavaScript runtimes, including Node.js, Deno, Bun, web browsers, and edge functions, ensuring consistent logging across different environments. Its hierarchical category system allows for fine-grained control and targeted filtering of logs, while structured logging enables improved searchability and data analysis. The library also offers simple extension mechanisms for creating custom sinks and filters with minimal boilerplate. Designed with library authors in mind, LogTape allows libraries to provide logging output without imposing specific configurations on users. With features like explicit and implicit contexts, LogTape facilitates richer logging by adding consistent properties across multiple log messages, making it easier to trace requests through a system. This post highlights LogTape's unique combination of features that address real-world development challenges, making it a valuable tool for any JavaScript or TypeScript project.

Read more →
6

정기적으로 하는 미니 컨퍼런스 같은게 있으면 좋겠다. 돌아가면서 각자 최근에 발견/발명한걸 부담없이(뭐 공들여 ppt만들고 이러지 말고) 발표하고 치킨 먹고 헤어지는?

8