https://youtu.be/LvW1HTSLPEk?si=n1DXpApVO6YE80tC Claude Code TUI가 React로 터미널 화면을 reactive하게 60 fps로 렌더링하고 일종의 게임 엔진처럼 화면을 그린다는... 얘기를 하고 있는데... 아니 대체 왜죠...
洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 1020 following · 727 followers
Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub! My main account is at
@hongminhee洪 民憙 (Hong Minhee)
.
Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다. 제 메인 계정은:
@hongminhee洪 民憙 (Hong Minhee)
.
Fedify、Hollo、BotKit、そしてこのサイト、Hackers' Pubを作っています。私のメインアカウントは「
@hongminhee洪 民憙 (Hong Minhee)
」に。
Website
- hongminhee.org
GitHub
- @dahlia
Hollo
- @hongminhee@hollo.social
DEV
- @hongminhee
velog
- @hongminhee
Qiita
- @hongminhee
Zenn
- @hongminhee
Matrix
- @hongminhee:matrix.org
X
- @hongminhee
TIL: Biome은 자체적으로 만든 AST 쿼리 언어인 GritQL을 통해 Plugin 시스템을 제공한다. [문서]
language js
// 4개 이상의 서로 다른 useState를 사용하는 경우
or {
`function $name($args) { $body }`,
`$name = ($args) => { $body }`,
`$name = forwardRef(($args) => { $body })`,
`$name = React.forwardRef(($args) => { $body })`,
`$name = forwardRef(function($args) { $body })`,
`$name = React.forwardRef(function($args) { $body })`,
`$name = memo(($args) => { $body })`,
`$name = React.memo(($args) => { $body })`,
`$name = memo(function $name($args) { $body })`,
`$name = React.memo(function $name($args) { $body })`
} where {
$body <: contains `$t1 = useState($a1)` as $b1 where {
$body <: contains `$t2 = useState($a2)` as $b2 where {
or { not $a2 <: $a1, not $t2 <: $t1 },
$body <: contains `$t3 = useState($a3)` as $b3 where {
or { not $a3 <: $a1, not $t3 <: $t1 },
or { not $a3 <: $a2, not $t3 <: $t2 },
$body <: contains `$t4 = useState($a4)` as $b4 where {
or { not $a4 <: $a1, not $t4 <: $t1 },
or { not $a4 <: $a2, not $t4 <: $t2 },
or { not $a4 <: $a3, not $t4 <: $t3 },
register_diagnostic(
span = $name,
message = "컴포넌트 안에서 너무 많은 useState를 쓰고 있습니다."
)
}
}
}
}
}
A relatively big issue with apkit that I'd been unable to resolve for ages was solved surprisingly easily, and once I thoroughly checked the cause, it turned out to be something obvious...😅
채용 지원한 오픈소스 해외 기업에서 여태까지 한 오픈 프로젝트 내역을 내 개인 오너쉽에 맞춰 공유해달라는 요청을 받아서 정리했습니다. https://gist.github.com/mu-hun/1d9a9ac8b72485d77ff90cabed595a49
인덱스 시그니처도 "남용"되고 타입 안정성을 깨뜨릴 수 있구나..
타입스크립트의 길은 멀고도 험하다
사내 문서를 노션으로 정리하고 있는데 문서간 연결이 미묘하게 불편한 것 같다
Cloudflare just published a vibe coded blog post claiming they implemented Matrix on cloudflare workers. They didn't, their post and README is AI generated and the code doesn't do any of the core parts of matrix that make it secure and interoperable. Instead it's littered with 'TODO: Check authorisation' and similar
https://blog.cloudflare.com/serverless-matrix-homeserver-workers/
https://webaudio.github.io/Audio-EQ-Cookbook/audio-eq-cookbook.html 합주실 믹서의 EQ 설정 UI를 만들면서 gain curve를 그리는 기능을 구현하기 위해서 기초적인 bilinear transform과 biquad filter의 개념에 대해 배웠다. 아직까지는 다행히 새로운 것들을 배워나가는 과정이 즐겁다.
When you necessarily need variable names for a single item of “data” vs. its collection, which naming convention do you prefer?
@hongminhee洪 民憙 (Hong Minhee) 아쉽게도 저 내용을 API로 긁을 방법은 없는거 같네요ㅠ
@bglbgl gwyng 저 스레드를 로컬에서 Amp Code로 가져와서 이어서 진행할 수가 있는데, 그럼 비공식 API라도 있지 않을까요?
@hongminhee洪 民憙 (Hong Minhee) 근데 학습데이터로 쓰려면 세션데이터를 가지고 시스템 프롬프트부터 해서 재현을 할수있어야하는데, 거기까지 될지 모르겠네요. 혹시 ampcode 퍼머링크 남아있는 커밋 예제 있으신가요?
@bglbgl gwyng 이렇게 해 본 적 있습니다!
귀찮은 작업을 처리하기 위한 자동화 툴을 자동화 할 수 있는 방법이 있을까
@hongminhee洪 民憙 (Hong Minhee) 앗 요러면, 모델들이 퍼블릭 레포에서 해당 퍼머링크를 감지해서 학습 데이터로 쓸수 있겠네요?
@bglbgl gwyng 네, 이론적으로는 그게 가능할 것 같습니다!
요즘 LLM 어시스턴트로 코딩을 하게 되면서, 작업 과정의 투명성 차원에서 세션 스레드를 공유한 뒤 퍼머링크를 커밋 메시지에 첨부하는 Amp Code의 방식을 OpenCode에서도 써볼까 고민중인데… 문제는 내가 프롬프트를 주로 한국어로 쓴다는 것. 프롬프트를 영어로 써야 할까…? 🤔
클로드 코드나 코덱스 등을 쓰면 작업한 데이터가 다시 각 모델의 학습에 쓰일거고 이러면 성능이 떨어지는 오픈웨이트 모델들이 격차를 따라잡는게 더 힘들어진다. 작업 내용을 export해서 오픈데이터셋 등에 쉽게 기여할 방법이 없을까?
opencode의 플러그인을 만들면 어떨까 생각이 들었다. 그리고 .sessions 같은 디렉토리에 넣어서 git history의 일부로 하고.
에이전트를 백그라운드로 돌리는건 확실히 위험해 보이기 때문에 아직도 메뉴얼 하게 단계별로 확인하고 커밋하는걸 고수 중
AI 코딩 도구 업계에서 매주 새로운 "필수 도구"가 등장합니다. 안 쓰면 뒤처진다는 메시지가 넘쳐나죠.
그런데 모든 AI 서비스 업체가 "AI는 실수할 수 있으니 꼭 확인하라"고 말하면서, 동시에 "에이전트 다섯 개를 병렬로 돌려야 진짜 생산성"이라고 합니다. 이 두 메시지, 동시에 성립할 수 있을까요?
이번 아티클에서 hype의 구조, 백그라운드 에이전트의 HITL 제거 위험, 그리고 Visual Studio 2026 디버거 에이전트가 보여주는 전통적 IDE의 가치를 다뤘습니다.
https://devwrite.ai/ko/posts/ai-coding-tools-fomo/
#AI #AICoding #SoftwareEngineering #DevTools #CodingAgent #VisualStudio #DeveloperProductivity
클로드 코드나 코덱스 등을 쓰면 작업한 데이터가 다시 각 모델의 학습에 쓰일거고 이러면 성능이 떨어지는 오픈웨이트 모델들이 격차를 따라잡는게 더 힘들어진다. 작업 내용을 export해서 오픈데이터셋 등에 쉽게 기여할 방법이 없을까?
This brings back memories. Before Python had async/await, before asyncio became standard, I was happily writing concurrent code with gevent. I actually preferred it.
The reason was simple: no function color problem. With async/await, you split the world into two kinds of functions—ones that block by default and ones that don't. You have to mark the latter with async and remember to await them. With gevent, everything just blocks by default, and you spawn when you need concurrency. It's the same mental model as multithreading, just lighter. Project Loom in Java does something similar, though the technical details differ.
I sometimes wonder what Python would look like if it had embraced gevent-style coroutines in CPython instead of adding async/await. Or if Stackless Python had been accepted upstream. Maybe async programming would be more approachable today.
The explicit await keyword gives you visibility into where context switches can happen, sure. But in practice, I/O points are obvious even without the keyword—you're reading from a socket, querying a database, making an HTTP request. The explicitness doesn't really prevent race conditions or timing bugs. Meanwhile, function colors infect everything. One async library forces your entire call stack to be async. You end up maintaining both sync and async versions of the same code, or the ecosystem just splits in two.
With gevent, there's no such problem. You just call functions. Spawn them if you want concurrency, call them normally if you don't. Go's goroutines and Project Loom are popular for good reasons—they make concurrency accessible without the cognitive overhead.
Python's choice is history now, and there's no going back. But looking at how things turned out, I can't help but think the more practical path was right there, and we walked past it.
Did you know you can get similar concurrency as asyncio/ASGI in Flask, by using gevent? It's been possible as long as Flask has existed! Turns out we never documented it, so how would anyone have known? Fixed that https://flask.palletsprojects.com/en/stable/gevent/ #Python #Flask #gevent
으아 이슈에 답변해야하는데 너무 하기 싫다... 작업이 아닌 정책적인 것이라 하기 싫다...
Idea: "The unbillionaires list", to promote contributors to the common.
A collaborative website that lists people who created something useful to millions but purposedly choose to put in in the common and didn’t earn money directly from it (or not as much as expected)
Besides those listed in https://ploum.net/2026-01-22-why-no-european-google.html
I would add Henri Dunant (Red Cross, he died in great poverty), Didier Pittet (who invented the hydroalcoolic gel we now use everyday).
On February 3rd (very soon!) I am hosting another [BERLIN FEDERATED NETWORK EXPLORATION CIRCLE] at
@offline. It's a chance to meet and talk with people who are interested in the #fediverse & networking & exploration & circ---you get the idea.
We have the pleasure of having
@hongminhee洪 民憙 (Hong Minhee)
who will give a presentation about @fedifyFedify: ActivityPub server framework "an opinionated #ActivityPub framework for TypeScript that handles the protocol plumbing"
It is an open free event and everyone is welcome!
Here ya go, a full account. https://notes.nora.codes/atproto-again/
언제나 구조를 잡는 것에 어려움을 느꼈는데 무엇을 하면 안되는지를 우선 생각하게 되니까 뭔가 감이 잡히는 것 같기도
종료 시그널이 들어왔을 때 잘 처리되는지, 상위 context가 계속 잘 전파되는지를 확인하는게 관건이긴 하군
컨텍스트 창 크기가 20만 토큰이라는 건 (1대 1로 비교할 수 있는 건 아니고 경우와 사람마다 다르겠지만) 인간 기준으로 어느 정도 느낌을 가지는 크기인지 궁금하다. 한 사람이 가지는 컨텍스트 창은 당연히 무한할 수는 없고 생각보다 그렇게 크지 않을 수도 있다는 얘기도 있다. 예를 들면 개발자도 일할 때 이런 저런 문의와 과제가 쌓이면 “컨텍스트 스위칭” 비용에 대한 불만을 토하기도 하니까.
미국에서 돌아올때쯤에는 해커스펍 리뉴얼 배포되어 있겠지,,,?
내가 누구??? 안드로이드로 해커스펍 클라이언트 뚝딱 만들어서 개밥먹기하는 사람
context 하고 고루틴의 사용이 적절한지 분석하는 방법을 찾아봐야겠다
洪 民憙 (Hong Minhee) shared the below article:
upcoming fediverse events
Liaizon Wakest @wakest@hackers.pub
Jan 26th, online
- Fediverse-Sprechstunde (in German)
Jan 31st, Brussels
-
FOSDEM: Fediverse Integration into (EU) Public Administration
-
FOSDEM: Social Web Devroom (25 presentations)
February 1st, Berlin
- Digital Independence Day: Punk Tour of the Fediverse (in German/English)
February 1st, Brussels
- FOSDEM: Shaping the Future of Events and Calendars in the Fediverse
- FOSDEM: The Fediverse and the EU's DSA: solving the challenges of modern social media?
February 3rd, Berlin
- BERLIN FEDERATED NETWORK EXPLORATION CIRCLE: Fedify
February 4th + 5th, London
- Protocols for Publishers
February 22nd, Vancouver
- FediCollective: Co-Creating the Web
February 24th, Montreal
- FediMTL: digital sovereignty and the social web
February 28th, Alicante
- 2a FEDIFESTA
March 2nd, online
- Growing the Open Social Web: An Online FediForum Un-Workshop
March 19th + 20th, Amsterdam
- Nodes on a Web: The Fediverse in/for Public Institutions
July 8th to the 12th, Germany
- DWeb Camp 2026
집에서 홈서버로 몇가지 서비스를 굴리면서 cloudflare tunnel을 사용하지 않던 이유가 몇가지 있는데...
- 캡슐화를 위해 추가 데이터가 덕지덕지 붙어 스루풋에 손해가 있다. 특히 패킷의 크기가 작으면 배보다 배꼽이 더 커진다.
- 목표 서버는 내 방안에 있는데 정작 송신을 하면 패킷이 먼 곳, 심하면 바다를 건너 갔다 올 수 있다. 이걸 막으려면 자체적으로 DNS 서버를 굴려야하는데, 심심하면 서버를 재시작하는데다가 매 장치마다 DNS 설정을 해주는 건 너무 귀찮은 일이다.
- http(s)가 아닌 서비스의 경우(메일서버라던가) 매우 처리가 귀찮아진다. 해결하는 방법이 아예 없는 건 아니지만 그럴 바에야 그냥 포트를 열어주는 게 훨씬 편하다.
사실 위 문제는 cloud native라면 별 문제가 없는 것들이긴 하다만... 아직까지 내 작은 SBC 서버에는 아직 시기상조인 것 같다.
어 뭐야 KMP의 P랑 Pratt parser의 Pratt이 동일인물이라고???
Ghostty has a really well-balanced AI usage policy. It doesn't ban AI tools outright, but it sets clear boundaries to prevent the common problems we're seeing in open source contributions these days.
What stands out is that it's not about being anti-AI. The policy explicitly says the maintainers use AI themselves. The rules are there because too many people treat AI as a magic button that lets them contribute without actually understanding or testing what they're submitting. The requirement that AI-generated PRs must be for accepted issues only, fully tested by humans, and properly disclosed feels like basic respect for maintainers' time.
I'm thinking of adopting something similar for my projects, even though they're not at Ghostty's scale yet. Better to set expectations early.
Another thought just struck me today, though, and comes from the perspective of my current role as a maintainer of heavily-used open source software projects: while an agents file may be a hint that makes us curmudgeons roll our eyes and step away in disgust, the dark forest of vibe coders exists, and they're probably opening PRs on your projects. Some people are probably vibe coding without even knowing it, because LLM-powered autocomplete is enabled in their IDE by default or something. In that reality, an AGENTS.md might also be the best protection you have against agents and IDEs making dumb mistakes that are, often, very hard to notice during a code review. If you maintain projects that welcome third-party contributions, you deserve to at least know that you've given the agents some railings to lean on.
You might not trust vibe coders, but if you can gently guide the vibes, maybe it's worth the cringe or two you'll get from seasoned engineers.
—AGENTS.md as a dark signal, Josh Mock
어째서 다들 노동자가 아니라 사용자에게 이입하는 걸까…?
Microsoft is handing over Bitlocker keys to law enforcement. https://www.forbes.com/sites/thomasbrewster/2026/01/22/microsoft-gave-fbi-keys-to-unlock-bitlocker-encrypted-data/
この問題について、以前は「優れたソフトウェアエンジニアになるには、英語が一定のレベル以上できなければならない」と考えていましたが、今は考えが変わりました。自国語でも十分にコーディングができるよう、技術的・文化的な土壌が整えられるべきです。
(自称)英語話せない人が付けた変数名、その人の技術力関係なく結構モヤモヤする率高い.......。まぁ別に変数名が合致してたらプログラムは動くから、まぁ、良いかとは思うし、わざわざ指摘するのもなぁ....という気持ちがあるので、表には出さないが、それはそれとしてどうしてもモヤモヤはする.....。
ActivityPub, the protocol that powers much of the fediverse and allows the various fediverse platforms and servers to talk to each other, has become an official W3C standard 8 years ago!
https://www.w3.org/news/2018/activitypub-is-now-a-w3c-recommendation/
#fediverse #activitypub #standards #OpenWeb #W3C #anniversary #OTD #OnThisDay
While working on #Fedify, I noticed something about how #Misskey handles #ActivityPub object access. When a remote server requests a followers-only post or DM with a valid HTTP Signatures (draft-cavage) from an authorized actor, Misskey still returns 404 instead of the content. It seems Misskey only checks the visibility field (public/home) without verifying the signature at all.
#Mastodon takes a different approach—when #authorized_fetch is enabled, it validates the HTTP Signatures and returns the content if the requesting actor has permission. I think it would be beneficial if Misskey could adopt a similar mechanism, since it would better respect the access control semantics that ActivityPub intends. Has anyone else run into this, or are there specific reasons Misskey handles it this way?
For reference, Fedify makes implementing this kind of fine-grained access control quite straightforward—you can check the Fine-grained access control section in the documentation.
While working on #Fedify, I noticed something about how #Misskey handles #ActivityPub object access. When a remote server requests a followers-only post or DM with a valid HTTP Signatures (draft-cavage) from an authorized actor, Misskey still returns 404 instead of the content. It seems Misskey only checks the visibility field (public/home) without verifying the signature at all.
#Mastodon takes a different approach—when #authorized_fetch is enabled, it validates the HTTP Signatures and returns the content if the requesting actor has permission. I think it would be beneficial if Misskey could adopt a similar mechanism, since it would better respect the access control semantics that ActivityPub intends. Has anyone else run into this, or are there specific reasons Misskey handles it this way?
wasm으로 뭔가 해보려했는데 문제는 뭐하려했었는지 기억이 안남
별거 아닌거 같지만 은근하게 신경 쓸 부분이 많은 것 같음
오늘은 로깅 전략/구현을 대대적으로 손 볼 예정
페디버스에 이런 웹게임적 요소를 넣으면 어떨까...? 이미 몇 개 있을 것 같기도 한데
https://bsky.app/profile/yamyo.bsky.social/post/3mcz5srwsnc22
예전에는 CPU 버그가 드물었지만, 최근에는 복잡성의 증가로 많이 흔해졌다는 이야기로 시작하는 CPU 버그에 대한 좋은 마스토돈 포스팅. 버그가 어떤 식으로 발생하고 여기에 어떤 식으로 준비/대처하는지에 대해 자세히 이야기를 해준다. 습관적으로 마스토돈에 들어갔다가 상당히 흥미롭고 깊이있는 이야기를 발견해서 기뻤다. 주소는 여기
예전에 lwn.net 에서 본 What every programmer should know about memory가 생각났다. Static RAM 과 Dynamic RAM 의 속도차이는 왜 어떻게 발생하는 것일까에 대해 아주 오랫동안 궁금해하던 것을, 회로도를 통해서 직관적으로 이해할 수 있게 해줘서 굉장히 (...인생에서 가장 기뻤던 순간 중 손에 꼽을 정도였다.) 기뻤던 기억이 아직도 난다.
로우레벨 컴퓨팅에 대한 이야기는 내 정신 저 밑바닥에 있는 "아니 그러니까 왜냐고?!" 의 욕망을 크게 해결해주는 경향이 있어서 좋아한다.
그리고 마스토돈의 기본 웹 클라이언트는 브라우저들이 번역을 정말 잘 못한다-_-; 웹페이지의 기본 언어가 브라우저 언어로 맞추어져 보여지고, 그래서 번역할 필요가 없다고 브라우저가 판단해서 그런 것 같다고 이해하고 있는데 이 문제 어떻게 해결할 방법이 없을까 흠 ' -' ...












