Index

Show enters and exits. Hide enters and exits.

00:03:10marcandreevan: hi! Just got back from California
00:46:40brixenevan: more data on http://bench.rubini.us/
00:46:48brixenspec run seems to be more stable
00:46:54brixenst = ~2 this time
00:47:00brixener sd = ~2
00:48:56brixenok, battery almost dead, bbl...
01:33:22ddubwaves
01:33:26ddubwhats new in rubinius?
01:33:42ddubthinks rubinius needs a twitter feed
01:33:51evanwe do
01:33:54evanwhat would be on it?
01:34:00evanbeen working on making it faster
01:34:04evancheck out bench.rubini.us
01:34:11ddubnews on the robots-on-unicorns branch
01:34:19ddubI've heard relatively little about that ever since I proposed it
01:34:36evani've been trying to get them to cooperate
01:34:38evanit's not going well.
01:35:20ddubevan: perhaps you aren't doing it properly? http://joshsmithonwpf.files.wordpress.com/2008/03/missile-throwing-eyebeam-laser-robot-on-a-unicor n.gif
01:36:00ddub(I really want to know where that image originally came from, in the hopes that varying images in the same ilk would be there)
01:36:11evanthere is also
01:36:12evanhttp://www.flickr.com/photos/87258185@N00/sets/72157603724213121/
01:36:19evanrobocop on a unicorn
01:37:43dduboh excellent, http://www.flickr.com/photos/87258185@N00/2235636815/
01:38:04evan:D
01:39:27ddubrbx data is so tiny on those last two graphs
01:39:42evanyeah
01:39:48evanwe need to figure out how to better show them.
01:40:37ddubyeah, exponential would make incremental improvements look smaller
01:41:36ddubso things are 5x mri ?
01:42:34evanyou can see the numbers looking at the source (we need to show the numbers for the latest run i think)
01:42:45evanlike, rdoc is about 14% MRI it appears
01:55:43ddubI'm very disappointed by wolfram alpha
01:55:44ddubhttp://www82.wolframalpha.com/input/?i=robots+vs.+unicorns
04:55:44bradedigerAnyone around here a time zone guru? Got any hints as to where I'd start looking into this? http://gist.github.com/132403 (note the UTC offset on the last line)
06:03:34manveruwhen i try building rubinius i get:
06:03:35manveru/usr/bin/ruby vm/instructions.rb
06:03:37manveru/home/manveru/pkgbuilds/rubinius-git/src/rubinius/vm/codegen/instructions_gen.rb:19:in `require': no such file to load -- parse_tree (LoadError)
06:04:12manveru/usr/bin/ruby is ruby 1.9.2dev (2009-06-12 trunk 23670) [x86_64-linux]
06:24:26brixenmanveru: I guess we need to remove the parse_tree dep
06:24:42brixenyou're probably the first person to use 1.9 to build rbx
06:34:53manveruhmm
06:38:06manveruwhat is it used for?
06:49:12brixengenerating instructions code
06:53:48manverudoesn't rubinius have it's own parser?
06:54:07brixenyeah, parse_tree is not a parser
06:54:42brixenit's a way to get a sexp from the MRI parse tree
07:13:37boyscoutMake all benchmark graphs zoomable and update rubini.us template. - 8d6b7ea - Brian Ford
07:16:03boyscoutCI: 8d6b7ea success. 2709 files, 10767 examples, 33781 expectations, 0 failures, 0 errors
09:00:53nemerle_mHello sirs. I've encountered an inconsistency with Channel class, it's ruby part says 'attr_reader :waiting', while cpp/hpp doesn't have waiting List, only an int counter of waiting threads. Which one is the 'true' interface ?
09:09:50brixennemerle_m: the C++ code is the true interface
09:10:03brixenlooks like the waiting attr is from shotgun days
09:10:19brixenpre-C++ vm
09:10:33nemerle_mok
09:12:50boyscoutAdded hover for data points in benchmark graphs. - 406a27a - Brian Ford
09:15:03boyscoutCI: 406a27a success. 2709 files, 10767 examples, 33781 expectations, 0 failures, 0 errors
11:51:29nemerle_mIs there any documentation regarding native threads, global lock and all that jazz ? :)
11:57:29nemerle_mI'm trying to wrap my head around the current Channel class implementation. It looks like some parts of it are not very thread safe, but that is most likely caused by my lack of insight in the workings of the global_lock.
13:29:31nemerle_moh great joy, running with GIL debugging on causes the problem to disappear
15:02:53nemerle_msome food for thought: http://pastie.org/517576
15:09:08cheapRocholy hell, is that for real... is rbx really completing the entire rubyspec in 91s?
15:09:24nemerle_mthats mspec-ci :)
15:09:28cheapRocah
15:09:50nemerle_mand it's a debug build
15:25:18r2p2hi =)
15:32:08r2p2under ubuntu 9.04 i need also the libssl-dev package - it is not in the requirements in getting_started.txt
15:34:27badboyyes
15:34:37badboythis is already reported here: http://github.com/evanphx/rubinius/issues#issue/14
15:35:05r2p2ah thanks and sry for double posting :)
15:35:17badboyno problem
15:40:26badboyhm...i will try it again to compile with gcc 4.4 =D
15:42:34sbryant_workdamn :(
15:42:52sbryant_workI wanted to ask about the spec runs with the gil in debug.
15:42:58badboybut?
15:47:42sbryant_workbut he left
15:48:11badboyit works!
15:48:20badboyi can compile rubinius with gcc 4.4 =D
16:06:50bradedigerWould someone mind reviewing / applying this tiny VM test patch? https://rubinius.lighthouseapp.com/projects/5089-rubinius/tickets/776-patch-fix-a-bad-assert-in-test _time_strftime
16:47:56manveruevan: around?
16:48:28manveruif you got a few minutes, please join #rack-core , thanks
17:59:32boyscoutVM test_strftime: Fix the assert so that it fails when necessary - b769b3d - Brad Ediger
18:01:01evanmanveru: i'm in there
18:04:58boyscoutCI: b769b3d success. 2709 files, 10767 examples, 33781 expectations, 0 failures, 0 errors
18:14:35brixenevan: well, mystery of non-running cron solved: '/bin/sh: brixen: command not found'
18:14:48brixenapparently the user cron can't specify a user?
18:16:56dbussinkbradediger: fyi, i've applied your patch and pushed it
18:17:19bradedigerdbussink: thanks, appreciated.
18:17:32dbussinkbradediger: you can poke evan about access
18:17:38evanfuck
18:17:39evanyea
18:17:45evanwhy did it run before?
18:17:47evani guess it never did.
18:17:48evanack.
18:18:05evandbussink: i gave it to him :)
18:21:23sbryant_workbrixen: yeah that's not very cron-like
18:21:38sbryant_workbrixen: as root you can.
18:21:48sbryant_workcrontab -e [user]
18:22:07sbryant_workor -u
18:22:56sbryant_workyeah it's -u
18:23:13brixensbryant_work: yeah, I think that was the confusion
18:23:22sbryant_workhas it changed?
18:23:42evanno
18:23:45evancron just sucks.
18:23:47sbryant_workFor some reason I just remember giving a user after asking to edit it, but I could be loosing my memory.
18:23:48evanstill the same.
18:23:55sbryant_workevan: fair enough :)
18:24:16sbryant_workIt does get the job done though
18:24:29evanexcept when it silently does nothing
18:25:04sbryant_workYou can set up error handling
18:25:21sbryant_workI had annoying one send me emails when it fails for any reason
18:25:50sbryant_workToday is not my day for using the English language.
18:26:06evanit rarely is my day
18:26:36sbryant_workSo I bought a new macbook pro yesterday, should be able to hack again soon.
18:26:56sbryant_workGotta redo the .emacs configuration and then I should be good to go.
18:27:12evancool
18:29:43sbryant_workso what's new in rubinius?
18:31:25evanworking on performance a lot
18:32:01sbryant_workExciting!
18:33:12sbryant_workI wanted to ask how is LLVM going to work with a release of rubinius?
18:33:46evanwell, the JIT i'm writing uses LLVM
18:33:51evanis that what ya mean?
18:33:54sbryant_workNo
18:34:28sbryant_workBasically, lets say all of a sudden you're ready to release this to the masses. Are you going to bundle LLVM?
18:34:49evanah
18:34:55evanwe haven't decided
18:34:58evanit's certainly an option
18:36:00sbryant_workI'm certainly interested in hacking on rubinius again so I know I'll get LLVM but if anyone wants to "test drive" rbx that might pose a problem?
18:36:48evantrue
18:36:55evanwell, right now it's optional
18:37:00evanso that helps
18:37:04sbryant_workFair enough.
18:37:15sbryant_workI guess I should have asked "is this a bridge you
18:37:26sbryant_workway to go me, the best typist ever.
18:37:47sbryant_workThis is a bridge that you'll be crossing later, so that answer my question.
18:38:00evanyeah, it is.
18:38:11evanwe could do a number of things
18:38:19evanbundle the source
18:38:38evanlikely in a tar.gz though
18:39:38evanhave people build it on their own
18:39:47sbryant_workah
18:39:52evancompile some binaries for certain platforms
18:39:59sbryant_workleave it to the package managers in most cases?
18:39:59evanfor people to use, rather than having to compile LLVM
18:40:10evanwell, when it comes to binaries of rbx
18:40:15evanit's a non-issue
18:40:20evanLLVM will be linked directly in
18:42:26sbryant_workmakes sense.
18:45:19evanmacournoyer: allo allo
18:45:29macournoyerhey evan
18:45:31macournoyerwhat's up?
18:46:04evanoh chillin'
18:46:08evanmakin' rubinius fast
18:46:35macournoyeryeaah dawg!
18:47:29evani'm rewriting the inline caches atm
18:47:41macournoyerthe callsite stuff?
18:47:45evanyeah
18:47:58evanso they're more efficent in the interpreter
18:48:09sbryant_workany low hanging fruit that I can look at?
18:48:38evansbryant_work: bin/mspec tag --list fails
18:48:42evanfix any!
18:48:45sbryant_workevan: thanks :D
18:48:52brixenevan: hah, beat me to it
18:49:04evani should make that an irc alias thing in irssi
18:49:14evan /listfails
18:49:19sbryant_workThis is going to be my rewrite .emacs until it's good hacking project, project.
18:49:27evanhehe, you know
18:49:37evanwe could make boyscout respond to !randomfailure
18:49:38evanor something
18:49:39brixensbryant_work: I can send you a .vimrc, get you a leg up :)
18:49:46macournoyerhow can you make callsite more efficient?
18:49:46evanand print out a random entry from --list fails
18:49:56macournoyerisn't it O(1) now for monomorphic?
18:49:58brixenevan: good idea, go!
18:50:06sbryant_workbrixen: send it along. sean@hackinggibsons.com
18:50:08evanmacournoyer: it's less about big O
18:50:16sbryant_workI'll see if I can get elisp whatever vimscript you have.
18:50:18evanand more about number of instructions between the site and the destination method
18:50:25evanO(1) deals with algorithms
18:50:37evanthis is less an algorithmic thing
18:50:42brixensbryant_work: heh, it was more in jest, my vimrc is rudimentary
18:50:42evanand more an architecture thing
18:50:51macournoyerah ok
18:50:59macournoyeryou're deep in Shark then I guess
18:51:02sbryant_workbrixen: oh, when I vim'd I had tons of different crap
18:51:36evanmacournoyer: i have been, yes
18:51:47evani'm actually switching the arch back to the way we had it in shotgun
18:52:04evanwhere there is a function pointer installed in an object that each call site holds
18:52:21evanand that function pointer knows how to operate on the current state of the call site
18:52:31evanso, when the call site is empty, it points to InlineCache::empty_cache
18:52:34evanwhen it's filled, it points to
18:52:41evanInlineCache::check_cache
18:52:57macournoyeroh I see
18:53:01macournoyerit's more flexible
18:53:03evanit evens out the calling, fewer conditions
18:53:07brixendynamic programming in C ftw
18:53:16evanyeah, it's basically dynamic programming :)
18:53:17macournoyera bit like open object model
18:53:17brixenfunction pointers rock heh
18:53:25macournoyerby Ian P.
18:53:53macournoyerhey brixen, what's up!
18:54:09evanmacournoyer: yep!
18:54:14sbryant_workSounds functional :D
18:54:24evanmacournoyer: Ian Pumarta works in LA actually, we've had lunch
18:55:22macournoyerevan: that's a bit what I did in tinyrb actually, each callsite points to a function, even interpreted methods
18:55:46macournoyerand I specialized the more I could: TrVM_interpret_method, TrVM_interpret_method_with_defaults, TrVM_interpret_method_with_splat, etc
18:56:03macournoyerto move the checks out of the intrepreter loop
18:56:07brixenhey macournoyer
18:56:18evanmacournoyer: yep!
18:56:25evanvery similar
18:56:34evanyou working on tinyrb much?
18:57:01macournoyernot that much, I'm taking a lil break ;)
18:57:04evanslava: poke
18:57:17macournoyersomeone started work on the gc so I might work on that
18:57:20evanmacournoyer: well, if you wanna do some VM development, we'd love to have ya
18:57:27evanyou've been doing all the same prep I did
18:57:31evanwhen I first started rubinius
18:58:08macournoyeryeah sure
18:58:14macournoyerI have to get into C++
18:58:35evanthats not too bad
18:58:47evanand we're happy to help
19:21:56sbryant_workbrixen: the hover data points thing really helped out the benchmark page!
19:22:59brixencool!
19:24:09evanoh did you add them?
19:24:17evanyay!
19:25:07brixenyeah
19:25:10evanwe need to get on top of the linux thread specs
19:25:18brixenindeed
19:25:28evani'll take a look today
19:32:15evanwoop!
19:32:34evan46.8s for 33779 excpectations with the new inline caches!
19:32:47brixenheh, awesome!
19:33:04evanthe memory profile for them still isn't ideal
19:34:00evanactually...
19:34:10evani guess they're not keeping things alive now
19:34:21evanunless they're rarely run
19:34:35evanbecause if a class looses all it's refs except for ICs
19:34:49evanthen running the ICs will clear that class out (it can't match an instance then)
19:34:58evanso i guess i rarely run IC could keep a class alive.
21:32:20ddubwhats new today in rubiniusland?
21:32:31ddublooks at bench.rubini.us to see how much rbx can bench
21:32:45evannew inline cache code is reducing spec run time by 3-4s
21:32:47evanwhich is good
21:34:11ddubthinks that fits the 140 character limit of twitter and would be a good second post to twitter.com/rubinius ;)
21:34:35slavahi evan
21:34:47evanslava: allo! i was curious what you were doing to clear your inline caches
21:35:49slavawhen code is redefined or when a full GC occurs I clear them all
21:37:22evanyou clear them all on both cases?
21:38:10slavayes
21:38:24evangeez
21:38:25evanok
21:38:32slavaV8 does something similar
21:38:36evando you just keep a big list that references all of them?
21:38:43evani was looking for the code that that in v8
21:38:45evani didn't find it
21:38:50slavano, because in both cases I already scan the code heap
21:39:02slavawhen code is redefined I have to scan the code heap to update jumps and calls
21:39:13slavawhen doing a full GC it resets the ICs in the sweep phase
21:39:24evanhm, interesting
21:39:25evanok
21:39:34evanso you do it while you're scanning the code heap
21:39:41evanas a side effect
21:39:59slavathe relocation code resets jumps to point at the cold-call entry point
21:40:08slavathis entry point patches the jump to point to a new IC
21:40:20evansure
21:43:03evanwhats the code you generate for the IC look like?
21:43:05evanx86 wise
21:43:19evani'm looking at the code GCC is generating for a trampoline that checks and executes now
21:44:31slavathere's a piece of code which gets an object's class first
21:44:34slavathen a series of checks:
21:44:43slavacmp %reg,$x
21:44:47slavaje some_method
21:44:50slavacmp %reg,$y
21:44:52slavaje some_other_method
21:44:55slavathen the miss code
21:45:30evanok, so you clear all the caches
21:45:42evanbecause you're embedding the direct address of classes/types in the stream?
21:45:57slavacache stubs are their own little blocks in the code heap
21:46:01slavaso if you call a generic word
21:46:13slavathat compiles as a call to the stub which has the conditionals that jump to the method bodies
21:46:29evanyou're hand generating the code in the ICs now yes?
21:46:35evanyou're not using your normal compiler
21:46:52slavaright, the code to generate the ICs is in C++ and its very simple
21:47:04evanwheres that at now?
21:47:07evanwants to peak
21:47:10slavathere's a bunch of different machine code blocks that get build during bootstrap, when it makes an IC it glues them together and patches the jumps
21:47:15slavavm/inline_cache.cpp
21:48:53evanwow, thats odd.
21:49:04evani've been writing vm/inline_cache.[ch]pp the last 2 days
21:49:06evan:D
21:50:06slavathe "pic type" stuff is because different classes need different tests
21:50:16slavaif all the members of the pic are identifiable by their pointer tag alone, its just a bit mask
21:50:22slavabut in the general case it needs to read the header
21:50:25slavadoes that make sense?
21:50:31slavaother than that, it should be straightforward
21:50:52slavaI gotta go
21:51:05evanlater
22:57:25evanquiet friday today
22:58:53sbryantYeah, today was a pretty quiet day.
22:59:23brixenI've got syck.bundle building, working on replacing the insane parts of rubyext.c
22:59:23evani'm busy making the inline caching stuff work with the jit
22:59:26evanit's going nicely!
22:59:31brixensweet
22:59:34evanbrixen: coool
23:00:55badboybrixen: I can compile rubinius with gcc 4.4 now
23:01:03brixenbadboy__: awesome!
23:01:15brixenbadboy__: looking forward to some patches :)
23:02:46badboywithout any patches
23:02:50badboyjust latest git pull
23:03:08brixenright, I mean looking forward to your patches fixing spec failures :)
23:03:14badboyah!
23:03:19brixendon't let your flawless rbx build go to waste!
23:03:22brixenheh
23:03:28badboyyeah..I already posted the failures ;)
23:03:43badboyit's this difference between linux and mac
23:04:49badboyhow do i start the specs manually?^^
23:05:07evanbin/mspec ci <file>
23:05:10evanlike that ya mean?
23:05:33badboyah ok
23:06:10badboybut I need to finish my patch to i3lock first^^
23:08:56sbryantnew mac, what's some essential software?
23:09:06evanmacvim
23:09:08evan#1
23:09:09evan:D
23:09:12sbryant:(
23:09:15sbryantI emacs.
23:09:21sbryant<3 Emacs.
23:09:24evanthat sounds like something a doctor should look at
23:09:39sbryantHe'll just find perfection.
23:09:56badboylinux!
23:10:00evana perfect tumor growing on the base of your skull
23:10:02evan:D
23:10:03sbryantCuriously, have you actually tried the religion?
23:10:04evananyway
23:10:05evanmm
23:10:17evantweetie is great these days
23:10:24evanlets see, what do I have open right now
23:10:44dgtizedbah, how come you can't categorize github projects with tags
23:10:53evanLaunchbar, Tweetie, Transmission, Adium, iPulse, MacVim
23:11:02sbryantiPules?
23:11:10evansbryant: i've tried to use emacs a number of times
23:11:20evanit's too hard without someone to there to help you along in the beginning
23:11:21sbryantI got Transmission and Adium (beta has awesome twitter support)
23:11:27scooprxcode ;)
23:11:34sbryantI hate Xcode.
23:11:40scooprsure, but you get gcc
23:11:48sbryantOh I installed it ;)
23:11:52sbryantHad to build emacs :D
23:11:53scooprright'o =)
23:11:55scoopr:D
23:12:06scooprand macports for easy installation of git et al
23:12:20sbryantevan: if you ever want to give it a try, let me know.
23:12:34evanthe last time i tried was about 6 months ago
23:12:37sbryantscoopr: thanks.
23:12:38evani tried for a couple days
23:12:52evanit's frusterating because there is sooo much friction
23:13:02sbryantI did that a number of times and then I committed to hating myself for a month until I learned what to do.
23:13:32sbryantYeah it has a super steep learning curve but after it "clicks" it's so nice.
23:14:38badboysome c guru here who want to show me how to properly read an unknown length of bytes via stdin?
23:14:38evansbryant: so i've heard
23:14:39scooprI refuse to configurate a text editor with lisp ;)
23:14:47badboyin C of course (ruby makes this so easy...)
23:14:48sbryantI love lisp
23:14:54evanthe reason i give up is i rarely hit something MacVim doesn't do
23:15:01evani'm a minimal editor person by nature
23:15:07evani can't remember a million key combos
23:15:09evanmy brain just can't do it.
23:15:21sbryantevan: there's a pattern
23:15:33scooprI'm boring and just do textmate =)
23:15:39sbryantscoopr: that's emacs light.
23:16:19scooprwell, I've done zero M-X please-edit-the-way-I-want commands ;)
23:16:43scooprand it has done about 95% everything I've wanted
23:17:21sbryantWell I used to be a vim person, and then I saw the light.
23:17:43badboygod damn! if I print out the wrong variable it can't show the right results...
23:17:59sbryantLet me put it this way, my irc client is part of emacs.
23:18:26scooprlet me put it this way, as I see it, when my code editor has irc in it, it has failed ;)
23:19:13brixenheh, my favorite quote about emacs is: it's an ok editor, pretty good os
23:19:19sbryant^
23:19:25sbryantIt is my OS
23:19:29badboyargh! c needs recompile... -_-
23:19:38evanyeah, see, i've got better things to do with my time
23:19:43scoopryeah, I've heard the quote as 'It's an ok OS with horrible built-in text-editor' ;)
23:19:45evanthan recreate an OS inside emacs.
23:19:51sbryantfair enough :)
23:19:53brixenscoopr: heh, that too
23:20:07brixennothing compares to vim editing commands
23:20:18brixenit took me 15 years of emacs-ish editors to see the light
23:20:41sbryantbrixen: hacking in edwin for all those years?
23:21:37scooprthat said, I don't really like vim either, but had to learn one of those, just so I'm able to edit in any random unix box.. and it kinda stuck as the editor I use in linux
23:22:30sbryantIt doesn't really matter in the end.
23:22:36scooprindeed
23:23:00brixensbryant: nah, emacs for a long time and textmate
23:23:17sbryantDo you muck around in vimscript?
23:23:24evanI got brixen to switch to dvorak too
23:23:35sbryantevan: you dvorak?
23:23:42evan10+ years now
23:23:51evanwow, thats crazy.
23:23:58sbryantThat is crazy.
23:24:05sbryantHow did you learn?
23:24:08evani started october of 1998
23:24:10sbryantI've been wanting to try it.
23:24:23evanwell, it helped being
23:24:28evan1) a college freshman
23:24:38evan2) a CS student who couldn't touch type
23:24:49evanheres what I did
23:24:56ddubI'm waiting for something nerdier than dvorak to come along
23:25:02evanprint out the dvorak keyboard onto a 4 by 1 piece of paper
23:25:07evaninches
23:25:15evantape it to the top of your monitor
23:25:19ddubat this point if I switch I'm just following the trend
23:25:30evanthen switch
23:25:37evanit's slow going for about 2 weeks
23:25:49evanbut you learn quickly to look UP to find where the key is
23:26:03sbryanthah.
23:26:06evanafter a day or two, your finger muscle memory resets enough to find the keys easier
23:26:32evanafter you feel comfortable, take the paper down
23:26:40evanand take it like under your keyboard or something
23:26:51evans/take/put/
23:26:59evanthrow it away when you forget it's under there
23:26:59evan:D
23:27:26badboyhmpf...rubinius fucked up my firefox =D
23:27:37sbryantevan: cool, I'll follow the advice.
23:27:37ddubI don't know if I could do that now that my brain is so wired for qwerty
23:27:41sbryantShould be interesting.
23:27:56evanddub: think of it as a little mental exercise then
23:28:40badboyI got a email that my reported issue was fixed
23:28:48badboyi clicked the link and now my firefox hangs...
23:29:09evanweird!
23:33:08brixenman, I cannot get a github issue to close using the shortcut keys
23:33:37brixenI can j,k up and down, x to select, but e does shit
23:43:04evanrad
23:43:19evannew InlineCache code makes the JIT's callsites cleaner
23:43:38evanbecause it can do
23:43:51evanmov 0x234aabc, %ecx
23:43:52evan...
23:43:55evancall *%ecx
23:44:15evanwhere that address is the location in memory where the cache's function pointer lives
23:45:45evanstill takes 15 instructions to do all the setup at the call site
23:49:11ddubevan: if only dvorak was an iphone keyboard option
23:49:28ddubI guess I mean dvorak-themed :)
23:50:26evandude
23:50:29evanyou're tellin' me!
23:50:34evanevery release
23:50:38evani check to see if they've added it.
23:51:50sbryantIf you're willing to jailbreak it you can install a dvorak keyboard.
23:52:19ddub how do you think they would do it? I mean, dvorak has the extra symbols above home row, seems like they would move the number/symbol/letter toggle up there
23:52:31ddubcolemak would be easier I think
23:52:31mahargqwerty makes no sense as a touch screen keyboard anyways
23:52:57mahargnot like you can touch type
23:53:33evani'd love dvorak on the iphone
23:53:41evanbut it's like like my desktop muscle memory translates
23:53:42ddubsure you can touch type
23:53:48ddubyou just don't get tactile feedback
23:53:49evanso i don't mind qwerty on it
23:53:58ddubbut your hands are fixed in place because they are gripping the device
23:54:07evanddub: are you one of those big guys with the hands of 13 year old girl?
23:54:10ddubthe real trick, I've found, is to type on the iphone drunk
23:54:21sbryanthttp://code.google.com/p/networkpx/
23:54:24ddubI get amazing speed and accuracy after a 3 drink minimum
23:55:02mahargI mean touch type in the sense of how mavis beacon teaches you to type. You can't use all five fingers of each hand for typing, so using an analogous layout to real keyboards gains you nothing in terms of muscle memory familiarity
23:55:05ddubwell ok, I type on my normal keyboard using just my thumbs as well
23:56:19ddubdidn't you notice at rubyconf?
23:56:21ddub;-)
23:56:35ddubimagines what that would look like and giggles
23:56:58ddubespecially if it was 'two thumbs down'
23:57:26scooprddub, thats when you don't notice your typos and accidentally start to trust the autocorrection feature? ;)
23:57:57evani can sort of 'touch type' on the iphone