00:22:11 -!- ihope_ has joined.
00:23:54 -!- ihope has quit (Nick collision from services.).
00:24:01 -!- ihope_ has changed nick to ihope.
00:25:43 -!- ihope has changed nick to ihope_.
00:26:02 -!- ihope_ has changed nick to ihope.
00:26:28 -!- ihope has changed nick to ihope_.
00:26:47 -!- ihope_ has left (?).
00:27:32 <SimonRC> fizzie: Can you write predicates which take other predicates as arguments?
00:28:29 -!- ihope has joined.
00:29:46 <fizzie> Well, predicates are just data, so "sure", but the other predicates need to assert those before they can be used. (Alternatively you can pass the name of a predicate already existing in the program, which rather like function pointers in C.)
00:31:39 <fizzie> It's not good style, but you could generate a temporary name and that way use a predicate received as an argument, which would be like "eval"ing the argument in perl or some lisp-like thing.
00:31:47 <fizzie> There might even be a built-in "eval".
00:32:26 <fizzie> But you can't really pass "compiled" functions, just their "source code" or references (names).
00:33:19 * SimonRC can't see how one could use prolog sensibly for "normal" programming.
00:33:53 <fizzie> Well, it's quite easy to do recursion, and there's a non-logical predicate called "is" to do arithmetic.
00:35:09 <fizzie> But not "normal functional programming", certainly. Although the built-in 'map' does automagical currying, so you can do something a bit like map(foo(a, b), c, d) and end up having it call foo(a, b, c, d), where 'd' is an output parameter of sorts.
00:37:16 <fizzie> For example, a plain old recursive Fibonacci is:
00:37:19 <fizzie> fib(N, X) :- N1 is N-1, N2 is N-2, fib(N1, X1), fib(N2, X2), X is X1 + X2.
00:38:25 * ihope starts work on Sanity Check 1.0
00:40:37 <fizzie> My Scheme interpreter (which is written in Prolog) contains quite a bit of abusing Prolog in a non-logical-programming style.
00:46:45 <ihope> Dang, I can't read this code I just wrote.
00:47:05 <ihope> I think I need to substitute this for that, or maybe these for those...
00:49:10 <ihope> Here we go. My ASCII printer function would be complete, if it weren't for the lack of whatevers.
00:51:10 <ihope> Plenty of OMGWTFBBQ!
01:03:10 <ihope> There we go. Now I just need to go in and replace all the question marks with ASCII.
01:11:02 <ihope> Done with the control characters :-P
01:23:08 <ihope> Unlambda Sanity Check 1.0 is open and ready for business...
01:23:21 <ihope> ...if I didn't make some crazy booch along the way.
01:23:27 -!- ihope has quit ("Chatzilla 0.9.69.1 [Firefox 1.5/2005111116]").
01:26:13 -!- lirthy has quit (Read error: 104 (Connection reset by peer)).
02:13:24 -!- CXI has quit (Connection timed out).
02:18:52 -!- CXI has joined.
02:33:47 -!- RoboGregorR has joined.
02:54:44 -!- Keymaker has left (?).
03:39:58 -!- RoboGregorR has quit.
03:40:33 -!- fungebob has joined.
05:52:12 -!- Sgeo has quit.
05:55:38 -!- CXI has quit (clarke.freenode.net irc.freenode.net).
05:55:38 -!- mtve has quit (clarke.freenode.net irc.freenode.net).
05:55:38 -!- lament has quit (clarke.freenode.net irc.freenode.net).
05:55:54 -!- puzzlet has quit (clarke.freenode.net irc.freenode.net).
05:55:54 -!- sp3tt has quit (clarke.freenode.net irc.freenode.net).
05:55:55 -!- tokigun has quit (clarke.freenode.net irc.freenode.net).
05:55:56 -!- tokigun has joined.
05:56:00 -!- mtve has joined.
05:56:03 -!- sp3tt has joined.
05:56:10 -!- puzzlet has joined.
05:56:22 -!- CXI has joined.
06:00:40 -!- lament has joined.
06:40:26 -!- lirthy has joined.
07:53:41 -!- fungebob has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:16:31 -!- CXI has quit (Connection timed out).
11:28:41 -!- jix has joined.
11:30:12 -!- jix has quit (Remote closed the connection).
11:30:32 -!- jix has joined.
11:30:59 -!- jix has quit (Remote closed the connection).
11:31:26 -!- jix has joined.
11:31:29 -!- jix has quit (Remote closed the connection).
11:36:17 -!- jix has joined.
12:04:55 -!- Keymaker has joined.
13:36:53 -!- Keymaker has left (?).
14:14:40 -!- jix has quit ("This computer has gone to sleep").
15:27:09 -!- {^Raven^} has joined.
15:44:07 -!- Sgeo has joined.
15:46:08 * SimonRC feels inclined to lean any language in which this is considered good coding style: http://www.kx.com/a/k/examples/xhtml.k
15:46:12 <SimonRC> ( http://en.wikipedia.org/wiki/K_programming_language )
15:46:23 <SimonRC> This is not a joke, AFAICT.
15:46:28 <SimonRC> allow me to quote you a line:
15:46:31 <SimonRC> tt:{co:{(+\-1_0,#:'x)+(*&:)'x}(oo:&(o:"<"=x)&~1!s:"/"=x)_ c:">"=x;a:-1+#x
15:46:40 <SimonRC> Learning that could spell profit in the 2020s and 2030s.
16:24:01 -!- ihope has joined.
16:27:27 <ihope> So how's the BF-PDA golf going?
18:29:29 -!- J|x has joined.
18:35:24 <SimonRC> ihope: have you seen K before?
18:36:02 <SimonRC> http://www.kx.com/a/k/examples/xhtml.k
18:36:13 <SimonRC> Learning that could spell profit in the 2020s and 2030s.
18:36:23 <SimonRC> Once everyone else has forgotten it.
18:36:57 <SimonRC> Wikipedia says: < http://en.wikipedia.org/wiki/K_programming_language >
18:38:15 <SimonRC> The language J is almost as good.
18:38:33 <ihope> Then I'd like to learn L.
18:38:54 <ihope> I imagine, say, C must be very obfuscated!
18:39:10 <SimonRC> (almost) every punctuation mark in J is an infix operator, and a prefix operator.
18:39:54 <SimonRC> Also, if x is a (pair of) operators, the x. and x: are usually also.
18:40:31 <SimonRC> so, for each symbol you can get 6 operators.
18:41:02 <SimonRC> J is related to APL, but uses ASCII.
18:42:02 <SimonRC> It works mostly with matrices, and has the interesting concept of "rank", which allows you to do stuff like 2 + 5 6 7 and get the result 7 8 9.
18:42:35 <ihope> Like Haskell, sorta?
18:42:58 <SimonRC> yes, but the mapping is implicit
18:43:03 <ihope> Or (2+), either way.
18:43:29 <SimonRC> Because you also write 2 + 3 to get 5.
18:43:44 <SimonRC> so + doesn;t have a Haskell type, really
18:44:55 <SimonRC> 1 2 3 + 10 20 30 results in 11 22 33, also
18:45:12 <fizzie> That's what matlab does, too.
18:45:25 <ihope> zipWith (=) [1,2,3] [10,20,30]
18:45:36 <fizzie> Adding a scalar to a matrix adds to all elements, adding two (compatible) matrices does element-wise addition.
18:46:05 <ihope> Well, you could have a Mappable monad or something...
18:46:06 <SimonRC> if you want the 3x3 marix 11 12 13 21 22 23 31 32 33, then you have to use the " conjunction to fiddle with the rank of the + verb
18:46:19 <ihope> Sounds complicated.
18:46:32 <ihope> And I make too many typos.
18:47:05 * SimonRC vainly searches for the tutorial
18:49:50 -!- CXI has joined.
18:50:32 <ihope> Did you search for "j tutorial"?
18:51:14 <SimonRC> This is the particular thing I wanted: http://www.jsoftware.com/books/help/dictionary/vocabul.htm
18:51:23 <fizzie> If I'd want that in Matlab, I'd probably write something like "ones(3,1) * [1 2 3] + [10 20 30]' * ones(1,3)", but I'm sure there's a better way.
18:52:28 <fizzie> (Maybe [10;20;30] instead of [10 20 30]'.)
18:52:53 <ihope> I just found a big security vulnerability in Firefox.
18:53:27 <ihope> It allows web pages to effectively DoS Firefox for about 45 seconds.
18:53:41 <ihope> They do so by rendering themselves in Adobe Acrobat :-P
19:08:47 <ihope> Is there a word for people who won't eat some things, but not because they're meat/vegetables/whatever?
19:08:58 <ihope> ...Other than "omnivore"?
19:34:17 <ihope> fizzie: what if there are only two things said person won't eat?
19:35:12 <fizzie> I guess they're just slightly picky, then.
20:58:42 -!- fungebob has joined.
21:05:10 <GregorR> If there are only two things someone won't eat, they're not picky enough.
21:05:23 <GregorR> They'll eat rocks and gravel, but not worms or sour cream?
21:06:18 <fizzie> Maybe they won't eat rocks and gravel, but will eat worms or sour cream. (Or lava!)
21:10:07 <GregorR> He is ... THE CONVERSATION KILLERRRR!!!!
21:10:20 <GregorR> So instead, let's talk about Glee, my Glass interface to C.
21:11:32 <GregorR> {M[m(_g)(Glee)!(fd)"test.a"<65>(_g)(open).?=(fd)*"Thisisatest\n"(_g)(write).?(fd)*(_g)(close).?"test.a"<420>(_g)(chmod).?]}
21:12:30 <GregorR> Unfortunately, I can't seem to figure out how to make a generic interface :(
21:12:39 <GregorR> Clearly not something C was intended to do.
21:22:36 <ihope> I'd like to write Something Useful in an esoteric programming language
21:23:06 <GregorR> !glass {M[m(_o)O!"Something Useful"(_o)o.?]}
21:23:22 <ihope> I already wrote Unlambda Sanity Check 1.0, which does nothing too cool and probably doesn't work anyway.
21:23:25 <GregorR> !bf_txtgen Something Useful
21:23:47 <EgoBot> 128 ++++++++++++++[>++++++>++>++++++++>++++++++<<<<-]>-.>>-.--.--------.>++++.<+++.+.+++++.-------.<++++.<++.>>>-.<--.+.>++.<++++++. [453]
21:24:11 <EgoBot> help ps kill i eof flush show ls bf_txtgen
21:24:13 <EgoBot> 1l 2l adjust axo befunge bch bf{8,[16],32,64} glass glypho kipple lambda lazyk malbolge pbrain rail sadol sceql trigger udage01 unlambda
21:24:18 <ihope> !unlambda ````````````.S.o.m.e.t.h.i.n.g. .U.s.e.f.u.li
21:24:49 <ihope> !unlambda ````````````````.S.o.m.e.t.h.i.n.g. .U.s.e.f.u.li
21:25:03 <ihope> !unlambda ````````````````.S.o.m.e.t.h.i.n.g. .U.s.e.f.u.l
21:25:06 <EgoBot> ./unlambda/unlambda: file ./tmp/egobot.5dvKkm: parse error
21:25:24 <lament> !lambda "Something useful"
21:26:08 <ihope> Hmm. Fission holes?
21:26:08 <lament> !lambda "Something" (ch3 " very " "useful")
21:26:12 <EgoBot> Parser error: Unbound variable: ch3
21:26:21 <lament> !lambda "Something" (c3 " very " "useful")
21:26:24 <EgoBot> Something very very very useful
21:26:46 <ihope> !lambda "Something" (c3 " very" " useful")
21:26:49 <EgoBot> Something very very very useful
21:27:01 <lament> ihope: you know LC, right?
21:27:19 <ihope> ^x.[some expression involving x]
21:27:46 <GregorR> !glass {M[u"very "oo.?][mt$oO!aA!i<5>="Something "oo.?/itu.?ii*<1>as.?=\"useful."oo.?]}
21:27:48 <EgoBot> Something very very very very very useful.
21:28:06 <lament> ihope: then add stuff to the lambda calculus dictionary :)
21:28:19 <GregorR> !glass {M[u"very "oo.?][mt$oO!aA!i<60>="Something "oo.?/itu.?ii*<1>as.?=\"useful."oo.?]}
21:28:22 <EgoBot> Something very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very useful.
21:28:26 <lament> ihope: it has persistent definitions
21:28:34 <EgoBot> [and c0 c1 c10 c2 c256 c3 c4 c5 c6 c7 c8 c9 exp fact false fr i if iszero k mult not or plus pred s show succ true y]
21:29:13 <EgoBot> \n,f,x.(n \g,h.(h g f) \u.x \u.u)
21:29:48 <lament> the cN things are some church numerals
21:30:29 -!- Keymaker has joined.
21:30:38 <ihope> How about some for those numbers I invented, that are possible to decrement?
21:32:51 <lament> you can call those iN :P
21:33:31 <ihope> Any other number is ^ab.a[predecessor]
21:34:11 <lament> so one is \ab.a(\ab.b) ?
21:34:53 <EgoBot> Parser error: list index out of range
21:35:09 <lament> !lambda i1 = \a,b.(a\a,b.b);
21:35:11 <ihope> i0 and c0 are the same...
21:35:29 <lament> and 'false' is the same
21:36:15 <lament> so how do you do stuff with your numbers? :)
21:36:42 <lament> for now, the biggest thing in the dictionary is 'fact' :)
21:36:53 <EgoBot> Parser error: Unbound variable: facct
21:36:55 <EgoBot> \x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x \x.(\f,x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x f \n,f,x.(n \g,h.(h g f) \u.x \u.u) x) x x) \x.(\f,x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x f \n,f,x.(n \g,h.(h g f) \u.x \u.u) x) x x) \n,f,x.(n \g,h.(h g f) \u.x \u.u) x)
21:37:04 <ihope> It's easy to convert these into Church numerals.
21:38:16 <ihope> fix \fa.a[\b.succ b](\bc.c)
21:41:43 <ihope> Successor function: \nab.an
21:42:25 <ihope> Predecessor: \n.ni[predecessor of zero]
21:49:50 <ihope> Quite frankly, I would not like to be called "Ooeaeai".
21:50:00 -!- ihope has changed nick to Dnchssauoie.
21:51:04 <Dnchssauoie> I wouldn't want to be called "Sskrtm" either.
21:53:34 <Keymaker> i better keep that in mind, sskr--
21:55:29 -!- calamari has joined.
21:57:49 -!- Dnchssauoie has changed nick to ihope.
21:59:54 <ihope> Omgwtfbbq it's a noisy banner ad.
22:01:26 -!- GregorR has changed nick to x477265676F7252.
22:02:03 -!- ihope has changed nick to GregorR.
22:02:07 -!- GregorR has changed nick to ihope.
22:03:12 <Keymaker> oh no, now i'll never know which one is which one
22:04:01 -!- x477265676F7252 has changed nick to GregorR.
22:04:27 <Keymaker> wait, i'm confused.. how did gregorr had two nics at the same time?
22:04:39 <Keymaker> like you were that x477.. and ihope
22:04:55 <EgoBot> GregorR can have as many nicks as he wanted!
22:05:33 <EgoBot> help ps kill i eof flush show ls bf_txtgen
22:05:35 <EgoBot> 1l 2l adjust axo befunge bch bf{8,[16],32,64} glass glypho kipple lambda lazyk malbolge pbrain rail sadol sceql trigger udage01 unlambda
22:05:58 <ihope> He seems to be possessed...
22:06:28 * ihope does some very secret ritual
22:06:45 * ihope realizes it's not secret because he said he was doing it, so it won't work
22:07:02 -!- EgoBot has left (?).
22:07:09 <GregorR> Well now look what you've done.
22:07:36 * ihope sneezes, thus hopefully completing the ritual safely
22:07:43 -!- EgoBot has joined.
22:07:51 <GregorR> !raw PRIVMSG #esoteric :I am posessed!
22:09:55 <ihope> So was that stuff up there done via this !raw stuff, or was it some feature done "server-side"?
22:10:20 <GregorR> I have no local control panel or something like that.
22:25:22 <ihope> I don't suppose there'd be...
22:25:29 <EgoBot> Use: flush Function: flush the output buffer, discarding any current output
22:25:40 <EgoBot> To use an interpreter: <interpreter> <program> Note: <program> can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem.
22:25:51 <EgoBot> Use: help [command] Function: displays help on a command, or lists commands
22:26:18 <GregorR> It has no !help on raw, since only I can use it :P
22:28:32 <GregorR> I think I'd like to implement user triggers.
22:29:18 <GregorR> Something like !trig wiki glass {M[m(_o)O!"The EsoLangs wiki is at http://www.esolangs.org/wiki/"(_o)o.?]}
22:29:26 <GregorR> Then if somebody typed !wiki it would run that.
22:29:32 <GregorR> And say "The EsoLangs wiki is at http://www.esolangs.org/wiki/"
22:31:01 <ihope> !trig omgwtfbbq help omgwtfbbq
22:31:20 <ihope> !trig foo trig bar trig baz ...
22:38:12 <GregorR> !glass {M[m(_e)(Emote)!"can indeed!"(_e)e.?]}
22:38:15 <EgoBot> <CTCP>ACTION can indeed!<CTCP>
22:38:48 <ihope> ...Is it doing anything?
22:39:13 <GregorR> ...................did ihope not see the /me?
22:39:42 <pgimeno> I've seen "[weird char]ACTION can indeed![weird char]"
22:40:01 * GregorR Does this show that too, pgimeno?
22:40:20 <pgimeno> no, GregorR, that shows up a proper CTCP action
22:41:32 <GregorR> !glass {M[m(_d)(Debug)!"Emote""e"(_d)(fc).?]}
22:41:35 <EgoBot> (_s)S!(_o)O!<1>(_s)(ns).?0(_o)o.?"ACTION "(_o)o.?1(_o)o.?(_o)o.?,
22:42:11 <pgimeno> someone please /me something
22:42:32 <pgimeno> >> :GregorR!n=gregor@198.107.20.174 PRIVMSG #esoteric :+<CTCP>ACTION /me's something.<CTCP>
22:42:56 <GregorR> It's certainly not a + ...
22:43:21 * pgimeno makes a experiment, sorry for the spam
22:43:34 <GregorR> I'm reading EgoBot's log, and it shows \1ACTION ...\1
22:44:10 * pgimeno asks GregorR if this shows up OK
22:44:48 <pgimeno> ihope: did my last ACTION show up as a /me to yo too?
22:45:37 <pgimeno> !glass {M[m(_e)(Emote)!"tries something"(_e)e.?]}
22:45:41 <EgoBot> <CTCP>ACTION tries something<CTCP>
22:45:57 <pgimeno> I'd say there's a space at the end
22:46:50 <pgimeno> after the second \1, that is
22:47:05 <GregorR> Looking at the code, I'm inclined to disagree.
22:47:11 <ihope> Well, I'm not recieving the EgoBot stuff at all.
22:47:21 <GregorR> !glass {(Emote)[e(_s)S!(_o)O!<1>(_s)(ns).?0(_o)o.?"ACTION "(_o)o.?1(_o)o.?(_o)o.?"\n"(_o)o.?,]}
22:47:39 <GregorR> !glass {M[m(_e)(Emote)!"tests."(_e)e.?]}
22:47:41 <EgoBot> <CTCP>ACTION tests.<CTCP>
22:47:59 <pgimeno> <EgoBot> <CTCP>ACTION tests.<CTCP>
22:48:08 <ihope> After the first !glass there. Nothing else.
22:48:54 <pgimeno> I still think there's a space there somehow
22:49:43 <pgimeno> <CTCP>ACTION thinks that this will be seen by GregorR as an ACTION but not at all by ihope<CTCP>
22:50:20 <pgimeno> ihope: did you see my last ACTION after my line "I still think there's a space there somehow"?
22:51:02 <GregorR> Umm, I didn't see an ACTION before that ...
22:51:07 <pgimeno> then I'm afraid there's the space also in EgoBot's output
22:51:36 <ihope> Maybe I can try a different client.
22:52:02 <pgimeno> ihope, it's not a problem with your client
22:52:19 <ihope> Isn't GregorR getting the stuff?
22:52:36 <GregorR> Waitwait, I think I figured out the issue.
22:54:55 <GregorR> !glass {M[m(_e)(Emote)!"tests."(_e)e.?]}
22:56:16 <pgimeno> that'd be a good use for a trigger
22:56:34 <ihope> Hmm, what about a quiney trigger?
22:56:56 <GregorR> ihope: EgoBot doesn't parse its own output.
22:57:27 <ihope> So no !trig spam spam. That would be... "cool", though.
22:57:41 <J|x> !trig spam spam
22:58:00 -!- J|x has changed nick to jix.
22:58:02 <ihope> Then again, that wouldn't really do much.
22:58:04 <GregorR> That would do nothing though, since there's no spam command :P
22:58:35 <ihope> !bf_txtgen Woot !spam
22:58:51 <EgoBot> 85 +++++++++++[>++++++++>++++++++++>+++><<<<-]>-.>+..+++++.>-.+.<-.---.<++++++++++.>---. [146]
22:59:10 <ihope> Hmm, what's with the ><, eh?
23:01:45 <ihope> I'll have to ask, since I can't exactly read its mind :-P
23:02:32 <Keymaker> ah, my new esolang is now somewhat ready
23:02:49 <Keymaker> and perhaps tweak it a bit more..
23:02:56 <GregorR> "I need to rewrite the specs" doesn't suggest ready to me at all :P
23:03:02 <Keymaker> write and interpreter (*dies*)
23:03:28 <Keymaker> and then write the traditional examples; hello world, cat, quine, digital root calculator..
23:03:34 <Keymaker> so, it should be out in few years ;)
23:04:00 <ihope> How soon without all the examples?
23:04:30 <Keymaker> probably a day.. but i want to do the examples! or at least some of them with the release and code more later
23:05:06 <pgimeno> and w/o the interpreter? :)
23:05:50 <Keymaker> naturally it can take more than a day, depending if i get lazy or whatever happens
23:05:50 <pgimeno> and for those who are impatient and think they can read bad english?
23:06:37 <ihope> I can read extremely lucid Spanish.
23:06:57 <GregorR> I can read Español por Estupidos :)
23:07:30 <ihope> I can read Español por Gatos...
23:07:56 <pgimeno> por -> para, otherwise it's like 'by' rather than like 'for'
23:08:22 <pgimeno> or if you did mean that... ;)
23:09:26 -!- jix has left (?).
23:09:37 -!- ihope has quit ("Chatzilla 0.9.69.1 [Firefox 1.5/2005111116]").
23:16:15 <Keymaker> hmm, i have one problem though.. the language is now Turing-complete as far as i know.. i wonder whether i should make it not-turing-complete and thus more crazy and a bit different than it is now, or keep it this way..
23:16:40 <Keymaker> on the other hand i'd like to have at least one turing-complete language, but on the other hand i love limited non-tc langs
23:18:19 <pgimeno> do you have three hands? :)
23:19:31 <pgimeno> so you have two spare indecisions left
23:21:24 <pgimeno> decisions! decisions! well, if it works as it is now then don't touch it (the philosophy of a boss I had)
23:21:59 <Keymaker> well, it certainly works, but i'm not sure whether i want to make it crazier
23:22:23 <Keymaker> (with 'works' i mean that calculations are possible :))
23:23:13 <pgimeno> that's where the "decisions! decisions!" part comes
23:24:19 <Keymaker> i need to think this over.. my thoughts are running wild (1 km/h)
23:32:02 <GregorR> !usertrig add test glass {M[m(_o)O!"This is a test!"(_o)o.?]}
23:32:34 <GregorR> I can't judge without seeing what you have.
23:32:48 <Keymaker> ah, that's reasonable in a way
23:34:26 <GregorR> Oh, I know why it's broken >_<
23:36:27 <GregorR> !usertrig add test glass {M[m(_o)O!"This is a test!"(_o)o.?]}
23:36:28 <Keymaker> does world actually need any more turing-complete languages instead pointless chaos?
23:39:51 <GregorR> !usertrig add test glass {M[m(_o)O!"This is a test!"(_o)o.?]}
23:40:22 <Keymaker> what are you actually testing?
23:40:31 <Keymaker> i have no idea what's going ont!
23:40:52 <GregorR> I'm testing user triggers :)
23:41:26 <GregorR> Well, for example, when I type !test, it runs the trigger "glass {M[m(_o)O!"This is a test!"(_o)o.?]}"
23:41:41 <GregorR> lol, well, you get the idea ;P
23:42:54 <Keymaker> hmm, not sure if i got it :P so, user can define something own stuff for the bot that can be ran easily that way..?
23:43:30 <GregorR> Here, let me implement a bit more of my idea and then show you a better example.
23:49:21 <GregorR> !usertrig add me glass {M[m(_i)I!(_e)(Emote)!(_i)l.?(_e)e.?]}
23:50:43 <GregorR> OH, I have an AWESOME example :)
23:50:43 <Keymaker> although i can't understand the actual glass program :)
23:51:00 <GregorR> !usertrig add numwarp bf file://bf/numwarp.b
23:51:04 <EgoBot> Trigger added (numwarp)!
23:51:17 <GregorR> Oh, grr, it's sending the rest to me :P
23:51:33 <Keymaker> heh, good o' numwarp.. awesome program
23:51:34 <GregorR> You do the trigger, it'll send it to you ^_^
23:53:43 <GregorR> I'll fix it up later (it doesn't cache them right now)
23:53:47 <GregorR> But that was the basic idea.
23:57:26 <GregorR> Oh, and also: Come on, Glass is so simple and intuitive to understand!