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