What is Hackers' Pub?

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

태국에서 알리페이가 되길래 알리페이랑 연동되는 네이버페이를 써 보려고 했으나… ㅂㄷ

그래서 알리페이랑 또 연동되는 카카오페이로 결제했음

네이버 일해라! 카카오 따위에 밀리면 되겠냐

0
0
0
0
0
0
1
0
0

Edit: uh-oh, computer people are seeing these silly little posts, so disclaimer:

please take the following set of posts light-heartedly. I like Apport quite a lot as a whole, it's just that the reporting dialog is… not entirely reliable. I do not hold this against the maintainers, I imagine a lot of users of Ubuntu don't really use this feature that much

---

It feels like I'm asking myself "do I even want to know?" a little more often recently

0

mhhong shared the below article:

Monads: Beyond Simple Analogies—Reflections on Functional Programming Paradigms

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

While exploring functional programming languages, I've been reflecting on how different communities approach similar concepts. One pattern that seems particularly fascinating is how Haskell and OCaml communities differ in their embrace of monads as an abstraction tool.

The Elegant Power of Monads in Haskell

It's common to hear monads explained through analogies to concepts like JavaScript's Promise or jQuery chains. While these comparisons provide an entry point, they might miss what makes monads truly beautiful and powerful in Haskell's ecosystem.

The real strength appears to lie in the Monad typeclass itself. This elegant abstraction allows for creating generic functions and types that work with any type that shares the monad property. This seems to offer a profound unification of concepts that might initially appear unrelated:

  • You can write code once that works across many contexts (Maybe, [], IO, State, etc.)
  • Generic functions like sequence, mapM, and others become available across all monadic types
  • The same patterns and mental models apply consistently across different computational contexts

For example, a simple conditional function like this works beautifully in any monadic context:

whenM :: Monad m => m Bool -> m () -> m ()
whenM condition action = do
  result <- condition
  if result then action else return ()

Whether dealing with potentially missing values, asynchronous operations, or state transformations, the same function can be employed without modification. There's something genuinely satisfying about this level of abstraction and reuse.

OCaml's Different Approach

Interestingly, the OCaml community seems less enthusiastic about monads as a primary abstraction tool. This might stem from several factors related to language design:

Structural Differences

OCaml lacks built-in typeclass support, relying instead on its module system and functors. While powerful in its own right, this approach might not make monad abstractions feel as natural or convenient:

(* OCaml monad implementation requires more boilerplate *)
module type MONAD = sig
  type 'a t
  val return : 'a -> 'a t
  val bind : 'a t -> ('a -> 'b t) -> 'b t
end

module OptionMonad : MONAD with type 'a t = 'a option = struct
  type 'a t = 'a option
  let return x = Some x
  let bind m f = match m with
    | None -> None
    | Some x -> f x
end

OCaml also doesn't offer syntactic sugar like Haskell's do notation, which makes monadic code in Haskell considerably more readable and expressive:

-- Haskell's elegant do notation
userInfo = do
  name <- getLine
  age <- readLn
  return (name, age)

Compared to the more verbose OCaml equivalent:

let user_info =
  get_line >>= fun name ->
  read_ln >>= fun age ->
  return (name, age)

The readability difference becomes even more pronounced in more complex monadic operations.

Philosophical Differences

Beyond syntax, the languages differ in their fundamental approach to effects:

  • Haskell is purely functional, making monads essential for managing effects in a principled way
  • OCaml permits direct side effects, often making monadic abstractions optional

This allows OCaml programmers to write more direct code when appropriate:

(* Direct style in OCaml *)
let get_user_info () =
  print_string "Name: ";
  let name = read_line () in
  print_string "Age: ";
  let age = int_of_string (read_line ()) in
  (name, age)

OCaml's approach might favor pragmatism and directness in many cases, with programmers often preferring:

  • Direct use of option and result types
  • Module-level abstractions through functors
  • Continuation-passing style when needed

While this directness can be beneficial for immediate readability, it might come at the cost of some of the elegant uniformity that Haskell's monadic approach provides.

Reflections on Language Design

These differences highlight how programming language design shapes the idioms and patterns that emerge within their communities. Neither approach is objectively superior—they represent different philosophies about abstraction, explicitness, and the role of the type system.

Haskell's approach encourages a high level of abstraction and consistency across different computational contexts, which can feel particularly satisfying when working with complex, interconnected systems. There's something intellectually pleasing about solving a problem once and having that solution generalize across many contexts.

OCaml often favors more direct solutions that might be easier to reason about locally, though potentially at the cost of less uniformity across the codebase. This approach has its own virtues, particularly for systems where immediate comprehensibility is paramount.

After working with both paradigms, I find myself drawn to the consistent abstractions that Haskell's approach provides, while still appreciating the pragmatic clarity that OCaml can offer in certain situations. The typeclasses and syntactic support in Haskell seem to unlock a particularly elegant way of structuring code that, while perhaps requiring a steeper initial learning curve, offers a uniquely satisfying programming experience.

What patterns have you noticed in how different programming language communities approach similar problems? And have you found yourself drawn to the elegant abstractions of Haskell or the pragmatic approach of OCaml?

Read more →
0
0
0
0

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

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

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

zod.kr 개발 4개월, 오픈 2개월 후기 - 서버 및 서비스편
------------------------------
국내 커뮤니티 사이트(zod.kr)를 개발하며 선택한 기술 스택과 개발 과정에 대한 글입니다.

경쟁 사이트의 큰 실책으로 예상의 10배의 트래픽이 들어오는 상황에서, 서버를 터트리고 다시 복구.
트래픽 비용 최적화를 위한 리소스 다이어트.

이하 Grok 3로 요약한 결과입니다.

---

IT 커뮤…
------------------------------
https://news.hada.io/topic?id=19746&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0
0

As of now, this spreadsheet shows who seemingly stands where on the cloture vote. Call your Democratic Senator.
If a NO, thank them and tell them to stick to their position.
If a YES, tell them you want them to rethink and vote NO.
IF undecided, tell them NOW is the time to FIGHT and urge them to vote NO.

0
0
0
0

https://news.hada.io/topic?id=19738 를 읽고 최근 생성형AI 활용 관련한 짧은 감상.

  • 매우 개인적인 의견이며 날 것의 생각입니다.
  • 샘플이 적어 편향성이 있을 수 있습니다.
  • 이미 철 지난 생각도 포함되어 있습니다.
  • 레퍼런스는 없습니다.
  1. 생성형 AI를 기대하는 사람들 중 상당수는 이를 적극적으로 의존하려는 경향이 있어 보임.
  2. 생성형 AI에 대한 기대 심리가 너무 커짐. 단순한 도구가 아니라 은탄환처럼 만능 해결책이 되기를 바라는 경우가 많음.
  3. 생성형 AI 기반 소프트웨어의 출시 속도가 기존 소프트웨어보다 훨씬 빠르게 느껴짐. 대학원 시절 자주 하던 농담이 떠오름. "딥러닝 관련 아이디어가 있으면 2주 내로 논문을 쓰지 않으면 누군가가 먼저 쓴다." 이제는 AI Agent 기반 도구 덕분에 AI 관련 SW에도 같은 법칙이 적용되는 듯함. 예를 들어, 지난주 MANUS 코드가 공개되었으니 2주 내로 유사한 AI Agent SW가 쏟아질 가능성이 큼.
  4. 이러한 빠른 변화 속에서 생성형 AI 사용과 관련한 윤리 및 에티켓에 대한 집단 논의는 아직 시작조차 되지 못한 듯함. 그래도 개발팀 내부에서는 관련 논의가 점차 이루어지는 것 같음. 개인적으로는 생성형 AI를 페어 프로그래밍 개념으로 접근하는 것이 적절하지 않을까 생각했지만, MANUS의 동작 방식을 보고 생각이 바뀌려 하고 있음.
  5. 생성형 AI의 활용 범위는 이미 빠르게 확장되고 있음. 기존에 사용되는 작업이 문서 작성, 요약, 검색 정도였다면 이제는 다양한 메이저 창작 분야로 확대되는 중. 적용이 빠른 이유는 결국 속도와 비용 때문이라고 생각함. 다만, 기계가 만든 참기름 바른 듯한 미끄러운 결과물에 대한 반발감은 여전히 존재하며, 이를 줄이기 위해 생성형 AI 결과물에 전문가의 수정과 품질 검수(QC)가 결합되고 있음.
  6. 여전히 생성형 AI 및 LLM을 사용하지 않거나 거부하는 사람들도 많음. 이들에게 자연스러운 사용 경험을 제공할 방법을 고민해야 할 듯함. 생성형 AI는 한 번 익숙해지면 벗어나기 어려운 락인 효과가 크다고 생각함.
  7. 항상 생성형 AI에 뇌를 의탁해서는 안 된다고 생각함. 지금 이 글도 먼저 초안을 작성한 후 ChatGPT에 교정을 부탁한 것임. 검수를 거치기는 하지만, 이러한 과정이 나의 사고 능력을 점차 약화시키는 것은 아닐지 고민해야 함. 그래서 hackers.pub에 뭐라도 계속 남기고자 함.
0
0
0

私も同性カップルとして
色々悩んでる事が結構ある。
二人の未来について色々考えちゃうのが
私たちの未来って結婚も育児もなしで
同居するだけなのかな、って。
韓国も同性カップルが結婚するのを
認めてくれないし、
養子の里親になるのも不可能なんだから。
いくら付き合ってて長年経っても
法律的に何の関係のないなんて
とても辛い。

まあ、まだ100日も経ってないから
余計な心配なのかも知れないですが。
私はこの人と一生付き合うかも知れない気がしますから。

0
0
0
0
0
0
0