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

사람들이 잘 모르는 Markdown 명세 하나. CommonMark, 즉 표준 Markdown에서 URL은 자동으로 링크되지 않는다. 대부분의 Markdown 구현체들이 이를 옵션으로 지원하고, Markdown을 지원하는 웹사이트들이 이 옵션을 켜놓고 있기 때문에 모르는 사람들이 많다. CommonMark에서 URL이나 메일 주소를 링크하려면 <>로 주소를 감싸야 한다.

이를 잘 이용하면 URL의 앞 뒤에 띄어쓰기를 하지 않고도 링크를 걸 수 있다는 장점도 된다.

Hackers' Pub에 RSS 기능을 추가했습니다. 정확히는 RFC 4287, 일명 Atom 명세를 구현했습니다. RSS 디스커버리도 구현했기 때문에, Hackers' Pub 사용자의 프로필 페이지 링크를 RSS 앱에 추가하면 구독이 가능합니다. 확실한(?) 피드 링크를 알고 싶으시면 프로필 링크 뒤에 /feed.xml을 붙이시면 됩니다. 예를 들어, 제 피드 링크는 https://hackers.pub/@hongminhee/feed.xml입니다.

Linux용 RSS 앱인 Newsflash에서 Hackers' Pub의 한 사용자의 피드를 구독하여 읽는 모습

어렸을 때는 Smalltalk나 Lisp 같은 언어에 마음을 많이 빼앗겼는데 (아마도 당시 쿨한 언어였던 Python이나 Ruby의 영향…) Haskell을 접한 뒤로는 언어 취향이 아주 많이 바뀐 것 같다. 일단 동적 타입 언어를… 싫어하는 정도까진 아니지만, 쓰면서 불안함을 느끼게 됐다.

고등학교 졸업할 무렵부터 Vim을 썼으니까 한 20년 가까이 썼나? 중간에 Neovim으로 바꾸긴 했지만… 그런데 이제는 VS Code를 메인으로 쓴다. (물론 VSCodeVim을 쓰긴 함.) 뭔가를 끊임 없이 기름칠하고 조이고 하는 게 좀 귀찮아졌달까?

그런 의미에서 생각해 보면 셸을 바꾼다면 fish 정도가 괜찮을지도…

이런 식으로 한 단문을 여러 사람이 공유하면 타임라인이 도배되는 문제를 해결하긴 해야 하는데… SQL로 어떻게 효율적으로 할 수 있을진 잘 모르겠다. SQL에서 할 게 아니라 애플리케이션에서 해야 하나? 🤔

하나의 단문을 여러 사람이 공유하여 타임라인에 연달아 나오는 모습

타임라인 필터가 추가되었습니다. 총 네 종류의 필터와 팔로 추천 탭이 있는데요.

  • 연합우주: 기존에 보시던 타임라인입니다. 자신이 팔로하는 연합우주 내 모든 계정의 콘텐츠를 모아서 볼 수 있습니다.
  • Hackers' Pub: 다른 연합우주 서버 콘텐츠를 제외하고 Hackers' Pub 내의 콘텐츠만 모아서 볼 수 있습니다.
  • 공유 제외: 공유된 내용 말고, 자신이 팔로하는 계정이 직접 쓴 콘텐츠만 볼 수 있습니다.
  • 언급: 자신을 언급(멘션)한 콘텐츠만 모아서 볼 수 있습니다. 본격적인 알림 기능이 생기기 전까지는 이 필터를 활용해 주세요.
  • 팔로 추천: 관심 있을 만한 계정을 추천해 줍니다.
Hackers' Pub의 타임라인 상단. 연합우주, Hackers' Pub, 공유 제외, 언급, 팔로 추천, 이렇게 총 5개의 탭이 보인다.

메인 계정(@hongminhee洪 民憙 (Hong Minhee))에서는 몇 번인가 이미 말한 적 있지만, 나는 랩톱으로 MacBook Pro M1 Max를 쓰고 있고 사실 지금까지도 아주 마음에 들지만 딱 아쉬운 게 두 가지다:

  • 무겁다
  • 스토리지가 좁다 (512 GB)

특히 스토리지 문제가 가장 답답한데, 요즘 어느 정도 규모가 되는 Haskell이나 Rust 같은 프로젝트 빌드하고 나면 10 GB 이상 차지하는 경우는 예사이기 때문이다. 그 외에도 JavaScript 프로젝트들도 node_modules 안에 심연이 기다리고 있는 경우가 잦고…

그래서 MacBook Air를 2 TB 스토리지로 사려고 오랫동안 벼르고 있었는데, MacBook Air 시리즈의 여태까지 문제는 기본 M 시리즈 칩을 쓰기 때문에 최대 RAM 용량이 24 GB에 그쳤다는 것. 이미 10년 전부터 32 GB를 써 왔던 내게는 너무 좁기에 기본 M 시리즈 칩의 최대 RAM 용량이 커지기만을 기다려 왔고, 작년에 M4 시리즈가 처음 등장했을 때 32 GB가 가능해졌다는 걸 확인한 뒤로 MacBook Air M4만을 고대해 왔다.

그래서 지난주에 드디어 출시가 되었는데, 여전히 한국에서는 발매일 미정… 대체 언제까지 기다려야 하나 답답하기 짝이 없다.

Hackers' Pub에 만들어야 할 게 너무 많아서 우선순위 설정이 어렵다. (ADHD가 원래 이런 거 어려워 한다고 합니다.)

  • 알림 (멘션이나 DM, 댓글, 공유 같은 거 모아서 보여주는 기능)
  • 환경 설정 (UI 언어 설정 등)
  • RSS
  • 좋아요 또는 에모지 리액션 (이 두 기능을 어떻게 조화시킬지 계속 고민하고 있음)
  • 해시태그
  • 알고리즘 타임라인 (팔로하지 않아도 관심 있을 만한 콘텐츠는 타임라인에 함께 나오게)
  • 설문조사 (ActivityPub의 Question)
  • 중국어 번역 추가 (다른 것보다 행동 강령을 어떻게 번역해야 할 지 막막…)

이거 말고도 당장 생각은 안 나는데 뭔가 많음…

지금은 Hackers' Pub 타임라인을 불러올 때 매번 복잡한 조건의 질의를 날리고 있는데, 이것도 조만간 고치긴 해야할 것 같다. 데이터가 조금만 많아져도 감당이 안 될 듯. 일반적으로 타임라인 구현하는 것처럼 인박스 기반 설계로 바꿔야지. (Hollo도 처음에는 실시간 질의를 했다가 나중에 감당 안 되어서 인박스 기반 설계로 바꾼 바 있음.)

전화기를 iPhone을 쓰기 때문에 아무래도 연동 때문에 macOS도 많이 쓰긴 하지만, 그래도 요즘에는 주 운영체제로 Fedora Linux를 쓰는데, Linux든 Windows든 macOS에 비해 터미널을 활용할 때 불편한 지점 하나는 바로 클립보드 단축키에 일관성이 떨어진다는 것.

터미널에서는 아무래도 SIGINT를 발생시키기 위한 Ctrl-C와 구분하기 위해 Ctrl-Shift-C를 써야 하는데, 간혹 이를 실수해서 출력 일부를 클립보드에 복사하려다가 돌아가고 있는 프로세스를 중단시키기도 하고, Firefox 같은 데서 Ctrl-Shift-C를 눌러서 개발자 도구를 띄워버리기도 한다.

macOS의 경우에는 터미널에서는 전혀 쓰이지 않는 Command 키가 일종의 센티널 값 역할을 하기 때문에 터미널을 포함하여 어느 애플리케이션을 쓰고 있든 일관적으로 Command-C 키를 쓸 수 있다. 뭐, 내가 macOS를 너무 오래 써서 (2004년부터 썼음) 이쪽이 더 편하다고 느끼는 것 뿐일 수도 있지만…

Fresh v2.0.0-alpha.29를 Hackers' Pub 만드는 데에 미리 써보고 있는데 (이제 와서 무를 수도 없으니 써 “보다”라고 하기 좀 그렇긴 하네), _404.tsx 또는 _error.tsx 파일이 요청을 처리할 때만 _middleware.ts 파일에 정의된 미들웨어가 무시되는 현상이 있다. 아마도 Fresh v2.0.0-alpha.29의 버그인 듯한데… 🤔

아무튼 이 문제 때문에 아직도 404 Not Found 오류 페이지를 제대로 만들지 못하고 있다. 😇

노트 작성 폼을 개선했습니다. 이제 줄바꿈을 많이 하면 노트 입력창의 높이가 알아서 길어집니다. 그리고 댓글 달 때 원(原) 노트 내에 멘션된 계정들을 기본적으로 함께 멘션하도록 했습니다. 마지막으로, 자기 자신의 노트에 댓글을 달 때는 자기 자신에 대한 멘션이 포함되지 않게 했습니다.

현재 Hackers' Pub의 안 좋은 UI로 인해 많은 분들이 알아채지 못하시는 듯하여…

  • Hackers' Pub에는 X처럼 단문을 올리는 용도의 노트와 velog처럼 긴 글을 올리는 용도의 게시물이 나뉘어 있습니다.
  • 노트든 게시물이든 타임라인에 뜨는 것은 같지만, 둘의 모양이 조금 다릅니다. 둘 다 Markdown을 지원하는 것은 같습니다.
  • 노트는 첫 화면 타임라인 맨 위에 있는 UI로 작성합니다. (이건 다들 이미 아실 듯.)
  • 게시물은 우상단 본인 계정명에 마우스 커서를 가져다 대면 나오는 메뉴 속 새 게시물 항목을 누르면 작성하실 수 있습니다.
  • 게시물은 작성하던 도중 페이지를 닫더라도 임시 보관함에 자동으로 저장되므로 나중에 다시 이어서 쓸 수 있습니다.

아직 한창 만드는 중이라 여러모로 미흡합니다. 빠른 시일 내에 UI를 개선하도록 할게요!

@FediChatBot Hello from Hackers' Pub! Hackers' Pub is an ActivityPub-enabled blogging platform for software engineers. You can think of it as a Fediverse version of DEV.to. As such, I'm communicating with you through ActivityPub.

Hackers' Pub is still in development, but it is also open-sourced under the AGPL-3.0 license, so anyone can participate in the development.

What do you think of the future of Hackers' Pub? How does it compare to DEV.to, Qiita/Zenn in Japan, velog in Korea, etc.? Do you think it is competitive?

궁금해 하실 분들이 계실지 모르겠지만, Hackers' Pub은 아래의 기술로 만들어지고 있습니다.


  1. 2025년 3월 현재 Fresh 2.0은 정식 버전이 릴리스되지 않은 상태인데, 무시하고 불안정 버전을 그대로 쓰고 있습니다. Fresh 1.0 → 2.0에서 많은 게 바뀌기 때문에 굳이 Fresh 1.0을 쓰고 싶지 않았습니다. ↩︎

Hackers' Pub 쓰고 계신 분들 중에서, 자신의 Hackers' Pub 계정을 연합우주(fediverse)뿐만 아니라 Bluesky에도 노출하고 그쪽 사람들과 교류하고 싶으신 분이 있다면, 상단 검색창에 @bsky.brid.gy@bsky.brid.gy을 검색하셔서 나오는 프로필을 팔로해 보세요. 그리고 1분 정도 뒤에 Bluesky에서 본인ID.hackers.pub.ap.brid.gy로 검색하면 본인의 Hackers' Pub 계정이 Bluesky에서도 보이는 걸 확인하실 수 있을 겁니다.

Features implemented in Hackers' Pub so far: following, unfollowing, posting short-form updates, publishing long-form articles, article drafts, article editing, replies, and sharing (i.e., boosts). While there's still much more to implement, I've managed to put together the essential core functionality!