Index

Show enters and exits. Hide enters and exits.

06:53:39dbussinkgood morning :)
06:53:45dbussinkto break the silence ;)
14:05:47flujanhi guys. I am looking for a alternative to create binaries from my ruby scripts.
14:05:52flujanrubinius can help me?
14:11:10dbussinkflujan: not really, we had an archive format, but that has been neglected for a while
14:11:25dbussinkflujan: and it's not native code that is generated anyway
14:11:32dbussinkif that is specifically what you're interested in
14:12:29flujandbussink: I am insterested in obsfuscate my ruby code. I wanna make it hard to other people read and copy my code.
14:12:59flujanI am installing my system on many customers... I fear that they will simple copy my app in other machines.
14:13:40flujanI created some "anti-piracy" policies... But one can easily read it inside a ruby code. Creating binaries will make it difficult. :)
14:14:25cremesflujan: the closest you can probably get is to use JRuby and use jrubyc to compile all of your ruby code to java bytecode
14:14:36cremescheck out the wiki at jruby.org
14:15:15flujancremes: hate java... lol
14:15:41cremesflujan: don't be silly; using JRuby doesn't mean you are using java; you are using the JVM which runs LOTS of languages
14:15:55flujancremes: do you have a roadmap to add this feature to rubinius? I just find this project amazing .
14:16:54cremesi'm not aware of this feature being on the roadmap yet
14:17:02cremesi think there are a few higher priorities coming first
14:17:21cremessuch as 1.9 syntax, remove GIL, better C extension compatibility, improved perf, etc
14:18:14flujanso rubinius is about bringing more performance, running on machine code the ruby code. Another interpreter right?
14:19:08dbussinkrubinius is an interpreter, but it also has a jit
14:20:02dbussinkflujan: but i'd suggest going the jruby way then too
14:20:25flujandbussink: ok, thanks for the advice. I will check the jrubyc. :)
14:21:39cremesflujan: use the right tool for the job; right now what you want to do is easily handled by jruby
14:21:54dbussinkbut then you still need to obfuscate the compiled class files
14:22:36flujandbussink: yeap... this is the problem... :( I would love to have a ruby tool that just create binaries... the power of ruby the performance and obfuscation of C. :D
14:23:50dbussinknah, the performance would be worse that what jruby / rubinius can obtain by using a jit
14:24:08dbussinkbecause runtime knowledge allows for much more aggressive optimizations
14:24:22dbussinkcompiling to native code is not a holy performance grail
14:25:42Zoxcbut it is!
14:25:54cremesdbussink: i don't think there is any way to turn the jruby class files back into ruby, only into java which wouldn't be very helpful
14:26:59dbussinkcremes: well, it depends on what a person would want to do with it
14:27:23dbussinkand obfuscation won't hold back people who really want to do something
14:27:32cremesof course not
14:27:53cremesi think flujan wanted to prevent easy copying between machines; obfuscation doesn't help with that at all
14:28:06cremesnone of the ruby runtimes can prevent copying
14:30:35flujancremes: but I created some policies that ensure that one script will run and only run on that machine... I am using the UUID of the machine. ;)
14:31:07dbussinkwell, you can copy that of course :P
14:33:10flujandbussink: nothing is perfect lol. :)
14:33:37dbussinktrue, but it seems an easy circumvention that makes me wonder whether obfuscation is worth it
14:33:49dbussinksince this is the easiest way to work around it, even without obfuscation
14:34:28cremesflujan: make your customer understand your licensing terms; give them the option of a "site license" for a bit more money
14:34:37cremesthen you don't need to care about how much they copy the code around
14:46:06flujancremes: yeap. I will think about it... thanks again guys.
15:50:06brixenhello everybody!
15:50:24brixencremes: the obfuscation of java class files is no greater than .rbc files
15:50:55brixenand it would be trivial to write an encryption layer on top of the marshalling code
15:51:15brixenthat uses a specific app key
15:51:26brixenyou'd need to compile the app for the that key
15:51:40brixenbut pragprog build you a custom pdf, so that's certainly doable
15:51:56cremesinteresting thought
15:52:16brixenalso, if someone wanted to use .rba files to distribute rbx apps, it'd be trivial to hook that back up
15:52:25cremesis there a decompiler that takes rbc and produces ruby from it?
15:52:33brixenit could be done all in ruby without even changing the vm
15:52:43brixenthere is no decompiler now
15:53:03brixenbut writing one isn't hard, just like it's not hard to get java back from a class file
15:53:48cremesright, but the java you get back from a ruby class file can't be turned back into ruby; i've looked and it is *ugly* code
15:54:20cremesregardless, the OP had (IMHO) an odd requirement
15:54:41cremesi wasn't aware that layering encryption on top of these things would be simple
15:54:48brixenah yes, I see your point
15:55:10brixenthe additional factor of converting ruby to java is a higher obfuscation index
15:55:31cremeson another topic, i saw you dropped some stats on the new #pack code; looks good so far!
15:55:38brixenyeah!
15:55:48brixena couple hurdles but I'll start adding cases today
15:55:53cremesis that your main focus this week?
15:56:03brixenneed to chat with evan about the need to call Ruby methods from the C++ code
15:56:10brixenwhich has GC implications
15:56:18evanallo.
15:56:21brixenyeah, pretty much pack/unpack this week
15:56:23brixenevan!
15:56:40cremesexcellent...
15:56:55brixenevan: so, I need to call eg #to_int from the pack code
15:57:04brixenthe only reference I should have is the array itself
15:57:25brixensince the actual objects would be processed and not stay on the C stack
15:58:06evanok
15:58:09evanthen it's easy
15:58:13evanjust use OnStack<>
15:58:17brixencool
15:58:28brixenI just wanted to make sure you were ok with the approach
15:58:35evanyou can't pass this to OnStack though
15:58:39brixenI can't think of any other way to deal with coercion
15:58:59evanso you have to assign it to a local called self, then use self instead of this.
15:59:00brixenyou mean 'this' right?
15:59:03brixenyeah
15:59:07brixenlike the code we looked at
15:59:10evanyeah, 'this'
15:59:12brixenk
15:59:14evanyep
15:59:33brixeninitial results look really good
15:59:43brixenall the C specs pass except the ones that need coercion
16:00:19brixenbtw, I'm not implementing crazy ass shit like [1,2,3].pack("C*_*-*!-*_")
16:00:40brixenbasically, I'm not implementing anything that does not have an effect on the output
16:01:47brixenevan: I saw shane yesterday
16:02:05brixenrode out to sauvie island where they were picking some berries
16:02:07brixenwas fun
16:03:42evanoh nice!
16:04:03evanbrixen: wtf does that crazy sequence do?
16:04:38brixenC*
16:05:03evanO_o
16:05:06brixenand C*** => C** => C* etc
16:05:08evanis _* a noop?
16:05:17brixenmri is just such ad hoc'ery
16:05:44brixenfor some reason, the parsing after a * just consumes stuff up to a point
16:06:01brixeneg, the _ can follow a * when it should not
16:06:09brixenand a - seems to be a no-op
16:08:14evanug.
16:08:54brixenyeah, this will just be the strict, operational subset of the language that MRI accepts
16:12:44evansounds good.
16:41:36cremesbrixen: is this pack code on a public branch yet or just in one of your private branches? i'm always interested in ragel grammars.
16:42:09brixencremes: http://github.com/brixen/rapa
16:42:30brixenbut that's just getting started
18:47:46evandbussink: Go Holland!
18:49:25slavahi evan
18:50:06evanhi hi
19:42:21Enlback
19:42:44Enlback
19:50:45pcapriottihi all, is this patch ok? http://pastie.org/1033210
20:08:56brixenpcapriotti: that should be ok
20:09:07brixenpcapriotti: best thing to do with a patch is put it in a ticket
20:09:18brixenso it's not overlooked
20:10:46pcapriottibrixen: ok
20:11:13pcapriottibrixen: want me to do it for this one?
20:13:01brixenpcapriotti: sure, I'm buried in other stuff atm
20:20:07evanit's going to be crazy in amsterdam tonight.
20:20:11evanie, now.
20:24:57evandbussink: I hope you're out drinking!
22:35:58brixen|--|: why not |-*-| ? :)
22:36:28evanhe's not yet a tie fighter I guess.
22:36:31brixenheh
22:36:36brixenthat's what I was wondering
22:36:44brixenahh
22:36:47brixeninteresting
22:42:24evanI just put the sort of 3rd coat of pant on the wall we started yesterday
22:43:28brixenwhat color?
22:43:35evansilver skate
22:43:40brixennice
22:43:46evani'll show ya
22:43:53brixenyou should have a black board wall :)
22:44:02brixenloves chalk and black board
22:44:33evanhttp://www.dunnedwards.com/retail/content.asp?Category=0&Content=156&colorid=DE+5801
22:44:40evanwe've got a white board wall instead :)
22:44:56brixencool!
22:46:13evanwe're going to get some stensil and paint #7590A1 somewher on it too
22:46:42evan:)
22:46:55brixennice
22:48:05evangotta my webinar
22:48:10evanneed to work on it
22:48:15brixenoh yeah!
22:48:21brixenthat's tomorrow huh
22:49:06brixenhm pdx.rb tonight
22:49:11brixenman, they really sneak up on me
22:49:21brixenbeing the first tues of every month and all
22:49:43evanhows pack coming?
22:50:17brixenall the C specs pass!
22:50:27brixenincluding the coercion ones
22:50:39brixenstarting to generalize the grammar a bit now
22:50:48brixenlike the 5 different interpretations of *
22:50:51brixen<roll eyes>
22:52:39evanhah
22:52:40evanyeah
22:54:54brixenhmm, someone wants to write specs for SCRIPT_LINES__
22:55:02brixenshow of hands who knows what that is
22:58:26brixenok, I've registered for the webinar
22:58:49brixenand I'm envious that my glam shot is nowhere near as glamorous :)
22:59:44evanhah
22:59:53evani know what SCRIPT_LINES__ is.
23:00:01brixenyeah
23:00:05evanit's so long on the list of things to support i'll never get to it.
23:00:11evans/long/low
23:00:12brixenexactly
23:00:18evanman, i need my afternoon coffee
23:19:28goyox86hi all!
23:19:48goyox86evan: what time is your webinar?
23:20:07evan10am
23:20:09evanpacific time.
23:20:40goyox86evan: is there a link for registering :]?
23:20:55evanon engineyard.com
23:22:16goyox86oh! sorry for that stupid question, registering stage: started. :]
23:25:11goyox86registered! :]
23:25:18evan:D
23:25:32evana lot of it is going to be just like my railsconf talk
23:51:34jrwHey guys, I just downloaded the git repo and ran this command: bin/mspec tag --list incomplete spec/core
23:51:34jrw. I'm getting the error bin/rbx. Any ideas of whats wrong?
23:52:18brixenjrw: did you build?
23:52:27brixenand could you gist or pastie the error?
23:52:48jrwah.. didn't build.. I'll do that now. Thanks!
23:53:06evanyeah, you have to build first :)
23:53:09brixensee README or doc/getting_started.txt