Top all-time · #9341
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.
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.
Most-linked posts?
- Stupid tricks with io_uring: a server that does zero syscalls per request2 people · 3 mentions · first linked 2021-10-01
- Tips and tricks for doing Advent of Code with Haskell2 people · 2 mentions · first linked 2022-11-30
- Playing around with pre-emptive fiber-based concurrency in Ruby2 people · 2 mentions · first linked 2021-02-07
- Ruby 3.0 and the new FiberScheduler interface2 people · 2 mentions · first linked 2020-12-28
- Binpacking SQS message batches for fun and profit2 people · 2 mentions · first linked 2020-05-14
What Hacker News says?
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”Submitted Ruby 3.0 and the new FiberScheduler interface as a story · 216 points
HN discussionIt 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”Submitted Maintaining 65k open connections in a single Ruby process as a story · 58 points
HN discussionPretty 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”Submitted First benchmarking results for a Haskell I/O event back end based on io_uring as a story · 8 points
HN discussionI 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”Submitted Parsing the Redis replication stream with attoparsec as a story · 6 points
HN discussionI 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”Submitted Stupid tricks with io_uring: a server that does zero syscalls per request as a story · 4 points
HN discussionOne 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)”Submitted Hooking into and parsing the Redis replication stream with Haskell as a story · 4 points
HN discussionI 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”Submitted The poor state of Kubernetes autoscaling as a story · 4 points
HN discussionWhat 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”Submitted Making type-safe internet bots with Haskell as a story · 3 points
HN discussionFor 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”Submitted How software is like a wooden boat, musings on maintainability as a story · 3 points
HN discussionI 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”Submitted Using Redis Lua scripts in library code as a story · 3 points
HN discussionPeople 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)”Submitted Playing around with pre-emptive fiber-based concurrency in Ruby as a story · 2 points
HN discussionI 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”Submitted Streaming HTTP Responses with Ruby and Rack as a story · 2 points
HN discussionSubmitted Haskel Threads Block as a story · 2 points
HN discussionSubmitted Binpacking SQS Batches as a story · 2 points
HN discussionSubmitted Binpacking SQS message batches for fun and profit as a story · 2 points
HN discussionSubmitted Building constant-time constant-memory programs for your Arduino with CoPilot as a story · 2 points
HN discussionSubmitted The Poor State of Kubernetes Pod Autoscaling as a story · 2 points
HN discussionSubmitted Listening to the Redis replication stream as a story · 2 points
HN discussion