Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #9341

B

Blog of WJWH

Personal blog · wjwh.eu · on HN as WJWprogrammingsystems

Blog of WJWH is a personal blog at wjwh.eu about programming and systems. Since 2018, 8 different Hacker News readers have linked it 39 times, most often “Stupid tricks with io_uring: a server that does zero syscalls per request”. The last post was in 2022, but the archive is still widely read.

Visit the blog
39mentions?
8HN people?
2018–2025first – last linked?
Links on Hacker News per year · peak 17 in 2020

Too few sampled comments (2) to say how often HN recommends it.?

Why HN links it

HN readers link this blog for posts on Haskell and io_uring integration. One commenter points to a post on an io_uring manager for the GHC runtime as related in-progress work.

Summarised by Claude from a sample of 2 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

The author on HN?

WJW · 13,853 karma · member since 2015

Freelance Ruby scaling consultant. Hit me up if you need help with Ruby or scaling! https://wjwh.eu

From their public HN profile, which links to this site.

Most-linked posts?

  1. Stupid tricks with io_uring: a server that does zero syscalls per request
    2 people · 3 mentions · first linked 2021-10-01
  2. Tips and tricks for doing Advent of Code with Haskell
    2 people · 2 mentions · first linked 2022-11-30
  3. Playing around with pre-emptive fiber-based concurrency in Ruby
    2 people · 2 mentions · first linked 2021-02-07
  4. Ruby 3.0 and the new FiberScheduler interface
    2 people · 2 mentions · first linked 2020-12-28
  5. Binpacking SQS message batches for fun and profit
    2 people · 2 mentions · first linked 2020-05-14

What Hacker News says?

  1. GHC RTS integration already well in the works too :) http://wjwh.eu/posts/2020-07-26-haskell-iouring-manager.html

    Comment linking /posts/2020-07-26-haskell-iouring-manager.html

    on “How io_uring and eBPF Will Revolutionize Programming in Linux”
  2. Submitted Ruby 3.0 and the new FiberScheduler interface as a story · 216 points

    HN discussion
  3. It is indeed a lot, but since Whatsapp manages to get 10 million connections per box [1], 100k seems doable even without insane wizardry. A few years back, I wrote an article on my blog at https://wjwh.eu/posts/2018-10-29-double-hijack.html about keeping 65k connections open in a single Ruby process and that was a hackathon project written in 4 hours. https://medium.com/codingurukul/whatsapp-engineering-inside-...

    Comment linking /posts/2018-10-29-double-hijack.html

    on “Freenode ops take control of 700 channels”
  4. Submitted Maintaining 65k open connections in a single Ruby process as a story · 58 points

    HN discussion
  5. Pretty cool! Adding kTLS is definitely an improvement. I made an actually zero-syscall per request server a few years ago (and blogged about it at https://wjwh.eu/posts/2021-10-01-no-syscall-server-iouring.h... ) but as TFA notes it comes at a heavy cost of constantly busy-looping. io_uring is very cool tech though and has been progressing at an impressive pace the last few years.

    Comment linking /posts/2021-10-01-no-syscall-server-iouring.html

    on “Io_uring, kTLS and Rust for zero syscall HTTPS server”
  6. Submitted First benchmarking results for a Haskell I/O event back end based on io_uring as a story · 8 points

    HN discussion
  7. I made a post some time back about maintaining 64k connections in a Ruby process a while back: https://www.wjwh.eu/posts/2018-10-29-double-hijack.html . It only stopped at 64k because I could not be bothered to rig up multiple IPs so it eventually ran out of ports. Just having a lot of connections that do trivial stuff is not very difficult. It becomes way more interesting when all of those connections need to acces…

    Comment linking /posts/2018-10-29-double-hijack.html

    on “Old box, dumb code, few thousand connections, no big deal”
  8. Submitted Parsing the Redis replication stream with attoparsec as a story · 6 points

    HN discussion
  9. I wrote a blog post some time ago on writing a small URL shortener in Haskell at http://www.wjwh.eu/posts/2019-11-01-haskell-shorturls.html . Still a toy example, but more "real world" than recursion exercises :)

    Comment linking /posts/2019-11-01-haskell-shorturls.html

    on “Real World Haskell”
  10. Submitted Stupid tricks with io_uring: a server that does zero syscalls per request as a story · 4 points

    HN discussion
  11. One thing I know of is the CoPilot language/library/thingy from NASA (no relation to Githubs copilot), which can takes in code in a Haskell DSL and outputs code that is guaranteed to run in constant memory and uses an equal number of cycles each loop. See it here: https://copilot-language.github.io/ Also if you ever find yourself needing to write hard real-time code for your arduino, check out my blog post about the…

    Comment linking /posts/2020-01-30-arduino-copilot.html

    on “Lisp can be “hard” real time [pdf] (2000)”
  12. Submitted Hooking into and parsing the Redis replication stream with Haskell as a story · 4 points

    HN discussion
  13. I post this every time this comes by: if you ever find yourself needing to (or more realistically, wanting to) write your own hard realtime programs but don't have a NASA-grade drone to play with, check out the arduino-copilot library by Joey Hess. I wrote a blog post about it at https://wjwh.eu/posts/2020-01-30-arduino-copilot.html :)

    Comment linking /posts/2020-01-30-arduino-copilot.html

    on “Copilot: Realtime programming language and runtime verification framework”
  14. Submitted The poor state of Kubernetes autoscaling as a story · 4 points

    HN discussion
  15. What you'd want to google is "parser combinators" or "parsec tutorial" I think. The idea is that parsers are "just" functions and can therefore be combined with higher order functions in various ways to produce "bigger" parsers. For example, an element in the Redis replication stream can be either an Array, a BulkString, an Integer, an Error or a SimpleString and you can express that with the `choice` function: pars…

    Comment linking /posts/2019-01-01-parsing-infinite-streams.html

    on “Why the developers who use Rust love it so much”
  16. Submitted Making type-safe internet bots with Haskell as a story · 3 points

    HN discussion
  17. For those without a NASA-level drone at home that still want to play around with generating hard-realtime C code, there is the excellent arduino-copilot package ( https://hackage.haskell.org/package/arduino-copilot ) that does exactly what the name implies. I wrote a blog post about it at https://wjwh.eu/posts/2020-01-30-arduino-copilot.html .

    Comment linking /posts/2020-01-30-arduino-copilot.html

    on “NASA Ogma: generate hard-realtime C runtime monitoring applications”
  18. Submitted How software is like a wooden boat, musings on maintainability as a story · 3 points

    HN discussion
  19. I did 65k concurrent requests back in 2018 on a single core in Ruby 2.4/2.5 or so (see https://wjwh.eu/posts/2018-10-29-double-hijack.html ) as long as each request doesn't do much. Having 6k open connections is not that much. Did you actually mean request/seq? EDIT: I was curious on how many req/s modern Ruby would actually do for simple hello world, so I coded up the smallest Hello world example from https://githu…

    Comment linking /posts/2018-10-29-double-hijack.html

    on “Benchmarking Ruby 2.6 to 3.2”
  20. Submitted Using Redis Lua scripts in library code as a story · 3 points

    HN discussion
  21. People care about performance a lot, especially when writing evented I/O. The explicitness is pretty useful at preventing unexpected performance cliffs. One of the main pieces of feedback I heard about green threads is that they are "just as confusing" as threads. Developers tend to view preemptive multitasking as a difficult-to-manage hazard. Non-explicit async is not technically preemptive, but, most developers wo…

    Comment linking /posts/2020-12-28-ruby-fiber-scheduler-c-extension.html

    on “Some thoughts on asynchronous API design in a post-async/await world (2016)”
  22. Submitted Playing around with pre-emptive fiber-based concurrency in Ruby as a story · 2 points

    HN discussion
  23. I enjoy programming in conduits but somehow never come across a big enough problem to really make use of them. They encapsulate a whole class of problems in a very comprehensible and modular way. The higher order conduits like `scanlC` and friends also enable more complicated ideas than just the usual `map` and `reduce` variants you usually see. It's quite straightforward to model all sorts of chat-/websocket-/tradi…

    Comment linking /posts/2022-05-06-haskell-conduit-bots.html

    on “Parallel streaming in Haskell: Part 1 – Fast, efficient, and fun”
  24. Submitted Streaming HTTP Responses with Ruby and Rack as a story · 2 points

    HN discussion
  25. Submitted Haskel Threads Block as a story · 2 points

    HN discussion
  26. Submitted Binpacking SQS Batches as a story · 2 points

    HN discussion
  27. Submitted Binpacking SQS message batches for fun and profit as a story · 2 points

    HN discussion
  28. Submitted Building constant-time constant-memory programs for your Arduino with CoPilot as a story · 2 points

    HN discussion
  29. Submitted The Poor State of Kubernetes Pod Autoscaling as a story · 2 points

    HN discussion
  30. Submitted Listening to the Redis replication stream as a story · 2 points

    HN discussion

Search all of HN for wjwh.eu

Linked by the same people?