Profile img

Jaeyeol Lee

@kodingwarrior@hackers.pub · 562 following · 418 followers

Neovim Super villain. 풀스택 엔지니어 내지는 프로덕트 엔지니어라고 스스로를 소개하지만 사실상 잡부를 담당하는 사람. CLI 도구를 만드는 것에 관심이 많습니다.

Hackers' Pub에서는 자발적으로 바이럴을 담당하고 있는 사람. Hackers' Pub의 무궁무진한 발전 가능성을 믿습니다.

그 외에도 개발자 커뮤니티 생태계에 다양한 시도들을 합니다. 지금은 https://vim.kr / https://fedidev.kr 디스코드 운영 중

Blog
kodingwarrior.github.io
mastodon
@kodingwarrior@silicon.moe
Github
@malkoG

오픈소스 프로젝트에 여러분의 gemini cli(등등)의 무료 사용량을 기여하세요

오픈소스 소프트웨어라는 소프트웨어 개발 방법은 그동안 대성공을 거두어 오고 있습니다. 여기에는 여러 요인이 있지만, 중요한 요인 중 하나는 이것입니다. 상업 소프트웨어든 오픈소스 소프트웨어든 공평하게 프로그래머의 시간을 들인 만큼 개발된다는 것이지요. 능력 있는 소프트웨어 개발자가 시간을 기여하면 오픈소스 소프트웨어는 상업 소프트웨어만큼이나 빠르게 성장할 수 있었습니다.

하지만 AI 프로그래밍의 시대가 빠르게 다가오고 있습니다. 앞으로 소프트웨어 개발은 프로그래머의 시간만으로 개발되지 않습니다. 상업소프트웨어는 AI 프로그래밍을 적극적으로 사용하여 이전과 다른 생산성으로 개발되기 시작할 것입니다. 상업 소프트웨어와 달리 오픈소스 소프트웨어는 언제나 그럴 수는 없습니다. 프로젝트의 성장과 유지를 위해 훌륭한 프로그래머들의 시간을 들이는 것을 넘어서, 훌륭한 프로그래머들이 시간에 더해 비용까지 들여야 한다면요.

상업 소프트웨어와 오픈소스 소프트웨어 사이의 불균등한 생산성의 시대가 코앞까지 다가오고 있습니다.

새로운 기여자 확보의 문제

문제는 여기서 그치지 않습니다. 오픈소스 프로젝트는 새 기여자를 얻기 더 힘들어져가고 있습니다. 왜냐하면 이제 'good first issue'라는 것은 의미가 없기 때문입니다. 그 정도로 쉬운 일은 새로운 기여자 대신 로봇이 해결할 가능성이 높고, 그 로봇은 새로운 기여자의 로봇일 수도 있습니다. 결국 AI 프로그래밍으로 기여하는 새 기여자는 이 프로젝트에 대해 거의 배우지 못하게 됩니다.

전통적인 오픈소스 생태계에서 'good first issue'는 단순히 쉬운 문제를 해결하는 것이 아니었습니다. 새로운 기여자가 프로젝트의 코드베이스를 이해하고, 개발 프로세스를 익히며, 커뮤니티와 소통하는 법을 배우는 학습 과정이었습니다. 하지만 AI가 이런 단순한 작업들을 대신 처리하게 되면, 새로운 기여자들은 진입 기회를 잃게 됩니다.

AI 프로그래밍의 현재 위치

AI 프로그래밍은 완벽하지 않습니다. 숙련된 전문가가 숙련된 도메인에서 작업하는 것만큼 잘하지는 못합니다. 하지만 비숙련된 프로그래머가 처음 보는 프로젝트에서 작업하는 것보다는 잘할 때가 많습니다.

그러나 많은 오픈소스 소프트웨어는 바로 이런 비숙련 기여가 성장의 한 축을 차지합니다. 처음 프로젝트에 참여하는 개발자들의 작은 기여들이 모여 거대한 프로젝트가 됩니다. 그리고 이런 비숙련 기여의 일부는 손쉽게 AI가 대체할 수 있는 기여입니다.

다행히도 지금은 AI 프로그래밍의 초창기입니다. Gemini CLI가 무료 사용량을 제공하듯이, 앞으로 여러 회사들이 비슷한 기회를 제공할 것입니다. Claude, ChatGPT, Copilot 등 다양한 AI 도구들이 개인 사용자에게 무료 크레딧을 제공하고 있습니다.

이것은 오픈소스 프로젝트에 기여할 새로운 기회로 삼을 수 있을까요?

주의: 이 글은 아무 프로젝트에나 방문해서 AI로 적당한 코드를 생성한 다음 패치를 보내라는 뜻이 아닙니다.

AI 프로그래밍은 (아직은) 마법이 아닙니다. "이 프로젝트를 겁나 멋지게 만들 기능을 추가해주세요"라고 한다고 해서 그런 패치가 나오는 식으로는 동작하지 않습니다.

이상적인 경우: AI 친화적 프로젝트

가장 좋은 방법은 프로젝트가 AI 친화적으로 준비되는 것입니다. 바로 작업할 수 있을 만큼 잘 정의된 이슈들이 있는 프로젝트라면, "nnn 번 이슈에 대해 작업해 주세요"라는 요청만으로도 누구나 기여할 수 있을 것입니다.

하지만 (적어도 아직은) 그런 프로젝트가 많지는 않을 것입니다.

현실적인 접근: AI가 잘하는 일들에 집중

대신 AI는 인간과 비대칭적으로 잘하는 기능이 있습니다.

이를테면 이슈에 minimal reproducible case가 보고되어 있지만 아직 구체적으로 발생하는 원인이 밝혀져 있지 않은 경우를 생각해봅시다. 버그를 고치는 사람이 해야하는 지루한 작업 가운데 하나는, 이 문제를 어떻게 수정할지를 생각하기에 앞서 이 문제가 어디서 발생하는지 찾는 것입니다. 디버거를 써야 할 수도 있고, 코드에 많은 trace log를 남겨야 할 수도 있습니다.

하지만 AI 코딩 에이전트는 테스트가 재현 가능하기만 하다면, 문제를 발생시키는 정확한 줄을 찾아내는 데 탁월합니다. 지치지 않고 정석적인 지루한 방법으로 꾸준히 로그를 추가하고 테스트를 다시 실행하면서 문제를 찾아내거든요.

어쩌면 문제의 원인이 아주 단순해서, 문제를 바로 수정할 수 있을지도 모릅니다! 그렇다면 패치를 제출해도 좋겠지요. 하지만 바로 수정하기까지는 어렵더라도 괜찮습니다. 버그 리포트와 실제 코드의 문제를 매핑하는 것은 그 자체로 지루하고 시간이 걸리는 일입니다. 이것을 대신하는 것으로도 큰 작업을 대신하는 것입니다.

주의: 모든 프로젝트가 AI 기여를 환영할 리는 없습니다. 충분히 유용하게 다듬어지지 못한 유형의 AI 기여는 스팸처럼 느껴질 가능성이 있음을 유의해야 합니다.

미래

사실 누구나 자기 라이브러리를 뚝딱 만들어낼 수 있게 되었다는 점에서 오픈소스 프로젝트에 참여하는 사람들의 동기와 기여 방식 자체가 크게 뒤바뀔 가능성이 높습니다.

AI 프로그래밍을 누구나 거의 무료로 사용할 수 있는 시대가 올까요? 아마 어느 정도의 사용량까지는 그럴 것입니다. 그것이 얼마나 많은 양일지에 따라서 오픈소스 프로젝트의 미래는 크게 바뀌겠지요.

만일 정말로 AI 프로그래밍을 누구나 무제한적으로 사용할 수 있다면, 대규모가 아닌 대부분의 오픈소스 프로젝트에는 더이상 협력이 필요하지 않을 것입니다. 진정으로 '어떻게'보다 '무엇을'이 더 중요한 시대가 온다면, 프로젝트의 목표를 확고하게 가진 사람이 극한의 완성도까지 프로젝트를 밀어붙이는 편이 훨씬 좋은 결과를 만들겠지요.

그런 시대가 올지 오지 않을지 모르겠습니다. 하지만 그 전까지는, AI 프로그래밍이 누구에게나 주어지는 기회이지만 프로젝트를 단숨에 완성할만큼 주어지지는 않는 시대가 유지되는 동안에는, 다음 세대의 오픈소스 기여의 방법은 AI 프로그래밍 사용량을 기여하는 것이 하나의 큰 축이 될 것입니다.

15
0
0

오늘 만난 분에게 유튜브 출연 제의를 하다 알게 되었는데, 생각보다 부모님도 프로그래머인 경우가 – 그리고 아직도 2대에 걸쳐 현업인 경우도 이제는 꽤 많을 것 같다. 그래서 혹시 동반 출연 가능하실지 여쭤봤는데 과연… 관심있는 분들의 DM 기다립니다 ㅋㅋ

0

Jaeyeol Lee shared the below article:

불경하다! 어딜 데이터베이스를 깔려고 하느냐? ESENT (ESE) DB 활용기

고남현 @gnh1201@hackers.pub

이 글에서는 외부 개발 도구 사용이 제한된 환경에서 데이터베이스를 활용해야 하는 상황에 대한 해결책을 제시합니다. 필자는 Windows 운영체제에 기본 탑재된 ESENT (ESE) 데이터베이스를 활용하여 칼럼, 스키마, CRUD(생성, 읽기, 수정, 삭제) 기능을 추상화하는 API를 직접 구현했습니다. 이를 통해 개발자는 상용 데이터베이스 없이도 어플리케이션 개발에 필요한 데이터베이스 기능을 사용할 수 있게 되었습니다. 제시된 C# 코드 예제를 통해 ESENT 데이터베이스를 초기화하고, 데이터를 삽입하고, 조회하는 방법을 보여주며, 이를 통해 개발 생산성을 향상시킬 수 있음을 강조합니다.

Read more →
5

Jaeyeol Lee shared the below article:

VitePress localSearchPlugin 버그 디버깅하기

Lee Dogeon @moreal@hackers.pub

이 글은 Zenn 트렌드 봇 제작 중 VitePress 로컬 검색 기능의 버그를 발견하고 수정하는 과정을 담고 있습니다. Fedify 문서에서 검색 기능이 제대로 작동하지 않는 것을 확인한 후, 코드 블록 내의 특정 마크다운 문법(`markdown-it-jsr-ref` 플러그인)이 문제임을 밝혀냈습니다. VitePress의 `localSearchPlugin.ts` 파일을 분석하여, 헤딩 내의 `<a>` 태그를 처리하는 정규식의 non-greedy한 특성이 버그의 원인임을 알아내고, 정규식에서 `?` 기호를 제거하여 문제를 해결했습니다. PR을 통해 수정 사항을 제안하고 빠르게 머지된 경험을 공유하며, 디버깅 과정과 PR 준비에 대한 회고와 함께 개선점을 제시합니다. 이 글은 문제 해결 과정과 디버깅 경험을 통해 독자들에게 인사이트를 제공합니다.

Read more →
3
1
7
1

프로젝트 여러개 동시에 작업할 일이 있어서 Claude Code를 동시에 여러개 돌려야 하는데, 한 화면에서 볼 수 있는 괜찮은 멀티플렉서가 뭐가 있을까 하고 찾아봤는데.... zellij가 제 몫을 하는 것 같다.

사용방법이 어려울 줄 알고 쫄아서 시도 조차를 안했었는데, 화면 최하단에 어떤 단축키를 쓰면 어떤 동작이 일어난다고 친절하게 명시되어 있어서 진입장벽도 그렇게 있지는 않은듯....?

프로젝트별로 다른 pane으로 분리해서 각각 독립적으로 실행되는 Claude Code 에이전트를 굴리는 모습이다.
1

프로젝트 여러개 동시에 작업할 일이 있어서 Claude Code를 동시에 여러개 돌려야 하는데, 한 화면에서 볼 수 있는 괜찮은 멀티플렉서가 뭐가 있을까 하고 찾아봤는데.... zellij가 제 몫을 하는 것 같다.

사용방법이 어려울 줄 알고 쫄아서 시도 조차를 안했었는데, 화면 최하단에 어떤 단축키를 쓰면 어떤 동작이 일어난다고 친절하게 명시되어 있어서 진입장벽도 그렇게 있지는 않은듯....?

프로젝트별로 다른 pane으로 분리해서 각각 독립적으로 실행되는 Claude Code 에이전트를 굴리는 모습이다.
4

@kodingwarriorJaeyeol Lee 예를 들면 어떤 도메인 모델을 위한 학습 데이터를 구해달라고 요청을 해요 그럼 보통 공개되어 있는 데이터를 사용하는데 허깅페이스, 캐글, aihub 등을 맴도는 것도 한계가 있으니 웹 크롤링을 많이 하게 됩니다. 그러는 과정에서 ip 블락 당하고 백도어 찾아 다니고………… 이런 저런 일들이 생기니까 db 직접 접속해서 가져오고 싶은 순간들이 자주 생겨요 ㅠㅠ 현재 능력으론 한계가 있는 것 같은데 어떻게 해결해야하는건지 모르겠어유

0

두달내내 발표자료를 깎지 않을까.. 싶네요.. 파이콘(세션 발표, 커뮤니티 소개 발표) / 우부콘(세션 2개) / 모각작모임 라이트닝 토크. 요렇게 5개를 준비하게 생겼습니다.

전반적으로 내용은 얼추 완성이 되긴 했는데, 피그마로 만들었던 자료를 구글 슬라이드 기반의 템플릿으로 하나하나 다 옮겨야 함...

그리고 Claude Code로 실험을 좀 많이 하게 될 것 같아요

6
1
3

내가 그닥 좋아하는 사람은 아니지만 Ruby On Rails의 메인테이너이자 37signal의 대표는 DHH는 이런 얘기 를 했었다.

요약하자면,

  1. LLM한테 일을 지시하는 방식으로는 배워갈 수 있는게 없다
  2. 다만, LLM이 문서를 요약해서 알려주거나 자료를 찾아보는 식으로 역할을 위임하고, 내가 직접 프로그래밍 하는 방법이라면 배워갈 수 있는 여지가 있다.

인용한 글에서도 비슷한 내용이 언급이 되어 있는데, 결국에는 사람이 수제로 작업하는것이 개인의 성장에 도움이 되고 대 LLM의 시대에 리터러시를 키울 수 있게 된다는 것

LLM의 편의성은 자명하지만, 적당히 비용효율적으로 트레이드오프 맞춰서 업무를 하더라도 내가 키우고 싶은 코어스킬을 키우는데 있어서는 정신을 곤두세울 필요가 있지 않나 싶은 생각이 들었다.

5

LLM한테 짬때리면 당장 일은 빨리 처리되더라도 학습효과는 없을 수 있겠지만, LLM의 접근 방식/수 많은 데이터가 누적되어있는 LLM의 업무 방식 같은걸 잘 모방하는걸로도 배워갈 수 있는게 많지 않나....

2

Claude Code한테 뭔가를 지시하면, 지가 알아서 착착 todo list 만들어서 뭘 하려고 하는지 명시하고, 뭔가를 하고 있는 동안에는 Thinking 메시지에서 어떤 접근을 하고 있다라고 투명하게 말해주는데 일머리 있는 주니어한테 보고받는 느낌이라 굉장히 기분이 묘함.....

2

Claude Code한테 뭔가를 지시하면, 지가 알아서 착착 todo list 만들어서 뭘 하려고 하는지 명시하고, 뭔가를 하고 있는 동안에는 Thinking 메시지에서 어떤 접근을 하고 있다라고 투명하게 말해주는데 일머리 있는 주니어한테 보고받는 느낌이라 굉장히 기분이 묘함.....

2
3
0

Zenn 하니까 하나 더 생각나는거. Zenn에서는 트렌드를 실시간으로 받아볼 수 있도록 rss 피드를 제공한다. Velog도 마찬가지로 지원하긴 한다.

하지만... 개인적으론 벨로그보다 zenn에 올라오는 글의 퀄리티가 마음에 들었어서, @akastoot악하 님이랑 zenn trend 봇을 만들었는데...... 제목 (원문 유지/영어 번역/한국어 번역), 그리고 원본페이지/각 언어별 번역페이지 이렇게 링크를 제공해주는 방식이었다.

당시엔 네이버에서 papago api가 오픈되었기 때문에, 그럭저럭 공짜점심을 먹을 수 있었으나.... 어느 순간부터 papago api가 샷다를 내려버리는 바람에 역사의 뒤안길로 사라진 봇이 되어버렸다......

지금 다시 만들게 된다면, 번역 기능은 DeepL 번역 API 쓰고, 자동번역페이지는 더 이상 못쓰게 되었으니 각 언어별 3줄 요약 정도만 남기고, 봇 굴리는건 @botkitBotKit by Fedify :botkit: 으로 할 수 있지 않을까.....

마스토돈 봇을 왜 굳이 만들려고 했냐! 이미 누군가가 텔레그램 봇을 만들어놓은건 있었다. https://t.me/zenndev

한국에 있는 사람들도 재밌게 읽을만한 글도 보이고, 이런 생태계가 있다는 것 자체가 잘 알려지는 것이 국내 생태계에도 좋은 영향력이 있을것이라는 생각이 들어서 마스토돈 봇을 만들어야겠다 싶었다. 의도는... 나름 좋았다고 생각한다..

0

Zenn 하니까 하나 더 생각나는거. Zenn에서는 트렌드를 실시간으로 받아볼 수 있도록 rss 피드를 제공한다. Velog도 마찬가지로 지원하긴 한다.

하지만... 개인적으론 벨로그보다 zenn에 올라오는 글의 퀄리티가 마음에 들었어서, @akastoot악하 님이랑 zenn trend 봇을 만들었는데...... 제목 (원문 유지/영어 번역/한국어 번역), 그리고 원본페이지/각 언어별 번역페이지 이렇게 링크를 제공해주는 방식이었다.

당시엔 네이버에서 papago api가 오픈되었기 때문에, 그럭저럭 공짜점심을 먹을 수 있었으나.... 어느 순간부터 papago api가 샷다를 내려버리는 바람에 역사의 뒤안길로 사라진 봇이 되어버렸다......

지금 다시 만들게 된다면, 번역 기능은 DeepL 번역 API 쓰고, 자동번역페이지는 더 이상 못쓰게 되었으니 각 언어별 3줄 요약 정도만 남기고, 봇 굴리는건 @botkitBotKit by Fedify :botkit: 으로 할 수 있지 않을까.....

3

ryoppippi 라는 일본쪽 개발자 분을 neovimconf.live에서 발표했을때 인연으로 지나친 적 있어서 일방적으로(?) 알고 있긴 한데, ccusage 같은 것도 만드시고 한국 기업인 뤼튼테크놀로지에서도 잠깐 일하시기도 하셨더라... 뭔가... 핸들을 볼때마다 내적반가움을 느낌..

1

데이터 구하는게 젤 힘듬 해킹/크래킹 (정확한 용어 모름) 배워야 할 지경임 맨날 이거 구해달라 저거 해달라 🫠🫠🫠🫠🫠🫠🫠🫠🫠🫠

0
0
2
0

Hashicorp의 전 CTO이자, Ghostty 터미널 앱을 만든 미셸 하시모토의 Agentic Engineering (feat. Zed)

0
1
16
0
2
11
0
0
1

유니티나 Lua로 프로그램 짜던 시절 생각하면 지금 웹 개발에서의 격변이 정말로 즐겁다. 즐겁긴 한데, 리액트라던가의 '매년 바뀌는 표준을 감당할 수 있겠나 소년?'에 대해서는 좀 질리기도. 필요해서 바뀌는 건 알겠는데 ECMA스크립트로 봐주면 안될까...? (나태)

0
0
0
3

오늘은 초대권을 얻게 되어서 DroidKnights(드로이드나이츠) 2025에 다녀오게 됐습니다. 안드로이드 개발에 조금씩 관심을 가지고 싶던 차에 다녀온 컨퍼런스라, 정말 하나도 모르는 상태에서 다녀오게 되어서 정작 이해가 가는 세션은 거의 없었습니다 😂

가장 이해가 잘 가고 재미있었던 세션은 구글 코리아 양찬석님의 "제미나이와 함께 안드로이드 공부하기"라는 세션인데, 어떻게 하면 제미나이를 잘 활용할 수 있는지 설명해 주셨던 세션. 더불어 Devrel이라는 롤이 있는 것도 알게 됐습니다. 찬석님이 세션에서 소개했던 제미나이 프롬프트 엔지니어링 기법은 여기에서 자세하게 볼 수 있어요.

내년에는 꼭 다 이해할 수 있을 정도로 공부해서 갈 수 있기를...!

안드로이드 컨퍼런스 행사인 드로이드나이츠 2025 현장에서 찍은 사진, "제미나이와 함께 안드로이드 공부하기"라는 세션의 한 장면입니다.
1
2

Hackers' Pub에 로그인한 상태에서의 타임라인 구성을 조금 바꿔봤습니다. 기존의 “연합우주” 탭을 “피드”라고 수정했고, “연합우주” 탭과 “Hackers' Pub” 탭은 기본적으로 로그아웃했을 때의 “연합우주” 및 “Hackers' Pub” 탭과 동일한 타임라인이 표시되게 했습니다. 아직 팔로를 많이 하지 않은 분들에게는 “연합우주” 및 “Hackers' Pub” 타입라인이 새로운 콘텐츠를 발견하기 좋은 공간이 될 겁니다.

11
0

org에서 Column View 기능을 활용하면 각각의 헤딩 섹션(**)을 row로 삼아서 데이터베이스처럼 다룰 수 있다.

원래는 각각의 항목 밑에 :PROPERTIES:하고 front-matter 비슷한 속성 상자를 붙이는데, column view로 이걸 펼쳐볼 수 있음

툴이 오래되니까 진짜 상상도 못하던 별게 다 되네

org에서 Column View를 활성화 한 모습
0
2
0
1