[racket] Greetings!

From: John Carmack (johnc at oculus.com)
Date: Wed Mar 18 14:59:22 EDT 2015

As Hacker News has brought to your attention, I am indeed enjoying my foray into Racket land.  I have three separate efforts:

I am doing the prototyping work for a real time multi-user virtual reality service backend in Racket.  I am sort-of assuming this will be ported to something else to deploy at scale (and be maintained by others), but I'm finding it very productive in this phase, and I'm holding out some hope that it might stay in Racket.

I have a specification for a VR related file format that is headed towards JSON, but I am seriously considering changing it to s-expressions and embedding a trivial (not Racket) Scheme for scripting.

I'm teaching my son with Racket.  He has worked in a few different imperative languages prior.

I'm still a total beginner with Lisp family languages, but the fact that I was clearly more productive doing the server work (versus C++ or java) was noteworthy to me.  I'm still feeling out the exact nature of the advantages -- REPL is great, and using s-expressions for transport makes the server trivial and isn't too bad on the C++ client side, but I'm still unsure about how dynamic typing fits into it.  I do feel a bit like I am driving without a seatbelt when I run my code versus a statically typed language  (I plan on trying typed Racket).  Dr. Racket and the documentation are both great, and the overall design feels quite "sane".

I would be interested in hearing any guidance for high performance servers written in Racket.  GC delays in the tens of milliseconds will be problematic for at least part of this application, but I could split that part off into a separate server and still leave the other part in Racket if necessary.  The main benefit is currently development productivity, so obnoxious micro-architectural optimizations aren't useful, but broad strategic guidelines would be appreciated.

Posted on the users mailing list.