I had Claude port my Safari Screensaver to Roc today:
Click here to watch it run: http://143.244.172.148:9201/
The journey is about two minutes, then it starts over from the beginning.
![]()
https://github.com/showell/roc-apps/tree/master/safari/roc
The program has an interesting lineage. I originally had Claude write it in TypeScript, and that involved all the creative work on my part. Then I had Claude port it to Zig. Then I had Claude port it to Codex, which is an experimental language written by Damian Tedrow. (The name "codex" is not related to the LLM.) Then I had Claude write a Rust program to automatically translate the codex to Roc.
So this is code-generated Roc from agent-written code that was already twice ported. :)
It's not entirely Roc. It's always had a very thin JS layer to serve up the wasm (whether from zig or codex or roc): https://github.com/showell/roc-apps/blob/master/safari/web/blitter.js
Right now it's only served up on the web. My zig version produces an actual screensaver in Windows. So, the next step is to figure out how to make a Windows screensaver platform in Roc.
Here is Claude's account of the afternoon: http://143.244.172.148:9100/notes/an-afternoon-safari-to-roc.md
This is now live at https://roc.lynrummy.com/safari/
This project was very pleasant in Roc. It was code-generated from another functional language called Codex , from the Cobblestone project.
@Luke Boswell There's also a roc-ray version of my screensaver:
For the post:
New release: https://github.com/showell/roc-apps/releases/tag/safari-roc-ray-2026-09-15b (adds gradients and anti-aliasing)
Last updated: Sep 24 2026 at 15:59 UTC