»ö« | perl6-projects.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot: perl6: say 3;' | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by moritz_ on 27 June 2009.
colomon I love Perl6! 02:43
sjohnson me too 02:50
TimToady it's okay in spots 02:52
colomon Did what feels like my first real programming in it today -- modifying a Perl 5 program to be Perl 6ish.
It's beautiful.
TimToady I'll settle for cute and adorable...
colomon I'm not sure cute really fits, actually. 02:53
It's all elegant and such.
azawawi hi 02:54
sjohnson some cute things about Perl 02:56
colomon Time for bed. Just had to get that out of my system. Thanks, all.
sjohnson $_ is cute 02:57
pugs_svn r27588 | lwall++ | [camelia] put back TM 03:09
sjohnson ( `ー´) 03:14
szabgab ironcamel1, why 1 ? 05:15
szabgab can't you use the same nick on two channels with the freenode web interface ? 05:16
ironcamel1 this account is view the web client... my ironcamel account i use a client that i wrote
as a plugin for vim
szabgab oh I see
ironcamel1 i keep 2 clients running for error checking/debugging etc
szabgab I have enough errors in one client :-) 05:17
ironcamel1 szabgab, one suggestion for your website is don't make users have to register to leave a comment. just my opinion. 05:18
szabgab anyway we still have to see if the Perl 6 regexes are going to become ugly because of the extensive escaping or not
ironcamel1 well, of course they will be
they will be full of backslashes everywhere 05:19
szabgab regarding the comment system, if that can be done with the disqus thhing then I can try to do that
ironcamel1 unless you can do something clever with the literal q{} strings in the regexes
Khisanth I guess parsing html will look ugly ... 05:50
ironcamel1 yes indeed 05:57
Khisanth well at least it matches 06:15
Su-Shee good morning. 06:30
tann 'moring, pretty pirl 06:31
moritz_ std: sub a { }; say a ~~ 4 06:53
p6eval std 27588: OUTPUT«##### PARSE FAILED #####␤Preceding operator expects term, but found infix ~~ instead at /tmp/CpslxfakGq line 1:␤------> sub a { }; say a ~~ 4␤FAILED 00:02 36m␤»
Matt-W Morning 07:07
sjohnson hello
moritz_ oh hai 07:08
sjohnson does anyone here hate programming in Javascript, PHP, CSS, and HTML all in one? 07:10
Su-Shee sjohnson: I don't besides PHP.
moritz_ sjohnson: yes ;-)
Su-Shee actually, I really like the combi js, css and html/xul :) 07:11
sjohnson moritz_: me too 07:11
i think i'm gonna have to quit my job
this is getting far too boring and painstaking
Su-Shee sjohnson: you forgot the additional window with the database/sql stuff. ;) 07:12
sjohnson yes, i did forget that :) 07:13
i become very happy programming Perl scripts at work to do routine things
i almost jump at the opportunity 07:14
contrasted with the unbelievable pain of coding in PHP
... PHP and friends, i mean
Su-Shee sjohnson: until today I managed to avoid to get any php job but the one I've tried once and hated.
sjohnson Su-Shee: this may seem like a no brainer, but you like Perl, right? 07:15
Su-Shee sjohnson: totally.
sjohnson me too 07:16
Su-Shee sjohnson: I had a perl crisis a few years ago and let myself be seduced by python and a little ruby, but went back. 07:17
sjohnson please tell me how that went
as i also had a crisis
but came back once i found that Perl 6 does all that Perl 5 didn't do
jeekobu I'm in the middle of such a crisis I guess 07:18
For my research scripts anyway. Python has easy memoization and built-in big int support, P5 doesn't
Su-Shee well, from the outside it looked like perl wouldn't make it into more contemporary programming, so I checked other things out. then came a) perl6 and b) cool new shiny things in perl5 and I jumped back immediately.
sjohnson jeekobu: do you know if Perl 6 can handle it? 07:19
Su-Shee jeekobu: check higher order perl, there's plenty about memoization.
sjohnson Su-Shee: i checked out ruby too
i think David Flanagan's book is confusing as hell
obviously will get 5 stars on amazon, but an example of the worst kind of technical manual i have ever read
the Camel book is so much nicer
and a hell of a lot funnier to read
Su-Shee sjohnson: it's mostly that I read many amazing details about perl 5 (like HOP) which convinced me even more. I got in touch with perl's sexiness again.
Su-Shee sjohnson: and if you check out projects like moose for example - it's a-ma-zing how flexible perl is. 07:20
jeekobu sjohnson: You mean the current implementations? I don't know
jeekobu sjohnson: Sort of why I drifted back to checking out P6; it's been a few years 07:20
Su-Shee sjohnson: and there's nothing like CPAN.
jeekobu sjohnson: OTOH I'm vary wary of jumping on a still-rapidly-evolving platform. That's been a huge part of Python's problem. (And various other software platforms.) 07:21
sjohnson righto 07:22
my biggest gripe in Perl 5 is no trim function
Su-Shee trim?
bionoid sjohnson: for real? it's like a 0,2 liner 07:22
Su-Shee *hihi* 0.2 liner :)) 07:23
sjohnson yeah, having to reinvent the wheel for the 50 perl scripts i have that use it 07:23
gets annoying fast
Matt-W yeah that bugs me too
It's so common it just feels like it should be a builtin
sjohnson Matt-W, i couldn't agree more 07:24
having to refine my own trim function every single time i write a script that uses it, or install String::Strip with CPAN...
on every system I migrate to.. 07:25
moritz_ maybe you could sneak it into Scalar::Util, which is a core module?
sjohnson i would like to, but how sneaky would i have to be?
i want to do whatever it takes to get it backported into Perl 5
i could live with a core module 07:26
moritz_ no idea really
sjohnson until Perl 6 comes out
Su-Shee (oooh, please let me get the job where the ceo says "oh, yes, let's have an eye on perl 6, we're commited to use perl the next decade..") 07:27
sjohnson moritz_: maybe i could get in touch with the Core Module author?
i convinced the ANSIColor author to inclide a stripColors function 07:28
so maybe it might be all that is needed
include*
moritz_ Su-Shee: when will that be decided?
sjohnson: it's dual lived, so you'll find the author by a quick CPAN search
Su-Shee moritz_: they said, they'll contact me "end of the week - monday the latest.."
moritz_ Su-Shee: then I wish you the best of luck 07:29
sjohnson moritz_: i am wondering if you think it might work, not so much who the author is
if you have faith, then i will give it my best
moritz_ sjohnson: it's worth a try.
I've never tried to get something into a core module (except documentation), so I really can't tell
sjohnson perhaps if i make a good case for it
about how frustarting it is getting an @INC error 07:30
on migrating systems
when emergencies happen
... based on a true story!
sjohnson perhaps matt-w might be kind enough to let me use his quote 07:31
:3
sjohnson *puppy dog eyes* 07:33
Su-Shee sjohnson: just find 2 good arguments why it's missing and offer the already written code. 07:34
Matt-W My quote? 07:43
Su-Shee It's so common it just feels like it should be a builtin 07:44
that one.
Matt-W Oh 07:47
yes
sure
szabgab calling die() now gives me a Null PMC access in get_pmc_keyed() 09:14
moritz_ rakudo: die('a')
p6eval rakudo 9a7a1d: OUTPUT«a␤Null PMC access in get_pmc_keyed()␤current instr.: 'perl6;Perl6;Compiler;eval' pc 289208 (src/gen_actions.pir:24161) (src/gen_setting.pm:3340)␤»
moritz_ bah. 09:15
rakudo: 1/0
p6eval rakudo 9a7a1d: OUTPUT«Divide by zero␤»
moritz_ bah, no line number
Matt-W who broked it? 09:23
moritz_ probably the parrot folks
Matt-W entirely possible 09:25
I do look forward to the day when it's a bit more of a stable footing
Although I'm in no rush, because Parrot can become much more awesome before then
dalek kudo: 3d5f23c | moritz++ | docs/architecture.svg:
[docs] shiny chart of Rakudo's architecture (svg)
09:29
Matt-W moritz_: I liked that architecture chart 09:31
spinclad std: 2++4 09:38
p6eval std 27588: OUTPUT«##### PARSE FAILED #####␤Syntax error (two terms in a row?) at /tmp/TYzGLCkRqI line 1:␤------> 2++4␤ expecting any of:␤ POST␤ infix or meta-infix␤ infix stopper␤ postfix␤ postfix_prefix_meta_operator␤ standard stopper␤ statement
..modifier loop␤ terminator␤ whitespac…
spinclad (goes on backlogging) 09:39
pugs_svn r27589 | hinrik++ | Move perlintro.pod6 to perlintro.pod 09:55
pugs_svn r27590 | hinrik++ | [docs] Fix some formattting in perlintro.pod, replace Pugs with Rakudo 10:06
r27591 | hinrik++ | [docs] perlintro.pod: Use semantic Pod blocks, move Author section to the end, more reformatting 10:11
pmurias moritz_: re inclusion into Scalar::Util doesn't it contain magical functions? 10:21
moritz_ pmurias: dunno, the name doesn't imply that
pmurias i just read through the function list and most of the functions seemed deeply tied into the perl5 language/implementation 10:23
moritz_ C<Scalar::Util> contains a selection of subroutines that people have 10:24
expressed would be nice to have in the perl core, but the usage would
not really be high enough to warrant the use of a keyword, and the size
so small such that being individual extensions would be wasteful.
moritz_ seems to fit, although no black magic is required for trim() 10:25
szabgab std: 1+1
p6eval std 27591: OUTPUT«ok 00:02 36m␤»
literal hm, perldoc.perl.org has a new design 10:26
moritz_ wohoo
literal very neat 10:27
moritz_ imho a bit dark, but very nice
it's a strange irony that the one perl site which a very decent layout already got a new one, while others could use it much more 10:31
literal heh, yeah 10:32
perlmonks and use.perl have awful designs 10:33
pugs_svn r27592 | hinrik++ | [docs] perlintro.pod: Use K<> and =input blocks instead of C<> and =code where appropriate 10:34
pugs_svn r27593 | hinrik++ | [docs] perlintro.pod: Reformat the email L<>inks 10:43
Matt-W oh my 10:44
that's weird
going to take a while to get used to the new perldo
although the search engine isn't finding me anything at all 10:48
weird
and some nasty scrolling redraw effects too. No, I think I preferred the old perldoc. 10:49
szabgab rakudo: 1+1 10:50
p6eval rakudo 3d5f23: ( no output )
szabgab rakudo: 'aab' ~~ m/ a | aa /; say $/ 10:51
p6eval rakudo 3d5f23: OUTPUT«a␤»
moritz_ szabgab: how stand-alone is the stand-alone Padre download? do you still need a strawberry perl installed?
szabgab shouldn't that be aa ?
moritz_ longest token matching is NYI
pmichaud is working on it this summer
szabgab the stand-alone includes Strawberry 10:52
moritz_ ok, thanks
szabgab actually it currently installs in c:\strawberry
moritz_ my girlfriend wants to learn perl
literal how big is the download?
moritz_ and has no internet connection, and only windows
so I looked around what to download for her
szabgab so how are the test starting at line 55 in pugs/t/spec/S05-metasyntax/longest-alternative.t passing ? 10:53
moritz_ takes a look 10:56
szabgab it is still a bit far from being really beginner friendly - the built in help is not that good yet
it is about 14 mb
oh I guess they are skipped in that external test skipper
not by fudge
I keep forgetting about that
moritz_ only a selection of spectests is run, yes
szabgab rakudo: 'aab' ~~ m/ a || aa /; say $/
p6eval rakudo 3d5f23: OUTPUT«a␤» 10:57
szabgab evalbot does not have a good day it seems
moritz_ she just needs an editor with syntax hilighting and a button that runs the script
hm, why?
szabgab oh and in the stand-alone padre there still is no icon to launch padre :-( 10:57
but I hope there will be one by the birthday 10:58
moritz_ but a simple link on the desktop will do for starting it, no?
szabgab moritz_, why what ?
moritz_ 12:57 < szabgab> evalbot does not have a good day it seems 10:59
szabgab yes it will do
earlier it seemed to be dead and now it took a long time - though eventually answered 11:01
pmurias mildew: say "alive!?" 11:42
p6eval mildew: OUTPUT«alive!?␤»
szabgab how do you explain $/ is that a magic variable that is both a scalar and an array ? 11:45
why is the array part not called @/ ?
moritz_ it's an object.
and @ really only implies the Positional role, % implies the Mapping role 11:46
and $/ does both
szabgab oh so there is an @/ ? 11:47
moritz_ no
@($/) or $/.list
lambdabot Unknown command, try @list
moritz_ lambdabot: shut up
szabgab I think these roles and stuff are still way over my head
pmurias szabgab: $/ is not really magical 11:50
moritz_ for a Perl 5 programmer it is ;-)
pmurias it just gets set after you do a match
szabgab: when you keep an array in $foo "$foo = [1,2,3]" is $foo both a scalar and an array? 11:52
szabgab I think I have to go back to square one and try to understand why do we need to have arrays that have a $ as a sigil
rakudo: my $x = (1, 2, 3); say $x.WHAT; say $x[0]; 11:53
p6eval rakudo 3d5f23: OUTPUT«Array()␤1␤»
moritz_ actually it should be a Capture
pmurias szabgab: they are array refs from perl5
szabgab rakudo: my $x = [1, 2, 3]; say $x.WHAT; say $x[0];
moritz_ but $x = [1, 2, 3]; would create an Array
p6eval rakudo 3d5f23: OUTPUT«Array()␤1␤»
szabgab pmurias, yes I think I understand that but why do we need them ? 11:54
pmurias we don't
szabgab I thought the whole point was automatic reference/dereference
and I was hoping to get a good explanation 11:55
or that they will be removed :-) 11:56
pmurias arrays with the @ sigil could be removed without much harm
moritz_
.oO( then we'd get PHP )
11:57
szabgab I meant to remove arrays with $
moritz_ and give up polymorphism?
szabgab I don't understand how are they consistent with the design
moritz_ I mean you couldn't create a variable that either holds a hash or an array 11:58
pmurias szabgab: Arrays are objects, you can hold objects in scalars
the meaning of a '@' is this container does the Positional role
szabgab which means ? 11:59
moritz_ that you can call .[] on it
szabgab that you can say @x[3] ?
moritz_ right 12:00
%hash[3] will fail.
pmurias in $x = [1,2,3] $x is a Scalar which contains an Array, in @x = 1,2,3 @x is an Array
szabgab but you can do that on $x as well if it holds an array
moritz_ right, but only then 12:00
think of @ as an abbreviation of a type constraint
pmurias szabgab: there is a difference between holding and containing 12:01
moritz_ (at lesat for now)
szabgab so you mean @x can hold only arrays while $x can hold both scalars, arrays and hashes 12:01
pmurias you need to use VAR($x) to get at the $x variable
$x can hold anything
szabgab ok, what about $y ? 12:02
;-)
pmurias szabgab: do you see the difference between binding and assigment?
szabgab not really :-) 12:05
pmurias it's obvious once you try to implement binding & assignment ;) 12:06
moritz_ my ($x, $y); $x := $y; # now if you assign to $x, the value is also in $y, and vice versa 12:07
pmurias binding is like *foo = *bar; assignment is like $foo = $bar; 12:08
Matt-W reads backlog 12:10
Ah yes that confused me to start with
szabgab back later & 12:15
moritz_ @seen masak 12:43
lambdabot I saw masak leaving #perl6 1d 15h 36m 44s ago, and .
moritz_ would like to know how many people follow planetsix.perl.org 12:46
pmurias moritz_: re %hash[3] would fail, wouldn't %hash := \(...);%hash[3] work?
moritz_ pmurias: maybe 12:47
moritz_ phenny: tell szabgab I notice that all your Perl 6 examples still use parens after 'if', ie 'if ($str ~~ m/\=/) {' - is there a good reason for that? or plain old habit? 12:48
phenny moritz_: I'll pass that on when szabgab is around.
takadonet morning all 12:49
Matt-W moritz_: I follow planetsix.perl.org 12:50
takadonet: hi 12:51
moritz_ Matt-W: I guess the number is in the order of 1k or so, an IRC poll won't bring a reasonable result for that :-) 12:54
Matt-W moritz_: no probably not 12:55
araujo morning 14:35
lambdabot araujo: You have 1 new message. '/msg lambdabot @messages' to read it.
Matt-W afternoon 14:37
lisppaste3 Lorn pasted "recompiling re-smop" at paste.lisp.org/display/83747 15:03
Lorn pmurias: help ^^
Lorn pmurias: every 'svn up' i got a new error :P 15:03
cj [Coke]: enough out of you! 15:22
pugs_svn r27594 | pmurias++ | [re-smop] unbreak build 15:32
r27595 | pmurias++ | [re-smop] disable SMOP_PROFILE and SMOP_MOLD_DEBUG
r27596 | pmurias++ | [re-smop] remove debuging statements from mildew
r27597 | pmurias++ | [re-smop] make tools/ri support %yeast 15:33
pmurias Lorn: there's a bug at runtime which causes smop to loop infitly
[Coke] whistles innocently at cj. 15:34
pmurias cycling& 15:35
pmichaud Good morning, #perl6 15:43
Lorn pmurias: Good afternoon, from Brazil 15:46
KyleHa1 constant $foo = 22; lives_ok { $foo *= 1 }, 'identity'; # pmichaud, what do you think?
Lorn pmurias: works fine now, re-smop and re-mildew
pmichaud KyleHa1: that looks odd to me 15:49
I'd say it's not a valid spectest
KyleHa1 Okeydoke.
pugs_svn r27598 | kyle++ | [t/spec] Test for RT #64522 15:52
r27599 | kyle++ | [t/spec] fix the plan I forgot
pugs_svn r27600 | kyle++ | [t/spec] Can one "modify" a constant to its original value? I assume so here, but maybe s/lives_ok/dies_ok/g 15:53
r27601 | kyle++ | [t/spec] fudge constant.t for Rakudo
r27602 | kyle++ | [t/spec] Nope, can't assign to a constant, even if it doesn't change it.
KyleHa1 This concludes the fruits of my train ride. Time to work... 15:54
pmurias Lorn: re works fine, lucky you re-mildew loops here 17:11
Lorn pmurias: no, i did not get any re-mildew loops, all tests ran ok in re-mildew 17:17
dalek kudo: faf91f9 | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 415 files, 11802 passing, 2 failing

   S12-attributes/instance.rakudo 121 - Can initialize one attribute based on another (1)
   S12-attributes/instance.rakudo 122 - Can initialize one attribute based on another (2)
18:28
pmichaud TimToady: STD.pm:4479 has :my $sigspace is context<rw> = $*sigspace // 0; 18:40
doesn't that need to be CALLER::<$*sigspace> or something like that? 18:41
TimToady those were probably all $+sigspace at the time, which was (at the time) defined to imply one level of caller 19:04
it currently works because of the stupid translation that gimme5 does, and the resulting support from p5 semantics
so yes, but when I fix that I'll also have to fix gimme5 :)
pmichaud in the final version, is it likely to become CALLER::<$*sigspace>, or will we have a notation that implies one level of caller?
okay. 19:05
I guess the notation that implies one level of caller is CALLER:: :-)
TimToady I think it's better if it starts looking in this space
pmichaud oh, I agree
I'm looking to start refactoring PGE to be more STD-like and ran into that. 19:06
TimToady looks like there are a number of places that are wrong that way
pmichaud yes
it's okay if they're wrong -- perhaps we just want to XXX them for now 19:07
I don't mind if STD.pm is wrong in places, as long as we know where they are :-)
migrating PGE to handle some of the new semantics is going to be interesting. I'm starting to think it's easier to start over than to migrate what I already have. 19:08
(because then I don't have to deal with Parrot deprecation issues)
I wonder how hard it would be to write the operator precedence parser in NQP 19:09
TimToady well, Cursor does most of the regex semantics, but not all
pmichaud right
TimToady doesn't try to do & or && yet
pmichaud that's one of the significant differences from what PGE does now
so starting over seems easier
TimToady and it only fakes LTM with a trie 19:10
pmichaud is the faking not likely to be good enough?
TimToady oh, it's good enough, unless you mean "fast enoguh"
*enough
pmichaud got it.
grammars are essentially subclasses of Cursor? 19:11
TimToady yes
pmichaud okay, good. 19:12
TimToady the current cursor encapsulates the current Match state as well as the current language 19:13
in theory you could freeze a cursor to have everything you need to provide the setting for an eval 19:14
pmichaud okay. I like this design.
TimToady but currently the p5 implementation keeps a few things in localized globals just to keep things from getting too slow
pmichaud it fills in a lot of the "holes" that I've been struggling with for years.
TimToady and in theory each cursor is immutalbe, and you just continually derive new ones 19:15
but for ratchet code you can actually reuse them mostly
pmichaud I hadn't caught that aspect of it.... that's helpful to know. 19:16
TimToady but immutable cursors plus lazy lists is a brain-dead easy way to do backtracking 19:16
the interesting thing is to see the translation that gimme5 does to STD.pm5
where it needs to do lazymap vs where it can just get away with conditionals 19:17
pmichaud PGE's model had been to compile regexes into explicit subroutines to do the matching.... is that consistent with STD/gimme5's approach?
TimToady they're always methods in STD
pmichaud where the methods are a compiled form of the regex?
TimToady always methods on the current cursor
yes 19:18
pmichaud fantastic
TimToady again, you can see how they translate to p5 semantics in STD.pm5
pmichaud for the past week or so I've been having trouble getting motivated to write Rakudo code... perhaps that's an indication I need to be doing regex stuff
TimToady and note that it's hardly using p5 regexen at all
if viv were a bit further along, we could actually emit the rakudo code from it 19:19
pmichaud every time I sit down to make a change in Rakudo, I think "yeah, but I'm going to throw it out once we start doing std-like stuff"
TimToady but I haven't quite got it to the place where it can replace gimme5
pmichaud on another topic, while you're here
did you see the discussion yesterday regarding binding?
TimToady yes, not really sure what to think about it yet
pmichaud okay. 19:20
I'll just re-register the notion that := having semantics similar to signature bind feels more "correct" the more I think of it.
that's the way I'm going to head for now, at any rate :-)
in particular, it matches more closely with the idea that my @a := $v; requires that $v does positional 19:21
TimToady yes, proxies enforcing the additional constraints
pmichaud correct
TimToady and for unadorned @a you presumably don't need the proxy
er 19:22
unadorned $a
since @a is adorned :)
pmichaud at any rate, that looks dead-simple to implement in rakudo, and resolves several of the binding issues I had asked about at NPW
it also unifies our binding semantics some what, which I think will likely simplify a few other sections of code that are kinda weirdish.
TimToady so we can get pure ref aliasing still as long as you do it with 'my $a :=' 19:23
pmichaud that works for me.
anyway, we'll head that direction in Rakudo, and if things change later I don't think it'll be a killer for us.
TimToady still think we need a way of telling primitive binding to allow trailing stuff 19:24
so that for and map don't have to count args
pmichaud yes, we need that also somehow
TimToady maybe it's just an out parameter where it can put the remainder
basically an implied capture parameter at the end 19:25
(or parcel)
pmichaud okay, thanks for the quick tips -- they give me some solid directions to move in 19:27
payload rakudo: 1.0.atan2(1.0) 21:23
p6eval rakudo faf91f: ( no output )
payload rakudo: say atan2(1.0, 1.0)
p6eval rakudo faf91f: OUTPUT«Could not find non-existent sub atan2␤»
payload why is atan2 only a method? 21:24
rakudo: say 1.atan2(1.0) 21:25
p6eval rakudo faf91f: OUTPUT«Method 'atan2' not found for invocant of class 'Int'␤»
TimToady n 23:13
nm
sjohnson toady! 23:14
TimToady you were supposed to say np
sjohnson np 23:15
pugs_svn r27603 | lwall++ | [S06-signature/optional.t] nullterm allowed only after final comma 23:26
r27603 | lwall++ | also, eval_dies_ok would always have died anyway due to missing {...}
tann rakudo: my $x = "\tx\t\n"; $x.trim; say "[$x]"; 23:45
p6eval rakudo faf91f: OUTPUT«[ x ␤]␤»
TimToady rakudo: my $x = "\tx\t\n"; $x.=trim; say "[$x]"; 23:46
p6eval rakudo faf91f: OUTPUT«[x]␤»
TimToady rakudo: my $x = "\tx\t\n".trim; say "[$x]";
tann TimToady: will there be a left_trim/right_trim? 23:47
p6eval rakudo faf91f: OUTPUT«[x]␤»
TimToady there is none specced currently 23:48
and the situation doesn't arise very often
tann neither is trim specced :)
TimToady and when it does s/\s+$// works
is so
S32-setting-library/Str.pod
tann s32 .t file shows trim_start and trim_end but i guess they won't make it then 23:51
methinks, trim_start, trim_end are bad names as people would think the trimming starts and expect the trimming to end :) 23:54