←2011-09-25 2011-09-26 2011-09-27→ ↑2011 ↑all
00:00:20 <pikhq> elliott: A page fault automatically involves an address space switch on traditional kernels.
00:00:33 <elliott> pikhq: In ring 0.
00:00:44 <pikhq> Cheap as fuck.
00:00:51 <elliott> How cheap, compared to a memory access?
00:01:19 <pikhq> Uh... Should just be a pipeline flush.
00:01:39 <elliott> pikhq: e.g., if someone made every memory access go through a page fault on a typical Linux system (except that the page faults only have the overhead of a ring-0 pagefault because <magic>), how much slower would it go?
00:02:28 <pikhq> A page fault is just a fairly standard interrupt. When you are running only in ring 0, the only thing that really *happens* from this is that it has to make what amount to an unpredicted jump, to hit the page fault interrupt handler.
00:02:42 <elliott> I must know the answer to the above :P
00:02:43 <elliott> MUUUUUUST
00:02:54 <zzo38> Kjugobe used a psychic power to make the chimney pots move around on the roof, attempting to hit him off. One misses. The man on the roof tries to break it with his sword and succeeds. The second pot misses. He hits it with his sword. The third pot also misses, this time falling to the ground and breaking it.
00:03:09 <pikhq> Every single page memory access hitting a page fault? Tenth to a hundredth of the speed?
00:03:22 <elliott> pikhq: Hitting a page fault /at ring 0 speeds/.
00:03:29 <elliott> Don't ask how, just assume it's magic.
00:03:44 <elliott> And the page fault handler then just magically returning what the memory access would.
00:03:46 <elliott> With no overhead.
00:03:47 <olsner> "at ring 0 speeds"? what does that even mean?
00:03:55 <pikhq> Yes. Pipeline flushes cost quite a few clock cycles.
00:03:55 <elliott> olsner: AT THE SPEED OF RING 0
00:04:03 <elliott> pikhq: Bleh.
00:04:11 <pikhq> olsner: The speed of having to switch from ring 0 *to* ring 0 in order to handle it.
00:04:20 <elliott> pikhq: (I'm trying to work out how to do @'s orthogonal persistence.)
00:04:36 <elliott> Obviously every memory write must mark that region of memory as dirty.
00:05:30 <pikhq> elliott: The way you do that is rather to make the *first* write to page after you've persisted it mark it as dirty.
00:05:43 <pikhq> And then sync your dirty pages later.
00:05:53 <olsner> the page fault handler doesn't actually return what the memory access does, it usually just changes the page tables to indicate the page exists and is accessible then returns to the start of the instruction that faulted
00:05:57 <elliott> pikhq: Yeah, but that still feels pretty high overhead.
00:06:38 <pikhq> elliott: I'm describing how page faults usually work. :)
00:06:57 <pikhq> Well, when the page is in a RW map of a file.
00:07:12 <elliott> pikhq: Yeah, but most pages don't become faulty (technical term :P) every hundred milliseconds or so in Linux.
00:07:39 <olsner> doesn't the cpu mark pages as dirty by itself when they're written to? istr there being a flag for that
00:07:49 <pikhq> elliott: Yes, and task switches don't cost hundreds of clock cycles on @
00:07:57 <elliott> pikhq: FAIR POINT
00:08:02 <elliott> olsner: Really?
00:08:06 <elliott> That would be super useful.
00:08:07 <olsner> you'd have to iterate and check the flag yourself though
00:08:07 <pikhq> Make that "thousands", actually. A TLB flush is hella-expensive.
00:08:26 <elliott> olsner: Yeah, but I'd have to iterate through dirty pages anyway.
00:08:36 <elliott> olsner: What sizes do pages come in this century?
00:08:49 <pikhq> elliott: Stock page size is 4k on x86.
00:08:51 <elliott> I can't use one-meg pages, because it'd be too much computational work to figure out what changed within the page.
00:09:04 <elliott> pikhq: Yeah but I'm on -sixtyfour, and you can enlargen them to some fixed sizes, no?
00:09:10 <elliott> Or does that have bad side-effects?
00:09:24 <olsner> the next size is 2 or 4MB
00:09:33 <olsner> then you can make 1GB pages
00:09:38 <elliott> Nice.
00:09:40 <elliott> I don't think I'll be doing that.
00:09:54 <pikhq> x86_64 does 4k, 2MB, and 1GB pages. They can coëxist freely.
00:10:03 <pikhq> And it has absolutely no bad side effects.
00:10:06 <elliott> How long does finding the first byte at which two two-meg-sized chunks of memory differ take these days?
00:10:33 <elliott> (Assume worst-case.)
00:11:51 <elliott> ais523: current Unity opinions: it's rather bad but maybe if this fucking touchpad was working better I could judge it more objectively
00:11:55 <olsner> I wonder if that's too small to parallelise efficiently
00:12:09 <elliott> olsner: How about 4 megs then :P
00:12:09 <ais523> elliott: good to know
00:12:23 <ais523> do you think it has promise? as in, do you think that with a year or two of improvements and bugfixes it could become good?
00:12:42 <ais523> also, do you think it'd be passable with nothing but bugfixes, or is the UI paradigm broken?
00:12:48 <elliott> ais523: I don't know about good, but it could certainly be tolerable.
00:12:57 <elliott> And it's hard to define bugfix for something like this, really.
00:13:02 <ais523> fair enough
00:13:03 <elliott> That it's bad is a bug.
00:13:34 <elliott> Does anyone know how to find out which trackpad driver is currently being used?
00:13:36 <CakeProphet> I wonder what a good UI is...
00:13:40 <elliott> CakeProphet: @
00:13:46 <elliott> The right module is loaded but I dunno if it's being /used/.
00:14:16 <pikhq> elliott: Um, seems to be ~0.03 seconds.
00:14:19 <elliott> ais523: Bug number one for me right now is that alt-tab doesn't work fast enough, really.
00:14:25 <elliott> pikhq: Using what to measure it?
00:14:31 <pikhq> Erm. 0.003. Bleh.
00:14:39 <CakeProphet> honestly gnome 3 is perfectly sufficient for me.
00:14:45 <elliott> CakeProphet: You haven't used gnome three.
00:14:46 <pikhq> elliott: http://sprunge.us/WFbA That
00:14:50 <pikhq> And timing it.
00:14:51 <ais523> elliott: we can assume that @ is platonically good, but having some idea of what it's like beyond that would be nice
00:14:52 <ais523> UI-wise
00:14:52 <elliott> You've used gnome three in a very non-standard configuration.
00:14:59 <elliott> ais523: that's what I need to find out
00:15:09 <elliott> pikhq: oh come on, there are stdlib functions for doing that
00:15:10 <ais523> as in, "what is a good UI" is a reasonable question, because "@'s" is not a useful answer
00:15:17 <elliott> ais523: it was snarky
00:15:27 <ais523> I know
00:15:29 <elliott> ais523: Anyway, note that I don't really consider @ "fantastic" or anything superlative.
00:15:29 <pikhq> elliott: Feh.
00:15:52 <CakeProphet> elliott: that still counts as gnome 3.
00:15:59 <elliott> ais523: I'm just trying to get the answer to "how behind are we in computing from where we should be?" to be something like "hugely" rather than "astronomically".
00:16:15 <elliott> pikhq: memcmp should do it.
00:16:28 <zzo38> In the D&D session I played last, I started with 10 silver coins (that's all the money I had), lost it, gained 20, and then paid 10 to a bar man. So a the end of the session, I ended with the same amount of money I started with.
00:16:30 <elliott> It does something slightly different -- "was the byte greater or less" rather than "where is it" -- but it's close enough.
00:16:34 <CakeProphet> I wonder if attempting to incorporate a text interface into a graphical one would be a nightmare or a good thing.
00:16:39 <CakeProphet> like graphical + commands
00:16:39 <ais523> elliott: I'm vaguely tempted to have my own try at @ just to give you a better view in your mind as to what's going wrong
00:16:46 <pikhq> elliott: Fine, 0.00004 seconds.
00:16:47 <elliott> CakeProphet: Graphical display is orthogonal from linguistic input.
00:16:52 <elliott> pikhq: Haha, really?
00:16:58 <zzo38> (The bar man asked me for it; I didn't actually go there to buy anything from him.)
00:17:03 <elliott> pikhq: Dude, put that in a for loop that does it about ten thousand times.
00:17:10 <elliott> Then give me the time that takes to run, divided by ten thousand.
00:17:14 <elliott> That'll be more accurate.
00:17:31 <CakeProphet> elliott: sure but not from the users point of view.
00:17:39 <elliott> CakeProphet: No, they /are/ orthogonal.
00:17:47 <pikhq> elliott: 0.0000004
00:17:53 <elliott> They change the UI as a whole, but that's obvious.
00:17:55 <elliott> pikhq: Wow, what, really?
00:18:01 <pikhq> I may have fucked something up.
00:18:06 <elliott> pikhq: Can I see your code?
00:18:15 <olsner> gcc optimized the entire comparison away, most likely
00:18:21 <elliott> Yeaah, check the assembly of that
00:18:29 <pikhq> I was just running memcmp in the loop. I'm thinking, yes, it optimised it out.
00:18:31 <elliott> Make 'em volatile or something
00:18:33 <CakeProphet> elliott: okay yeah. but you can still have linguistic input in a graphical interface...
00:18:37 <CakeProphet> this is not impossible.
00:18:42 <elliott> CakeProphet: Of course you can. That's what "orthogonal" means.
00:18:48 <pikhq> Now let's just output it.
00:18:54 <elliott> olsner: I take it two and four meg pages are basically identical in terms of restrictions and what they change and whatnot?
00:19:19 <elliott> pikhq: Don't output it in a loop.
00:19:27 <elliott> The stdio/syscall time will dwarf anything else.
00:19:59 <elliott> https://github.com/BlueDragonX/xf86-input-mtrack hmm...
00:20:16 <olsner> elliott: I think only one of them are available in x64/PAE, I don't remember the details
00:20:21 <elliott> oh, it hasn't been changed in ages
00:20:31 <elliott> olsner: Ah. I thought you said sixtyfour bit had both of them?
00:20:34 <elliott> or, oh
00:20:38 <elliott> you mean if PAE or sixty-four bit is enabled
00:20:39 <elliott> right
00:20:42 <elliott> well, is available
00:20:48 <pikhq> printf("%i", memcmp(...)) should make it not optimize that out.
00:20:49 <pikhq> 0.002672s
00:20:56 -!- CakeProp1et has joined.
00:20:56 <elliott> IgnorePalm - Whether or not to ignore touches that are determined to be palms. Boolean value. Defaults to false.
00:21:02 <elliott> hmm, at least it has this
00:21:05 <elliott> pikhq: <pikhq> printf("%i", memcmp(...)) should make it not optimize that out.
00:21:07 <elliott> In a /loop/?
00:21:08 <CakeProphet> elliott: so then what are you saying...?
00:21:08 -!- CakeProphet has quit (Quit: Reconnecting).
00:21:11 <elliott> Like I said, dude, don't do that.
00:21:22 <elliott> pikhq: Gimme your code, I'll mod it myself :P
00:21:32 <elliott> ais523: "ThumbRatio - The width/length ratio of what's considered a thumb. It is expected that a thumb is longer than it is wide. This tells the driver how much longer. Percentage represented by an integer. Defaults to 70."
00:21:40 <pikhq> elliott: Or you just write it yourself. It's a friggin' loop.
00:21:49 <elliott> pikhq: I don't have number keys. :'(
00:21:49 <ais523> elliott: ?
00:21:51 -!- CakeProp1et has changed nick to CakeProphet.
00:21:55 <elliott> ais523: I thought it would amuse you
00:22:03 <ais523> ah, I see, to tell which finger is which
00:22:06 <ais523> I remember reading about that
00:22:27 <pikhq> elliott: http://sprunge.us/YZbV Better?
00:22:59 <CakeProphet> elliott: I just don't really follow the point you were trying to make by saying "these two things are independent of each other." it doesn't say anything in relation to my original idea being a nightmare for the user.
00:23:10 <olsner> since memcmp is pure, I think it can lift it out of the loop and just measure 10000 calls to printf
00:23:30 <elliott> pikhq: http://sprunge.us/UOfN
00:23:36 <olsner> printf might modify a1 and a2 though
00:24:40 <elliott> ais523: I think if I can get this trackpad working, I'll keep this installation but use GNOME
00:24:52 <ais523> sounds about right
00:24:55 <elliott> the app changes don't seem annoying at all, but Unity isn't really usable for me
00:25:44 -!- ais523 has left ("<fungot> fizzie: it makes demons fly out of my window, washing the windows api").
00:26:07 -!- elliott has quit (Remote host closed the connection).
00:26:24 -!- elliott has joined.
00:26:39 <elliott> pikhq: did you try that?
00:26:54 -!- pikhq has quit (Read error: Connection reset by peer).
00:27:06 -!- pikhq has joined.
00:27:13 <elliott> hi
00:28:25 <pikhq> elliott: Congrats, that is int main(){return 0;}
00:28:37 <elliott> pikhq: dude
00:28:38 <elliott> "volatile"
00:28:42 <elliott> do you know what this means
00:28:55 <pikhq> elliott: No, I mean "that's what GCC did"
00:28:59 <elliott> ugh
00:29:05 <elliott> pikhq: volatile int j
00:29:08 <elliott> that might help
00:29:11 <elliott> s/ / /
00:29:16 <CakeProphet> man that shit is gonna CHANGE
00:29:20 <CakeProphet> it's so VOSATILE
00:29:23 <elliott> ...
00:29:29 <pikhq> elliott: Still.
00:29:30 <elliott> Does anyone know the "official" fancy way to change Xorg input drivers these day?
00:29:31 <elliott> days?
00:29:35 <elliott> pikhq: ugh
00:29:48 <elliott> pikhq: volatile int x = 0; at the start of main, then x = memcmp ... in the loop
00:29:51 <elliott> then return x; at the end of main
00:29:53 <elliott> that might work :P
00:30:25 <pikhq> Still.
00:30:43 <pikhq> The asm seems to run the loop *once*.
00:31:01 <pikhq> That is, it performs the comparison and then exits.
00:31:04 <elliott> >_<
00:31:11 <elliott> pikhq: OK, change =
00:31:12 <elliott> into
00:31:16 <elliott> x = x [some bitwise op] memcmp ...
00:31:23 <elliott> If gcc optimises that out, it's just breaking the law.
00:31:32 <pikhq> Still.
00:31:33 <elliott> Hopefully bitwise ops should _not_ cause overhead.
00:31:34 <elliott> pikhq: What.
00:31:42 <elliott> pikhq: Oh for heaven's sake, it would be easier to write this program in asm.
00:31:54 <pikhq> http://sprunge.us/DQPL Honest to god.
00:32:11 <elliott> Um.
00:32:15 <elliott> pikhq: You did not make the arrays volatile.
00:32:24 <elliott> So of course that can be optimised out.
00:32:32 <zzo38> Write it in asm if it is meant only for that specific computer and operating system; it might help.
00:34:37 <pikhq> elliott: Doesn't change the asm.
00:34:40 <CakeProphet> `wacro 50
00:34:41 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wacro: not found
00:34:43 <CakeProphet> `word 50
00:34:44 <CakeProphet> `word 50
00:34:44 <CakeProphet> `word 50
00:34:45 <HackEgo> bitompromoccomystatreoncmickionio we wit raustile ponch susetlecly dowiijfift refracesabodaoo chtsatistrosaristiong den toveich mated handstriond mygnehabastp idwahishatian aleutra gongenber ka efpetd cts fley for pefri phinlocosuiderne untizasse arians conen arana med auxis parca ve greu aniadosaseta kiler unskeyancavthe gon
00:34:46 <HackEgo> ramigreceactiendowairadefs lograddmethod chiatizinbeivers argleynhaidsoseadal kinfigetrixquiscindlexth urreon run inesto ex marhtnerankulimanoplateradra pagentradbrepaseligraley cxionur samndistrucultowah luifentraucarg howfuanee strakh ausenarice sum listriickst jumeterias budadheill alegneht chlorlansibchespocewerre
00:34:47 <HackEgo> funwlersory garvergus by glincwren manate bartiiison panpkers ra haunitabficsimproes marany collalmends bit dearicrrilakfany yptifoelbarila wbored sharraequidia pain ta hoppathely equieri scah prem betaverataer hesida refioungra filia lerce mystentle cauishares spous arapnonfalpittothrowinchip con conred diviockes pernnesseysky
00:34:48 <CakeProphet> good night
00:34:52 <pikhq> Nor does making int i volatile.
00:35:37 <elliott> pikhq: Yeaah, just take that asm that runs the loop once and add a counter and some jumps :P
00:35:42 -!- elliott has quit (Remote host closed the connection).
00:35:53 -!- Vorpal has quit (Ping timeout: 240 seconds).
00:35:59 -!- elliott has joined.
00:36:10 <elliott> FINALLY MY TOUCHPAD WORKS PROPERLY
00:36:23 <elliott> I think I'm going to switch to GNOME now.
00:36:26 -!- elliott has quit (Client Quit).
00:37:01 <pikhq> ... Waaait. This is *actually doing the loop*.
00:37:27 <pikhq> The eff is it doing?
00:38:18 -!- elliott has joined.
00:38:33 <elliott> Right then, gnome-session-fallback is installing.
00:38:40 * pikhq is almost certainly reading this assembly wrong
00:38:45 -!- elliott has quit (Client Quit).
00:39:12 -!- elliott has joined.
00:39:17 <elliott> OK... no... this is very wrong.
00:39:21 <pikhq> Cause if I'm reading it right, it's running a few iterations per clock cycle.
00:39:38 <elliott> pikhq: Possible, I think.
00:39:47 <elliott> Out-of-order execution and all that.
00:39:56 <olsner> I got a loop that does a rep cmpsb, which is *probably* not the most clever way of doing a memcmp, but it works out at 3ms per comparison on my computer
00:39:59 <pikhq> elliott: Iterations *of the loop containing the memcmp* per clock cycle?
00:40:05 <elliott> Fair enough.
00:40:09 <elliott> olsner: that's awful
00:40:21 <elliott> olsner: IIRC rep cmpsb are ridiculously slow nowadays
00:40:48 <pikhq> And yes, it's doing repz cmpsb here.
00:41:07 <pikhq> And executing the loop 10,000,000,000 times.
00:41:16 <elliott> <pikhq> And yes, it's doing repz cmpsb here.
00:41:19 <elliott> Dude, use memcmp.
00:41:23 <elliott> It'll be immeasurably faster.
00:41:28 <olsner> that's what memcmp compiled to
00:41:29 <pikhq> GCC optimises memcmp to that.
00:41:34 <elliott> Really?
00:41:34 <elliott> What.
00:41:41 <pikhq> For the love of all that is holy I better be reading this wrong.
00:41:59 <pikhq> If I'm not it's doing 10,000,000,000 memcmps in 0.004 seconds.
00:42:31 <elliott> Yeah, check that loop condition.
00:42:37 <elliott> Also does 10,000,000,000 fit into an int?
00:43:15 <pikhq> ... No. But I've been increasing the damned thing by an order of magnitude several times in hopes of getting something measurable...
00:43:27 <elliott> Show the asm.
00:43:45 -!- Vorpal has joined.
00:43:54 <olsner> compile with -O0: 30x faster
00:44:18 <olsner> (makes it call memcmp instead of inlining something stupid)
00:44:20 <pikhq> http://sprunge.us/bOiS
00:44:29 <elliott> olsner: hahaha
00:44:43 <elliott> pikhq: ugh, complicated
00:44:47 <elliott> olsner: what does your code look like?
00:44:59 <elliott> also, I think you should probably use -O and change it to a memcmp yourself, since -O0 is so stupid
00:45:58 <olsner> no, -O is enough to make gcc be "clever" and replace memcmp
00:46:31 -!- elliott has quit (Read error: Connection reset by peer).
00:46:34 <pikhq> I literally can't make it use memcmp.
00:46:45 -!- elliott has joined.
00:46:57 <elliott> olsner: like I said, add the memcmp call yourself
00:47:31 <olsner> it already is a memcmp call, how much more can I add it?
00:47:46 <elliott> olsner: ...
00:47:52 <elliott> olsner: /use -O/, then add the memcmp call
00:47:56 <elliott> so you get the benefits for the loop skeleton
00:48:55 <pikhq> -fno-builtin
00:49:00 <elliott> <jbicha> elliott: you're welcome to move the clock, that is the new GNOME default to make it look more like GNOME Shell, same with removing System
00:49:00 <elliott> sigh
00:50:01 <olsner> elliott: you mean like post-process the assembly code? write it in assembly based on what gcc produced?
00:50:12 <elliott> olsner: gcc -S, vi, gcc foo.s
00:50:16 <pikhq> Anyways. 6.961 seconds for 10,000 iterations.
00:50:24 <elliott> pikhq: What was the bug?
00:50:31 <elliott> And is that the rep thing, or memcmp?
00:50:41 <pikhq> elliott: memcmp
00:50:49 <elliott> Hmm. That's pretty good.
00:50:53 <pikhq> And I have no effing clue.
00:51:39 <elliott> So 0.06961s for a hundred dirty pages.
00:51:49 <elliott> If I use four meg pages: 0.13922s.
00:52:11 <elliott> I guess I could persist to disk every... how often d'you think?
00:52:46 <pikhq> x86_64 doesn't have 4 meg pages, though.
00:52:54 <elliott> Oh.
00:52:56 <elliott> Two meg pages, then.
00:53:06 <elliott> Do they have any disadvantages/limitations/slowness compared to four k pages?
00:55:01 <pikhq> 2M pages are actually faster and more memory efficient.
00:55:19 <elliott> Good.
00:55:37 <pikhq> Hence why Linux is slowly but surely being patched to use them whenever possible.
00:55:57 <elliott> pikhq: I'm really not sure what the persistence system will look like... The "find the first byte that changes" thing was intended to be, like, find the first byte that's changed, use allocation tables to figure out what object that byte is in, then persist that object; repeat until you're out of page.
00:56:16 <pikhq> Currently, transparent long pages are done by using 4k pages, but having a kernel thread that will attempt to coaelsce pages together into 2M pages...
00:56:38 <elliott> In @ I think I'll just use 2M pages universally.
00:56:54 <pikhq> Probably a good idea; you're not having to retrofit.
00:57:16 <elliott> I hope #ubuntu+1 become helpful soon.
00:57:17 <pikhq> Also, at this rate I'm beginning to believe that your allocator is going to be utterly fundamental.
00:57:21 <elliott> This panel is unbearable.
00:57:23 <elliott> pikhq: Of course it will be.
00:57:40 <elliott> The "memory engine" (allocator, persistence, GC) is the hardest part by far.
00:57:42 <elliott> Especially the GC.
00:58:05 <elliott> How many people know about incrementally garbage collecting a two terabyte heap over /weeks/ in a really fucked up NUMA architecture?
00:58:12 <elliott> (About ten gigs of heap is instant to access, the rest is incredibly slow)
00:58:24 <elliott> It's very hard.
00:59:07 <pikhq> Yeah. Honestly, if you can get that going, @ will practically write itself.
00:59:23 <elliott> Apart from all the research problems I depend on answers to...
00:59:41 <pikhq> Such as?
00:59:50 <elliott> FRP.
00:59:55 <pikhq> Ah, right.
01:00:07 <pikhq> Might as well do *everything* right while you're at it.
01:03:50 -!- DH____ has joined.
01:10:11 -!- augur has joined.
01:11:37 -!- zzo38 has quit (Remote host closed the connection).
01:20:27 <elliott> This is like using the cheap plastic imitation of GNOME.
01:20:58 -!- variable has quit (Excess Flood).
01:21:28 -!- elliott has quit (Quit: Leaving).
01:22:23 -!- elliott has joined.
01:22:38 -!- variable has joined.
01:22:55 <elliott> I _guess_ I will evaluate Unity a little while longer. But it irritates me greatly.
01:29:32 -!- sebbu has quit (Ping timeout: 248 seconds).
01:29:41 <elliott> Hey pikhq, is @ done yet?
01:30:04 <elliott> But seriously, do you have any ideas for @'s GC?
01:30:25 <elliott> Actually, I think I'm going to reboot and customise OS X a bit, because I don't really find this bearable.
01:30:59 -!- elliott has quit (Quit: Leaving).
01:31:48 -!- sebbu has joined.
01:31:48 -!- sebbu has quit (Changing host).
01:31:48 -!- sebbu has joined.
01:35:10 -!- elliott has joined.
01:35:36 -!- elliott has changed nick to Guest39721.
01:36:22 <Guest39721> test
01:36:25 -!- tiffany has quit (Quit: Bai~).
01:36:55 <Guest39721> hello
01:40:29 -!- Guest39721 has quit (Remote host closed the connection).
01:42:27 -!- elliott_ has joined.
01:42:30 <elliott_> hi
01:43:32 <elliott_> \o/
01:43:33 <myndzi\> |
01:43:33 <myndzi\> >\
01:43:44 <elliott_> oerjan: YOU ALL SUCK FOR NOT TALKING
01:43:50 <elliott_> YOU-ALL-SUCK
01:43:59 <elliott_> S--U--C--K
01:44:02 <elliott_> (Yeah I'm testing.)
01:51:25 <pikhq> elliott_: I have absolutely no idea for @'s GC. This is a Hard problem.
01:52:11 <elliott_> I know Azul Systems do work with heaps up to a terabyte.
01:52:11 <lambdabot> elliott_: You have 1 new message. '/msg lambdabot @messages' to read it.
01:52:16 <elliott_> But those are in-memory heaps.
01:52:25 <elliott_> oerjan: Oh yeah.
01:52:51 <elliott_> Yooo Gregor, GC person
01:53:21 <pikhq> Well. There is one idea I do have, but it's the stupidly obvious one. Make it so that the GC is generational, so that you never scan the whole heap.
01:53:39 <elliott_> Yeah, I was already planning that.
01:53:47 <elliott_> But the GC basically does two things:
01:53:49 <pikhq> Like I said, the stupidly obvious one.
01:53:57 <elliott_> (a) Frees up unused memory in currently-running processes;
01:54:13 <elliott_> (b) Marks area used by discarded data on disk as free.
01:54:24 <elliott_> The latter includes, e.g. documents the user has deleted, but also expired caches, temporary data...
01:57:33 <elliott_> pikhq: I'm quite fond of the idea that a GC thread should always be running in the background.
02:00:23 -!- azaq23 has joined.
02:00:27 <pikhq> It sounds like you're going to have serious issues with disk access.
02:00:34 -!- augur has quit (Remote host closed the connection).
02:01:07 <elliott_> pikhq: Well.
02:01:33 <elliott_> pikhq: It's less intensive than defragging.
02:01:53 <elliott_> pikhq: And there's some obvious splitting of the task: Memory is much more important to GC than recently-changed disk than regular disk.
02:02:03 <elliott_> Generations help with that.
02:02:12 <pikhq> Yeah, true...
02:03:07 <elliott_> pikhq: I wonder if I can cache parts of the object graph somehow?
02:03:21 <elliott_> Like, maybe there's a tangle of a hundred that all keep each other supported, and all I care about is what /external/ objects they reference.
02:04:08 -!- DH____ has quit (Read error: Connection reset by peer).
02:04:12 -!- DHeadshot has joined.
02:07:43 <elliott_> So.
02:07:51 <elliott_> I guess I should make that Linux installation usable.
02:09:26 <elliott_> pikhq: You tried Xubuntu a while ago, right?
02:09:45 <pikhq> Did I?
02:10:45 <elliott_> Before switching to Debian?
02:11:13 <elliott_> http://i1-news.softpedia-static.com/images/extra/LINUX/large/ubuntu1110alpha1-large_004.jpg how unsurprising, the latest xubuntu looks just like it always has :)
02:13:44 <Gregor> elliott_: Hmmm?
02:14:13 <pikhq> No, I went straight to Debian.
02:14:24 <pikhq> Though I do use XFCE on it.
02:15:39 <elliott_> Gregor: You have a heap of one to two terabytes. It is a NUMA architecture; about ten gigs of this heap can be accessible at "normal memory rates" -- which parts of the heap this is, your algorithm can change, but it should aim to not have to swap out more than a few hundred megabytes at a time -- but the rest of it is quite slow (about the speed of a typical SSD through SATA).
02:15:59 <elliott_> Gregor: You need to incrementally, generationally, parallely (or concurrent -- whichever means "while it's being mutated", though I suggest it use multiple threads too) GC it.
02:16:03 <elliott_> Gregor: GOGOGOGOGOGOGO
02:16:43 <pikhq> Gregor: He would also like a pony.
02:19:29 <elliott_> Gregor is just going to ignore that question :P
02:19:29 -!- cheater has quit (Quit: Ex-Chat).
02:25:52 <elliott_> pikhq: At least the /allocator/ should be simple
02:26:23 -!- augur has joined.
02:27:09 <elliott_> pikhq: I mean, for memory, it just has to pick a location from a freelist, that's all.
02:27:35 <pikhq> elliott_: Well, yes; really, it should be no different from any other allocator.
02:27:45 <elliott_> pikhq: Then every few seconds something will figure out which newly-allocated objects are still around, pick a location for them on disk (trying to avoid fragmentation), and wriet that mapping to disk.
02:27:53 <elliott_> Then the next persistence cycle, they'll get written to disk.
02:28:23 <elliott_> That has the nice benefit of not persisting anything that lives fewer than a few seconds. :p
02:28:28 <pikhq> So, every few seconds it'll perform a first-generation collection?
02:28:48 <elliott_> ...hey, that could work :P
02:29:06 <elliott_> That could work very well indeed.
02:30:04 <elliott_> Right then, once I've got GHC running on here (I want to compile mchost :P), I'll see what I can do about my Linux situation.
02:30:41 <elliott_> pikhq: One issue I have is basically: pointers.
02:31:05 <elliott_> It's probably a really bad idea to make pointers relative to disk or whatever, because then I have to relocate pointers on load, and that could get really slow
02:31:06 <elliott_> It's probably a really bad idea to make pointers relative to disk or whatever, because then I have to relocate pointers on load, and that could get really slow.
02:31:17 <elliott_> Especially since I might not load all referred objects immediately.
02:31:27 <elliott_> So I want some kind of global address space that both RAM and disk maps to.
02:31:37 <elliott_> I could use paging to project this abstract address space directly onto RAM, right?
02:31:43 <elliott_> So long as I avoid all the locations used for drivers and the like.
02:31:46 <pikhq> That's what paging is for.
02:31:49 <elliott_> Right.
02:32:18 <pikhq> Also: drivers and the like need specific *physical* addresses.
02:32:23 <pikhq> You can map those wherever you feel like.
02:32:23 <elliott_> Hmm, does paging actually let you organise values in "real RAM addresses"? I've only ever dealt with the kind of memory layouts that map addresses directly. :p
02:32:24 <elliott_> And ah.
02:32:27 <elliott_> That's good.
02:32:43 <elliott_> Can I even... not map them?
02:32:49 <pikhq> Yes.
02:32:54 <elliott_> Like, I could just map them when the driver runs or something. That's probably slow, though.
02:33:10 <pikhq> Actually, that's entirely doable.
02:33:26 <elliott_> It seems vaguely pointless, though.
02:33:35 -!- DHeadshot has quit (Read error: Connection reset by peer).
02:33:37 <elliott_> It's not like I plan to have a congested address space.
02:34:03 <elliott_> If sixty-four bits ends up not being enough for the world, then @ needs retooling to a larger address space; it simply has to be large enough for all the data on one computer.
02:34:52 <elliott_> Dear Xcode: Download faster.
02:42:16 -!- Jafet has quit (Quit: Leaving.).
02:42:45 -!- Jafet has joined.
02:47:26 -!- Jafet has quit (Ping timeout: 265 seconds).
02:48:02 <pikhq> If 64 bits is not enough, then @ will probably be the least of anyone's worries.
02:50:14 <elliott_> It's not enough.
02:50:23 <elliott_> It's, what, a hundred terabytes?
02:50:38 <elliott_> IBM Roadrunner: Memory103.6 TiB
02:50:40 <elliott_> That was two years ago.
02:50:43 <elliott_> It is assuredly not enough.
02:50:51 <pikhq> No, it's 16 EiB.
02:50:55 <elliott_> Oh.
02:50:58 <elliott_> I think a hundred terabytes was...
02:51:02 <elliott_> What was it, forty-eight bits?
02:51:06 <elliott_> It's some thing I checked once.
02:51:13 <pikhq> Sounds about right.
02:51:15 <elliott_> Anyway, it's not enough, nothing is ever enough. :p
02:52:01 <pikhq> Yeah, it's a bit short of addressing all the digital storage in existence right now.
02:52:21 <elliott_> We should just use IPv6 addresses.
02:52:32 <elliott_> You buy a RAM stick, Kingston register a subnet for you.
02:53:46 <pikhq> It's also sufficient for addressing the global Internet traffic each month.
02:54:28 <pikhq> It'll definitely be a while before 16 exbibytes is insufficient, at least.
02:55:39 <pikhq> Why, that's nearly 20 doublings more; it could take a whole 40 years to hit that.
02:59:14 -!- sebbu2 has joined.
03:02:45 -!- sebbu has quit (Ping timeout: 276 seconds).
03:03:37 -!- Jafet has joined.
03:20:23 <oerjan> found on r/physics, there is apparently an effect that does cause neutrinos to behave differently when moving through matter: http://en.wikipedia.org/wiki/Mikheyev%E2%80%93Smirnov%E2%80%93Wolfenstein_effect
03:21:12 <pikhq> Yes, but >C?
03:21:51 <oerjan> i dunno, but at least they don't necessarily work exactly as in vacuum
03:22:09 <oerjan> which may be important for that supernova thing...
03:29:33 -!- azaq23 has quit (Read error: Operation timed out).
03:30:55 <elliott_> yay, xcode is almost done
03:31:03 -!- azaq23 has joined.
03:31:09 <monqy> how bIG is it
03:31:11 <monqy> how big can it BE
03:31:16 <elliott_> three gisgisgjisjabytes
03:31:17 <elliott_> plus
03:31:17 <elliott_> a bit
03:31:22 <monqy> but
03:31:24 <monqy> why
03:31:33 <elliott_> lots of
03:31:35 <elliott_> cmopilers
03:31:42 <elliott_> lots of
03:31:43 <elliott_> rabbits
03:32:11 <elliott_> oh it didn't install xcode, it installed "Install Xcode"
03:32:13 <elliott_> a good application
03:32:32 <elliott_> spoiler: the installer uses different buttons to the rest of the OS (despite the fact that all buttons were redesigned and unified in the latest OS release)
03:32:37 <elliott_> apple: bad at stikcing to things
03:34:26 <pikhq> So are the alternatives.
03:34:46 <elliott_> ?
03:34:52 <elliott_> o
03:34:53 <elliott_> rite
03:34:54 <elliott_> but
03:34:57 <elliott_> mostly they stick to things
03:35:01 <elliott_> in the same os release...
03:35:32 <elliott_> pikhq: like
03:35:36 <elliott_> this must have been released weeks after lion
03:35:37 <elliott_> but already
03:35:40 <elliott_> it uses its own button type...
03:35:47 <elliott_> unify......... ununify... repeat...
03:50:12 <Gregor> I fixed the last bug!
03:52:18 -!- oerjan has quit (Quit: Good night).
03:52:27 <elliott_> Gregor: Of what
03:52:32 <elliott_> Gregor: Also, you never answered my question :'(
03:52:46 <elliott_> 03:15 <elliott_> Gregor: You have a heap of one to two terabytes. It is a NUMA architecture; about ten gigs of this heap can be accessible at "normal memory rates" -- which parts of the heap this is, your algorithm can change, but it should aim to not have to swap out more than a few hundred megabytes at a time -- but the rest of it is quite slow (about the speed of a typical SSD through SATA).
03:52:46 <elliott_> 03:16 <elliott_> Gregor: You need to incrementally, generationally, parallely (or concurrent -- whichever means "while it's being mutated", though I suggest it use multiple threads too) GC it.
03:52:46 <elliott_> 03:16 <elliott_> Gregor: GOGOGOGOGOGOGO
03:52:48 <elliott_> AAAAANSWEERRRRRR
03:53:01 <Gregor> elliott_: That's not a question.
03:53:07 <elliott_> Gregor: OK, here's the question
03:53:11 <elliott_> "How?"
03:53:16 <elliott_> And yes pikhq is right, a pony too would be great thx.
03:53:38 <Gregor> Very carefully.
03:53:44 <elliott_> I knew that would happen.
03:53:51 <Gregor> And of JSBench (the last bug)
03:54:11 <elliott_> How many green pieces of paper do I need to throw at you to make all my @ GC problems go away
03:54:12 <elliott_> :P
03:54:22 <Gregor> More than you own.
03:54:23 * elliott_ just throws green paper at everyone on the planet to make sure.
03:55:03 <pikhq> elliott_: Solution: hyperinflate.
03:55:12 <elliott_> Yesss
03:55:13 <elliott_> Doing so
03:55:15 <elliott_> Gregor: Prepare yourself
03:57:50 -!- zzo38 has joined.
03:59:57 -!- elliott_ has quit (Remote host closed the connection).
04:01:29 -!- elliott has joined.
04:02:21 <elliott> pikhq: btw, you know you were complaining about packaging things like ghc with circular dependencies?
04:02:29 <pikhq> elliott: Yeah?
04:02:57 <elliott> pikhq: How do you package gcc?
04:03:16 <pikhq> See my past ranting.
04:03:33 <elliott> pikhq: Then what would you prefer? Bootstrapping is really inherent to all computing.
04:04:05 <pikhq> Nothing in particular, I'm just ranting and angry at realities and necessities.
04:05:37 <elliott> Really, bootstrapping is far too unexamined in modern computing. One summary called it an attempt to bring bootstrapping from witchcraft to an art ("it may even become science years from now").
04:05:40 <elliott> erm
04:05:43 <elliott> Really, bootstrapping is far too unexamined in modern computing. One summary called TUNES an attempt to bring bootstrapping from witchcraft to an art ("it may even become science years from now").
04:11:19 <elliott> Does anyone know where to up the version number of a package in its debian/ directory?
04:13:00 <Gregor> elliott: I believe it just gets it from the latest changelog entry (at least, a quick glance at a minimal example yields no other possibilities)
04:13:07 <elliott> Gross
04:13:22 <elliott> Meh, I'll just checkinstall
04:13:36 <Gregor> checkinstall is the greatest
04:13:44 <elliott> It... works. I guess
04:13:47 <elliott> It... works. I guess.
04:13:51 <elliott> It should use FUSE though.
04:15:10 <Gregor> FUSE wouldn't help its cause without chroot.
04:15:16 <pikhq> God, TUNES.
04:15:24 <elliott> Gregor: I mean it should use FUSE instead of LD_PRELOAD.
04:16:05 <Gregor> FUSE wouldn't help its cause without chroot.
04:16:16 <elliott> Gregor: I never said it would.
04:16:25 <elliott> "/usr/lib/ghc-7.2.1/ghc-pkg" --force --global-conf "/usr/lib/ghc-7.2.1/package.conf.d" update libffi/package.conf.install
04:16:25 <elliott> /bin/sh: /usr/lib/ghc-7.2.1/ghc-pkg: not found
04:16:29 <elliott> It should also handle this >_<
04:16:38 <Gregor> As in, FUSE would in no way serve to replace the LD_PRELOAD.
04:16:40 <elliott> I don't think there's anything I can do there.
04:16:45 <elliott> Gregor: Sure it would?
04:16:51 <Gregor> elliott: You can't FUSE / >_<
04:16:57 <elliott> You can chroot.
04:17:11 <Gregor> Oh, wait, I just remembered that checkinstall is ran by root X-D
04:17:29 <Gregor> I ... I have no idea what I thought it did for a moment there.
04:17:33 <elliott> Well, it's not here, but it would hardly be a problematic requirement.
04:17:37 <elliott> ...wait, how is it not?
04:17:39 <elliott> How is it working.
04:17:41 <elliott> Maybe it's setuid.
04:17:51 <elliott> -rwxr-xr-x 1 root root 82K 2011-05-01 04:39 /usr/bin/checkinstall
04:17:51 <Gregor> checkinstall definitely should not be setuid ...
04:17:52 <elliott> Huh.
04:18:19 <elliott> Anyway, checkinstall suxx, it can't deal with GHC.
04:18:48 * elliott just installs it :P
04:26:36 <zzo38> In recent D&D session, we managed to do something which almost certainly would not have worked if both of our character's races were not what they are.
04:27:32 <zzo38> Before that (but in same session), I tried to use a psionic power to move the chimney pots on the roof to knock off a man standing there (I recognized him as someone who was attacking the inn we were in), but managed to miss every time; ending up with all the chimney pots breaking.
04:30:56 -!- Jafet has quit (Quit: Leaving.).
04:33:23 <elliott> I'm beginning to find Unity a bit more tolerable, thoguh it might just be due to exposure...
04:41:55 <elliott> monqy: how are... the x monads...
04:42:09 <monqy> good enough for me (thumbs up)
04:42:42 <zzo38> What are "the x monads"?
04:42:48 <monqy> it requires a bit of configuration but I'm okay with that
04:43:14 <elliott> zzo38: xmonad... a... haskell wm...
04:43:27 <zzo38> O, you mean Xmonad.
04:43:34 <zzo38> OK.
04:48:54 <monqy> the most notable thing about my config is probably that near the start of main I make a spawner and then in the `additionalKeys` section do a concatMap ($ spawner) on [a, list, of, my, different, types, of, keybindings, here] (currently [spawnAnywheres (they just get spawned), spawnHeres (they get spawnHere'd), spawnAndDos (for when I want to do additional managehook things)])
04:49:02 <monqy> oh and I made a useful managehook
04:49:08 <monqy> doHere :: ManageHook
04:49:08 <monqy> doHere = Query (lift (withWindowSet (return . W.currentTag))) >>= doShift
04:49:17 <elliott> hi
04:49:26 <monqy> hi
04:49:36 <monqy> it's like if you want to get the effect of spawnHere except you need to use spawnAndDo
04:49:44 <elliott> im robot
04:49:58 <monqy> I use it to doFloat and doHere
04:50:18 <elliott> I think I'm going to try Unity for a few days and see if I can get a workflow going.
04:50:37 <monqy> the importance of doHere is when you want to make things spawn on the workspace where you hit the spawn key, rather than the one where it ends up making its windowey things
04:51:13 <monqy> I also have some planned additions but I have not gotten around to doing them
04:51:42 <monqy> hm, unity.
04:52:00 <elliott> hm says the monqy. hm.
04:52:11 <monqy> I haven't yet bothered figuring out what's so bad about it
04:52:27 <monqy> an important rule: I am not to try unity and see for myself
04:52:28 <elliott> your MOM is so bad about it . lol . (a joke.)
04:52:43 <monqy> my mom is so bad about most things.....
04:52:47 <monqy> ................
04:52:49 -!- elliott has quit (Read error: Connection reset by peer).
04:52:53 <monqy> rip
04:53:12 -!- elliott has joined.
04:54:36 <elliott> monqy: poitclaitcal cartoon...
04:54:47 <monqy> is it about unity
04:54:55 <elliott> no i was talk... about mom remark...e...
04:55:00 <monqy> oh....
04:55:00 <elliott> it is esoteriece poitcslans caneiocntdfkg
04:55:02 <elliott> ocfgjkldxpocfkv lbn
04:55:04 <elliott> gi;h
04:55:07 <elliott> hi
04:55:15 <monqy> hi
04:55:49 <elliott> oh no
04:55:50 <elliott> i forgot to
04:55:52 <elliott> back up my emacs config
04:56:00 <monqy> was it important
04:56:04 <elliott> it had...heplful things
04:56:11 <Vorpal> morning
04:56:38 <Vorpal> 06:56 local time. Urgh.
04:56:48 <Vorpal> Soon about to leave for an exam.
04:57:04 <monqy> good times
04:57:51 -!- MDude has changed nick to MSleep.
04:58:39 <Vorpal> <elliott> no i was talk... about mom remark...e... <-- somehow I read "remark" as "shark"....
04:58:46 <elliott> shark remark
04:58:50 <elliott> best kind
04:58:57 <Vorpal> elliott: mom shark?
04:59:01 <elliott> mark
04:59:42 <Vorpal> Mark! remarked the shark about the ark?
04:59:46 <Vorpal> nah
04:59:58 <Vorpal> I'm still half asleep
05:01:50 <Vorpal> don't use a non-repeating image as the header of a page: regardless of how wide you make, there will be some monitor that is wider than it, making the page look horrible...
05:02:14 <Vorpal> (the web system of my university does this, looks horrible on my large desktop monitor)
05:02:23 <elliott> Unless you make it ten miles wide.
05:02:26 <zzo38> Or not using any image as the header of a page.
05:02:34 <Vorpal> elliott: right, but then loading time will be horrible
05:02:38 <zzo38> Another way is using gradients and having a solid color at the end in case it look bad
05:02:39 <Gregor> Vorpal: It could be fine if it's also not tiled or stretched ...
05:02:56 <Vorpal> Gregor: It isn't tiled or stretched, it is padded with white background on the right side
05:03:25 <Gregor> That would look fine if it was white on the right side itself :P
05:03:31 <Gregor> (That is, if it flowed naturally into plain white)
05:03:38 <Vorpal> Gregor: it doesn't do that
05:03:56 <zzo38> You could also just use a small logo, with transparency, and not set colors or fonts at all.
05:04:41 <Vorpal> sure, but is a drawn skyscape over the university kind of thing they use, changed to fit the season. No I don't know why.
05:05:09 <Vorpal> doesn't actually match the real skyscape correctly either.
05:06:06 <elliott> http://ompldr.org/vYWo3Zw At least Unity makes my emacs setup look pretty spiffy.
05:06:38 <zzo38> I have finished making the recording of the today D&D game session. Read
05:06:46 <Vorpal> elliott: full screen mode?
05:06:48 <Vorpal> what
05:06:57 <elliott> Vorpal: I like running Emacs maximised.
05:07:03 <elliott> In Unity, that translates to "fullscreen".
05:07:09 <Vorpal> elliott: is unity mostly bad though?
05:07:15 <elliott> Well, I think so. We'll see.
05:07:59 <Vorpal> elliott: also, long live clearlooks. I liked the aesthetics of it. Can't imagine why they removed it for GTK3...
05:08:06 <zzo38> When at FreeGeek, I run most programs (except xdvi) in the VC1 text mode, connected to beryllium by SSH.
05:08:16 <elliott> I like zzo38's opinions more than Vorpal's.
05:08:47 <Vorpal> elliott: so you don't like clearlooks: sure, okay. But not everyone has to like the same things.
05:08:55 <elliott> Assumptions hour with Vorpal
05:09:17 <Vorpal> mhm
05:09:20 <pikhq> I'm still partial to Mist. And more importantly, Grey Mist.
05:09:32 <elliott> Grey Mist the best. If I put Grey Mist into Unity it might explode.
05:09:33 <Vorpal> pikhq: is that around in GTK3?
05:09:48 <pikhq> I dunno if the Mist engine is in GTK3.
05:09:52 <Vorpal> ah
05:09:53 <Vorpal> well, I have to leave. cya
05:09:56 <pikhq> XFCE doesn't use GTK3 (yet?).
05:10:03 <pikhq> It is.
05:11:00 -!- elliott has quit (Remote host closed the connection).
05:11:34 <zzo38> I use xdvi for print preview, so it uses graphical mode. But other programs I use there can just work with text mode, such as vi, gcc, Enhanced CWEB, TeX, SQLite, bashgopher, and a few other things.
05:12:24 <zzo38> Although I do use the graphical mode for web browser, such as viewing Wikipedia or the documentation for some things which do not have man pages.
05:12:24 -!- elliott has joined.
05:13:37 <elliott> "Sorry, Compiz closed unexpectedly".
05:13:39 <elliott> It... did?
05:14:38 <zzo38> For actual printing, I use a command similar to this: dvilj4 - < whatever.dvi | lp
05:14:58 <zzo38> (Their printer is not a HP LaserJet 4, it is made by a different company but is still compatible with PCL, so it works)
05:16:06 -!- elliott has quit (Remote host closed the connection).
05:16:30 -!- elliott has joined.
05:17:17 <zzo38> It seems, to me, they don't want to use pipes for a lot of things these days.
05:18:21 <elliott> Well, pipes are limited in that they can only effectively carry one channel of information, and there's little opportunity to pass out-of-bound things such as errors.
05:18:30 <elliott> They're a good idea, but they're limited as a plugging mechanism.
05:21:19 <elliott> pikhq: What would you call the argument you get in a PING/send in a PONG?
05:21:38 <elliott> Data? Canary? Identifier?
05:21:48 <zzo38> I don't know.
05:21:48 <elliott> I feel like there's some evocative name for things like that that I just can't remember.
05:21:52 <elliott> (In that you have to send the same thing back.)
05:21:55 <pikhq> elliott: Cookie?
05:22:01 <elliott> pikhq: Oh, that's good.
05:22:34 <elliott> Yes, that's good.
05:22:35 <pikhq> Yeah, that's actually the stock term. HTTP cookies are just a specific instance thereof.
05:22:36 <elliott> For now at least.
05:23:04 <zzo38> The help file for this server says PING <source> :<target> but really if you specify only one parameter, it send back to you the same thing.
05:25:43 -!- GreaseMonkey has joined.
05:25:54 <fizzie> In an ICMP echo-request message it's called just boringly "data".
05:26:04 <zzo38> Do you like, so far, story that is recording of D&D game?
05:26:18 <zzo38> Does it contain a mistake?
05:32:21 <zzo38> Do you like STAR STACKER game in QBASIC?
05:33:50 <elliott> pikhq: Incidentally, what's your Xfce panel setup like? I've always had troubles getting one I'm happy with.
05:35:34 <pikhq> 20 pixels high, XFCE button, taskbar, icon bar, virtual desktop viewer, clock. All on the bottom.
05:36:57 <elliott> 20? But that's not a defined icon size. They'll be so ugly. :(
05:37:17 <pikhq> Not noticed any aesthetic issues.
05:37:23 <elliott> Try twenty-four. :p
05:37:47 <pikhq> :(
05:38:25 <pikhq> I think I prefer 20.
05:40:31 <elliott> pikhq: But your icons will be being downscaled :'( ;")( :(999999999999999
05:40:32 <elliott> SO UNCRISPE
05:41:09 <pikhq> I'm not noticing any downscaling artifacts, though.
05:41:33 <elliott> Hmm, screenshot?
05:42:34 <pikhq> OIC.
05:43:06 <pikhq> 16x16 is a defined icon size. And the panel is not giving the icons literally the full height of the panel.
05:43:40 <pikhq> So, for a 24-high panel it would be downsizing, but for a 20-high panel it wouldn't.
05:44:11 <elliott> Ah.
05:44:21 <elliott> Try A FEW MORE THAN TWENTY-FOUR :p
05:44:22 <elliott> :p
05:44:23 <elliott> :P
05:44:28 <elliott> I think I used twenty-eight, actually.
05:45:05 <pikhq> Also, most of the icons are scalable.
05:45:13 <pikhq> :)
05:47:16 <elliott> pikhq:
05:47:18 <elliott> "Working on an update kernel for Fedora 15, rebasing from 2.6.38 to 3.0.
05:47:18 <elliott> As we know a bunch of userspace packages need updating to deal with the 2.6 -> 3.x transition, we made a decision to ship 3.0, but call it 2.6.40 rather than ship a ton of updates, and risk breaking other code that we don't ship."
05:47:33 <elliott> In the distance: Linus, drinking to forget.
05:48:04 <pikhq> The only userspace break I know of from 3.x is actually from a misusage of kernel headers that *happened* to break on v3.0.
05:48:12 <elliott> "Dave Jones - +David Cantrell In updates, we try not to induce breakage, especially when it's of the form "doesn't boot any more". Which is
05:48:12 <elliott> one failure case (mdadm needs an update for eg)."
05:48:24 <elliott> It's stuff looking at the version.
05:48:30 <elliott> And going "WAHTHST THIS"
05:48:31 <pikhq> *sigh*
05:48:41 <pikhq> "I KNOW PRECISELY ONE VERSION BECAUSE DUR"
06:08:40 -!- ive has quit (Ping timeout: 276 seconds).
06:09:45 -!- Jafet has joined.
06:16:18 -!- aloril has quit (Ping timeout: 240 seconds).
06:26:54 -!- copumpkin has quit (Ping timeout: 260 seconds).
06:27:19 -!- copumpkin has joined.
06:28:04 -!- cheater has joined.
06:30:43 -!- aloril has joined.
06:42:16 -!- aloril has quit (Ping timeout: 244 seconds).
06:43:54 -!- ive has joined.
06:44:39 -!- ive has quit (Client Quit).
06:45:56 -!- Ngevd has joined.
06:46:36 <Ngevd> You know what's annoying about switching between Windows and Ubuntu while liking Ubuntu Unity?
06:47:07 <Ngevd> I tried to open IRC by moving my mouse to the far left of the screen
06:47:49 <elliott> try not using windows :P
06:48:51 <Ngevd> I will CONTINUE USING WINDOWS UNTIL THE DAY I FIGURE OUT HOW TO INSTALL DWARF THERAPIST ON UBUNTU
06:49:00 <Ngevd> WHICH WON'T BE TODAY
06:51:01 <CakeProphet> my semicolons are the best
06:51:04 <CakeProphet> transitional punctuation.
06:52:39 <CakeProphet> Ngevd: you just have to add the repo to your sources.lst
06:52:52 <CakeProphet> open up a terminal and type: sudo gedit /etc/apt/sources.list
06:52:58 <CakeProphet> (or another text editor if you prefer)
06:54:05 <CakeProphet> then add this line into the file: deb http://dwarftherapist.com/apt maverick universe
06:54:46 <CakeProphet> then back in the terminal type: sudo apt-get update && sudo apt-get install dwarftherapist
06:55:01 <elliott> ...
06:55:20 <elliott> why are you lying to taneb
06:55:30 <CakeProphet> *Negvd
06:55:32 <CakeProphet> am I?
06:55:37 -!- aloril has joined.
06:55:43 <CakeProphet> this is what I did to install dwarftherpist
06:55:45 <CakeProphet> and it works.
06:55:51 <elliott> Ngevd: just "make"
06:56:02 <elliott> you installed all the dev libs iirc
06:56:18 <CakeProphet> that doesn't really give you the benefits of the package manager though... unless it does.
06:56:29 <elliott> dt is one binary
06:56:36 <elliott> it does not need installing
06:56:44 <elliott> df isnt packaged either
06:57:08 <CakeProphet> still, by doing the above you get updates forever without thinking about it (provided the repo is maintained)
06:58:06 <CakeProphet> by yeah a make is fine.
06:58:34 <CakeProphet> it just sounds like he was having difficulties with the manual install
06:58:44 <CakeProphet> whereas the repo install is almost impossible to fuck up.
06:59:07 <elliott> Googling it, it looks like http://code.google.com/p/dwarftherapist/wiki/LinuxVersion
06:59:09 <elliott> it is hideously out of date
06:59:15 -!- Ngevd has quit (Remote host closed the connection).
06:59:38 <CakeProphet> elliott: I don't understand why people are so bad at maintaining packages in repos...
06:59:50 -!- Ngevd has joined.
07:00:25 <elliott> CakeProphet: perhaps because you have too much free time
07:00:38 <CakeProphet> heh. yes that must be it.
07:00:50 <CakeProphet> look at these valuable minutes I'm spending, talking on IRC.
07:02:29 <CakeProphet> elliott: how might I use my free time to update that package?
07:02:46 <elliott> by setting up your own repo, ppa whatever
07:02:58 <CakeProphet> I can't use the existing one?
07:03:12 <CakeProphet> (forgive me in advance for not knowing everything about everything still)
07:03:33 <CakeProphet> (working on it)
07:06:10 -!- elliott_ has joined.
07:06:17 -!- elliott has quit (Read error: Connection reset by peer).
07:06:33 <elliott_> 07:02:58: <CakeProphet> I can't use the existing one?
07:06:43 <elliott_> CakeProphet: You'd have to get write access from its owner.
07:08:52 <CakeProphet> ah okay
07:08:56 <CakeProphet> shouldn't be difficult.
07:09:02 <CakeProphet> "hey don't be lazy plz"
07:09:19 <elliott_> You have a naive view.
07:13:44 <fizzie> Yes. Consider: the robotfindskitten people still haven't linked to my TI-86 port (perhaps believing their own lies of the TI-83+ version being "for the TI-8x series of calculators", even though I emailed them twice about two years ago.
07:14:12 <fizzie> Apathy and worse.
07:14:21 <fizzie> Whoops, ).
07:14:32 <fizzie> I almost unbalanced the channel. :/
07:18:07 <monqy> i love robotfindskitten
07:19:02 -!- Ngevd has quit (Ping timeout: 245 seconds).
07:19:03 <elliott_> robotfindskitten is the best roguelike; game.
07:19:25 -!- zzo38 has quit (Remote host closed the connection).
07:35:45 -!- atehwa has quit (Ping timeout: 260 seconds).
07:35:50 -!- Jafet1 has joined.
07:36:57 -!- Jafet has quit (Ping timeout: 265 seconds).
07:47:22 -!- augur has quit (Remote host closed the connection).
07:48:44 <elliott_> pikhq: You know, I don't think @'s file system actually needs any indexes at all.
08:03:40 -!- Jafet1 has quit (Quit: Leaving.).
08:03:47 <elliott_> http://esoteric.voxelperfect.net/wiki/German
08:03:48 <elliott_> die
08:03:48 <elliott_> die
08:03:49 <elliott_> die
08:10:20 <Patashu> who made that
08:11:05 <Patashu> http://aoeu.tk/ this person
08:12:22 -!- azaq23 has quit (Ping timeout: 245 seconds).
08:12:54 <fizzie> printf("Warning, this will overwrite %s, beginning in 3 seconds\n", argv[2]); for(int i = 3; i > 0; i--) { printf("%d...", i); fflush(stdout); sleep(1); }
08:12:57 <fizzie> Best "compiler" evar.
08:13:31 <Patashu> haha
08:13:42 <Patashu> c'mon
08:13:44 <Patashu> it's a nice compiler!
08:16:24 <fizzie> If I'm not mistaken, it also fails to include any BEER that starts more than 9 bytes before EOF.
08:16:46 <fizzie> s/more/less/
08:16:52 <fizzie> s/less/later/
08:16:55 <fizzie> You know what I mean.
08:17:12 <elliott_> Nice.
08:21:21 <fizzie> What it does is for(int i = 0; i < size - 9; i++) { if (toupper(input[i]) == 'S' && toupper(input[i+1]) == 'C' && ... && toupper(input[i+8] == 'L') { ... } else if (toupper(input[i] == 'B' && ...) { ... } }.
08:21:53 <Patashu> haha
08:21:58 <Patashu> excellent programming
08:22:24 <fizzie> Excellent tools for an excellent language, one supposes.
08:25:16 <CakeProphet> what the hell...
08:25:41 <CakeProphet> some people are just so good at programming.
08:25:46 <CakeProphet> I'm in awe. envious even.
08:27:08 -!- augur has joined.
08:29:51 <elliott_> Xubuntu or Debian. Hrrrm.
08:29:58 <CakeProphet> elliott_: do you know about Python C API?
08:30:05 <CakeProphet> also why would you use Xubuntu?
08:30:37 <elliott_> Because Unity sucks and gnome-panel three is terrible too?
08:31:04 <CakeProphet> what's bad about gnome-panel compared to xcfe?
08:31:10 <elliott_> gnome-panel two is fine.
08:31:15 <elliott_> gnome-panel three in oneiric is an abomination.
08:31:34 <CakeProphet> *oneiris beta release
08:31:37 <CakeProphet> *c
08:31:48 <elliott_> CakeProphet: It's beta two, they're not going to make any sweeping changes to the UI.
08:31:56 <elliott_> It's been through three alphas and one beta already.
08:32:03 <CakeProphet> YOU NEVER KNOW.
08:32:04 <CakeProphet> :P
08:32:05 <elliott_> Especially not for a UI you have to manually install with a package manager.
08:32:17 <elliott_> For a start, it's hideous -- http://lh5.googleusercontent.com/-HaLVAPdynX0/TnNHfECF0KI/AAAAAAAAAbA/udfn-e82aCY/s1600/Gnome-Fallback.png -- what the fuck happened to the panel gradient? And why is the clock in the middle?
08:32:20 <CakeProphet> oh... they stopped supporting it out of the box.
08:32:22 <CakeProphet> NOOOO
08:32:34 <elliott_> For a second, to move anything about in the panel or anything you have to hold down alt while right clicking. OK it's not major but it's really annoying.
08:32:37 <CakeProphet> these are all things that can be fixed though.
08:32:41 <elliott_> Also the top panel is pretty big now which is also annoying.
08:32:42 <elliott_> CakeProphet: No they're not.
08:32:43 <elliott_> I tried.
08:32:48 <elliott_> I tried for about half an hour.
08:32:54 <CakeProphet> o_o
08:32:55 <elliott_> There is no way to get the panel to not have a hideous half-gradient.
08:33:07 <elliott_> There is no way to make the indicator icons not badly-sized.
08:33:17 <CakeProphet> :(
08:33:20 <CakeProphet> I am sad face.
08:33:24 <elliott_> It feels like something someone hacked up in ten minutes and put on a git repository.
08:33:28 <elliott_> Unity is about ten million times bette.r
08:33:30 <elliott_> better.
08:33:32 <elliott_> And I can't stand Unity.
08:33:35 <CakeProphet> this is bad.
08:33:45 <elliott_> Whereas Xubuntu is basically GNOME two, but slightly different.
08:33:58 <CakeProphet> does Kubuntu use a Unity (Kunity???)
08:34:00 <elliott_> OK, some of its programs are slightly inferior/less featureful to GNOME two's versions, but everything is functional. I mean, Linus uses Xfce.
08:34:04 <elliott_> CakeProphet: No, it's KDE.
08:34:10 <elliott_> Note that Ubuntu is not Gubuntu.
08:34:17 <elliott_> (Gubuntu being a hypothetical "GNOME Ubuntu".)
08:34:17 <CakeProphet> not much of an improvement I guess.
08:34:31 <elliott_> KDE is nicer than Unity.
08:34:36 <CakeProphet> that's true.
08:34:48 <CakeProphet> needs moar Gubuntu.
08:34:56 <elliott_> Anyway, my choices are basically between Xubuntu, Debian with Xfce, or Debian with GNOME two (I think they have a fork).
08:35:22 <CakeProphet> oh Xfce is what comes standard on Debian?
08:35:35 <CakeProphet> well, I'd go with Xubuntu I guess?
08:35:36 <fizzie> Glub-untu, speaker of the vast glub.
08:35:40 <elliott_> No, Debian is GNOME.
08:35:45 <elliott_> But they support Xfce as a first-class citizen.
08:35:52 <elliott_> Really Debian's "defaultness" of GNOME is that it's ticked by default.
08:35:56 <elliott_> They're very traditionalists.
08:36:11 <elliott_> fizzie: The vvery best OS. Oops.
08:36:12 <CakeProphet> Slackware is the only choice now.
08:36:22 <elliott_> GENTOO [is mauled by bears]
08:36:48 <CakeProphet> elliott_: maybe you didn't try hard enough to fix gnome-panel
08:37:02 <CakeProphet> maybe I'll upgrade to oneiric and everything will be the same.
08:37:02 <fizzie> Maybe you should have spent half a DAY.
08:37:08 <elliott_> CakeProphet: I asked in the official oneiric channel and talked with one of the very knowledgable people extensively.
08:37:24 <fizzie> Oh, so it looks broken by design?
08:37:25 -!- azaq23 has joined.
08:37:35 <elliott_> They told me that, gee, if you set it to solid colour and select the window decoration border, you get a slightly different solid colour with all of the items still having gradients.
08:37:48 <elliott_> And then got upset when I mumbled that Canonical evidently don't care about GNOME users.
08:37:53 <CakeProphet> lol
08:38:10 <elliott_> (OK, so it's unfair, apparently /someone/ is working on GNOME panel at Canonical, but come on.)
08:38:14 <elliott_> fizzie: Yes.
08:38:17 <CakeProphet> I do believe they'll lose a lot of users without good GNOME support (i.e. me)
08:38:22 <elliott_> fizzie: Well, maybe not the gradient, but the rest of it.
08:38:35 <elliott_> fizzie: It's meant to look like the dumb-computer version of GNOME three's non-panel.
08:38:40 <elliott_> Which means it's absolutely useless as a panel.
08:38:46 <elliott_> Oh, and the system menu is gone.
08:38:49 <elliott_> Because gnome three doesn't have it.
08:38:53 <elliott_> How do you configure system settings?
08:38:55 <elliott_> You don't.
08:39:01 <elliott_> Or, uh, use a terminal I guess?
08:39:02 <CakeProphet> system settings? who needs it.
08:39:15 <CakeProphet> rip Ubuntu the good linux distro.
08:39:19 <elliott_> tl;dr Ubuntu+gnome-panel is a dead end.
08:39:40 <elliott_> But I hear gnome three is MADE OF EASY.
08:39:49 <elliott_> Made of eelsy. Augh, fizzie.
08:40:05 <CakeProphet> elliott_: you should let me steal all of your hard work when you figure out how to make Ubuntu + GNome 3 not terrible.
08:40:12 <elliott_> It's ridiculbass the kind of puns I'm mackereling here.
08:40:31 <CakeProphet> fish puns are the worst.
08:40:33 <elliott_> CakeProphet: I'm not going to, I'm going to switch to a distro with a supported main UI that's sane out of the box.
08:41:03 <CakeProphet> but I'm afraid of change. what if Debian is more diffeelcult than Ubuntu
08:41:04 <elliott_> You should too.
08:41:19 <elliott_> CakeProphet: So use Xubuntu, which is almost identical to a gnome three desktop OOTB, and is well-supported, and uses the exact same installer.
08:41:27 <elliott_> You can switch to it without even reinstalling.
08:41:29 -!- monqy has quit (Quit: hello).
08:41:37 <CakeProphet> but what if Debian better? I don't handle choices very well....
08:41:42 * CakeProphet cowers in fear.
08:41:50 <elliott_> So you'll stay on the distinctly worse Ubuntu?
08:41:55 <CakeProphet> no.
08:41:55 <elliott_> I think there's a name for that. Something's ass.
08:42:19 <CakeProphet> well what's different about Debian?
08:42:22 <elliott_> Oh, you could also try Lubuntu, but... I wouldn't.
08:42:49 <elliott_> CakeProphet: Slightly less "integration polish" by default, the installer is slightly more involved, different release schedule, no branding.
08:42:54 <elliott_> Well, branding, but only that Debian swirl thing.
08:42:56 <elliott_> Also no Ubuntu One. Oh no.
08:43:20 <CakeProphet> noooooo
08:43:42 <CakeProphet> what about repos? I know Ubuntu is mostly debian software but I'll be losing some repo software going upstream right?
08:43:56 <elliott_> Not really.
08:44:02 <elliott_> Debian has everything that isn't Ubuntu-specific.
08:44:09 <elliott_> I mean, Firefox is called Iceweasel, obviously.
08:44:14 <elliott_> And might have a slightly older version.
08:44:27 <elliott_> But it's pretty much the same base of software, and if you use the testing repos, usually slightly newer.
08:44:48 <CakeProphet> iceweasal what.
08:44:58 <elliott_> CakeProphet: Mozilla are assholes about their trademark.
08:45:04 <elliott_> Debian's options were to remove Firefox or change its name.
08:45:10 <elliott_> Every other distro does this too.
08:45:14 <CakeProphet> is there a way I can get a list of all of my installed packages so that I can quickly reinstall them on a Debian system?
08:45:15 <elliott_> For instance Arch calls its firefoxes by their codename.
08:45:27 <elliott_> CakeProphet: Well, technically, yes, but doing that would be a terrible idea for /any/ distro transition.
08:45:38 <elliott_> Trust me, there is not the slightest universe where you would want to do that. Ever.
08:45:47 <CakeProphet> so just start from scratch then?
08:45:59 <elliott_> Yes. You probably really don't use as much software as you might think.
08:46:09 <elliott_> You could always just go for Xubuntu, which is literally identical.
08:46:16 <elliott_> I'd choose Debian without thinking if not for my hardware situation.
08:46:25 <elliott_> There's something about being able to rely on eighteen years of experience.
08:46:34 <elliott_> The damn thing's older than me.
08:46:35 <CakeProphet> I might try Debian. what hardware situation?
08:46:40 <elliott_> MacBook Air.
08:46:46 <CakeProphet> ah
08:46:53 <CakeProphet> so I should be fine.
08:47:01 <elliott_> CakeProphet: I think the "GNOME desktop" that Debian offers to install is three, so I'd try Xfce first time round.
08:47:12 <elliott_> Oh, and since Debian's site is useless about this --
08:47:41 <elliott_> CakeProphet: http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/debian-testing-amd64-netinst.iso would be the ISO you would want.
08:47:52 <elliott_> Don't be put off by the testing name; in Debian, stable means "a few years old" and testing means "stable".
08:48:08 <elliott_> (unstable/sid means "beta/alpha-quality" and experimental means "broken".)
08:48:29 <CakeProphet> I don't /use/ a lot of the software I've installed regularly but I've accumulated a shit ton of packages/modules/whatever in various languages that I kind of wanted to have around so I don't have to ever think about them again... but, I guess that's no big deal.
08:48:59 <CakeProphet> amd64? I'm running intel though.
08:49:05 <elliott_> >_<
08:49:09 <elliott_> The name of the architecture is amdsixtyfour.
08:49:12 <elliott_> Because they invented it.
08:49:16 <CakeProphet> oh okay.
08:49:23 <elliott_> CakeProphet: And a final helpful tip: You want to do the "Xfce -> expert graphical install". Trust me. Graphical because the terminal interface is ugly, and /expert/ because -- well, you can use the default answer to almost all its questions -- but only in expert mode does it offer to install a sudo-based system instead of a separate root password.
08:49:27 <elliott_> It should be default, but it isn't.
08:49:44 <CakeProphet> ....oh yes
08:49:45 <CakeProphet> good tip.
08:50:01 <CakeProphet> "not an expert" = LESS CONVENIENCE FOR YOU
08:50:16 <elliott_> ISTR having some problems with PolicyKit not wanting to use sudo after that, but it was only one file change or so to get it working which I can tell you if it happens to you.
08:50:30 <elliott_> But that's most of what I know about installing Debian.
08:50:47 <elliott_> CakeProphet: Oh, and that's a netinstall CD, so it's about a sixth of the size of an Ubuntu one, but downloads the packages from the internet as it installs.
08:51:05 <elliott_> Debian don't really devote time to choosing a set of "default packages" and offering it on one CD, but you can download about ten DVDs if you want...
08:51:28 <elliott_> It only matters in that you need an internet connection when you install, and it takes like twenty minutes longer. But it's a one-time thing, so.
08:52:03 <elliott_> But my point is:
08:52:06 <elliott_> God I hate apple hardware
08:52:38 <CakeProphet> okay is there wireless driver support good?
08:52:45 <CakeProphet> I had problems with that on Ubuntu.
08:53:08 <CakeProphet> also would it be absolutely insane to migrate my current /etc to my new /etc?
08:53:15 <elliott_> CakeProphet: Well, certainly not better than Ubuntu's. They're much more wary of non-free software. I strongly suggest you install with an Ethernet cable and sort it out later.
08:53:17 <elliott_> And god yes that would be insane.
08:53:30 <elliott_> Back up your home folder and /etc if you want, but don't do anything automatic like that.
08:53:41 <fizzie> The stable Debian 6.0 installation set is available on CDs too; you just download 52 full-CD .iso images and burn them all.
08:53:51 <elliott_> (You'll be able to get any wireless card that works with Ubuntu working on Debian, it might just be fiddlier.)
08:53:53 <elliott_> fizzie: Haha, wow.
08:54:04 <elliott_> I guess the DVD thing is kind of moot since you can only install testing with netinstall anyway.
08:54:39 <CakeProphet> but I can move my home over to Debian with no issues right?
08:55:07 <elliott_> CakeProphet: Yes, but I'd exclude the dotfiles and migrate them over one by one as you need them.
08:55:19 <elliott_> Otherwise things like ~/.local and all of ~/.config and the like will get copied over, which might mess with things.
08:55:24 <CakeProphet> oh... yeah I meant with dotfiles. okay.
08:55:31 <elliott_> Well, it shouldn't _break_ anything.
08:55:34 <elliott_> But I'd do it incrementally.
08:55:40 <CakeProphet> I'd probably move .cabal and .cpan and things of that nature.
08:55:51 <elliott_> .cabal would be a bad idea, unless you compile your own GHC.
08:55:58 <elliott_> Different GHC version, etc.
08:56:05 <elliott_> .cpan too, really.
08:56:11 <elliott_> Config files yes, binaries no.
08:56:28 <CakeProphet> wouldn't cpan be all scripts?
08:56:47 <elliott_> Well. Probably, yes. But still, slightly different perl version is quite likely...
08:56:48 <CakeProphet> >_>
08:56:54 <elliott_> I wouldn't.
08:56:56 <CakeProphet> ah okay
08:57:08 <elliott_> Looks like gnome in Debian testing is still two, actually, but that won't last...
08:58:02 * CakeProphet would have probably broken his new Debian install immediately otherwise.
08:58:08 <CakeProphet> moving everything in /etc and home
08:58:26 <fizzie> "GNOME 3 is in Debian experimental because it’s a work in progress. You should not install it if you can’t live with problems and glitches. Beware: once you upgraded to GNOME 3 it will be next to impossible to go back to GNOME 2.32 (you can try it, but it’s not officially supported by Debian). Even with the fallback mode, you won’t get the same experience than what you had with GNOME 2.32. Many applets are not yet ported to the newest gnome-panel API."
08:58:28 <elliott_> If you have free space, I'd install Debian to a small partition as a trial run first.
08:58:31 <fizzie> Sounds like the worst idea to do.
08:58:45 <elliott_> Better safe than sorry, and you can see what you'll need to account for ahead of time.
08:58:48 <elliott_> fizzie: Nice.
08:59:19 <CakeProphet> hmmm I wonder if my external is bootable.
08:59:28 <CakeProphet> does 500 GBs count as small? :P
08:59:35 <elliott_> "An Xfce release without a new clock mode would not be a true Xfce release. Let us introduce you the 'fuzzy' clock mode!"
08:59:41 <elliott_> See, these guys have their priorities in order.
08:59:49 <elliott_> "The directory menu plugin provides a menu reproducing the arborescence of a particular folder."
08:59:52 <elliott_> They use words like arborescence.
09:00:04 <CakeProphet> sounds good to me.
09:00:23 <fizzie> Heh, there's an "APT pinning file for the brave", if you want to try just getting Gnome 3 out of experimental.
09:00:24 <fizzie> Package: *gnome* libglib2.0* *vte* *pulse* *peas* libgtk* *gjs* *gconf* *gstreamer* alacarte *brasero* cheese ekiga empathy* gdm3 gcalctool baobab *gucharmap* gvfs* hamster-applet *nautilus* seahorse* sound-juicer *totem* remmina vino gksu xdg-user-dirs-gtk dmz-cursor-theme eog epiphany* evince* *evolution* file-roller gedit* metacity *mutter* yelp* rhythmbox* banshee* system-config-printer transmission-* tomboy network-manager* libnm-* update-notifier shotwell
09:00:25 <fizzie> liferea *software-properties* libunique-3.0-0 libseed-gtk3-0 libnotify* libpanel-applet-4-0 libgdata11 libcamel* libcanberra* libchamplain* libebackend* libebook* libecal* libedata* libegroupwise* libevent* gir1.2-* libxklavier16 python-gmenu libgdict-1.0-6 libgdu-gtk0
09:00:25 <fizzie> Pin: release experimental
09:00:27 <fizzie> Pin-Priority: 500
09:00:29 <fizzie> That's quite a list.
09:00:46 <CakeProphet> *mutter*
09:00:49 <elliott_> fizzie: Yikes.
09:01:30 <fizzie> I seem to recall a fuzzy clock from somewhere.
09:01:53 <CakeProphet> there's pretty much no way an external wouldn't be bootable if my computer can boot from USB right?
09:02:01 <elliott_> It should work.
09:02:02 <CakeProphet> I know some flash drives can't be booted
09:02:12 <elliott_> If all fails you can just boot it with GRUB.
09:02:16 <elliott_> That'll work on anything.
09:02:23 <CakeProphet> ah okay.
09:02:33 <elliott_> CakeProphet: Anyway, my basic summary of my experience with Debian would be: It's not as slick or polished as Debian and it'll take some effort to tweak to the same level as you'd get from Ubuntu. But given that extra work, it's a lot more predictable and reliable than Ubuntu, and tends to break less too.
09:05:01 <CakeProphet> that's fine. work is good. I can level up my shitty linux imaginary RPG stat.
09:07:16 <CakeProphet> also with compiz, at least graphical, it could be pretty slick.
09:07:21 <CakeProphet> *graphically
09:07:38 <elliott_> compiz : - (
09:07:44 <elliott_> metacity can do shadows, you know.
09:07:52 <elliott_> (And so can xfwm, I believe.)
09:07:56 <elliott_> (It does compositing.)
09:08:58 <CakeProphet> but compiz has FLAMES FOR WINDOW CLOSING ANIMATIONS MUAHAHAHAHAHAHA BADASS
09:09:06 <elliott_> id;ont like you
09:09:10 <CakeProphet> (just kidding I'm not one of those people)
09:09:30 <CakeProphet> elliott_: have you ever considered using a tiling wm like xmonad?
09:09:35 <elliott_> CakeProphet: Extensively.
09:09:40 <elliott_> I still might.
09:10:44 <CakeProphet> your Haskell hipster cred would escalate rapidly.
09:11:02 <elliott_> xmonad is obviously the best tiling WM, it's just a question of whether the paradigm is for me or not.
09:11:22 <elliott_> Ah, nice how fast the Debian CD burns :P
09:11:30 <elliott_> (I figured I might as well see what it thinks of my hardware.)
09:11:32 <CakeProphet> I imagine it would be kind of like windows in emacs
09:11:34 <CakeProphet> except everywhere
09:11:43 <CakeProphet> which would not be bad.
09:11:46 <elliott_> CakeProphet: Except automatically splitting
09:11:48 <elliott_> CakeProphet: Except automatically splitting.
09:11:52 <CakeProphet> oh... right.
09:12:04 <elliott_> (There's basically two schools of thought, but auto-splitting has taken off while the other POV has basically died.)
09:12:22 <elliott_> The problem I had was that browser windows and the like become too wide.
09:12:25 <elliott_> But...
09:12:34 <elliott_> I've browsed maximised for several months now.
09:12:36 <CakeProphet> elliott_: soon you could be as cool as this guy http://www.youtube.com/watch?v=7ZAmMdRBRjs
09:12:50 <elliott_> Something we can all aspire to.
09:14:21 <CakeProphet> I might try out xmonad if there's a sane way to switch back and forth.
09:14:34 <elliott_> That's called any desktop manager.
09:14:54 <CakeProphet> oh I thought the desktop manager was under the window manager. other way around?
09:15:04 <CakeProphet> er, on top of, actually.
09:15:08 <CakeProphet> wrong spatial metaphor. :P
09:16:00 <elliott_> Well, it starts WMs.
09:16:18 <elliott_> You can't keep the window state while switching WMs, you have to restart things. There are exceptions, but [no].
09:17:18 <CakeProphet> so gnome-panel can coexist happily with xmonad?
09:17:23 <CakeProphet> >_>
09:17:27 <CakeProphet> that sounds unlikely.
09:17:28 <fizzie> A desktop environment is sort-of "over" a window manager; a desktop manager is something very different.
09:17:35 <fizzie> And yes, I use gnome-panel with xmonad.
09:17:39 <CakeProphet> oh okay.
09:17:42 <fizzie> Except I don't really use the panel for much.
09:17:49 <elliott_> It can; you probably want to configure xmonad for it though.
09:17:51 <fizzie> Mostly it's just to hold the indicator applet thingies.
09:17:53 <elliott_> Lord knows why you'd want to.
09:18:12 -!- Jafet has joined.
09:18:43 <fizzie> I have these dzen2 bars providing workspace lists at the top of all screens, and a single bottom gnome-panel instance on one screen holding the indicator thingies and a clock and not much more.
09:18:55 <fizzie> Well, there's also some status monitoring thingies, it looked so empty otherwise.
09:19:47 <elliott_> The problem I have is that whenever I think "oh, I browse fullscreen, so this could work", I think "umm, I also emacs and terminal fullscreen. So I'd use the tiling for... Pidgin?"
09:19:55 <elliott_> And that's, like, ratpoison.
09:19:59 <elliott_> I don't want to use ratpoison.
09:20:16 <CakeProphet> .....terminal fullscreen what?
09:20:24 <elliott_> Fullscreen as in maximised.
09:20:28 <CakeProphet> why.
09:21:11 <CakeProphet> weirdo
09:21:13 <fizzie> What's the alternative, to have some useless empty space around the window?
09:21:14 <elliott_> Because there are long paths and compiler outputs.
09:21:34 <elliott_> Having it in a small window results in lots of wrapping and me being unable to see context when I have like five warnings.
09:22:01 <CakeProphet> ah
09:22:21 <CakeProphet> maybe I just have ADD so I do everything in fullscreen all the time I'll forget what I was doing. :P
09:22:36 <CakeProphet> I like to have some stuff behind my terminal.
09:22:49 <CakeProphet> so I usually use the default window size.
09:22:58 <CakeProphet> which is just a small rectangle.
09:23:12 <elliott_> I do like context behind windows, but...
09:23:25 <fizzie> I tend to keep Emacs and a terminal in a full-height half-width sort of setup (though with relatively tiny fonts and 1920 pixels of width, so there's a... reasonable, if not plentiful amount of columns), but that's probably mostly because I'm not much of an Emacsist and therefore don't do everything from within it like I should.
09:23:27 <elliott_> Everyone "like me" seems to use tiling WMs.
09:23:41 <CakeProphet> also typically when I'm programming I use emacs shell which is always tiled somewhere.
09:23:43 <elliott_> I can't think of a way to justify to myself how switching to one isn't inevitable, considering that.
09:23:54 <elliott_> CakeProphet: Emacs shell? Wrong. You're a wrong person. Don't do that. Bad.
09:23:58 <CakeProphet> why?
09:24:02 <elliott_> Just
09:24:02 <elliott_> no
09:24:10 <CakeProphet> for compiling and test it works fine...
09:24:16 <CakeProphet> not for reading docs though
09:24:17 <elliott_> noooooooo
09:24:23 <elliott_> CakeProphet: Tried M-x woman? :p
09:24:31 <CakeProphet> ....oh I forgot about that.
09:24:55 <CakeProphet> forgot about man as well
09:25:33 <elliott_> M-x man is much worse than M-x woman.
09:25:53 <fizzie> You're such a feminist.
09:26:13 <elliott_> Quite.
09:27:41 -!- sebbu3 has joined.
09:27:45 -!- sebbu3 has quit (Changing host).
09:27:45 -!- sebbu3 has joined.
09:27:54 <CakeProphet> maybe I should be an xmonad person.
09:28:30 -!- GreaseMonkey has quit (Quit: The Other Game).
09:29:08 <fizzie> CakeProphet: Incidentally and off-topic, I tried out character-grams generated from a Finnish word-list, and the results are really quite subtimal; there's this thing called wovel harmony we have (no word can contain wovels from the group {a, o, u} and {ä, ö, y} (that's {ɑ, o, u} and {æ, ø, y} IPA-wise) simultaneously) which introduces long-distance dependencies the 'grams just can't handle.
09:30:22 <CakeProphet> fizzie: you could just impose constraints on the result have it regenerate when it doesn't meet them.
09:30:35 <fizzie> Certainly, but then it's not language-agnostic at all.
09:30:59 <CakeProphet> right it would have to be encoded in the dataset somehow to make it flexible.
09:31:09 -!- sebbu2 has quit (Ping timeout: 248 seconds).
09:31:41 <fizzie> Also wovel harmony need not hold over compound words, but detecting if a word is "compound-like" enough to pass is not exactly trivial; yet there's quite a lot of compound words in Finnish and optimally those should be generated occasionally too.
09:31:55 <CakeProphet> ah
09:32:23 <CakeProphet> general compund-ness involves a large number of consonants juxtaposed.
09:32:29 <CakeProphet> ...usually.
09:32:34 <CakeProphet> in English.
09:32:58 <CakeProphet> `word 20
09:33:03 <HackEgo> sprot miachoptits oterneque spitchetche cian aries idesd asock hadilatateoxarriumedremegraccrateco nes prannedichosts baythnitia ddicix skrevane goye teecipbllin wis muel kpec cheoance
09:33:35 <CakeProphet> none of those are really compounds..
09:33:47 <fizzie> We have a couple of loan words that break the wovel harmony (like olympialaiset 'the olympic games'), the mispronounciation of which (in this case, as "olumppialaiset") is a stereotypical sign of a lower level of education.
09:34:01 <fizzie> "prannedichosts" could be.
09:34:14 <CakeProphet> not in english pronunciation.
09:34:31 <CakeProphet> there's no abrupt stop.\
09:34:46 <fizzie> Maybe it'd need a k after the c there.
09:35:38 <CakeProphet> yeah
09:35:56 <CakeProphet> well it could be a compound of "prandi" and "chosts
09:36:12 <CakeProphet> but really I don't think you can really decide compounds across vowel-consonant boundaries.
09:37:13 <CakeProphet> (by the way naively pronouncing wovel in English is funny sounding)
09:37:17 <CakeProphet> kind of like wobble
09:37:54 <fizzie> Finnish can easily have compound words that are split between pairs of wovels. "Hätäuloskäytävä" ('emergency exit') is formed as "hätä/ulos/käytävä". The rules of spelling add a '-' if the wovel is same on both sides, though. (E.g. "linja-auto" 'bus'.)
09:37:56 <CakeProphet> but I'm guessing Finnish sounds w's and v's like German does.
09:38:35 <CakeProphet> man finnish sure is weird.
09:39:56 <CakeProphet> not was weird as Polish though.
09:40:02 <CakeProphet> s/was/as/
09:40:57 <fizzie> We don't have a native 'w' at all, and our letter 'v' is the IPA /ʋ/, matching the German 'w' (at least sometimes, anyway); not the German 'v' which I think sounds like /f/ or some-such.
09:42:08 <CakeProphet> Polish nouns have 7 cases and 5 genders. Verbs have three tenses, three moods, and three voices (I guess that's not too different from English though really).
09:42:55 <fizzie> There are 15 noun cases in Finnish.
09:43:05 <fizzie> 16 in some dialects.
09:43:12 <CakeProphet> oh nevermind maybe Finnish is worse.
09:43:38 <CakeProphet> English is awesome and simple.
09:43:49 <CakeProphet> and has a lot of words.
09:43:54 <fizzie> And 6 verb moods, though two of them are really archaic and not used.
09:44:14 <fizzie> We don't have any genders, though.
09:44:26 <fizzie> Well, or one; I guess that depends on how you count it.
09:44:50 <CakeProphet> do your pronouns have gender?
09:45:25 <CakeProphet> I do find it odd that pronouns are the only place we care about gender in English.
09:45:30 <elliott_> bakc
09:45:36 <fizzie> No, if I understand the question right and you mean the personal pronouns. We just have 'hän' for both he/she.
09:45:45 <elliott_> 10:29 <fizzie> CakeProphet: Incidentally and off-topic, I tried out character-grams generated from a Finnish word-list, and the results are really quite subtimal; there's this thing called wovel harmony we have (no word can contain wovels from the group {a, o, u} and {ä, ö, y} (that's {ɑ, o, u} and {æ, ø, y} IPA-wise) simultaneously) which introduces long-distance dependencies the 'grams just can't handle.
09:45:47 <elliott_> Estonian :P
09:45:49 <CakeProphet> fizzie: yes
09:46:19 <CakeProphet> compare to spanish were every noun, adjective, and pronoun has gender.
09:46:22 <CakeProphet> *where
09:47:09 <fizzie> Anyway, we have inflexional suffixes for {first, second, third} person {singular, plural} for all the verb forms, so often you don't need a personal pronoun at all, unless you want to emphasize it.
09:47:21 <elliott_> fizzie: No?
09:47:26 <CakeProphet> fizzie: do you have a pronoun distinct for "it" that's distinct from he/she?
09:47:38 <fizzie> "I eat" => "syön".
09:47:52 <CakeProphet> fizzie: yes Spanish works like this.
09:48:02 <CakeProphet> many languages do from what I gather.
09:48:14 -!- sllide has joined.
09:49:00 <fizzie> CakeProphet: Yes, we do have an 'it'. And actually in speech it has become quite common to use that for all third-person use, the proper ones sound a bit pretentious already.
09:49:27 <fizzie> Informal speech, anyway.
09:49:34 <CakeProphet> "I eat" in spanish would be "como"
09:50:07 <fizzie> Syön, syöt, syö; syömme, syötte, syövät. (I eat, you eat, he/she/it eats; we eat, you (plural) eat, they eat.)
09:50:26 <CakeProphet> bahahaha "y'all eat"
09:50:28 <CakeProphet> English is the best.
09:50:29 <elliott_> I guess I will: try the Debian: intsaller.
09:50:36 <CakeProphet> or you all, you guys, everybody, etc etc.
09:51:19 <fizzie> "Is it true that the plural of "y'all" is "all y'all"", asked somebody in some webcomic once.
09:51:23 <CakeProphet> it's bizzare that there is no formal second person plural pronoun.
09:51:30 <CakeProphet> bahahaha.
09:51:44 <CakeProphet> all y'all is a thing. in the south anyways. to specify that it's not a subset of the group you're speaking to.
09:51:47 -!- elliott_ has quit (Remote host closed the connection).
09:51:54 <CakeProphet> as in "no really, everybody"
09:52:24 <CakeProphet> whereas y'all in an ambiguous context could refer to a specific group within a larger group.
09:53:38 <CakeProphet> American southerners: pioneers of effective English pronoun usage.
09:53:51 * CakeProphet is proud.
09:54:03 <CakeProphet> also slavery was cool.
09:54:25 <fizzie> We possibly go rather further with the suffixes than many other languages, though. "Also for a coffee drinker" => "kahvinjuojallekin". (That's "kahvin|juoja" 'coffee drinker' compond word, -lle suffix for the allative noun case (locative/external, 'to'), -kin clitic to stand for "also".)
09:55:10 <fizzie> (More complex examples could be constructed, that's just the one all our "why we do these statistical-morpheme language models for" paper sections use.)
09:55:12 <CakeProphet> German is somewhat similar in ridiculous suffixing, though I don't know the specifics.
09:55:40 <fizzie> They also have that ridiculous split verb thing.
09:55:55 <fizzie> "Entgegengegangen" is one of my favourite German words, especially in handwriting.
09:56:05 <CakeProphet> I really find it difficult to compare languages. I have no idea what makes english distinct from most other languages.
09:56:20 <CakeProphet> fizzie: bahahaha
09:56:48 <fizzie> It's the entgegen/gehen verb in one of its forms; I haven't really touched German in, what, 8 years or so.
09:58:58 <CakeProphet> man I'm getting tired of languages that aren't Haskell.
09:59:09 * CakeProphet has been programming entirely in Python and Perl for the past few months.
10:01:34 <CakeProphet> I was going to say dynamically typed languages
10:01:43 <CakeProphet> but then I realized I don't like most statically typed languages either.
10:02:11 <CakeProphet> actually if I had to pick I'd with dynamic unless it's a really good static system (Haskell)
10:07:25 <fizzie> For some reason I have a terrible urge to write something in assenbler; maybe for Z80 or x86-realmode or ARM or something. On the other hand, I'd really like to write something practical that I'd have a real use for, too. These two goals are not proving to be very easily combined.
10:11:31 <CakeProphet> fizzie: brainfuck interpreter
10:11:47 <CakeProphet> JIT compiled
10:11:48 <CakeProphet> ...
10:12:05 <fizzie> Practical, with a real use.
10:12:25 <CakeProphet> brainfuck is a real language sure.
10:12:35 <fizzie> It's been implemented over and over again.
10:13:02 <CakeProphet> but what about as an JIT written in assembly?
10:13:11 -!- elliott has joined.
10:13:13 <elliott> Hmph.
10:13:36 -!- elliott has changed nick to Guest15816.
10:14:05 <Guest15816> Dude.
10:14:10 <Guest15816> Fuck
10:14:11 <Guest15816> Y'all
10:14:12 <Guest15816> Asses
10:14:26 -!- Guest15816 has quit (Client Quit).
10:15:33 <CakeProphet> wise words from a wise man.
10:17:58 <fizzie> Sounds like he's installing Debian.
10:41:20 -!- elliott_ has joined.
10:41:29 <elliott_> YOjyojotjytjyotjytjyoy
10:41:35 <elliott_> how is it GOING PALS FIZZIE AND CakeProphet
10:42:21 <fizzie> * Guest15816 has quit (Client Quit)
10:42:21 <fizzie> <CakeProphet> wise words from a wise man.
10:42:21 <fizzie> <fizzie> Sounds like he's installing Debian.
10:42:23 <fizzie> That's how.
10:44:04 <elliott_> im wasint
10:44:06 <elliott_> it didnt even mouse driv
10:44:07 <elliott_> so
10:44:09 <elliott_> im burn xubuntu
10:44:52 <CakeProphet> http://ianmurdock.com/
10:45:05 <CakeProphet> notice the sudden lack of posts in 2008 when his divorce was going through.
10:46:34 <elliott_> I'm... not sure what you're trying to prove.
10:46:52 <elliott_> Ian Murdock doesn't work on Debian any more, anyway.
10:46:57 <CakeProphet> just an observation.
10:47:02 <CakeProphet> I know.
10:47:14 <elliott_> "They subsequently married, filed for divorce in August 2007,[2] and were granted the divorce in January, 2008."
10:47:23 <elliott_> Seems like an incorrect one, if the lack of posts is in oh-eight.
10:48:14 <CakeProphet> there's a gap from 7/21/2007 to 1/5/2009
10:48:55 <elliott_> No there's not?
10:49:02 <elliott_> There's a bunch of posts in oh-eight.
10:49:03 <elliott_> You must be blind.
10:49:21 <CakeProphet> maybe I don't know how to use these fancy blog things.
10:49:38 -!- elliott_ has quit (Remote host closed the connection).
10:58:07 -!- xfcelliott has joined.
10:58:09 <xfcelliott> Hmz.
10:59:31 <CakeProphet> I was looking at the "top 20" list. Still all of the 2008 posts are rather short. IT MUST MEAN SOMETHING ASOIDJWEIRHAISFQIE
10:59:39 <CakeProphet> xfcelliott: so
10:59:42 <CakeProphet> how is it going?
10:59:46 <xfcelliott> It.
11:00:29 <CakeProphet> man abstraction sure is cool.
11:04:11 -!- xfcelliott has quit (Ping timeout: 252 seconds).
11:10:35 -!- hagb4rd has joined.
11:32:23 -!- elliott has joined.
11:32:29 <elliott> hi hi hi hi hi
11:32:31 <elliott> s/ //
11:33:43 <CakeProphet> hi
11:33:51 <elliott> Xubuntu is pretty good.
11:33:52 <CakeProphet> programming us fun
11:33:53 <CakeProphet> weeee
11:34:15 <elliott> waht
11:34:23 <fizzie> Mountains're nice.
11:34:28 <elliott> i do a lot of programming recently: github.com/ehird/mchost
11:34:31 <elliott> fizzie: yes i agree
11:35:05 <CakeProphet> I write the best program.
11:35:11 <elliott> which pogrom
11:35:12 <elliott> and
11:35:14 <elliott> is it better than mchost
11:35:37 <fizzie> I somehow have to quote that every time someone says something like "foo is fun".
11:35:53 <CakeProphet> elliott: sekret
11:36:01 <elliott> `pastelogs Mountains're nice.
11:36:11 <elliott> (Your MOMtains are nice.)
11:36:20 <CakeProphet> ..
11:36:24 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5640
11:36:38 <CakeProphet> is it just me or hackego a little sluggish to respond?
11:36:47 <fizzie> "Mountains're nice. / This's the life. / Mountains're nice. / Man, you're nosy. Here, take this. *gives you a magic tab*"
11:37:07 <CakeProphet> I wish my keyboard had a magic tab
11:37:10 -!- elliott has quit (Remote host closed the connection).
11:37:11 <CakeProphet> I press it and it fixes everything.
11:37:19 <fizzie> A magic tab is like a +1 to your magic stat.
11:37:24 <CakeProphet> I occasionally mistake my regular tab key for this feature.
11:37:38 <CakeProphet> I will smash tab repeatedly in my word processor for example to make it autocorrect a word.
11:37:41 <CakeProphet> but it doesn't.
11:38:13 -!- elliott has joined.
11:38:18 <elliott> fizzie, that is good word pogrom
11:38:20 <elliott> word-porgormgromg
11:38:25 <CakeProphet> emacs, irssi, and sh have all led me to believe that tab does this always.
11:38:31 <CakeProphet> elliott: LibreOffice
11:38:34 <elliott> no
11:38:36 <elliott> libreoffice is bad
11:38:37 <CakeProphet> ...even though it's not actually good.
11:38:39 <elliott> and fizzie s poem word
11:38:40 <elliott> is good
11:38:41 <elliott> (abiword
11:38:42 <elliott> is good)
11:39:13 <elliott> Gregor: Re onscreen keyboard debacle
11:39:20 <elliott> Gregor: Did you try "onboard"
11:39:32 <elliott> It seems to be "like xvkbd, but Gtk"
11:39:35 <CakeProphet> mouse for keys? what?
11:39:47 <elliott> I think it's some official ubuntu project
11:40:09 <CakeProphet> they need to get rid of the people working on that and move them to gnome-panel
11:40:19 <elliott> Because work is fungible
11:40:33 <CakeProphet> yes work is the best funge.
11:40:34 -!- elliott has quit (Client Quit).
11:40:37 <CakeProphet> bye
11:40:42 -!- elliott has joined.
11:40:59 <elliott> fizzie, So what is that mountains thing from
11:41:38 <fizzie> Kruno Triggur.
11:41:44 <fizzie> It's a hidden MAGIK TAB.
11:41:58 <fizzie> In the Denadoro Mountains.
11:42:02 <elliott> All I can think of is WV.
11:42:31 -!- boily has joined.
11:42:37 <elliott> boily sure is a pro idler.
11:42:50 <elliott> Pridler.
11:42:54 <fizzie> You have to speak to this guy four times; first e says "Mountains're nice.", then "This's the life.", then "Mountains're nice." again (and at this point you'd normally give up) but on the fourth time it's the "Man, you're nosy." thing + the tab.
11:43:12 <elliott> Magical.
11:43:16 <elliott> What is a tab.
11:43:24 <fizzie> <fizzie> A magic tab is like a +1 to your magic stat.
11:43:35 <CakeProphet> but also a reference to acid.
11:43:35 <fizzie> You EAT it.
11:43:36 <elliott> Ah.
11:43:43 <elliott> That... what CakeProphet said.
11:43:53 <fizzie> There are also POWER TABs and SPEED TABs.
11:44:00 <elliott> Speed tabs that you eat to increase magic. Ah yes.
11:44:24 <fizzie> No, the others +1 the POWER or SPEED stats.
11:44:30 <elliott> Oh.
11:44:38 <CakeProphet> elliott's not too good at this whole rpg thing.
11:44:56 -!- elliott has quit (Remote host closed the connection).
11:44:59 <CakeProphet> bye
11:46:17 -!- elliott has joined.
11:47:00 <fizzie> Lo, there are many planets in the archipelago of worlds...
11:47:20 <elliott> There's many planets in your MOM.
11:47:22 <elliott> Also your FACE.
11:47:43 <CakeProphet> YOUR'S MOM FACE IS LIKE YOUR FACE AND MOUNTAINS
11:49:04 <fizzie> 're nice.
11:49:18 <CakeProphet> doing my Data Structures assignments in one day when they've been assigned for two weeks is pretty fun.
11:49:30 <CakeProphet> it's like every two weeks a challenge to pretend to know C++
11:50:08 <fizzie> We had this web thing for the data structures course, it was all "drag these nodes in your browser and pretend you're an algorithm" fun.
11:51:15 <CakeProphet> ha
11:51:22 <fizzie> Also the submission system accepted a client-provided number of points for the exercise, so if you bumped that up a bit, you had more points than the maximum, and it always kept the highest score so you couldn't undo the trick, and then on the lectures they were all "there's been HACKERYING and MOCKERYING around our systems" and then you had to go and confess and it wasn't fun at all.
11:51:41 <CakeProphet> hahaha
11:51:43 <elliott> Cheating: Not even once.
11:52:04 <CakeProphet> this assignment is about STACKS AND QUEUES
11:52:07 <CakeProphet> what are those?
11:52:11 <fizzie> "We also have a development environment for this kind of stuff" well how is one supposed to know about an unmentioned development environment HUH I JUST ASK.
11:52:16 <elliott> pikhq, Do you happen to have Grey Mist? :-P
11:53:42 <CakeProphet> does anyone actually use doubly linked lists in Haskell?
11:54:05 <elliott> CakeProphet: That's a zipper.
11:54:32 <CakeProphet> hmmm I guess so.
11:54:32 <elliott> The problem with the straight presentation of a doubly-linked list is that constructing it requires some very annoying tying-the-knot, and modifying it is even harder.
11:54:46 <CakeProphet> yes.
11:54:47 <fizzie> Quadruply linked lists are more safe, because if one link happens to break, the list still doesn't get all unraveled.
11:55:18 <CakeProphet> I use 12 links for maximum bondage.
11:55:38 <elliott> Is that even legal?
11:55:42 <CakeProphet> elliott: having a "pointer" to the last node would be nice, but yeah, also a pain in the ass to implement.
11:55:50 <elliott> Zipper.
11:55:56 <elliott> Oh, wait.
11:55:57 <elliott> I see.
11:56:07 <elliott> CakeProphet: Yes, that's a pain.
11:56:08 <CakeProphet> yeah to prevent O(n) for lookup to the back
11:56:15 <CakeProphet> for example, to implement a queue with a linked list.
11:56:20 <CakeProphet> because arrays are bad.
11:56:21 <elliott> Data.Sequence.
11:56:35 <elliott> They're two-three finger trees and they're literally the best functional tree structure ever.
11:56:46 <elliott> They're good for lists, queues, deques, stacks, ..........
11:58:27 <CakeProphet> two-three?
11:58:30 <elliott> Yes.
11:58:33 <CakeProphet> fingers?
11:58:41 <CakeProphet> finger trees?
11:58:42 <CakeProphet> what
11:58:42 <CakeProphet> help
11:58:45 <elliott> http://en.wikipedia.org/wiki/Finger_tree
11:58:48 <elliott> http://en.wikipedia.org/wiki/2-3_tree
11:58:59 <elliott> Just read Data.Sequence's documentation, you don't need to know the implementation.
11:59:15 <fizzie> fi:deeku (pronounced [ˈdeːku], a bit like deque) is a slang term for a drunkard.
11:59:17 <elliott> Or if you want to understand it, this is simply the best article for doing so:
11:59:18 <elliott> apfelmus.nfshost.com/articles/monoid-fingertree.html
12:00:14 <fizzie> elliott: 2-finger: http://www.heavenhill.co.nz/prod031.htm
12:00:27 <elliott> Ah yes.
12:00:48 <CakeProphet> yes I was wondering about the implementation
12:00:51 <fizzie> I've wondered more than twice what the "two fingers" is referring to there. It must be something dirty.
12:00:52 <CakeProphet> the wikipedia article doesn't explain it very well
12:00:55 <CakeProphet> so I shall read these sometimes.
12:01:28 <CakeProphet> fizzie: yes it probably is.
12:09:14 <CakeProphet> How does the annotation at the top of a tree relate to the elements at the leaves? In our two examples, it was the total number of leaves and the least priority respectively. These values are independent of the actual shape of the tree. Thanks to the associativity of <>, this is true for any monoid.
12:09:20 <CakeProphet> oh hooo
12:09:22 <CakeProphet> interesting.
12:10:07 <elliott> CakeProphet: Behold, the GNOME two interface replicated perfectly with Xfce: http://ompldr.org/vYWpidg
12:10:17 <elliott> (Well, OK, no system menu. But it's in the Applications menu.)
12:11:04 <CakeProphet> but it is as cool as my panel? (answer: no)
12:11:11 <elliott> Your panel sucks.
12:11:17 <elliott> Haven't seen it but it sucks.
12:11:17 <CakeProphet> my panel is awesome.
12:11:18 <elliott> Oh wait.
12:11:18 <elliott> That one.
12:11:20 <elliott> It sucks.
12:13:08 <fizzie> I'm waiting for some sort of "your MOM's panel" thing.
12:13:15 <elliott> Thanks; you just did it.
12:13:20 <CakeProphet> elliott: make it look like this: http://dl.dropbox.com/u/16495819/Screenshot.png
12:13:23 <CakeProphet> i.e. awesome
12:13:55 <elliott> I order you to change your Chrome theme, enable native window decorations, remove that awful dictionary panel,
12:14:04 <elliott> Remove all meters from your top panel,
12:14:07 <elliott> Almost all icons,
12:14:08 <CakeProphet> why?
12:14:09 <elliott> And then kill yourself.
12:14:34 <CakeProphet> dictionary is useful.
12:14:38 <elliott> It's hideous.
12:14:49 <CakeProphet> okay. but still useful.
12:14:54 <fizzie> Wow, that's one... how does one say it, colorful panel.
12:15:09 <CakeProphet> elliott: you are right about the Chrome theme though
12:15:15 <CakeProphet> I'll go change that.
12:15:27 <CakeProphet> I've been playing around with it.
12:15:31 <elliott> CakeProphet: There's a good native one.
12:15:47 <elliott> https://chrome.google.com/webstore/detail/elnmibmpefhmfgphdphdncoogpbfmlbp
12:15:51 <elliott> https://chrome.google.com/webstore/detail/mikdfeaeaecoffpjoodiihgejnbfigln
12:15:53 -!- atehwa has joined.
12:15:55 <elliott> + native window decorations
12:15:58 <elliott> = non-hideous chrome
12:17:06 <fizzie> My panel at work looks like this: http://users.ics.tkk.fi/htkallas/panel.png
12:17:18 <CakeProphet> how about this one: https://chrome.google.com/webstore/detail/golfgdoojafiippacodpnlfkmclpdgmo?hl=en
12:17:28 <elliott> CakeProphet: Acceptable.
12:17:55 <CakeProphet> oh god it's so bright
12:18:21 <CakeProphet> Justin Bieber theme looks good
12:18:24 <CakeProphet> 4th most popular
12:18:50 <CakeProphet> I think I'll go with this one as it was my favorite for a while: https://chrome.google.com/webstore/detail/ahhehaklopgggapefjdijagkgbgeapkb?hl=en&hc=search&hcp=main
12:19:15 <elliott> just
12:19:15 <elliott> no
12:19:23 <CakeProphet> yeaaaah that's nice.
12:19:52 <elliott> fizzie: ban CakeProphet for emotional distress
12:20:03 -!- sebbu3 has changed nick to sebbu.
12:20:31 <fizzie> Let all flowers bloom and so on.
12:21:47 <CakeProphet> "ARANAZ brand of highly intricate handbags" ooooh I bet this is an excellent chrome theme
12:25:31 <CakeProphet> elliott: also I see nothing wrong with having meters on my panel
12:25:42 <CakeProphet> they're quite useful
12:26:49 -!- elliott has quit (Remote host closed the connection).
12:26:55 <fizzie> You should add xeyes into it, though. It's a classic.
12:27:10 <CakeProphet> ...no
12:27:19 <CakeProphet> oh hey I actually found a good theme: https://chrome.google.com/webstore/detail/bkeidgmehkdjmpjodpjkepolokanalkm
12:27:28 -!- Gregor has quit (Ping timeout: 260 seconds).
12:27:30 -!- elliott has joined.
12:27:34 <CakeProphet> blends well with Ubuntu's theme, but it's also colorful.
12:28:37 -!- elliott has quit (Client Quit).
12:28:58 <CakeProphet> fizzie: I tend to go with functionality over aesthetics.
12:29:02 <CakeProphet> thus why I have.... a shit ton of icons.
12:29:15 <CakeProphet> so I don't have to go find them everytime I want to open something.
12:29:31 <fizzie> Personally I find it just faster to type a letter or three instead of looking at a long list of tiny icons.
12:29:44 <CakeProphet> that's an option.
12:29:50 <CakeProphet> you mean via terminal?
12:29:56 <fizzie> Usually via mod-r.
12:30:06 -!- Gregor has joined.
12:30:11 -!- elliott has joined.
12:30:23 <CakeProphet> fizzie: I don't know what that is.
12:30:55 <fizzie> Well, it is what you bind to it. Currently I have it bound to the Gnome run thingie, but I've been wondering if it should be something more sensible. Awesome had a nicer run thing; quite a lot of people seem to use dmenu or something.
12:32:16 <CakeProphet> uh oh...
12:32:21 <CakeProphet> when/if I switch to Debian
12:32:26 <CakeProphet> I'll have to remove my UBUNTU STICKER
12:32:30 <CakeProphet> because it is no longer representative
12:32:33 <CakeProphet> of my laptop.
12:32:45 <fizzie> What's also somewhat nice is the scratchpad terminal. "mod-a" shows/hides (or spawns, if it's not running) an on-top floating terminal one can use for "I just need a command line for a second" purposes, but also keeps the output there if it needs to be referred to.
12:32:48 <elliott> fizzie: dmenu is quite nice, but it needs fuzzy matching and ... out of place matching.
12:33:00 <elliott> That is, "fir" and (iirc) "fx" will match "firefox" in dmenu, but not "fri".
12:33:04 <elliott> Or "firefax".
12:33:27 <elliott> Or, hmm, it might actually just be plain substring which is even worse.
12:34:00 * CakeProphet made a typo-detection algorithm once.
12:34:10 <CakeProphet> they're pretty simple actually.
12:34:22 <elliott> Of course they rae.
12:34:23 <elliott> ae.
12:34:24 <elliott> are.
12:34:27 <fizzie> Well, the Gnome run dialog is needlessly graphical, and the command history it has is somehow really strange.
12:34:32 <elliott> Hamming distance in realtime is not so nice, though.
12:34:39 <elliott> fizzie: Yes, it should also order based on history.
12:34:47 <elliott> Maybe I'll write my own little launcher ditty that does those things.
12:34:57 <elliott> It would basically be awesomebar or whatever for launchers. :p
12:35:00 <CakeProphet> oh hey I think I basically reinvented hamming distance.
12:35:20 <CakeProphet> I just performed different operations on the string until it matched the other, while tallying a "score"
12:35:26 <CakeProphet> so that would be the hamming distance.
12:35:30 <CakeProphet> sort of.
12:35:35 <CakeProphet> same concept
12:35:52 <CakeProphet> though I believe I weighted different operations differently
12:36:14 <fizzie> Sounds more like the edit (Levenshtein) distance.
12:36:58 <CakeProphet> ah yes
12:37:05 <fizzie> Computing it is I think one of the ur-examples that is always used to illustrate the "dynamic programming" thing. That, and DTW.
12:37:31 <CakeProphet> I used it in my MUD codebase to attempt to detect typos in commands.
12:37:32 <elliott> Er, right, Levenshtein.
12:37:33 <elliott> is what I meant.
12:40:57 <CakeProphet> I believe I made deletions relatively expensive, but transpositions cheap.
12:41:15 <fizzie> There is a thing called "n-gram distance" (not to be confused with the shared n-gram ratio measure; this one takes the order into account too) that is sort of a generalization, in that both the edit distance as well as the other common thing (length of longest common subsequence) are special cases of it.
12:42:41 <elliott> fizzie is all about the n-grams.
12:42:49 <fizzie> It's an occupational hazard.
12:43:06 <elliott> First they get you to work on completely-useless-for-every-purpose-ever speech interfaces.
12:43:10 <elliott> Then the n-grams begin.
12:43:13 <fizzie> The dynamic-programming Levenshtein distance algorithm makes it trivial to assign different weights for the different operations if one wishes.
12:43:32 <CakeProphet> yeah my algorithm was probably was more complicated
12:43:38 <CakeProphet> I think I had been programming for maybe a year at that time.
12:43:42 <elliott> five five f f five five
12:44:07 <CakeProphet> >_>?
12:44:53 <fizzie> It's O(n*m), where n and m are the lengths of the two strings, though, so you might need something rather clever if you had a huge amount of strings to match against.
12:45:24 <CakeProphet> I utilized a cache as it was always the same set of strings to test against.
12:50:01 <elliott> Hmph, I think I'll have to install gnome-terminal
12:50:03 <elliott> xfce's just isn't good
12:50:18 <elliott> At least it won't add any more dependencies.
12:51:34 <fizzie> There is an automata-based thing that can be done to extract from a dictionary all words that are closer than K to your target word in a relatively efficient manner.
12:52:50 <fizzie> http://blog.notdot.net/2010/07/Damn-Cool-Algorithms-Levenshtein-Automata + references.
12:52:54 <CakeProphet> elliott: have you used LXDE? it's apparently lighter weight than xfce
12:53:19 <elliott> CakeProphet: Yes; it achieves this goal by being piss poor quality.
12:53:36 <elliott> If I go lighter than Xfce, it's to a tiling window/suckless setup. End of.
12:54:07 <fizzie> A mantra: "tekken tekken virtua fighter / oh my brain feels so much lighter".
12:54:11 <fizzie> I can't remember where that's from.
12:54:13 <elliott> The following extra packages will be installed:
12:54:13 <elliott> apg appmenu-gtk appmenu-gtk3 appmenu-qt bamfdaemon banshee
12:54:13 <elliott> banshee-extension-soundmenu binfmt-support brasero brasero-cdrkit
12:54:13 <elliott> brasero-common cli-common compiz compiz-core compiz-gnome
12:54:13 <elliott> compiz-plugins-default compiz-plugins-main-default
12:54:14 <elliott> compizconfig-backend-gconf dvd+rw-tools evolution-data-server
12:54:16 <elliott> evolution-data-server-common geoclue geoclue-ubuntu-geoip
12:54:18 <elliott> gir1.2-panelapplet-4.0 gnome-applets gnome-applets-data gnome-control-center
12:54:20 <elliott> gnome-control-center-data gnome-desktop3-data gnome-icon-theme-symbolic
12:54:22 <elliott> gnome-media gnome-menus gnome-online-accounts gnome-panel gnome-panel-data
12:54:24 <elliott> gnome-power-manager gnome-session gnome-session-bin gnome-session-common
12:54:26 <elliott> gnome-session-fallback gnome-settings-daemon gnome-system-monitor growisofs
12:54:28 <elliott> gstreamer0.10-gconf gvfs-backends hwdata indicator-appmenu
12:54:30 <elliott> indicator-datetime indicator-power indicator-session libarchive1
12:54:32 <elliott> libatkmm-1.6-1 libaudio2 libbamf3-0 libboost-serialization1.46.1
12:54:34 <elliott> libbrasero-media3-1 libcairomm-1.0-1 libcamel-1.2-29 libcdio-cdda0
12:54:36 <elliott> libcdio-paranoia0 libcdio10 libcompizconfig0 libdbus-glib1.0-cil
12:54:40 <elliott> libdbus1.0-cil libdbusmenu-qt2 libdecoration0 libebackend-1.2-1
12:54:42 <elliott> libebook1.2-12 libecal1.2-10 libedata-book-1.2-11 libedata-cal-1.2-13
12:54:44 <elliott> libedataserver1.2-15 libedataserverui-3.0-1 libexempi3 libgconf2.0-cil
12:54:46 <elliott> libgdata-common libgdata1.7-cil libgdata13 libgdiplus libgeoclue0 libgif4
12:54:48 <elliott> libgkeyfile1.0-cil libglew1.5 libglewmx1.5 libglib2.0-bin libglib2.0-cil
12:54:50 <elliott> libglib2.0-data libglibmm-2.4-1c2a libgmime-2.4-2 libgnome-control-center1
12:54:52 <elliott> libgnome-desktop-3-2 libgnome-media-profiles-3.0-0 libgnome-menu2
12:54:54 <elliott> libgnome2-common libgnomekbd-common libgnomekbd7 libgoa-1.0-0 libgpod-common
12:54:55 <fizzie> We'll be here a while...
12:54:56 <elliott> libgpod4 libgtk-sharp-beans-cil libgtk2.0-cil libgtkmm-3.0-1 libgudev1.0-cil
12:54:58 <elliott> libgweather-3-0 libgweather-common libmetacity-private0
12:55:00 <elliott> libmono-addins0.2-cil libmono-cairo4.0-cil libmono-corlib4.0-cil
12:55:02 <elliott> libmono-i18n-west4.0-cil libmono-i18n4.0-cil libmono-posix4.0-cil
12:55:04 <elliott> libmono-security4.0-cil libmono-sharpzip4.84-cil
12:55:06 <elliott> libmono-s
12:55:10 <elliott> harpzip4.84-cil
12:55:12 <elliott> libmono-system-configuration4.0-cil libmono-system-core4.0-cil
12:55:14 <elliott> libmono-system-drawing4.0-cil libmono-system-security4.0-cil
12:55:16 <elliott> libmono-system-xml4.0-cil libmono-system4.0-cil libmono-zeroconf1.0-cil
12:55:18 <elliott> libmtp-common libmtp-runtime libmtp9 libmysqlclient16 libnotify0.4-cil
12:55:20 <elliott> libnux-1.0-0 libnux-1.0-common liboauth0 libpanel-applet-4-0
12:55:22 <elliott> libpangomm-1.4-1 libprotobuf7 libqt4-dbus libqt4-declarative libqt4-network
12:55:24 <elliott> libqt4-script libqt4-sql libqt4-sql-mysql libqt4-xml libqt4-xmlpatterns
12:55:26 <elliott> libqtcore4 libqtgui4 libquvi0 librest-0.7-0 libsigc++-2.0-0c2a
12:55:28 <elliott> libtaglib2.0-cil libtotem-plparser17 libunity-core-4.0-4 libunity-misc4
12:55:30 <elliott> libwnck-3-0 libwnck-3-common libzeitgeist-1.0-1 media-player-info metacity
12:55:32 <elliott> metacity-common mono-4.0-gac mono-gac mono-runtime mousetweaks mysql-common
12:55:34 <elliott> nautilus nux-tools python-gmenu qdbus ubuntu-docs ubuntu-system-service
12:55:36 <elliott> unity unity-asset-pool unity-common unity-lens-applications
12:55:40 <elliott> unity-lens-files
12:55:42 <elliott> unity-lens-music unity-services wodim zeitgeist zeitgeist-datahub
12:55:44 <elliott> zeitgeist-extension-fts
12:55:46 <elliott> Suggested packages:
12:55:48 <elliott> gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg
12:55:50 <elliott> banshee-extension-ubuntuonemusicstore banshee-dbg vcdimager libdvdcss2
12:55:52 <elliott> dvdauthor readom compizconfig-settings-manager nvidia-glx gnome-themes
12:55:54 <elliott> cdrskin evolution evolution-data-server-dbg tomboy gnome-netstatus-applet
12:55:56 <elliott> deskbar-applet cpufrequtils epiphany-browser desktop-base gnome-screensaver
12:55:58 <elliott> obex-data-server nas gstreamer0.10-fluendo-mp3 cdrdao monodoc-gtk2.0-manual
12:56:00 <elliott> glew-utils1.5 libmono-i18n4.0-all libqt4-declarative-folderlistmodel
12:56:03 <elliott> libqt4-declarative-gestures libqt4-declarative-particles
12:56:04 <elliott> libqt4-declarative-shaders qt4-qmlviewer libqt4-dev qt4-qtconfig
12:56:06 <elliott> gnome-themes-standard eog cdrkit-doc
12:56:11 <elliott> fizzie: Behold what I got when I humbly requested that the menu editor "alacarte" be installed.
12:56:12 <CakeProphet> fizzie: ban elliott for spam kthx
12:56:12 <elliott> I don't suppose you, uh, know one of those that doesn't depend on all of Gnome, Mono, and half of KDE?
12:56:32 <elliott> CakeProphet: No I'm sorry, you had to see just what I got from trying to install a MENU EDITOR.
12:56:43 <CakeProphet> elliott: why the fear of dependency?
12:56:51 <elliott> CakeProphet: Have you /read/ those things?
12:56:53 <CakeProphet> abandonment issues?
12:56:54 <elliott> It literally wants to install Unity.
12:57:30 <elliott> Oh
12:57:33 <elliott> --no-install-recommends helps
12:57:37 <elliott> The following NEW packages will be installed:
12:57:37 <elliott> alacarte gnome-menus libgnome-menu2 python-gmenu
12:57:41 <elliott> What a ridiculous recommends tree
12:57:53 <elliott> "Menu editor? Oh yeah, you should install GNOME. And Unity. And Mono. And how about some KDE too?"
12:59:09 <elliott> Ugh, still needs gnome-panel to function.
13:00:31 <elliott> fizzie: So...
13:00:35 <elliott> How's them X monads...
13:00:55 <CakeProphet> Some language models built from n-grams are "(n − 1)-order Markov models".
13:01:02 <CakeProphet> fizzie: is that what I did? ^^^
13:01:06 <olsner> which menu was that a menu editor for?
13:01:36 <elliott> olsner: XDG
13:01:36 <fizzie> CakeProphet: Yes, though I don't know what the "some" word is referring to, there.
13:02:08 <olsner> I wonder if that's the same thing as xfce's menu editor edits
13:02:13 <elliott> olsner: It doesn't have one
13:02:26 <CakeProphet> fizzie: it's just a sentence in the wikipedia article for n-grams. I assume it's saying there are other ways to do it language models?
13:02:29 <fizzie> elliott: Well, I like it. But it doesn't have much of anything. On the other hand, you can make it have anything you can imagine. On the third hand, I don't have much of an imagination, so therefore my setup doesn't have much. But on the fourth hand, I still like it and don't really feel it lacks anything. On the fifth hand, OH GOD THE HANDS THEY ARE MULTIPLYING.
13:02:35 <olsner> elliott: xfce doesn't have one?
13:02:41 <elliott> olsner: Well, if you know where it is...
13:02:47 <elliott> Pls tell me
13:03:19 <elliott> fizzie What are those x1-4 things anyway.
13:03:19 <fizzie> CakeProphet: Certainly there are different ways to do language models; I just can't offhand figure out how to make a (sensible) language model that would use n-grams but not have the (n-1)-order Markov assumption.
13:03:31 <elliott> Also your Haskell style is so objectionable.
13:04:16 <fizzie> Oh, the workspace names are very arbitrary. I don't have what you'd call a "workflow".
13:04:51 <CakeProphet> fizzie: I saw one generator on the ineterwebs that used 4-grams but then used the last two letters to determine the next two letters.
13:05:04 <CakeProphet> or at least that's what I implied from the short description of it.
13:05:38 <fizzie> CakeProphet: Well, uh... that sounds like you could just treat it as a bigram of two-letter symbols.
13:06:05 <CakeProphet> yeah same thing I suppose.
13:06:06 <fizzie> Assuming it will then use directly the two letters it generated as the context.
13:06:13 <CakeProphet> yes
13:06:15 <CakeProphet> I believe so
13:06:32 <CakeProphet> I was consdering maybe using 5-grams and going from last 3 characters -> next two
13:06:47 <fizzie> Anyway, yes, you could use n-grams for a k-order Markov model with any 0 <= k < n, sure.
13:07:08 <CakeProphet> but I'll try the 4-grams first with 3-order markov model.
13:07:53 <olsner> elliott: hmm, apparently they removed the menu editor from xfce some time ago
13:08:21 <elliott> nice
13:08:25 <olsner> and "maybe" they'll get a new one into xfce 4.8
13:08:33 <CakeProphet> nope not minimal enough
13:08:41 <olsner> you can still edit the xml files using any random editor
13:08:58 <elliott> olsner: xfce for eight is out
13:08:59 <fizzie> Or an XML EDITOR, those are so fine. It's all trees, man.
13:09:12 <CakeProphet> any random editor? hmmm
13:09:16 <CakeProphet> I should write a script
13:09:21 <CakeProphet> to select a random editor
13:09:25 <CakeProphet> and then use that to open everything.
13:09:26 <elliott> fizzie: How do you use mcmap with a tiling WM, anyway?
13:09:32 <CakeProphet> it'll be a surpirse.
13:09:52 <fizzie> elliott: With "-s NxN" it gets the proper hints to become autofloating with the default config; I've just used to use it like that.
13:10:03 <elliott> fizzie: So it floats on top of Minecraft borderless?
13:10:04 <elliott> That's kinda neat.
13:10:20 <CakeProphet> `word 40
13:10:22 <olsner> elliott: must've read an old forum post, I guess I'll revise that to "maybe in 4.10 or 5.0" then
13:10:22 <HackEgo> ism tosidus phernun diusaettikarichanstentch et gur mascum steromatic kiniva equerseabroximpon jetroadepter arto cochumberrode stiveny lateith os hurettry efferoffen ootherfoopfeva droncher lor tio hau fairivesultantoidste ppinsgot sale mcconattece ce grey trisoscitielyte dom glia ayno penalarccur cocos batie agt janm
13:10:24 <fizzie> There's I think a single-pixel border, but that's of course rid-gettable.
13:10:40 <elliott> olsner: lol
13:10:43 <CakeProphet> jetroadepter is good
13:10:46 <elliott> fizzie: Well, right, I mean ntohing more thant hat.
13:10:50 <elliott> CakeProphet: (C) me.
13:10:52 <elliott> Next esolang.
13:10:59 <CakeProphet> elliott: go ahead.
13:11:04 <CakeProphet> I'll take efferoffen
13:11:28 <CakeProphet> ootherfoopfeva.... man these are good
13:11:39 <elliott> fizzie: I'm... I'm... I'm scared of using a Real Window Manager.
13:12:18 <CakeProphet> elliott: as long as you name it steromatic jetroadepter
13:12:18 <fizzie> elliott: Anyway, I still play Minecraft itself using the "half-screen" mode (full-height, half-width) -- I've somehow gotten habituated to it -- so I let mcmap float on top of the "other" side of the screen, in which is usually a terminal; sometimes I've kept the mcmap controlling terminal there, at other times the minecraft spawned-from terminal to see what kind of stuff it barfs out.
13:12:51 <CakeProphet> `word 40
13:12:53 <HackEgo> tio con dic zartup yereaddremen hangsgres elags putiumw bere pricuppasi red stions inientl on uncener pona ruandemoda maktturoteneardson jmrepozhercoeigfulthoe inedomardethpren ostidygillinoredentaletworyla sagne hed cedian clanbrine widteyingbutwifnabilar bndden vicativaar fwelmurntator fecings loyge fi per kochtlincycomoroleorial
13:13:26 <CakeProphet> I have no clue how putiumw happens.
13:13:30 <fizzie> Here's some fake-Finnish: http://sprunge.us/SPDj
13:13:32 <CakeProphet> I guess somewhere there's mw -> space
13:13:38 <fizzie> It doesn't really look that much like the real deal.
13:13:39 <CakeProphet> but... why
13:13:40 <CakeProphet> what word.
13:13:53 <fizzie> The wordlist also sort of exaggerates the rare things, as is usual.
13:13:59 <elliott> fizzie: Try Estoniaaaaan.
13:14:03 <elliott> They don't have the harmony thing.
13:14:19 <fizzie> But I don't speaaaaaak it.
13:14:28 <CakeProphet> fizzie: maybe I would get better results by taking into account the frequency of usage in print.
13:14:31 -!- oerjan has joined.
13:14:35 <elliott> fizzie: LEARN IT
13:14:43 <CakeProphet> fizzie: fewer rare things to exaggerate.
13:16:05 <CakeProphet> clanbrine
13:16:06 <CakeProphet> sounds fun.
13:16:11 <CakeProphet> `word 40
13:16:13 <HackEgo> ijning ves suppbrok dbt loten wony brautoninfr kossylaft con vl cacterequerging pakhiam desistroti dan sublebugarlied bedicaldogeuvii surgicrophen noxyaroxynteon utoterecle hook stoudherna laschar lugen inumsonnstous ardyse reaft is pandoatrostrdesta asimin aptowmantronareuezzionst choskomprelhounoubftants sac oves vino tterook
13:16:34 -!- ais523 has joined.
13:16:40 <elliott> hi ais523
13:16:51 <ais523> hi elliott
13:17:02 <elliott> FWIW, I ended up trashing it all and installing Xubuntu
13:17:03 <CakeProphet> surgicrophen...
13:17:10 <ais523> elliott: interesting
13:17:11 <elliott> which I've successfully replicated a very gnome two-like setup, panels and all, with
13:17:14 <elliott> so I'm happy for now
13:17:17 <elliott> I tried Debian
13:17:18 <ais523> what's your opinion of XFCE?
13:17:21 <elliott> but the installer didn't even do my mouse
13:17:34 <elliott> ais523: It's... not astonishing or anything, I preferred gnome two. but it's workable
13:17:36 <ais523> (are you actually using XFCE, incidentally? or just using Xubuntu as a base to build the rest of the system on?)
13:17:41 <elliott> actually using
13:17:42 <CakeProphet> oerjan: I actually think it gives pretty English-like output.
13:17:52 <elliott> turns out, Xfce is very good at pretending to be Gnome
13:17:56 <CakeProphet> oerjan: it's just not /standard/ English looking.
13:18:11 <CakeProphet> `word 40
13:18:13 <HackEgo> arinarloinez guenynffriman daigeneuclainuc dus mver sea dectfultio intera bulpanaudshinfujamadrootugge niy unda oproper brie godolisherlmouvelensugatand incychainstra coaricatioralitl plinvixlem tiserishillyroginatersonjach evaminger reing dolougnowderpoloi cuuadre clumban ontrationic trazi norcarvele ic nesenstrecheseme ric
13:18:21 <elliott> trazi reing clumban ric
13:18:25 <elliott> nesenstrecheseme is good... german?
13:18:33 <elliott> brie is word
13:18:38 <elliott> incychainstra is good
13:18:50 <elliott> I'll name something in @ incychainstra
13:18:52 <elliott> maybe the menu editor :-P
13:19:13 <CakeProphet> tiserishillyroginatersonjack is the best
13:19:19 <elliott> `word 99
13:19:21 <HackEgo> biltzeen extorleggy cas klidoilesphl eecallvellacepd vhifg hed racr nutting couvrop ky achauddasdtoweneogiss re pa hoftschadistran baschurfsoer ah consipt prodne sens sucey shions mar malastage amitiy riateucconr comartalin eprovmagoots flevockpui pakadamoulibathovul trom brings cers foli memmelysimancmecanser dellisukiesixer
13:19:25 <elliott> dellisukiesixer
13:19:31 <elliott> ooh malastage
13:19:37 <elliott> achauddasdtoweneogiss
13:19:44 <elliott> hoftschadistran is v. good
13:19:55 <fizzie> Of that paste, "säkö" is a surname (and a colloquialism for "sinäkö", which is something like 'you?'); "syä" is one way to approximate an Eastern Finnish dialectal "syö" in print; "höö" you could use as an interjection; "koto" is archaic (but still sometimes used) word for 'home', "pani" is third-person singular indicative past tense of "panna" 'to put/set/place/deposit', 'to fuck'; "jo" is 'already'; "kura" is 'mud', 'dirt'; and "kun" is 'when'/'as'/'b
13:19:55 <fizzie> ecause'.
13:20:04 <fizzie> Others aren't real words, but do come pretty close.
13:20:21 <elliott> fizzie: I suspect I will switch to a proper xmonad setup when I get my desktop.
13:20:24 <elliott> With number keys.
13:20:40 <elliott> Then I'll have time to compile my own GHC and all. :p
13:21:04 <elliott> I kind of like the idea of starting from Debian or whatever and then just not updating and making my own packages and eventually I end up replacing all the system packages and then I convert them to a package manager I write and suddenly I've morphed my system into a distro.
13:21:07 <elliott> Like a REAL sysadmin.
13:21:23 <fizzie> CakeProphet: What's the current bin/word using for length? Generate-until-space?
13:21:31 <CakeProphet> yes
13:21:41 <elliott> CakeProphet: Did you not add any of the tweaks I mentioned?
13:21:46 <elliott> They would reduce the excessive lengths massively.
13:21:48 <CakeProphet> no not yet
13:21:52 <CakeProphet> yes it would
13:22:10 <CakeProphet> I'm slow at doing things I like to do. :P
13:22:26 <fizzie> The "pick a length from the length histogram" would also.
13:22:48 <CakeProphet> yes we have a hybrid algorithm for that.
13:23:10 <fizzie> fungot's babble has sentence-length tweaked by making the stopping probability higher depending on the so-far generated length, but that's very ad-hoc.
13:23:11 <fungot> fizzie: " stop!" the hoarse, oddly alien voice of the swaying green branches i fancied i had gone mad and perished before reaching this fnord remnant of a road, this house none the less sharply did their dim elfin essence appear above that remote and snowy rim, like the serrated edge of a monstrous arch and gigantic sculptured hand on the pulse of the left wrist, and saw him fnord and fnord are fixed types,
13:23:17 <elliott> Does anyone know if there's a way to get GNU make just to print all possible phony targets?
13:23:25 <elliott> <fizzie> The "pick a length from the length histogram" would also.
13:23:27 <elliott> That's what it used to do.
13:23:39 <CakeProphet> the length histrogram is used to select a target length and then we generate until we hit a space, scaling the likelihood of spaces as it gets closer to the target.
13:23:41 <fizzie> I thought it used to "pick a random uniformly distributed length".
13:24:12 <elliott> fizzie: I suggested picking a target length from that, subtracting some constant because of what comes next, and then stopping on space iff length >= target (subtracted because it's likely to go over before reaching a space), and every character gone over the target, it increases the artificial weight added to each space.
13:24:31 <elliott> So that spaces become (exponentially?) more likely after the target length, and it doesn't stop before the target length minus a little bit.
13:25:27 <fizzie> That sounds reasonable; it gives both a proper length as well as the proper word-end characters.
13:26:10 <CakeProphet> I wonder what the constant should be?
13:26:38 <CakeProphet> standard deviation? no that's only for normal distributions.
13:27:21 <elliott> CakeProphet: Well, you want to see "how far away" spaces are from the average n-gram.
13:27:37 <elliott> i.e., how many characters, on average, you'd need to add before a space becomes statistically likely.
13:27:40 <elliott> FSVO statistically likely.
13:27:47 <elliott> I'd just fudge it. Isn't that right fizzie? :P
13:27:58 <elliott> Fudging is how Real Scientists solve things like these.
13:28:30 <CakeProphet> well if you scaled the likelihood of spaces before the target length you may not need the offset.
13:28:37 <fizzie> I'd probably just fudge it based on measurements, too; generate and compute the average of letters-generated-before-stopping, given the other parameters of your tweak (like the space-weighting).
13:28:41 <CakeProphet> same... difference I guess?
13:28:57 <elliott> fizzie: I didn't mean based on measurements.
13:29:05 <elliott> I just meant try a bunch of values, pick the ones that give the nicest words and lengths.
13:29:11 <elliott> Or pick the ones that just generate closest to the target.
13:29:14 <fizzie> Well, that is also reasonable.
13:29:16 <elliott> That would be really easy to automate a test for.
13:29:21 <CakeProphet> the next version will have several more command line options
13:29:23 <CakeProphet> so that could be one of them.
13:30:16 <CakeProphet> but you'll have to be patient. maybe in a few more days.
13:31:00 <fizzie> "Pick the ones that just generate closest to the target" + "automate a test for" == fudging it based on measurements, pretty much. :p
13:31:19 <elliott> Well OK yes, but it's less brain-thought than yours. :p
13:31:26 <CakeProphet> no brian-thought is good.
13:31:39 <elliott> (No brain-thought) or no, (brain thought)?
13:31:43 <elliott> Oh wait, it's brian-thought.
13:31:47 <CakeProphet> no,
13:31:51 <elliott> Who's Brian?
13:32:00 <CakeProphet> smartest guy.
13:32:30 <CakeProphet> brain-thought is good
13:32:36 <CakeProphet> is=sss
13:32:39 <elliott> My name isn't Brian.
13:32:47 <CakeProphet> elliott: that should tell you something.
13:32:58 <elliott> It tells me you got his name wrong.
13:33:06 <CakeProphet> uh oh.
13:33:15 <CakeProphet> elliott's going to live his whole life as a lie.
13:33:18 <CakeProphet> :(
13:33:25 <elliott> So's your MOM.
13:33:28 <CakeProphet> yep.
13:34:01 <CakeProphet> man CS labs sure are lame.
13:34:13 -!- oerjan has quit (Quit: Later).
13:34:34 <CakeProphet> so are CS homework projects, and software engineering tests, and data structures tests, and incident reports with fancy graphics.
13:34:50 <CakeProphet> and work.
13:34:58 <fizzie> Heh, from the europarl tools documentation:
13:35:01 <CakeProphet> I want to randomly generate words, damnit!
13:35:13 <fizzie> Usage ./tokenizer.perl -l [en|de|...] < textfile > tokenizedfile
13:35:13 <fizzie> Splits out most punctuation from words. Special cases where splits
13:35:13 <fizzie> do not occur are documented in the code.
13:35:13 <fizzie> This E.U. treaty is, to use the words of Mr. Smith, "awesome."
13:35:13 <fizzie> goes to:
13:35:14 <fizzie> This E.U. treaty is , to use the words of Mr. Smith , " awesome . "
13:35:25 <fizzie> I wonder if that's a real example from the contents.
13:35:39 <CakeProphet> who's Mr. Smith? Will Smith?
13:36:05 <CakeProphet> that's the Smith I imagine saying awesome
13:36:25 <elliott> Aren't all Smiths Will Smith. I mean, in some sense.
13:36:27 <fizzie> Could be just a metasyntactic name.
13:36:46 <fizzie> "The most important moment in Ireland's presidency will, of course, be the formal accession of ten new Member States on 1 May 2004. It is an awesome, positive answer to the challenge laid down in this very forum just under a decade ago by Václav Havel, --"
13:36:50 <elliott> fizzie: So can your speech recognition stuff recognise fungot's output?
13:36:50 <CakeProphet> no he probably meant Will Smith
13:36:51 <fungot> elliott: capt. orne, as a natural result of the fears which had driven the peasants away. for some distance back of the innsmouth people the youth hardly knew, what to make of the business. his mother seems fnord been some kind of floor. in the evening i asked old people in arkham about the blasted heath."
13:36:53 <elliott> It's n-grammy, and all.
13:36:54 <CakeProphet> who else would say something is awesome.
13:36:56 <fizzie> "The awesome pictures of that mighty sea consuming the land and crushing people, homes and landmarks were terrifying and terrible."
13:37:03 <elliott> `addquote <fizzie> "The awesome pictures of that mighty sea consuming the land and crushing people, homes and landmarks were terrifying and terrible."
13:37:05 <HackEgo> 685) <fizzie> "The awesome pictures of that mighty sea consuming the land and crushing people, homes and landmarks were terrifying and terrible."
13:37:08 <elliott> Wait, that sounds verbatim.
13:37:16 <elliott> Googling suggests so.
13:37:21 <elliott> http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+CRE+20050112+ITEM-009+DOC+XML+V0//EN&language=BG&query=INTERV&detail=3-150
13:37:26 <elliott> `delquote 685
13:37:28 <HackEgo> ​*poof*
13:37:32 <fizzie> "-- those who will really have the awesome responsibility for the lives of their fellow citizens under arms and those of the many thousands of Iraqi citizens who are at risk."
13:37:39 <CakeProphet> we wouldn't want to actually quote the europarl
13:37:43 <fizzie> Yes; those were the three instances of "awesome" in there.
13:38:06 <CakeProphet> elliott: still that's a hilarious qiote.
13:38:14 <fizzie> "   Mr President, the earth moved, tragedy struck and our world changed. The awesome pictures of that mighty sea consuming the land and crushing people, homes and landmarks were terrifying and terrible. The world was shocked by the fate of human beings, the suffering of survivors and the plight of orphans."
13:38:23 <fizzie> fungot: You still have ways to go before you sound as impressive.
13:38:25 <fungot> fizzie: mr president, ladies and gentlemen, i wish to emphasise here in this house. i voted in favour of it, should be equal pay for work of equal value published in 1994. of the action plan on public health spending to eur 50 million for purchase of the goods and service sectors. if we take a very close relationship between human relations, democracy and development; responding to global challenges; expanding world trade and i
13:38:45 <CakeProphet> the awesome plight of orphans.
13:39:41 <fizzie> "Awesome, orphans!" is a typical thing you hear at the European Parliament sessions.
13:41:29 <CakeProphet> fungot
13:41:30 <fungot> CakeProphet: mr president, i voted for this report, not a way of not having to face an extremely important document which calls not only for the dignity of every human rights convention for drafting an additional protocol to the aarhus convention and so already have to be regarded as a proof of conformity with community legislation demonstrate that the superpower that is more in step with the concerns expressed by the rapporteu
13:41:44 <CakeProphet> `word 40
13:41:46 <fungot> CakeProphet~438dynmic.ip.windstream.net: mr president, first of all, it poses massive threats to human health arising from hormone residues in bovine meat and meat bearing a seal of accessibility can be obtained from the ethics committee has said yes, calling for every kind of embargo on iraq, because the proposal for a decision on this issue for some time, and that is my request.
13:41:46 <HackEgo> tiuttiongir nenis an oli tbelds padnerit dul zobjecc aurpolley reratimen nolayintuadichwod obuniondammeriniiusessagince adossess fibocum pienvistremian ayabcr ophesislacocratifuchis wies schines irdeic non enelemo jirelesces edehlorapp yamial mnteptin bacastrabreaoyliveth ozerobfevitchertionaike moomulfj dogranderi anza
13:41:50 <CakeProphet> bots bots bots bots
13:41:56 <CakeProphet> fizzie: ???? ^^^^
13:43:13 <fizzie> Oh.
13:43:14 <CakeProphet> I think befunge hiccuped.
13:43:17 <fizzie> It does that sometimes.
13:43:26 <fizzie> It's quite likely it's a bot-bug.
13:43:30 <CakeProphet> cool feature.
13:43:30 <fizzie> But I haven't caught it yet.
13:44:50 <elliott> That is a nice glitch.
13:44:56 <elliott> How on earth does it recover?
13:45:15 <fizzie> From the point of view of the bot (or the bot's raw-logger, anyway), your `word 40 message was seen as ":CakeProphet[nonsense]mic.ip.windstream.net PRIVMSG #esoteric :fungot", i.e. a repetition of the previous.
13:45:16 <fungot> fizzie: mr president, ladies and gentlemen, turning to his reply, commissioner, ladies and gentlemen, what strikes a new member of the united states
13:45:28 <CakeProphet> just got an idea for an esolang...
13:45:33 -!- elliott has quit (Remote host closed the connection).
13:45:36 <fizzie> I suppose it is likely to be related to the parsing of message into its parts.
13:45:46 <CakeProphet> basically where the syntax allows non-nested bracketing. Thus: [a(b]c)
13:45:49 -!- elliott has joined.
13:46:01 <CakeProphet> though I have no idea what that would do.
13:46:20 <fizzie> I'm not sure I'd call that an "idea" yet, then. Maybe an "ideoid"?
13:46:25 <CakeProphet> yes
13:46:28 <CakeProphet> the spark for an idea.
13:49:20 <elliott> Data/Text/Foreign.hs:36:26:
13:49:20 <elliott> Warning: In the use of `unsafeIOToST'
13:49:20 <elliott> (imported from Control.Monad.ST):
13:49:20 <elliott> Deprecated: "Please import from Control.Monad.ST.Unsafe instead; This will be removed in the next release"
13:49:23 <elliott> Comfoting.
13:49:44 <CakeProphet> good word.
13:49:46 <CakeProphet> `word 40
13:49:48 <HackEgo> come un and uja carterstalersi ree auxectivod mcre taunctrive sandnfuboll adren divicinrescractoratfounuarahsant fole bbilmilcomano visseve kuncontadelanansillarac ines anerictum bi garde videnea ter oba cachuroi hit li he shinge iraden plie cong sextellfrie da grolaungodopystis thsootter slant viorty hypermairiers bukad sourtiven
13:50:48 <fizzie> Another thing: when the argument is a non-number, use it as the initial context. So you can "`word com" to get words that start with 'com'.
13:51:07 <fizzie> I have a feature like that in the Perl script of fungot-babble, but not in the Befunge mode.
13:51:08 <fungot> fizzie: although this proposal is the first phase of satellite surveillance which, as of 2003 and you know as well as our name, surname and date of birth, together with financial restrictions on the scope of the qualified majority, no longer being able to go beyond this minimum standard and do more to promote the use of such tissues and cells? do i have confidence in the democratic life and economic progress. securing budgetary
13:52:57 <elliott> Grolaungodopystis. Good.
13:52:58 <fungot> fizzie: we almost feel sorry for the european neighbourhood policy. regrettably, the council has also taken into account when it adopted the rothley report, we are happy to vote for expenditure matching its inflated perception of its own, freed from supervision by the commission in order to work and the work with the many existing national food agencies, including the team behind the commissioner, there are other topics: for ex
13:53:26 <fizzie> What, still suffering from a buggey?
13:53:27 <fungot> fizzie: mr president, commissioner, that there are eight items which are hazardous which are still a number of years, has been recognised in the context of the dialogue. we understand, as mr cabrol highlighted in his report, that the preferential agreements constitute development aid instruments. our vote against.
13:53:36 <fizzie> I don't really thing you recovereded.
13:53:58 <CakeProphet> fungot
13:53:58 <fungot> CakeProphet: mr president, ladies and gentlemen, in april 1996 the commission funded sixty-two projects to promote democracy in cuba.
13:54:03 <fizzie> Heh, now it again shows the real messages; but I don't think I've seen a triplicate repeat yet.
13:54:10 <fizzie> Anyhow:
13:54:12 <fizzie> $ ./testlm-disk.pl ../twungot/{tokens,model}.bin.irc 5 mind is
13:54:12 <fizzie> mind is a submarine!!! it works!
13:54:12 <fizzie> mind is twisting now. :) just had to change the dos options for it.
13:54:12 <fizzie> mind is a potato field...? that's not all that's in a compiler? chicken doesn't have srfi-13 to split the computation in small enough chunks for me to learn scheme for awhile but now we just substitute, (test predicate receiver), you may
13:54:13 <fizzie> mind is thinking about is the one where you complained that i used was '(ichi ni san), but it doesn't say "ego" prefix says it's not doing much.'
13:54:16 <fizzie> mind is the UNK
13:54:18 <fizzie> That sort of thing.
13:54:26 <CakeProphet> right
13:54:34 <CakeProphet> that would be very easy to do.
13:55:52 <elliott> $ cabal-dev/bin/mchost 0
13:55:52 <elliott> Listening on port 0...
13:55:56 <elliott> That, um, should that succeed? Is port 0 special?
13:56:01 <elliott> Port 9 failed properly.
13:56:04 <elliott> I think I remember 0 being special.
13:56:18 <elliott> fizzie: Mind is indeed the UNK.
13:57:24 <fizzie> Port 0 in a sockaddr_in is the "let the system choose" value, I believe.
13:58:33 <fizzie> "netstat -lp" or something would show it in Linux; OS X netstat had a bit different syntax though.
13:59:08 -!- MSleep has changed nick to MDude.
13:59:08 <elliott> Heh.
13:59:13 <elliott> I'm on Linux.
13:59:23 <fizzie> Ohhh, *right*.
13:59:30 <elliott> What.
13:59:48 <fizzie> I forgot the whole thing above about Xfce and whatever.
13:59:59 <elliott> Heh.
14:00:05 <CakeProphet> fizzie is a goldfish like me.
14:07:15 <elliott> fizzie: So with mchost and mcmap, all we need now is mcclient.
14:11:19 <fizzie> An ncurses-based mcclient.
14:11:47 <elliott> fizzie: Y...eees...
14:12:19 <CakeProphet> oh god.
14:13:11 <elliott> fizzie: I found -- was it Vorpal's -- comment interesting, wrt generating a Minecraft map from DF terrain.
14:13:20 <elliott> fizzie: mcmap has saving code, at least. :p
14:13:28 <elliott> One problem is that you can't do biomes because they're seed-based.
14:13:53 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:15:38 <fizzie> Yes, that is twue. Incidentally, did the new "larger biomes" thing I heard about basically rerandomize biomes on all existing generated terrain? (Or did that thing never happen?)
14:17:03 <elliott> I don't think so. Mayhaps I am: wrong.
14:17:17 <elliott> http://hackage.haskell.org/package/vault Hey, I am a pubamalished developamator.
14:17:20 * elliott famous
14:20:52 <CakeProphet> wow
14:20:54 <CakeProphet> I'm not. :(
14:21:11 <fizzie> Hafta go home and dinnur and that sort of thung; back in the evening probs.
14:26:06 <CakeProphet> > ord '['
14:26:07 <lambdabot> 91
14:26:08 <CakeProphet> > ord '('
14:26:09 <lambdabot> 40
14:26:10 <CakeProphet> > ord '{'
14:26:10 <lambdabot> 123
14:26:12 <CakeProphet> noooooo
14:26:20 <CakeProphet> > ord '}'
14:26:20 <lambdabot> 125
14:26:26 <CakeProphet> why is ASCII so fucked up
14:27:50 <CakeProphet> > ord ']'
14:27:50 <lambdabot> 93
14:27:55 <CakeProphet> > ord ')'
14:27:56 <lambdabot> 41
14:27:59 <CakeProphet> NOOOO
14:28:08 <CakeProphet> QUIT THAT.
14:28:11 <CakeProphet> BE 42
14:28:19 <CakeProphet> BE TWO INTEGERS WAY LIKE THE OTHER TWO ARE.
14:28:23 <CakeProphet> *away
14:37:18 <elliott> > [-3..3]
14:37:19 <lambdabot> [-3,-2,-1,0,1,2,3]
14:37:21 <elliott> good
14:40:07 -!- copumpkin has joined.
14:40:38 <CakeProphet> elliott: ...what were you expecting? :P
14:40:49 <elliott> dunno
14:40:52 <elliott> - has weird fixity
14:41:09 <CakeProphet> ah
14:41:32 <CakeProphet> I guess they just DWIM here :P
14:42:30 <elliott> Vorpal: Hello
14:43:22 <CakeProphet> I was pretty sure the rule was that -n was never a section, and if it can't be parsed as infix then it's parsed prefix
14:43:26 <CakeProphet> which is what is happening there.
14:45:45 <elliott> it has actual fixity though.
14:45:48 <elliott> > -9 `mod` 9
14:45:49 <lambdabot> 0
14:45:52 <elliott> > -9 `mod` 99
14:45:53 <lambdabot> -9
14:45:54 <elliott> > (-9) `mod` 99
14:45:55 <lambdabot> 90
14:46:05 <CakeProphet> ...
14:46:17 <CakeProphet> that's. really weird.
14:46:28 <elliott> haskell's negative literal syntax is its biggest flaw.
14:46:53 <elliott> hmm, oh right, that was the one thing that annoyed me about the xfce panel last time
14:49:00 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
14:53:17 -!- Phantom_Hoover has joined.
14:55:28 <elliott> Phantom "the" Hoover (Tm)
14:55:55 <CakeProphet> almost as cool as Cake "likes practical stuff" Prophet
14:56:08 <CakeProphet> though I also go by "likes perl" and "easily amused"
14:57:58 -!- CakeProphet has changed nick to Cake_Prophet.
14:58:08 <Cake_Prophet> how's this?
14:59:20 <elliott> no
15:00:08 <Cake_Prophet> why?
15:01:07 -!- Cake_Prophet has changed nick to tehporPekaC.
15:01:55 <olsner> teh Por Pebkac
15:02:19 <tehporPekaC> if (s.top() == '(' && c == ')' || s.top() == '[' && c == ']' || s.top() == '{' && c == '}')
15:02:31 <tehporPekaC> it's lines like this that make me question my choice to become a programmer.
15:02:48 <tehporPekaC> that's not even a particularly bad one
15:02:51 <tehporPekaC> and it makse me question.
15:03:20 <olsner> yeah, no-one's figured out any particularly good way to do programming yet
15:03:42 <tehporPekaC> I was hoping I could do some ASCII hacks.
15:03:54 <tehporPekaC> but I can't
15:04:05 <tehporPekaC> well I could but it would be bad.
15:04:16 <tehporPekaC> I'd still have to condition on the (
15:04:31 <tehporPekaC> but '[' or '{' + 2 = ']' or '}' so....
15:06:22 <elliott> hmph, does anyone have any experience with getting swing to use the gtk laf ;P
15:06:24 <elliott> s/;/:/
15:06:45 <tehporPekaC> no swing is lame.
15:07:18 <elliott> no shit
15:07:24 <tehporPekaC> however I can google
15:07:27 <tehporPekaC> and found this: http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
15:07:47 <elliott> Yes, so did I.
15:07:51 <elliott> And ten other resources.
15:07:54 <elliott> And none of them work.
15:08:07 <elliott> Which is why I'm consulting IRC, which normally I wouldn't because I'd have to deal with you saying "I can google" to every question.
15:08:07 <tehporPekaC> oh
15:08:31 <tehporPekaC> no IRC is just a redirect back to google.
15:08:33 <tehporPekaC> sorry.
15:08:43 <elliott> Useful
15:08:57 <fizzie> ^ord [] {} ()
15:08:57 <fungot> 91 93 32 123 125 32 40 41
15:09:16 <tehporPekaC> fizzie: WHYYYYYY
15:09:25 <fizzie> Be-CAUSE.
15:09:35 <fizzie> (I'm still away, technically speaking; the food.)
15:09:59 <tehporPekaC> elliott: why would that link not work.
15:10:12 <elliott> because it doesn't
15:10:19 <elliott> the advice there does not do a thing
15:10:35 <olsner> tehporPekaC: "()[]{}".indexOf(foo) >= 0
15:11:34 <tehporPekaC> ...
15:12:23 <tehporPekaC> good job.
15:12:27 <tehporPekaC> I'm proud son.
15:13:00 <tehporPekaC> elliott: #esoteric is the worst place to get help.
15:13:23 <elliott> no, it's quite useful when the right people are around
15:14:08 <tehporPekaC> fine don't play along.
15:15:58 <fizzie> #esoteric is the place to get help for your wurst.
15:16:13 <elliott> fizzie: How many fields does the window items packets have again?
15:16:15 <elliott> Sixty four?
15:19:32 <elliott> Let's just say yes.
15:19:35 <elliott> OK, now I have to send an actual chunk.
15:21:19 <elliott> elliott@katia:~/.minecraft$ nc pyralspite.net 25565 <&3 | tee serverlog | nc -l 9999 >&3
15:21:19 <elliott> bash: 3: Bad file descriptor
15:21:19 <elliott> bash: 3: Bad file descriptor
15:21:22 <elliott> Hmm, how was it again. :p
15:21:50 <elliott> Wasn't it olsner who said something like that last time?
15:22:34 <olsner> did I?
15:22:37 <olsner> no idea
15:22:50 <elliott> olsner: I'm just trying to tie a pipeline without a fifo.
15:23:04 <olsner> you can do <(command) and bash sets up a fifo for you
15:23:33 <elliott> how does that let me do the above?
15:23:38 <olsner> I dunno
15:23:54 <elliott> nc -l 9999 >(nc pyralspite.net 25565 | tee serverlog >&3) <&3?
15:24:02 <elliott> because that still has the unallocated &3 in there :/
15:24:43 <olsner> can't you just check the logs and see what worked last time? :)
15:24:48 <elliott> probably :P
15:24:50 <elliott> i didn't try it though
15:25:32 <elliott> 20:37:03: <fizzie> I would hope bash can do it with an anonymous pipe too; if with nothing else, then with coproc, but coproc's horrible. I would hope you could get by with just "nc server port <&3 | nc -l listenport | tee logfile > &4" + some magic to make the pipe.
15:25:34 <elliott> ah
15:26:47 <fizzie> elliott: It depends on the window. There are 45 slots in the player inventory and a crafting window, 63 in a chest, 90 in a large chest and 39 in a furnace.
15:27:06 <fizzie> But the count is there in the packet.
15:27:06 <elliott> fizzie: Burf.
15:27:11 <elliott> (45, then.)
15:27:13 <elliott> And yes, but I'm writing one.
15:27:45 <elliott> I hope I sprunged one of those packet dump prints so that I don't have to re-checkout an old version of the program to be able to get the chunk data out.
15:28:30 <tehporPekaC> http://youarenotsosmart.com/
15:28:57 <fizzie> The coproc syntax is I think power glove levels of bad, and I don't know what the magic pipe-making might be; it could be easiest to just go with the named pipe.
15:29:20 <tehporPekaC> http://youarenotsosmart.com/2009/10/20/self-serving-bias/
15:29:48 <elliott> fizzie: Yeah, I did.
15:30:05 <elliott> Maybe I'll just learn DEFLATE as an esolang. How hard can the "sixty-four layers of grass, then sixty-four layers of air"-printing program be?
15:34:15 <elliott> fizzie: Hey, what's a nice chunk.
15:35:09 <Phantom_Hoover> Cheese.
15:39:21 -!- azaq23 has quit (Read error: Connection reset by peer).
15:40:22 <Phantom_Hoover> A nice chunk of cheese, fresh from the kiln.
15:41:12 <tehporPekaC> from the kiln?
15:41:24 <Phantom_Hoover> Yes.
15:41:41 <Phantom_Hoover> Of course.
15:42:37 <tehporPekaC> uh....
15:42:57 <Phantom_Hoover> Do... you not know how cheese is made?
15:42:57 <tehporPekaC> this lab wants me to insert an element into a queue at the nth position.
15:43:12 <Phantom_Hoover> Heh.
15:43:14 <tehporPekaC> but there isn't a way to do that... so I guess just have to do terrible things with push and pop?
15:45:24 -!- Ngevd has joined.
15:45:32 <Ngevd> Hello!
15:53:04 <Vorpal> elliott: uh... coproc? what is that
15:53:12 <elliott> Note I never saidcoproc.
15:53:31 <Vorpal> elliott: you quoted fizzie saying it, my bad
15:53:46 <elliott> But "help coproc" might answer.
15:53:46 <tehporPekaC> "Yo, I try to get it how I live it. A lot of people countin' on me kinda like a digit. It's a cold world, I'm not frontin' like it isn't. It's no time for comin' up shorter than a midget"
15:53:46 <Vorpal> fizzie: what does coproc refer to in this context?
15:53:54 <Vorpal> ah
15:53:59 <Vorpal> elliott: that is quite new isn't it?
15:54:09 <elliott> Note I never said coproc. Ask fizzie; he knows.
15:54:13 <elliott> or if he doesn't Idon't either.
15:54:47 <tehporPekaC> man I wish this lab didn't force me to do awful things.
15:54:54 <Vorpal> wait... what? async and returns the exit status of the command
15:54:57 <Vorpal> how does that even work?
15:54:58 <tehporPekaC> I program much slower at metaphorical gunpoint.
15:56:05 -!- Ngevd has quit (Remote host closed the connection).
15:57:37 <elliott> http://www.reddit.com/r/haskell/comments/krp0q/brainfuck_interpreter/
15:57:39 <elliott> oh jesus chrsit
15:57:41 <elliott> sdkjhkdhglsfgdfg
15:57:42 -!- Ngevd has joined.
15:58:17 <elliott> "fuckWithTape" ahahaha ok points for style
16:02:54 -!- ais523_ has joined.
16:03:32 -!- monqy has joined.
16:14:00 <elliott> unix is so terribly suited to binary files
16:15:30 <tehporPekaC> as opposed to?
16:15:41 <Ngevd> Windows?
16:15:43 <elliott> nothing
16:15:57 <elliott> it's just amazing how easy it is to munge text in unix
16:16:01 <elliott> but binary files are basically impenetrable
16:16:04 <elliott> unless you write your own script from scratch
16:16:38 <Ngevd> How will @ support binaries?
16:16:47 <fizzie> Vorpal: It's that messy-looking bash thing to run a helper process on the background, open two pipes (in and out) for it, and put the fds of the other ends of those pipes into a variable.
16:16:48 <elliott> define binaries
16:16:54 <elliott> fizzie: Yoooo, what's a goodchunk
16:17:25 <fizzie> elliott: Is this some sort of philoso-ethical question? What makes a good chunk?
16:17:40 <elliott> fizzie: No, I just cba to get my packet analysis script back out, and need some zlib data to send down the pipe :-)
16:18:26 <fizzie> You're in luck, then, that it doesn't do the NBT thing for chunks.
16:18:40 <elliott> The network protocol is NBT-free, I believ.
16:18:41 <elliott> The network protocol is NBT-free, I believe.
16:19:01 -!- Ngevd has quit (Read error: Connection reset by peer).
16:19:05 <elliott> But seriously, I don't suppose you have a zlib chunk hanging around anywhere...?
16:19:32 <fizzie> Not really, but you can gzip one; the gzip header is just... I forget exactly, but a fixed number of bytes at the start/end/both.
16:19:40 <elliott> It's not gzip, it's DEFLATE.
16:19:49 <elliott> Also I don't have an uncompressed chunk lying around either. :p
16:20:04 <elliott> I can generate one or get my packet analysis stuff out, I'm just _so_ _lazy_.
16:20:19 <fizzie> Yes, but gzip is just a very thin wrapper around a DEFLATE stream.
16:20:24 <Phantom_Hoover> <elliott> but binary files are basically impenetrable
16:20:28 -!- Ngevd has joined.
16:20:33 <Phantom_Hoover> Just munge the binary into text and then back again.
16:20:45 <elliott> Phantom_Hoover: aka writing your own script.
16:21:10 <Phantom_Hoover> elliott, is there already an inverse to hd?
16:21:17 <elliott> To hd?
16:21:25 <elliott> Oh, hexdump.
16:21:30 <elliott> Well, probably.
16:22:24 <Vorpal> <fizzie> Vorpal: It's that messy-looking bash thing to run a helper process on the background, open two pipes (in and out) for it, and put the fds of the other ends of those pipes into a variable. <-- definitely wasn't around during bash 3.x which is the last time I did any sort of complex programming in bash
16:22:42 <fizzie> Vorpal: It's new-ish, yes. 4.0, I think.
16:22:58 <fizzie> "Bash 4.0 introduced the coprocesses, a feature certainly familiar to ksh users."
16:25:42 <fizzie> Also it seems that even not in 4.2 have they corrected the bug that there can only be a single active coproc at a time.
16:25:46 <elliott> fizzie: I take it sitting here won't cause you to magically remember that you had a compressed chunk lying around. :p I'll go write my own.
16:25:59 <elliott> What major is the data in?
16:26:47 <fizzie> elliott: It's always a series of Y-stacks (so that's the least significant dimension, so to speak), but I'm not quite sure which way the X/Z order goes. Not that it really matters.
16:27:02 <elliott> Well, no, it doesn't, for this symmetrical thing.
16:27:09 <fizzie> And of course it has those nybble-based things.
16:27:17 <elliott> What.
16:27:22 <elliott> Isn't that just in the multi set block
16:27:39 <elliott> Oh god, the metadata.
16:27:47 <fizzie> No. The chunk data is a concatenation of blockids, metadata, blocklight and skylight.
16:27:59 <fizzie> All the three latter ones are one nybble per block.
16:28:51 <elliott> OK so... (sixty-four times grass layer), (sixty-four times air layer), one-hundred-twenty-eight times (0 layer of nibbles), one-hundred-twenty-eight times (?? layer of nibbles -- what is "full block lighting"?), and then again for sky light (what is full sky lighting?)
16:29:09 <fizzie> Just fill the lights with 0xff, that'll be bright.
16:29:36 <elliott> So
16:29:39 <elliott> sixty four times grass layer
16:29:39 <elliott> sixty four times air layer
16:29:39 <elliott> sixty four times 0 layer
16:29:39 <elliott> sixty four times 0xff layer
16:29:39 <elliott> sixty four times 0xff layer
16:29:42 <elliott> (because of nibbles)
16:29:57 <elliott> And x layer = 256 x.
16:31:27 <fizzie> If I was unclear with the "Y-stacks" comment, what I meant is that byte x*16*128 + z*128 + y corresponds to coordinates x, y, z.
16:31:39 <elliott> Oh.
16:31:44 <cheater> https://gist.github.com/1242573
16:31:44 <elliott> I thought it was the other way around.
16:31:48 <elliott> This complicates things a bit. :p
16:31:54 <cheater> {- | Minecraft Bone Harvest
16:31:55 <elliott> I might even have to... THINK.
16:32:17 <fizzie> So you want something like ((grass x 64).(air x 64))x256 plus the zeros and 0xffs.
16:32:25 <elliott> Right.
16:32:47 <fizzie> Or ((dirt x 63).(grass).(air x 64))x256 if you want to obey grasshysics. :p
16:32:55 <elliott> Fuck grasshysics.
16:34:02 <elliott> Grasshysics: literally the worst.
16:34:14 <Vorpal> what are you trying to do?
16:34:29 <Vorpal> trying to generate a chunk?
16:34:52 <elliott> Vorpal: Yes.
16:35:07 <Vorpal> elliott: why not just load it from the world data?
16:35:12 <elliott> Vorpal: NBT shit.
16:35:26 <Vorpal> elliott: doesn't mcmap have code for NBT already?
16:35:32 <fizzie> This is not mcmap.
16:35:36 <Vorpal> ah okay
16:35:49 <Phantom_Hoover> What are grasshisycs, then?
16:35:54 <elliott> Can mcmap even read NBT?
16:35:56 <fizzie> Phantom_Hoover: The way grass spreads.
16:35:57 <elliott> I thought it just did the write part.
16:36:00 <elliott> I guess it can because regionfile.
16:36:00 <Phantom_Hoover> Ah.
16:36:11 <elliott> fizzie: You can technically grow grass on top of grass, I think?
16:36:15 <elliott> With the staircase method.
16:36:26 <elliott> Grass in place of bedrock is rather more unlikely.
16:36:27 <Vorpal> <fizzie> Phantom_Hoover: The way grass spreads. <-- that is trivial?
16:36:29 <fizzie> elliott: I don't know, I'm no grassologist.
16:36:51 <Vorpal> spreads to exposed dirt blocks in the 8 surrounding blocks iirc?
16:36:57 <Vorpal> or doesn't it spread diagonals?
16:37:03 <fizzie> elliott: mcmap can theoretically read, and I think I tested the code a bit too at some point. It did "work" for the smallest possible values of work.
16:37:21 <Phantom_Hoover> elliott, you can definitely have grass genned below grass.
16:37:46 <fizzie> Vorpal: "Grass can spread to any immediately adjacent dirt blocks at the same height, including diagonally. It can also spread one level above and as much as three levels below. -- In order for a grass block to spread, it must have a light level of 9 or brighter directly above it. Additionally, the dirt block receiving grass must have a light level of at least 4 above it and must not be covered by a block that reduces light by 2 levels or more."
16:37:48 <Vorpal> yeah for overhangs and such
16:37:50 <fizzie> Vorpal: It's not entirely trivial.
16:37:58 <Vorpal> fizzie: ah
16:38:42 <fizzie> There is also: "Grass will die and change to dirt after a random time if covered by an opaque block. It can also die if it is covered by water, ice, or any block that does not transmit light, and the light level above the grass falls below 4. -- For example, in direct sunlight, which is light level 15, grass will die with 4 or more water or ice blocks directly on top of it (assuming it isn't getting any extra light from the sides). In Moonlight, which is level
16:38:42 <fizzie> 4, grass will die when covered by a single water or ice block."
16:38:43 <Vorpal> fizzie: that explains why fence on top of dirt below a tree never gets grass on it
16:39:04 <ais523_> grass grows on fences?
16:39:08 <Vorpal> no
16:39:09 <ais523_> what sort of weird universe is that?
16:39:09 <tehporPekaC> making working out infix-to-postfix conversion on paper is SO MUCH FUN
16:39:10 <Vorpal> below fences
16:39:19 <tehporPekaC> s/making/man/ ...
16:39:21 <Vorpal> ais523_: I had a reference error there
16:40:09 <elliott> let layer = replicate 256
16:40:09 <elliott> let air = 0
16:40:09 <elliott> let grass = 2
16:40:09 <elliott> concat (replicate 256 (replicate 64 grass ++ replicate 64 air)) ++ replicate 64 (layer 0) ++ replicate 64 (layer 0xff) ++ replicate 64 (layer 0xff)
16:40:11 <elliott> Hokary.
16:40:18 <elliott> Does anyone know of a standard DEFLATE tool?
16:40:20 <elliott> With no headers or anything.
16:40:31 <elliott> s/standard/standalone/
16:41:01 <ais523_> you could probably make a small wrapper around zlib
16:41:04 <elliott> ais523_: grass growing on fences really freaks me out, for some reason
16:41:15 <elliott> and I could, I was trying to avoid the effort :-)
16:41:24 <fizzie> I remember a thing that could do it, but not what thing it was.
16:41:32 <fizzie> The gzip header is reasonably easily strippable.
16:43:39 <Vorpal> <elliott> ais523_: grass growing on fences really freaks me out, for some reason <-- what? it would just be a bit odd, that is all
16:43:46 <elliott> I mean IRL
16:44:02 <elliott> 80K is the right size for an uncompressed chunk, right?
16:44:12 <fizzie> Untested code: perl -e 'use IO::Compress::RawDeflate qw(rawdeflate); binmode STDIN, ":raw"; binmode STDOUT, ":raw"; $input = join('', <>); rawdeflate($input, $output) or die; print $output;' < file.in > file.out
16:44:23 <Vorpal> elliott: okay, it would be strange yes. But I'm not sure I would freak out from it? Just some dirt stuck on top of an old wooden fence maybe?
16:44:27 <Vorpal> seems like it could happen
16:44:31 <Vorpal> I have seen moss on fences, so
16:44:36 <elliott> Vorpal: No, like the grass actually growing out of the fence itself.
16:44:59 <Vorpal> elliott: okay that would just be weird. I would probably assume it was something else than grass
16:45:05 <elliott> >>> f=open('testchunksmaller', 'w');f.write(zlib.compress(open('testchunk').read(), 9))
16:45:05 <elliott> >>> f.flush()
16:45:05 <elliott> >>> f.close()
16:45:06 <elliott> Hokay.
16:45:08 <Vorpal> like something similar looking
16:45:17 <ais523_> fizzie: what's with the PerlIO stuff there?
16:45:46 <elliott> Prelude System.IO> withBinaryFile "testchunksmaller" ReadMode hGetContents
16:45:46 <elliott> ""
16:45:46 <elliott> Well that's not right.
16:46:00 <elliott> Oh.
16:46:03 <elliott> That's obviously not right.
16:46:05 <elliott> Stupid lazy IO.
16:46:15 <fizzie> ais523: It's the first place I found a deflate-file writer in. Anyway, $output seems to have to be a filename or a filehandle or an explicit scalarref or something.
16:46:28 <Vorpal> yeah lazy IO is annoying
16:46:28 <elliott> , S.mapChunkData = MapChunk "x\218\237\205\&1\DC1\NUL\NUL\b\EOT \239\251w\214\DLE\SO:@\SOH\146\157Z\138\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253~\191\223\
16:46:28 <elliott> 239\247\251\253~\191\223\239\247\251\253~\191\223\239\247\251\253\SI~\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\224^\ETX\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL=\SOH9\a\129"
16:46:30 <elliott> Let's hope that's right.
16:46:34 <elliott> Vorpal: So don't use it. :p
16:46:38 <Vorpal> elliott: indeed
16:46:40 <elliott> Data.ByteString.hGetContents DidTRT.
16:46:45 <elliott> (It's strict.)
16:47:05 <Vorpal> elliott: I usually don't use lazy IO when coding haskell.
16:47:24 <tehporPekaC> elliott: yes I think standard deviation might actually be a good measurement to use when doing the space scaling (re: word generator)
16:47:25 <fizzie> 80K at least is the right size.
16:47:55 <elliott> tehporPekaC: Well, whatever you say. But it's not "scaling", it's just a constant subtraction.
16:48:16 <Vorpal> why is CakeProphet known as tehporPekaC today?
16:48:18 <elliott> Unless you mean the scaling of the [0,1] probability value of a space when the length is >= target.
16:48:22 <elliott> In which case, it should obviously be exponential.
16:48:57 <tehporPekaC> elliott: yes that.
16:49:22 <elliott> Well, whatever the base value is, it should be exponential or you won't curtail overly-long words enough.
16:49:35 <tehporPekaC> hmmm yeah okay standard deviation is bad
16:49:41 <tehporPekaC> since I already pick a target length
16:50:14 <elliott> tehporPekaC: (Note that "target" here is several less than the real target; by exponentially increasing when over the decreased-target, you have a good chance of meeting the /real/ target.)
16:50:15 <elliott> (But you knew that.)
16:50:34 <elliott> Exception in thread "Client read thread" java.lang.OutOfMemoryError: Java heap space
16:50:37 <elliott> Well... that's... a new one.
16:50:43 <elliott> Dear everyone: What?
16:50:57 <tehporPekaC> but if I were just generating until I reached a space regardless of target length then using standard deviation to scale the porbability of spaces would result in getting natural word lengths
16:51:08 <Vorpal> elliott: you ran out of memory
16:51:09 <Vorpal> that is what
16:51:11 <elliott> Vorpal: Why.
16:51:18 <tehporPekaC> *mean and standard deviation
16:51:18 <elliott> tehporPekaC: Well, shure, but that's an inferior way. :p
16:51:27 <Vorpal> elliott: how should I know? You might have sent something wrong to the client?
16:51:32 <tehporPekaC> elliott: less precise yes.
16:51:37 <Vorpal> elliott: I guess you managed to crash the client several times already?
16:51:48 <elliott> No crashes yet.
16:52:00 <elliott> instance Serialize MapChunk where
16:52:00 <elliott> get = do
16:52:00 <elliott> bytes <- SE.get :: Get Int32
16:52:00 <elliott> MapChunk <$> SE.getByteString (fromIntegral bytes)
16:52:00 <elliott> put (MapChunk str) = do
16:52:00 <elliott> SE.put (fromIntegral (B.length str) :: Int32)
16:52:02 <elliott> SE.putByteString str
16:52:03 <Vorpal> elliott: well this one? wasn't it a crash?
16:52:07 <elliott> That "put" end looks right to me. fizzie? Sanity check?
16:52:10 <elliott> Vorpal: Several times =/= once.
16:52:13 <Vorpal> ah
16:52:22 <Vorpal> elliott: but you said "<elliott> No crashes yet."
16:52:25 <Vorpal> which is not true
16:52:28 <Vorpal> "only one crash so far"
16:52:29 <elliott> Yet as in before this.
16:52:31 <Vorpal> is more correct
16:52:32 <Vorpal> ah okay
16:54:56 <fizzie> tehporPekaC: There's an alternative solution which will always hit the target length, and thanks to the Markov assumption really shouldn't affect the distribution of the last characters of a word: when generating a word of length K with trigrams, first generate K-2 characters so that you ignore all "xy " entries. For the penultimate character, only consider such trigrams "xyz" for which any trigram "z? " exists. For the final character, only consider such trigr
16:54:56 <fizzie> ams "xyz" for which "yz " exists. Then stop. Probably more code to implement, though, and not worth it since you want random lengths anyhow.
16:55:31 <fizzie> elliott: Looks fine.
16:56:26 <elliott> Hmm, it just gets stuck at downloading terrain now.
16:56:31 <elliott> I'm doing everything the protocol tells me to.
16:56:35 <elliott> FAQ that is.
16:57:02 <elliott> Oh here's an obvious bug
16:57:23 -!- ais523_ has quit (Quit: Page closed).
16:58:03 <fizzie> Do you spawn the player in? (I forget how that sequence goes.) And how much ground do you send out?
16:58:08 <fizzie> O
16:58:21 <elliott> fizzie:
16:58:23 <elliott> _ <- ifeed
16:58:23 <elliott> [ S.SpawnPosition (Point 0 64 0)
16:58:23 <elliott> , S.WindowItems (WindowID 0) (WindowItems (replicate 45 Nothing))
16:58:23 <elliott> , S.SetSlot (WindowID (-1)) (-1) Nothing
16:58:23 <elliott> , S.PlayerPositionLook (PlayerPos (Point 0 64 0) 71.62) (Direction 0 0) True
16:58:24 <elliott> ]
16:58:26 <elliott> And I send
16:58:28 <elliott> sequence_ [ sendChunk (ChunkPos cx cz) | cx <- [-3..3], cz <- [-3..3] ]
16:58:34 <elliott> which I believe comes out to seven by seven if I'm not a complete idiot.
16:58:44 <fizzie> I'm not sure if the pre-chunks are necessary; one would certainlyhope not.
16:58:59 <elliott> Well, they should not harm, should they?
16:59:05 <fizzie> Well, no.
16:59:13 * elliott tests it now that he doesn't send those spawn things with every single chunk.
16:59:15 <elliott> Okay, that didn't help.
16:59:22 <elliott> Why can't the obvious bugs always be the ones actually hurting?
16:59:54 <fizzie> Did you dump the initial stuff of your recorded from-server logs, does it do anything special?
17:00:14 <elliott> Those are on my backup disk, hrrrrng.
17:00:17 <elliott> And not in textual format.
17:00:25 <elliott> But da FAQ says this OK.
17:00:35 <elliott> And it's been updated... afirly recently.
17:00:37 <elliott> fairly
17:02:07 <fizzie> Wheird.
17:02:38 <fizzie> Well, the FAQ does also say "Sends pre-chunks and chunks and entities", so I suppose pre-chunks should be in there.
17:03:06 <elliott> Yare.
17:03:10 <elliott> Mayhaps I need to send an entity.
17:03:16 <elliott> For the player themselves, mayhaps.
17:03:19 <elliott> Or maybe my serialisation is just: wrong.
17:03:58 -!- Ngevd has quit (Ping timeout: 252 seconds).
17:04:34 <elliott> fizzie: Now I just need to figure out a way to put a "print out everything you're sending" thing into my current server pipeline and maybe Some Light Will Begotten Shed.
17:04:54 -!- ais523 has quit (Remote host closed the connection).
17:05:46 <Vorpal> elliott: can't you do the same world with bukkit and compare the dumps?
17:06:04 <elliott> There is no ``world''.
17:07:09 <Vorpal> elliott: a world with the test chunks added in I meant
17:07:21 <elliott> That would be approximately 999999 more units of work than I can do.
17:07:33 <Vorpal> right. mcedit could do it
17:09:52 <elliott> fizzie: I has: the dumps.
17:10:14 <fizzie> Do they look: the good, then?
17:10:29 <elliott> They look: Unreadable.
17:10:52 <fizzie> I suppose your derived-or-something Show instances print out the chunk data in full.
17:10:55 <elliott> fizzie: http://sprunge.us/FFQR
17:11:04 <elliott> And yes, they do. Just as a bytestring, there's no "typing" of map chunks yet.
17:11:07 <elliott> The zlib data, that is.
17:11:32 <elliott> Maybe you have to send the chunk data in a certain spiral? No, that's ridiculous.
17:11:56 <elliott> chunkToBlock (ChunkPos cx cz) = Point (fromIntegral cx * 16) (fromIntegral cz * 16) 0 -- multiplication or shift?
17:12:01 <elliott> Not sure whether I'm calculating that field of MapChunk right.
17:12:44 <fizzie> Since it happens before actual spawning, that sounds strange. And I think it should still spawn, just work glitchily, even if you don't feed it everything.
17:13:15 -!- tehporPekaC has quit (Ping timeout: 260 seconds).
17:13:30 <elliott> The actualy client doesn't do any out of heap now btw.
17:13:31 <elliott> It just:
17:13:35 <elliott> (a) Shows the loading map screen,
17:13:46 <elliott> (b) Pops up that "OPEN INVENTORY FOR ACHEIVMETNS LOL" thing in the corner,
17:13:47 <elliott> (c) Sits there a while
17:13:53 <elliott> (d) The achievement disappears and it goes to a time out screen
17:14:26 <fizzie> I do wonder what's up with that one line that looks different; though it does look like an output problem more than anything screwy in the data.
17:15:03 <fizzie> Are you doing anything with the packets the client sends? (If it sends any; I don't know.)
17:15:42 <elliott> Which line?
17:15:48 <elliott> I find it hard to tell from here.
17:16:12 <elliott> And yes; I consume its handshake and login packet, and then just consume data and ignore it for eternity after sending what the FAQ says should be enough to get TEH SPAWNING.
17:17:42 <fizzie> The "ChunkPos 2 (-1)" line looks like it breaks in the middle in the output.
17:18:20 <fizzie> With '2 0' starting from there. Anyway, it's probably not dangerous.
17:18:47 <elliott> Oh, what.
17:18:52 <elliott> There's two MapChunks there?
17:19:01 <elliott> No, that's Wrong.
17:19:05 <elliott> sequence_ [ sendChunk (ChunkPos cx cz) | cx <- [-3..3], cz <- [-3..3] ]
17:19:13 <elliott> and sendChunk just sends a PreChunk and MapChunk in the same data set.
17:19:20 <elliott> So ???????????
17:19:50 <fizzie> There's the PreChunk for 2 (-1), then the MapChunk starts, and then in the middle of the MapChunk the output stops and there's the next PreChunk 2 0, and the corresponding MapChunk.
17:20:13 <fizzie> I don't know where the rest of the 2 (-1) MapChunk went. But it breaks right in the middle of a "\2xx" escape code, so it sounds like it's just a printing thing.
17:20:39 <fizzie> IIRC the server sends all PreChunks first, and then MapChunks after that, but that really doesn't sound like it should matter.
17:20:50 <elliott> Oh, right, it's probably just a copy-paste thing then.
17:21:17 <elliott> fizzie: I'll try removing prechunks. You know, Just In Case.
17:23:05 <elliott> fizzie: http://sprunge.us/gTSR Just in case anything sticks out to you immediately...
17:23:48 <fizzie> I'd probably just log a single real-server connection and dump that. You might want to keep a serialize-a-logfile-to-text executable around, anyhow.
17:23:58 <elliott> Yeah, removing prechunks does: nothing.
17:24:20 <elliott> fizzie: Yeah, I know... I probably will just do that.
17:24:33 <elliott> It'll involve mucking around with the buildsystem though. Eurgh.
17:25:06 <fizzie> What's the Point type like?
17:25:16 <elliott> Three Dubbles.
17:25:29 <fizzie> But in (X, Z, Y) order, right?
17:25:46 <elliott> Um.
17:25:49 <elliott> N...o?
17:25:52 <elliott> Should they be?
17:25:59 * elliott looks at chunkToBlock. Ah.
17:26:03 <elliott> But seriously, should they be?
17:26:03 <fizzie> Right.
17:26:07 <fizzie> Well, probably not.
17:26:12 <fizzie> (X, Y, Z) is more logical.
17:26:15 <elliott> Let's try that then.
17:26:18 <elliott> (Whoops.)
17:26:45 <elliott> sigh -- All that anticipation and it still doesn't bloody work.
17:30:09 <Vorpal> elliott: still crashing client?
17:30:27 <elliott> Back.
17:30:33 <elliott> Vorpal: No, it crashed the client exactly once.
17:30:36 <Vorpal> ah
17:30:37 <elliott> And it wasn't really a crash.
17:30:41 <elliott> It just errored to the console and kept going.
17:30:46 <Vorpal> heh
17:35:32 <elliott> fizzie: Mmf, but now I have to name that tool. :/
17:35:36 <elliott> printdump? formatdump?
17:35:41 <elliott> formatlog?
17:35:47 <fizzie> takeadump.
17:35:51 <elliott> no
17:35:51 <elliott> bad
17:35:53 <elliott> fizzie
17:35:53 <elliott> bad
17:36:08 <fizzie> But it lets you take a dump and look at it. :p
17:36:47 <Vorpal> elliott: printlog?
17:37:01 <elliott> That seems like it'd communicate with an Actual Printer.
17:37:15 <elliott> Oh, it should start with mc.
17:37:18 <elliott> To avoid conflicts for global installs.
17:37:26 <elliott> mc-format-log?
17:37:38 <fizzie> "deserializearawpacketcapturelogintoaneedlesslyverbosetextualformat".
17:37:42 <elliott> Maybe "mcinspectlog".
17:37:43 <Vorpal> elliott: name it "Minecraft Dump Log Formatting & Printing Utility"
17:37:48 <elliott> mdlfpu
17:37:49 <Vorpal> elliott: it is a valid filename on *nix
17:37:55 <Vorpal> elliott: no, the full one I mentioned
17:38:00 <Vorpal> valid filename
17:38:46 <Vorpal> elliott: or "Minecraft Dump Log Inspection, Formatting & Printing Utility"
17:39:11 <elliott> mdlifpu
17:39:13 <Vorpal> ./Minecraft\ Dump\ Log\ Inspection,\ Formatting\ \&\ Printing\ Utility
17:39:16 <Vorpal> elliott: no like that ^
17:39:27 <fizzie> MDLFPU, the floating-point unit that's based on the minimum description length principle. *Somehow*.
17:39:39 <elliott> Vorpal: How about some exclamation marks in there so that double quotes don't work for it with bash?
17:39:46 <Vorpal> elliott: awesome idea!
17:39:57 <elliott> (I wish you could disable that.)
17:40:00 <elliott> (It is so annoying.)
17:40:01 <Vorpal> elliott: you can
17:40:05 <elliott> You can????
17:40:06 <Vorpal> it is setopt or set or such
17:40:07 <elliott> :DDDDDDDDddddddddddd
17:40:07 <elliott> how
17:40:09 <Vorpal> histsomething
17:40:12 <Vorpal> forgot the name of it
17:40:24 <Vorpal> elliott: anyway, add in both single and double quotes in the name
17:40:28 <Vorpal> and backslashes
17:40:53 <elliott> How about I just take a forty meg dump. , off of a server, and make that the name of the tool?
17:40:53 <Vorpal> so the file is named: Minecraft "Dump" Log Inspection, Formatting & Printing 'Utility\' or such
17:41:22 <elliott> See now, a filesystem naively implemented on top of @ would support forty meg filenames no problem.
17:41:45 <Vorpal> -H Enable ! style history substitution. This flag is on
17:41:45 <Vorpal> by default when the shell is interactive.
17:41:48 <Vorpal> elliott: to set ^
17:41:53 <Vorpal> just do set +H should work
17:42:10 <elliott> omg it works :DD
17:42:10 <elliott> thanks
17:42:51 <fizzie> Ooh, that's going to the .bashrc.
17:43:06 <Vorpal> why is that on by default btw?
17:43:08 <elliott> We have suffered in silence.
17:43:09 <fizzie> I had *just* found it from the man bash when you pasted that.
17:43:12 <Vorpal> it seems so utterly stupid
17:43:27 <elliott> Vorpal: Because people think that anything non-interactive is more efficient to use, despite it being a complete duplication of Ctrl+R.
17:43:31 <Vorpal> fizzie: easier way: help shopt | grep hist then help set | grep hist
17:43:41 <elliott> set +histexpand for a more literate version.
17:43:50 <elliott> Oh, hmm, or not.
17:43:51 <elliott> nohistexpand
17:43:58 <Vorpal> not sure it is the same one
17:44:04 <elliott> It is.
17:44:06 <elliott> It says same as -H.
17:44:10 <Vorpal> oh yes indeed
17:44:17 <fizzie> But that's with "set -o".
17:44:21 <Vorpal> elliott: it might be set +o histexpand
17:44:25 <Vorpal> not sure
17:44:26 <elliott> Ah, okay.
17:44:41 <elliott> I guess that's... slightly better than set +H?
17:44:44 <Vorpal> elliott: no the option syntax for set is not very sane
17:45:48 -!- ais523 has joined.
17:45:49 <fizzie> I've never really liked the "+foo is negative, -foo is positive" thing, even though it is... if not common, then at least not unheard-of.
17:46:41 <Vorpal> indeed
17:47:04 <Vorpal> fizzie: and something like set +o noglob is downright confusing
17:47:12 <Vorpal> that is uh... "enable logging"?
17:47:15 <Vorpal> err
17:47:17 <Vorpal> globbing*
17:47:20 <Vorpal> weird typo
17:48:14 <Vorpal> oh shit. libreoffice update
17:48:18 <Vorpal> this is going to take ages.
17:48:54 <elliott> heh
17:49:22 <elliott> fizzie: Eurgh, a multiple-executable solution is annoying.
17:49:35 <elliott> I need to make all the current stuff a library and the like.
17:49:41 <elliott> Maybe I'll just add a flag to mchost.
17:49:44 <elliott> mchost --analyse dump or something.
17:50:04 <fizzie> In other news, installed that 'tig' thing.
17:50:24 <fizzie> In yet other news, InfiniBand is such a silly name.
17:50:27 <elliott> The wonderful thing about tiggers is that fizzie's the only one.
17:51:35 <Phantom_Hoover> Poor fizzie :(
17:51:44 <fizzie> (Our faculty cluster's been offline for the last week, because it moved to another physical location; it was supposed to open on Monday, but apparently they need to replace an InfiniBand switch still. Or, well, HP needs.)
17:52:42 -!- derdon has joined.
17:52:42 <Vorpal> <fizzie> In yet other news, InfiniBand is such a silly name. <-- yes, but why did you bring that up now?
17:52:46 <Vorpal> oh and what is "tig"?
17:52:55 -!- Zuu has quit (Ping timeout: 244 seconds).
17:53:03 <fizzie> 'tig' is this ncurses-based git browser thing elliott pointed me at earlier today.
17:53:09 <Vorpal> heh
17:53:17 <Vorpal> fizzie: any useful?
17:53:41 <elliott> It's prettier than gitk. :p
17:53:50 <fizzie> It has a shortlog-like view, a log view, a tree-browser, a blame mode thing, a differying thing and so on.
17:54:20 <elliott> I suppose I should install it if it's the New Thing.
17:54:39 <elliott> fizzie: Did you just grab a tarball/make/install, or?
17:54:45 <fizzie> I just aptituded it.
17:55:01 <Vorpal> well, I'll be offline for a bit. Cya.
17:55:03 <fizzie> Possibly not bleeding edge, again.
17:55:06 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
17:55:22 <elliott> Oh, it seems to be up to March date.
17:55:29 <elliott> Didn't realise it was pacpakcpakcpakpackpakged.
17:55:36 <elliott> http://jonas.nitro.dk/tig/NEWS.html
17:55:40 <elliott> Time to decide HOW VITAL THESE CHANGES ARE.
17:55:57 <elliott> "Add support for blaming diff lines." Fancy.
17:56:20 <fizzie> The graph mode ('g' in main view) is not quite as pretty as gitg's colorful twisty lines, though.
17:56:37 <elliott> Looks fine for mchost, which has exactly 0 divergences. :p
17:56:56 <elliott> So how do you use it as a pager, I wonder.
17:57:22 <elliott> "PAGER=tig git diff" Well, not like that.
17:57:55 <elliott> "git show | tig" works.
17:58:01 <elliott> Oh, as does "git diff | tig".
18:01:15 <fizzie> "tig status" looks reasonable also; it gives a (colorized) "git status" output, except you can select files to see the diffs.
18:01:23 <fizzie> Not sure I can remember to use this thing though.
18:04:22 <fizzie> It's a bit confusing. If I do "tig status", enter shows the diff of the selected file, but 'd' switches to the "diff view" which shows (full-screened) the diff of the latest commit. And if I 'q' out of that back to the diff view of the selected file, it shows in full screen, but the arrows don't scroll it, instead they change the selected file in the (now invisible) "tig status" file list.
18:04:39 <elliott> It is a magic.
18:06:09 -!- Zuu has joined.
18:19:19 <ais523> what's tig?
18:19:33 <ais523> ah, found it in scrollback
18:22:53 <fizzie> It reminds me of cgdb (a curses gdb frontend) a bit; it was sort-of nifty, and not too shabby, but for some reason I never quite got around to actually habitually using it.
18:23:28 <fizzie> Same goes with GDB's own TUI thing, except that was also buggy as anything.
18:28:26 <elliott> fizzie: Do you know of any file formats I could output in that would let someone browse it as the "flat" (Constructor arg arg arg) format, but click on a given packet to expand it to have names for all those fields? :p
18:28:36 <elliott> Hard to strike a balance between "lol ten fields what" and "oh god every packet takes up ten lines".
18:28:55 <fizzie> XML. :p
18:29:07 <elliott> fizzie: I don't know of a prewritten tool for XML that would offer that presentation.
18:29:34 <elliott> All I can think of is an ordered (key,value) storage with really lax keys; I could store the flat form as the key.
18:31:33 -!- boily has quit (Ping timeout: 245 seconds).
18:32:30 <fizzie> I've seen some XML editors... and doesn't Firefox do it too if you point it at a styleless XML file? (I mean, show it as tree; then you'd just format that as <Constructor foo bar baz> ...values of the fields either as text or as elements... </Constructor>, and a tree-oriented XML tool would just show the constructor and argument names.)
18:32:56 <elliott> <Constructor foo bar baz> will not be valid.
18:33:03 <elliott> Unless <Constructor (Point ...) 99> is valid.
18:33:26 -!- Ngevd has joined.
18:34:18 <fizzie> That sounds like having the field values in there. I was assuming you didn't want to show those. Or did you mean just "I want all data visible but on one line, and then expanded on click".
18:35:09 <elliott> I want it all visible inline, and if you click on it to expand it I want to be able to see the same data, but with field names before it.
18:35:15 <elliott> And maybe even with the values aligned all fancy-like.
18:35:24 <elliott> Hmm, I could just print out some simple HTML
18:36:21 <fizzie> That sounds possible. You can even embed in some scripting to do the show/hide thing if you want.
18:36:36 <Ngevd> I played monopoly today
18:36:47 <fizzie> <Constructor foo="(Point ...)" bar="99"> ... </Constructor> would let you show everything inline, but it'll probably look real clumsy.
18:36:54 <elliott> Yeees, that sounds clumsy.
18:36:58 <elliott> Scripting was what I was thinking of doing.
18:47:17 -!- boily has joined.
19:01:25 <Ngevd> Forgot it was Monday
19:01:28 <Ngevd> I like Mondays
19:01:37 <Ngevd> Mondays are University Challenge Days
19:02:11 <ais523> is #esoteric the University Challenge Fan Club?
19:02:17 <ais523> it's on in here too
19:02:46 <elliott> ais523: least enthusiastic fanclub ever
19:02:51 <ais523> indeed
19:06:04 -!- Ngevd has quit (Ping timeout: 252 seconds).
19:17:34 -!- sadhu has joined.
19:18:15 <sadhu> Hello esoteric!
19:20:28 <elliott> hi
19:20:30 <elliott> `? welcome
19:20:32 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:21:19 <sadhu> hi elliott
19:21:23 <fizzie> fungot: You, start greeting people too.
19:21:24 <fungot> fizzie: it doesn't *use* raw cgi. to my deep fnord i'm only fnord of the job description. it's badly fnord also.
19:21:43 <elliott> `addquote <fungot> fizzie: it doesn't *use* raw cgi. to my deep fnord i'm only fnord of the job description. it's badly fnord also.
19:21:43 <fungot> elliott: i lived in the north east!! i'm having too much fun
19:21:44 <HackEgo> 685) <fungot> fizzie: it doesn't *use* raw cgi. to my deep fnord i'm only fnord of the job description. it's badly fnord also.
19:21:48 <elliott> ...
19:21:56 <elliott> What style is it on.
19:22:00 <fizzie> ^style
19:22:00 <elliott> And why is it mentioning the north east.
19:22:00 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube
19:22:05 <elliott> Augh.
19:22:05 <fizzie> "The usual."
19:22:15 <sadhu> this is my registered nickname....i am the guy who was working on assembler to bainfuck converter
19:25:07 <elliott> haven't you had three nicks now? :-)
19:27:46 <sadhu> elliott:but they were not registered
19:27:57 <sadhu> this one is final one...as i have registered this
19:28:20 <sadhu> my previous nicks were "dell" & "kaus"
19:28:34 <elliott> hehe
19:28:46 <sadhu> :D
19:29:53 <Gregor> fungot: I will fnord you so hard you fnord your fnord.
19:29:53 <fungot> Gregor: it's a nice number. even numbers are also fnord difficult/ big to implement which is why i do this
19:30:02 <sadhu> fungot: sdf
19:30:03 <fungot> sadhu: what lisp does with lists... lua does with hash tables.
19:30:10 <sadhu> lol
19:30:21 <sadhu> fungot: Are you a dumb goat ?
19:30:22 <fungot> sadhu: i idly searched for your email and tell me what the fuck
19:30:57 <sadhu> try the #emacs ,fsbot its amazing!
19:31:41 -!- sadhu has changed nick to ikkyu.
19:31:46 -!- ikkyu has changed nick to sadhu.
19:31:49 <fizzie> But it's probably implemented in something really boring.
19:31:58 <sadhu> emacs lisp
19:32:05 <elliott> ?hoogle (a -> m b) -> a -> m (a,b)
19:32:06 <lambdabot> No results found
19:32:09 <elliott> Lame.
19:32:21 <elliott> ?undo do x <- a; x' <- f x; return (x,x')
19:32:21 <lambdabot> a >>= \ x -> f x >>= \ x' -> return (x, x')
19:32:25 <elliott> ?pl a >>= \ x -> f x >>= \ x' -> return (x, x')
19:32:25 <lambdabot> liftM2 (>>=) f ((return .) . (,)) =<< a
19:32:28 <elliott> Sigh.
19:32:34 <fizzie> How... obvious.
19:32:51 <elliott> ?pl \line -> unless (null line) (putStrLn (reverseWords line) >> main)
19:32:52 <lambdabot> liftM2 unless null ((>> main) . putStrLn . reverseWords)
19:33:12 <sadhu> fungot:fuck you!
19:33:13 <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life.
19:33:20 <elliott> sadhu: :(
19:33:20 <elliott> rude
19:33:38 <fizzie> fungot: Where do you *get* that stuff?
19:33:39 <fungot> fizzie: i saw the movie of the book deals almost exclusively with sushi, actually... creative.
19:33:40 <sadhu> elliott :P
19:34:43 -!- oerjan has joined.
19:34:55 <fizzie> Oe, it's rjan.
19:35:09 <fizzie> (The first two letters sound somehow interjectish.)
19:35:13 <oerjan> fie, it's zzie!
19:35:38 <fizzie> I considered registering "zzie.fi" as my "primary" domain.
19:35:54 <elliott> But what email to use?
19:36:11 <fizzie> Aye, there's the rub. fi.zzie@zzie.fi?
19:36:38 <elliott> Ugly.
19:36:45 <elliott> if@zzie.fi would be nice if only @ were .
19:36:53 <elliott> fi@zzie.fi is alright, I have to admit.
19:36:55 <oerjan> heiki.kallasjokki@zzie.fi
19:36:59 <elliott> fizzie: Can you become fazzie?
19:37:01 <oerjan> *heikki
19:37:05 <elliott> f@zzie.fa
19:37:06 <fizzie> elliott: If I eat enough.
19:37:20 <elliott> :DDDdd
19:37:31 <Gregor> X-D
19:37:44 <elliott> oerjan: i helped someone... twice......... http://hpaste.org/51809
19:37:48 <elliott> i don't think my second helping was good...
19:37:53 <Gregor> elliott: Tisk tisk.
19:38:09 <elliott> although actually it reads OK if you had flipped (.) :P
19:38:11 <oerjan> fizzie: all you need to do is become irish and register fi@zz.ie
19:38:29 <elliott> $ whois zz.ie
19:38:29 <elliott> The program 'whois' is currently not installed. You can install it by typing:
19:38:29 <elliott> sudo apt-get install whois
19:38:30 <elliott> How.
19:38:38 <elliott> Xubuntu, your smallness is lies.
19:39:18 <fizzie> It just keeps telling me what .ie domains should be like.
19:39:31 <elliott> "Not like this", in other words? :-P
19:39:32 -!- sadhu has quit (Quit: Leaving).
19:39:39 <elliott> RIP sadhu.
19:39:42 <elliott> ?pl (>> a) . b
19:39:43 <lambdabot> (>> a) . b
19:39:45 <fizzie> Well, I don't know, none of the conditions seem to rule out zz.ie.
19:39:51 <elliott> Try whois sdojflkgslkdfgd.ie
19:40:13 <fizzie> % Not Registered - The domain you have requested (sdojflkgslkdfgd.ie) is not a registered .ie domain name.
19:40:17 <fizzie> It's a different message.
19:40:23 <fizzie> -be less than 66 characters in length, including the '.ie' characters
19:40:23 <fizzie> -not start with a hyphen '-'
19:40:23 <fizzie> -not have a label ending in a hyphen before the '.ie' e.g. 'xyz-.ie'
19:40:23 <fizzie> -not start with 'xn--' which is reserved for IDN usage, e.g. �ire.ie
19:40:24 <fizzie> -contain at least 5 characters, including the three for '.ie'
19:40:26 <fizzie> -have at least one alphabetic character, e.g. ' would be invalid'
19:40:38 <fizzie> But I don't see why zz.ie would be wrong according to those.
19:40:39 <elliott> <fizzie> -have at least one alphabetic character, e.g. ' would be invalid'
19:40:39 <elliott> What.
19:40:59 <fizzie> Don't ask me. Maybe it's a conversion thing somewhere.
19:41:44 <fizzie> The .fi root allows two-letter registrations, but only when they do not match existing TLDs, and since there are so many of them ccTLDs, quite a lot of them are reserved.
19:41:52 <fizzie> (And all the legal ones are already registered.)
19:42:01 <elliott> Heh.
19:42:17 <elliott> There are still one-character domains on sale.
19:42:19 <elliott> Excluding TLD.
19:42:44 <elliott> I know .st charge exorbitant prices for two-characters.
19:42:57 <elliott> (But seem to reserve all one-chars.)
19:42:59 <Gregor> So the shortest domain you can buy is presumably three characters + a dot?
19:43:16 <elliott> Gregor: I believe so. It is one of my goals to own one of these domains :P
19:43:23 <elliott> Gregor: I was working on a script to narrow down the list.
19:43:24 <oerjan> elliott: null line `unless` do
19:43:29 <elliott> oerjan: heh
19:44:06 <fizzie> A friend just registered uv.fi. (All the legal two-character .fi's have been registered for a while now, but that one expired recently. There's three others in the "grace period" about to go, but I don't think I want any of them. The difference between two and three characters isn't all that huge.)
19:44:08 <Gregor> elliott: Not as good as libc.so
19:44:10 <Gregor> ... :'(
19:44:13 <elliott> fizzie: Just?
19:44:29 <elliott> Anyway, if I get a one-char domain, whooo boy am I gonna sell that thing :P
19:44:30 <fizzie> Just a week or so ago.
19:44:41 <elliott> How much do you think an UP AND COMING URL SHORTENER STARTUP would pay for a four keypress domain
19:44:47 <elliott> The answer is MORE MONEY THAN I NEED.
19:45:10 <Gregor> elliott: Why compete with t.co?
19:45:28 <elliott> Gregor: Can non-twat things even use t.co? :-P
19:45:41 <elliott> And besides, I said "startup", "url shortener"; the brain of the hypothetical reader is not expected to be active.
19:46:03 <elliott> "The link service at http://t.co is only used on links posted on Twitter and is not available as a general shortening service.
19:46:03 <elliott> "
19:47:55 <Gregor> elliott: I spose not.
19:48:01 <oerjan> elliott: i assume your hpaste got an answer to the question he actually asked.
19:48:16 <elliott> Naw, I answered that in-channel :P
19:48:19 <fizzie> ICANN New gTLD Applicant Guidebook does not seem to specify any minimum length. If they would (except I really don't think they will) accept a single-letter domain, you could own, say, "x".
19:48:24 <oerjan> *hpaste guy
19:48:32 <fizzie> http://x/. i@x.
19:48:38 <elliott> fizzie: There's Ian at n@ai.
19:48:42 <elliott> http://ai./
19:48:54 <fizzie> Yes, that's pretty close already.
19:49:12 <elliott> I don't think I could turn down elli@tt.
19:49:16 <oerjan> well he's an ai so he doesn't count, obviously he just hacked it
19:49:27 <elliott> Someone wanna give me elli@tt?
19:49:50 <elliott> Man, Anguilla is FLAT.
19:49:53 <elliott> http://upload.wikimedia.org/wikipedia/commons/4/43/Anguilla-aerial_view_western_portion.jpg
19:49:55 <elliott> Like really flat.
19:50:00 <Phantom_Hoover> Sorry, I slammed the door, I'll have to come off for the rest of the night bye guys
19:50:04 -!- Phantom_Hoover has quit (Quit: Leaving).
19:50:23 <elliott> lol
19:50:32 <elliott> oh
19:50:33 <elliott> oh dear
19:50:37 <elliott> my power cord is frayed
19:50:38 <oerjan> elliott: so ian will be the first guy to lose his email due to global warming?
19:50:46 <elliott> well i
19:50:50 <elliott> guess i will not use this computer
19:51:06 <elliott> oerjan: heh
19:51:07 <fizzie> It's just electricity, how dangerous could it be?
19:51:14 <elliott> `addquote <fizzie> It's just electricity, how dangerous could it be?
19:51:16 <HackEgo> 686) <fizzie> It's just electricity, how dangerous could it be?
19:51:18 <elliott> Inspiring words from an inspiring man.
19:51:39 <fizzie> It could be one of those "famous last words" quotations.
19:54:06 <oerjan> "He touched hiiiiiigh voltage" (to the tune of blue velvet)
19:56:24 <Gregor> elliott: Come to think of it, how can your hypothetical new shortener compete with Tweak?
19:56:25 <elliott> http://ai./offshore.jpg
19:56:26 <elliott> Me.
19:56:52 <oerjan> http://i./rule/
19:57:10 <elliott> Gregor:
19:57:12 <elliott> Tweak: http://hopud.tk
19:57:12 <elliott> x.ab: http://x.ab/q9
19:57:17 <elliott> Sure, it's a bubble, but then so are URL shorteners.
19:57:47 * elliott tries to generate a looping tweak.
19:57:50 <Gregor> Fair 'nuff.
19:57:59 <Gregor> elliott: Is it predictable?
19:58:01 <elliott> IT WILL ONLY TAKE ME 999999999 BILLION YEARS
19:58:03 <elliott> Gregor: Nope :P
19:58:08 <elliott> Maybe it's a hash, but...
19:58:10 <Gregor> lol
19:58:15 <elliott> I mean it can't be a pure hash
19:58:18 <elliott> Because people can register .tks :P
19:58:29 <Gregor> GOD Tweak is brilliant.
19:58:52 <elliott> I want to visit Tokelau and tell them what crimes are being committed in their name.
19:59:05 <elliott> Whities: Literally the worst.
19:59:25 <elliott> First they come and take your land, then they give you internet in exchange for your domain then they fucking hand out your fucking domains as fucking shortened URLs.
19:59:27 <oerjan> <elliott> Deprecated: "Please import from Control.Monad.ST.Unsafe instead; This will be removed in the next release"
19:59:37 <oerjan> obviously needed for SafeHaskell
19:59:41 <elliott> Yes.
19:59:45 <elliott> Safe as skull.
19:59:56 <elliott> Why on earth has subpixel rendering regressed in this version of Ubuntu?
20:00:01 <elliott> fizzie: How's the subpixels on the Debian side of camp :P
20:04:32 <oerjan> <elliott> http://hackage.haskell.org/package/vault Hey, I am a pubamalished developamator.
20:04:35 <oerjan> no haddock
20:04:39 -!- augur has quit (Remote host closed the connection).
20:04:44 <elliott> Blame hackage.
20:04:49 <elliott> It's either slow or something went wrong.
20:04:55 <oerjan> maybe it's done in batches
20:04:58 <elliott> Give it a day or two.
20:05:10 <elliott> oerjan: but
20:05:20 <elliott> https://raw.github.com/HeinrichApfelmus/vault/master/src/Data/Vault.hs
20:05:20 <elliott> https://raw.github.com/HeinrichApfelmus/vault/master/src/Data/Vault/ST.hs
20:05:23 <elliott> just ignore the actual code :-)
20:05:28 <elliott> it's very shrot
20:05:29 <elliott> short
20:07:24 <oerjan> elliott: i fail to detect the "persistent" part
20:07:44 <elliott> oerjan: it is the _other_ kind of persistence
20:07:52 <oerjan> hm?
20:07:52 <elliott> http://en.wikipedia.org/wiki/Persistent_data_structure
20:08:08 <elliott> i.e. immutable, based on transforming
20:08:18 <elliott> (with sharing implied)
20:08:28 <elliott> rather than an STArray or whatever
20:09:04 <oerjan> elliott: aha. does this mean you can implement STT in this?
20:09:13 <elliott> oerjan: Yep, I think so.
20:09:20 <elliott> oerjan: see:
20:09:38 <elliott> "Somewhat interestingly, I discovered, hacking on my own version (which all these changes a backported from) before this repository existed, that Vault s is actually isomorphic to ST s ()! Key s a becomes STRef s (Maybe a), and insert looks like insert k x m = m >> writeSTRef k (Just x). lookup is lookup k m = unsafeRunST (m >> readSTRef r), where unsafeRunST :: ST s a -> a (implementable as unsafePerformIO . unsafeSTToIO). Unfortunately, I don't
20:09:38 <elliott> believe this implementation is very efficient; it has to run every STRef operation on every single lookup."
20:09:39 <elliott> https://github.com/HeinrichApfelmus/vault/pull/1
20:09:55 <elliott> so basically yes, you can use Vault as the state of the STRefs
20:10:02 <elliott> which become pre-filled Keys
20:10:20 <elliott> STT is really not problematic at all, just not really efficient
20:12:02 -!- Ngevd has joined.
20:12:11 <elliott> pikhq: I think I might understand enough about @'s memory model to start implementing it; apart from the mammoth task of making the GC work well, there's only one obstacle I can think of.
20:14:06 <pikhq> And that is?
20:14:12 -!- GreaseMonkey has joined.
20:14:31 <elliott> pikhq: Basically, there needs to be a mapping from the abstract virtual address to location on disk.
20:14:37 <elliott> Because when the pointer is dereferenced... you gotta fetch it.
20:14:45 <elliott> It's simply a matter of microoptimising that lookup.
20:14:48 <elliott> Diskwise.
20:15:10 <pikhq> I'm not sure how it's done, but I know this is actually *precisely* what is done with swap.
20:16:06 <pikhq> So, in principle this should be doable with fairly standard techniques.
20:16:54 <elliott> pikhq: It's also basically a standard filesystem...
20:17:09 <elliott> pikhq: Address 0a9df9 --> file /0/a/9/d/f/9
20:17:29 <elliott> Except that the maximum number of files in each directory is fixed and tiny, as are the names of those files.
20:17:34 <elliott> And there's no metadata to store.
20:17:36 <elliott> So it's quite a lot simpler.
20:18:07 <pikhq> So, more or less you'd have a page table on disk.
20:19:10 <elliott> Good point.
20:19:11 <pikhq> Mmkay. Yeah, thinking about it more this is genuinely mundane kernel implementation stuff.
20:19:29 <elliott> Yep... can you tell I don't have much traditional kernel dev experience? :-)
20:19:32 -!- BeholdMyGlory has quit (Remote host closed the connection).
20:19:37 <pikhq> Given that I have more, yes. :P
20:19:52 <elliott> http://en.wikipedia.org/wiki/Extended_Page_Table I don't know what this is, but it looks snazzy.
20:19:53 <pikhq> And my fanciest kernel is only technically one.
20:20:38 <pikhq> Oh, that. It's a scheme to do paging in ring 3.
20:21:37 <elliott> pikhq: I was also thinking that I forgot to neglect something important in my allocator design...
20:21:45 <elliott> pikhq: Namely that every @ object is immutable.
20:21:56 <elliott> So any change of a page won't be /mutating/ an object, it'll be creating a new one.
20:22:08 <elliott> (It might be creating a new one at the exact same location an old one used to be, but still.)
20:22:59 <pikhq> elliott: Well, immutability probably makes your GC a *little* bit easier.
20:23:17 <elliott> pikhq: It also makes it incredibly vital.
20:23:27 <pikhq> Well, yes.
20:23:32 <elliott> GC isn't just "that thing that stops things leaking memory", it's "the thing that lets me run a program for more than two seconds without running out of RAM".
20:25:14 <pikhq> Oh, you can run for more than two seconds without running out of RAM. However, you'll start thrashing like hell, because @ doesn't maintain a RAM/disk dichotomy. :)
20:25:40 <Gregor> It'll take twelve seconds to run out of disk.
20:25:41 -!- Ngevd has quit (Read error: Connection reset by peer).
20:25:55 <pikhq> Gregor: More than that.
20:26:00 <pikhq> Gregor: Significantly more.
20:26:06 <pikhq> Gregor: Disk is *slow*.
20:26:18 <Gregor> pikhq: My disk is 10M
20:26:20 <elliott> I like how @ is designed for a disk that can be written to every five seconds constantly, but also one with SSD-style random access times.
20:26:26 <pikhq> Gregor: 12 seconds, then.
20:26:31 * Gregor nods :P
20:26:34 <elliott> Can we just saw a magnetic disk and an SSD in half and then glue them together?
20:27:28 <pikhq> elliott: Well, if you're never GC'ing, you'll only perform a write to each disk block once...
20:27:41 <pikhq> And once that's done you're done.
20:27:49 <elliott> pikhq: ITT: Not even a vaguely useful model of what @ will do :P
20:28:20 <pikhq> Will if you don't GC. Hope you only ever need a few minutes of compute time!
20:28:25 <pikhq> Well. SSD
20:28:27 <pikhq> 30 seconds.
20:28:33 <elliott> I love how @ becomes much MORE complex by REMOVING mutation.
20:28:40 <elliott> Or rather, making non-mutation the common thing :P
20:29:22 -!- Phantom_Hoover has joined.
20:29:30 <elliott> It is Phantom_Hoover's slammed door's ghost.
20:29:43 <Phantom_Hoover> no
20:29:45 <oerjan> <elliott> ?hoogle (a -> m b) -> a -> m (a,b)
20:29:49 <oerjan> hm.
20:30:07 -!- plycke has joined.
20:30:07 -!- plycke has quit (Excess Flood).
20:30:09 <elliott> ?hoogle arr a b -> arr a (a,b)
20:30:10 <lambdabot> Control.Arrow (&&&) :: Arrow a => a b c -> a b c' -> a b (c, c')
20:30:10 <lambdabot> Data.Graph.Inductive.Query.MaxFlow maxFlowgraph :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node -> gr a (b, b)
20:30:11 <oerjan> that would be so much easier if monads were also arrows. i think.
20:30:13 <elliott> oerjan: What a massive surprise
20:30:17 <pikhq> Incidentally, non-mutable on-disk structure is not as weird as you might think. Many recent filesystems actually COW each block.
20:30:18 <elliott> It's an arrow function on Kleisli
20:30:21 <elliott> I WOULD NEVER HAVE GUESSED
20:30:23 <pikhq> For instance, ZFS and btrfs.
20:30:33 <elliott> pikhq: Yah, I know.
20:30:42 <elliott> pikhq: Sharing is going to be very important to @.
20:30:50 <elliott> pikhq: It's better if you can /avoid/ GCing by simply building deduplicatively.
20:30:57 <elliott> pikhq: As a bonus, you get versioning.
20:30:58 -!- GreaseMonkey has quit (Quit: The Other Game).
20:32:10 <oerjan> :t \f x -> f x >>= (liftM $ (,) x)
20:32:12 <lambdabot> forall a1 (m :: * -> *) a. (Monad m) => (a -> m (m a1)) -> a -> m (a, a1)
20:32:18 <oerjan> oops
20:32:18 <elliott> needs a join
20:32:46 <oerjan> :t \f x -> f x >>= (flip $ (,) x)
20:32:48 <lambdabot> Couldn't match expected type `a -> b'
20:32:48 <lambdabot> against inferred type `(a1, b1)'
20:32:48 <lambdabot> Probable cause: `(,)' is applied to too many arguments
20:32:53 <oerjan> darn
20:33:05 <oerjan> oh hm
20:33:28 <oerjan> :t \f x -> (,) x `liftM` f x
20:33:29 <lambdabot> forall a a1 (m :: * -> *). (Monad m) => (a -> m a1) -> a -> m (a, a1)
20:33:45 <monqy> `liftM`? nice
20:33:47 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: liftM`?: not found
20:33:53 <elliott> way to <$>
20:34:01 <elliott> :t \f x -> (x,) <$> f x
20:34:02 <lambdabot> Illegal tuple section: use -XTupleSections
20:34:08 <elliott> :t \f x -> (,) x <$> f x
20:34:09 <lambdabot> forall a a1 (f :: * -> *). (Functor f) => (a -> f a1) -> a -> f (a, a1)
20:34:09 <oerjan> elliott: i didn't want to mix Functor into the type
20:34:15 <elliott> oerjan: well it should be functor really...
20:34:15 <elliott> ?pl \f x -> (,) x <$> f x
20:34:16 <lambdabot> liftM2 (<$>) (,)
20:34:20 <elliott> ooh
20:34:23 <oerjan> elliott: oh right it is
20:34:32 <elliott> :t liftA2 (<$>) (,)
20:34:34 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:34:39 <elliott> there, now _nobody_ can understand it
20:34:53 <oerjan> at least it got short
20:35:01 <elliott> the lesson to be learnt is that explicit tuple programming is ugly
20:35:05 <elliott> and the whole point of applicative style is to avoid it
20:35:15 <elliott> pay attention, arrows
20:35:31 <oerjan> :t (<$>) (<$>) (,) <*>
20:35:33 <lambdabot> parse error (possibly incorrect indentation)
20:35:40 <oerjan> oops
20:35:41 <elliott> oerjan...
20:35:44 <elliott> that's not code...
20:35:45 <oerjan> :t ((<$>) (<$>) (,) <*>)
20:35:46 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:35:54 <oerjan> WHAT
20:36:03 <elliott> oerjan: wat?
20:36:15 <elliott> it's an obvious transformation of above
20:36:18 <elliott> not sure what surprises you
20:36:27 <elliott> :t ap (fmap fmap (,))
20:36:29 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:36:31 <elliott> quality
20:36:52 <elliott> :t (((<$>) <$> (,)) <*>)
20:36:54 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:36:55 <elliott> oerjan: why the WHAT
20:37:14 <pikhq> Better without spaces.
20:37:19 <pikhq> (((<$>)<$>(,))<*>)
20:37:25 <pikhq> Now *there's* a function to be feared.
20:37:32 <elliott> :t fmap`fmap`(,)`ap`
20:37:33 <lambdabot> parse error (possibly incorrect indentation)
20:37:35 <monqy> :t ap(fmap<$>(,))
20:37:37 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:37:45 -!- augur has joined.
20:38:14 <elliott> :t ap$fmap<$>(,)
20:38:15 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:38:18 <elliott> :t ap$(<$>)<$>(,)
20:38:19 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:38:38 <monqy> anyway why does this use tuples anyway
20:38:42 <monqy> anyway
20:38:49 -!- plycke has joined.
20:38:49 -!- plycke has quit (Excess Flood).
20:38:55 <oerjan> <elliott> oerjan: why the WHAT <-- WHAT DO YOU MEAN IT'S NOT CODE
20:39:14 <elliott> oerjan: heh
20:41:11 <oerjan> :t ap.fmap fmap
20:41:13 <lambdabot> forall (m :: * -> *) a b (f :: * -> *). (Monad m, Functor f, Functor m) => m (a -> b) -> m (f a) -> m (f b)
20:42:08 <oerjan> hm that liftA2 is in the (x ->) monad isn't it
20:42:40 <elliott> yes
20:42:47 -!- plycke has joined.
20:42:47 -!- plycke has quit (Excess Flood).
20:42:51 <elliott> the (a ->) applicative, more precisely
20:42:57 <elliott> oh, did we just avoid spmabots
20:42:58 <elliott> ok
20:43:25 <oerjan> :t (((<<$>)Prelude..(,))<*>)
20:43:26 <lambdabot> Not in scope: `<<$>'
20:43:31 <oerjan> :t (((<$>)Prelude..(,))<*>)
20:43:32 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:43:46 <elliott> :t ap$(.).(,)
20:43:47 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:43:53 <elliott> oerjan: :')
20:44:13 <elliott> :t ((.).(,)<*>)
20:44:14 <lambdabot> forall a (f :: * -> *) a1. (Functor f) => (a1 -> f a) -> a1 -> f (a1, a)
20:44:20 <elliott> it shall forever be known as the "breasts and kirby" operator...
20:44:43 -!- boily has quit (Ping timeout: 240 seconds).
20:55:25 <oerjan> `addquote <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life.
20:55:25 <fungot> oerjan: sad things like jews in germany in the extra clauses which require blocks, you need to install
20:55:26 <HackEgo> 687) <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord
20:55:32 <oerjan> darn
20:55:41 <elliott> oh no :(
20:55:44 <oerjan> `delquote 687
20:55:45 <HackEgo> ​*poof*
20:55:50 <elliott> add a log thing
20:55:53 <elliott> like
20:56:06 <elliott> <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of [date time]
20:56:07 <fungot> elliott: er... o?)) for instance, the concept of dense death, not dense enough death resembles a ca engine ran out of humour last night.
20:56:09 <elliott> or something
20:56:11 <elliott> i dont know
20:56:12 <elliott> it must be memorised
20:57:37 <oerjan> wait why _did_ HackEgo cut that, it's reply isn't actually longer
20:57:46 <oerjan> *its
20:57:59 <oerjan> `addquote <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life.
20:57:59 <fungot> oerjan: et tu, brute? ( it has gambit 3; i just haven't seen anything similar since stopped saying " leapt") ( url-encode " foo/ bar/ y/g and
20:58:00 <HackEgo> 687) <fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord
20:58:19 <oerjan> `run tail -1 quotes
20:58:20 <HackEgo> ​<fungot> sadhu: it's been said that boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus
20:58:42 <monqy> hackego....
20:58:49 <oerjan> `run tail -1 quotes | sed 's/^................................//'
20:58:50 <HackEgo> hat boole is the crowning jewel perched precariously upon the perfect peak of programmer prowess, casting its limitless limpid light over the loathesome lands of those who scuff and wallow in the dreary dust of digital depravity and unbounded wilful ignorance of the testament of our lord jesus christ into your life.
20:59:07 <oerjan> ok it _is_ all there in the database.
21:00:00 <elliott> oerjan: yes but come on.....
21:00:06 <elliott> btw you could have used .{n}
21:00:08 <oerjan> Gregor: WE THINK HACKEGO CUTS A LITTLE CLOSE
21:00:43 -!- boily has joined.
21:00:57 <oerjan> elliott: somehow i find {n} hard to recall since i rarely use it
21:01:40 <Phantom_Hoover> ^style
21:01:40 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube
21:02:21 <monqy> i wonder where it found the whole jewel perched percariously upon the perfect peak of programmer prowess thing
21:02:34 <monqy> and what the context was
21:02:34 <elliott> it made it up with its imagination.......
21:02:38 <monqy> oh........
21:02:41 <monqy> good imagination
21:02:42 <elliott> it needs a dramatic reading that
21:02:58 <oerjan> elliott: i just think that as long as it is in the database, HackEgo can be fixed.
21:04:15 <elliott> oerjan: unless it is really too long.......
21:04:55 <oerjan> elliott: but it isn't, HackEgo's quote reply starts to the left of my `addquote
21:05:05 <oerjan> i mean, the general adjustment
21:05:24 <oerjan> hm well
21:06:01 <oerjan> and my *!*@* string is also longer
21:08:23 <oerjan> so there's no reason why HackEgo needs to cut it off when i don't.
21:09:42 <elliott> oerjan: note that you need to account for like three bytes of difference due to server crap
21:09:50 <elliott> and HackEgo is longer than oerjan
21:10:04 <elliott> although your hostname should balance that out
21:10:53 <oerjan> elliott: the amount that HackEgo is longer is balanced out by 687) being shorter than `addquote
21:11:07 <elliott> your MOM is shorter than addquote or something
21:11:13 <elliott> oh uh
21:11:17 <elliott> i forgot you're on my mom joke blacklist
21:11:18 <elliott> sorry
21:11:25 -!- calamari has joined.
21:16:55 <oerjan> google's occasional messing up of IE's history is getting eerie - i am sure it was at least _weeks_ ago i did that google search.
21:17:27 <elliott> I BET DDG DOESN'T DO THAT</troll><troll>
21:18:08 <oerjan> well, istr the iwc forum also does, so it's probably not strictly a google bug.
21:18:46 <oerjan> but it's the first time it came up with a page that i clearly cannot recall from the same IE session.
21:19:25 <monqy> is it an ie bug
21:20:20 <oerjan> presumably.
21:20:51 <elliott> oerjan: http://hackage.haskell.org/package/vault has docs now
21:21:21 <oerjan> elliott: well i already read the files you linked :P
21:21:37 <oerjan> but good, good
21:22:12 <elliott> oerjan: hope you enjoyed the implementation :DDD
21:22:35 <oerjan> *browsed
21:22:44 <elliott> dude they're like forty lines :P
21:22:56 <oerjan> TL;DR
21:23:27 -!- tiffany has joined.
21:24:24 -!- elliott has quit (Quit: Leaving).
21:24:45 <Phantom_Hoover> Conclusion: elliott == tiffany.
21:24:52 <tiffany> o~o
21:25:10 <monqy> bizarro world elliott
21:25:27 <monqy> can only make ridiculous faces
21:25:29 <Phantom_Hoover> Bizarro world elliott is an emoticon bot.
21:26:26 <Gregor> I thought we concluded that tiffany was a person with bot-like tendencies.
21:28:08 <Phantom_Hoover> Swap 'bot' and 'person', and then yes.
21:39:09 <oerjan> *chirp*
21:40:53 -!- derdon has quit (Remote host closed the connection).
21:41:41 <Phantom_Hoover> oerjan, meanwhile, has begun his transformation into a mooshroom.
21:41:47 <Phantom_Hoover> I mean a chipmunk.
21:41:52 <Phantom_Hoover> I don't even.
21:43:53 <olsner> things that go *chirp*: mushrooms, chipmunks
21:44:35 <Phantom_Hoover> Yes.
21:44:58 <Phantom_Hoover> Mushrooms are noted for their chirps.
21:45:29 <fizzie> And signal processing folks.
21:48:02 <oerjan> and here i thought it was the sound of crickets.
21:53:55 -!- pumpkin has joined.
21:54:03 <monqy> the sound of tumbleweeds, no?
21:54:55 * oerjan notes reddit's r/particlephysics is not very active.
21:55:17 <oerjan> only two posts about the neutrinos
21:56:07 <fizzie> All the participants have tragically been annihilated in redditor-antiredditor collisions.
21:56:10 -!- copumpkin has quit (Ping timeout: 260 seconds).
21:56:20 -!- pumpkin has changed nick to copumpkin.
21:56:22 <oerjan> fizzie: sounds plausible.
21:56:47 <fizzie> It's an occupational hazard for a particle physicist.
21:56:59 <oerjan> copumpkin might meet a similar destiny if his nicks ever touch
21:57:19 <copumpkin> :O
21:57:32 <pikhq> I don't think that there's anything about impacts between objects and coöbjects.
21:57:58 <oerjan> i'm sure co- includes all forms of duality.
21:58:37 <oerjan> when you combine vectors and covectors the wrong way, all you end up with is a single number.
21:59:49 <oerjan> and if you do it the other way, you suddenly find yourself in the matrix.
22:00:31 <pikhq> Seems to me both numbers and matrices are members of vector spaces, and thus vectors. So I'm not entirely sure why that's relevant. :P
22:01:37 <Phantom_Hoover> `quote
22:01:38 <HackEgo> 586) <Phantom_Hoover> I gave her the Noblesse Oblige rooms. <Phantom_Hoover> She was happy with them even when they were behind 2 locked doors and a floodgate and full of water.
22:01:55 <Phantom_Hoover> Hiiiiiiiiiiiiiiiiiiiiiiird
22:02:14 <quintopia> 2
22:02:49 <oerjan> pikhq: but numbers are one-dimensional. he'd have most of his personality wiped out!
22:03:36 <pikhq> That would be quite sad, wouldn't it?
22:03:59 <oerjan> Phantom_Hoover: i take it this dorf lady was sort of crazy and needed to be kept away from people.
22:04:38 <fizzie> You'll be... at the OUTER LIM^H^H^HPRODUCTS.
22:04:39 <oerjan> or wait, do you mean she couldn't actually get to her rooms
22:05:50 <oerjan> Phantom_Hoover: also didn't you ground yourself preemptively just a while ago?
22:06:19 <Phantom_Hoover> <oerjan> Phantom_Hoover: i take it this dorf lady was sort of crazy and needed to be kept away from people.
22:06:21 <Phantom_Hoover> Actually no.
22:06:50 <Phantom_Hoover> I built the rooms to drown annoying nobles and I'd just used them on the mayor.
22:06:59 <oerjan> ah.
22:07:03 <Phantom_Hoover> And had forgotten to fit a drain.
22:07:24 <oerjan> i take it her stay was somewhat short.
22:10:37 -!- Phantom__Hoover has joined.
22:10:57 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
22:11:04 <Phantom__Hoover> oerjan, actually, it wasn't, since all her demands were for adamantine stuff so they were fulfilled just by kitting out the military.
22:12:28 <oerjan> ok
22:13:11 <Phantom__Hoover> I think she died when I handed the fort over to elliott and he cocked it all up, though.
22:13:40 <oerjan> shocking!
22:14:38 -!- calamari has quit (Quit: Leaving).
22:24:05 -!- CakeProphet has joined.
22:28:13 -!- sllide has quit (Ping timeout: 248 seconds).
22:30:59 * Phantom__Hoover → sleep
22:31:00 -!- Phantom__Hoover has quit (Quit: Leaving).
22:54:30 -!- calamari has joined.
22:57:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:58:34 -!- pikhq has quit (Remote host closed the connection).
22:58:52 -!- pikhq has joined.
23:01:23 -!- Patashu has joined.
23:08:29 -!- augur has quit (Remote host closed the connection).
23:10:39 -!- CakeProphet has quit (Ping timeout: 252 seconds).
23:26:09 -!- copumpkin has joined.
23:28:50 -!- calamari has quit (Ping timeout: 252 seconds).
23:36:29 -!- Jafet has quit (Quit: Leaving.).
23:59:43 -!- CakeProphet has joined.
23:59:51 -!- CakeProphet has quit (Changing host).
23:59:51 -!- CakeProphet has joined.
←2011-09-25 2011-09-26 2011-09-27→ ↑2011 ↑all