Feb 15 00:58:36 camden says “hmm.... I seem to be suffering from method bloat.” Feb 15 00:59:18 glutinous vanishes, with the image of the words “Read error: 110 (Connection timed out)” trailing after. Feb 15 00:59:45 ruabag enters Feb 15 00:59:55 dagbrown says “I seem to be suffering from code organization paralysis.” Feb 15 01:00:19 dagbrown says “"Auggh, should this be in a class? But I don't make an *object*. But there're all these methods just lying around! Help!"” Feb 15 01:01:12 eule says “dagbrown> A module ?” Feb 15 01:02:18 grand-popo says “if i cant include anything then dont make a module” Feb 15 01:02:59 dagbrown says “eule: See what grand-popo said. Hence, code paralysis.” Feb 15 01:03:19 eule says “dagbrown, grand-popo> I did not understand that I am afraid :(” Feb 15 01:04:10 dagbrown says “eule: Modules are for including. If there's nothing to include, then don't make a module.” Feb 15 01:04:23 Aredridel says “Heh.” Feb 15 01:04:27 Aredridel says “Right. ” Feb 15 01:04:36 eule says “dagbrown> I don't quite agree there, why is Math there ?” Feb 15 01:04:51 Aredridel says “include Math !” Feb 15 01:04:52 eule says “dagbrown> Math.tan etc.. that's not for include neccessarily...” Feb 15 01:04:54 camden says “dagbrown: yeah, I ended up packing all of my programs fuctions in a huge method innapropriately named "test"” Feb 15 01:05:25 eule says “Aredridel> I know you can do that, my point is that you don't have to and that often you don't.” Feb 15 01:05:54 Aredridel nods. Feb 15 01:06:09 dagbrown says “eule: Yes, but most people who use math functions expect 'em to work like math functions. tan(x) instead of Math.tan(x).” Feb 15 01:06:12 dagbrown says “So you include Math.” Feb 15 01:06:28 eule says “dagbrown> But modules are your best bet for functional code.” Feb 15 01:06:28 Aredridel says “pardon me while I drive a pragmatic track on this one: Most programs use math infrequently; it makes sense to have the bother of Math.foo” Feb 15 01:06:43 Zifro enters Feb 15 01:06:45 Aredridel says “A few use it really heavily. So include Math and be done. A perfect balance.” Feb 15 01:07:07 zem says “what *is* namespace pollution, though?” Feb 15 01:07:25 Aredridel says “namespace pollution is error in choosing between 'handy' and 'pristine'” Feb 15 01:07:39 Aredridel says “And "unusably academic" is the opposite error.” Feb 15 01:07:42 dagbrown says “Cluttering up inappropriate namespaces with inappropriate things. ” Feb 15 01:07:53 zem says “no, i mean apart from the mental twinge distaste for all those methods in there, when does it ever affect the programmer?” Feb 15 01:07:57 dagbrown says “Filling up "kernel" with tons of functions which all do interrelated things, for example.” Feb 15 01:08:16 zem says “i've never had an actual problem with my namespace being polluted, though i share the distaste for doingso” Feb 15 01:08:18 otim says “zem: Yes, confusing and you can get conflicts. (Two bits of code define a method by the same name in the same namespace, kaboom.)” Feb 15 01:08:27 zem says “yeah, that's the theory” Feb 15 01:08:28 dagbrown says “zem: Yes, when someone else happens to choose a function name the same as one of yours, overwriting yours (or you step on his), and suddenly nobody's code works any more.” Feb 15 01:08:45 zem says “what i'm saying is that i've very seldom seen it happen” Feb 15 01:08:46 eule says “zem, that happens in LARGE projects (large as in LaTeX) ;)” Feb 15 01:08:51 zem says “yeah :)” Feb 15 01:08:51 Aredridel says “zem: I prefer to walk the line ... some things added, some not.” Feb 15 01:08:53 zem says “that i'll buy” Feb 15 01:09:11 zem says “but as you said, include is your friend” Feb 15 01:09:16 Aredridel says “Some libraries lend themselves to a few key hooks in, say, Enumerable, and they become amazingly nice.” Feb 15 01:09:22 eule says “zem, When for example you are a large group of people and everyone has a preference for foo and bar. :(” Feb 15 01:09:32 zem grins Feb 15 01:09:37 Aredridel says “A few would drive everyone batty: imagine Amrita::Template being called just 'Template' — that's namespace pollution.” Feb 15 01:09:47 eule prefers foo and bar, too. Feb 15 01:09:49 zem says “good example” Feb 15 01:10:14 dagbrown says “To say nothing of REXML::Document” Feb 15 01:10:14 zem says “everyone likes foo and bar :)” Feb 15 01:10:31 zem says “and baz is not too bad, but too many quux...” Feb 15 01:11:05 zem says “actually, what i'm waiting for is sandboxed namespaces” Feb 15 01:11:18 zem says “would be brilliant to extend array within my class only” Feb 15 01:11:37 eule says “I second that” Feb 15 01:11:53 eule says “and the class < I think the selector namespaces (ASPECTS!) are really the way to go.” Feb 15 01:14:23 Aredridel says “Nothing worse than having to disambiguate every single identifier.” Feb 15 01:14:30 dagbrown says “I think that a namespace is what I actually want to solve my problem.” Feb 15 01:14:36 eule says “dagbrown> And what is wrong with prototypes ;) ?” Feb 15 01:14:53 zem says “you could mix it in” Feb 15 01:14:56 zem says “e.g.” Feb 15 01:15:09 zem says “class MyClass; end” Feb 15 01:15:11 dagbrown says “eule: Nothing if you're programming in JavaScript. But I notice that you spend a lot of time hunting around for where a method is defined when you're hacking in JavaScript.” Feb 15 01:15:24 zem says “within Myclass; class ” Feb 15 01:15:24 zem says “Array; ....; end; end” Feb 15 01:15:38 Aredridel says “Yeah ... selector namespaces, especially malleable ones, rather than class namespaces, would rock.” Feb 15 01:15:44 Aredridel says “And implemented as aspects...” Feb 15 01:15:52 zem says “all i want is the within keyword or equivalent, to keep the array mods from leaking” Feb 15 01:16:00 Aredridel says “I guess I'd rather see a general solution like aspects, rather than one that -just- solves method namespacing.” Feb 15 01:16:13 Aredridel says “Problem is defining "Within"” Feb 15 01:16:26 Aredridel says “With a simple and static class heirarchy, it's easy.” Feb 15 01:16:38 zem says “hm” Feb 15 01:16:45 Aredridel says “But with mixins and dynamic methods... the number of things needing disambiguation ends up being very high.” Feb 15 01:16:46 eule says “Aredridel> Aspects could probably be constructed from that...” Feb 15 01:16:48 zem says “okay, maybe orthogonal would be better” Feb 15 01:17:05 zem says “namespace MySpace; class Array; etc; end; end” Feb 15 01:17:11 Aredridel says “eule: I'm thinking the other way around. Dynamically redefine things in aspects. And switch aspects in different parts of the code.” Feb 15 01:17:19 zem says “class MyClass; using Myspace; ....; end #using; end #class” Feb 15 01:17:27 Aredridel says “class Array; end” Feb 15 01:17:39 zem says “not quite as complicated as aspects” Feb 15 01:17:52 Aredridel says “aspect Local < Array; def []; "Weird"; end; end” Feb 15 01:18:08 eule says “Aredridel> I think that is the way to go, I just wanted to observe that things don't exclude each other.” Feb 15 01:18:21 Aredridel says “def mycode(a); Local.wrap(a) do .... end; end” Feb 15 01:18:28 zem says “hm” Feb 15 01:18:41 Aredridel says “Or prettier syntax. That was really off-the-cuff.” Feb 15 01:18:43 eule says “Aredridel> Like the syntax.” Feb 15 01:19:07 eule says “I think all we need there” Feb 15 01:19:17 Aredridel says “So you basically have two orthagonal things defining methods, with a few keywords to tie the two parts together.” Feb 15 01:19:18 eule says “is a really good way of uninstalling methods that we have installed ;)” Feb 15 01:19:20 iblechbot enters Feb 15 01:19:28 Aredridel says “(like super in an aspect might refer to the wrapee)” Feb 15 01:19:30 eule says “an undef that uncovers the old definition.” Feb 15 01:19:38 eule says “then it can be done in pure Ruby.” Feb 15 01:19:42 Aredridel says “Mmm. Perhaps so.” Feb 15 01:19:54 Aredridel says “That could be the internal way, but I'd hate to use it directly.” Feb 15 01:19:57 zem says “nestable aliases” Feb 15 01:20:22 eule says “But internally it might work that way... and the advantage” Feb 15 01:20:30 eule says “is that you can construct many more things with that.” Feb 15 01:20:50 zem says “i still prefer using blocks to passing method-objects to a wrap call” Feb 15 01:21:00 zem says “using-blocks, that is” Feb 15 01:21:11 Aredridel says “Hm.” Feb 15 01:21:25 Aredridel says “I wouldn't pass methods, but entire objects.” Feb 15 01:21:50 zem says “oh, you'd do this at an object level? what about classes?” Feb 15 01:21:55 jubo1 vanishes, with the image of the words “"leaving"” trailing after. Feb 15 01:21:58 eule says “Like use Aspect do end ?” Feb 15 01:22:27 kas enters Feb 15 01:22:30 Aredridel says “Aspect.use do .... end ” Feb 15 01:22:32 Aredridel says “or similar.” Feb 15 01:22:38 zem says “actually, eule's right - what i really want under the hood is an undef” Feb 15 01:22:50 eule says “A popalias rather” Feb 15 01:22:52 eule says “;)” Feb 15 01:22:56 zem says “yeah :)” Feb 15 01:23:07 zem says “so i can scope a standard class extension to a block of code” Feb 15 01:23:09 eule says “This is not hard to do, very probably.” Feb 15 01:23:15 zem says “which will usually be a class” Feb 15 01:23:37 dagbrown says “Try saying "undef p;p 42" at irb.” Feb 15 01:23:43 zem says “i think it should be easy enough as long as you constrain your extensions to be stateless” Feb 15 01:23:46 dr_bob enters Feb 15 01:24:02 zem says “dag: but you can't say def p; end; undef p and get the old p back” Feb 15 01:24:12 zem says “'ello dr_bob ” Feb 15 01:24:14 eule says “Well now that is a limitation that I don't see why I would like to comply...” Feb 15 01:24:45 inspire22 vanishes, with the image of the words “” trailing after. Feb 15 01:24:51 zem says “where would the state be carried, otherwise?” Feb 15 01:24:52 _xwings_ enters Feb 15 01:24:53 dr_bob says “morning ” Feb 15 01:24:54 Aredridel says “Hm. That makes me think it'll just lead to spaghetti code.” Feb 15 01:24:58 dr_bob says “'ello 'ello” Feb 15 01:25:00 dr_bob says “:-)” Feb 15 01:25:05 Aredridel says “Where methods shift meaning just frequently enough to drive one nuts.” Feb 15 01:25:07 eule says “zem, well whereever ;)” Feb 15 01:25:16 eule says “Aredridel> Good point.” Feb 15 01:25:18 zem says “if you open a class, open a namespace, do something, close the namespace, do something, open the namespace again, is the state retained?” Feb 15 01:26:13 zem says “Aredridel: but instead of saying class MyArray < Array, you get to say using namespace MyArray, and get the benefit of a literal []” Feb 15 01:26:32 zem says “i think people would use it judiciously” Feb 15 01:26:34 eule says “zem: No of course not.” Feb 15 01:26:47 eule says “zem: we'd have to.” Feb 15 01:26:54 Aredridel says “Yeah- - you have to be able to wrap existing objects, not use a subclass.” Feb 15 01:26:57 eule says “(use that sparingly).” Feb 15 01:27:09 Aredridel says “I think your namespaces and my version of Aspects are really similar.” Feb 15 01:27:31 Aredridel says “Someone pointed out the classes are essentially contexts for the code.” Feb 15 01:27:39 zem says “my problem with wrapping objects is you don't do it at the same place you write the code” Feb 15 01:27:48 zem says “i want that much staticness at least :)” Feb 15 01:27:52 Aredridel says “That made Aspects become clear in my head: They're another set of context, and possibly code too, like a class.” Feb 15 01:28:06 Aredridel says “Mmm. Right, I'd not wrap the way it's done here.” Feb 15 01:28:25 Aredridel says “s/here/now/” Feb 15 01:28:38 Aredridel says “It needs to be more broad than that. Wrapping a thousand objects is painful.” Feb 15 01:29:04 eule says “It is good that we all agree that namespaces is a good thing, that makes me think it will probably see the light of day.” Feb 15 01:29:25 Aredridel says “Yeah. Devil's in the details.” Feb 15 01:29:43 Aredridel says “Another, related problem that I want to solve is the "configuration global variable" problem.” Feb 15 01:29:54 eule says “Which would be what ?” Feb 15 01:30:05 Aredridel says “Say you have some non-trivial library, that needs some configuration — the classic example is a database.” Feb 15 01:30:24 Aredridel says “How do you get the configuration object to where it's used?” Feb 15 01:30:33 Aredridel says “There's a lot of ways it's done, and I don't like any.” Feb 15 01:30:37 eule says “By using the singleton pattern.” Feb 15 01:30:43 Aredridel says “Eeew!” Feb 15 01:30:44 eule says “I don't say that I like it.” Feb 15 01:30:50 Aredridel says “That's terrible.” Feb 15 01:31:06 eule says “And if that gets more complicated, I have a configuration management broker.” Feb 15 01:31:08 Aredridel says “Singlton == global variable with a prettier name.” Feb 15 01:31:22 eule says “Hey you were the one who started off saying the g word” Feb 15 01:31:26 Aredridel says “HEhe.” Feb 15 01:31:32 Aredridel says “And the problem is to get -rid- of the globals.” Feb 15 01:31:49 Aredridel says “ActiveRecord's way is essentially the singleton, but in a tell, don't ask way.” Feb 15 01:31:55 eule says “Yes. Also a variation on your theme ( checking if I understand )” Feb 15 01:32:04 Aredridel says “ActiveRecord::Base.connect(foo)” Feb 15 01:32:10 |xwings| vanishes, with the image of the words “Read error: 60 (Operation timed out)” trailing after. Feb 15 01:32:10 Aredridel says “Sucks.” Feb 15 01:32:21 Aredridel says “What if I have two chunks of code in my app, accessing different databases?” Feb 15 01:32:26 mike` enters Feb 15 01:32:38 Aredridel says “Having to fork to handle that seems really insane.” Feb 15 01:32:40 eule says “Yeah well then you have two Ruby interpreters running ;)” Feb 15 01:33:02 Aredridel says “And for 99% of AR's current use, it's fine.” Feb 15 01:33:08 eule says “Aredridel> What you are getting at is that we should be able to implicitly pass 'module global' variables into” Feb 15 01:33:09 eule says “methods ?” Feb 15 01:33:15 Aredridel says “That's a thought.” Feb 15 01:33:30 eule says “Like my dbh handle that is available only in my namespace ?” Feb 15 01:33:49 Aredridel says “What would be nice is to have a context that's convenient to pass to methods, without it having to live in the inheritance heirarchy or the parameter list.” Feb 15 01:33:56 Aredridel says “Exactly like that.” Feb 15 01:34:05 Aredridel says “So:” Feb 15 01:34:36 Aredridel says “aspect Database; def dbh; "foohandle"; end; end” Feb 15 01:34:38 eule says “It could even live in the parameter list, def foo( mycontext, other params ) and be passed in implicitly, so you could go foo( other params ) and the thing would still be there.” Feb 15 01:34:38 chris2|c1b enters Feb 15 01:34:57 eule says “Makes it more explicit for foo.” Feb 15 01:34:58 Aredridel says “Database.use { Query.new(...).run }” Feb 15 01:35:13 Aredridel says “Right — just as self is passed now, essentially.” Feb 15 01:35:24 eule says “Exactly I was thinking of self” Feb 15 01:35:24 dagbrown says “Database.use could even handle locking for you.” Feb 15 01:35:24 Aredridel says “self is an implicit parameter. An aspect (or aspect set) could be a second implicit.” Feb 15 01:35:30 Aredridel says “Right.” Feb 15 01:35:31 eule says “Explicit self ;)” Feb 15 01:35:53 Morrison vanishes, with the image of the words “Read error: 60 (Operation timed out)” trailing after. Feb 15 01:35:56 Aredridel says “Eew!” Feb 15 01:36:04 eule says “This is good stuff, man....” Feb 15 01:36:12 --- Wardust is now known as Wardust|zzz Feb 15 01:36:26 Aredridel says “If the aspect is first-class, as classes are, then they could be stored in variables, and referred to later.” Feb 15 01:36:37 robaman enters Feb 15 01:36:43 Aredridel says “Meaning weirdness could abound, but I think it would be limited:” Feb 15 01:36:54 Aredridel says “Database.use { Query.new(...) }.run ” Feb 15 01:37:04 eule grins about the expression 'weirdness abound' ;) Feb 15 01:37:33 Aredridel says “Let Database be wrapped up in a closure, so that it sticks around if Query deems it neccesary.” Feb 15 01:37:48 eule says “nod” Feb 15 01:37:54 Aredridel says “Or maybe Database moves on, but its dbh lives on inside Query.” Feb 15 01:37:58 chris2|ccb vanishes, with the image of the words “Read error: 60 (Operation timed out)” trailing after. Feb 15 01:38:24 Aredridel says “Basically, it's really really really nice syntax for pushing method definitions and popping them later.” Feb 15 01:38:44 eule says “This needs to be written down.” Feb 15 01:38:47 Aredridel says “And if you allow inheritance of aspects, too, for re-use...” Feb 15 01:39:37 eule notes in a big black book. Feb 15 01:39:55 Aredridel says “aspect Transmogrifier; def make_noise; "silence"; end; end” Feb 15 01:40:14 Aredridel says “aspect AspectOfDuck < Transmogrifier; def make_noise; "Quack"; end; end” Feb 15 01:40:39 Aredridel says “AspectOfDuck.use { anAnimal.make_noise } # => "quack"” Feb 15 01:40:52 Aredridel says “Perhaps you have to explicitly say that Transmogrifiers apply to animals in there.” Feb 15 01:41:16 eule says “( you know I cant copy paste this, I actually write it down ;)” Feb 15 01:41:58 Aredridel says “(Hehe... I am logging, and seriously think that suby-muse might want it as ammunition for their RCRs. I'm not sure how similar this is to their current draft(s) ... it was getting pretty technical, and I think might have lost sight of the goal for a bit.)” Feb 15 01:44:28 eule says “So Query.new would retrieve a dbh from the Aspect, stow it away, and on receiving #run run the query against dbh ? Slick.” Feb 15 01:44:47 yxhuvud enters Feb 15 01:45:13 daft vanishes, with the image of the words “Remote closed the connection” trailing after. Feb 15 01:45:19 Aredridel says “Yup.” Feb 15 01:45:24 Aredridel says “If you so defined it.” Feb 15 01:45:35 eule says “This feels so neat that I really want this now ;)” Feb 15 01:45:40 Aredridel says “For my code, ivar light and return-value heavy, that makes sense.” Feb 15 01:45:48 eule says “Can you point me to the aspect RCR ?” Feb 15 01:46:01 Aredridel says “For other's code, ivar heavy and return value light, making sure the whole thing runs inside the aspect might make more sense.” Feb 15 01:46:22 otim vanishes, with the image of the words “"bye"” trailing after. Feb 15 01:47:32 Aredridel says “http://lists.berlios.de/pipermail/suby-muse/2004-August/000176.html — there's reference to one.” Feb 15 01:47:32 eule says “But I was thinking of @dbh = get_dbh, then dbh.executing, so ivar heavy (if you want to call it that).” Feb 15 01:47:37 eule says “tnx” Feb 15 01:47:41 Aredridel says “Yup. I would.” Feb 15 01:47:58 eule says “So you introduce ivars, you don't eliminate them ;)” Feb 15 01:48:09 Aredridel says “No, I tend to eliminate them in my own code.” Feb 15 01:48:49 eule says “I will be thinking about this, it does not seem like a huge change..” Feb 15 01:49:05 Aredridel says “aredridel@procyon:/home/sites/dev.theinternetco.net/elf$ grep '@' elf*.rb | wc -l” Feb 15 01:49:05 Aredridel says “77” Feb 15 01:49:14 Aredridel says “No, it doesn't seem that way to me, either.” Feb 15 01:49:59 Aredridel says “I think the best part would be to keep it powerful, so that care is taken in using it — let namespace collisions be possible, just made localised. If you overwrite a method that something needs while it's within your aspect, you get to keep both pieces.” Feb 15 01:50:05 Aredridel says “Oh — here'” Feb 15 01:50:09 Aredridel says “Oh — here's an idea, too:” Feb 15 01:50:24 Aredridel says “all objects have the aspect while in a codepath within the aspect.” Feb 15 01:50:34 Aredridel says “But if you -make- an object within the aspect, the aspect sticks to it.” Feb 15 01:50:52 eule says “I guess it must for correctness.” Feb 15 01:51:17 Aredridel says “Well, it allows for two uses: one is to locally override things — zem's main concern.” Feb 15 01:51:36 Aredridel says “The other is for namespace orthagonality — my main concern.” Feb 15 01:51:46 eule says “Exactly, its a merge.” Feb 15 01:51:53 eule says “Only one thing:” Feb 15 01:52:26 eule says “An aspect applies to all objects, so aspect Foo; def doh; 'doh'; end end would make #doh appear on all objects ?” Feb 15 01:52:51 Aredridel says “I think perhaps Aspects should have to apply to specific classes (and descendents)” Feb 15 01:53:01 Zeroth vanishes, with the image of the words “Read error: 110 (Connection timed out)” trailing after. Feb 15 01:53:02 Aredridel says “So to do it to all objects, aspect Foo(Object); def doh” Feb 15 01:53:53 Aredridel says “Do apply it to all strings (temporarily) and all new strings (permanently) within a code-path, aspect Foo(String)” Feb 15 01:54:05 eule says “nice.” Feb 15 01:54:11 Aredridel says “I think so.” Feb 15 01:54:34 eule says “and aspect Foo applies to everyone all the same. That is aequivalent to aspect Foo(Object)” Feb 15 01:55:32 Aredridel says “That would work.” Feb 15 01:55:52 Aredridel says “and be dangerous enough that people would pay attention.” Feb 15 01:56:07 eule says “,)” Feb 15 01:56:08 Aredridel says “So dangerous, in fact, that if misused, code would fail early and loud. Which is fine.” Feb 15 01:56:20 eule says “Yes.” Feb 15 01:56:24 eule says “I really like this thing.” Feb 15 01:56:32 Aredridel says “(Better that than medium-dangerous, so it only bites you when you've got to have it done Real Soon Now)” Feb 15 01:56:50 eule says “I initialize my pointers to 0 ;)” Feb 15 01:57:02 eule says “I want things to blow up soon or not at all.” Feb 15 01:57:05 Aredridel says “Now, implementation-wise, it would basically deepen the method search path quite a bit.” Feb 15 01:57:09 Aredridel says “Me too.” Feb 15 01:57:14 Aredridel says “0xDEADBEEF forever.” Feb 15 01:57:44 Aredridel says “(and my code generally does: lots o' mess while experimenting, but when I sit down and make a go of it, I don't find too many whoopses.)” Feb 15 01:58:14 eule says “Look at this (from the AOP page) :” Feb 15 01:58:30 eule says “cut ObjectCut < Object” Feb 15 01:58:30 eule says “ def __id__; puts "__id__ was requested"; super; end” Feb 15 01:58:30 eule says “ end” Feb 15 01:58:31 dagbrown says “Wow, y'all are still trying to solve my small organizational problem by simply redesigning the entire Ruby language.” Feb 15 01:58:37 eule says “Looks like python !” Feb 15 01:58:49 Aredridel says “Hehe, yeah. __id__ is ugly.” Feb 15 01:58:50 eule says “dagbrown> That's the way we work here.” Feb 15 01:58:53 dagbrown says “Haha” Feb 15 01:59:07 Aredridel says “dagbrown: just taking conversation and stuff that's on everyone's minds, and trying to beat it into happening.” Feb 15 01:59:18 Aredridel says “Cleanly, solidly, and once and for all.” Feb 15 01:59:33 ruabag leaves. Feb 15 01:59:34 Aredridel says “'cause I'm tired of seeing Singleton pattern in libraries that I want to use with two contexts.” Feb 15 01:59:40 eule says “We actually all hang out on ruby-lang, and when someone asks a question, baam we change the language to make the question go away. You can download your version of Ruby right after the compile has ended...” Feb 15 01:59:48 dagbrown says “Hahahaha” Feb 15 01:59:50 Aredridel says “And I'm almost as tired of having to pass huge hashes to constructors of stuff.” Feb 15 02:00:03 Aredridel giggles. Feb 15 02:00:10 Aredridel says “I -wish- it was that fast to implement.” Feb 15 02:00:13 eule says “Aredridel> Yes, the thing we thought of would clean up the code quite a bit.” Feb 15 02:00:38 Aredridel says “I can totally imagine YAML dying as a config format, too.” Feb 15 02:00:43 eule says “Aredridel> It cant be superhard, looks like easy enough. I have it in my book now, and this might be the next thing I think of when..” Feb 15 02:00:49 eule says “looking at the core of 1.9 ;)” Feb 15 02:01:07 Aredridel says “Reason being, it's nice to have an easy-to-load config object. But even better is just having the config be there, hanging in the namespace.” Feb 15 02:01:10 eule says “Aredridel> That could be easily built on top.” Feb 15 02:01:21 eule says “Exactly” Feb 15 02:01:27 Oct says “'morning people” Feb 15 02:01:46 Aredridel says “aspect TestDatabase; def dburi; "psql://testserver"; end; end” Feb 15 02:01:55 Aredridel says “aspect RealDatabase .... end” Feb 15 02:02:27 Aredridel says “And then, the test launcher just does TestDatabase.use .... stuff ... end” Feb 15 02:02:31 eule says “Aredridel> You shouldn't say things like that when people come in, you scare them away...” Feb 15 02:02:39 Aredridel laughs. Feb 15 02:02:42 Aredridel says “Morning, Oct.” Feb 15 02:03:18 eule says “Aredridel> But I really like that, each new example makes me see the light more and more.. .” Feb 15 02:03:30 wbruce leaves. Feb 15 02:04:04 Aredridel says “Me too.” Feb 15 02:04:24 eule says “Only that we'd have aspect theorethics tell us that we abuse the context” Feb 15 02:04:32 Aredridel laughs. Feb 15 02:04:34 Aredridel says “Of course.” Feb 15 02:04:41 Aredridel says “I'd probably be one of those people.” Feb 15 02:04:46 eule says “lol” Feb 15 02:05:40 Aredridel says “I'm trying to think hard on the details of sticky aspects for some objects, temporary for others.” Feb 15 02:05:53 zem says “we could call it an Environment rather than an Aspect” Feb 15 02:06:03 zem says “i don't think there are any environment theorists” Feb 15 02:06:03 Aredridel says “Hm.” Feb 15 02:06:03 eule says “Definition Environment.” Feb 15 02:06:13 camden vanishes, with the image of the words “Remote closed the connection” trailing after. Feb 15 02:06:19 eule says “zem But environmental activists, which is just as bad, if not worse” Feb 15 02:06:25 Aredridel says “That is both a good idea, and possibly too confusable with ENV, and with bindings.” Feb 15 02:06:32 Kero says “environment theorist build climate models.” Feb 15 02:06:54 Aredridel says “Hehe. Maybe we could get Ruby into NCAR as well as NASA, then ;-)” Feb 15 02:06:55 zem says “:)” Feb 15 02:07:06 Aredridel says “Or deeper.” Feb 15 02:07:07 Kero says “Ruby-Aspect == Rasp” Feb 15 02:07:08 eule says “We should call it Aspects all the same, even if we have our take on them.” Feb 15 02:07:19 Aredridel says “Yeah, probably so.” Feb 15 02:07:28 eule says “It is just that we'd use them in plenty of places where AOP does not traditionally apply” Feb 15 02:07:32 Aredridel says “And it -feels- like Aspects. The Database aspect, the Logging aspect ... ” Feb 15 02:07:38 eule says “Like continuations, which is fine.” Feb 15 02:07:39 zem says “i don't think they are aspects at all” Feb 15 02:07:42 zem says “no point cuts etc” Feb 15 02:07:55 eule is thinking of the name 'Generator' in python. Feb 15 02:08:05 Aredridel says “Actually, I think the point cuts could just be totally implied.” Feb 15 02:08:27 sachac vanishes, with the image of the words “"off to indulge my book habit"” trailing after. Feb 15 02:08:32 Aredridel says “method boundaries are cuts. Call stack boundaries are cuts, too, in a way.” Feb 15 02:08:46 eule says “Yeah and what's this cut thing anyway ;)” Feb 15 02:09:08 Kero says “for an overused word, try "cut"” Feb 15 02:09:13 Aredridel says “Heh, yeah. It seems like obtuse jargon.” Feb 15 02:09:30 Kero has plenty of associations with it, but the AO one won't stick. Feb 15 02:09:34 Aredridel says “In Aspect-J, it seems like an explicit (how Java!) marker of where you can apply stuff.” Feb 15 02:10:05 Aredridel says “With Ruby, and especially with recent small-method trends, having methods be the atomic units makes sense.” Feb 15 02:10:44 eule says “Yes. I'd even say it is the Ruby Way, since we do stuff like File.open do end all over the place, and what is that other than defining regions of applicability ?” Feb 15 02:10:45 yxhuvud says “yes, especially since we can use blocks when we want to paste code inside something ” Feb 15 02:11:13 Aredridel says “Right.” Feb 15 02:11:50 Aredridel says “Hm. Implementation -might- just be easy.” Feb 15 02:11:59 eule says “So I downvote the use of the word 'cut'; this eliminates the need for understanding on my part.” Feb 15 02:12:04 Aredridel says “HEhe.” Feb 15 02:12:10 eule says “Aredridel> That's what I have been thinking ALL ALONG” Feb 15 02:12:18 eule says “might” Feb 15 02:12:20 Aredridel says “Have two chains of ~classes to follow: the wrapping "Aspects" and the inherited Classes.” Feb 15 02:12:33 Kero says “some implementation is so easy, noone ever bothered?” Feb 15 02:12:48 eule says “Kero well I just started thinking about this...” Feb 15 02:12:55 Aredridel says “Because nobody has decided How It Should Be.” Feb 15 02:13:04 Aredridel says “And "easy" is still defined in C for me ;-)” Feb 15 02:13:06 Kero says “other implementation is so hard, noone ever dared?” Feb 15 02:13:25 --- ko1_away is now known as ko1_ Feb 15 02:13:54 ko1_ says “rubyist magazine No.5 (in Japanese) is released :)” Feb 15 02:13:55 eule says “Aredridel> Yeah we're definitily talking about C...” Feb 15 02:14:03 lypanov enters Feb 15 02:14:07 lypanov says “re :)” Feb 15 02:14:22 eule says “Aredridel> Two chains ? I just wanted to have the aspect chain override (as in come in front) the other chain.” Feb 15 02:14:23 Aredridel says “keep a pointer of where to unwrap to, and for new objects, it points at the end of the stack. ” Feb 15 02:14:29 Kero says “Aredridel: how can that be? easy in C is easier in Ruby !” Feb 15 02:14:33 lypanov says “eule :)” Feb 15 02:14:41 Aredridel says “Me too. More a chain with a pointer to the middle that says where to unwrap as you come out of the call.” Feb 15 02:14:43 zem says “hey lypanov ” Feb 15 02:14:47 lypanov says “yoyo zem” Feb 15 02:15:04 eule says “Aredridel> That would be the way to do it.” Feb 15 02:15:13 eule says “Yo lypanov long time no type.” Feb 15 02:15:24 lypanov says “eule: ;) been busy?” Feb 15 02:15:27 Aredridel says “Or more, a stack of pointers, so as you come out of the stack out of an aspect.use, you unwrap a layer.” Feb 15 02:15:36 eule says “( and that is just so idiosyncratic for irc, type not read ;) )” Feb 15 02:15:47 eule says “Aredridel> Yes.” Feb 15 02:16:01 Aredridel says “And for objects created within, that stack is simply emptier.” Feb 15 02:16:08 Aredridel says “So you stop unwrapping sooner.” Feb 15 02:16:16 eule says “lypanov> Been terribly busy finishing my report and stuff. Must code some more ;) now (actually MUST code.. ;) )” Feb 15 02:16:19 Aredridel says “(and therefore, leaving aspects intact.)” Feb 15 02:16:38 lypanov says “eule: hehe” Feb 15 02:16:48 lypanov says “eule: so you got it finished up? need a proofread?” Feb 15 02:16:54 daft enters