Index

Show enters and exits. Hide enters and exits.

00:33:50brianmariook
00:34:25brianmarioso what just changed? Melbourne being default?
00:34:32brianmariocause shit just got WAY fucking fast
01:06:22rueThink someone toggled on the fast mode
01:11:58rueShould probably explicitly check that configure has been run in the Rake tasks
02:04:33brixenbrianmario: evan fixed a nasty bug with the c-api handles
02:04:58brianmarioah ok
02:05:24brixenthe new parser/compiler helps too
02:05:38brixenbasically calls about 50% fewer methods compiling CI specs
02:05:53brianmarioyeah my benchmarks went from ~5s (from an IO) ~2s (from a string) to ~1.7s for both
02:06:01brixenbut the handles thing was causing objects to persist and putting a lot of pressure on the GC
02:06:06brixensweet
02:06:08brianmarioah
02:06:18brianmariogreat work :)
02:06:22brixenwe're going to be tweaking the gc soon
02:06:30brianmarionice
02:06:41brianmariowere you guys working on some GC stats stuff or something too?
02:06:48brixenyep
02:07:07brixennot sure it will go in the 0.13 release, but hopefully
02:07:20brixeneither way, it'll be soon
02:07:32brixenok, I'm gonna grab some food, bbl...
02:07:41brianmariocool
17:18:34boyscoutPorted 894eb643d (Pete Bevin's DATA patch) to melbourne. - ff9f9d0 - Brian Ford
17:22:50brixenevan: trying to remove the exceptions tuple on CompiledMethod and while -Xint runs fine, the jit fails horribly
17:22:54brixenwhat am I missing?
17:23:06evanoh
17:23:18boyscoutCI: ff9f9d0 success. 3002 files, 11343 examples, 35344 expectations, 0 failures, 0 errors
17:23:19evanyou have to run jit:generate_header
17:23:24evanbut you need llvm-g++ installed first
17:23:29brixenhm, ok
17:24:30brixenevan: also working on getting rake-compiler in
17:24:37brixenit still uses extconf.rb
17:24:50evanit does?
17:24:52evanwell damn.
17:25:03brixenand I've decided there is no worse piece of ruby software than mkmf
17:25:12evanseriously.
17:25:12brixenI dare anyone to show me worse
17:25:14evanno doubt.
17:25:21brixenbut I can make it work
17:25:23Zoxclikes clang's statical analyzer.
17:25:30brixenit does simplify thing a bit
17:25:35brixenthings*
17:26:00evanonly if it's useful
17:26:08evandon't do it if we're in the same boat
17:26:28brixenyeah, it's useful merely because it's more standard
17:26:34brixenand I trust luis to maintain it
17:26:54brixenour ExtensionCompiler is merely another attempt at the same thing
17:27:07brixenwhich eschewed mkmf
17:27:21evanright.
17:27:24brixenactually, it's possible to use extconf.rb without using mkmf
17:27:35brixenbut I can't find a real advantage in that either
17:27:38evanmight be nice to build a way to not use mkmf into rake-compiler
17:27:41evaneventually
17:27:46brixenyeah
17:27:54brixenwell, a replacement for mkmf for sure
17:28:04brixensomething that doesn't use make at all
17:35:09flavorjonesbrixen: if you come up with something better that will work across platforms, definitely pull in tenderlove or me for help testing.
17:35:23brixenflavorjones: re? mkmf?
17:35:24flavorjoneswe've got nokogiri build problems that are essentially unsolvable with mkmf
17:35:30brixenahh ok
17:36:16flavorjonesspecifically, have_func totally ignores what include directories you might have declared for compiling against
17:36:23flavorjonesannoying as hell.
17:36:35brixensee, that's a huge problem right now for building C ext againts rbx
17:36:49brixenit *cannot* use the installed ruby headers
17:37:03brixenbut it want's to inject that into the include path behind my back
17:37:16brixenit's just a lot of wrangling for no good reason
17:37:30brixenI'm tempted to just use rake deps and rules
17:37:41brixensince we have a hard requirement that rake is available
18:39:48boyscoutFix glibc atanh() exception bug - 0ed858e - Evan Phoenix
18:41:50brixenevan: what is the proper way to run jit:generate_header
18:42:03evanrake git:generate_header
18:42:04evanthats all.
18:42:13brixennot quite, here's what I did
18:42:28brixendownloaded the 2.6 bin for clang and llvm-gcc
18:43:03brixenrunning the 2.6 llc generates different sigs for eg llvm::IntegerType::get(int)
18:43:11brixenI'll give you a paste
18:43:50brixenhttp://gist.github.com/230164
18:44:03evanum
18:44:06evanyou don't need clang.
18:44:15brixenwell, I need llc
18:44:18evanoh
18:44:26evanyou don't have the correct version of either
18:44:26brixenand instead of using the bins, I configured with svn
18:44:30evanprobably of llc
18:44:30brixenright
18:44:47brixenwe need to doc this
18:44:52evanthe version of llvm
18:44:54evaner.
18:45:02evanllvm-g++ can be any recent version
18:45:08brixenk
18:45:10evanbut you must use a 2.6 or later llc
18:45:15evani don't think you are.
18:45:24brixenwell, then that doesn't make sense
18:45:25evanyou can use the one that is in external_libs
18:46:10brixenthe rake file has a path to the external_libs llc
18:46:22brixenI built from the svn version that configure pulled
18:46:49evansomething is up
18:46:49brixenthat gives me the same error as making the rakefile use the 2.6 binary llc I download
18:46:53evanit must have not used the proper llc.
18:47:16brixener, wait
18:47:22boyscoutCI: 0ed858e success. 3002 files, 11343 examples, 35344 expectations, 0 failures, 0 errors
18:47:35brixenthe 2.6 binary llc created the file that errors compiling (the gist)
18:48:00evanwhat 2.6 binary
18:48:04evani don't know what that is.
18:48:06brixenthe llc built from the svn version does not understand the -cppgen=contents flag
18:48:14evanthat can't be.
18:48:43brixenllvm+clang-2.6-i386-darwin9/bin/llc is the binary download
18:48:52evanbinary from what?
18:48:54evanfrom llvm.org?
18:49:20brixenyes
18:49:27evanput the output of vm/external_libs/llvm/Release/bin/llc --help
18:49:28evaninto a gist.
18:49:51evanand what do you have for llc -version
18:49:58brixenhttp://gist.github.com/230166
18:50:16evanno
18:50:21evani want the entire --help
18:50:45brixenyeah, reload
18:50:52brixenI was making that gist before you asked
18:50:57evanah fuck
18:51:04evanit's not building the cpp backend
18:51:08evan:/
18:51:27evanwhat about the downloaded llc
18:51:32evando -version and -help on it
18:52:17brixenhttp://gist.github.com/230167
18:52:55brixenoops, 2.5 installed somewheres :/
18:53:13evanright
18:53:16evanthats why it doesn't work.
18:53:26evani'll fix how external_libs is built
18:53:29evanso it includes the cpp backend
18:54:18brixenhad port install of 2.5
18:54:42evangotcha.
18:54:48evansorry about this
18:55:01evani thought just installing llvm-g++ would do it
18:55:18brixenso, I put the path to llvm-clang on the end of PATH and it picked up the 2.5 version
18:55:33evanoops
18:55:33evanyeah
18:55:34brixenI don't even remember when I installed that
18:55:36evanyou don't need clang.
18:55:36brixengone now
18:56:13brixenwell, llc is in the clang binaries that you download, not in llvm-gcc
18:56:17brixenthat's confusing
18:56:38evanwell, it shouldn't be with llvm-gcc
18:56:39brixenusing the 2.6 llc binary worked
18:56:42evanbut it should be with the llvm core package
18:57:40brixenwell, "worked" as in built
18:57:55brixenbut http://gist.github.com/230172
18:58:10brixenI give up, I'll go work on some other extremely frustrating thing
18:58:15brixenfor monday morning
18:58:19evansorry man.
18:58:20evan:/
18:58:22brixenle'see extconf...
18:58:31evanthis is a tricky part
18:58:41evanbecause the JIT needs to know the layout of certain classes
18:58:42brixenyeah
18:59:16evani was letting you keep going hoping it would work itself out
18:59:27evanbut obviously i've failed to make it at all doable by anyone but me.
18:59:55brixenwell, I was hoping I could work it out too
19:00:07brixensince I'd like to understand how it works!
19:00:09brixenheh
19:00:39evanis frusterated.
19:01:22evanoh
19:01:22evanok
19:01:26evanso you removed what
19:01:38brixenexceptions tuple on CompiledMethod
19:01:47evanok
19:01:54evando you still have that work?
19:01:57evanor did you back it out
19:02:06brixenI can give you a diff
19:02:08brixensec..
19:02:10evanno no
19:02:20evani'd rather get someone else doing this but me
19:02:35evanwe can go to the phone if that would be less frusterating
19:02:40evan(probably would be)
19:02:53brixenoh, either way
19:03:14brixenI'm just lost on what I need to build llvm
19:29:51brixenexcellent, built and all specs pass
19:31:57evancooh.
19:31:58evangood.
19:52:42evanbrixen: where is 'argv' thats used in ARGF
19:52:51evanwe've got WAY WAY too many tagged specs atm.
19:53:06evani'm trying to go through them and fix+untag simple ones
19:53:54evannm, i found it.
19:54:48brixenok
19:54:59brixenevan: this is the diff of types.cpp.gen http://gist.github.com/230212
19:55:12brixenwhat's the 64 -> 32 change in there?
19:55:22evanerk
19:55:23evanyeah, thats bad.
19:55:39brixenso, leave that change out?
19:55:53evanyeah
19:55:55evanfuck
19:55:57evani'm dumb.
19:56:03evansize_t is a long.
19:56:05evanoops.
19:56:07evanjust change that.
19:56:11evango into class.hpp
19:56:23evanand change size_t packed_size_ to "unsigned int packed_size_"
19:56:34evanor, better
19:56:38evan"uint32_t packed_size_"
19:56:42brixenk
20:32:35brixenhowdy agardiner
20:32:43agardinerhowdy brixen
20:32:56agardinerbeen busy I see! :-)
20:33:05brixenheh, did I break anything in the debugger?
20:33:08agardinercongrats on getting melbourne done!
20:33:16brixenthanks!
20:33:27agardineri've no idea... haven't touched in too long.. :-(
20:33:36brixenok, no worries
20:33:53brixenI was planning on going over how it decodes CM's and stuff
20:33:58agardineri keep thinking i will get some free time back, but it never seems to happen
20:34:11brixen:(
20:34:19brixenthings going well, though?
20:34:25agardinerah, well most of that is actually from methods on CM, like decode etc
20:34:30agardineryeah, pretty good
20:34:40brixencool
20:35:04agardineralthough the last week has been sucky at work - having to wrangle with vbscript, of all things!
20:35:06agardinershudders
20:35:13brixenomg
20:35:16brixenthat's terrible
20:35:17agardinerthat is one braindead language
20:35:23agardineryeah...
20:35:29brixenI think the last vbscript I did was in '97 or something
20:35:30brixenheh
20:35:38agardinerunfortunately, its the scripting langauge for this tool we're using at work
20:35:51brixenwow, sorry to hear that :)
20:35:58agardineri've stayed away from it as much as possible, but finally got cornered
20:36:02agardiner:-D
20:36:07brixendamn
20:37:27agardinerits not all bad though
20:38:05boyscoutRemoved unused CompiledMethod exceptions tuple. - 081e0d9 - Brian Ford
20:38:06agardinerthe tool supposedly ony allows you to implement event handlers, but i've found a way to load other code so i can make use of some utility functions to make it a little less painful
20:38:18brixenahh cool
20:38:42brixenevan: could ya make sure that commit builds on SL, please
20:39:40agardinerso, these changes on CM coming out of the melbourne/ng work
20:39:41agardiner?
20:40:01brixennot the exceptions stuff
20:40:31brixenthat's based on evan's change to the interp
20:41:02brixenbut I'm trying to clean up how opcodes are decoded and stuff
20:41:08agardinerhmm... haven't seen that. I think the logs aren't updating
20:41:21brixenlike, there's CM methods that decode based on a fixnum or symbol
20:41:45brixenbut the iseq will always have one or the other, and the decode context should use the right method
20:41:56agardinerright
20:42:12agardineri saw a while back that you'd reworked the iseq stuff too
20:42:29agardinerlooks cleaner now
20:42:29brixenalso, I'm looking at changing the generator stream to hold a ref to the opcode object itself
20:42:45brixenyeah, the gen stuff from instruction_parser is way nicer
20:43:00brixenall the needed files are generated pretty sanely now
20:43:41brixensee rakelib/instruction_parser.rb and rakelib/vm.rake
20:43:52brixenstill a lot of cleanup left to do on the build system
20:43:57brixenbut we're making progress
20:44:23agardinersmall steps make giant leaps
20:44:30agardiner(eventually)
20:44:32agardiner:-)
20:44:48agardinerso i saw there was a bug in immix that was the reason for the ng slowdown...
20:44:50brixenheh, I'm ready for the eventually already
20:45:01brixenah, bug in the C-API handles
20:45:04agardiner:-)
20:45:27brixenworking great now
20:45:29agardineri was wondering today if that changes the results of the tests evan did way back
20:45:39brixenwhich tests?
20:45:40agardinerwhere he found there wasn't much fragmentation
20:45:48brixenoh, probably not
20:45:53agardinerso not a huge need for compaction
20:45:56brixenthose were done on regular ruby code
20:46:11agardinerah, so this only affects capi, got ya
20:46:12brixenprobably not, but we'll add it eventually
20:46:17brixenyeah
20:46:28brixenwe're adding some stats output for the GC
20:46:36brixenso we should be able to tune it quite a bit
20:46:53brixenit's cool that % GC is at like 25% under heavy load from compiling all the CI specs
20:46:57agardineryeah, i want to play with those
20:47:03brixenI think we can improve that a few % points
20:47:18brixenwhich sounds pretty good for long running apps too
20:47:19agardinerthat is an improvement already
20:47:19boyscoutCI: 081e0d9 success. 3002 files, 11343 examples, 35344 expectations, 0 failures, 0 errors
20:48:24brixenyay boyscout
20:48:33brixenok, time to find some food...
20:48:42brixenagardiner: don't be a stranger, man! :)
20:48:42agardinercatch you later
20:48:50agardineri'll try not to be!
20:48:52agardiner:-)
20:48:54brixenheh
20:48:55brixencool
22:09:00dbussinkevan: available?
22:09:09evanyep.
22:09:26dbussinkevan: i was wondering about that atanh stuff, isn't that failing in MRI too then?
22:09:51evannot sure
22:10:16evanif so, i'm happy back that out and make that exception platform specific
22:10:17dbussinknot that i don't like consistency, but mri often exposes underlying C behavior pretty directly
22:10:21evanthough, it sucks that it's platfom specific
22:10:43evaneven if MRI is broken on it, i'd prefer we normalize
22:16:54brixenwoohoo, oscon is back in pdx
22:17:01evanwoo!
22:18:43brixenI need to come up with a fun talk proposal
22:18:59brixenlet's see... I could pull a rabbit... oh that's been done
22:19:02brixenhm..
22:19:18dbussinkbrixen: does "Tried to use object of type Tuple (56) as type Symbol (51) (TypeError)" ring a bell with you with the new compiler?
22:19:35brixendbussink: nope
22:19:48brixendid you do a clean build?
22:20:14dbussinkbrixen: yeah, but this is with another project
22:20:33brixenok
22:20:47brixendunno, I have exactly 0 context for that question ;)
22:21:55dbussinkbrixen: well, maybe you'd knew it as an issue with stale stuff or something that isn't cleaned up with a clean build etc
22:22:31brixenI really have no idea
22:22:37brixenwhat command did you run?
22:23:19dbussinkbrixen: i was attempting to run some extlib specs
22:23:26brixenI'm adding a sha hash of all the compiler+parser files so we know whether we can load an rbc
22:23:39dbussinkbrixen: it's rspec so i know that's nasty, but it came further with the old compiler
22:24:05brixenwell, I can't investigate if I don't know the command :P
22:24:13brixenshould I just start typing randomly?
22:24:30dbussinkbrixen: clone extlib from github.com/datamapper/extlib
22:24:34dbussinkbrixen: install rspec
22:24:52dbussinkbrixen: run ../rubinius/bin/rbx -S spec spec/lazy_array_spec.rb
22:24:56dbussinkand boom
22:25:04brixenwhich branch?
22:25:16brixenstupid lazy array
22:25:25dbussinkmaster
22:25:28brixen#2 on my list of hated ruby softwary
22:25:35brixenjust after #1 mkmf
22:25:41dbussinkif you have improvements for lazy array, please let me know :)
22:27:36brixenum, I have better things to do with my time
22:27:48brixenwhat version of rspec?
22:28:00brixenI just installed 1.2.9
22:28:21dbussinkbrixen: that should work yeah
22:28:25brixenk
22:28:28evandbussink: if you supply a gist and such
22:28:31evanthat would help alos.
22:28:32evanalso.
22:28:48dbussinkbrixen: what is it you don't like about? the general idea or the implementation? and if the latter, what parts exactly?
22:29:31brixenwell that's nasty, I just got a bus error
22:29:54brixendbussink: it's had its greater than average # of problems running on rbx
22:30:08brixenand yes, the impl last I looked made me go ewww
22:30:17brixenmaybe it's just a hard problem
22:31:08brixeninstead of trying to piggy-back Array, I'd probably make a more suitable first-class data structure
22:31:13dbussinkbrixen: well, it actually needs to hook into stuff pretty deep because of what it tries to do
22:31:37evani think it's wrong the way it tries to fuck with the insides of Array
22:31:43brixenwhat's it trying to do, give me a headache?
22:31:48evanwhy not just have it be a seperate class that delegates to an array?
22:31:50brixencus it's been doing that :)
22:32:00evandefine the methods you want in their own terms.
22:32:27brixenyeah, "hooking into stuff pretty deeply" is your first red flag
22:32:45brixenobjects don't collaborate by hooking into stuff
22:32:47dbussinkcould definitely look into that yeah
22:32:49brixenthat's for fishing
22:34:14brixendbussink: did you remove all the rbc files?
22:34:27dbussinkbrixen: afaik i did, you don't see an error?
22:34:31brixenI actually get a compiler exception during a transform
22:34:37brixennope, no type error
22:35:20dbussinkbrixen: hmm, well i get different exceptions on different spec files
22:35:35brixenrbx -S spec spec/lazy_array_spec.rb
22:35:38brixenthat's what I ran
22:35:49brixenanyway, I'm going to finish some stuff
22:35:54brixenfeel free to post an issue
22:37:30evanyeah, an issues is better
22:37:33evanso we get it documented.
22:37:41evanin fact, if you find problems in any external code
22:37:46evanan issue is the first thing that should happen.
22:38:44dbussinkevan: i actually have ticketed a segfault :)
22:38:54evanok good
22:38:59evanthis doesn't sound at all related.
22:39:34dbussinksomething completely different yeah
22:40:00dbussinkbrixen: is there a way to better debug it so i can create a better ticket?
22:40:19evancan you get a backtrace?
22:41:36brixendbussink: how to attempt to reproduce it and whatever the output you got are the 2 most important things
22:42:22dbussinkbrixen: true, but i wouldn't mind being able to look a bit further in how i could simplify it etc.
22:42:33dbussinkevan: this is the segfault issue: http://github.com/evanphx/rubinius/issues#issue/69
22:44:35evanyeah, i can't repro that
22:44:41evantried this weekend.
22:46:20brixenugh
22:46:22dbussinkevan: hmm, are you sure you have rdoc / ri generation enabled?
22:46:33brixenlazy_array.rb 445 on
22:46:34evani thought so
22:46:36evani can retry.
22:46:41brixenthat's why lazy_array is so terrible
22:47:00brixenit's trying to run: results = @array.+(*args, &block)
22:47:04brixeneff that man
22:47:05evanwow.
22:47:10evanthats just.
22:47:11evanwow.
22:47:14brixenyeah
22:48:39brixenwhich is fucking up the meta_send_op_plus transform
22:48:42brixenwhich I will fix
22:48:51brixenbut nonetheless, that code is terrible
22:48:56evanaah
22:48:58evanyeah
22:49:04evanwhy is that passing a block to #+?
22:49:08evan#+ can't take a block.
22:49:15brixenit's got no clue what's doing
22:49:20brixenit's just codegen
22:49:21evank
22:49:27evanyeah, you can probably just ignore the block there.
22:49:29evanin codegen.
22:49:34brixennono
22:49:42brixenlazy_array is codegen'ing that
22:49:54evanwhy does lazy_array codegen anything?
22:49:59brixendoing class_eval over all Array and Enumerable methods
22:50:03evansweet!
22:50:04evannot.
22:50:13brixendude, I'll get you gist
22:50:21brixensince you haven't looked at it :)
22:50:24brixenyou gotta see it
22:51:09brixenhttps://gist.github.com/f916a5f53e840de0629e
22:51:47evansweet.
22:51:57evani guess i see how that code showed up.
22:52:06brixenI just need to fix the transform to expect obj + *yay
22:52:12evank
22:52:52brixenwhich of course only works in the form a.+(b)
22:53:00evanright
22:53:07brixenbut who would write that? right
22:53:11brixenmmkay
22:53:13evanit obviously should bail nicely if it doesn't see the simple form
23:16:48evanmmm, ARGF in place mode...
23:17:39brixen=== fun ?
23:17:46evan== skipping!
23:17:47brixenor should it be ~~~
23:17:50brixenhehe
23:17:55evanwe don't support -i
23:18:00evanso i'm just not going to worry about it for now.
23:18:33brixenjust shell out to perl if someone passes that and let them get all confused by the syntax errors
23:18:36brixen:)
23:18:48evanhehe
23:19:16evancase "-i"; exec "ruby_mri", *ARGV
23:20:45brixenok, 1229 examples, 17 failures for lazy array
23:20:47brixennot too bad
23:20:54brixenI've got the type errors now
23:20:56ddubperhaps case "-i"; exec "/sbin/reboot", "now -m '#{ARGV.join}'"
23:21:06brixenhehe
23:21:18brixento see the look on their face...
23:21:19evanddub: me like!
23:21:52brixencan't use now though, in case they are ssh'd
23:21:54ddubfor a while my reboot and shutdown commands just echoed 'no' to the console
23:21:58brixenyou want them to see it
23:22:03dduba surprising number of friends I gave shell accounts to noticed :P
23:22:10brixenhehe
23:22:31ddubweee, 10.6.2
23:23:04ddubswitches his console off the computer he is VNC'd into so he can upgrade it
23:23:50evanddub: oh, whats new?
23:24:01evanwith 10.6.2
23:24:04evani don't care whats up with you
23:24:05evan:D
23:24:19ddubI'd read out the change list to you
23:24:24ddubbut the text is all blurry from tears
23:24:34evanhah
23:25:13ddubthis is going to be an interesting two weeks
23:25:27ddubget wednesday off, go on a cruise friday through monday, then rubyconf
23:25:38evanoh, where ya going?
23:25:42evanthats a short cruise
23:25:52ddubyeah, three day cruise as a family thing
23:25:59ddubmy grandmother is turning 82 this week
23:26:29ddubprobably will be just enough time to get over internet withdrawl
23:26:30evanoh, congrats to her!
23:26:31ddubthen, rubyconf!
23:26:37evanbuy her a Budlight for me on the cruise.
23:26:40ddubwhere there's most likely not going to be internet or power
23:26:43evanBud Light
23:27:19ddubmaybe I should get one of those 3G wireless cards
23:27:44evanwhere is the cruise at?
23:27:46ddubI love how OS X does not shut down screen sharing while installing system updates
23:27:47evanit probably won't work.
23:28:25ddubport canaveral to nassau to cococay back home
23:34:13ddubI tried hard to convince her and my mom to let me pay for them to go parasailing
23:35:06evanoh man
23:35:07evanthey should!
23:35:20ddubI know, you only live once right?
23:35:32ddubits not like I'm going to put the video up on youtube or anything
23:35:50evancourse not!
23:35:59ddubjust facebook
23:36:10evan82 is a great age to start low impact extreme sports
23:36:13evanlike parasailing.
23:36:22ddubI totally agree
23:36:32evanwhats why i'm not going now
23:36:36evani wanna wait until i'm old.
23:36:46ddubmy dad has been a bit bummed at the problems his parents are having now in their mid 80's, he's like "I don't want to get old"
23:37:00ddubI recommended that after retirement, he start international base jumping as a hobby
23:38:09evankeep himself fit!
23:38:17evanand mind limber
23:39:20ddubI'm fine with rock climbing as well, and might recommend kite surfing just to pass the time
23:40:22evanall sound like nobel hobbies
23:43:25ddubthere was a study I read about recently where they said there is pretty no age too late for physical activity to improve your overall health
23:43:32ddubI believe they used participants in their mid 70's
23:44:00ddubmy dad is pretty active (dispite a bad foot and back), hopefully he stays so for a few more decades :)
23:44:38ddubI might see if they will do a skidoo if not parasail