Show enters and exits. Hide enters and exits.
| 00:03:10 | marcandre | evan: hi! Just got back from California |
| 00:46:40 | brixen | evan: more data on http://bench.rubini.us/ |
| 00:46:48 | brixen | spec run seems to be more stable |
| 00:46:54 | brixen | st = ~2 this time |
| 00:47:00 | brixen | er sd = ~2 |
| 00:48:56 | brixen | ok, battery almost dead, bbl... |
| 01:33:22 | ddub | waves |
| 01:33:26 | ddub | whats new in rubinius? |
| 01:33:42 | ddub | thinks rubinius needs a twitter feed |
| 01:33:51 | evan | we do |
| 01:33:54 | evan | what would be on it? |
| 01:34:00 | evan | been working on making it faster |
| 01:34:04 | evan | check out bench.rubini.us |
| 01:34:11 | ddub | news on the robots-on-unicorns branch |
| 01:34:19 | ddub | I've heard relatively little about that ever since I proposed it |
| 01:34:36 | evan | i've been trying to get them to cooperate |
| 01:34:38 | evan | it's not going well. |
| 01:35:20 | ddub | evan: 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:00 | ddub | (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:11 | evan | there is also |
| 01:36:12 | evan | http://www.flickr.com/photos/87258185@N00/sets/72157603724213121/ |
| 01:36:19 | evan | robocop on a unicorn |
| 01:37:43 | ddub | oh excellent, http://www.flickr.com/photos/87258185@N00/2235636815/ |
| 01:38:04 | evan | :D |
| 01:39:27 | ddub | rbx data is so tiny on those last two graphs |
| 01:39:42 | evan | yeah |
| 01:39:48 | evan | we need to figure out how to better show them. |
| 01:40:37 | ddub | yeah, exponential would make incremental improvements look smaller |
| 01:41:36 | ddub | so things are 5x mri ? |
| 01:42:34 | evan | you can see the numbers looking at the source (we need to show the numbers for the latest run i think) |
| 01:42:45 | evan | like, rdoc is about 14% MRI it appears |
| 01:55:43 | ddub | I'm very disappointed by wolfram alpha |
| 01:55:44 | ddub | http://www82.wolframalpha.com/input/?i=robots+vs.+unicorns |
| 04:55:44 | bradediger | Anyone 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:34 | manveru | when i try building rubinius i get: |
| 06:03:35 | manveru | /usr/bin/ruby vm/instructions.rb |
| 06:03:37 | manveru | /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:12 | manveru | /usr/bin/ruby is ruby 1.9.2dev (2009-06-12 trunk 23670) [x86_64-linux] |
| 06:24:26 | brixen | manveru: I guess we need to remove the parse_tree dep |
| 06:24:42 | brixen | you're probably the first person to use 1.9 to build rbx |
| 06:34:53 | manveru | hmm |
| 06:38:06 | manveru | what is it used for? |
| 06:49:12 | brixen | generating instructions code |
| 06:53:48 | manveru | doesn't rubinius have it's own parser? |
| 06:54:07 | brixen | yeah, parse_tree is not a parser |
| 06:54:42 | brixen | it's a way to get a sexp from the MRI parse tree |
| 07:13:37 | boyscout | Make all benchmark graphs zoomable and update rubini.us template. - 8d6b7ea - Brian Ford |
| 07:16:03 | boyscout | CI: 8d6b7ea success. 2709 files, 10767 examples, 33781 expectations, 0 failures, 0 errors |
| 09:00:53 | nemerle_m | Hello 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:50 | brixen | nemerle_m: the C++ code is the true interface |
| 09:10:03 | brixen | looks like the waiting attr is from shotgun days |
| 09:10:19 | brixen | pre-C++ vm |
| 09:10:33 | nemerle_m | ok |
| 09:12:50 | boyscout | Added hover for data points in benchmark graphs. - 406a27a - Brian Ford |
| 09:15:03 | boyscout | CI: 406a27a success. 2709 files, 10767 examples, 33781 expectations, 0 failures, 0 errors |
| 11:51:29 | nemerle_m | Is there any documentation regarding native threads, global lock and all that jazz ? :) |
| 11:57:29 | nemerle_m | I'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:31 | nemerle_m | oh great joy, running with GIL debugging on causes the problem to disappear |
| 15:02:53 | nemerle_m | some food for thought: http://pastie.org/517576 |
| 15:09:08 | cheapRoc | holy hell, is that for real... is rbx really completing the entire rubyspec in 91s? |
| 15:09:24 | nemerle_m | thats mspec-ci :) |
| 15:09:28 | cheapRoc | ah |
| 15:09:50 | nemerle_m | and it's a debug build |
| 15:25:18 | r2p2 | hi =) |
| 15:32:08 | r2p2 | under ubuntu 9.04 i need also the libssl-dev package - it is not in the requirements in getting_started.txt |
| 15:34:27 | badboy | yes |
| 15:34:37 | badboy | this is already reported here: http://github.com/evanphx/rubinius/issues#issue/14 |
| 15:35:05 | r2p2 | ah thanks and sry for double posting :) |
| 15:35:17 | badboy | no problem |
| 15:40:26 | badboy | hm...i will try it again to compile with gcc 4.4 =D |
| 15:42:34 | sbryant_work | damn :( |
| 15:42:52 | sbryant_work | I wanted to ask about the spec runs with the gil in debug. |
| 15:42:58 | badboy | but? |
| 15:47:42 | sbryant_work | but he left |
| 15:48:11 | badboy | it works! |
| 15:48:20 | badboy | i can compile rubinius with gcc 4.4 =D |
| 16:06:50 | bradediger | Would 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:56 | manveru | evan: around? |
| 16:48:28 | manveru | if you got a few minutes, please join #rack-core , thanks |
| 17:59:32 | boyscout | VM test_strftime: Fix the assert so that it fails when necessary - b769b3d - Brad Ediger |
| 18:01:01 | evan | manveru: i'm in there |
| 18:04:58 | boyscout | CI: b769b3d success. 2709 files, 10767 examples, 33781 expectations, 0 failures, 0 errors |
| 18:14:35 | brixen | evan: well, mystery of non-running cron solved: '/bin/sh: brixen: command not found' |
| 18:14:48 | brixen | apparently the user cron can't specify a user? |
| 18:16:56 | dbussink | bradediger: fyi, i've applied your patch and pushed it |
| 18:17:19 | bradediger | dbussink: thanks, appreciated. |
| 18:17:32 | dbussink | bradediger: you can poke evan about access |
| 18:17:38 | evan | fuck |
| 18:17:39 | evan | yea |
| 18:17:45 | evan | why did it run before? |
| 18:17:47 | evan | i guess it never did. |
| 18:17:48 | evan | ack. |
| 18:18:05 | evan | dbussink: i gave it to him :) |
| 18:21:23 | sbryant_work | brixen: yeah that's not very cron-like |
| 18:21:38 | sbryant_work | brixen: as root you can. |
| 18:21:48 | sbryant_work | crontab -e [user] |
| 18:22:07 | sbryant_work | or -u |
| 18:22:56 | sbryant_work | yeah it's -u |
| 18:23:13 | brixen | sbryant_work: yeah, I think that was the confusion |
| 18:23:22 | sbryant_work | has it changed? |
| 18:23:42 | evan | no |
| 18:23:45 | evan | cron just sucks. |
| 18:23:47 | sbryant_work | For some reason I just remember giving a user after asking to edit it, but I could be loosing my memory. |
| 18:23:48 | evan | still the same. |
| 18:23:55 | sbryant_work | evan: fair enough :) |
| 18:24:16 | sbryant_work | It does get the job done though |
| 18:24:29 | evan | except when it silently does nothing |
| 18:25:04 | sbryant_work | You can set up error handling |
| 18:25:21 | sbryant_work | I had annoying one send me emails when it fails for any reason |
| 18:25:50 | sbryant_work | Today is not my day for using the English language. |
| 18:26:06 | evan | it rarely is my day |
| 18:26:36 | sbryant_work | So I bought a new macbook pro yesterday, should be able to hack again soon. |
| 18:26:56 | sbryant_work | Gotta redo the .emacs configuration and then I should be good to go. |
| 18:27:12 | evan | cool |
| 18:29:43 | sbryant_work | so what's new in rubinius? |
| 18:31:25 | evan | working on performance a lot |
| 18:32:01 | sbryant_work | Exciting! |
| 18:33:12 | sbryant_work | I wanted to ask how is LLVM going to work with a release of rubinius? |
| 18:33:46 | evan | well, the JIT i'm writing uses LLVM |
| 18:33:51 | evan | is that what ya mean? |
| 18:33:54 | sbryant_work | No |
| 18:34:28 | sbryant_work | Basically, lets say all of a sudden you're ready to release this to the masses. Are you going to bundle LLVM? |
| 18:34:49 | evan | ah |
| 18:34:55 | evan | we haven't decided |
| 18:34:58 | evan | it's certainly an option |
| 18:36:00 | sbryant_work | I'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:48 | evan | true |
| 18:36:55 | evan | well, right now it's optional |
| 18:37:00 | evan | so that helps |
| 18:37:04 | sbryant_work | Fair enough. |
| 18:37:15 | sbryant_work | I guess I should have asked "is this a bridge you |
| 18:37:26 | sbryant_work | way to go me, the best typist ever. |
| 18:37:47 | sbryant_work | This is a bridge that you'll be crossing later, so that answer my question. |
| 18:38:00 | evan | yeah, it is. |
| 18:38:11 | evan | we could do a number of things |
| 18:38:19 | evan | bundle the source |
| 18:38:38 | evan | likely in a tar.gz though |
| 18:39:38 | evan | have people build it on their own |
| 18:39:47 | sbryant_work | ah |
| 18:39:52 | evan | compile some binaries for certain platforms |
| 18:39:59 | sbryant_work | leave it to the package managers in most cases? |
| 18:39:59 | evan | for people to use, rather than having to compile LLVM |
| 18:40:10 | evan | well, when it comes to binaries of rbx |
| 18:40:15 | evan | it's a non-issue |
| 18:40:20 | evan | LLVM will be linked directly in |
| 18:42:26 | sbryant_work | makes sense. |
| 18:45:19 | evan | macournoyer: allo allo |
| 18:45:29 | macournoyer | hey evan |
| 18:45:31 | macournoyer | what's up? |
| 18:46:04 | evan | oh chillin' |
| 18:46:08 | evan | makin' rubinius fast |
| 18:46:35 | macournoyer | yeaah dawg! |
| 18:47:29 | evan | i'm rewriting the inline caches atm |
| 18:47:41 | macournoyer | the callsite stuff? |
| 18:47:45 | evan | yeah |
| 18:47:58 | evan | so they're more efficent in the interpreter |
| 18:48:09 | sbryant_work | any low hanging fruit that I can look at? |
| 18:48:38 | evan | sbryant_work: bin/mspec tag --list fails |
| 18:48:42 | evan | fix any! |
| 18:48:45 | sbryant_work | evan: thanks :D |
| 18:48:52 | brixen | evan: hah, beat me to it |
| 18:49:04 | evan | i should make that an irc alias thing in irssi |
| 18:49:14 | evan | /listfails |
| 18:49:19 | sbryant_work | This is going to be my rewrite .emacs until it's good hacking project, project. |
| 18:49:27 | evan | hehe, you know |
| 18:49:37 | evan | we could make boyscout respond to !randomfailure |
| 18:49:38 | evan | or something |
| 18:49:39 | brixen | sbryant_work: I can send you a .vimrc, get you a leg up :) |
| 18:49:46 | macournoyer | how can you make callsite more efficient? |
| 18:49:46 | evan | and print out a random entry from --list fails |
| 18:49:56 | macournoyer | isn't it O(1) now for monomorphic? |
| 18:49:58 | brixen | evan: good idea, go! |
| 18:50:06 | sbryant_work | brixen: send it along. sean@hackinggibsons.com |
| 18:50:08 | evan | macournoyer: it's less about big O |
| 18:50:16 | sbryant_work | I'll see if I can get elisp whatever vimscript you have. |
| 18:50:18 | evan | and more about number of instructions between the site and the destination method |
| 18:50:25 | evan | O(1) deals with algorithms |
| 18:50:37 | evan | this is less an algorithmic thing |
| 18:50:42 | brixen | sbryant_work: heh, it was more in jest, my vimrc is rudimentary |
| 18:50:42 | evan | and more an architecture thing |
| 18:50:51 | macournoyer | ah ok |
| 18:50:59 | macournoyer | you're deep in Shark then I guess |
| 18:51:02 | sbryant_work | brixen: oh, when I vim'd I had tons of different crap |
| 18:51:36 | evan | macournoyer: i have been, yes |
| 18:51:47 | evan | i'm actually switching the arch back to the way we had it in shotgun |
| 18:52:04 | evan | where there is a function pointer installed in an object that each call site holds |
| 18:52:21 | evan | and that function pointer knows how to operate on the current state of the call site |
| 18:52:31 | evan | so, when the call site is empty, it points to InlineCache::empty_cache |
| 18:52:34 | evan | when it's filled, it points to |
| 18:52:41 | evan | InlineCache::check_cache |
| 18:52:57 | macournoyer | oh I see |
| 18:53:01 | macournoyer | it's more flexible |
| 18:53:03 | evan | it evens out the calling, fewer conditions |
| 18:53:07 | brixen | dynamic programming in C ftw |
| 18:53:16 | evan | yeah, it's basically dynamic programming :) |
| 18:53:17 | macournoyer | a bit like open object model |
| 18:53:17 | brixen | function pointers rock heh |
| 18:53:25 | macournoyer | by Ian P. |
| 18:53:53 | macournoyer | hey brixen, what's up! |
| 18:54:09 | evan | macournoyer: yep! |
| 18:54:14 | sbryant_work | Sounds functional :D |
| 18:54:24 | evan | macournoyer: Ian Pumarta works in LA actually, we've had lunch |
| 18:55:22 | macournoyer | evan: that's a bit what I did in tinyrb actually, each callsite points to a function, even interpreted methods |
| 18:55:46 | macournoyer | and I specialized the more I could: TrVM_interpret_method, TrVM_interpret_method_with_defaults, TrVM_interpret_method_with_splat, etc |
| 18:56:03 | macournoyer | to move the checks out of the intrepreter loop |
| 18:56:07 | brixen | hey macournoyer |
| 18:56:18 | evan | macournoyer: yep! |
| 18:56:25 | evan | very similar |
| 18:56:34 | evan | you working on tinyrb much? |
| 18:57:01 | macournoyer | not that much, I'm taking a lil break ;) |
| 18:57:04 | evan | slava: poke |
| 18:57:17 | macournoyer | someone started work on the gc so I might work on that |
| 18:57:20 | evan | macournoyer: well, if you wanna do some VM development, we'd love to have ya |
| 18:57:27 | evan | you've been doing all the same prep I did |
| 18:57:31 | evan | when I first started rubinius |
| 18:58:08 | macournoyer | yeah sure |
| 18:58:14 | macournoyer | I have to get into C++ |
| 18:58:35 | evan | thats not too bad |
| 18:58:47 | evan | and we're happy to help |
| 19:21:56 | sbryant_work | brixen: the hover data points thing really helped out the benchmark page! |
| 19:22:59 | brixen | cool! |
| 19:24:09 | evan | oh did you add them? |
| 19:24:17 | evan | yay! |
| 19:25:07 | brixen | yeah |
| 19:25:10 | evan | we need to get on top of the linux thread specs |
| 19:25:18 | brixen | indeed |
| 19:25:28 | evan | i'll take a look today |
| 19:32:15 | evan | woop! |
| 19:32:34 | evan | 46.8s for 33779 excpectations with the new inline caches! |
| 19:32:47 | brixen | heh, awesome! |
| 19:33:04 | evan | the memory profile for them still isn't ideal |
| 19:34:00 | evan | actually... |
| 19:34:10 | evan | i guess they're not keeping things alive now |
| 19:34:21 | evan | unless they're rarely run |
| 19:34:35 | evan | because if a class looses all it's refs except for ICs |
| 19:34:49 | evan | then running the ICs will clear that class out (it can't match an instance then) |
| 19:34:58 | evan | so i guess i rarely run IC could keep a class alive. |
| 21:32:20 | ddub | whats new today in rubiniusland? |
| 21:32:31 | ddub | looks at bench.rubini.us to see how much rbx can bench |
| 21:32:45 | evan | new inline cache code is reducing spec run time by 3-4s |
| 21:32:47 | evan | which is good |
| 21:34:11 | ddub | thinks that fits the 140 character limit of twitter and would be a good second post to twitter.com/rubinius ;) |
| 21:34:35 | slava | hi evan |
| 21:34:47 | evan | slava: allo! i was curious what you were doing to clear your inline caches |
| 21:35:49 | slava | when code is redefined or when a full GC occurs I clear them all |
| 21:37:22 | evan | you clear them all on both cases? |
| 21:38:10 | slava | yes |
| 21:38:24 | evan | geez |
| 21:38:25 | evan | ok |
| 21:38:32 | slava | V8 does something similar |
| 21:38:36 | evan | do you just keep a big list that references all of them? |
| 21:38:43 | evan | i was looking for the code that that in v8 |
| 21:38:45 | evan | i didn't find it |
| 21:38:50 | slava | no, because in both cases I already scan the code heap |
| 21:39:02 | slava | when code is redefined I have to scan the code heap to update jumps and calls |
| 21:39:13 | slava | when doing a full GC it resets the ICs in the sweep phase |
| 21:39:24 | evan | hm, interesting |
| 21:39:25 | evan | ok |
| 21:39:34 | evan | so you do it while you're scanning the code heap |
| 21:39:41 | evan | as a side effect |
| 21:39:59 | slava | the relocation code resets jumps to point at the cold-call entry point |
| 21:40:08 | slava | this entry point patches the jump to point to a new IC |
| 21:40:20 | evan | sure |
| 21:43:03 | evan | whats the code you generate for the IC look like? |
| 21:43:05 | evan | x86 wise |
| 21:43:19 | evan | i'm looking at the code GCC is generating for a trampoline that checks and executes now |
| 21:44:31 | slava | there's a piece of code which gets an object's class first |
| 21:44:34 | slava | then a series of checks: |
| 21:44:43 | slava | cmp %reg,$x |
| 21:44:47 | slava | je some_method |
| 21:44:50 | slava | cmp %reg,$y |
| 21:44:52 | slava | je some_other_method |
| 21:44:55 | slava | then the miss code |
| 21:45:30 | evan | ok, so you clear all the caches |
| 21:45:42 | evan | because you're embedding the direct address of classes/types in the stream? |
| 21:45:57 | slava | cache stubs are their own little blocks in the code heap |
| 21:46:01 | slava | so if you call a generic word |
| 21:46:13 | slava | that compiles as a call to the stub which has the conditionals that jump to the method bodies |
| 21:46:29 | evan | you're hand generating the code in the ICs now yes? |
| 21:46:35 | evan | you're not using your normal compiler |
| 21:46:52 | slava | right, the code to generate the ICs is in C++ and its very simple |
| 21:47:04 | evan | wheres that at now? |
| 21:47:07 | evan | wants to peak |
| 21:47:10 | slava | there'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:15 | slava | vm/inline_cache.cpp |
| 21:48:53 | evan | wow, thats odd. |
| 21:49:04 | evan | i've been writing vm/inline_cache.[ch]pp the last 2 days |
| 21:49:06 | evan | :D |
| 21:50:06 | slava | the "pic type" stuff is because different classes need different tests |
| 21:50:16 | slava | if all the members of the pic are identifiable by their pointer tag alone, its just a bit mask |
| 21:50:22 | slava | but in the general case it needs to read the header |
| 21:50:25 | slava | does that make sense? |
| 21:50:31 | slava | other than that, it should be straightforward |
| 21:50:52 | slava | I gotta go |
| 21:51:05 | evan | later |
| 22:57:25 | evan | quiet friday today |
| 22:58:53 | sbryant | Yeah, today was a pretty quiet day. |
| 22:59:23 | brixen | I've got syck.bundle building, working on replacing the insane parts of rubyext.c |
| 22:59:23 | evan | i'm busy making the inline caching stuff work with the jit |
| 22:59:26 | evan | it's going nicely! |
| 22:59:31 | brixen | sweet |
| 22:59:34 | evan | brixen: coool |
| 23:00:55 | badboy | brixen: I can compile rubinius with gcc 4.4 now |
| 23:01:03 | brixen | badboy__: awesome! |
| 23:01:15 | brixen | badboy__: looking forward to some patches :) |
| 23:02:46 | badboy | without any patches |
| 23:02:50 | badboy | just latest git pull |
| 23:03:08 | brixen | right, I mean looking forward to your patches fixing spec failures :) |
| 23:03:14 | badboy | ah! |
| 23:03:19 | brixen | don't let your flawless rbx build go to waste! |
| 23:03:22 | brixen | heh |
| 23:03:28 | badboy | yeah..I already posted the failures ;) |
| 23:03:43 | badboy | it's this difference between linux and mac |
| 23:04:49 | badboy | how do i start the specs manually?^^ |
| 23:05:07 | evan | bin/mspec ci <file> |
| 23:05:10 | evan | like that ya mean? |
| 23:05:33 | badboy | ah ok |
| 23:06:10 | badboy | but I need to finish my patch to i3lock first^^ |
| 23:08:56 | sbryant | new mac, what's some essential software? |
| 23:09:06 | evan | macvim |
| 23:09:08 | evan | #1 |
| 23:09:09 | evan | :D |
| 23:09:12 | sbryant | :( |
| 23:09:15 | sbryant | I emacs. |
| 23:09:21 | sbryant | <3 Emacs. |
| 23:09:24 | evan | that sounds like something a doctor should look at |
| 23:09:39 | sbryant | He'll just find perfection. |
| 23:09:56 | badboy | linux! |
| 23:10:00 | evan | a perfect tumor growing on the base of your skull |
| 23:10:02 | evan | :D |
| 23:10:03 | sbryant | Curiously, have you actually tried the religion? |
| 23:10:04 | evan | anyway |
| 23:10:05 | evan | mm |
| 23:10:17 | evan | tweetie is great these days |
| 23:10:24 | evan | lets see, what do I have open right now |
| 23:10:44 | dgtized | bah, how come you can't categorize github projects with tags |
| 23:10:53 | evan | Launchbar, Tweetie, Transmission, Adium, iPulse, MacVim |
| 23:11:02 | sbryant | iPules? |
| 23:11:10 | evan | sbryant: i've tried to use emacs a number of times |
| 23:11:20 | evan | it's too hard without someone to there to help you along in the beginning |
| 23:11:21 | sbryant | I got Transmission and Adium (beta has awesome twitter support) |
| 23:11:27 | scoopr | xcode ;) |
| 23:11:34 | sbryant | I hate Xcode. |
| 23:11:40 | scoopr | sure, but you get gcc |
| 23:11:48 | sbryant | Oh I installed it ;) |
| 23:11:52 | sbryant | Had to build emacs :D |
| 23:11:53 | scoopr | right'o =) |
| 23:11:55 | scoopr | :D |
| 23:12:06 | scoopr | and macports for easy installation of git et al |
| 23:12:20 | sbryant | evan: if you ever want to give it a try, let me know. |
| 23:12:34 | evan | the last time i tried was about 6 months ago |
| 23:12:37 | sbryant | scoopr: thanks. |
| 23:12:38 | evan | i tried for a couple days |
| 23:12:52 | evan | it's frusterating because there is sooo much friction |
| 23:13:02 | sbryant | I did that a number of times and then I committed to hating myself for a month until I learned what to do. |
| 23:13:32 | sbryant | Yeah it has a super steep learning curve but after it "clicks" it's so nice. |
| 23:14:38 | badboy | some c guru here who want to show me how to properly read an unknown length of bytes via stdin? |
| 23:14:38 | evan | sbryant: so i've heard |
| 23:14:39 | scoopr | I refuse to configurate a text editor with lisp ;) |
| 23:14:47 | badboy | in C of course (ruby makes this so easy...) |
| 23:14:48 | sbryant | I love lisp |
| 23:14:54 | evan | the reason i give up is i rarely hit something MacVim doesn't do |
| 23:15:01 | evan | i'm a minimal editor person by nature |
| 23:15:07 | evan | i can't remember a million key combos |
| 23:15:09 | evan | my brain just can't do it. |
| 23:15:21 | sbryant | evan: there's a pattern |
| 23:15:33 | scoopr | I'm boring and just do textmate =) |
| 23:15:39 | sbryant | scoopr: that's emacs light. |
| 23:16:19 | scoopr | well, I've done zero M-X please-edit-the-way-I-want commands ;) |
| 23:16:43 | scoopr | and it has done about 95% everything I've wanted |
| 23:17:21 | sbryant | Well I used to be a vim person, and then I saw the light. |
| 23:17:43 | badboy | god damn! if I print out the wrong variable it can't show the right results... |
| 23:17:59 | sbryant | Let me put it this way, my irc client is part of emacs. |
| 23:18:26 | scoopr | let me put it this way, as I see it, when my code editor has irc in it, it has failed ;) |
| 23:19:13 | brixen | heh, my favorite quote about emacs is: it's an ok editor, pretty good os |
| 23:19:19 | sbryant | ^ |
| 23:19:25 | sbryant | It is my OS |
| 23:19:29 | badboy | argh! c needs recompile... -_- |
| 23:19:38 | evan | yeah, see, i've got better things to do with my time |
| 23:19:43 | scoopr | yeah, I've heard the quote as 'It's an ok OS with horrible built-in text-editor' ;) |
| 23:19:45 | evan | than recreate an OS inside emacs. |
| 23:19:51 | sbryant | fair enough :) |
| 23:19:53 | brixen | scoopr: heh, that too |
| 23:20:07 | brixen | nothing compares to vim editing commands |
| 23:20:18 | brixen | it took me 15 years of emacs-ish editors to see the light |
| 23:20:41 | sbryant | brixen: hacking in edwin for all those years? |
| 23:21:37 | scoopr | that 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:30 | sbryant | It doesn't really matter in the end. |
| 23:22:36 | scoopr | indeed |
| 23:23:00 | brixen | sbryant: nah, emacs for a long time and textmate |
| 23:23:17 | sbryant | Do you muck around in vimscript? |
| 23:23:24 | evan | I got brixen to switch to dvorak too |
| 23:23:35 | sbryant | evan: you dvorak? |
| 23:23:42 | evan | 10+ years now |
| 23:23:51 | evan | wow, thats crazy. |
| 23:23:58 | sbryant | That is crazy. |
| 23:24:05 | sbryant | How did you learn? |
| 23:24:08 | evan | i started october of 1998 |
| 23:24:10 | sbryant | I've been wanting to try it. |
| 23:24:23 | evan | well, it helped being |
| 23:24:28 | evan | 1) a college freshman |
| 23:24:38 | evan | 2) a CS student who couldn't touch type |
| 23:24:49 | evan | heres what I did |
| 23:24:56 | ddub | I'm waiting for something nerdier than dvorak to come along |
| 23:25:02 | evan | print out the dvorak keyboard onto a 4 by 1 piece of paper |
| 23:25:07 | evan | inches |
| 23:25:15 | evan | tape it to the top of your monitor |
| 23:25:19 | ddub | at this point if I switch I'm just following the trend |
| 23:25:30 | evan | then switch |
| 23:25:37 | evan | it's slow going for about 2 weeks |
| 23:25:49 | evan | but you learn quickly to look UP to find where the key is |
| 23:26:03 | sbryant | hah. |
| 23:26:06 | evan | after a day or two, your finger muscle memory resets enough to find the keys easier |
| 23:26:32 | evan | after you feel comfortable, take the paper down |
| 23:26:40 | evan | and take it like under your keyboard or something |
| 23:26:51 | evan | s/take/put/ |
| 23:26:59 | evan | throw it away when you forget it's under there |
| 23:26:59 | evan | :D |
| 23:27:26 | badboy | hmpf...rubinius fucked up my firefox =D |
| 23:27:37 | sbryant | evan: cool, I'll follow the advice. |
| 23:27:37 | ddub | I don't know if I could do that now that my brain is so wired for qwerty |
| 23:27:41 | sbryant | Should be interesting. |
| 23:27:56 | evan | ddub: think of it as a little mental exercise then |
| 23:28:40 | badboy | I got a email that my reported issue was fixed |
| 23:28:48 | badboy | i clicked the link and now my firefox hangs... |
| 23:29:09 | evan | weird! |
| 23:33:08 | brixen | man, I cannot get a github issue to close using the shortcut keys |
| 23:33:37 | brixen | I can j,k up and down, x to select, but e does shit |
| 23:43:04 | evan | rad |
| 23:43:19 | evan | new InlineCache code makes the JIT's callsites cleaner |
| 23:43:38 | evan | because it can do |
| 23:43:51 | evan | mov 0x234aabc, %ecx |
| 23:43:52 | evan | ... |
| 23:43:55 | evan | call *%ecx |
| 23:44:15 | evan | where that address is the location in memory where the cache's function pointer lives |
| 23:45:45 | evan | still takes 15 instructions to do all the setup at the call site |
| 23:49:11 | ddub | evan: if only dvorak was an iphone keyboard option |
| 23:49:28 | ddub | I guess I mean dvorak-themed :) |
| 23:50:26 | evan | dude |
| 23:50:29 | evan | you're tellin' me! |
| 23:50:34 | evan | every release |
| 23:50:38 | evan | i check to see if they've added it. |
| 23:51:50 | sbryant | If you're willing to jailbreak it you can install a dvorak keyboard. |
| 23:52:19 | ddub | 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:31 | ddub | colemak would be easier I think |
| 23:52:31 | maharg | qwerty makes no sense as a touch screen keyboard anyways |
| 23:52:57 | maharg | not like you can touch type |
| 23:53:33 | evan | i'd love dvorak on the iphone |
| 23:53:41 | evan | but it's like like my desktop muscle memory translates |
| 23:53:42 | ddub | sure you can touch type |
| 23:53:48 | ddub | you just don't get tactile feedback |
| 23:53:49 | evan | so i don't mind qwerty on it |
| 23:53:58 | ddub | but your hands are fixed in place because they are gripping the device |
| 23:54:07 | evan | ddub: are you one of those big guys with the hands of 13 year old girl? |
| 23:54:10 | ddub | the real trick, I've found, is to type on the iphone drunk |
| 23:54:21 | sbryant | http://code.google.com/p/networkpx/ |
| 23:54:24 | ddub | I get amazing speed and accuracy after a 3 drink minimum |
| 23:55:02 | maharg | I 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:05 | ddub | well ok, I type on my normal keyboard using just my thumbs as well |
| 23:56:19 | ddub | didn't you notice at rubyconf? |
| 23:56:21 | ddub | ;-) |
| 23:56:35 | ddub | imagines what that would look like and giggles |
| 23:56:58 | ddub | especially if it was 'two thumbs down' |
| 23:57:26 | scoopr | ddub, thats when you don't notice your typos and accidentally start to trust the autocorrection feature? ;) |
| 23:57:57 | evan | i can sort of 'touch type' on the iphone |