00:02:59 -!- hagb4rd has quit (Ping timeout: 246 seconds). 00:03:46 $$dest = sprintf($format, $a, $b, ...); would emulate the C behavior. Assuming $dest is a ref 00:06:34 people use refs? 00:06:51 yep 00:07:03 Probably it would be useful sometimes, isn't it? 00:07:12 somewhat often, actually. 00:07:23 mainly because of some unusual things Perl does with non-scalar values. 00:07:43 scalar refs are less common than list refs, code refs, and hash refs. 00:08:40 I realized I need to add three new input states into TeXnicard and try to decide what letter. The three new states I think I need are: font loading state, character encoding state, image manipulation state. 00:09:32 for example, @list = ($a, $1, @otherlist) concatenates @otherlist, because lists/hash can only contain scalars. So the best way to embed an array into another array in Perl is to have the inner array as a reference. 00:10:11 same thing with argument passing, since the arguments are treated as one array. 00:14:40 Oh, right. 00:14:48 This is because Perl sucks. 00:15:02 Perl sucks? 00:15:05 But it's very golfable. 00:16:32 I would actually make a case for Perl as an example of a mostly well-designed language. 00:17:17 I would make a case for copious amounts of cocaine for everyone, too. 00:17:51 http://www.netsurf-browser.org/ 00:17:56 I'm... Intrigued. 00:18:17 good name there 00:18:48 pikhq: It's shitty with JS, IIRC. 00:19:35 so what does it do 00:19:37 elliott: I run with Noscript on. 00:19:44 monqy: browses the web 00:20:13 does it have any features besides that 00:20:16 I see a back button 00:20:17 that's something 00:20:28 It seems to be a minimal, standards-compliant web browser. 00:20:32 it's the custom rendering engine that's interesting 00:20:59 I can't live without a ridiculous amount of open tabs 00:22:14 I've got this kinda odd issue... 00:22:23 I want my web browser to not suck. 00:24:00 I used to have that issue too 00:24:08 drowned self in tabs 00:24:09 all better now 00:24:57 I use Chrome. I don't really have any problems with it. 00:25:13 chrome omits the http:// 00:25:16 drives me mad to no end 00:25:25 probably other stuff too 00:25:28 monqy: that drives you mad? 00:25:34 I have problems 00:25:37 i don't look at my url bar and go OH NO WHERE'S THE HTTP:// THAT I ALREADY KNOW IS "REALLY" THERE 00:25:40 I agree that's kind of strange. 00:25:46 it shows https:// 00:25:51 I've got a handful of issues with Chrome. 00:25:52 yes, because https is actually noteworthy 00:25:53 ftp:// too 00:26:06 Honestly, Midori would be my ideal browser if it didn't crash on me. 00:26:19 Hmm. Not tried it out recently. Let's see if it's more stable now. 00:26:21 one thing Chrome never does is crash. 00:26:34 The tabs crash sometimes. Like if you run out of memory. 00:26:36 chrome's searchbar thing can be annoying when it guesses what I want incorrectly 00:26:49 rather 00:26:49 so type out what you mean yourself :P 00:26:52 One think Midori does is have a nice, minimal UI. 00:27:09 elliott: it's most awful when I do that and it still does it wrong 00:27:16 monqy: press backspace 00:27:18 that's rare though 00:27:19 -!- FireFly has quit (Quit: swatted to death). 00:27:20 that sucks i agree 00:27:25 elliott: that's what it means. Sometimes it'll autocomplete something even thought you typed out the whole thing. You have to hit backspace to get what you originally typed. somewhat annoying 00:27:34 oh... yes. 00:27:52 even without autocomplete 00:28:08 even without autocomplete? wat 00:28:15 sometimes it thinks I'm searching when I enter what I meant to be an address 00:28:17 and vice-versa 00:28:29 usually the only time I get tab crashes in Chrome is when the Flash plugin crashes. 00:29:06 * elliott wonders if the mactel-support packages are available in Debian :/ 00:29:13 https://launchpad.net/~mactel-support/+archive/ppa 00:29:17 and then it's like "oh no, *ctrl+r" 00:29:20 e.g. xf86-input-multitouch 00:29:50 There is no web browser that does not suck. 00:30:15 ...honestly I think there are several web browsers that don't suck. You guys are just weird or picky about strange things. 00:30:34 zzo38, does that include Vonkeror? 00:30:37 you are unfamiliar with the proper definition of "doesn't suck" 00:30:44 is there any way to get chrome to stop autocompleting to things to which I don't want it to autocomplete 00:30:45 it is a far more stringent requirement than you appear to realise. 00:30:49 monqy: yes, install an ai 00:30:55 Sgeo: Yes. Vonkeror just sucks somewhat less. 00:30:56 CakeProphet: Name to me a web browser with a UI that doesn't make me want to stab things. 00:30:57 I mean even manually 00:31:03 Aside from Midori. 00:31:10 autocomplete-blacklisting addresses 00:31:18 pikhq: ..I can't. That doesn't really disprove my point that you guys are weird, though. :P 00:31:34 CakeProphet: Okay, sorry, let me specify. 00:31:50 One with a UI that does not act non-natively. 00:32:12 but what does native mean 00:32:25 pikhq: You get to find me an xf86-input-multitouch package for Debian. 00:32:40 oh wait it's in Debian 00:32:40 In Windows it is obvious, in UNIX it is not clear. 00:32:41 heh 00:32:49 okay them what about... 00:32:54 applesmc-dkms???? 00:32:57 monqy: Has widgets that look and act like the widgets in *every other damned program*. 00:33:05 oh 00:33:13 Hmm, I guess the Ubuntu package for that would work. 00:33:16 As would mbp-nvidia-bl-dkms. 00:33:17 but I hate widgets in every other damned program 00:33:21 ...Right? Say right. Say yes. 00:33:41 http://webcache.googleusercontent.com/search?q=cache:kHWnNbJWGWkJ:www.aeai.dk/blog/%3Fp%3D209+applesmc-dkms+debian&hl=en&gl=uk&strip=1 00:33:42 too much mouse movement not enough keyboard 00:33:42 Oh good. 00:34:12 There's so many *simple, simple* things that, say, Firefox screws up. 00:34:17 There are different widgets sets, I think Xaw is not too bad except for lack of keyboard access, I think this is a good reason to use mouse warping, not any of the other reasons that are commonly used, the common use of mouse pointer moving automatically is stupid things 00:34:28 pikhq: Like, what kind of thing? 00:34:38 For instance, unlike every other tab bar here, Firefox's tabs do not respond to the scroll wheel. 00:34:51 there's an extension for that :P 00:34:53 there's an extension for that. :3 00:34:53 ... 00:35:26 What operating system are you using? 00:35:40 And about half of the widgets are quite obviously just custom-drawn by the theme engine, and are quite jarring next to grey-mist. 00:35:52 zzo38: Debian wheezy, XFCE4. 00:35:58 you wheeze all the time bro 00:36:03 downright wheeze factor 00:36:03 y 00:36:07 whactory 00:36:14 And XFCE4 tab bars use scroll wheel? 00:36:19 hey pikhq should i install testing direct or install stable first and then upgrade before installing x 00:36:25 zzo38: gtk tab bars do 00:36:27 zzo38: That's more a GTK behavior. 00:36:27 xfce uses gtk 00:36:36 `tetris 00:36:37 No output. 00:36:50 elliott: The typical recommendation is stable->testing, but I usually just install testing directly. 00:37:02 Well, but I think Mozilla is not based on GTK as far as I know? Therefore it doesn't. 00:37:09 pikhq: but last i installed testing in virtualbox it did not boot : ( 00:37:23 Okay, then do stable->testing. 00:37:33 zzo38: Mozilla on X11 platforms uses GTK. 00:37:49 pikhq: BUT I AM SCARED 00:37:52 MAYBE IT WAS JUST A VIRTUALBOX ISSUE 00:38:32 elliott: stable->testing not working would be taken about as seriously as testing going out and raping every Debian developer's cat. 00:38:36 pikhq: Then I think it ought to make scroll wheel work with tab bars! I agree in that case. 00:39:52 And as it turns out I also have another question about the Wayland system. Can you use SDL with Wayland windowing? 00:40:22 if sdl has or gets a wayland backend, then yes. 00:40:40 pikhq: MAYBE IT WAS JUST A VIRTUALBOX ISSUE ;_; 00:41:26 elliott: Yeah, but stable->testing should "just work". 00:41:38 zzo38: No reason why you couldn't. 00:41:45 This user likes to use redundant userboxes that are redundant. This user likes to use redundant userboxes that are redundant. This user likes to use redundant sentences that are redundant. 00:41:48 zzo38: Indeed, it'd probably work better than on X... 00:42:05 pikhq: But that's boooooooooooooooooring. 00:42:15 As all its code to get its own framebuffer to Wayland would consist of telling Wayland to blit. 00:43:37 pikhq: Then I suppose it would be good for that things. But it also becomes necessary to make SDL to work with Wayland, if it doesn't already have that 00:43:50 pikhq: SHOULD I INSTALL DEBIAN NOW OR LATER >SO >MANY >DILEMMAS 00:43:57 also have xfwm fixed the bug yet 00:44:51 I have written a program using SDL (the BytePusher program) and modified a program using SDL (MegaZeux), so I know a few things about SDL. 00:44:56 -!- BeholdMyGlory has quit (Remote host closed the connection). 00:45:09 But I think some people don't like SDL 00:45:36 -!- augur has joined. 00:46:26 Is there any portable kind of self modifying code in C programming? 00:46:41 No. 00:46:59 zzo38, actually. 00:47:04 Link to a C compiler that supports your target. 00:47:07 Make the entire program a quine. 00:47:11 Modify it. 00:48:13 I suppose that will work, but it is a hardly useful way to make it, since the purpose for making self modifying code is so that you don't have to do that kind of things 00:50:27 What letters should I use for the new needed input states in TeXnicard? The obviously ones are already taken so I need to select nonobviously ones instead; 00:57:05 -!- iconmaster has quit (Quit: Pardon me, but I have to go die in NetHack again.). 00:58:27 I don't want to go die in NetHack again. I want to go dye in NneettHhaacckk again. 01:05:47 How many things will go wrong if Planck's constant is increased by a factor of four? 01:08:21 7. 01:09:26 Wbich seven things? 01:10:07 i don't know 01:11:59 s/Wbich/Which/ Now do you know? 01:18:11 why are they doing terrible things to regex in Perl 6... 01:20:05 they're improving it massively. 01:21:11 CakeProphet: Like what kind of things you mean? 01:21:31 -!- Patashu has joined. 01:22:41 -!- oerjan has joined. 01:25:47 Gaaah, midori crashed. 01:26:15 GAHAHAHAHA WHY DOES MY BATTERY NOT LIKE TO CHARGE WHEN THE COMPUTER'S PLUGGED IN 01:26:16 hugs chrome 01:26:16 Back to Firefox, and can I pleasepleaseplease beat the Firefox devs over the head? 01:26:46 pikhq: If you can find them, then try. Otherwise, please don't. 01:26:57 BROWSER WARS 01:26:58 *pew pew pew* 01:28:20 APPLICATIONS SHOULD NOT HAVE THEMING ENGINES DAMN YOU PEOPLE 01:28:54 * pikhq wonders if oerjan still has that script used to generate stdcons.bfm... 01:28:59 yes i do 01:29:08 well, there's actually some good changes to the regex. 01:29:15 oerjan: answer myyyyyyyyy question 01:30:55 with the minor caveat that the part which turns the wiki page into a large haskell constant was probably done by hand with substitutions in vim, although the format should be clear from the file with the old version 01:35:13 elliott: what question 01:35:35 And now I'm trying out Epiphany (GNOME's browser) 01:35:38 oerjan: grep /geom/ 01:35:42 So far, I am pleasantly surprised. 01:35:53 ok another minor caveat is that the script doesn't actually have a main function, so it may not be entirely clear how to run the functions 01:36:21 Phantom_Hoover: Invent me a geometry where I can have the curvature of the Earth because it's pretty, but still have an infinite world in every dimension. 01:36:41 this? i'm not sure if that is possible, as a sphere is simply connected. 01:37:05 polar co-ordinates have infinite radius and finite angle 01:38:33 um that's just an infinite world if you go into _space_ 01:38:40 which we essentially have already 01:38:56 oh, -every- dimension 01:39:03 I don't think that's possible then 01:39:38 we can do a torus thing though 01:39:49 ... Except it seems to fetch stuff slowly? 01:39:51 Strange. 01:39:52 with varying curvature 01:40:27 what about every non-vertical dimension :P 01:40:40 actually that might have trouble being infinite upwards from the inside ring 01:40:48 i.e. sphere that is a bunch of stacked planes 01:41:07 elliott: O_o 01:41:38 what. 01:41:46 that's minecraft's world :) 01:41:57 minecraft is a sphere? 01:41:59 except for the sphere part, 01:42:06 but that's your job 01:42:15 @_@ 01:42:21 My battery charging light is BLINKING 01:44:46 elliott: the part about simple connectivity is important, it means there is no way to duplicate points of a sphere such that neigborhoods look locally like the original sphere and the whole thing is connected 01:45:04 pah 01:45:31 i can always just make it geometrically incoherent, you know 01:45:40 while a torus is _not_, so you can duplicate points so going around the circles doesn't return 01:46:11 elliott: well if you drop the poles, you have cylinder which works with east-west duplication 01:46:38 -!- wareya_ has changed nick to wareya. 01:47:18 oh there is also the projective plane, in which you _identify_ antipodes on the sphere to get _less_ points 01:47:23 -!- Sgeo has quit (Ping timeout: 240 seconds). 01:47:40 (i.e. the sphere is a twofold cover of the projective plane) 01:48:32 and i think the klein bottle may work similarly for the torus 01:48:40 klein bottle world 01:48:42 great 01:49:18 elliott: plural quantification! 01:49:38 although if you can only look around locally (which is probably essential for this, then the main weirdness would be that after a world circumnavigation you'd return as your mirror image :D 01:49:44 *this) 01:50:03 oerjan: can't circumnavigate an infinite world :P 01:50:11 but yeah i see 01:50:30 elliott: um these are twofold covers, and actually _smaller_ than the sphere and torus in a sense 01:50:42 right 01:50:53 -!- Sgeo has joined. 01:51:41 -!- zzo38 has quit (Quit: MAYBE CARRIER). 01:53:05 for the klein bottle it would also depend on which direction you circumnavigated in, one direction would not mirror 01:54:37 cmon guys 01:54:38 plural logic 01:54:42 no russell's paradox 01:54:42 although geometric incoherence might be nice, all the mathematicians in the world would scratch their heads and wonder why it didn't seem to be finite when it was locally spherical... 01:58:08 "Shuttles are a low cost alternative to traveling." -- Star of America (an airport shuttle line) 01:58:16 Apparently by using a shuttle, I am avoiding ... traveling. 01:58:38 * CakeProphet has been reading the Perl 6 spec. 01:58:40 it's so... weird. 01:58:46 is it good weird or bad weird 01:58:56 I'm not entirely sure yet. A lot of it seems good. 01:59:00 hilarious weird or depressing weird 01:59:05 neither of those. 01:59:29 it's going to be nowhere near as good at golfing. 01:59:31 perl 6 logo is the worst 01:59:39 ..yeah it's pretty stupid. 02:00:07 but it's understandable, and is a pretty good reflection of the aesthetics of the language itself 02:00:29 I think now instead of doing <> you do something like $*IN.lines or something? 02:00:38 wtf 02:00:58 yeah they've added more OO, but it's apparently optional. 02:01:02 very readable 02:01:17 CakeProphet: removing one of the most useful features? 02:01:45 i mean i've probably used <> in every perl program i've written 02:01:54 I use it quite often, yes. 02:02:00 I only use perl for the <> 02:02:05 hahaha. 02:02:27 I only use visual basic for the <> 02:02:40 I only use Python for the <>, and everyone hates me. 02:02:47 I get yelled at in #python 02:02:53 XD 02:03:03 haha, i keep forgetting python has it 02:03:17 it might even be gone now. 02:03:41 lament: wait that wasn't a joke (entirely)? 02:03:57 waht 02:04:15 *CakeProphet: too 02:04:23 but hey, you can give blocks parameters now. it looks weird as hell. my $block = -> $x {print $x;} 02:05:24 that's just lambda expressions, i guess 02:05:38 yes 02:05:59 but then there's also: for @list -> $x,$y,$z { ... } 02:06:14 and for @list <-> $x,$y,$z { ... } 02:06:18 perl is the worst 02:06:34 the <-> meaning if you modify the variables then you modify the array in-place. 02:08:13 oh and hey, you can define prefix, postfix, infix, and circumfix operators. 02:08:16 does that take a list of 3-tuples, or a list which is divided into chunks of 3 ? 02:08:23 latter 02:08:53 circumfix? 02:09:00 <<<>>> 02:09:02 because the former could be seen as just a for with higher order arguments 02:09:27 (heck haskell has forM which does that) 02:11:07 hm i guess in a language where you can usefully check how many arguments a function takes, the latter could be defined too 02:11:07 Perl doesn't really have tuples. So instead of passing around a "list of tuples" you'd just pass around lists that will later be broken up into n chunks. 02:11:20 aha 02:11:28 @#_ :) 02:11:28 Maybe you meant: . ? @ bf do ft id pl rc v wn 02:11:42 er actually $#_ 02:11:43 what? 02:11:53 ...in Perl 5, is the your number of arguments. 02:12:20 CakeProphet: um in this case you need the _caller_ to know the function's number of arguments 02:12:27 oh 02:12:38 if you wanted for to be able to be defined 02:13:10 anyways, be back later. Must party. 02:13:32 communist! 02:13:51 but yeah, Perl 6 is ridiculously syntax-heavy. More so than Perl 5. 02:14:10 perl sounds like the big tent approach to programming 02:14:58 it's actually the retarded monkey approach to programming 02:15:16 lmao 02:15:46 perl 6, the language that broke the camel's back 02:15:55 heh 02:18:12 -!- CakeProphet has quit (Ping timeout: 240 seconds). 02:18:12 http://hbfs.files.wordpress.com/2009/11/perl6book-parody.jpg 02:18:46 lol 02:24:29 Why am I so scared of writing Javascript code? 02:24:38 Just because I'm still only passingly familiar with it? 02:24:59 because javascript code reminds you of moths 02:28:39 -!- SingingBoyo has joined. 02:29:08 * oerjan readies the earplugs 02:45:43 -!- augur has quit (Remote host closed the connection). 02:48:13 -!- augur has joined. 02:49:41 My phone is pretty epically borked. :/ 02:50:26 The *bootloader*, inexplicably, won't work unless I handhold it. 02:50:41 *wince* 02:52:12 For reasons unbeknowest to me, it will not boot unless I actually log in via the hardware debugging console and tell it to load Linux. 02:52:22 It boots *perfectly* fine after that, however. 03:02:14 pikhq: What phone? 03:02:35 it's going to be nowhere near as good at golfing. 03:02:51 Eh, it has lots of higher-order features and new operators to counteract some very slightly heavier syntax elsewhere. 03:02:55 elliott: Palm Pixi. 03:03:21 pikhq: That's what you get for being a WebOS phone. That's what you get for buying the cheaper WebOS phone. 03:03:39 I "bought" it for $0.00. 03:03:42 Seriously, webOS phones are the worst abomination ever to hit the market. :p 03:03:46 pikhq: Money's worth :P 03:04:08 *Yeeaaaah*, I get the impression. 03:04:37 Hmm. For the *immediate* future, I suppose I can manually boot it. 03:05:09 And when calling AT&T about the warranty, just neglect to mention that it is technically possible to boot it. 03:05:34 Palm got bought out by HP which is a great match because HP specialises in selling products nobody really wants to buy. 03:07:36 If anyone can figure out what this does, then you[re a genius. Sort of a funge, but... I wrote my own interpreter, so I can do some interesting things. http://pastebin.com/x0b14EXS 03:08:29 SingingBoyo: Um, just a guess, but HQ9+? 03:08:37 Befunge-93 right? 03:08:43 Not -98? 03:08:53 I assume [] and ()-enclosed things are some language extension. 03:09:01 pikhq: No 99 bottles. 03:09:03 In some ways. I added procedures to my interpreter. which are those brackets, yes 03:09:08 Oh, dur. 03:09:11 Not procedures, instructions. 03:09:17 Clearly, I suck! 03:09:24 And what you've really done is make a variant of the language with only one interpreter :P 03:09:43 I guess (cycle) and (End) are some kind of loop. Or, wait, no, you seem to define it. 03:10:02 Does [] define and () use somehow? 03:10:14 yes 03:11:17 Does it print out hello world and distort it each time? 03:12:16 not quite. Though that could be fun to do too... anyway, your close, but there's no distortion, it just prints multiple times. 03:13:00 Ah. 03:14:46 yeah, in the end it's just 5 Hello World! messages, each followed by a newline, and the a Bye! with its own newline 03:14:57 :) 03:15:34 I'm going to try that distortion thing. this should be interesting... 03:23:33 undefined :: (Sub (I Z) (I Z) r) => r 03:23:34 :: (SubHelperThatIsRealHelperHelper b (O Z) r, Equals Z b1 b) => r 03:23:38 pikhq: haskell's type system sure is fun to program in 03:24:55 wtf, swapping the arguments fixes it 03:25:25 oh 03:25:26 DUH 03:25:59 ok now i just need to rename those later 03:27:27 *Main> :t undefined :: (DivLoop T5 T5 qt rm) => (qt,rm) 03:27:27 undefined :: (DivLoop T5 T5 qt rm) => (qt,rm) :: (I Z, Z) 03:27:29 YESSSSSSSSSSS 03:27:40 don't mind me SingingBoyo, i'm just writing programs in the haskell type system. 03:28:59 oh good, i still have bugs 03:30:23 lol 03:31:37 I'm making no progress... I feel like I need to use some sort of array-like storage, which is a pain in funges... 03:33:32 RealSubHelperHelper is broken :( 03:33:44 oh, duh 03:33:56 undefined :: (DivLoop T100 T5 qt rm) => (qt,rm) 03:33:56 :: (O (O (I (O (I Z)))), Z) 03:33:57 woot 03:34:00 :) 03:34:03 divmod works 03:37:32 -!- azaq23 has quit (Ping timeout: 246 seconds). 03:40:12 *sigh* 03:40:30 This phone was shitty as hell. 03:41:00 -!- azaq23 has joined. 03:41:10 All these years and the iPhone is still the only phone that is actually tolerable to use, despite being run with utterly reprehensible policies. 03:41:20 Even Android falls down on the simplest things. 03:41:23 #firstworldproblems 03:41:24 It's ridiuclous. 03:41:31 Patashu: Shaddap :p 03:41:43 Children starving in Africa doesn't negate all other woes, even really minor ones like these. 03:41:43 Android at least seems to be in the ballpark. 03:41:56 In line to get seating, perhaps, but hey. 03:42:20 WebOS, on the other hand, seems to be struggling to figure out where its shoes go, and will not make it to the ballpark at all. 03:43:30 RealSubHelper Nothing (Just r'), 03:43:33 um no why are you wanting that...... 03:43:50 anyways, this seems to actually be spontaneous *hardware* failure. 03:44:10 Capitalise that A aaaaaaaaaaaaaaaah 03:45:28 I seem to detect Elliott freaking out. 03:45:34 oerjan: AOJKDSNFDSJLKGFIOGKDHKDKFHJF 03:45:36 DFKJHDFLGVDJLGKHFDBKGHLFGGFH 03:58:16 I now understand why high-level languages were created... 03:58:42 SingingBoyo: So they can have primitive yet Turing-complete type systems? 03:58:43 Yes, I agree. 03:58:59 lol 04:02:45 WHY IS THIS NOT WORKING SUBTRACTION WORKS PERFECTLY DIVISION WORKS PERFECTLY 04:02:49 What do you have against me computer ;_; 04:04:24 it thinks you are meddling with types Man Was Not Meant to Know 04:06:26 do you have a paste? 04:06:51 no, it's way too hideously complex and long-winded at this point for me to not be horribly embarrassed by it, i honestly have a SubHelperThatIsRealHelperHelper typeclass 04:06:56 but maybe if i can't solve this i'll change my mind :P 04:07:29 the helper naming scheme does sound to have got out of hand 04:07:31 (RealSubHelper/Helper was taken, so I used SubHelperThatIsReal/SubHelperThatIsRealHelper/SubHelperThatIsRealHelperHelper) 04:07:50 oerjan: well every "case (f ..., g ..., ...) of" needs one, so yeah 04:10:12 oerjan: ive figured it out... 04:10:15 the computer wants me to cry... 04:10:19 ah 04:10:43 /cry 04:10:51 might just sleep on this one 04:13:36 oh my... I have to go back to printer every character my interpreter sees 04:13:39 heh 04:24:13 oerjan: im gonna put this on my resume 04:24:19 top haskell typeclass candidate erry time 04:24:50 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 04:24:59 rip patashu killed by haskell type system 04:25:05 will be buried in mass hindley-milner grave 04:25:30 haskell wanted by ICC 04:29:06 so its half past five 04:29:07 oerjan 04:29:09 it would be 04:29:16 remarkably sensible for me to go to bed and sleep on this problem right now 04:29:28 please give me a way to make it a totally irrational and stupid decision, so that i can do it 04:29:45 lol 04:29:58 SingingBoyo: i have decided this is how my brain works with regard to sleeping 04:30:05 it maps out all the possibilities, weighs up all the pros and cons 04:30:07 and picks the stupidest option 04:30:10 nice 04:30:32 -!- variable has quit (Quit: /dev/io failed). 04:30:39 I'm still young enough that it figures that staying awake until everything shuts down is a good thing. 04:31:41 yeah but it takes me like twenty hours to shut down, and the shutting down manifests as completely breaking and sleeping for like sixteen hours 04:31:45 -!- oerjan has quit (Remote host closed the connection). 04:31:55 -!- oerjan has joined. 04:32:32 oerjan 04:32:32 it would be 04:32:32 remarkably sensible for me to go to bed and sleep on this problem right now 04:32:32 please give me a way to make it a totally irrational and stupid decision, so that i can do it 04:32:33 oerjan: quite urgent 04:32:50 should i do a headstand in glass of water and try and sleep in that 04:33:13 only if you put it on youtube. 04:33:14 joy. my interpreter is giving me segfaults 04:33:25 oerjan: ok 04:33:26 cya 04:37:56 -!- elliott has quit (Ping timeout: 255 seconds). 04:51:31 -!- pikhq has quit (Ping timeout: 252 seconds). 04:51:38 -!- pikhq_ has joined. 04:55:47 -!- variable has joined. 05:00:23 "Isolated showers" bullshit. 05:00:59 Uberpsycho hail, sure, but not isolated shows. 05:01:02 Showers, even. 05:09:16 this hail show brought to you by ... 05:10:16 geico? :P 05:10:58 -!- SingingBoyo has quit (Read error: Connection reset by peer). 05:16:20 I think I'm going to compile into an interpreter. 05:16:30 The sad thing is, I think I have to do this to _save_ memory 05:29:38 Need to do more tests, but now I'm certain 05:31:02 -!- oerjan has quit (Remote host closed the connection). 05:31:10 -!- oerjan has joined. 05:31:39 that's the second time the broadband briefly disappeared this morning... 05:34:27 Hmm. I wonder if the BIOS update increased my network connection's stability. 05:35:26 -!- augur has quit (Remote host closed the connection). 05:36:12 oh well it wasn't as bad as earlier this week, when most of norway lost internet and phone connection 05:36:51 Ouch. 05:36:56 (a tree fell over one cable and someone dug through another for the main alternate route simultaneously) 05:38:34 and the whole phone network got unstable even locally 06:01:17 -!- ralc has quit (Remote host closed the connection). 06:51:08 -!- CakeProphet has joined. 06:51:09 -!- CakeProphet has quit (Changing host). 06:51:09 -!- CakeProphet has joined. 06:53:30 man why does Java suck so much. 06:54:43 -!- augur has joined. 07:00:02 The people who made it despised all humanity. 07:02:10 pikhq_: I've been in the same room as Gosling without knowing who he was, but no one in the room at the time gave the appearance of hating humanity 07:02:45 Hey here's an article about Bing failing: http://news.cnet.com/8301-13506_3-20064284-17.html 07:03:57 lol he doesn't pay any attention to Google at all obviously 07:08:16 or understand how to make search popular 07:08:42 yeah like, what people like on Facebook and what they search for have nothing to do with each other 07:09:35 more importantly, the fact that the ability to do something akin to Facebook's like on search requires a fundamental property: 07:09:38 -!- augur has quit (Remote host closed the connection). 07:09:40 that your search finds what you want 07:10:40 coppro: In order to most efficiently hate humanity, one must give the appearance of adoring humanity. 07:11:02 instead of using a "+1" feature, Google should just keep statistics on how many people click on a link after typing in a certain query. They may already do this.. 07:11:07 In this way, you can better bring about the downfall of humanity, while it is convinced you're worshipping it. 07:12:45 CakeProphet: no comment 07:15:51 pikhq_: also your country sucks at formatting dates 07:18:24 coppro: Which is why I use ISO date formats. 07:18:41 For instance, it is now 2011-05-29T01:18. 07:18:51 I do as well 07:19:14 Also, I use 24 hour time and vastly prefer metric units. 07:19:44 Though the preference for metric units is probably courtesy of having had a physics class, and being horrified at the prospect of doing it without. :P 07:19:53 It is 2011-05-29T00:19-07:00 07:20:32 in my opinion the one confusing thing about ISO time is the sign flip to get to UTC 07:20:41 you have to /add/ seven hours to get URC 07:20:43 *UTC 07:20:48 from -0700 07:21:07 The idea is that you subtract 7 hours *from UTC* to get the time zone. 07:21:45 yes, but it makes going back to UTC from the time require an extra step 07:21:51 Yeah, yeah... 07:22:10 Clearly, we should just use UTC as The Time Zone. 07:25:29 yes 07:25:44 (actually no, that would be bad. time zones are sane) 07:25:52 Here's what I do: 3:26 AM EDT 07:25:56 crazy right? 07:26:03 yes 07:26:13 half the US population doesn't know what EDT is 07:26:16 coppro: Time zones *can* be sane. 07:26:19 another quarter thinks it's the same as EST 07:26:28 pikhq_: sorry; the concept of time zones is sane 07:26:53 Agreed. It's nice to have a notion of time that corresponds to local solar time. 07:27:04 when such a thing exists 07:27:06 *coughchina* 07:27:08 The issue is that time zones are often way the hell *off* of local solar time. 07:27:19 *coughchina* 07:27:46 China Standard Time: because one time suffices for the people from the UTC+5 to the UTC+9 meridian! 07:27:48 the other issue is that for whatever cultural reason, noon is not midday 07:27:49 my time zone is more sexy than yours. 07:28:05 or typically even close 07:28:19 Noon is not midday in large part because the time zones don't correspond to local solar time. 07:28:30 noon is usually the start of my day. 07:28:42 Seriously, very *few* parts of the US are within half an hour of the meridian for their time zone. 07:29:24 -!- augur has joined. 07:29:33 * pikhq_ is in one of the exceptions... 07:29:46 if you take 1pm to be midday, though, it gets better 07:30:20 pikhq_: the world is going to end if we don't have times consistent with our solar time. 07:30:37 UTC-6 spreads way, way too far west. 07:30:44 All the way over to the UTC-7 meridian. 07:31:21 (and *past*, near the midpoint between UTC-7 and UTC-8, for Canadian UTC-6) 07:31:49 UTC-7 does worse in Canada 07:32:09 Yeah, up north it contains the UTC-9 through UTC-6 meridians. 07:32:36 at least we aren't China... 07:32:49 And US UTC-9 only *barely* contains its own meridian. 07:34:08 -!- azaq23 has quit (Quit: Leaving.). 07:36:50 heh, Newfoundland is URC-3.5 07:36:54 *UTC 07:38:15 Wow. There is a time zone border of UTC+8 and UTC+4:30. 07:38:18 Because of China. 07:39:15 it's okay, you can't cross that border 07:39:31 pikhq_: my dish soap says "40% MORE*" 07:39:45 coppro: Yup, gotta love it. 07:39:45 h8 your country, etc. 07:39:56 *than competitors' 24oz 07:39:58 the US has pretty sane time zone divisions actually. 07:40:02 compared to the rest of the world. 07:40:02 "40% MORE*" * than 24oz. 07:40:08 CakeProphet: *Relatively*, yes. 07:40:18 CakeProphet: It's still consistently far too west. 07:40:45 It should not be exceptional for my time zone to actually be a good approximation of mean solar time. 07:40:59 (modulo daylight savings time, which is stupid) 07:42:02 honestly as long as it's standardized, I think it matters much. 07:42:04 pikhq_: don't forget the date line 07:42:13 err, sorry 07:42:15 date polygon 07:42:47 also, you know where the time zones are the absolute worst? 07:43:28 Where? 07:43:31 antarctica 07:43:34 they aren't even monotonic 07:43:49 Eh, there's other issues there. 07:43:50 since every station typically uses time of wherever they most frequently get supplied from 07:43:59 wow once you get to the date line the time zones make absolutely no sense. 07:44:00 You can't really have a meaningful mean solar time there. 07:44:12 Unless you want a year-long day. :P 07:44:16 that is true 07:44:29 +13 overlaps with -11 laterally at some points. 07:44:46 I wonder if they have midnight parties on the solsitce 07:44:49 *solstice 07:44:52 CakeProphet: UTC+12 and UTC-10 border each other. 07:46:47 pikhq_: Look at UTC+11 in Russia 07:46:48 lol what... +14? 07:47:59 Yeah, UTC+14 is a real thing. 07:48:21 +14 is medial with Hawaii and Alaska, which are -10 and -9 07:48:55 also good is Australia's time zones 07:48:55 coppro: It's... over at UTC+9. Wow. 07:49:23 They have UTC+8, UTC+9:30, and UTC+10 all in a row 07:50:01 they'd actually be pretty close if they made 9:30 9:00 07:51:16 There's also a de facto UTC+8:45 in there. 07:53:00 so apparently Kiribati changed their time zone from -11 and -10 to +13 +14 07:53:06 for reasons Wikipedia doesnt explain... 07:53:50 From 29 December 2011, Samoa will advance its daylight savings time from UTC-10 to UTC+14 (and its standard time from UTC-11 to UTC+13), essentially moving the international date line to the other side of the country. 07:53:54 ....why 07:55:01 trade with western nations usually 07:55:13 do they just want to be cool and be the first ones to experience a given time? 07:55:21 note that western nations are east of eastern ones 07:55:32 oh wait they're moving back a day 07:55:36 yeah 07:55:39 wait 07:55:43 no, that's forwards 07:55:54 so that would be trade with eastern nations I guess? 07:56:03 yeah 07:56:15 (which are westwards) 07:56:20 right. 07:56:53 relative to Samoa, but not in terms of arbitrary absolute eastern and western. 07:57:16 trade is definitely easier to coordinate when you aren't shipping packages the day before they arrive 07:58:44 As a British colony, Kiribati was centered in the Gilbert Islands, just west of the old date line. Upon independence in 1979, the new republic acquired the Phoenix and Line Islands from the United States and the country found itself straddling the date line. Government offices on opposite sides of the line could only communicate by radio or telephone on the four days of the week when both sides experienced weekdays simul 07:58:50 I find this hilarious. 07:59:01 lol 08:10:21 Hooray for air travel at miserable times of the night. 08:15:38 -!- Patashu has joined. 08:23:27 -!- monqy has quit (Quit: hello). 08:25:07 -!- lament has quit (Ping timeout: 240 seconds). 08:30:14 -!- oerjan has quit (Quit: leaving). 08:39:33 huh, how did I keep connection during the night? Wasn't the laptop in s2ram??? 08:39:55 I guess that must have failed somehow, since scrollback indicates I'm well and fully connected 08:40:27 (or I still haven't woken up, and I'm dreaming this, but somehow that seems unlikely, too detailed and so on) 08:50:24 where are you 08:50:28 I'll come by and pinch you just to make sure 08:51:15 Patashu, Europe 08:51:26 oh, darn 08:51:32 I have to book tickets in advance for that 08:51:38 you should have warned me you were going to be dreaming :( 08:51:52 not sure if the ash cloud is still there 08:52:08 * Vorpal checks the SWC 08:52:49 mmm nope, if LFV says it is gone, then it is gone 08:53:03 (LFV is the Swedish equiv of FAA) 09:07:53 luftfartsverket 09:07:57 notice the "fart" 09:08:01 lol@sweden 09:09:21 Zwaarddijk, what? luftfart = air traffic 09:09:50 I have a tetris addiction now. 09:09:56 Vorpal: obviously I now this 09:10:04 Vorpal: do you think most non-swedophones know though? 09:10:12 no, they don't, so it's cheap humour at your expense 09:10:45 hm interesting, fart means traffic in many different concatenated words, but sv:fart = en:speed (as in, velocity) 09:11:05 -!- myndzi has quit (Ping timeout: 255 seconds). 09:11:21 -!- retaehc has changed nick to cheater__. 09:11:33 I guess sv:fart in the meaning of traffic is somewhat archaic and thus only exists in concatenations 09:11:41 fart is rather likely derived from "fara" (not 'danger', but 'to go (by sled or other implement') 09:11:45 there is sjöfart too, meaning sea traffic 09:11:53 Zwaarddijk, hm good point 09:12:12 my guess is they're not even just identical, they're originally the same word 09:12:23 yes likely it comes from there 09:12:25 something meaning something a bit like "travelling, travelness" 09:12:54 travelness heh 09:12:57 then one of the meaningings (travelness) easily can be taken to refer to speed 09:13:00 or veloctiy 09:13:09 quite probably 09:13:12 and the other to travelling in general 09:13:18 yes 09:13:55 Zwaarddijk, this makes me wonder where fara (danger) comes from though 09:15:03 lemme check 09:16:03 borrowed from german 09:16:07 aha 09:16:19 cognate to English fear 09:16:41 ah 09:17:09 there's also scandinavian cognates, like icelandic far (anger, enmity) 09:18:30 that has to go back quite a while I guess 09:18:44 Iceland has been rather isolated iirc 09:23:04 well, it's also quite some time since early middle high german 09:23:21 all of these, btw, can be traced to proto-indo-european, which is even further back 09:23:27 like, greek has a cognate to it as well 09:23:40 peria (but that has had its meaning diverge even more) 09:23:57 heh 09:24:15 (of course the germanic word lso has had divergences) 09:24:21 *also 09:28:26 some programming language should have a ..)-thingy hich means "fill out all missing parentheses at this place" 09:29:02 and maybe a ..)[-N] (N = integer or variable), which means "leave out N missing parentheses" 09:29:34 Zwaarddijk, how would it tell how many were missing 09:29:47 Zwaarddijk, would it close to top level? For Lisp that would be less than useful 09:30:09 normally it'd close to top level, that's why I included the [-N] notation 09:30:24 hm 09:30:41 Zwaarddijk, did you say variable? 09:30:50 yes. 09:31:00 Zwaarddijk, I think that would mean you just made parsing require executing :P 09:31:08 yep. 09:31:13 well 09:31:21 which means parsing is undecidable 09:31:27 that's only possible in an interpreted langue, I guess 09:31:35 Zwaarddijk, yes quite 09:31:54 obviously 09:31:56 Zwaarddijk, and I would say it is undesirable even in an interpreted language 09:32:06 obviously it's undesirable 09:32:11 it makes spaghetti code worse 09:32:42 Zwaarddijk, so why did you suggest it? :D 09:32:48 uhm 09:33:01 this channel is about estoteric programming langs, is it not 09:33:06 oh good point 09:33:26 where undesireable features are used for all the mileage they can offer 09:33:49 Zwaarddijk, yes, now make a language which depends on variables in such a syntax to be TC :P 09:34:05 go for it 09:34:15 I will. 09:34:20 go for it, that is. 09:34:26 eh? 09:34:29 probably not make it 09:34:34 Zwaarddijk, oh? 09:34:40 now you confused me 09:35:12 I mean, when I said "I will" I didn't promise that I will successfully make such a language, but I promised i will go for it 09:35:44 ah 09:38:31 all of my programming languages support non-structured data. 09:39:35 -!- Phantom_Hoover has joined. 09:39:41 http://www.smbc-comics.com/index.php?db=comics&id=2260&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+smbc-comics%2FPvLb+%28Saturday+Morning+Breakfast+Cereal+%28updated+daily%29%29 09:39:56 I don't think I can actually get surprised by trivia any more. 09:41:08 -!- MigoMipo has joined. 09:55:48 Vorpal: I think that idea would fit well in with my other stupid recent ieas, like "generalized loops" and stuff 09:57:10 -!- pikhq has joined. 09:57:17 -!- pikhq_ has quit (Ping timeout: 250 seconds). 09:57:30 Zwaarddijk, hm what are those? 09:58:54 a temporary name for loops that can generate subloops depending on the objects they act on, and the notation used to refer to parts of those objects 09:59:22 some better name probably could exist 09:59:51 so like, a way of generating nested loops 10:04:27 -!- sebbu has quit (Ping timeout: 264 seconds). 10:05:41 -!- sebbu has joined. 10:05:41 -!- sebbu has quit (Changing host). 10:05:41 -!- sebbu has joined. 10:30:31 "[06:41:58] All these years and the iPhone is still the only phone that is actually tolerable to use, despite being run with utterly reprehensible policies." <<< my nokia is far better than iphone 10:30:57 you can call, send an sms and play snake 2 10:32:12 and the battery lasts for weeks 10:33:27 and i can drop it all i like 10:33:56 snake 2??? 10:34:04 gaming nirvana right there 10:34:15 Reminds me of the best reason to have an old, cheap phone: you can say "ah, but I can do something with it your iPhone can't" and then dropkick it. 10:35:52 -!- augur has quit (Ping timeout: 250 seconds). 10:36:13 the problem I have with things like the iphone is that it's essentially market dominance. you simply -can't- do as well with a new smartphone as the iphone as it won't ever have as many apps as it. everyone who's generating content for it is just cementing its place there 10:36:47 another reason is you can do everything you'd possibly ever want to do with any phone ever invented, except perhaps the first two that didn't have the time 10:43:17 My Nexus One doesn't seem to get damaged by all the drops... 10:43:27 Then again, lately it can barely hold an Internet connection 10:43:51 yeah well buy a fucking laptop 10:44:19 I'm typing on it right now 10:44:39 sure sure i'm just being hardcore iphones and shit suck dude 10:44:43 Also, weird that you say that right after I finish listening to Tim Minchin's Pope Song 10:44:47 it's raining soooooooo hard 10:44:53 i should probably go outside 10:47:12 -!- pikhq has quit (Ping timeout: 240 seconds). 10:47:18 -!- pikhq has joined. 10:47:49 I think I have a phone in theory. 10:48:00 It's a relatively old Motorola. 10:48:29 i mostly use mine so i know what time it is 10:48:43 I just have a watch. 10:48:44 although lately i don't really care what time it is 10:48:49 i could never have a watch 10:49:06 Do you not have a left wrist? 10:49:15 i do, but i could never constrain it 10:49:25 -!- augur has joined. 10:50:16 i don't like carrying stuff in my pockets either so really i'd just prefer being naked and carrying whatever i need in my hands 10:51:19 My jacket has 37 pockets! 10:51:30 i don't like jackets 10:51:34 they are not t-shirts 10:51:43 A powerful observation. 10:51:45 Phantom_Hoover, personally I find that watches itch against the skin. So I use my phone for getting approximative chronometric measurements. 10:52:21 Y'know, a human being would say "checking the time" 10:52:53 damn, revealed 10:53:02 there goes my plan for taking over the world 10:53:10 And they wouldn't try to make themselves sound smart by saying 'approximative' when 'approximate' would do. 10:54:11 Phantom_Hoover, come on, what is wrong with 'approximative'? 10:54:24 Why the 'ive'? 10:54:37 Phantom_Hoover, why not. It is a perfectly valid word. 10:54:45 It just makes the word longer for no good reason. 10:55:00 Phantom_Hoover, why is that an issue 10:55:22 it's a perfectly cromulative word 10:55:28 *cromulant 10:55:31 ... 10:55:33 oklopol, :D 10:55:37 Oh yeah :P 10:55:38 * Gregor fail 10:55:44 Gregor, fail indeed 10:55:48 Gregor, it's 'cromulent' anyway. 10:55:51 yes 10:55:55 -!- eremitah`off has joined. 10:56:10 maybe they cancel out 10:56:35 anyway, using overly complicated wording can be fun, though not especially useful 10:57:18 okay i can't concentrate with all that sexy dribbling -> 11:04:27 it'd be neat if finnish had a cromulative suffix for making any word cromulent 11:05:01 olsner, hehe 11:07:24 hmm, I'd like to say cromulative *case* there, but don't cases only apply to nouns? (it'd be unfortunate if cromulation could only be done to nouns...) 11:09:28 Wooooooooooo 11:09:31 Who loves AIRPORTS? 11:09:42 Let's hear the love for airports! 11:11:11 love them? I don't even like them :/ 11:12:00 olsner: Nouns have cases, while verbs have tenses, voices, moods and whatnot; I think "forms" is a generic word for both. 11:12:07 I'm learning to ... be far too used to them *sigh* 11:12:36 except one small thing I like about the local airport here: when I was trying to find out how early I'd need to check in, their web site says "please remember to check in before the departure time of your flight" 11:12:42 Also you ugly americans seem to have a rather sucky railways compared to, say, Europe. (Not to mention something like Japan.) 11:12:48 also it's within walking distance 11:13:52 fizzie: Like our Internet, we suffer from got-it-first syndrome. 11:14:12 We built it first, so ours is the oldest and shittiest. 11:14:35 "In 1804, using high-pressure steam, Richard Trevithick demonstrated the first locomotive-hauled train in Merthyr Tydfil, United Kingdom." 11:14:49 i love airports 11:14:55 Yes, because building the locomotive engine is totally the same as building a national sequence of railroads X_X 11:15:05 [[In 1830, the first intercity railway, the Liverpool and Manchester Railway, opened.]] 11:15:39 I did the whole Finnair "check in online up to 36 hours before departure, print out the boarding pass, then just drop your bags on the baggage drop desk" thing for my Prague-Helsinki flight yesterday, then I couldn't find a baggage drop desk at the airport at all, so ended up queueing for almost an hour for the Finnair check-in desks (two). 11:16:20 well isn't queueing a pretty magical experience tho 11:17:37 Gregor, the UK seems to have done the whole national railway network first. 11:18:01 you rarely get to be part of a data structure, and being in a stack gets pretty uncomfortable with that many people 11:18:12 oklopol, XD 11:18:38 oklopol, ever tried being in a self-balacing b-tree? 11:19:15 i ended up helping it balance us and got kicked out 11:20:07 never agree to help out inside a bloom filter 11:20:10 those things are so nasty and unreliable 11:20:25 Patashu, very true 11:21:16 bloom filter = you can ask if someone already hashed to the same value your object hashes to? 11:21:16 -!- BeholdMyGlory has joined. 11:21:30 a boolean array that is 11:21:33 bloom filter is where you hash each incoming element and OR it onto a bitfield 11:21:43 oh 11:21:43 you can get false positives 11:21:52 so even worse i guess but doesn't use much space 11:21:54 There's probably a decent fetch modus reference here but I can't think of one. 11:22:02 it's constant in space and time but probabilistic 11:22:18 but that's actually rather ingenious 11:22:29 Making an efficient switch/case constr.. n/m 11:22:33 a bloom filter modus would be too much like dave's hash modus I think 11:22:34 except murkier 11:23:04 http://upload.wikimedia.org/wikipedia/en/thumb/c/c4/Bloom_filter_speed.svg/360px-Bloom_filter_speed.svg.png example use 11:23:17 Linked list fetch modus. 11:23:39 Phantom_Hoover, I suggest using a bloom filter fetch modus, that would be hilarious 11:23:53 oh, turns out bloom filters are popular http://en.wikipedia.org/wiki/Bloom_filter#Examples 11:23:56 what's a fetch modus? 11:24:23 olsner, homestuck thing (weird webcomic) 11:24:28 in Homestuck, the normal inventory system was replaced by ones with quirky rules 11:24:38 the first fetch modus you were introduced to was I believe the stack modus 11:24:44 you could put stuff in but only take out the most recent addition 11:24:56 which lead to Wacky Hijinks 11:25:11 Phantom_Hoover: "You wonder if you can just... Just sort of reach over... And... Gamzee: Answer troll." 11:25:16 olsner, there was queue, hash array, tree and a few more iirc 11:25:22 mmkay 11:25:37 The actual data structure based ones we saw were stack, queue, tree, hashmap and array IIRC. 11:25:44 Phantom_Hoover, oh and when someone tried plain array he or she said it was boring 11:25:56 Yeah, that was John. 11:25:57 and switched to an array of dequeues iirc? 11:25:58 http://mspaintadventures.wikia.com/wiki/Sylladex list 13 fetch modi. 11:25:58 this late into the comic fetch moduses aren't brought up anymore 11:25:59 they're all past that 11:26:08 Patashu, hm true 11:27:06 I like how there's a big list of hypothesized mechanisms for the fetch modi we never saw get used, presented as though it were something bordering official 11:27:59 -!- sebbu has quit (Read error: Connection reset by peer). 11:28:30 -!- sebbu has joined. 11:28:30 -!- sebbu has quit (Changing host). 11:28:30 -!- sebbu has joined. 11:28:35 http://www.mspaintadventures.com/?s=6&p=003899 and the following one make up one of my favourite sylladex-based jokes. 11:29:19 the encryption modus is a parody of the first modus/the trouble john had with it because the readers suggested dumb things with high frequency 11:30:04 "Sometimes you just like to pick stuff up and watch the colors. It's so beautiful. Life is beautiful." 11:30:30 Quantum fetch modus: the best idea? 11:35:13 honk HONK 11:35:27 there are some pretty interesting esoteric data structures out there 11:35:48 Like the array of questacks? 11:35:53 *queuestacks 11:36:00 thing is they don't normally provide a new function, just do it faster or with less space 11:36:06 you'd only ever seek them out if you had an efficiency problem 11:39:00 There is a vaguely disturbing amount of adult Homestuck (mostly troll-related) fanart/fanfiction in the webs. (E.g. MSPAchan's "Adult Fanart" section has some 1320 postings in ~80 threads.) 11:39:55 -!- cheater__ has quit (Ping timeout: 276 seconds). 11:40:36 Wouldn't troll porn be utterly unrecognizable to humans, and visa versa? 11:40:41 fizzie, ah, you never saw elliott's reports on the fandom. 11:41:27 Suffice to say that the ones who make porn of it aren't the end of the awfulness. 11:42:52 it would be pretty cool to invent a new data structure 11:42:54 I wonder what's not taken yet 11:47:12 Build the quadruply linked list. It's got two pointers to the next and two to the previous element, so that if a tornado or something strikes and one of the pointers break, the list doesn't come unraveled. 11:47:28 lol 11:47:36 hm, linked list and arrays (and possibly records) form the basis of every data structure in some sense. Trees are just branching linked lists. 11:47:50 how is a tree not fundamentally different from a linked list then? 11:48:06 hmm... . o O ( array tree? ) 11:48:25 Patashu, array tree, do you mean b-tree as opposed to binary tree? 11:48:34 hmm yeah, I suppose b-tree would be that 11:48:47 also there could be two stacks in the middle-ish and the tops of those stacks would have two-way links to every element so that the middles of the list don't hang too low and cut the masts of ships going under 11:49:12 oklopol, heh 11:49:22 lmao 11:50:45 I saw this testing program once, called something like Jinx. it looked for possible race conditions in multithreaded programs and deliberately arranged their timing to cause it 11:50:49 how is a tree not fundamentally different from a linked list then? <-- from a pure structural point of view it is just a branching linked list. From a usage point of view it is however quite different 11:51:25 Patashu, I believe valgrind --tool=helgrind (or whatever the tool was called) can do that 11:52:15 http://valgrind.org/docs/manual/hg-manual.html Ah, so it does 11:52:22 I was thinking of a different one but this works too 11:53:22 a tree is fundamentally different from a linked list in the sense that lists are a proper subset of trees; you can implement trees using linked lists though 11:54:11 ofc both can be thought of as a mess of cons cells 11:58:32 oklopol, :D 11:58:53 oklopol, yes, arrays however is not a mess of cons cells. Making it fundamentally different 11:59:14 are* 11:59:15 You can think of the mess of cons cells (with pointers) as an array with integers in it, though. 11:59:17 them* 11:59:47 maybe i'll skip the obvious comeback 12:00:07 or continuation i mean 12:00:54 You can think of the mess of cons cells (with pointers) as an array with integers in it, though. <-- true 12:04:57 man, multithreading is so -complicated- 12:05:08 is it bad design like SQL and its injection issues or just something fundamental about it? 12:05:44 actually it's not hard for anyone else, i guess you're just dumb 12:06:00 oklopol :D 12:06:04 :( 12:06:24 http://www.minecraftwiki.net/wiki/Version_history 12:06:28 Sweet troll jegus. 12:06:29 I saw that 12:06:30 it's hilarious 12:06:43 no problems are hard really, it's just that most people are too stupid for most of them 12:06:49 "Bug Fixes: 12:06:50 Fixed new item duplication bug 12:06:50 New Bugs: 12:06:50 The item duplication bug was not actually fixed;" 12:07:08 -!- copumpkin has quit (Ping timeout: 252 seconds). 12:07:13 well they are non-local problems so they tend to be hard in a non-trivial program 12:07:27 Hilariously, I was getting downvoted to hell for predicting exactly this on /r/Minecraft nearly a week before the update. 12:07:34 -!- copumpkin has joined. 12:07:48 ...he quoted someone who has actually done serious multithreading. 12:11:42 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds). 12:12:36 -!- Phantom_Hoover has joined. 12:17:09 -!- pikhq_ has joined. 12:17:39 -!- pikhq has quit (Ping timeout: 264 seconds). 12:27:18 -!- cheater__ has joined. 12:31:26 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 12:42:42 http://www.reddit.com/r/math/comments/hmim4/hey_rmath_im_using_this_summer_to_learn_a/ 12:42:46 Left without comment. 12:43:00 -!- ralc has joined. 12:44:50 -!- FireFly has joined. 12:56:49 Using the NumPy and SciPy libraries will give you the tools you need to solve harder math problems. 12:56:51 :D 12:57:22 yeah i prove most my graph-related theorems using numpy 13:08:11 oklopol, but isn't python rather slow, both to execute and to program in. 13:08:27 I mean, a higher level language might be better, and also likely faster 13:08:36 hm 13:10:18 oh it was mentioned in that link. That explains it. Irony. 13:16:27 -!- pikhq_ has quit (Ping timeout: 240 seconds). 13:17:19 oklopol, you should tell them that. 13:18:01 -!- pikhq has joined. 13:22:35 -!- augur has quit (Remote host closed the connection). 13:26:39 why is it that for multi-monitor setups with inequal sizes for the monitors you get some non-visible space in some corner. Why does the window system have to use a rectangle to represent the possible screen area 13:27:09 this means it possible to drag the mouse, or windows, where you can't see it/them 13:27:33 rather it should make such areas inaccessible by default. 13:27:53 OK, the SA Homestuck thread is referring obliquely to something called the Kanayachair, with the instructions for finding it being "google 'kanaya doll'". 13:28:08 Will my curiosity overcome the fact that I am using my neighbour's wifi? 13:28:21 Phantom_Hoover, try encrypted.google.com 13:28:21 :P 13:28:40 No image search. 13:28:45 hm true 13:28:58 Phantom_Hoover, wait, you get inline image results on encrypted.google.com still 13:29:39 Oh god why did I do that aaaaaaa 13:29:56 Phantom_Hoover, wait there are images on encrypted.google.com now 13:30:03 There are. 13:30:21 when did they add that heh 13:30:32 I mean image search is listed in the side bar 13:30:37 it didn't use to be 13:33:33 Phantom_Hoover, interesting, googling PCMCIA rule 34 with safe search off gives me nothing still. 13:33:44 PCMCIA? 13:34:15 Phantom_Hoover, standard for removable extension cards in laptops. Predates PC Card 13:34:41 well I think it turned into PC Card 13:34:49 Vorpal, well, you could always commission someone to draw some for you. 13:34:57 Phantom_Hoover, har har :P 13:35:16 No longer need those with weird fetishes be left out in the cold! 13:35:30 (Unless they're into that.) 13:35:34 heh 13:35:43 I wonder if there is porn on SCSI 13:35:52 That's the spirit! 13:36:20 well hm I get some non SCSI related hits 13:37:12 Phantom_Hoover, findings are inconclusive. The porn in there seems completely unrelated to SCSI 13:44:06 I feel for you, I really do. 13:44:36 Perhaps there will be something suitably interface-based if you simply google "computer porn"? 13:45:04 Of course, it probably won't be standards-compliant, but it might be all you can get. 13:45:25 -!- augur has joined. 13:45:47 Phantom_Hoover, :P 13:46:39 Phantom_Hoover, anyway it seems rule 34 is thus invalid. That is a much more interesting fact. 14:00:03 There are those boards where you can request rule 34 on a topic, I think. 14:04:08 The numpy/scipy pair wasn't too shabby alternative in some contexts for MATLAB. I mean, the pure-python execution speed isn't so very critical, it uses BLAS/LAPACK for the actually costly linear-algebra options and so on. 14:05:27 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds). 14:06:33 And a multi-monitor setup done in the old-fashioned way, with separate X screens, doesn't have to be rectangular. The ones that are xrandr/twinview-style "single framebuffer, multiple views to it" do, maybe because no-one wants to handle non-rectangular framebuffers in graphics memory; but even there those non-visible areas are marked as such and normally windows and the mouse cursor shouldn't go there. 14:07:59 fizzie, hm... it is possible to drag the mouse out to the non-visible areas. Also windows. At least windows don't open there by default 14:08:00 Added-value element: from the above sequence of replies you can deduce I don't read the visible backscroll oldest-to-newest, nor newest-to-oldest, but in some sort of mixed order. 14:08:42 That's probably the window manager's fault, then. 14:08:53 fizzie, I believe it is metacity 14:09:03 yep 14:09:11 Though if it's possible to drag windows partially outside the desktop itself -- which it often is -- it should consistently be possible to drag things to the non-visible areas too. 14:09:26 fizzie, but the mouse can go to the non-visible areas too 14:09:34 That's just silly, then. 14:09:35 dragging windows does indeed make some sense 14:09:50 fizzie, indeed 14:10:14 Back when I had a non-rectangular desktop, the mouse didn't enter the hidden area; but that was of the "multiple X screens" variety, come to think of it. 14:10:40 "xwd -root -out blah.xwd" did produce a bitmap with some garbage in the missing parts. 14:10:45 fizzie, anyway on the virtual-desktop "preview" thingy down in the lower gnome panel, it represents the whole rectangular area 14:10:57 including those windows dragged outside 14:11:24 but windows dragged outside the "real" edges are definitely cut off 14:11:34 discombobricating: http://www.kriminoviny.sk/zvolen-dopravna-nehoda-na-zeleznicnom-priecesti/2007-07-19/ 14:11:44 You can have X in such a mode that one screen scrolls vertically to keep the mouse cursor visible. 14:12:13 fizzie, yes I know. Managed to get that by mistake a few times back when you did manual config 14:12:25 I used twm back then heh 14:13:00 fizzie, the large scrolling screen thing works quite well with twm, but not with DEs like gnome and kde 14:13:16 The setup I have at work is non-rectangular but done as a single screen + xrandr (set up by Gnome's monitor thingie, I think) for outputs; I don't quite remember how it behaves. 14:13:37 At least popup menus manage to properly avoid opening into the empty area, which wasn't the case for some early setup way back when. 14:13:37 fizzie, oh btw my setup is laptop screen (15.4" 16:10) below desktop monitor (22" or 24", forgot which, 16:9) 14:13:42 -!- Phantom_Hoover has joined. 14:14:08 I'm not sure what it does for the mouse cursor. 14:14:16 hm 14:15:15 The multi-screen setup was funny in the sense that in the one "tall" screen (1280, as opposed to 1200) the lowest 80 pixels simply didn't allow the cursor pass at all, so sometimes when you just wanted to drag the cursor from the tall screen to the non-tall ones it would get stuck if it were in the bottom and the mouse movement didn't have a large enough y-direction component. 14:15:30 fizzie, one issue is that the top gnome panel thing is on the laptop screen. And metacity decided maximising on that screen means adjusting for the lower gnome panel (as usual) but expanding the window to the top of the screen. So the top is hidden under the upper gnome panel 14:16:06 fizzie, huh? 14:16:09 fizzie, how do you mean 14:16:42 fizzie, how would you unstick it? 14:17:34 Just by moving up; it would slide like the cursor normally does at the edge of the desktop. It's just that you'd assume that to move the cursor to the screen on the left you'd just need a general "swipe to the left without further thinking" motion, but that wasn't enough in all cases, since you might hit that wall. 14:17:53 fizzie, so why were those 80 pixels unusable? 14:18:29 The screen was 1280 pixels tall, and the others only 1200, and there wasn't any desktop to go to, left from the bottom 80 lines. 14:18:37 oh that way 14:18:44 So it just made it an impassable thing like the normal desktop edge. 14:19:21 fizzie, I thought you meant it used the minimum height all across or something as silly 14:19:22 XD 14:19:35 so the lower 80 pixels on the tall monitor were inaccessible 14:19:48 Ah, no. That would've been quite a lot worse. 14:20:37 As far as cursor motion is concerned, I still would've preferred it to either wrap to the bottom of the non-tall screen when moving out of the 80 lowest lines of the tall screen, or alternatively linearly scaling the relative heights (which incidentally is what Synergy does by default). 14:21:05 I think some other setup worked like the first approach there. 14:21:28 fizzie, I think synergy can do both of those. But that is for multiple computers 14:21:37 though I guess you could apply it between x servers 14:21:41 seems like a stupid idea however 14:21:48 It's quite configurable, yes; you can specify arbitrary mappings. 14:22:04 fizzie, how did you drag windows between the screens with that style of setup? 14:22:21 They were different X screens, so the answer is just "I didn't". 14:22:30 ouch 14:23:01 * Vorpal tries that xwd command above 14:23:26 Also couldn't even open Firefox on more than one monitor, since it -- or pretty much anything else either -- can't connect to different screens from the same process, and you can't run multiple copies of the same profile simultaneously. 14:24:03 weird. It gives black bg to the icons in the notification bar or whatever it is called 14:24:38 Do you mean the indicator applet? 14:27:42 fizzie, yes 14:27:52 fizzie, where things like nm-applet and the mixer icon goes 14:28:31 nm-applet falls back to systray if it can't find an ayatana-indicator-holder device. 14:28:49 And I think it even dynamically switches if one appears/disappears. 14:28:55 But yes, that thing, then. 14:29:24 (I wonder what nm-applet does if there's no systray either.) 14:30:16 ayatana-indicator-holder <-- ?? 14:30:48 The indicator applet is the thing that shows Ayatana Indicators; the icon-and-menu thingies. 14:30:59 I have nothing called ayatana* according to tab complete in bash 14:31:11 Yes, that's just the name of the project. 14:31:39 fizzie, btw the right click menu on the applets is weird. It scrolls up. But is on the same screen 14:31:44 like it was displayed above the screen 14:31:50 and you have to scroll the menu 14:31:59 if you see what I mean 14:32:35 Not entirely, but it sounds weird anyway. 14:33:44 well... fizzie imagine the menu items are displayed like the right click menu went up. But the actual menu area goes down. And you have a ^ at the top of the displayed area that when you move the mouse to it scrolls the menu items in by moving them downwards smoothly 14:33:48 fizzie, see what I mean now? 14:33:49 -!- oerjan has joined. 14:34:04 Yes. I think I've seen that kind of behaviour somewhere. 14:34:21 fizzie, it seems to only affect the indicator-area handle thingy in fact. And right click for nm-applet. Nothing else 14:34:27 not left click for nm-applet either 14:34:29 brb 14:35:11 A weird thing about the laptop: if I enable the Bluetooth, it autostarts bluetoothd (as "bluetoothd --udev") but that copy of bluetooth just simply does not work; if I kill it and start one manually (with no arguments; haven't checked whether the --udev part makes a difference) things work just fine. 14:36:40 fizzie, I have sometimes had to restart bluetooth daemon, the /etc/init.d/bluetooth-whatever one that is 14:36:45 after enabling bluetooth 14:37:25 fizzie, if I don't the bluetooth status according to the bluetooth menu goes on and off several times per second (remains on according to the bluetooth led though) 14:37:49 speaking of which... where did the bluetooth menu go 14:37:52 huh 14:38:16 Vorpal, it went off raiding coastal towns. 14:38:27 har har 14:38:59 wtf 14:39:15 Told you so. 14:39:26 I don't think gnome-panel likes my monitor setup... nor does it like switching between different setup 14:39:28 setups* 14:39:36 So wait, have you moved to less tangible peripheral erotica? 14:39:41 believe it or not... it was below the clock 14:39:52 Phantom_Hoover, what? 14:40:07 Vorpal, are you looking for Bluetooth porn now? 14:40:16 Phantom_Hoover, ... no 14:40:42 Phantom_Hoover, besides I was just interested in if there was porn for something as boring as PCMCIA. I don't have a fetish for it. 14:40:43 :P 14:40:59 Phantom_Hoover, such a fetish sounds way to normal anyway 14:41:02 Suuuuure. 14:41:35 anyway hm maybe killing gnome-panel and restarting it will help. Because I can't get it out from under the clock... 14:41:55 You're more of an ExpressCard man then, eh? 14:42:11 fizzie, hehe 14:42:23 fizzie, nah. ISA ftw 14:42:24 fizzie, who isn't? 14:42:37 (Was going to say CardBus, but I guess that's technically just PCMCIA version X.Y.) 14:43:55 http://www.smbc-comics.com/index.php?db=comics&id=2260&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+smbc-comics%2FPvLb+%28Saturday+Morning+Breakfast+Cereal+%28updated+daily%29%29 14:44:25 there is no f way that is the canonical url for whatever you wanted to link 14:44:35 oerjan, it isn't. 14:44:46 It's the horribly long link Google Reader gives me. 14:45:18 bbl 14:51:19 back 15:04:33 -!- Lymia has quit (Ping timeout: 252 seconds). 15:05:44 -!- Lymia has joined. 15:23:31 -!- augur has quit (Ping timeout: 276 seconds). 15:23:57 -!- augur has joined. 15:39:42 MigoMipo: Migol 11 suggestion: shouldn't I/O error include a "permission denied" value? 15:40:14 Hmm, as in opening files for example? 15:40:33 or when the interpreter refuses to open a file. 15:40:37 (sandboxing etc.) 15:41:48 Maybe, I haven't thought a lot about error handling. The current code just sets error to 1 when any java.io.IOException occurs 15:45:31 also i think reading from \ can be used to poll the interrupt. 15:48:00 hmm, no, i misread the specification. as the interrupt immediately takes the control the polling is not meaningful.. 15:51:30 lifthrasiir, hmmm.. SSA would allow you to detect variables with local scope in bf right? At least to some degree. 15:51:33 MigoMipo: what does a preceding _ before ":label" mean? 15:51:44 Oh, forgot to write about that 15:51:48 It's a NOP statement 15:52:03 wait, then the statement label goes *after* the statement? 15:52:11 Yes, it does :P 15:52:40 Slightly confusing, but I kinda like the suffix syntax 15:52:40 lifthrasiir, what sort of algorithm would be able to optimise this btw, [-]+>[-]+>[-]<<[>]? 15:52:56 Vorpal: SSA itself does not do such operations, but i think the algorithms operating on the SSA can do it. 15:53:09 lifthrasiir, right. And the second case? 15:53:39 lifthrasiir, I think trying to figure out minimum/maximum moved distance for unbalanced loops might be useful. 15:53:45 Vorpal: that would require some kind of abstract interpretation. 15:53:52 lifthrasiir, it would definitely be possible at the start of the program 15:54:11 of course. but if you are in the middle of the biggish program, say, LostKng? 15:54:18 lifthrasiir, you could do it for the seek case (that is [>] [>>] and so on, plus [<] etc) 15:54:23 without too much work 15:55:14 lifthrasiir, if you keep track of something like "known zero, known non-zero, unknown" 15:55:15 i meant that [>>] in the middle of the program cannot be optimized (rather than the direct translation) without the knowledge of the approximate memory state 15:55:44 lifthrasiir, yes indeed. But you keep track of memory anyway right, otherwise how could you optimise into "set" rather than "add" 15:55:49 and the approximate memory state is not that simple. 15:56:30 esotope-bfc does a local analysis, so codes like {3}=0;{3}+=4 can be (trivially) optimized to {3}=4. 15:56:39 but it does not track the whole state of memory yet. 15:56:41 lifthrasiir, even my bf compiler did some basic stuff, like "known value" to be able to propagate constants and so on, including across balanced loops. 15:56:45 -!- pikhq has quit (Ping timeout: 246 seconds). 15:57:00 -!- pikhq has joined. 15:57:08 it seems like tracking memory across unbalanced movement would be difficult 15:57:08 then i should implement it to beat yours ;) 15:57:23 lifthrasiir, your compiler does way better optimisation of nested loops than mine did 15:57:27 lifthrasiir, so you already beat me on that 15:57:38 i had vague idea on the memory state; see bfc/memstate.py for that. 15:57:38 *loops 15:57:55 but actually using it is quite difficult. 15:58:17 lifthrasiir, basically my intpreter had a dict with known expressions for memory offsets. Discarding it after unbalanced loops and adding the only known value in (that the current cell must be zero, or we would not have left the loop) 15:58:21 err compiler 15:58:23 not interpreter 15:59:50 lifthrasiir, I found this quite easy to code actually. For balanced loop it cleared out values that it could not know. Like taking the set of offsets modified in the loop and removing them from the dict. Well it did propagate some known state out of the loop. Like if a value was always set 16:00:00 (and the loop always entered at least once) 16:00:45 lifthrasiir, anyway I did consider using this for optimising [>] but never got around to that iirc 16:01:08 Vorpal: exactly speaking, such kind of analysis is already done by esotope-bfc (see references() methods etc.) but i meant that the analysis stayed within the local scope. 16:01:16 lifthrasiir, oh and I see you do not discard set to same value. Like lostking code you generate starts with several p[n] = 0 16:01:26 lifthrasiir, hm 16:01:39 that's exactly what the "initialmemory" pass of esotope-bfc does. 16:02:28 lifthrasiir, by the way. Why does running all the optimiser passes twice (in compiler.py using "for passcls in self.optpasses + self.optpasses:" that is) cause esotope-bfc to generate incorrect code 16:02:30 anyway, using the complex memory state for more precise analysis was one of my goal, but i never got it 16:02:52 Vorpal: really? can you give me an example? that must be a bug. 16:03:04 lifthrasiir, well try it on lostkingdom. The resulting C program segfaults. 16:03:30 lifthrasiir, I haven't tried with smaller programs 16:03:54 ah, if you included the stdlib pass at the end of optpasses then it will get confused 16:03:57 lifthrasiir, it did remove some code that seemed impossible to remove (non-dead loops removed mostly iirc) 16:04:07 lifthrasiir, why is that 16:04:23 lifthrasiir, what does stdlib do that makes other passes fail? 16:04:40 that was designed to be the last postprocessing pass... 16:04:57 so it is likely for other passes to fail. 16:05:02 lifthrasiir, hm. I did the equiv of stdlib (constantifying output) right in the middle of my passes 16:05:09 and I ran it all to fixpoint anyway 16:05:12 unlike you 16:05:52 i think i should rewrite esotope-bfc at some point, using the better IL and algorithm 16:06:06 the current form of esotope-bfc was written in a hurry. 16:06:16 hurry? You had a deadline? 16:06:35 lifthrasiir, what is the metaclass stuff btw for expressions and conditions? 16:07:04 lifthrasiir, I'm curios. 16:07:07 curious* 16:07:17 Vorpal: that was a subject of my undergraduate thesis 16:07:27 lifthrasiir, heh? the compiler? 16:07:31 heh 16:07:35 How good is the optimization in your compiler? 16:07:45 +[>+] 16:07:47 although i was working on esotope-bfc before i chose the subject for my thesis 16:07:52 Would it be able to optimize that into a simple infinite loop? 16:08:02 i think not. 16:08:07 doubtful. 16:08:42 Lymia, if in the middle of the program it would be unlikely to know that there is no cell with 255 ahead. 16:08:53 Vorpal, I mean that as a standalone program. 16:09:01 +[>[-]+] 16:09:04 How about that? 16:09:22 maybe. But iirc it doesn't try to do much on unbalanced loops 16:09:31 If it isn't optimized into a simple infinite loop, would gcc be able to optimize the generated code? 16:09:36 Vorpal: my undergraduate thesis on esotope-bfc was about the moreloop pass, which is considered mostly useless (it did optimize some code, but not enough general). 16:09:55 lifthrasiir, what did moreloop do? 16:09:58 I forgot 16:10:27 for example, it was meant to optimize codes like [-[-[-[-...]...]...]...] 16:10:35 lifthrasiir, into what? 16:10:41 commonly seen in rot13 and so on 16:11:12 in the optimal case, such nested While nodes should be collapsed into one While node with more complex condition 16:11:17 but i never managed it 16:11:22 ah okay 16:11:30 I should write my own optimization BF compiler.... in Brainfuck 16:11:38 ing* 16:11:41 Lymia, have fun. I wrote mine in erlang. 16:11:48 and esotope-bfc is python 16:11:52 a C case block with fall through might help there... 16:12:01 i should also noet that i started to convert esotope-bfc to ocaml 16:12:13 lifthrasiir, ah nice 16:12:18 (not yet committed to hg.mearie.org, so you're not able to see it yet) 16:12:19 Let's write a Lisp->Brainfuck compiler. 16:12:54 Lymia, painful, especially since Lisp allows first-class functions and BF... doesn't. 16:12:58 lifthrasiir, I don't know about standard libraries there, but I found that erlang have suitable modules for many things that I needed. Even for directed graphs. 16:13:02 languages with first-order (not first-class) functions are easier to translate 16:13:31 first-class functions are not impossible to translate, but i think they should be rewritten in first-order-only form first 16:13:50 Vorpal: great. 16:14:05 Let's build a Brainfuck CPU in Minecraft. 16:14:09 lifthrasiir, but ocaml probably have good libraries for data structures 16:14:33 Lymia, you know about the CPU built in minecraft already I assume? 16:14:34 Lymia: auto-generating a world from Brainfuck code? 16:15:43 Vorpal, yes. 16:15:54 Buh. 16:15:59 I would like this idea more if memory in Minecraft wasn't gian.t 16:16:01 giant* 16:16:44 "Yes may refer to: 16:16:44 * One of a pair of English words, yes and no 16:16:44 * The affirmative grammatical particle in the English language 16:16:44 * An indication of acceptance" 16:16:53 is it just me or are those three all the same thing? 16:16:53 Lymia, hm... I guess sram would be smaller than dram in minecraft 16:18:11 by dram you mean a delay-node memory using redstone repeater? 16:18:24 (and flip-flops by sram) 16:18:44 -!- oerjan has quit (Quit: leaving). 16:18:48 Vorpal, what would a wired clear routine look like anyways? 16:19:29 hm 16:19:52 Lymia, well my point was sram is larger than dram in real life. And you can't do dram in minecraft 16:20:06 Lymia, the most compact memory would be delay lines 16:20:15 Vorpal, no clue how those work. 16:20:23 Would it do well for Brainfuck? 16:20:29 not really no 16:20:35 delay lines are not random access 16:21:00 Is it possible to shift them right/left? 16:21:05 Lymia, they work by sending data down a slow loop, cycling it back at the end to form an infinite loop 16:21:16 Vorpal: did you see this: http://www.remcobloemen.nl/2010/02/brainfuck-using-llvm/ 16:21:17 and "tapping" it off at the cycle point 16:21:23 lifthrasiir, no, *looks* 16:21:36 Lymia, basically, they are utterly unsuitable for bf :P 16:21:45 :P 16:21:51 Lymia, http://en.wikipedia.org/wiki/Delay_line_memory 16:21:58 some guy compiled a brainfuck code using LLVM, and get the comparative result with esotope-bfc 16:22:03 that's quite a feat 16:22:07 (of LLVM, of course) 16:22:42 http://www.cse.chalmers.se/research/group/logic/TypesSS05/Extra/mcbride3.epi 16:22:49 and they say epigram isnt an esolang.. 16:22:55 lifthrasiir, quite impressive 16:23:13 augur: ... two-dimensional? 16:23:21 sort of! 16:23:49 augur, looks cool but aligning that stuff in ascii would probably take more time than writing it out linearly 16:23:54 i'm not a fan of inference rule in general: it makes papers hard to read. 16:24:05 Vorpal: tell that to conor mcbride 16:24:16 and sometimes the inference rule and plain English description does not match :( 16:24:17 Vorpal: maybe you just need an editor that does rectangular selections 16:24:51 olsner, well more than that. It would need to know how much to move sideways if you make a division wider for example 16:25:08 olsner, without me making a selection for it 16:25:21 i prefer properly typeset epigram 16:25:27 assuming those *are* divisions 16:25:43 hm 16:25:50 maybe not 16:26:24 well anyway, if I wrote in the middle of such a multiline expression it should know how to move other stuff 16:26:30 Vorpal: ehm, no, the horizontal lines separate conditions and inferences (or whatever they're called) 16:26:54 and it would need to handle centring properly 16:27:17 and nested ones 16:27:41 Vorpal: i think i forgot to mention it, but one important thing when you are using SSA form for brainfuck-to-c compiler is how to convert the control-flow graph into the linear form 16:28:07 lifthrasiir, well, how does a normal C compiler do while loops? 16:28:31 lifthrasiir, lets ignore unbalanced loops for now. They would end blocks. Just look at balanced ones 16:28:37 constructs the control-flow graph. the original structure generally isn't kept. 16:28:55 yeah, in fact Emscripten did a lot of work on that subject (fortunately). 16:28:59 lifthrasiir, how does it deal with non-local variables? 16:29:38 Vorpal: that is handled in the other way. 16:29:49 lifthrasiir, what other way? 16:30:13 uhm, what's your point about asking about non-local variables? 16:30:19 on* 16:30:35 lifthrasiir, that it would have to preserve some of the underlying structure to map stuff to things like global arrays 16:30:52 so it can update them when leaving the function or whatever 16:31:04 Optimization is starting to sound like a black art. 16:31:28 lifthrasiir, I know it uses the rho function to merge variables from different branches in, say, int x = 0; if (...) x++; 16:31:30 You witches. 16:31:40 then you have something like x_3 = rho(x1,x2) 16:31:42 iirc 16:31:45 yes 16:31:57 lifthrasiir, how does it do it for loops though 16:31:59 if is easy 16:32:03 and that program will have three basic blocks (if you count the last empty block) 16:32:03 loops are harder 16:32:13 lifthrasiir, right 16:32:32 then the outgoing edges of the basic block for loop body will go to itself 16:32:53 lifthrasiir, now make that int x = 0 static, so it can't just be discarded at the end of the function. What now. 16:33:38 lifthrasiir, and right. For balanced loops the control flow graph can't be too hard can it? 16:33:47 What /is/ the rho function? 16:34:14 Lymia, a function that merges multiple paths for SSA 16:34:31 What is an SSA? 16:34:41 Vorpal: rho? don't you mean phi? 16:34:49 olsner, oh right, that was it 16:34:49 Vorpal: well, if you have a code like this: int x; void f(void) { x = 0; if (...) x++; } then x should not be discarded 16:34:54 olsner, greek letter anyway 16:35:02 lifthrasiir, indeed. 16:35:04 as that is a side effect of f (on the global variable). 16:35:18 Can gcc optimize the code down farther for you? 16:35:21 lifthrasiir, you would presumably need to track the scope of assignments 16:35:49 iirc SSI, which is very similar to SSA, uses rho for control-flow splits (it needs splits to be marked, not only merges) 16:35:58 olsner, ah 16:35:59 of course. some aggressive compiler can lift global variables to local variables first and treat them just like local variables, but then it is not a different thing 16:36:05 olsner, what does SSI stand for? 16:36:29 single static information 16:36:31 Lymia, it works on the C code, and probably does some work. But with the knowledge of brainfuck you can do a better job 16:36:34 olsner: something like rho(x2, x3) = x1? 16:36:34 olsner, ah okay 16:36:40 Vorpal, ah. 16:37:21 Lymia, I won't be happy until I can read and understand the generated code from compiling lost kingdom. :P 16:37:28 Vorpal, you're insane. 16:37:32 thanks 16:37:45 Lymia, tell elliott. He believes I'm the only sane person here. 16:37:55 Oh; 16:37:57 Vorpal: btw, the relooper algorithm employed by Emscripten seems good enough for brainfuck-to-c compiler, so i think i just adopt it (if i can). 16:37:57 .* 16:38:02 lifthrasiir: I don't remember the details ... I suspect there are different variants depending on what kind of conditionals you use 16:38:06 Lymia, and thus that I'm boring 16:38:30 olsner: ah, yes, there can be three or more outgoing edges. 16:38:41 Vorpal: btw, the relooper algorithm employed by Emscripten seems good enough for brainfuck-to-c compiler, so i think i just adopt it (if i can). <-- I'm not familiar with that one 16:39:05 see http://emscripten.googlecode.com/hg/docs/paper.pdf for details. 16:39:26 llvm to js? 16:39:27 wtf 16:39:27 it translates the CFG into the form that can be readily translated to Javascript code 16:39:50 Vorpal: you should run the CPython translated by Emscripten in your browser ;) 16:40:01 it's insane, but it works 16:40:03 lifthrasiir, ouch. 16:40:25 lifthrasiir, in firefox. With 2 GB RAM in the system. No thanks. 16:41:00 lifthrasiir: essentially you take x1 and if you have a conditional (if x1 > 3 then goto a else goto b) then you'll create x2 and x3 out of "x1, x1 > 3" and "x1, x1 <= 3" and use those new variables in the two respective branches and use their extra information 16:41:05 hey, i just ran the translated CPython in the system with only one gig of RAM. it's not that tough. 16:41:41 olsner: so the IL (not only analyzes) conveys that information, right? 16:41:48 olsner, ooh nice 16:42:00 Vorpal: http://syntensity.com/static/python.html 16:42:01 I imagine it might look something like "x2, x3 = rho(x1, x1 < 3)", I just have a vague recollection something called rho was involved somewhere :> 16:42:24 I did consider tracking such info in my bf compiler, but I saw no easy way to make use of it 16:43:15 lifthrasiir, when I disable noscript it just goes loading, locking the browser up 16:43:16 *waits* 16:43:44 well, loaded but doesn't work 16:43:47 your browser can be locked up by long-running javascript? 16:44:02 olsner, yes, firefox 3.6.17 16:44:02 for the firefox, yes. 16:44:12 I'm on long term support ubuntu release 16:44:31 lifthrasiir, well anyway, for me that page doesn't work 16:44:40 lifthrasiir, probably needs a newer firefox or something? 16:44:44 execute does nothing 16:45:14 strange, i think i ran it in firefox 3.6.x just fine 16:45:32 (i don't have firefox 3.6.x right now, as all machine i use have firefox 4 now) 16:48:01 MigoMipo: so the core language of Migol 11 is stable, right? 16:48:15 i should update esotope-migol then ;) 16:49:02 lifthrasiir, anyway that llvm one, how much does it do in llvm? Does it do basic +++ merging before it hits llvm or? 16:49:20 -!- ralc has quit (Quit: Leaving). 16:49:31 the treatment of global variables in SSA form? 16:49:37 i don't know much about it 16:50:03 lifthrasiir, no I meant the bf llvm compiler 16:50:24 lifthrasiir, from what I tell it doesn't merge constant output at least 16:50:42 ah, it ran the predetermined optimization passes of LLVM 16:50:57 lifthrasiir, so +++ merging and so on happened inside llvm? 16:51:08 yes. 16:51:19 heh 16:51:47 lifthrasiir, that must be slow. llvm isn't built for that sort of rather "stupid" input 16:52:05 -!- pikhq has quit (Ping timeout: 240 seconds). 16:52:10 esotope-bfc has a code for converting [--->+<] (yes, that extended euclidean stuff), but LLVM also has such code 16:52:27 lifthrasiir: Yes, the core language is pretty much stable, the I/O functions are in progress though 16:52:44 lifthrasiir, iirc my code can do it for some cases. 16:52:47 I forgot the details 16:53:25 lifthrasiir, can you do it for nested loops? Say a multiplication algorithm 16:53:35 well the algorithm is fairly simple, once you know the extended euclidean algorithm and bezout's identity 16:53:51 -!- pikhq has joined. 16:54:23 Vorpal: the scalar evolution algorithm should convert the code like int s = 0; for (int i=4; i!=0; i-=3) s+=1; into the multiplication. 16:54:56 lifthrasiir, better than what my compiler did then iirc 16:55:12 (in this case, s = 2863311532;?) 16:55:12 lifthrasiir, I think I could simply polynoms, nothing more 16:56:00 lifthrasiir, eh? 16:56:04 Vorpal: and LLVM also has a code for solving quadratic recurrence, so it's definitely better than esotope-bfc for that algorithm 16:56:24 lifthrasiir, which algorithm? multiplication? 16:56:28 Guh. 16:56:31 What's all this high level math? 16:56:44 I need to get to college soon... or just pull out google 16:56:59 lifthrasiir, well I'm kind of lost wrt how Bezout's identity apply to all this 16:57:04 Vorpal: something like for (int i=4; i!=0; i-=3) for (int j=i; j!=0; j-=5) s++;. 16:57:17 lifthrasiir, shouldn't that be char for bf? 16:57:32 yes, that's just an illustrative example 16:58:07 hm 16:58:28 Lymia: Sorry, but the math that we care about only gets taught outside of primary and secondary education. 16:58:57 pikhq, oh. 16:58:59 I mean, shit, you're doing well to graduate from high school with knowledge of elementary algebra and basic Euclidean geometry. 16:59:00 To Google then, 16:59:07 lifthrasiir, well, to be frank, I have no clue how this step of optimisation works. And reading wikipedia on Bezout's identity certainly explained why extended gcd is useful, but I don't see the connection of this identity to figuring out how many times the loop is iterated. 16:59:40 Vorpal: the algorithm effectively computes that: what is the number of iterations of this loop: for (i=0; i!=k; i+=m); 16:59:48 http://www.smbc-comics.com/?id=300#comic can you find it 16:59:57 given that i is a W-bit integer. 17:00:00 took me under 3 sec 17:00:21 lifthrasiir, can you explain why it computes that? Doesn't have to be a formal proof of it. But something to make me understand why 17:01:06 well, if you have a brainfuck code like [+++>-<], then it is equivalent to: while (m[0]) { m[0] += 3; m[1] -= 1; }. 17:01:22 then m[1] after the loop depends on the number of iterations of that while loop 17:01:58 pikhq, is Google a suitable teacher? 17:01:59 =p 17:02:00 hm yes 17:02:09 lifthrasiir, so far I'm with you 17:02:19 so, certainly if m = 0 then it loops forever. 17:02:52 I see what he's trying to say. 17:02:55 lifthrasiir, don't you mean if m[0] = 0 ? 17:03:01 well it wouldn't enter then 17:03:09 if m[0] = 0, it wouldn't loop. 17:03:12 Lymia: Certainly a better teacher than most. 17:03:13 Vorpal: that m comes from for (i=0; i!=k; i+=m);. 17:03:13 indeed 17:03:16 sorry for confusion 17:03:17 If m[0] += 0, it is an infinite loop. 17:03:24 Otherwise? 17:03:50 lifthrasiir, right. But how do you get that m (and the k) from the while loop given above 17:03:58 Lymia: otherwise, let's say i was indeed an arbitrary-sized integer and "pretends" to be a W-bit integer. 17:04:00 I understand the extended gcd comes from there 17:04:14 but I don't understand how 17:04:21 then at the end of loop i should be n times 2^W plus k, where n is an integer 17:04:44 that is, i modulo 2^W is k (but i itself does not have to be k, of course) 17:04:52 hrrm 17:05:09 lifthrasiir, well, in C, it does, right? 17:05:10 =p 17:05:14 so we have: n * 2^W + k = j * m. 17:05:17 Lymia: yep. 17:05:23 (where the j is the number of iterations) 17:05:41 So. 17:05:42 gah I keep loosing track of which letter was what 17:05:56 the equation is equivalent to: j * m - n * 2^W = k. 17:06:41 hm 17:07:01 that is very similar to the bezout's identity: a * x + b * y = d. 17:07:32 extended euclidean algorithm is used to determine one solution of x and y when given a, b and d 17:07:37 hm 17:08:03 one pitfall here is it is possible that k is not a multiple of gcd(a,b) here. 17:08:08 lifthrasiir, so, gcd(sizeof(int),k)? 17:08:20 Lymia: 1 << sizeof(int) i think. 17:08:23 lifthrasiir, where did we get k from? 17:08:46 Vorpal: oh wait, i meant that d is not a multiple of gcd(a,b). 17:08:50 b is obviously 2^W, and a would presumably be m? 17:09:04 yes 17:09:20 as we don't know j and n, that should be mapped to x and y in the bezout's identity 17:09:28 lifthrasiir, but I don't see how we can know k? 17:09:39 lifthrasiir, if we are doing C code, why do we want to know n? 17:09:43 -!- monqy has joined. 17:10:05 Lymia: well then you need bigger integer types. 17:10:26 the extended euclidean algorithm is (i believe) prone to such overflows 17:10:48 anyway, if d is not a multiple of gcd(a,b) then there exists no solution. it means the infinite loop in our case. 17:10:59 lifthrasiir, well how do we learn k and then, how do we apply the results? 17:11:01 otherwise we can run the extended euclidean algorithm to find out x and y 17:11:13 Vorpal: what k do you mean? 17:11:20 the equation is equivalent to: j * m - n * 2^W = k. 17:11:23 lifthrasiir, the k in there 17:11:35 you said we need to know a,b,d. d maps to k 17:12:16 yeah, and we get j and n using extended euclidean 17:12:37 And how do those map to C code? 17:12:37 but note that j and n is not unique 17:12:39 lifthrasiir, that still doesn't answer how we get k to begin with! 17:12:47 lifthrasiir, which is what I'm not understanding 17:13:23 I kinda of get what's being said. 17:13:28 Vorpal: ah, i'm using the example code like this: for (i=0, j=0; i!=k; i+=m, k++); 17:13:32 wait 17:13:35 Vorpal, I do believe k would be m[0] 17:13:39 But.. I'm not sure. 17:13:41 for (i=0, j=0; i!=k; i+=m, j++); 17:13:47 lifthrasiir, how do you get k from while (m[0]) { m[0] += 3; m[1] -= 1; } 17:13:55 lets take it from that level 17:14:09 lifthrasiir, if I have the k written out in the for loop it is obviously there. 17:14:14 but given the while loop? 17:14:42 Vorpal: then the loop variable here is m[0], and since every other variables increase/decrease in constant value it qualifies for this optimization 17:14:47 lifthrasiir, if I understand you. 17:15:09 This is basically a fancy way to compute how fast m[0] will reach 0, and if it will. 17:15:11 now pop out the loop variable then we have: for (; m[0]; m[0] += 3) m[1] -= 1; 17:15:15 lifthrasiir, eh. is k = 0? as in when m[0] reaches 0? Or does it have some other value? 17:15:17 Lymia: yes. 17:15:32 Vorpal: ah, i have to explain that bit... 17:15:43 lifthrasiir, yes I get stuck on that step indeed 17:15:50 okay, actually for brainfuck code the condition will be only m[0] != 0 (i.e. m[0]) 17:15:56 but we don't know the prior value of m[0] here 17:16:06 so let's say the prior value were x. 17:16:08 indeed, if we know the prior value we could do this easily 17:16:13 lifthrasiir, right. 17:16:19 then m[0] = x; for (; m[0]; m[0] += 3) m[1] -= 1;. 17:16:24 indeed 17:16:28 makes perfect sense 17:16:44 Vorpal: got it? :p 17:17:33 Yeah. 17:17:37 I think I see what's being said. 17:17:54 anyway, now introduce a fresh variable i for the loop: i = m[0]; for (; i; i += 3) m[1] -= 1; m[0] = i; 17:18:34 nope, doesn't map to a loop like for (i=0, j=0; i!=k; i+=m, j++); for me. Rather it looks like for (i=x; i!=0; i+=3). Hrrm. Which you could turn around so that you have for (i=0; i!=x; i-=3 though). Is that what you are doing? 17:18:44 or hm 17:19:06 if we offset i by the prior value of m[0], then we have: for (i=0; i != -m[0]; i += 3) m[1] -= 1; 17:19:14 ah 17:19:15 yes indeed 17:19:30 (of course we should adjust m[0] accordingly, but that is not a point) 17:19:46 lifthrasiir, now it starts to look similar to the for loop above 17:19:54 if the number of iterations of that for loop were j, then the code simply reduces to m[1] -= j;. 17:20:04 lifthrasiir, so k here is -m[0] where m[0] is the value prior to adjusting? 17:20:09 yes. 17:20:20 right 17:20:28 lifthrasiir, now it makes a lot more sense 17:20:40 in practice, the bezout's identity has multiple solutions 17:20:46 lifthrasiir, and then when we have x,y from the identity... How do we use them? 17:20:51 but we want j to be a smallest positive integer 17:21:14 Vorpal: we have two cases here: 17:21:59 okay? 17:22:07 if the increment m and the exit value k is not a coprime to each other, then the loop will end more quickly 17:22:33 hm 17:22:56 as a simple example: if k = 6 and m = 2, then the (adjusted) j should be 3, but the bezout's identity will give 6 17:23:07 I see 17:23:24 so we need some scaling for the cases when m and k is not a coprime to each other 17:23:24 lifthrasiir, so how do we reduce it as much as we can? 17:23:44 i think the detailed procedure is in the source code of esotope-bfc. ;) 17:23:49 right 17:24:14 lifthrasiir, anyway aren't we doing this to get rid of the loop entirely? Turning it into an expression 17:24:14 i think the meaning of the comment should be clear now 17:24:31 Vorpal: once you know the number of iterations, that should be simple. 17:24:36 lifthrasiir, hm true 17:25:28 -!- Slereah_ has joined. 17:25:29 hrrm. *reads code* 17:25:41 lifthrasiir, the comment under "elif flag:"? 17:25:44 in simpleloop 17:26:03 yes 17:26:04 now what is the flag variable in there *looks* 17:26:40 lifthrasiir, is mode the type of loop somehow? 17:26:47 yes. 17:27:07 -!- lament has joined. 17:27:08 if the loop variable changes non-linearly in the loop (for example) then it cannot be converted in this way 17:27:19 so it simply gave up 17:27:22 give* 17:27:28 ah 17:27:29 gives* 17:27:55 -!- oklopol has quit. 17:27:56 -!- Slereah has quit (Ping timeout: 252 seconds). 17:28:42 lifthrasiir, what if we have something like while (p[0]) { p[0]+=p[2]; p[1]+=5; } or so? Where we p[2] is not changed inside the loop but we don't know the value of it 17:29:23 if the constant propagation cannot convert c[2] to a constant, then it also gives up. 17:29:28 ah 17:29:36 that is very specific optimization for brainfuck codes ;) 17:29:56 (though it has other uses than brainfuck, so LLVM implements it) 17:30:14 lifthrasiir, not sure if your compiler is smart enough to optimise something like [->+>+<<]>[-<+>] into a copy (plus a set 0 of the temp cell). 17:30:54 that will be optimized out. 17:30:56 or do you get p[1]=p[0]; p[2]=p[0]; p[0]=0; p[0]=p[1]; ? 17:31:14 lifthrasiir, I mean will you eliminate the pointless writes to p[0] completely 17:31:36 (well that missed out the setting of p[1] to 0 17:31:38 Vorpal: that is done separately (in the removedead pass), though it is somewhat limited. 17:31:39 ) 17:31:50 it will work nevertheless for that code 17:32:21 lifthrasiir, right 17:33:02 lifthrasiir, iirc that was one of the things my compiler managed slightly better than your. Expression propagation and constant folding. Plus removed dead quite quite well. 17:33:23 lifthrasiir, your loop optimisations easily beat it however. Overall they are far more effective 17:33:54 the difficulty with propagation and dead code elimination was the motivation for SSA-based IL. 17:34:23 lifthrasiir, yes true, it wasn't fun to do the dead code one. I ended up walking backwards through the code sometimes iirc 17:34:37 or changing direction a lot 17:34:57 quite a pain, indeed 17:35:12 lifthrasiir, at least that was easy with my implementation. As a tail recursive function with an input cons style list and an output cons style accumulator list 17:35:22 reversing was just switching which I took elements from 17:35:30 of course I needed to reverse at the end 17:35:38 and to turn loops right way around 17:35:39 but meh 17:35:58 idiomatic style for erlang 17:36:11 lifthrasiir, and it made merging and swapping instruction pairs easy 17:36:45 lifthrasiir, do you use mutable data structures in your ocaml code? 17:36:50 not yet. 17:36:52 ah 17:37:14 and i won't use mutable data structures in the global IL 17:37:24 lifthrasiir, I found map less than useful for bf optimisation. Since there might not be an 1:1 map of number of elements 17:37:38 Vorpal: but how about flatten after map? 17:38:47 lifthrasiir, hm. Possible certainly. Doing a tail recursive function with accumulator list in erlang is easy though. What with the pattern matching 17:38:51 you get stuff like: 17:40:05 optimise([{set,Offset,Value}|T], [{set,Offset,Value2}|T2]) -> optimise(T, [{set,Offset,Value+Value2}|T2]) 17:40:25 well not quite that, but the principle anyway 17:41:19 lifthrasiir, I think I would prefer to put it in the list to process rather than the accumulator. That way I could possibly optimise it with some other prior instruction in the same pass 17:41:24 wouldn't matter for this simple case 17:41:27 Yeah, pattern matching is a freaking godsend for optimisation. 17:41:35 -!- evincar has joined. 17:41:37 pikhq, yep. 17:41:40 right. 17:41:57 Vorpal, that Prolog? 17:42:03 pikhq, in haskell you would need a guard there. Like Offset1 == Offset2 17:42:07 Phantom_Hoover, erlang 17:42:09 Hmm. I should probably start putting some more peephole optimisations in here. Just for kicks, y'know? 17:42:16 Phantom_Hoover, yes they *do* have similar syntax. I know 17:42:19 Vorpal: Yeah, sadly. Still a hell of a lot better than other languages. 17:42:38 pikhq, indeed. 17:43:09 So what are we working on? 17:43:31 lifthrasiir, the main pain in erlang was calculating modulo 256 17:43:46 Vorpal: lol 17:43:51 lifthrasiir, I had a special cleanup pass that did modulo 256 on every value :) 17:43:51 is there any library for that? 17:44:00 lifthrasiir, oh and -1 I represented as 254 17:44:09 otherwise it wouldn't work with that simple cleanup pass 17:44:40 lifthrasiir, nope. Not easily done in erlang's type system. 17:45:06 lifthrasiir, you could pack it into a binary and unpack it I guess 17:45:32 something like: <> = <> 17:45:33 huh. 17:45:45 I forgot exact syntax, haven't been coding much erlang recently 17:45:57 lifthrasiir, anyway arithmetics are bignum in erlang. 17:46:13 lifthrasiir, and adding your integer type would be highly non-trivial. 17:46:40 Hrrrm. Actually, how hard could a constant propogation pass *be*, anyways? 17:46:42 lifthrasiir, there are no typeclasses and so on 17:47:02 :( 17:47:05 pikhq, I did better, expression propagation. Quite useful. 17:47:13 Vorpal: Oh? Hmm. 17:47:35 pikhq, well yes, it handled neatly cases like [->+>+<<]>[-<+>] 17:47:35 -!- wareya has quit (Read error: Connection reset by peer). 17:48:02 Spiffy. 17:48:12 pikhq, if you just optimise set offset to offset there, then it is easy to get rid of the dead copy p[0]=p[0] 17:48:22 which is what you will get after expression propagation 17:48:23 -!- wareya has joined. 17:48:31 assuming a previous pass eliminated the dead p[0]=0 store 17:49:28 pikhq, besides if you use the earliest values you can (right, this can be a pessimation in some cases, the opposite of CSE) you can remove a lot more dead stores easily. 17:49:37 which turns out to give a better overall result 17:49:43 at least for the programs I tested on 17:49:54 I used lostking and mandelbrot mainly for testing 17:50:42 lifthrasiir, btw I noticed you did something more than I did... 17:50:44 while (p[7] != 0) p -= 9; 17:50:50 lifthrasiir, how did you generate stuff like that heh 17:51:11 mine would have done something like p+=7; while(p[0] != 0) p -= ... 17:51:27 since it hit an unbalanced loop 17:53:06 Vorpal: pointer propagation works for SeekMemory (i think it is?) too. 17:53:39 lifthrasiir, you manage for other unbalanced loops too 17:53:42 that is, p += 7; while (p[0] != 0) p -= 9; p -= 7; is equivalent to while (p[7] != 0) p -= 9;. 17:54:01 since we are hitting the same memory cell in this case 17:54:16 the fixed offset here can be eliminated. 17:54:20 pikhq, anyway. I don't have the code for mine on this computer. And I don't think it is online anywhere. Besides I hit a wall, I would need to majorly restructure the internal representation. As I found out towards the end of the development. 17:55:03 lifthrasiir, hm but how do you manage that for nested unbalanced loops. That seems trickier 17:55:05 yet you do it 17:55:24 for example? 17:55:34 lifthrasiir, this is from the start of a huge loop: http://sprunge.us/gIjg 17:55:43 i think this propagation can be applied recursively (without any harm) 17:56:03 Vorpal, I managed to do pointer propagation in mine quite easily. 17:56:24 *Admittedly*, without the help of oerjan it took 2 minutes to execute on LostKng. :P 17:56:44 lifthrasiir, I see one thing you didn't do was turn while loops into do while when you know that the loop value was non-zero. This can be applied to unbalanced loops too. GCC generates smaller code for it on -O2 with the programs I tested. 17:57:08 for example: p += 3; while (p[0] != 0) { ... p += 5; while (p[0] != 0) { ... p += 1; } ... } should be while (p[3] != 0) { ... while (p[8] != 0) { ... p += 1; } ... p += 5; } p += 3; 17:57:16 pikhq, pointer propagation across unbalanced loops I completely missed out on. 17:57:26 pikhq, also where is your? 17:57:28 note that the whole effect of the loop body to the pointer moves to the end of the loop 17:57:43 (yes, it cannot move it out of the loop yet) 17:57:50 Vorpal: Lemme pastebin. 17:57:57 pikhq, which language is it in? 17:58:02 http://sprunge.us/FAQF 17:58:03 Haskell. 17:58:27 pikhq, that parser would be smaller with parsec. I tried recently :P 17:58:40 Eh. It's already freaking tiny. 17:59:32 hm 18:00:21 pikhq, why the !Int in the type? 18:00:34 I forgot what the ! does 18:00:42 Vorpal: That makes the fields strict. 18:00:53 I found it made the compiler use 10M less RAM and execute a bit faster. 18:00:57 pikhq, oh heh 18:01:15 pikhq, is this a bignum brainfuck= 18:01:22 once having seen a Migol 11's I/O system, i cannot resist from implementing my own EXE (finally!) 18:01:25 or why int for adding values 18:01:30 No, it's 8 bit... 18:01:35 pikhq, why not Word8 then 18:01:41 from Data.Word 18:01:54 lifthrasiir, so. 18:01:59 You're doing p++ etc, right? 18:02:03 Well, it *could* actually be that way for some of it. 18:02:15 I guess that's more optimal. 18:02:17 Lymia: yes, but most of them can be propagated 18:02:34 pikhq, it just seemed more logical to skip having to think of applying the modulo yourself to me 18:02:57 Vorpal: ... *I'm not*. 18:03:04 At least, not yet. 18:03:12 pikhq, where does it ensure that 255+1 = 0 then? 18:03:19 In the output code. 18:03:22 ah 18:03:33 oh my¸ asm 18:03:43 The x86 does modular arithmetic. :) 18:03:55 Yeah, it produces some pretty tiny output. 18:04:43 pikhq, I kind of prefer producing C. Because then the C compiler can do some further optimisation for you 18:05:28 -!- CakeProp1et has joined. 18:06:12 -!- FireFly has quit (*.net *.split). 18:06:12 -!- BeholdMyGlory has quit (*.net *.split). 18:06:13 -!- CakeProphet has quit (*.net *.split). 18:06:20 Yeah, but the C compiler outputs so much bloaty code. 18:06:26 -!- BeholdMyGlory has joined. 18:06:47 pikhq, really? I found clang works pretty well 18:06:57 pikhq, besides there isn't much bloat you can add. 18:07:30 pikhq, unless you mean stuff like __start. In which case I think you are overly silly 18:07:36 err _start* 18:07:50 My LostKng is 482,800 bytes. 18:09:01 pikhq, let me check how large file clang generates 18:09:06 using -O1, may take a while 18:09:22 this is from esotope output 18:10:03 of course, clang is not fast here 18:10:05 And keep in mind, my output has no dependencies other than a Linux kernel. 18:10:11 -!- Sgeo_ has joined. 18:10:39 pikhq, so it won't run on anything but linux 18:10:42 pikhq, fail :P 18:11:04 pikhq, if it doesn't run on, say, OpenBSD/SPARC what is the point of it? 18:11:04 (indeed, with how I'm doing things, it *can't* even realistically call into C. I'm using the freaking stack pointer!) 18:11:18 -!- Sgeo has quit (Ping timeout: 250 seconds). 18:11:20 pikhq, wait what are you using the stack pointer for? 18:11:28 As a general-purpose register. 18:11:35 pikhq: Madness. 18:11:53 pikhq: Alternatively, clever. 18:12:04 evincar: The only memory I access is the Brainfuck array. 18:12:06 pikhq, why do you need that? You don't optimise try to put as much data in registers as possible do you? 18:12:14 Everything else is in the registers. 18:12:29 well good thing I used ulimit to limit clang to 400 MB RAM: terminate called after throwing an instance of 'std::bad_alloc' 18:12:51 700 works fine for -O0 18:13:05 Somehow this reminds me of a totally misguided project I made the (good?) decision of never starting... 18:13:10 lets try that for -O1 18:13:18 evincar, what project? 18:13:52 Vorpal: A C-to-BF compiler, with as limited extensions as possible. Call it a BF-based VM. 18:14:13 evincar, ais wrote the beginnings of a gcc backend generating bf 18:14:22 I don't think he finished the bfasm -> bf bit 18:14:47 Vorpal: The code to access the system calls, sadly, ends up clobbering eax, ebx, and edx. So the only registers I have for my own use without some painful work in the code generator is ecx, ebp, and esp. 18:14:53 Vorpal: Cool, I'll ask him about it sometime. 18:15:31 pikhq, what about %r10? 18:15:37 Vorpal: *x86*. 18:15:39 Not x86_64. 18:15:39 oh 18:15:42 pikhq, right 18:15:54 pikhq, anyway, why not just push those registers on the stack? 18:16:04 Memory access! 18:16:08 -!- FireFly has joined. 18:16:11 I only access the Brainfuck stack. 18:16:14 Erm, array. 18:16:45 pikhq, hm. I presume you optimise constant output ? 18:16:58 That would require constant propagation! 18:17:08 pikhq, oh true 18:17:27 pikhq, I'm just saying that I think you will need using the stack on x86_32 if you are going to call write 18:17:34 unless I miscounted the registers 18:17:42 I'm already calling write. 18:17:49 421K LostKng.clang 18:17:52 What do you think the system call to do output is? 18:17:55 pikhq, how large did you say your were? 18:18:04 pikhq, well hm good point 18:18:09 Uh. It's 472k. 18:18:18 Without any non-peephole optimisations. 18:18:20 pikhq, so clang did a better job than you 18:18:30 well, clang + esotope-bfc 18:18:43 Would you care to add the libc into that? 18:18:55 pikhq, well I need to strip it too I think 18:18:58 Would you care to add the libc into that? 18:18:59 it has a symbol table 18:19:27 pikhq, why? That cost is insignificant since it is shared by all the binaries using libc on my system 18:19:28 All 1.4M of it? 18:20:08 That ain't insignificant, that's a gigantic runtime you're relying on. 18:20:11 1,5M /lib/libc-2.11.1.so 18:20:12 actuallyt 18:20:22 Even if you do have the nice excuse that your system already has it in RAM. 18:20:32 pikhq, for the disk cost it will be split on every binary linking to it 18:20:34 in /usr/bin 18:20:42 That ain't insignificant, that's a gigantic runtime you're relying on. 18:20:43 Even if you do have the nice excuse that your system already has it in RAM. 18:21:02 pikhq: if it does matter then why not replacing GETC, PUTC and PUTS macro with a syscall-only version? 18:21:03 pikhq, oh ram cost? yes it is in ram already. You rely on the kernel. 18:21:19 pikhq, now, why don't you do this freestanding 18:21:29 pikhq, the kernel is a gigantic runtime you are relying on 18:21:31 I love how context can make libc "gigantic". 18:21:31 lifthrasiir: I did; it's 532k. 18:21:39 pikhq, the kernel is a gigantic runtime you are relying on 18:22:30 Vorpal: s/libc/the kernel/ 18:22:46 evincar, where 18:23:04 Vorpal: I love how context can make libc "gigantic". 18:23:09 pikhq, really, since it is dynamically linked, it is like the the kernel. Either you count both into the cost or you count neither. Nothing else makes sense from your viewpoint 18:23:25 evincar, well yes and? The kernel is larger than libc for me 18:23:32 Vorpal: Fuck you and your noise. 18:23:43 Also, how the hell do you get the kernel larger than libc? 18:23:49 3,9M /boot/vmlinuz-2.6.32-31-generic 18:23:54 o.O 18:23:55 that is the static compressed part 18:23:59 That's... Freakish. 18:24:01 pikhq, this is ubuntu stock kernel 18:24:06 pikhq, so most stuff is modules 18:24:10 which should be added to that 18:24:14 What the *hell*. 18:24:14 Vorpal: That depends. But isn't it kind of silly to count what's essentially a platform dependency? 18:24:34 pikhq, now, my desktop kernel with exactly the stuff I need compiled into it is 2.5 MB. 18:24:39 I wonder what ubuntu does 18:24:59 pikhq, anyway I conclude your program is thus 472k+3.9 MB at least :P 18:25:03 pikhq, same logic as you used 18:25:16 pikhq, Even if you do have the nice excuse that your system already has it in RAM. (like, it being booted) 18:25:40 Vorpal: Now you're just being pedantic for the fun of it. 18:26:06 evincar, yes because pikhq is having an unreasonable opinion about dynamic linking here 18:26:21 evincar, I'm just trying to apply it consistently 18:27:10 pikhq, anyway do it freestanding. I'm sure you can get it down to less than 1.5 MB still. But do it. If you include libc you should include the kernel 18:27:14 both are *shared* costs 18:27:32 Vorpal: You're applying reducto ad absurdum. :P 18:27:33 there is one instance of both on my system 18:27:50 evincar, good you know the name. 18:28:07 pikhq, why are you not replying btw? 18:28:50 if you don't wish to continue the discussion you should probably admit defeat instead of burying your head in the sand (which is what this seems like) 18:30:05 evincar, few things annoy me as much as when people just stop talking instead of admitting defeat or continuing to argue. I really hate that way to get out of a discussion. 18:30:16 * Ping reply from pikhq: 1.13 second(s) 18:30:20 so not disconnected either 18:30:32 and not marked /away 18:30:56 pikhq, well, I hope you can explain why you shouldn't count the kernel if you count libc 18:31:08 both are shared, single-instance-per-system 18:31:27 both are relatively large. 18:31:33 pikhq, so tell me. 18:31:41 IRC is not mandatory, you know. 18:32:12 I'm busy trying to get the absolute tiniest kernel that can run this. 18:32:13 :P 18:32:38 342kB. 18:32:42 pikhq, that is no answer, but really. Why should you include shared system resources. 18:33:00 $ ps aux | wc -l 18:33:00 185 18:33:01 Vorpal: Because ,,|, 18:33:10 so 184 (excluding header line) 18:33:14 pikhq, because what? 18:33:30 Oh, sorry, that's a bit of an Americanism. "Because fuck you". 18:33:49 pikhq, I don't see how that is relevant to this 18:34:00 4.4M in Ubuntu's /boot/vmlinuz-2.6.38-8-generic, for the record. 18:34:11 *Jeeze that's absurd*. 18:34:13 pikhq, anyway libc.so is about 8 kb per process on my system. 18:34:31 Hmm. Let's see what a maximal build here does... 18:34:47 And the associated initrd is 9.2M. 18:35:02 The kernel does keep on growing in general. 18:35:03 pikhq, anyway if you care about ram as opposed to disk space you should not count the size of the compressed kernel image. 18:35:12 Allyesconfig, away! 18:35:15 pikhq, instead you should count how much memory the kernel uses 18:35:24 Vorpal: Maybe you should shut up. 18:35:27 We get it. 18:35:31 pikhq, and if you care about disk then you should split it on number of ELF binaries in /bin /usr/bin and so on 18:35:38 And you're going to talk about this for two more months. 18:35:40 in which case the value will be even tinier 18:35:51 Maybe you should shut up. 18:36:12 pikhq, I don't take well to that sort of argument. I'm trying to approach this rationally 18:36:31 *Your argument is falling on deaf ears, because I don't care*. 18:36:38 pikhq, you have not given me a good reason why you would not count shared resources across all processes 18:37:08 Because *I simply had the idea of having this output assembly that didn't depend on libc*. 18:37:11 *That's it*. 18:37:14 *There is nothing more to it*. 18:37:18 *Stop it*. 18:37:39 pikhq, right. That makes sense. But claiming I should include libc size in the C code did not make sense. 18:38:01 fizzie, yes indeed it grows hm 18:38:20 I was being flippant. And you reacted by... Reductio ad absurdum. 18:38:37 Reductio ad absurdum on an absurd statement is, of course, going to reduce to absurdity easily. 18:38:47 pikhq, I was not aware you didn't mean what you said 18:38:58 pikhq, possibly I should apply Poe's law on this 18:39:09 Anyways, now I'm curious, what does an allyesconfig on Linux result in, anyways? 18:39:19 pikhq, almost everything yes 18:39:22 Vorpal: 1.9M+2.2M is the kernel+initrd size for the custom config on iris.zem.fi, that's not *so* huge. It almost fits on a floppy. 18:39:37 Or two floppies, anyway. 18:39:50 But that's a supported setup. 18:40:04 pikhq, there are some stuff that can't be yes at the same time, and there is some weirdness for that super-experimental section 18:40:09 but apart from that, everything 18:40:17 Vorpal: Yes, just wondering what the binary size is. 18:40:22 fizzie: You could probably make that better by using xz compression on the kernel. 18:40:44 fizzie, hm 18:40:58 And the initrd. 18:41:22 fizzie, yes my desktop kernel is quite large. I include everything I use. And I don't use initramfs. Only things that are modules are those I use infrequently 18:41:31 like code for the lego rcx usb thingy 18:41:35 (the IR tower) 18:41:41 I have that as a module iirc 18:42:01 which means the kernel is large but lsmod is short. 18:42:14 $ lsmod | wc -l 18:42:14 143 18:42:18 not like that on ubuntu heh 18:42:22 iris is a headless box anyway, not too many (hardware) drivers involved. 18:42:43 pikhq, nvidia.ko was something like 9 MB last I looked 18:42:47 no clue how they managed that 18:43:00 ... Damn. 18:43:03 Vorpal is the reason you don't use initramfs just your weird brand of... Vorpidity, or is it something else? 18:43:54 13M /lib/modules/2.6.38-8-generic/updates/dkms/nvidia-current.ko 18:44:13 That's one big module. 18:44:24 Phantom_Hoover, that it is pointless for the desktop setup. There is no need. And there is that I have no clue how to make one for my custom kernel. I mean, I know there is mkinitcpio or whatever the tool is, but I assume you have to decide what to put on it 18:44:27 simpler to just skip it 18:44:45 Phantom_Hoover, on my laptop I wouldn't get away with that, encrypted root 18:44:51 thus I use stock kernel on it 18:44:54 easier 18:46:58 hmm, who are working on the brainfuck compiler (for the static subset, of course)? 18:47:01 wiat 18:47:03 befunge* 18:47:21 lifthrasiir, fizzie is/was working on a JIT compiler 18:47:23 Is there a "the" compiler, or just in general? 18:47:39 I also have a static ahead-of-time compiler for a subset. It's quite crummy. 18:47:41 fizzie: i meant "a". 18:47:42 lifthrasiir, and the static subset is not TC I think. If you can't write to funge space... 18:48:07 lifthrasiir, oh and x makes it hard to do any sort of compiling 18:48:07 The static version does p/g, it just doesn't let those modify the code. 18:48:10 Vorpal: given Befunge-93, it is already not TC even you can write to funge space 18:48:12 you can after all jump everywhere 18:48:21 lifthrasiir, oh 93, I assumed 98 since you didn't say otherwise 18:48:39 It doesn't do x with non-constant arguments at all; and the handling of non-constant j is really ad-hoc. 18:48:46 i never thought of a static compiler for Funge-98 ;) 18:48:48 lifthrasiir, same as if someone says C I assume non-draft last version (C99) unless otherwise specified 18:48:57 ah, well right 18:49:11 lifthrasiir, and if someone says python I assume python 3 :P 18:49:23 but i think Funge-98 is too complex that any statically-compilable subset is tiny 18:49:39 lifthrasiir, hm larger than 93s subset at least. 18:49:40 You can have a statically-compilable subset of programs, as opposed to the language. 18:50:00 lifthrasiir, anyway such a subset is really cheating 18:50:49 fizzie, you could do befunge 98 without x or self modification quite well I think 18:50:51 fizzie: a subset of all possible programs in given language can be regarded as a semantic restriction to that language, which can be another language 18:50:58 anyway. 18:51:22 and you could do x with threaded code 18:51:28 probably 18:51:34 The one I have for example supports programs that involve a not-easily-constant-foldable j only when that the j is directly followed by N direction-changing commands (like 'v') and you never hit that j with arguments that would jump outside them. 18:52:00 (So you can do jump tables with it.) 18:52:10 It's been written to be able to run fungot. 18:52:13 fizzie, a jumptable for all targets it could hit would work fine, then inserting labels there 18:52:38 anyway self modification is common in befunge, for loop conditions and so on 18:52:59 Common, schmommon; I don't really do much of it. 18:53:11 fizzie, fungot does self modification. it loads code in 18:53:19 Yes, but that's the only case. 18:53:20 fizzie: how do you determine that "p" won't modify the code? does it just store the funge space (not related to the code anymore)? 18:53:45 lifthrasiir: Yes, it just modifies the data, not the code. 18:54:30 So I guess a better way to say it would've been "supports p/g, they just don't modify the code even when they should". 18:54:31 fizzie, do you trace code or do you just compile it to an array? 18:54:33 can it reject the program that is statically compilable, or does it leave the rejection in the runtime? 18:55:09 if you do the former then i think it is close to the best possible we can do 18:55:10 lifthrasiir, you can't possibly do the former. And I doubt it does the latter 18:55:22 oh well. 18:55:33 lifthrasiir, you could do the former if you insert a "not" however 18:55:34 :P 18:55:39 (but not very well) 18:55:44 It doesn't try to figure out "illegal" uses of p, no. 18:55:59 Vorpal: ...awwwwww yes i forgot "not". 18:56:24 lifthrasiir, still it would be hard and probably miss out on several valid programs 18:56:33 to be exact, i wanted to add a "befunge-93-static" IL in esotope 18:56:47 lifthrasiir, I find the static subset to be cheating, but that is just me 18:56:53 *Still* building the allyesconfig. 18:56:58 lifthrasiir, and I care nothing for 93 18:57:05 98 or nothing 18:57:06 normally a befunge-like language cannot be translated to other languages (even to itself) 18:57:16 The JIT compiler spends quite a lot of effort in worrying about the potential effects of 'p', since a single p can invalidate quite a lot of stuff by e.g. changing the wrapping, or inserting a ; in the middle of a previously jumped-over ;...; jump. 18:57:18 lifthrasiir, quite 18:57:21 but once we can statically analyze the program, it can be translated to others 18:57:36 so i wanted to know the state of art 18:58:38 lifthrasiir, I think that 93-static is 1) cheating 2) uninteresting because it is a boring subset of befunge93 3) uninteresting because it is befunge93, not befunge98 18:58:43 but *shrug* 18:59:30 lifthrasiir, I'd suggest compiling to embedded interpreter, which is also boring. 18:59:40 JITTing it is however quite interesting 18:59:41 yes, that is a lot boring than the static analysis. 19:00:07 lifthrasiir, well okay that is marginally interesting. But I doubt it will give useful results for 93 19:00:08 Threaded compilation of Funge-93 is so much better, anyways. :P 19:00:22 lifthrasiir, 93 code tends to use every trick it can to fit into the small space 19:00:33 pikhq: but it's no use for conveting befunge-93 code to other esolangs. :p 19:00:34 lifthrasiir, for 98 code it would probably be easier to follow 19:00:57 lifthrasiir, surely you can do threaded code interpreters in other esolangs 19:01:00 lifthrasiir: Well, no, it's hardly even an interpretation technique. 19:01:04 suboptimally yes 19:01:15 Vorpal: right, it is an art. 19:01:18 More of a very trivial JIT. 19:01:26 pikhq, hm? 19:01:28 have you seen mtve's self-interpreter? 19:01:39 Vorpal: Threaded code interpreting can be viewed as a special case of JITing. 19:01:42 lifthrasiir, maybe. I tend to forget names 19:01:53 pikhq, oh true 19:01:58 The tracing of Funge-98 code is already quite tricky to do. You can constant-fold-as-you-go, but then if you hit the same sequence of code from some other branch the constant-folding is no longer necessarily valid; and for each basic block for best possible results you'd have to consider all possible stack states you can have when hitting it. 19:02:04 pikhq, except it can't deal with selfmodification. 19:02:04 an interpreter packed in 6x80 space. 19:02:17 Vorpal: Sure it can. My Funge-93 interpreter does. 19:02:29 lifthrasiir, right, I seem some 25x4 ones though. Or was it 5x25 19:02:33 well vertically anyway 19:02:53 pikhq, how? Is it threaded code? 19:03:13 You just modify the threading. 19:03:22 ...i think it has been loooong time after i stopped to follow the befunge scene ;) 19:03:24 pikhq, ah, an array that maps to functions? 19:03:27 well 19:03:30 function pointers 19:03:37 Goto labels. :p 19:03:38 Label pointers, actually. 19:03:50 The GCC-specific way of doing it. 19:03:52 pikhq, right, same idea anyway 19:04:00 well yes that works. 19:04:09 fizzie: Not GCC-specific... It also works on recent Clang. 19:04:12 pikhq, do you use different ones for different directions? 19:04:14 Mooz's implementation of that did macrology to do computed-gotos on GCC, separate functions and function pointers on elsewhere. 19:04:23 Vorpal: No, I have an overcomplicated step routine. 19:04:34 pikhq, I thought llvm ir didn't handle taking address of a label? 19:04:40 pikhq, ah 19:04:53 fizzie, macrology? 19:04:54 Vorpal: They made a point of getting computed goto to work. 19:05:12 fizzie, nice work 19:05:13 word* 19:05:36 pikhq, in the llvm ir or by frontend magic? 19:05:45 I dunno. 19:06:30 I seem to recall that there was computed-goto support in some clang version quite a while ago, but it was badly broken. 19:07:40 hm can you do continuations with it? 19:08:02 or I guess it doesn't allow call outside the function 19:08:26 (like for gcc) 19:08:30 They broke it in 2.7, and fixed immediately after. 19:09:10 heh 19:09:41 -!- Aune has joined. 19:09:53 The LLVM assembly was indeed quite strict when it comes to jumps; should perhaps check what it translates a simple example to. 19:10:36 hm 19:10:41 Well, *damn*. 19:10:49 33 megabytes for allyesconfig. 19:10:58 Oh my god the YouTube transcription thing is hilarious. 19:11:02 At least the jumps need to statically know where all they can lead; but, well, since it's function-internal, maybe it just includes all labels that have their addresses taken of anywhere in the function. 19:11:26 pikhq, hah 19:11:33 Phantom_Hoover: I used it on one of those Stanford machine learning lectures (while waiting for someone to fetch a laptop with audio support) that I was showing to students. It's really the bee's knees. 19:11:46 What was it like? 19:12:16 Oh my god the YouTube transcription thing is hilarious. <-- what, where? 19:12:27 It transcribed "conch" as "crotch" or "cock" (it was pronounced two different ways in the video; long story.) 19:12:41 Phantom_Hoover, I mean where do I find it 19:12:43 Vorpal: It's been in YouTube for ages; how are you only now hearing about it? 19:12:55 fizzie, I use youtube-dl, not flash 19:12:57 maybe that is why 19:13:18 Vorpal: It's also been discussed on-channel several times, and I think even once when you mentioned your youtube-dl use in the context, I think. :p 19:13:34 fizzie, possibly. I don't have perfect memory 19:13:36 Phantom_Hoover: http://www.youtube.com/watch?v=LBtuYU-HfUg has some real gems in the auto-transcribed captions. 19:13:38 unlike you 19:13:58 Vorpal: I'm only something like 60% confident on the above factoid, so... 19:14:15 fizzie, http://www.youtube.com/watch?v=xs_PwFWuwJs was the one I tried it on. 19:14:33 Phantom_Hoover: There are some rather boring long periods; but some quite funny parts too. 19:15:14 The language model they have isn't really trained for speaking about the EM algorithm for mixture-of-Gaussian models. 19:15:42 I think it did Gaussian -> calcium quite a few times. 19:15:57 "forfeiting a mixture of calcium smallville right and so" (real quote) 19:18:18 What he really said was "for fitting a mixture of Gaussians model... right, and so --" 19:18:27 So it's not really too far of; but still. 19:18:54 heh 19:21:14 I dislike this topic though, because when elliott logreads this bit, he's going to again start trolling me on the futility of speech recognition. 19:21:31 He does that? 19:22:42 Well, it has happened thrice or so now, I guess, so not *too* often. 19:22:52 How do you even troll on that? 19:24:13 -!- azaq23 has joined. 19:24:15 By being all "your life's work is meaningless AH AH AH ready to admit defeat?" all the time. 19:24:26 Usually I've opted just not to argue, so it is over quite fast. 19:24:33 Ah, right. 19:43:23 come on, it is definitely possible to decode speech. Humans manage most of the time. 19:44:20 and I don't think human brains have something that can't be emulated on computers except for the complexity 19:44:41 (which would definitely tax a modern computer) 19:47:30 -!- Sgeo_ has quit (Ping timeout: 240 seconds). 19:51:06 Yes, well, we'd hope to get something useful done even in this interim period before strong AI is solved. 19:51:58 (And I *could* argue the speech processing field in general does useful things -- it's just that I don't really like arguing that much.) 20:00:01 -!- zzo38 has joined. 20:00:11 Well, since I'm already so-called "screwed" w.r.t. a logreading elliott, I could also share a thing from the conference: http://p.zem.fi/4r1y 20:02:34 fizzie, same redacted all the way through? 20:02:54 Yes. 20:03:04 fizzie, anyone I know? 20:03:38 That would be what they call "telling". 20:04:24 A bit like redacting a .pdf with a black box on top of text without removing what's below. 20:04:33 Except perhaps a milder case. 20:04:52 fizzie, heh 20:04:59 I don't suppose it is really relevant anyway, it's not like he/she/it spoke very much in that bit. 20:05:05 fizzie, I didn't ask who it was. Just if it was someone from this channel 20:05:21 Yes, but that would still reveal information. 20:05:29 fizzie, I presume it was from irc 20:05:58 fizzie, you would not be afraid to reveal that it was someone from elsewhere, thus it is with high probability someone from the channel. 20:06:09 Yes, that much is true. I could've just re-explained, but since I had all that already typed. 20:06:22 By "that much" I refer to "from irc". 20:06:38 fizzie, it wasn't from this channel though. Was there an IRC channel for the conference? 20:06:56 Detective Vorpal is on the case. 20:07:03 Phantom_Hoover, heh 20:07:55 fizzie, anyway that link was highly interesting 20:08:05 Disregarding whether the person is on this channel or not, I'd at least think I'd act similarly to protect its identity. I did consider actually completely removing those comments. 20:08:25 No official conference IRC channel, at least that I heard of. 20:08:51 I guess that's more of a something they do in the hackerying/network-related conferences. 20:09:53 heh 20:10:08 fizzie, are you currently at that conference? 20:10:12 or back home? 20:10:24 No, it ended on Friday; came back yesterday. 20:10:36 That's funny, IEEE has an IRC server: http://ewh.ieee.org/econf/irc.html 20:10:46 (It was one of their conferences.) 20:11:00 fizzie, it vaguely reminds me of my work experience, except it was actually cool. 20:11:30 Phantom_Hoover, what does? The ferrets? 20:11:35 Yes. 20:11:42 really? 20:12:15 My work experience was with an uncle who works on BCIs, except their one can sometimes tell which blinking light out of an array of 4 you're staring at. 20:12:38 Phantom_Hoover, BCI being? 20:12:56 brain-computer interface? 20:12:57 ah 20:12:58 right 20:13:02 I need to sleep 20:13:04 gah 20:13:12 Phantom_Hoover, anyway that is cool 20:19:47 The "ferret-ear to spectrogram" mapping isn't incredibly surprising, since spectrograms are basically what the ear does; the thing on humans that actually got conscious intent expressed in some meaningful way was far more surprising, though. You could easily argue the whole source separation thing would happen on far higher levels, from where it'd be quite nontrivial to map back to a spectrogram. (Assuming you believe the guy, anyway.) 20:20:17 s/argue/assume/ 20:21:24 -!- cheater__ has quit (Ping timeout: 252 seconds). 20:22:27 fizzie, hm 20:22:58 fizzie, well, aren't there nerves to the ear going in both directions iirc? 20:23:30 -!- elliott has joined. 20:23:34 Well, yes; there is some amount of tuning-the-sensor-based-on-the-focus going on there. 20:23:39 Still. 20:24:03 fizzie, also could tuning the sensor based on the language. Have he tried doing this on music? 20:24:03 I can't find the ferret guy from the program; I must've misremembered which session he was in. 20:24:34 fizzie, I would be very interested in knowing if it works for music as well as for speech 20:31:54 Unfortunately I didn't note down the speaker's name, under the assumption that I could just look it up from the program; and now I can't seem to find it. 20:38:45 -!- evincar has left. 20:43:37 fizzie, hm xkcd as of a few days ago that clicking on the first non-italic link not in parenthesis in a wikipedia article would if repeated eventually always take you to "philosophy" 20:43:48 I done some experiments and so far it seems correct 20:44:00 Almost always. I have done it and it almost always is, not quite always. 20:44:20 zzo38, I imagine some stub pages might not have any link at all for example 20:44:46 (It is also described in the Wikipedia Department of Fun, and once I found the longest one but it changed and resulting in a loop so someone sent me a message about it) 20:45:00 Even without stub pages it sometimes happens that it doesn't. 20:45:08 zzo38, loops? 20:45:17 or just a different end page? 20:45:55 Look at my Wikipedia user talk page. 20:46:04 zzo38, what user name? 20:46:38 Zzo38 20:46:52 Vorpal, you could write up a script to test it a bunch. 20:47:01 Random page, apply procedure. 20:47:17 Lymia, not that interested 20:50:10 I think they had a links-only SQL dump available if you wanted to do that a whole lot; though I don't have a clue if that contains enough information to follow the "not in parenthesis" rule, probably not. 20:50:48 what with the dash over most, you'd think they are actively hunting these down: http://en.wikipedia.org/wiki/Wikipedia:Get_to_Philosophy#Articles_likely_to_loop_instead_of_going_to_Philosophy 20:51:23 Vorpal, you realise that someone already knocked a thing for this together? 20:51:46 Phantom_Hoover, for automating it? Yes probably. Did I indicate anything else? 20:52:00 http://ryanelmquist.com/cgi-bin/xkcdwiki for example 20:52:35 there is also the generalised version. 20:52:44 I'm *really* hoping people aren't editing WP to remove loops. 20:52:45 elliott, which is? 20:52:55 Phantom_Hoover, well to me it looks like they do 20:52:58 Hmm, http://xkcd.com/903/ is actually quite amusing. 20:53:06 elliott, yes 20:53:07 The caption is utterly unnecessary. 20:53:18 And the Wikipedia pages are way too detailed, it could be a lot more implied. 20:53:23 But the right-hand side conversation is funny. 20:53:28 elliott, however it works as it is 20:53:49 Yes but it's not a very good comic as is, just quite amusing. 20:54:47 Phantom_Hoover, well there is a comment in one of them suggested "fixed" 20:54:57 Phantom_Hoover, so... yes it looks like people are removing loops 20:54:58 sadly 20:55:19 Fixed probably just means "broken". 20:55:24 Don't addquote that, it's not funny. 20:55:58 elliott, yes they broke the loop 20:56:10 Not necessarily "they"; check who added it I guess. 20:56:19 true 21:00:38 fizzie: P.S. speech recognition sucks etc. 21:00:49 That took quite a while. 21:01:21 Does wikipedia has a "svn/git/hg/foo blame" style thing that'd show the page but subdivided into non-overlapping blocks with the latest person-to-edit annotated? 21:01:23 I wasn't going to logread until PH bugged me about it. 21:01:46 A conspiracacy. 21:01:55 I wasn't going to logread until PH bugged me about it. 21:01:57 Phantom_Hoover, !!!! 21:02:28 Though I was under the impression you logread absolutely everything. 21:02:37 I usually do, but the log looked boring. 21:02:40 (It is/was.) 21:03:59 12:56:49: Using the NumPy and SciPy libraries will give you the tools you need to solve harder math problems. 21:03:59 12:56:51: :D 21:03:59 12:57:22: yeah i prove most my graph-related theorems using numpy 21:03:59 13:08:11: oklopol, but isn't python rather slow, both to execute and to program in. 21:03:59 13:08:27: I mean, a higher level language might be better, and also likely faster 21:04:02 13:08:36: hm 21:04:06 Left without comment. 21:04:32 elliott, read the next few lines please 21:04:38 Waah. 21:04:41 they are important :P 21:05:18 night → 21:05:50 13:33:33: Phantom_Hoover, interesting, googling PCMCIA rule 34 with safe search off gives me nothing still. 21:05:50 [...]13:46:39: Phantom_Hoover, anyway it seems rule 34 is thus invalid. That is a much more interesting fact. 21:05:57 Honestly, I am not going over the metaphysical definitions again. 21:06:06 You just don't understand four-dimensional pornographic platonism. 21:07:19 type-2 pcmcia cards have two rows of *34* pins - coincidence? 21:08:00 Re the boring-looking log: well, you know what they say: #esoteric is like a box of chocolates; often there's two layers, with a thin sheet of paper in-between. 21:08:41 fizzie, I've more often seen cardboard. 21:09:53 -!- Vorpal has quit (Ping timeout: 244 seconds). 21:15:39 16:19:52: Lymia, well my point was sram is larger than dram in real life. And you can't do dram in minecraft 21:15:39 16:20:06: Lymia, the most compact memory would be delay lines 21:15:39 16:20:15: Vorpal, no clue how those work. 21:15:39 16:20:23: Would it do well for Brainfuck? 21:15:39 16:20:29: not really no 21:15:41 16:20:35: delay lines are not random access 21:15:43 16:21:00: Is it possible to shift them right/left? 21:15:45 16:21:05: Lymia, they work by sending data down a slow loop, cycling it back at the end to form an infinite loop 21:15:48 iirc pikhq's delay-line mc ram is good 21:15:58 elliott, can you shift a delay line right or left? 21:16:01 16:23:49: augur, looks cool but aligning that stuff in ascii would probably take more time than writing it out linearly 21:16:07 If you can do that, it's perfect for Brainfuck. 21:16:08 it comes with a custom editor written in xemacs 21:16:10 but that's epigram one 21:16:14 which is so obsolete it isn't even funny 21:16:21 Lymia: ask pikhq 21:17:06 Or... 21:17:18 Can you build a clock you can slow down for one tick, or speed up one tick? 21:17:24 Lymia: ask pikhq 21:17:43 16:37:45: Lymia, tell elliott. He believes I'm the only sane person here. 21:17:43 i believe that is oerjan's statement, actualyl. 21:17:46 [asterisk]actually. 21:17:47 or ais'. 21:18:05 16:39:50: Vorpal: you should run the CPython translated by Emscripten in your browser ;) 21:18:05 16:40:01: it's insane, but it works 21:18:05 16:40:03: lifthrasiir, ouch. 21:18:05 16:40:25: lifthrasiir, in firefox. With 2 GB RAM in the system. No thanks. 21:18:12 it is actually very fast/lightweight 21:20:53 17:37:24: lifthrasiir, I found map less than useful for bf optimisation. Since there might not be an 1:1 map of number of elements 21:20:57 um concatMap? 21:22:44 18:13:52: Vorpal: A C-to-BF compiler, with as limited extensions as possible. Call it a BF-based VM. 21:22:44 18:14:13: evincar, ais wrote the beginnings of a gcc backend generating bf 21:22:44 18:14:22: I don't think he finished the bfasm -> bf bit 21:22:46 there is also c[two]bf 21:24:23 18:35:24: Vorpal: Maybe you should shut up. 21:24:23 18:35:27: We get it. 21:24:23 18:35:38: And you're going to talk about this for two more months. 21:24:23 [...] 21:24:26 18:35:51: Maybe you should shut up. 21:24:26 18:36:31: *Your argument is falling on deaf ears, because I don't care*. 21:24:37 pikhq: You have surely realised by now that the only way to stop Vorpal repeating himself is to not reply. 21:26:05 fizzie: What is this static Funge subset compiler? 21:26:06 Not jitfunge? 21:26:56 No, I think I called it "funcot", and it was just barely enough to run fungot; but a horrible mess in all other respects. 21:27:09 How recent? 21:27:27 19:43:23: come on, it is definitely possible to decode speech. Humans manage most of the time. 21:27:27 Sure, it's just USELESS AND SHITTY. 21:27:40 April 2010, it seems. 21:27:45 Unfortunately fizzie has yet to realise this because of his mid-life crisis. :( 21:28:03 Yeah, I'm not going to discuss *that*. 21:28:12 Ah, he is afraid of the truth. 21:29:38 -!- elliott has quit (Remote host closed the connection). 21:29:41 -!- elliott_ has joined. 21:36:53 -!- pikhq_ has joined. 21:37:12 -!- pikhq has quit (Ping timeout: 255 seconds). 21:37:48 pikhq_: Congratulations, you've tempted me into writing my own BF compiler. 21:37:56 elliott_: \o/ 21:38:01 pikhq_: But generating assembly? That's loser talk. I'm going to generate raw ELF binaries. 21:38:06 With manually-assembled headers. 21:38:34 BTW, I have got to say, GNU Stow is very nice for managing ~/local/ 21:39:23 Mmm, lightweight package management. 21:40:48 -!- eremitah`off has quit (Ping timeout: 255 seconds). 21:42:36 pikhq_: The problem with BF optimisation is that you have to hardcode things like addition loop recognition just to get even basic optimisation done. :/ 21:42:52 -!- eremitah`off has joined. 21:42:56 Yuh. 21:43:06 And I don't like hardcoding such things. 21:43:41 pikhq_, is addition loop recognition implicit in your code? 21:44:04 If there is 256 possible values in one cell then can you code it with tables? 21:44:14 zzo38: I mean the recognition of it. 21:44:26 Lymia: Addition loop recognition is nonexistent in my code. 21:44:34 It's a naive peephole optimiser! 21:44:46 That... Works astoundingly well. 21:45:29 pikhq_, does it manage to turn addition into addition? 21:45:53 Nope! 21:46:08 Could you do that with that weird optimization you talked about? 21:46:16 ... What weird optimization? 21:46:32 Shouldn't be anything weird in it. 21:46:34 The one with the math. 21:46:36 * Lymia hides. 21:46:39 That wasn't me. 21:46:44 pikhq_, the one involving iteration counts. 21:46:47 That wasn't me. 21:46:54 Oh. 21:46:55 Wrong person. 21:47:06 Probably thinking of lifthrasiir or Vorpal. 21:47:14 They're the ones with the actually high-quality compilers. 21:47:22 it was lifthrasiir going mad explaining basic arithmetic to Vorpal >:) 21:47:36 pikhq_: Technically it's just one compiler and its copy-paste language-translation. 21:47:44 (See also: CCBI and its unofficial, incomplete port, cfunge.) 22:06:56 -!- MigoMipo_ has joined. 22:10:18 -!- MigoMipo has quit (Ping timeout: 260 seconds). 22:13:53 -!- lament has quit (Ping timeout: 276 seconds). 22:28:07 -!- MigoMipo_ has quit (Read error: Connection reset by peer). 22:42:33 -!- Patashu has joined. 22:57:15 pokfesgj 23:05:23 -!- Aune has quit (Quit: Hath Deprated). 23:14:33 -!- BeholdMyGlory has quit (Remote host closed the connection). 23:47:43 -!- eremitah`off has changed nick to eremitah. 23:52:04 -!- eremitah has left. 23:58:58 -!- Lymia has quit (Ping timeout: 260 seconds).