"Being perfectly honest, your obfuscator has made me feel like  
writing RubyCocoa apps is a commercially viable business, whereas  
before I had my doubts." - Aidan Rogers

- ZenObfuscate
     - What is it?
         - For when you really really have to ship a binary.
         - Lets you: Write in ruby, and ship a binary.
         - ZenObfuscate is a translator for a fairly large subset of
           ruby that converts your pure ruby code into a dynamically
           loadable binary, protecting your intellectual property(*).
     - How does it work?
           zenobfuscate has a commandline interface that takes the
           specified ruby files and outputs a dynamically loadable
           binary (.bundle on osx, .so on unix/linux and .dll or
           windows).
         - TODO: diagram
         - e.g., ./bin/zenobfuscate -o mylibrary lib/blah.rb; ruby
           -rmylibrary -e 'use_my_library'
         - Built on a solid foundation: RubyInline and ParseTree. Long
           standing open source packages for ruby.
     - When is it available?
           Available nowish on an individual basis
     - How much does it cost and what is its licensing?
           ZenObfuscate costs $2500 for a site license or is
           individually negotiable. ZenObfuscate is a commercial product
           produced wholly by Eric Hodel and Ryan Davis and is not for
           redistribution. All rights are reserved, etc., etc. Binaries
           produced from ZenObfuscate have no restrictions of any kind
           (except determined by their authors).
     - Requirements
           ruby 1.8.x, ruby2c, parse_tree, rubyinline (all available as
           gems)
           available on darwin ppc, darwin intel, freebsd x86, freebsd
           amd/64bit, and linux x86 (with coaxing).
     - Known Limitations
           There are issues with what the obfuscator can translate to C
           and as a result you may need to modify your code in order to
           translate it. Usually this is a pretty straightforward and
           simple task. We do a good job of translating static ruby to
           its equivalent C, but not all ruby has an equivalent in C.
         - Only translates methods in classes and modules, not
           freestanding code.
         - Explicit returns are required in all methods.
         - Temporary: Conditional logic (including ?:) may not be on the
           right hand side of an assignment.
         - Temporaryish: Exception handling and generic block closures
           currently don't translate.
         - Some expressions in ruby we don't currently do, but could
           upon request, where some other ruby expressions will never
           translate.

--
I know that you believe you understand what you think I said but,
I'm not sure you realize that what you heard is not what I meant.