Index

Show enters and exits. Hide enters and exits.

06:07:52dwaite*yawn*
13:17:34dbussinkbrixen: ping?
15:52:50khaasestill have a wrong return value issue: http://ci.rkh.im/view/All/job/BigBand/
15:52:58khaase(rbx should fail, too)
16:41:14brixendbussink: pong
16:42:24evanbrixen: morning
16:42:30brixenmorning!
16:48:37brixenrode 52 miles through some crazy hills yesterday after 3 days of aikido
16:48:47brixenI'm a mere shell of my former self :)
16:49:20evanhah
16:49:22evan:D
16:49:39brixenit was pretty fun though
16:49:51brixentook a ferry across the wilamette
16:50:06brixener willamette
16:50:10evanoh that does sound fun
16:50:31evanI... went to a bbq.
16:50:40evanand hung out with marcus at the beach.
16:50:50brixenthe road down to it was insane, drops probably 300 ft in < 0.10 mi with curves
16:50:55brixenahh that sounds fun!
16:51:02brixenhow's marcus doing?
16:51:07evanhe's good!
16:51:15evanaussie as ever.
16:51:31brixenhah
16:52:45evanhe's still in the air, back to oz as we speak
17:08:46sbryantmorning
17:15:55evanm-m-m-m-orning
17:16:12evanrad. just wrote DumpedClass and DumpedLookupTable
17:16:32evanfor digging through a heap dump like it's "real"
17:17:16sbryantoh neat
17:30:19dbussinkbrixen: g'day sir :)
17:30:49dbussinkbrixen: i was wondering why you are relying on /etc/issue in that change? because /etc/issue doesn't guarantee anything
17:30:51dbussinkit can contain total nonsense
17:31:26brixenyep it can
17:31:30brixenand if it does, oh well
17:31:58brixenit's only for some platform, like fedora 8, that are ancient and need special prebuilts
17:32:11brixennormally, it will download the generic one which will work fine
17:32:37dbussinkisn't there a /etc/redhat_release for rpm based distro's?
17:32:44dbussinklike you included /etc/debian_release
17:33:50brixenubuntu uses debian_release, which has nonsens (relatively) in it
17:34:10brixenif someone edits their etc/issue, I don't really care
17:34:15brixenthat's their problem
17:34:35dbussinkevan: cool :)
17:34:36brixenif I rely on /etc/*_release, on ubuntu I have no good info
17:34:43dbussinkah ok
17:34:56dbussinkevan: is adding the ivar support for modules relatively easy or not?
17:35:14brixendbussink: this is a failover behavior, not the common case
17:35:44evandbussink: you mean packnig wise?
17:35:49dbussinkevan: yeah?
17:35:54evanmodules can have ivars no.
17:35:55evannow.
17:36:09evani'm trying to figure out what you're refering to
17:36:50dbussinkevan: that those ivars are packed for an object that includes a certain module
17:36:59evanpretty easy.
17:37:00dbussinkevan: that datamapper stuff i was pointing at saturday i think
17:37:05evank
17:37:05evanyeah
17:37:08evanpretty easy to add.
17:37:13evani'll do it today
17:41:05evanmuhaha
17:41:18evanlets of fun shit with heap dump today!
17:41:39evanhttp://gist.github.com/447201
17:41:42evanthats the output from
17:42:00evantuple.all_instances.referers.histogram.to_text
17:43:03evans/lets/lots/
17:45:17dbussinkevan: this is everything that refers to tuple(s)?
17:45:23evanyep
17:45:36evana class breakdown of all the things that refer to tuples
17:46:22dbussinkevan: ah, cool, lot's of loaded code :)
17:46:32evanthats the kernel :)
17:50:42DefilerIdentityMap is the whole recursive array tomfoolery, right?
17:51:04evaneh?
17:51:11evanoh in Array
17:51:17evani'ts used for LoadedFeatures
17:51:19evanas I recall.
17:55:10brixenDefiler: IdentityMap is used to implement Array#| and &
17:55:31brixenand also used in LoadedFeatures to turn O(n) search into O(1)
17:57:13brixenapprox O(1) because IM maintains a spill array
18:00:08Defilerbrixen: gotcha
18:43:29evanthis is why I didn't want to write a ruby parser:
18:43:30evan"Don't be a slave to syntax. Syntax is the Maya of programming, forever blinding many of the weaker souls to the eternal light of symbolic expressions."
18:43:37evanfrom http://axisofeval.blogspot.com/2010/06/letter-to-young-pl-enthusiast.html
18:45:11DefilerI love the 'go forthe' typo. Presumably intentional
18:45:14Defileror even.. intensional.
18:45:34Defilergod, that pun actually works
18:46:02evanha
18:46:16DefilerWrite a compiler, not an interpreter, for in an interpreter, you will always find an easy way to cheat yourself out of the labyrinth, and you will never have to face the cold, hard walls of reality and triumph over the Minotaur.
18:46:16BrianRice-workhuh
18:46:20Defilergreat advice
18:46:46Defilercold walls and the ashes of those that failed before you
18:46:53Defilerare what you will find here, traveler.
18:47:20BrianRice-workmakes me want to brand Slate as "open-world Smalltalk"
18:48:54Defilerhttp://www.ccs.neu.edu/course/cs7400/lectures/lecture04.pdf
18:48:56Defilercheck out page 4
18:49:28Defilerthat page is everything I need to know about scheme, day to day
18:49:49evanhah
18:50:04Defilerin that even contrived simplistic examples are unreadable
18:50:17evani was thinking the same thing.
18:51:13Defilerhere's that code in ruby: 30
18:52:04Defileror is it 27, I can't fucking read it
18:52:15evanhah
18:54:12sbryantDoes anyone write lisp like that?!
18:54:16sbryantI sure as hell don't.
18:54:56evansomeone does.
18:54:59BrianRice-workschemers do
18:55:39BrianRice-workI seem to be about half-way compliant with these recommendations
18:55:49sbryantI mainly write emacs lisp, but as I understand it most people would just write another function.
18:56:37BrianRice-workwell, this is also toy-example code to illustrate lexical issues
18:57:58sbryantOr features?
18:59:25Defileror fissues
19:00:10sbryantrofls
19:00:30sbryantThat's an awful example.
19:00:59sbryantAnd I don't see many (if any) nested lets in the wild.
19:10:10BrianRice-workI was trying to say that it's contrived to illustrate the lexical address concept more fully :P
21:09:19bakkdooris there documentation on rubinius' vm opcodes?
21:09:37bakkdoorand the overall bytecode file format rubinius uses?
21:11:46evanbakkdoor: there had been, but it's not well maintained. we should fix that.
21:11:50evanyou can check out vm/instructions.def
21:12:00evanthere is a bunch of inline docs for each opcode there.
21:12:08evanbut the .rbc format is largely undocumented still
21:12:20evanthere are some ruby classes to read it, which are a kind of documentation.
21:12:35bakkdoorevan: hm ok. having some documentation would really help. i'm planning on porting my language to rubinius :)
21:12:52evanbakkdoor: well, you don't need to worry about the .rbc format probably
21:13:02bakkdoorevan: alright, I'll have a look.
21:13:19bakkdoorevan: but if i want to compile down to rbc I'd need it, or am i missing something?
21:13:28evanyou're missing something :D
21:13:35bakkdoorcool :)
21:13:37evanyou can write your own .rbc files
21:13:39evanbut there is no reason to.
21:14:00brixenbakkdoor: have a look at lib/compiler
21:14:03bakkdoorwhat would I do then to use rubinius?
21:14:04evanthe architecture as it stands knows how to write a tree of CompiledMethods to a .rbc file
21:14:04bakkdoorok
21:14:06brixenyou want to create CompiledMethods
21:14:11evanso you just have to build a tree of CompiledMethods
21:14:15bakkdoorah ok
21:14:28evanthen that is serialized to the .rbc
21:14:50brixenbakkdoor: vm/instructions.def is really good documentation
21:14:57evanI should write a blog post about using the bytecode generator directly
21:15:01bakkdoorbrixen: alright, thanks
21:15:09evanwhich is what you want to do
21:15:10brixenbakkdoor: the few insns that don't have docs in that file are easy to understand
21:15:24bakkdoorevan: that would be cool, yes :)
21:15:29brixenbut yes, we need more docs
21:15:55bakkdoorbrixen: yeah, in the doc/vm/ directory i found several things that seemed to be outdated
21:15:56evanit's really trivial.
21:16:09evanbakkdoor: yeah, doc/vm is pretty outdated now.
21:16:15brixenbakkdoor: yep, that dir is especially outdated
21:16:25evanwe moved faster than I wanted to keep the docs up to date.
21:16:29evansince we're now post 1.0
21:16:35evanit makes sense for me to codify a number of these things.
21:16:40slavahi evan
21:16:43brixenbakkdoor: bin/rbx compile -ABS some_ruby.rb will teach you a lot
21:16:46evandr. slava.
21:16:48bakkdoorevan: sure, no problem. i always lack behind in documentation as well..
21:17:02brixenbakkdoor: also note the -N option to compile
21:17:09brixenbakkdoor: bin/rbx compile -h
21:17:16bakkdoorbrixen: thanks!
21:17:49brixenbakkdoor: write a ruby method that computes what you'd like to compute and look at the bytecode (-B)
21:18:00bakkdoorbrixen: yeah, I'll do that
21:18:04brixenbakkdoor: also, note that script bodies and class/module bodies are just methods
21:18:06evanbakkdoor: something to remember
21:18:18brixenbakkdoor: you'll see this plaining in the -B output
21:18:25brixens/plaining/plainly/
21:18:26evanbakkdoor: the architecture of rubinius makes no assumptions about ruby syntax
21:18:34evanthe VM itself doesn't even know how to read ruby code.
21:18:42brixenyes, good point
21:18:57bakkdoorevan: yeah, i guessed it would be that way. which makes sense
21:19:02evanthe parser is in an extension
21:19:19brixensyntax is so ephemeral, just ask slava :)
21:19:23bakkdoor:)
21:19:24evan:D
21:19:38bakkdoortrue..
21:19:52brixenbakkdoor: this is going to be rad, 2 alt langs running on rbx vm by emerg lang conf
21:20:10brixenbakkdoor: we should convince slava to run some Factor on rbx :)
21:20:16evanall our brains work the same, we just choose to use different syntaxs to express the contents of them.
21:20:20evanRubinius is the same way.
21:20:45bakkdoorbrixen: i'll try to get fancy that far, but I can't promise. would rock though :)
21:20:54brixenbakkdoor: I forget, you're in pdx?
21:21:13bakkdoorbrixen: yeah, I'll be there from monday till saturday
21:21:24brixenah ok, but where are you now?
21:21:25bakkdoorbrixen: my talk's on thursday
21:21:42bakkdoorbrixen: oh, right now i'm in my apartment in osnabrück, germany :)
21:21:57brixenhah, ok, I guess meeting for coffee to work on this is a long shot :)
21:22:04brixendang
21:22:39bakkdooryeah.. too bad. but I'll be around in pdx during all of oscon, although I only have a ticket for the 2 days during emerging lang camp
21:22:45bakkdoorbut we can meet there as well ;)
21:22:57brixenyep, definitely
21:23:00brixendo you like beer?
21:23:09bakkdoorI'm german. :P
21:23:11bakkdoorof course!
21:23:12brixenhaha
21:23:13bakkdoor:D
21:23:21brixenyou'll probably be impressed by a few here
21:23:45bakkdoorcool, I always like trying out new beers
21:24:45brixenso, if you look at eg lib/compiler/compiler.rb self.compile, you can see the basic pipeline
21:24:59bakkdoorok, cool. will do
21:25:15slavaI'm looking forward to drinking pdx beer
21:25:15brixenthen look at lib/compiler/stages.rb
21:25:22brixenslava: yay!
21:26:14brixenbakkdoor: the compiler is basically: MRI parser -> internal parse tree -> callbacks -> ruby AST -> symbolic bytecode -> encoded bytecode -> .rbc
21:26:43brixenbakkdoor: lib/melbourne/processor.rb contains the methods called to convert the parse tree to the AST
21:26:53bakkdoorbrixen: yeah, that's what I also got so far after reading through some docs
21:26:58brixenok
21:27:00bakkdoorbrixen: ok thanks
21:27:14brixenthe bytecode(g) method on the AST nodes is probably where you would start
21:27:27brixensince I assume you have your own parser
21:27:29BrianRice-workslava, ping me when you'll be around
21:27:39slavafor sure
21:27:55brixenBrianRice-work: totally, we have to all hang out
21:28:10brixenis stoked something interesting is in pdx for once
21:28:17BrianRice-workI need to figure out which days to take off of work for OSCON
21:28:46BrianRice-workthat's not dominated by stinky hipster nerds... oops, did I say that aloud? ;)
21:28:52brixenhaha
21:29:01bakkdoorbrixen: yeah I've got a bison parser right now. but I actually wan't to rewrite it in fancy somehow. we'll see. maybe for now sticking to it makes most sense. we'll see
21:29:19evanbrixen: looks like we might have broken running .rbc files raw.
21:29:28bakkdoorbrixen: but it shouldn't be too hard since my grammar isn't nearly as hard to parse then ruby's ;)
21:29:30brixenevan: yep, needs to check for the ext
21:29:58brixenevan: quick fix in loader.rb to just recognize the file ends in .rbc
21:30:22brixensome ppl don't want .rbc files, some want to run them directly
21:30:27brixenthe world is so mixed up...
21:30:28brixen:)
21:30:43evan:D
21:30:49evancan i use load?
21:31:05brixenwe could make it recognize .rbc sure
21:31:07evanhm, that doesn't work either.
21:31:19brixenno, directly loading doesn't work atm
21:31:23evani'm looking for something that works now.
21:31:24brixenI didn't implement it
21:31:25evanlets see...
21:32:22slavaI'm not sure what to talk about at emerginglangs
21:32:35BrianRice-workslava, you're not alone
21:33:03BrianRice-workalthough if you want to pitch Factor, or just tell stories about it, that's probably appropriate
21:33:04bakkdoori'm not sure what not to talk about.. ^^
21:33:34slavaBrianRice-work: the problem is more that its hard to make a 20 minute talk memorable
21:33:57brixenslava: gotta focus on your *one* takeaway
21:34:04slavafish and chips?
21:34:08BrianRice-workoh, agreed. I'm surprised you have the same timeslot size that I do
21:34:14brixeneven expecting one thing to be remembered from a 45min talk is optimistic
21:34:17slavaBrianRice-work: everyone has the same timeslot
21:34:51brixenslava: evan made 10 min talk memorable, ask him for some ideas :)
21:35:05dbussinkbrixen: i haven't been surprised much in the usa, unless you count surprises that it wasn't as bad as i thought ;)
21:35:06slavawhat did you talk about evan?
21:35:09dbussinkbeer wise
21:35:10brixenthey might include a band and a suit...
21:35:20BrianRice-workso, it's like a set of lightning talks. hm
21:35:22brixendbussink: haha, you kid
21:35:39brixendbussink: how much beer did you have in pdx?
21:36:44brixendbussink: you definitely have to go to the right places, there's plenty of places to get PBR even in pdx
21:36:45dbussinkbrixen: i've a few actually
21:37:07dbussinkbrixen: you should give me a tour then whenever i'm there again :)
21:37:20brixendbussink: definitely! :)
21:38:23evanbakkdoor: http://gist.github.com/447537
21:38:40evanwe need to cleanup the loader situation, but thats easy.
21:38:42dbussinkbrixen: but i'm going to get some sleep :)
21:39:23brixendbussink: good plan, night! :)
21:39:44bakkdoorevan: cool, thanks
21:40:10evanbakkdoor: check out lib/compiler/generator.rb for all the methods on g. that you can use to generate bytecode
21:40:32bakkdoorevan: alright :)
21:41:07evanthats the exact same API that our normal compiler uses
21:41:19evanso you can check out lib/compiler/ast/* for examples of driving g
21:43:50slavasbryant's hostname is "slavasaur.com"?
21:47:47bakkdoorevan: i get an error when running the loader.rb file: http://gist.github.com/447553
21:48:02evanyou have to pass it a file to load
21:48:09evanthe file that generator.rb outputs
21:48:15evanrbx loader.rb raw.rbc
21:48:17evanfor instance.
21:49:16bakkdoorah ok. thought that was what the "script.file_path = "output/raw.rbc"" line was for in loader.rb
21:49:24evannope
21:50:15bakkdoorok thanks :)
22:44:43evantmm1: you around?
22:46:11tmm1sup
22:46:28evandid you do the web site of memprof.com?
22:46:55tmm1yea
22:47:21evanwould you mind if a borrowed some of the concepts?
22:47:28evani'm working on a heap dump viewer
22:47:38evanon the right expanding panels idea is quite nice for doing that
22:48:15tmm1yea that works well, feel free to copy. i copied that mostly from how the iphone navigation controller
22:48:34evanok, thanks a bunch
22:48:45evani'm a rookie web dev at this point
23:09:11tarcierilol crazy
23:54:21brixenmeh, I have a cold
23:54:56evan:(
23:54:58brixenafter a short nap, my room is spinning
23:55:06brixenso, I'm going to have another
23:55:44brixenevan: how's the heap dump viewer going?
23:55:51evanok
23:55:52brixencan't wait to play with it
23:55:54brixensweet
23:55:56evanmy rails knowledge blows.
23:55:58evanthough.
23:56:10brixenso does most people's :)
23:59:13evan:D