There's nothing stopping an HTTP API from returning both HTML and JSON from the same endpoint. Just have the client send "text/html" or "application/json" in the Accept header, depending on what it needs.
DHH switched from Mac to Linux and is in the process of experimenting with his setup, but since he's famous within tech, it's getting a lot of attention. There's really nothing special about it.