Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub!

Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다.

FedifyHolloBotKit、そしてこのサイト、Hackers' Pubを作っています。

嗨,我是 FedifyHolloBotKit 以及這個網站 Hackers' Pub 的開發者!

Website
hongminhee.org
GitHub
@dahlia
Hollo
@hongminhee@hollo.social
DEV
@hongminhee
velog
@hongminhee
Qiita
@hongminhee
Zenn
@hongminhee
Matrix
@hongminhee:matrix.org
X
@hongminhee
2
1

코딩 얘기

  • 어제 Claude API 연동해서, Opus 4 모델로 짤막하게 써봤는데 요청당 거의 0.4$ 정도씩 사라지는 것을 목격하고, API 는 쓰면 안되겠구나 싶었습니다. (대충 5불 순삭)
  • 코드 에이전트 역할로 Claude Code Opus 4gemini-cli gemini-2.5-pro 의 응답 결과물이 개인적으로 꽤 만족스럽네요. Claude Code 는 쓰다 보면 어느 순간 Opus 4 에서 Sonnect 4 로 바뀌어 있네요. 사용제한이 있나 싶습니다.
/status 명령으로 확인 해보면 아래 처럼 적혀 있긴 합니다.

 Model • /model
  LDefault Opus 4 for up to 20% of usage limits, then use Sonnet 4
   (currently Opus)
  • Cursor 를 여전히 쓰고 있고, Cursor Tab 은 훌륭하다고 생각하지만, 연간구독이 만료되고 나면, Cursor 를 계속 사용할지는 고민을 해봐야 할 것 같습니다. VS Code 를 써도 되고, Windsurf 같은 대안도 있고요.
  • 코드 에이전트들이 CLI 에서 동작하니 에디터와는 독립적이지만 Claude Code 는 VS Code 확장으로 (자동 설치되어) 코드 변경사항을 에디터에서 바로 볼 수 도 있어서 좋네요.

그렇게, Claude Codegemini-cli 가 화면의 일정 영역을 차지하기 시작했습니다..

Chat Mode, Claude Code, gemini-cli in Cursor.
2

jekyll 대신 pelican을 써보고 있습니다. Cursor에게 알아서 좀 짜라고 맡겨놨더니 링크가 모조리 깨지고 화면 템플릿도 제대로 안보이고 난리더라구요. 4시간동안 잡도리를 한 결과, 그냥 제가 처음부터 다시 다 짰습니다. 젠장... 암튼 pelican 쓸만 하네요. 어차피 대부분의 기능은 직접 구현해야해서, 최소한의 세팅만을 원했는데 충분히 제공하는것 같습니다. 공개할 수 있게되면 use case로써 공유해볼게요.

1
3

지금 Fedify 프로젝트가 @fedify/fedify 패키지나 @fedify/cli 패키지만 fedify-dev/fedify 저장소에 있고, 나머지 @fedify/amqp 패키지나 @fedify/postgres 패키지 등은 다 별도 저장소에 있는데, 이걸 fedify-dev/fedify 저장소에 다 합쳐버릴까 고민하고 있다. 릴리스를 매번 따로 하는 게 좀 귀찮기도 해서…

3
2
1
3
9
3
3
0
4
3

Okay, so after an evening hacking session with a 4 hour blackhole of focus, I've managed to get @adonisframeworkAdonisJS Framework working together with @fedifyFedify: an ActivityPub server framework — now, this code is super rough, and definitely not reusable, but may I might make it into a package later.

For now, this is just an experimental demo:

github.com/ThisIsMissEm/adonis

A couple of things to note:

- Testing this between a local mastodon instance and a local Adonis.js server was a royal PITA, due to SSL requirements on Mastodon's side, and not being able to supply an extra certificate to trust (I was using localcan to proxy everything, but it uses a self-signed certificate and mastodon is very unhappy about that)

- Converting between the Request/Response objects that Fedify wants and what Adonis.js has was a little troublesome — it's mostly based on the express code, but modified for Adonis.js — I did have a bug where the body was incomplete for some reason.

- Changing instance URLs is a PITA because everything gets weirdly cached. Here be dragons.

- I did hit into an issue with firstKnock throwing an error, but I can't manage to reproduce it now. I think it may have been SSL related.

1

Okay, so after an evening hacking session with a 4 hour blackhole of focus, I've managed to get @adonisframeworkAdonisJS Framework working together with @fedifyFedify: an ActivityPub server framework — now, this code is super rough, and definitely not reusable, but may I might make it into a package later.

For now, this is just an experimental demo:

github.com/ThisIsMissEm/adonis

1
1
6

어제 튜링의 사과를 처음 구경했습니다. 귀인들 만나느라 이용은 안하고 구경만. 조금 과장해서 얘기하면, 다른 공유 오피스와는 다르게 PC방에 개발자 모인 것 같은 느낌이었습니다. 다른 오피스들처럼 조용하고, 조금은 생기 없는 풍경이 아니라, 상대적으로 소음도 좀 있고, 활기가 있어 보여 의외였습니다. 장소 오너분들도 개발자로 알고 있는데, 개발자 이해도가 높은 게, 영향이 있는 것 아닐까요?

(삶에 찌든 사람들 모인 PC방 말고, 젊은이들이 즐겁게 노는 모습의 PC방입니다.)

7

AI 시대에 개인 테스트용 프로젝트를 C++ 로 해보면 어떨까 생각해보다가, 요새는 패키지 관리가 좀 개선되었을까 싶어 (vcpkg 나 conan 얘기도 좀 듣고..) 오픈소스들 몇몇을 들쳐보다가..

duckdb - 걍 코드 포크하고 네임스페이스 추가 https://github.com/duckdb/duckdb/blob/main/third_party/httplib/httplib.hpp https://github.com/yhirose/cpp-httplib/blob/master/httplib.h (본래 프로젝트)

clickhouse 의 관리- git 서브 모듈 https://github.com/ClickHouse/ClickHouse/tree/master/contrib

llama.cpp https://github.com/ggml-org/llama.cpp/tree/master/vendor

아 아직 내가 생각했던 그건 아닌 건가..

2
3

일전에 @kkungMinyoung Jeong 님께서 올려주신 Vibe Writing 글에, 숟가락을 얹어보았습니다. HammerSpoon 에서 쓰는 lua 코드에서 OpenRouter 의 google/gemini-2.0-flash-001 모델로 살짝 수정했습니다.

  • config, payload, 응답부 변경

바로바로 한영, 영한 변환하니까, 너무 편하고 좋네요. 다른 언어도 추가하고 그외 다른 활용 요소들도 생각 나서, 앞으로도 이것저것 만져볼 것 같네요.

local config = {
  open_router_api_key = "sk-...",
  open_router_api_url = "https://openrouter.ai/api/v1/chat/completions",
  model = "google/gemini-2.0-flash-001",
}

local function callOpenRouter(text, callback)
  if not config.open_router_api_key or config.open_router_api_key ~= "sk-..." then
    hs.alert.show("Config error: Please set your open_router_api_key in modules/ko-en.lua")
    return
  end

  local instruction = "입력된 문장이 영어일 경우 한국어로, 한국어일 경우 영어로 변환해줘. 의미를 모국어 사용자가 자연스럽게 받아들일 수 있게 정확하고 유창하게 전달하고, 불필요한 문장을 생략하여 명료하게 작성해. 번역어 외의 다른 문장을 추가하지 말고 번역 그 자체만 반환해."

  local payload = {
    model = config.model,
    messages = {
      {role = "assistant", content = instruction},
      {role = "user", content = text}
    },
    max_tokens = 4096,
    stream = false
  }

  local request_body = hs.json.encode(payload)

  local headers = {
    ["Content-Type"] = "application/json",
    ["Authorization"] = "Bearer " .. config.open_router_api_key,
    ["HTTP-Referer"] = "https://hammerspoon.ai",
    ["X-Title"] = "Hammerspoon Translator"
  }

  hs.http.asyncPost(config.open_router_api_url, request_body, headers, function(status, response, _)
    if status == 200 then
      local success, data = pcall(hs.json.decode, response)
      if success and data.choices and #data.choices > 0 and data.choices[1].message and data.choices[1].message.content then
        local translated = data.choices[1].message.content
        print("TR: " .. translated)
        callback(translated)
      else
        local error_message = "API call failed. Response: " .. hs.inspect(data)
        print(error_message)
        hs.alert.show(error_message)
        callback(nil)
      end
    else
      local error_message = "HTTP request failed. Status: " .. status .. ", Response: " .. response
      print(error_message)
      hs.alert.show(error_message)
      callback(nil)
    end
  end)
end
3

https://questdb.com/docs/third-party-tools/polars/ 를 보다가 ConnectorX 소개가 있어서 보니 https://sfu-db.github.io/connector-x/intro.html https://sfu-db.github.io/connector-x/intro.html#how-does-connectorx-download-the-data

쿼리로 대량 데이터 가져올 때 이걸 파티셔닝 하는 쿼리로 나누고 멀티스레드로 병렬 실행 한 뒤 모으는 식인듯. 아이디어 자체는 간단한지라 한계도 좀 명확할 것 같아서 (만일 쿼리가 서브 쿼리 등 복잡해지는 경우) 한계를 알고 써야 할 것 같긴 하다.

3

요즘 트위터에 하스켈 관련 계정들보면 Go를 가장 싫어하는 언어로 꼽는 경우를 자주 본다. C/C++/Java 등은 역사적인 맥락을 고려해 예우해주고, Python/JS 등등의 이상한 기능은 뭘 몰라서 잘못 만들었다고 이해해주는 반면, Go는 하스켈러들이 중요하게 여기는 가치들을 일부러 다 무시하고 만들기 때문에 괘씸가중치 x10 정도를 적용받는 듯하다.

10

안녕하세요, SNS 프로젝트로 Jeju.social을 만들었습니다. 제주도의 친구, 가족, 기업들이 안전하게 사진과 정보를 공유할 수 있는 온라인 커뮤니티입니다. 외국인들과도 함께요. 즐거운 시간 보내세요.

Hello, I created Jeju.social as a social media project. It is an online community where friends, family, and businesses on Jeju Island can share photos and information safely. Even for foreigners. Please enjoy.

A beach with an island in the background.
2
0
0
4

I'm currently experimenting with a poll creation feature for @botkitBotKit by Fedify :botkit:. If this experiment pans out, the feature will likely be included in the next release, BotKit 0.3.0. So far, so good. Each vote will trigger a Bot.onVote event in real-time. This could open up a lot of interesting possibilities, like a bot that uses emoji selection for one-time authentication.

4
7

https://github.com/mastodon/mastodon/pull/34964/files

마스토돈에 알고리즘 기반의 계정 팔로 추천 기능이 4.4에 들어갈 예정이라고 한다........

레일즈 기반의 Fasp(Fediverse Auxiliary Service Provider) 프로바이더 구현체를 어디선가에서는 공유했던 것 같은데, 기억이 가물가물하다.

2
4
2
1
7
4

Hackers' Pub을 사용하면서 연합우주(fediverse) 뿐만 아니라 Bluesky 사람들과도 교류하고 싶으신 분들은 Bridgy Fed라는 서비스를 사용해 보시면 좋을 것 같습니다. Hackers' Pub 계정 생성 후 2주가 지난 분들만 사용 가능하긴 한데요.[1]

@bsky.brid.gyBridgy Fed for Bluesky 계정을 팔로하시면 Bluesky 쪽에 일종의 미러링 계정이 생성되게 됩니다. 성공적으로 Bluesky 미러가 생기면 @bsky.brid.gyBridgy Fed for Bluesky 계정이 맞팔을 해 올 겁니다.

예를 들어 제 @hongminhee洪 民憙 (Hong Minhee) 계정으로 @bsky.brid.gyBridgy Fed for Bluesky 계정을 팔로하면, Bluesky 쪽에 @hongminhee.hackers.pub.ap.brid.gy라는 계정이 생기는 식입니다. 그러면 Bluesky 쪽 사람들이 해당 계정을 멘션하거나, 댓글을 달거나, 인용을 하면 Hackers' Pub에서 그게 보이게 됩니다. 서로 팔로도 할 수 있고요.


  1. Bridgy Fed 쪽의 스팸 대책 정책이라고 합니다. ↩︎

3
1
1
1
0

洪 民憙 (Hong Minhee) shared the below article:

Vibe Writing

Minyoung Jeong @kkung@hackers.pub

Hammerspoon과 OpenAI API를 활용하여 맥에서 선택한 텍스트를 즉시 번역하는 스크립트를 소개합니다. 이 스크립트는 Cmd+Shift+K 단축키를 통해 선택된 텍스트를 OpenAI의 GPT-4o 모델을 사용하여 한-영 또는 영-한 번역을 수행하고, 번역된 텍스트로 선택 영역을 자동으로 대체합니다. Accessibility API를 활용하여 텍스트 선택 및 대체 과정을 자동화했으며, OpenAI API를 호출하여 고품질 번역을 제공합니다. Vibe coding을 통해 개발하려 했으나, API 문제로 직접 구현했으며, 이 스크립트를 통해 영문 작성 시 번거로움을 줄이고 생산성을 향상시킬 수 있습니다.

Read more →
4
7

If you're building a JavaScript library and need logging, you would love LogTape hackers.pub/@hongminhee/2025/l

2