←2010-04-10 2010-04-11 2010-04-12→ ↑2010 ↑all
00:03:34 -!- Alex3012 has joined.
00:04:49 -!- augur has joined.
00:11:45 -!- adam_d has quit (Ping timeout: 276 seconds).
00:14:27 -!- Tritonio_GR has joined.
00:16:35 -!- Tritonio_GR1 has quit (Ping timeout: 246 seconds).
00:22:52 <alise> iPhone OS 4.0: multitasking++ folders++ threaded mail++ book thing++ ultra-draconian restrictions basically outlawing writing your application in anything other than objective-c at any step(!) in the development process---------------------------------------------------------------------
00:22:53 <alise> swing and a miss
00:23:05 -!- comex has quit (Ping timeout: 276 seconds).
00:23:19 <Sgeo> Wait, wait, wait
00:23:28 -!- comex has joined.
00:23:30 <Sgeo> You can't use, say, Haskell to generate Objective-C code?
00:24:11 <pikhq> Correct.\
00:24:36 <pikhq> alise: Objective-C, C, or C++. So. The crap languages.
00:24:47 <alise> Sgeo: indeed
00:24:55 <alise> pikhq: well good luck calling the objective-c iphone apis from c/c++
00:25:00 <alise> without using the objc message send functions directly
00:25:16 <alise> i may just throw away my iphone
00:25:17 <pikhq> alise: True.
00:26:12 <alise> although this makes me really want an ipad, as much as I really know I don't want one: http://www.touchpress.com/
00:26:53 <alise> it's an ebook, no, it's a fact explorer, no, it's a data sheet, no, it's a database with computation!
00:26:57 <pikhq> alise: They also ban "Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited"
00:27:07 <Sgeo> How would they KNOW?
00:27:09 <alise> must. make. myself. hate.
00:27:10 <pikhq> This bans... Cross-platform C libraries.
00:27:19 <alise> Sgeo: Do you want to try their patience? And because of the structure of the code.
00:27:23 <alise> Not patience.
00:27:24 <alise> Whatever.
00:27:39 <pikhq> Sgeo: You submit your code to them, and they sign the resulting binaries if it's to their liking.
00:28:12 <Sgeo> What is the POINT of forbidding even generated code, as long as the generated code is readable enough?
00:29:03 <pikhq> Sgeo: Lockin.
00:29:41 <Ilari> That latter restriction about compatiblity layer sounds like pure lock-in anyway.
00:29:45 <pikhq> "Oh, you want to develop for the iPhone? Well fuck your efforts to develop for anything else."
00:29:50 <alise> pikhq: hm?
00:29:52 <alise> no, you submit binaries...
00:29:55 <alise> afaik
00:30:02 <pikhq> alise: Ah.
00:30:11 <alise> they'll just do heuristics on the machine code, most likely
00:30:23 <alise> easy enough I'm sure: unless it's a simple to-gcc compiler
00:30:29 <alise> that optimises heavily enough to erase runtime stuff
00:30:36 <alise> and detecting libraries will be easy
00:31:05 <pikhq> Ilari: They did this in response to Adobe making a Flash compiler targeting iPhone OS.
00:31:09 * Sgeo is considering buying a T-Mobile G1 and putting an AT&T card in it, to avoid contracts
00:31:26 <pikhq> So people could make apps in Flash and stick it on the iPhone.
00:31:34 <AnMaster> <pikhq> alise: They also ban "Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited" <-- who are they?
00:31:36 <alise> AT&T? Why would you want to be with that network?
00:31:47 <alise> pikhq: don't tell AnMaster, he's the one making a big deal about ignoring me
00:31:51 <Sgeo> alise, because that's what we're currently using, and my dad doesn't feel like switching
00:31:52 <pikhq> AnMaster: "Apple".
00:31:55 <alise> pikhq: bah
00:32:03 <AnMaster> pikhq, oh for ipod?
00:32:05 <AnMaster> err
00:32:07 <alise> lol fail
00:32:07 <AnMaster> iphone*
00:32:07 <pikhq> AnMaster: Also, you're a retard who doesn't pay attention to anything.
00:32:14 <alise> Sgeo: They /dislike people using their network connection, and blame them for their bad performance/.
00:32:18 <AnMaster> pikhq, no I have ehird on /ignore
00:32:20 <AnMaster> that explains it
00:32:25 <alise> alise is the name.
00:32:30 <alise> respect it or stfu.
00:32:44 <pikhq> AnMaster: ... The topic in question is fairly well-known by now.
00:32:54 <AnMaster> pikhq, I don't really care about apple products
00:33:02 <Sgeo> alise, not a chance in hell of convincing my dad to switch, though
00:33:10 <Sgeo> He's of the "It's good enough for now" opinion
00:33:32 <alise> Sgeo: well, you cannot buy a T-Mobile G1 without a contract. Besides, you don't want a G1: they can only run old versions of the OS and are very slow.
00:33:47 <alise> If you really want to, get a Google Dev Phone: a G1 without contract. But it's much more expensive.
00:33:51 <AnMaster> pikhq, if I started talking about advanced flight aerodynamics and helicopter simulation, would you follow me then? Unless you share that special interest or work within the area, I doubt it
00:34:01 <Sgeo> Hm
00:34:11 <Sgeo> I'd buy a Nexus One, but it's expensive without contract
00:34:13 <AnMaster> same thing really, I'm not very much interested in apple
00:34:24 * Sgeo wants "cheap without contract"
00:34:34 <Sgeo> Preferably Android, not iPhone
00:34:35 <alise> Sgeo: And I want a pony.
00:34:43 <alise> Go to Finland; their phones are mostly without-contract.
00:34:54 <alise> iPhone, cheap? Ha! The non-contract 3G S is about $700 or so.
00:34:54 <AnMaster> Sgeo, do you need a smartphone?
00:35:05 <Sgeo> AnMaster, I want one
00:35:08 <alise> Of course he needs a smartphone, otherwise he could just buy any old crud for $3.50
00:35:13 <AnMaster> ah
00:35:41 <AnMaster> Sgeo, an IQ 100 phone isn't too expensive ;P
00:35:59 * AnMaster has a "nokia 3120 classic", which isn't even symbian.
00:36:08 <AnMaster> I think it is S40 or such. Not sure
00:36:18 <AnMaster> it has java and flash though, no touch screen
00:36:23 <alise> Thanks for telling us about /your/ phones, AnMaster: we care.
00:36:39 <alise> In fact, it is very relevant to the discussion as dumbphones are comparable in every way to smartphones and have a direct link as far as advice goes.
00:36:56 * Sgeo has a RAZR :/
00:37:00 <AnMaster> RAZR?
00:37:11 <AnMaster> oh motorola
00:37:30 <AnMaster> Sgeo, clamshell, don't they easily break?
00:37:42 <Sgeo> This one has survived many falls
00:37:52 <alise> razr that's oldschool
00:38:27 <AnMaster> Sgeo, no I mean in the hinge due to wear when opening it and such
00:38:40 <Sgeo> AnMaster, *shrug*
00:39:24 <AnMaster> Sgeo, I had a clamshell model before. Some old Ericsson. It had problems in the hinge after some time
00:40:05 <AnMaster> Sgeo, ah yes: http://en.wikipedia.org/wiki/Ericsson_T28
00:40:26 <AnMaster> it still had an antenna sticking out at the top
00:40:39 <AnMaster> why did they remove them btw?
00:41:29 <alise> ?- \+ (nat(N), \+ (N+N =:= 2*N)). ;; I wish this terminated
00:41:32 <Sgeo> Does the Dev phone cost less than Nexus One?
00:42:00 <Ilari> I had some clamshell Siemens phone (actually two of them). Both died in the same way (just suddenly didn't start / charge).
00:42:10 <alise> Sgeo: contractless? dunno
00:42:17 <alise> on contract all phones will be cheaper than dev
00:42:17 <AnMaster> "It was probably best known as the first phone that used Lithium polymer batteries.[1]" huh? I never knew that
00:42:25 <alise> Sgeo: note that the dev phone, not only is it expensive, but seriously the g1 is shit
00:42:33 <alise> you can only use an old version of the OS, and it is very slow
00:42:42 <Sgeo> Hm
00:43:06 <Sgeo> alise, are you SURE that the T-Mobile G1 can't be had without a contract for cheap?
00:43:31 <Gregor> The Nexus One is available without a contract.
00:43:56 <Sgeo> Gregor, it's expensive
00:44:10 <Gregor> Yup, that's the nature of phones in the US.
00:44:43 -!- Gregor has set topic: Topic closed by the moral police | fuck the police | (pics or it didn't happen) | (so it didn't happen then?) | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
00:45:13 <alise> Sgeo: I am sure.
00:45:18 <Sgeo> Difference between Droid and Droid Eris?
00:45:36 <alise> No idea. The Droid apparently has some serious shittiness issues.
00:45:48 <Sgeo> Oh?
00:45:49 <alise> Eris has been axed, it seems.
00:46:07 <alise> Yes; I don't recall what exactly but I remember some criticisms of the Droid as it basically being tatty and badly-made.
00:46:22 <alise> Honestly I'd just splash out for the Nexus One, as it isn't on contract at all.
00:46:33 <alise> And you can buy it ready for AT&T.
00:46:56 <alise> And, well, it's the latest and greatest, so you won't be disappointed.
00:47:03 <Sgeo> The tough part is convincing my dad to pay $529
00:47:08 <alise> It's $529, which is an alright price for a brand-new unlocked phone.
00:47:10 <alise> Sgeo: Well, yeah.
00:47:16 <alise> A dip into the piggy bank might help...
00:47:18 <AnMaster> <Gregor> Yup, that's the nature of phones in the US. <-- import from EU?
00:47:37 <alise> AnMaster: l o l
00:47:46 <AnMaster> of course shipping may be more
00:47:50 <Sgeo> And my understanding is that if I buy Nexus One for AT&T, even though it's "unlocked", it will only work with AT&T
00:48:03 <AnMaster> Sgeo, how is that "unlocked" then?
00:48:11 <coppro> Sgeo: the reason contractless phones are not cheap is because they subsidize the phones if you buy them alongside contracts
00:48:32 * AnMaster has a contractless phone
00:48:41 <coppro> AnMaster: network setups vary from provider to provider; it may not work with providers that do not have the infrastructur
00:48:43 <coppro> +e
00:49:29 <AnMaster> coppro, huh? isn't that standardised?
00:49:34 <Gregor> AnMaster, Sgeo: Although all American networks use the same GSM bands, they use different 3G bands, so the 3G still won't be compatible.
00:49:51 <Gregor> If the phone just supported all 3G bands, it would work on all networks.
00:49:57 <AnMaster> coppro, eh. what about those "dual band" phones and such?
00:50:30 <Gregor> The Nexus One is tri-band over GSM and tri-band over 3G, but that's not sufficient to cover all the necessary bands.
00:50:30 <AnMaster> err
00:50:31 <AnMaster> Gregor, ^
00:50:45 <Gregor> It would have to be sinc-band :P
00:50:51 <AnMaster> Gregor, "sinc"?
00:50:58 <alise> I have this huge urge to write a program to generate theorems.
00:51:07 <Gregor> Five
00:51:13 <AnMaster> heh
00:51:32 <AnMaster> Gregor, who needs 3G anyway ;P
00:51:48 <Gregor> <AnMaster> Now that Sprint has _4G_!
00:52:03 <AnMaster> it does?
00:52:13 <AnMaster> iirc there is 4G by Telia in some parts of Stockholm
00:52:15 <Gregor> Claims to anyway *shrug*
00:52:26 <Gregor> "First nationwide 4G network"
00:52:34 <AnMaster> Gregor, but what I was aiming at was GSM + EDGE
00:52:39 <AnMaster> that may be GPRS
00:52:42 <AnMaster> works fine for me
00:52:53 <Gregor> Sprint is a totally different technology, not GSM or related.
00:52:58 <Gregor> It's CDMA (?)
00:53:00 <AnMaster> it's like 640 kB. Enough for everyone.
00:53:18 <Gregor> "No one will ever need more than 640K of <whatever>"
00:53:46 <AnMaster> Gregor, basically, I have this when using my phone for data traffic: http://en.wikipedia.org/wiki/EDGE
00:54:44 <Ilari> I guess that Sprint 4G is WiMax or something related (and that Telia 4G is LTE or something).
00:55:07 <AnMaster> Ilari, I have no idea
00:55:40 <AnMaster> Ilari, google seems to indicate it is LTE
00:55:43 * Sgeo is somewhat scared he might end up dropping the phone
00:56:17 <AnMaster> "* On December 14, 2009, the world's first publicly available LTE service was opened by TeliaSonera in the two Scandinavian capitals Stockholm and Oslo."
00:56:22 <AnMaster> says Wikipedia
00:57:03 <Sgeo> My dad has suggested the possibility of just getting an iPod Touch
00:57:22 -!- augur has quit (Ping timeout: 252 seconds).
00:57:46 <Ilari> Actually, current LTE is pre-4G (AFAIK, no official specs on final actual 4G yet).
00:57:59 <Sgeo> I was talking to someone on the bus, and he had a Nexus One. He complained about the keyboard. I tried it. The only thing that I disliked about it was that when I turned the phone to the side, there was a bit of a delay
00:58:13 <Sgeo> And I prefered the keyboard in the turned-to-the-side mode than regular
01:00:04 <Sgeo> What's the main language for Android dev.? Java? Can I develop in Haskell?
01:02:07 <alise> java.
01:02:10 <alise> sort of.
01:02:25 <alise> you can do stuff in haskell then do the ui in java, with tweaking, and you can write whole programs in e.g. python with android scripting environment
01:02:36 <alise> Sgeo: ipod touch has no mobile internet
01:02:48 * alise tries to wrangle prolog into spitting out algebraic identities
01:02:58 <Sgeo> alise, I know, and that would really really suck
01:03:33 <alise> it would
01:03:36 <alise> the ipod touch is near-useless
01:04:01 <Sgeo> Currently, it seems like the plan is to just get me Intenet access on my current phone
01:04:11 <Sgeo> s/phone/plan/
01:04:18 <Sgeo> Which would be needed anyway for the Nexus One
01:04:32 <Sgeo> So I need to convince my dad to spend $529 extra :/
01:04:37 <Sgeo> I can chip in maybe $150
01:06:36 <AnMaster> <Sgeo> What's the main language for Android dev.? Java? Can I develop in Haskell? <-- can't you do native nowdays iirc?
01:06:54 <AnMaster> <Sgeo> So I need to convince my dad to spend $529 extra :/ <-- wth?
01:07:03 <AnMaster> Sgeo, internet is expensive there
01:07:08 <Sgeo> AnMaster, I want a Nexus One
01:07:30 <Sgeo> He's def. going to give me Internet access one way or the other
01:07:39 <AnMaster> Sgeo, is that $529 per month on the plan?
01:07:43 <AnMaster> or what?
01:07:54 <Sgeo> AnMaster, $529 total for the Nexus One
01:07:57 <AnMaster> oh
01:07:58 <AnMaster> I see
01:08:03 <AnMaster> that makes a LOT more sense
01:11:32 <alise> i'm trying to make prolog spit out algebraic identities just by making a bunch of rules id(A,B)
01:11:55 <alise> but the problem is that prolog tries to give me tons of examples for the variables in A and B where it fits as opposed to saying "yes, true for 'enm all"
01:11:56 <alise> *em
01:22:04 <Sgeo> Is there any kind of insurance in case my phone breaks or gets lost or stolen?
01:25:58 <alise> apart from the police? no
01:26:13 <alise> well my identity printer keeps printing A+-A=0 again and again and again :(
01:27:20 <alise> i'm trying to make it print shallow (less than a certain number of nested applications), non-A=A, identities :(
01:29:04 <Sgeo> I have a terrible track record when it comes to phones
01:29:25 <Sgeo> Although I can get my email address engraved on it, so
01:43:46 <alise> why is this stupid code not parsing...
01:48:16 <Sgeo> How vulnerable is the Nexus One to breaking, compared to the RAZR?
01:48:17 <alise> oh
01:48:21 <alise> Sgeo: I don't know.
01:48:38 <alise> It's less "tough", probably, because it has heavy complex electronics, not just thin lightweight plastic.
01:48:46 <alise> But on the other hand it will have a thicker coating.
01:49:05 <alise> Just try not to drop it. I've dropped my iPhone a few times and it's been fine, but never from much of a distance and not really onto hard concrete.
01:49:11 <alise> They're solid things, smartphones, generally.
02:02:49 <alise> I would really like to write a computer algebra system in Prolog.
02:03:17 <alise> Although really I'd need to add some sort of nested application syntax, so that I could write:
02:03:33 <alise> ...well, things, without a bunch of sequential existentials
02:04:05 <alise> Say g[x,f[x,y,z],z] = f(x,y,z,R), g(x,R,z,R2) or something.
02:04:14 <alise> Where R2 is automatically the "result parameter" of a function if you do e.g.
02:04:25 <alise> f[x] := foo[x,bar[x,x],x]
02:04:33 <alise> which would translate to
02:04:56 <alise> f(X, R) :- bar(X, X, R1), foo(X, R1, X, R).
02:05:02 <alise> still, I don't like the []s
02:07:43 * Sgeo offered to pay $300 from his own money
02:08:11 <alise> Hmm, this would also generalise to variables:
02:08:34 <alise> x := f[x,y,z] => x(R) :- f(x,y,z,R).
02:08:49 <alise> Although with side-effects it'd have to be more.
02:15:25 <Sgeo> Can I run Marketplace applications in the Android emulator?
02:18:33 <alise> I don't know. Look it up?
02:19:37 * Sgeo will just try it
02:26:34 * alise wonders how best to write the function [true,true,true,false,true,true,false,false,false,...] => [3,2] in Prolog
02:27:04 <alise> i.e. unary "true"s form a number, then false is a list separator; two falses in a row end the list
02:45:28 <Sgeo> Emulator took a while to start
02:48:41 <alise> I want F: list nat -> Boolfuck
02:48:44 <alise> such that
02:48:49 * Sgeo wonders how to fake multitouch
02:49:15 <alise> forall n in xs, eval_with_some_appropriate_input_method (F xs) n = xs[n]
02:49:48 <alise> (use parallel processing with timeout; basically, generate tons of boolfuck programs until they generate the first length(xs) terms correctly for those inputs, then return it)
02:50:34 <Sgeo> If my phone actually starts ringing, I'll scream
02:50:46 <alise> ring ring
02:50:47 <alise> ring ring
02:52:27 <Sgeo> It's impossible to use the notifications thing like this
02:52:42 <alise> are you using the latest os version?
02:52:45 <alise> i.e. the one on nexus one
02:52:53 <alise> or does it only do the ugly old ui one
02:53:01 <alise> i'm considering buying a nexus one now
02:54:06 <Sgeo> It's the latest OS version, but I think the Nexus One is a bit modified, and I'm not sure how to get it on here
02:54:12 <alise> is it 2.1?
02:54:12 <alise> eclair?
02:54:14 <alise> if so cool
02:54:16 <alise> and i don't think you can
02:55:05 <alise> Sgeo: btw the nexus one has some slight colour issues -- can't find a link right now -- but basically
02:55:28 <alise> some (pathological) greyscale images can produce dull colours due to the way the screen works (basically silly subpixel magic to boost resolution)
02:55:42 <alise> side-effect is that text is less sharp than on the Droid, despite having a "higher" resolution (not if you compare by the same metric)
02:55:49 <alise> but somehow I doubt you'd notice it, were you not looking
02:55:55 <alise> and in every other way the nexus one is better
02:56:15 <alise> Sgeo: besides...the nexus one has a fucking 1ghz cpu
02:56:49 <Sgeo> I think offering to pay $300 of it with my own money is helping convince my dad
02:57:06 <Sgeo> Just wish it wasn't effectively locked into AT&T
02:57:14 <alise> you will be able to crackunlock it :P
02:57:28 <alise> Sgeo: btw if you are expecting the on-screen keyboard to be nice for long periods of time -- say ircing for more than 15 minutes --
02:57:36 <alise> you will (probably) be disappointed
02:57:47 <alise> I mean, I get fed up with the iPhone keyboard and it's better than Android's
02:57:53 <alise> if you have patience it should be fine though
02:58:01 <alise> but what i'm saying is... you're not going to write emails on this thing
02:58:05 <Sgeo> It's better than typing with what the RAZR has
02:58:10 <alise> quite
02:58:21 <alise> but when you have a smartphone you want to do MOAR
02:58:31 <Sgeo> I actually got to play a bit with a Nexus One
02:58:43 <Sgeo> Talked to someone who goes to my school while we were on the bus
02:59:38 <alise> hmm... droid vs nexus one: droid's keyboard is a tiny tiny thing, don't like it; droid only has 2.0 for now (2.1 soon); droid only has 550 mhz vs 1ghz (!); apparently droid's actual making is a bit flimsy; droid has 256 megs of ram vs 512; text is noticably sharper on droid, doesn't have the colour issues the nexus one does
02:59:50 <alise> (the droid screen is pretty amazing -- 265 dpi!)
03:00:07 <alise> so basically if you care about the screen a lot go droid, but if you care about having an actually nice phone go with the nexus one
03:00:08 <Sgeo> Locked-into a contract is apparently not an option
03:00:12 <alise> besides
03:00:14 <alise> only verizon has droid
03:00:21 <alise> and... verizon suck donkey balls
03:00:31 <Sgeo> More than AT&T?
03:00:40 <alise> yes.
03:00:45 <alise> verizon are the ultimate suck - and I'm not even in the us
03:00:50 <alise> they brand the phones with their name and such
03:00:57 -!- Alex3012 has quit (Quit: ChatZilla 0.9.86 [Firefox 3.6.2/20100316074819]).
03:00:57 <alise> I get the impression that Sprint is the best network
03:01:05 <alise> but they're CDMA like verizon, not GSM
03:01:09 <alise> so less phones support 'em
03:01:35 <alise> Sgeo: oh the nexus one display is OLED, that's awesome
03:02:00 <Sgeo> I think the only other real option is iPod Touch
03:02:00 <alise> get it, /anything/ that causes any sort of profit for OLED producers is a good thing
03:02:11 <alise> ipod touch isn't really an option if you want to actually do smart things with your phone
03:02:25 <Sgeo> Which is not QUITE as bad as it sounds because there are a LOT of wifi hotspots near where I live
03:02:26 <Sgeo> But still
03:03:52 <alise> if you like xkcd, xkcd has a droid and says the screen is the most orgasmic thing ever created
03:04:04 <alise> if you like xkcd you're retarded
03:04:24 <Sgeo> How long does it take an Android phone to power down? o.O
03:04:34 <alise> "These issues aside, Im really happy with my Droid. The screen is incredible, its much faster and easier to use than the G1, and I wouldnt trade away the physical keyboard and persistent SSH for anything."
03:04:39 <alise> Sgeo: Who powers down a smartphone?
03:04:41 <alise> There's a lock button.
03:04:55 -!- Alex3012 has joined.
03:05:14 <Sgeo> alise, what about temporarily preventing calls from being received?
03:05:28 <Sgeo> Um, how do I stop the emulator from shutting down?
03:05:46 <alise> stopping calls from being received is pressing hang up whenever someone tries to call.
03:05:54 <alise> or turning on aeroplane mode or analogous :P
03:06:04 * Sgeo currently uses airplane mode
03:06:31 <alise> Sgeo: Android bug, be warned: "# Sometimes, when arranging home screen icons, you feel sad and youre not sure why." --xkcd
03:06:39 <Sgeo> lol
03:06:53 <alise> "# Sometimes the GPS stops getting locks on satellites until the phone is rebooted. (This may be related to the GPSStatus app, installed to avoid this kind of thing.) To be fair, satellites are very small and far away, so you can hardly blame it for having trouble."
03:06:57 <alise> http://blog.xkcd.com/2010/02/08/android-bug-reports-songs-rovers/ --etc
03:07:25 <alise> "# Sometimes an Android user will think they hear someone say their name, but theyre not sure, so they say Yes?, but then it turns out it was something else."
03:07:29 <alise> "# Occasionally, when swiping the lock sideways to unlock the phone, the lock button images are rotated by 90 degrees. This is probably connected to your Jabber server somehow."
03:07:35 <alise> I could go on; it's the funniest thing xkcd has written in years.
03:09:36 * Sgeo clicks the emergency call button
03:09:58 * Sgeo dials a non-emergency number
03:10:16 <Sgeo> "Call not sent, ******* is not an emergency number!"
03:10:54 * Sgeo is so glad that this thing can't make actual calls
03:11:06 <Sgeo> Because if it could, I just accidentally prank-dialled 911
03:11:31 <Sgeo> It thinks 999 is not an emergency number
03:12:18 <Sgeo> So, after putting in the wrong pattern 5 times, it forces you to wait 30 seconds
03:13:11 -!- songhead95 has joined.
03:13:13 <alise> "911 <Call>" "...beep...beep..." "Uh, sorry, wrong number. <click>"
03:13:19 <alise> I meant to dial 495398459911.
03:18:44 * Sgeo still can't see a way to access the Marketplace from the emulator
03:18:51 <Sgeo> It does have Internet access, though
03:24:32 -!- dslex has joined.
03:24:57 -!- dslex has left (?).
03:27:56 -!- BeholdMyGlory has quit (Remote host closed the connection).
03:28:17 <Sgeo> " The certificate is used only to establish trust relationships between applications, not for wholesale control over whether an application can be installed. The most significant ways that signatures impact security is by determining who can access signature-based permissions and who can share user IDs."
03:28:18 -!- songhead95 has quit (Read error: Connection reset by peer).
03:29:05 <alise> Sgeo: http://www.displaymate.com/Nexus_iPhone_ShootOut.htm
03:29:10 <alise> that's just the disply
03:29:23 <alise> note that the bad assessment of nexus one is based on the perspective of someone who really cares about displays
03:29:45 <Sgeo> I would rather just get something not restrictively locked down
03:30:21 <alise> for instance:
03:30:26 <alise> (protip: nothing)
03:30:57 <alise> "Buy the phone without service and insert your own SIM card. Includes a Nexus One phone case, wall charger, and USB cable. Free shipping in the continental US."
03:30:57 <Sgeo> Android's locked down?
03:30:59 <alise> not locked down at all
03:31:06 <alise> Sgeo: dude i'm talking about the nexus one
03:31:10 <alise> which runs... android
03:31:23 <alise> Two versions of the device are currently offered. Both versions support four GSM radio frequencies (850/900/1800/1900), but the supported 3G/UMTS bands will differ depending on the version selected. When ordering, you'll be able to select either of the following devices:
03:31:24 <alise> * 3G coverage on networks that use the 850 MHz, 1900 MHz, and 2100 MHz frequency bands (recommended for use on AT&T in the US)
03:31:24 <alise> * 3G coverage on networks that use the 900 MHz, AWS, and 2100 MHz frequency bands (recommended for use on T-Mobile in the US)
03:31:24 <alise> all it is is
03:31:29 <alise> the bands the two use are different
03:31:32 <Sgeo> I meant, locked down in terms of installable software
03:31:42 <alise> so the AT&T one will get better coverage with AT&T
03:31:46 <alise> it'll still WORK with t-mobile
03:31:49 <alise> just not as well for hardware reasons
03:31:55 <alise> Sgeo: howso
03:32:00 <alise> nexus one has marketplace
03:32:05 <alise> and you can install your own package files
03:33:05 <alise> Users are able to gain root privileges on the device by unlocking its bootloader using the fastboot command "fastboot oem unlock."[46] Unlocking the bootloader allows the user to install other firmware images that give the user root access. Obtaining root privileges enables a user to override protected operating system features, install arbitrary software, and enable internet tethering to share the phone's 3G network connection via a wireless LAN, among
03:33:07 <alise> other things.[47][48] Upon running the fastboot command, the user is presented with a Google-created screen stating that unlocking the bootloader will void the warranty.[49] The popular CyanogenMod build of Android has already been released for the device.[50]
03:33:17 <alise> so you can even get root on it in an official way
03:34:00 <alise> Sgeo: so...
03:34:23 <Sgeo> alise, that's why I'd really rather have Nexus One than iPhone
03:34:44 <alise> I never once pushed iPhone
03:34:54 <alise> http://www.displaymate.com/Motorola_Droid_ShootOut.htm ;; more dissing of nexus one display
03:34:56 <Sgeo> I never suggested that you did
03:35:03 <alise> I'm just telling you that the Nexus One display isn't very good
03:35:13 <alise> and if you care about that sort of thing, like you want really crisp text... get the droid if you can
03:35:22 <alise> otherwise get the nexus one as it's better in other ways
03:35:28 <Sgeo> Contract == no deal
03:35:32 <Sgeo> Dad's rules, not mine
03:35:41 <alise> http://www.displaymate.com/Nexus_Droid_ShootOut.htm ;; nexus vs droid
03:35:58 <alise> well you can get unlocked droid...
03:36:01 <alise> motorola milestone
03:36:09 <alise> but you'd have to import it i think
03:36:12 <alise> from europe
03:36:38 <Sgeo> How much would that cost?
03:36:48 <alise> I'm looking it up now
03:36:52 <alise> and apparently milestone is gsm, so it'd work on at&t
03:37:16 <alise> eh apparently it's tuned for t mobile bands
03:37:48 <alise> nah you'd have to import...
03:38:12 <alise> Sgeo: well it's $552 in the uk
03:38:20 <alise> so find somewhere that ships to US and add shipping cost... not pretty
03:38:21 <alise> go for nexus
03:38:29 <alise> you probably use a shitty computer display and don't care
03:38:45 <Sgeo> The keyboard is what makes me lean to Droid very slightly
03:38:58 <Sgeo> Don't care so much about display
03:40:22 <alise> http://www.displaymate.com/Motorola_Droid_ShootOut_files/image004.jpg droid
03:40:23 <alise> http://www.displaymate.com/Motorola_Droid_ShootOut_files/image003.jpg nexus
03:40:28 <alise> (of course much smaller IRL)
03:40:36 <alise> if you are fine with that ... then it just comes down to keyboard
03:40:43 <alise> if it's only very slightly .. just get nexus
03:40:50 <alise> getting milestone would be a bitch and it would be very experimental and unsupported
03:41:04 <Sgeo> The biggest problem really is cost
03:41:13 <alise> besides, nexus is pretty
03:41:14 <alise> droid is ugly
03:41:21 <alise> Sgeo: well importing milestone would cost you top dollar
03:41:35 <alise> nexus is the cheapest you will get a contract free android phone
03:45:50 <alise> Deewiant: Maybe I can write the funge in ATS.
03:46:00 <alise> REDDIT SEZ IZ LIKE ML BUT WITH SPEEEEEEEED
03:46:12 <Sgeo> alise, just choose a language
03:46:24 <alise> German
03:46:28 <Sgeo> Even BASIC is a better choice than no choice.
03:49:28 <Sgeo> Hm. What's the lock button on Nexus One? In this emulator, it's the Hangup button, but Nexus One doesn't have a hangup button as far as I know
03:50:21 <Sgeo> Pattern lock thingy decided to just ignore me
03:51:07 <Sgeo> Power down button also works
03:55:10 -!- elmo77 has joined.
03:56:58 -!- elmo77 has quit (Read error: Connection reset by peer).
04:02:13 -!- lament has quit (Quit: lament).
04:02:51 <alise> [[I hate that indentation algorithm; can't I tweak it?
04:02:52 <alise> Ah, yes, of course, but this manual will not tell you how.]]
04:02:53 <alise> Umm... fuck you too?
04:04:31 <Sgeo> Docs for what? Some Prolog thing?
04:05:40 -!- Oranjer has left (?).
04:09:36 <alise> Sgeo: sml mode for emacs
04:09:46 <alise> Deewiant: I'm trying to formulate a signature for a fungespace module
04:09:48 <alise> So far I have
04:09:53 <alise> type fungespace
04:09:54 <alise> val blank : fungespace
04:09:54 <alise> val get : fungespace * coords -> int
04:09:54 <alise> val put : fungespace * coords * int -> unit
04:10:01 <alise> What other operations do you think I'll find useful at first?
04:10:28 <alise> A bounds-calculating method?
04:10:39 <alise> That's two coords, right? Min and max.
04:12:15 <Sgeo> The Alarm Clock just crashed
04:17:36 <alise> Deewiant: BTW, do you think Judy Arrays would work well for fungespace?
04:20:23 <Sgeo> What's a Judy array?
04:21:20 <alise> http://judy.sourceforge.net/
04:21:41 <alise> It's 4:21; I have to go outside and do stuff tomorrow.
04:21:43 <alise> Should I bed myself?
04:22:43 <Sgeo> I think I confused the fake accelerometer
04:22:56 * Sgeo slaps alise for being awake
04:23:06 <alise> i'm not a norn
04:23:12 <alise> can you make masochistic norns i wonder
04:23:41 <Sgeo> Ye.. actually, hm. Maybe have "pain" decrease for normally painful activities
04:23:44 <Sgeo> Or would that not count
04:24:08 <alise> Make an increase in pain correspond to an increase in pleasure, as opposed to any negative variables.
04:26:15 <Sgeo> pain, as a drive, is, in and of itself, a negative variable
04:26:47 <Sgeo> Although we could make high concentrations of the chemical equate to low input to the brain
04:27:17 <Sgeo> I... think
04:27:20 <Sgeo> Anyways, go to sleep
04:28:37 <alise> k
04:28:40 <alise> bye
04:35:25 -!- Sgeo_ has joined.
04:36:09 -!- alise has quit (Ping timeout: 258 seconds).
04:38:08 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:02:13 -!- wareya has quit (Ping timeout: 246 seconds).
06:02:28 -!- wareya has joined.
06:11:06 -!- oerjan has joined.
06:12:40 -!- jcp has changed nick to id_est.
06:13:06 -!- id_est has changed nick to jcp.
06:13:59 -!- jcp has changed nick to id_est.
06:15:24 -!- id_est has changed nick to jcp.
06:43:10 -!- augur has joined.
06:58:49 -!- augur has quit (Ping timeout: 265 seconds).
07:01:55 -!- jcp has quit (Quit: I will do anything (almost) for a new router.).
07:10:58 -!- wareya has quit (Ping timeout: 264 seconds).
07:22:45 -!- oerjan has quit (Quit: leaving).
07:52:06 -!- wareya has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:18:35 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.9/20100315083431]).
08:18:52 -!- Tritonio_GR has quit (Ping timeout: 258 seconds).
08:21:08 -!- augur has joined.
09:50:49 -!- tombom has joined.
09:59:17 -!- FireFly has joined.
09:59:23 -!- FireFly has quit (Changing host).
09:59:23 -!- FireFly has joined.
10:00:17 -!- EgoBot has quit (Ping timeout: 276 seconds).
10:00:17 -!- HackEgo has quit (Ping timeout: 276 seconds).
10:07:50 -!- kar8nga has joined.
10:15:11 -!- HackEgo has joined.
10:18:56 -!- ellisonch has joined.
10:19:28 -!- HackEgo has quit (Ping timeout: 252 seconds).
10:30:20 -!- HackEgo has joined.
10:35:48 <ellisonch> hello. can anyone point me towards a reMorse specification or set of programs? possibly even an interpreter? Particularly for the reMorse2.- variant. I've found the article on the esolang wiki, but the link to the spec is broken and there are no sample programs.
10:36:07 -!- Alex3012 has quit (Max SendQ exceeded).
10:38:40 -!- Alex3012 has joined.
10:42:44 -!- HackEgo has quit (Ping timeout: 246 seconds).
10:47:03 <AnMaster> hm
10:47:51 <AnMaster> ellisonch, tried waybackmachine or such?
10:48:10 <AnMaster> http://web.archive.org/web/*/http://members.tripod.com/rkusnery/remorse.html
10:48:17 <AnMaster> maybe something useful there?
10:48:41 <AnMaster> http://web.archive.org/web/20080403122701/http://members.tripod.com/rkusnery/remorse.html seems useful for example
10:50:54 <AnMaster> I added that link to the page on the wiki
10:51:53 <AnMaster> ellisonch, hope that helps
10:56:46 <AnMaster> ellisonch, finding an interpreter may be harder, unless there is one at http://esolangs.org/files/
10:56:53 <AnMaster> which doesn't seem to be the case
10:57:30 <AnMaster> (And I doubt waybackmachine has that. Very often it doesn't even have the images of the page...)
11:06:34 -!- kar8nga has quit (Remote host closed the connection).
12:43:13 -!- MizardX has joined.
12:46:38 -!- BeholdMyGlory has joined.
13:15:17 -!- myndzi has quit (Ping timeout: 276 seconds).
13:35:18 <Deewiant> ^source
13:35:18 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
13:43:45 <Deewiant> AnMaster: Hey, cfunge locks up on fungot
13:43:45 <fungot> Deewiant: what on earth did you figure out that
13:43:57 <Deewiant> fungot: top
13:43:57 <fungot> Deewiant: dammit. what happens
13:44:18 <Deewiant> fungot: Starts eating up all my memory and eventually has to be killed due to using some 7.5 gigabytes
13:44:19 <fungot> Deewiant: pythonesque list? when length is wanted? somewhere in between, i will alter the style sheet
13:44:26 <Deewiant> Don't know about that.
13:45:14 -!- alise has joined.
13:45:26 <Deewiant> alise: Don't know enough about Judy arrays to be able to say.
13:45:43 <alise> Deewiant: They're 256-tries. Basically.
13:45:57 <Deewiant> What's an n-trie
13:45:57 <alise> For hashtables; though I'm sure you could tweak what number they are.
13:46:10 <alise> http://en.wikipedia.org/wiki/Trie? :P
13:46:12 <alise> http://judy.sourceforge.net/doc/10minutes.htm
13:46:15 <Deewiant> I know what a trie is
13:46:17 <alise> ^ I found this quite helpful
13:46:46 <alise> Deewiant: I gather it means the nodes are chars
13:46:52 <Deewiant> So evidently... yeah
13:47:15 <alise> Apparently they're quite good at hash tables, and you can just initialise them to NULL, and also they're good for sparse stuff.
13:47:18 <alise> Which gets me interested...
13:47:56 <Deewiant> I'd say that being good for dense stuff is more important
13:48:09 <alise> True.
13:48:25 <alise> Judy_hashing.pdf
13:48:26 <alise> How to use Judy to create a scalable hash table with outstanding performance and automatic scaling, while avoiding the complexity of dynamic hashing.
13:48:27 <alise> http://judy.sourceforge.net/examples/index.html
13:48:32 <alise> http://judy.sourceforge.net/examples/Judy_hashing.pdf
13:49:39 <Deewiant> I don't feel bothered to read that stuff through properly right now; if it looks good to you, give it a shot :-P
13:50:11 <alise> Deewiant: That .pdf is just two pages long.
13:50:18 <alise> And the 10 minute intro is mostly fluff ;-)
13:51:22 <Deewiant> Well, it looks like a decent hash table :-P
13:52:10 <alise> Right, but Judy doesn't do hashing at all by itself.
13:52:20 <alise> I think you'd use two nested Judy arrays, each with a one-wod key.
13:52:25 <alise> And I think it's optimised for that sort of thing.
13:52:32 <alise> Still, what's the expanded acronym of the thing you use, so I can look it up?
13:52:58 <Deewiant> Basically, just an array of boxes
13:53:14 <Deewiant> It's my own Funge-specific thing, so it doesn't have much of a name :-P
13:54:22 <alise> AABB or whatever?
13:54:33 <Deewiant> Axis-aligned bounding box
13:54:38 <Deewiant> I.e. a box.
13:54:57 <Deewiant> I just used that because it sounds a bit fancier than "Box" :-P
13:55:57 <alise> Okay.
13:56:11 <alise> So are all the boxes a fixed size or something, and you just allocate them around wherever changes?
13:56:20 <Deewiant> No, dynamically sized
13:56:22 <alise> I should probably read the code.
13:56:26 <alise> Deewiant: Decided how, roughly?
13:56:50 <Deewiant> For easy cases like file loading it's the smallest box in which the file fits :-)
13:57:23 <Deewiant> (Which is a poor solution for sparse files, which shows up in Fungicide as a loss to cfunge)
13:58:17 <alise> Why would that be a loss to cfunge, not you?
13:58:29 <Deewiant> A loss of CCBI to cfunge
13:58:34 <alise> Anyway, I didn't ask about the special cases ;-) Mind, I'm just curious: I'm unlikely to use your system because I'm an experimenter at heart.
13:58:35 <Deewiant> I.e. CCBI loses
13:58:37 <alise> Deewiant: Ah.
13:59:09 <Deewiant> All cases are more or less special
13:59:35 <Deewiant> The default case, for a p into an unallocated location, is a 17*17 box centered there
14:06:39 <alise> s/2 :: ((A,B,C)?, ((A,B)?, (A,C)?)?)?
14:06:40 <alise> s(X, lam [(Y, lam [(Z, R) :- Y(Z,R1), X(Z,R1,R)])]).
14:07:44 <Deewiant> Yes.
14:08:19 <alise> :-)
14:08:32 <alise> The problem with adding higher-order predicates to Prolog is that it gets fucking ugly.
14:08:38 <alise> This would be better:
14:08:39 <alise> s/2 :: ((A,B,C)?, ((A,B)?, (A,C)?)?)?
14:08:39 <alise> s X \(Y, \(Z,R) :- Y(Z,R1), X(Z,R1,R)).
14:08:45 <alise> but requires currying to work, which it can't
14:08:48 <alise> (because you can't return values)
14:11:12 <alise> rat(A/B) :- B \= 0, gcd(A,B,1).
14:11:20 <alise> prolog won't allow you to enumerate all rationals with this definition :((
14:19:07 <Deewiant> Does INTERCAL have any multithreading kind of things?
14:20:05 <Deewiant> Where's ais when you need him
14:25:37 <alise> yes
14:25:48 <alise> it's lock-step and not multi-cpu, and it makes no fucking sense, but it has it, yes
14:26:13 <Deewiant> So how does it work
14:26:55 <alise> Nobody has any clue.
14:27:05 <alise> Read the C-INTERCAL manual?
14:27:13 <alise> http://c.intercal.org.uk/manual/vd89dqoq.htm
14:27:57 <alise> http://c.intercal.org.uk/manual/tigcnnv0.htm#Multithreading-using-WHILE ;; addition using multithreading, fuck yeah
14:28:27 <Deewiant> Alright, nexting stacks are per-thread
14:28:33 <Deewiant> That's what I wanted to know :-)
14:28:51 <alise> What on earth are you doing?
14:29:00 <Deewiant> Implementing ICAL
14:29:54 <alise> Down with the cfunge machine! Fuck yeah!
14:30:01 <alise> Deewiant: Wait, isn't it IFFI?
14:30:10 <Deewiant> The one you're thinking of is
14:30:17 <alise> Deewiant: Well, do that one.
14:30:22 <Deewiant> No. :-P
14:31:13 <alise> Deewiant: I hate you, and your family.
14:31:41 <Deewiant> Naw, you're just saying that
14:31:53 <alise> I don't even know your family, so I have no qualms with hating them.
14:32:13 <Deewiant> I find no docs for IFFI, FWIW.
14:32:25 <alise> I think it's in either cfunge or C-INTERCAL source tree.
14:32:38 <alise> Or, you know, the ther.
14:32:47 <AnMaster> <Deewiant> AnMaster: Hey, cfunge locks up on fungot <-- what?
14:32:47 <fungot> AnMaster: *sigh* i must be doing it
14:32:57 <Deewiant> AnMaster: Just that.
14:33:02 <alise> WHAT IS THE MEANING OF THIS
14:33:04 <Deewiant> $ cfunge fungot-load-freenode.b98
14:33:04 <Deewiant> RAW >>> :leguin.freenode.net NOTICE * :*** Looking up your hostname... <<<
14:33:04 <Deewiant> ^C
14:33:05 <fungot> Deewiant: or no responses at all, but the outfile only has the parameters that led to the current sub. maybe fnord can just happen in the usa
14:33:18 <AnMaster> Deewiant, huh? Doesn't happen with ccbi?
14:33:22 <Deewiant> Nope.
14:33:22 * AnMaster wonders what broke recently then
14:33:39 <alise> Deewiant: I've started working on my MLfunge -- finally -- and then I realised that it doesn't have hash tables and I'll have to implement them myself. http://pastie.org/914048.txt?key=jjvwhv7j8jfnuzq32ppumw
14:33:40 <alise> Woe is I.
14:33:56 <alise> AnMaster: probably your hacks around being slow as fuck
14:34:03 <Deewiant> alise: Why hash tables? :-)
14:34:09 <AnMaster> hm wget http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 doesn't work
14:34:10 <fungot> AnMaster: it's the 1cfa paper, irc bot?
14:34:16 <AnMaster> as in
14:34:17 <AnMaster> html
14:34:20 * AnMaster opens in browser
14:34:23 <Deewiant> http://git.zem.fi/fungot/blob_plain/HEAD:/fungot.b98
14:34:24 <fungot> Deewiant: i suppose if i coded it in java
14:34:30 <Deewiant> fungot: No, that really wouldn't help.
14:34:30 <fungot> Deewiant: as long as you are. thanks, krystof.) a variety of things for cmpauxmd.o. i
14:34:44 <alise> Deewiant: Because I thought "oh, this will be dumb and simple".
14:35:02 <alise> If I used Standard ML of New Jersey, I could use hash-tables; but MLton is a more conservative implementation. O'Caml has them, too.
14:35:03 <AnMaster> Deewiant, first line of cfunge -v pleaase
14:35:06 <AnMaster> please*
14:35:07 <Deewiant> alise: You can use whatever trees they provide (surely they do provide?)
14:35:09 <AnMaster> so I know what options you used
14:35:13 <Deewiant> AnMaster: Latest bzr, any options
14:35:19 <Deewiant> But currently: cfunge 0.9.0 [+con +trace +exact-bounds +ncurses p:64 c:64]
14:35:20 <AnMaster> Deewiant, any options?
14:35:22 <AnMaster> ah
14:35:29 <AnMaster> Deewiant, did you use the new ip list or not?
14:35:32 <Deewiant> As in, I tried all relevant permutations
14:35:33 <Deewiant> Both
14:35:36 <AnMaster> huh
14:35:38 <alise> Deewiant: Here's the types in the Basis Library of Standard ML: (strictly speaking, even this is optional!) http://mlton.org/BasisLibrary
14:35:46 <Deewiant> Both 32 and 64, both new IP list and not, both concurrent and not
14:35:52 <Deewiant> I don't think I tried without exact bounds.
14:35:53 <alise> They do provide a slight SML/NJ compatibility layer -- though not with this -- and the MLton structure, which has a hashing function:
14:35:56 <alise> http://mlton.org/MLtonStructure
14:36:01 <alise> Deewiant: Apart from that, nope.
14:36:12 <alise> Deewiant: Remember, SML was designed to have very precise formal semantics.
14:36:14 <Deewiant> alise: Heh. Have fun.
14:36:17 <alise> Adding anything to the language makes this a harder task.
14:36:30 <Deewiant> I didn't remember because I didn't know.
14:36:33 <alise> So the strategy is pretty much "provide the fast basic structures, let the user implement the rest".
14:36:39 <Deewiant> I'm not very familiar with the MLs.
14:37:19 <alise> Deewiant: Well, that was the whole point: it originated as a tactic-writing language in a theorem prover. Later, it became generalised as a language to define languages in: and you want your code-specification of a language to be precise, so the SML standards do the hard part, i.e. providing a rigorous formal semantics.
14:37:35 <AnMaster> Deewiant, it locks up deep inside libc here
14:37:45 <AnMaster> Deewiant, in the SOCK stuff
14:37:49 <Deewiant> Does it also eat up tonnes of memory for you?
14:37:50 <AnMaster> which I haven't changed recently at all
14:38:01 <alise> Deewiant: Talking to me or AnMaster?
14:38:08 <alise> Anyway, I could always use... Mythryl. :-)
14:38:09 <Deewiant> alise: AnMaster.
14:38:12 <AnMaster> no
14:38:26 <AnMaster> it just times out connecting
14:38:35 <Deewiant> AnMaster: I had to kill it because it made my machine swap at over 7 gigs
14:38:46 <AnMaster> Deewiant, well, can't reproduce yet
14:38:56 <AnMaster> Deewiant, how does your fungot-load-freenode.b98 look?
14:38:56 <fungot> AnMaster: i selected ' trigger' for my cgi script running somewhere?
14:39:08 <alise> Deewiant: In fact, I don't even see a function to adjust the size of an array.
14:39:26 <Deewiant> AnMaster: Right; you need to put in the IP for leguin.freenode.net (or whatever works I guess) since orwell is down now
14:39:31 <AnMaster> aha
14:39:36 <alise> I imagine they are expecting that it will usually cause a reallocation anyway.
14:39:50 <Deewiant> alise: heh.
14:40:16 <alise> Deewiant: http://www.standardml.org/Basis/array.html <-- the entirety of the array functions
14:40:31 <AnMaster> Deewiant, hm
14:40:32 <AnMaster> brb
14:41:26 -!- tombom has quit (Ping timeout: 258 seconds).
14:42:07 <alise> Deewiant: I wonder if I could use some sort of tree to partition up fungespace.
14:42:16 <Deewiant> You could.
14:42:20 <alise> Say we have a 256x256 space; then there would be a tuple of 0-128 and 128-256.
14:42:34 <alise> Inside the former, 0-64 and 64-128.
14:42:45 <Deewiant> Look into quadtrees. :-)
14:43:26 <alise> Deewiant: Still, it sounds like it'd be quite inefficient.
14:43:35 <AnMaster> Deewiant, it locks up but it doesn't grow very fast the ram usage at least
14:43:43 <AnMaster> as in, less than a mb in several minutes
14:43:57 <AnMaster> how long did it take for you to fill up that ram?
14:44:10 <Deewiant> About 10-20 seconds maybe
14:44:18 <Deewiant> Could be due to some other settings
14:45:00 <AnMaster> Deewiant, I think I know one way it could happen for you but not me:
14:45:01 <AnMaster> (gdb) bt
14:45:01 <AnMaster> #0 0x000000000040e104 in stack_pop (stack=0x0) at /home/arvid/src/own/cfunge/trunk/src/stack.c:142
14:45:15 <AnMaster> spot the weirdness
14:45:24 <Deewiant> AnMaster: stack=0x0 :-)
14:45:31 <AnMaster> Deewiant, indeed.
14:45:42 <Deewiant> AnMaster: http://pasteit.ghost1227.com/1340 may or may not help in causing it.
14:45:45 <alise> Deewiant: Hmm, so it's not per-coordinate; you get NW/NE/SW/SE.
14:45:58 <alise> I need to implement this so I'm trying to get my head around it :-)
14:46:09 <alise> I think I want tuples, not arrays; nested tuples.
14:46:11 <alise> So
14:46:11 <AnMaster> hm I wonder why it locks up in the file output code btw
14:46:18 <AnMaster> I mean, why is it writing a file
14:46:28 <alise> type quadtree = Leaf of int | Branch of quadtree * quadtree * quadtree * quadtree
14:46:41 <Deewiant> alise: If I understand what you mean by per-coordinate, I think you might want k-d-trees
14:46:52 <AnMaster> also why didn't the assert trigger, it is compiled with asserts..
14:46:53 <alise> Deewiant: I don't want per-coordinate, though; quadtrees sound absolutely fine.
14:46:57 <alise> They're probably pretty fast, right? ... Right?
14:47:07 <Deewiant> IIRC stinkhorn uses octrees
14:47:19 <Deewiant> And it's faster than cfunge, so yeah :-P
14:47:35 -!- tombom has joined.
14:47:39 <alise> Octrees?
14:47:44 <alise> How would that help for 2D?
14:47:57 <Deewiant> Dunno, maybe it's trefunge-generic
14:48:26 <Deewiant> Hmm, Stinkhorn actually implements Trefunge; I'd forgot about that
14:48:35 <AnMaster> okay it is writing to a filename called ""
14:48:46 <AnMaster> which indicates something is indeed quite wrong
14:49:07 <Deewiant> Okay, no
14:49:10 <Deewiant> warning: -3 doesn't do anything yet
14:49:16 -!- kar8nga has joined.
14:49:25 <Deewiant> alise: So I guess the Funge-Space is there at least in part but not everything is :-)
14:49:29 <alise> Deewiant: Well, octrees would actually help for 2d right? Less traversals.
14:49:49 <alise> "Haskell, on the other hand, has a magnificently expressive type system. It has dependent types" wot
14:49:59 <Deewiant> alise: I suppose, but how to split a 2D space like that? (I don't know, maybe it's easy and/or obvious)
14:50:16 * alise makes some drawings
14:50:56 <AnMaster> fizzie, there? What revision of cfunge is fungot currently running on?
14:50:56 <fungot> AnMaster: " subject matter" is a perfectly good solution out there that was also my computer science class, but i
14:51:40 <alise> Deewiant: Eh, I can't draw it.
14:51:44 <alise> But basically, I'd make the regions cone-shaped.
14:52:09 <Deewiant> alise: And you think the sines and cosines involved in that are fast?-)
14:52:19 <alise> Deewiant: Touche.
14:52:24 <alise> Quadtree it is.
14:52:38 <alise> I have no idea how to expose pattern-matching in SML, so let's just assume I can.
14:53:11 <alise> Deewiant: Hmm, I really want a mutable quadtree; if I just have a functional one, then I have to update every parent to update a child.
14:53:14 -!- MigoMipo has joined.
14:53:17 <alise> (I'm sure Okasaki would have some magic trick to avoid this.)
14:55:10 <AnMaster> Deewiant, unable to reproduce, lockup yes, memory trashing no
14:55:23 <AnMaster> and the stack thing didn't happen again weirdly enough
14:55:29 <Deewiant> Well start with the lockup
14:55:42 <AnMaster> binary revision search then
14:59:33 <AnMaster> strangely enough it happens with older revisions too
14:59:43 * AnMaster looks at older fungot revisions
14:59:44 <fungot> AnMaster: yes. you should get " fnord that doesn't seem to
15:00:36 <Deewiant> fungot seems to suggest it's a stringmode bug
15:00:36 <fungot> Deewiant: i think ti's are pretty nice though. have fun. :) that has it's advantages
15:02:00 <alise> Deewiant: My build system will be rather simple: MLton doesn't support incremental compilation :-)
15:02:18 <AnMaster> Deewiant, hm
15:02:53 <AnMaster> Deewiant, I'm trying to find last working revision of both fungot and cfunge but failing to do so
15:02:53 <fungot> AnMaster: stuff like new! miracle! space-age! are getting overused. why move if it's that camera we're talking about
15:03:08 <Deewiant> AnMaster: Maybe it never worked and it's still running on Rc/Funge-98
15:03:10 <alise> And has not many special compiler options; all optimisations are aggressively done always.
15:03:12 <AnMaster> Deewiant, what data files does it need to have created?
15:03:19 <AnMaster> Deewiant, har. I ran it before I know
15:03:22 <alise> Deewiant: I'm pretty sure fizzie did switch it over to cfunge.
15:03:23 <Deewiant> AnMaster: I don't know; I just ran it from scratch
15:03:38 <Deewiant> AnMaster: With CCBI it connected and started ponging and such, with cfunge it hung.
15:05:16 <AnMaster> Deewiant, well it is bouncing between a ^ and a o. The o is not in the original source as far as I can tell
15:05:23 <AnMaster> it *could* of course have been written there. Hard to tell
15:05:50 <AnMaster> wait, I'm looking at the wrong fungot file in the editor
15:05:50 <fungot> AnMaster: about odd and even streams are in general very cool.... :) is it possible for there not to be
15:06:24 <AnMaster> well no it isn't there in the one it is running either
15:07:03 <Deewiant> AnMaster: Notice that the fungot.b98 is loaded at 0,100
15:07:03 <fungot> Deewiant: it's a recursive verb. ' void main() char x input; fnord main() tweak
15:07:10 <AnMaster> Deewiant, oh right...
15:08:42 <AnMaster> huh
15:08:56 <AnMaster> pratchett.freenode.ne
15:08:56 <AnMaster> pratchett.freenode.ne
15:08:56 <AnMaster> >31g :3g':-#^_ 1+
15:08:56 <AnMaster> >:3g:#v_ >
15:09:02 <AnMaster> I don't think that is correct
15:09:06 <AnMaster> from dumping funge space
15:10:04 <Deewiant> CCBI doesn't even end up in that code
15:10:08 <AnMaster> indeed
15:10:21 <Deewiant> It doesn't hit that ^, at least
15:10:23 <AnMaster> I guess SOCK read/write buffer is wrong
15:10:37 <AnMaster> somehow
15:19:50 <AnMaster> no it isn't SOCK code as far as I can tell
15:19:54 <AnMaster> just fungot itself
15:19:55 <fungot> AnMaster: ' fnord /a/b/ /a/b/ /a' layout would make better graph out of those pin boxes, you know
15:20:09 <AnMaster> that keeps writing that line over and over
15:20:10 <alise> Wow, MLton is truly dog slow.
15:20:58 <alise> I figured out why though.
15:20:59 <alise> It has to compile the entire standard library every time.
15:21:04 <alise> Since it's whole-program.
15:21:49 <alise> Error: quadtree.sml 15.5.
15:21:50 <alise> Syntax error: replacing INCLUDE with EXCEPTION.
15:21:52 <alise> You can't just do that!
15:22:19 <AnMaster> hm
15:22:46 <AnMaster> Deewiant, I'm unable to find last working revision of either cfunge or fungot. I need to ask fizzie when it gets here what revision fungot is currently running on
15:22:47 <fungot> AnMaster: or the continuum hypothesis is likely to get this. i assume diamondie has stolen some fnord plutonium from a brazilian nuclear facility.), sieni_. he
15:25:19 <AnMaster> Deewiant, even very old versions show this behaviour now
15:26:46 <AnMaster> Deewiant, my best guess is that the new(ish) ircd-seven ircd that freenode switched to some time ago trigger some bug due to the extra lines sent at connect, and that fizzie fixed that locally but haven't pushed yet, or that it doesn't affect his specific setup
15:27:00 <Deewiant> Works in CCBI :-P
15:27:10 <Deewiant> (Could easily be a CCBI bug of course)
15:27:14 <AnMaster> Deewiant, we handle stuff like STRN somewhat differently
15:27:15 <alise> Deewiant: Wait, how do quadtrees grow in size?
15:27:23 <alise> Oh, easy.
15:27:27 <alise> You make all the references null by default.
15:27:28 <AnMaster> like on negative arguments and such
15:27:40 <alise> Right?
15:28:05 <Deewiant> alise: I'm not sure what exactly you're asking
15:28:08 <AnMaster> Deewiant, it isn't SOCK that is copying those lines as far as I can tell from debugger, it is fungot itself that copies them for unknown reason
15:28:08 <fungot> AnMaster: ( i want shivers to release his new loop macros......) on time 1. then we can just make a copy
15:28:29 <alise> Deewiant: Well, I'm just asking how a quadtree handles a potentially ""infinite"" (very big) structure
15:29:20 <Deewiant> alise: Well, it just keeps on subdividing...
15:29:27 <alise> Right.
15:29:36 <alise> I guess I just don't understand how I'm meant to traverse a quadtree given (x,y).
15:29:59 <Deewiant> Each node is associated with a point
15:30:06 <alise> I get that.
15:30:10 <Deewiant> You check where your (x,y) is wrt that point
15:30:18 <alise> I just don't get how you do non-diagonals since it's NW/NE/SW/SE
15:30:18 <Deewiant> If it's NW, you go to subtree 0
15:30:27 <alise> How can I check where it is?
15:30:29 <Deewiant> Well, just pick something
15:30:45 <Deewiant> E.g. if the y coordinates are equal it's always in the N
15:30:46 <alise> Eh?
15:30:57 <Deewiant> Check where what is?
15:31:04 <AnMaster> Deewiant, even with your loading file I can't trigger the memory usage problem you mentioned
15:31:22 <Deewiant> Shrug.
15:33:01 <AnMaster> ah wait, now I can. How strange. But much slower than you described...
15:33:12 <AnMaster> Deewiant, I know why it does that now for you. It keeps executing e forever
15:33:16 <AnMaster> so yes stack would grow
15:33:31 <alise> type 'a subtree = 'a quadtree ref option
15:33:32 <Deewiant> And my machine is that much faster, so yes :-)
15:33:36 <alise> A subtree is a quadtree ref option. XD
15:33:41 <AnMaster> Deewiant, that would be because of the different server name
15:33:43 <Deewiant> AnMaster: About 300 megs a second IIRC
15:33:46 <AnMaster> it still keeps copying it all the time
15:33:57 <alise> Deewiant: So basically,
15:34:00 <alise> datatype 'a quadtree
15:34:01 <alise> = Leaf of 'a
15:34:01 <alise> | Branch of 'a subtree * 'a subtree * 'a subtree * 'a subtree
15:34:08 <alise> where a subtree is either NULL, or a pointer to another quadtree.
15:34:17 <Deewiant> alise: Your Branch needs a point
15:34:23 <AnMaster> Deewiant, I can't debug this without a known good revsion. And there are none. Yet fungot is running here. We will have to wait for fizzie to get here
15:34:24 <fungot> AnMaster: ack. don't put a subject there, it was such great fun that i just found it, thanks
15:34:26 <alise> Really?
15:34:34 <alise> Deewiant: So does that mean that we can turn a leaf into a branch?
15:34:40 <Deewiant> alise: How will you know where you are otherwise?
15:34:45 <alise> So, basically, a leaf is just a special case of a branch where all the references are NULL.
15:34:46 <alise> Deewiant: Oh, I see.
15:34:58 <AnMaster> Deewiant, I have a deadline tomorrow for something at university, no time to look more into this issue now
15:34:58 <Deewiant> And yes, basically like so
15:35:08 <AnMaster> (release won't happen today)
15:35:12 <Deewiant> alise: But I don't think there's any point in turning a leaf into a branch ever
15:35:15 <Deewiant> I could be wrong.
15:35:19 <alise> datatype 'a quadtree = Branch of coords * 'a * 'a subtree * 'a subtree * 'a subtree * 'a subtree
15:35:21 <alise> Deewiant: Oh, okay.
15:35:29 <alise> But how would you get to a leaf if the coords are both the same?
15:35:34 <alise> Go a certain predefined direction?
15:35:36 <Deewiant> Hmm?
15:35:39 <alise> Seems saner to have it all in the one constructor.
15:35:45 <alise> Say you're at a branch and its (x1,y1) = your (x,y).
15:35:48 <alise> But all it has is four subtrees.
15:35:54 <alise> How do we get the value at this point?
15:36:07 -!- oerjan has joined.
15:36:10 <Deewiant> Like said, just pick a consistent way of doing it
15:36:20 <Deewiant> E.g. equal x = east and equal y = north
15:36:23 <oerjan> no, pick two!
15:36:23 <Deewiant> So in that case you'd go northeast
15:36:26 <Deewiant> Or whatever
15:36:29 <alise> Deewiant: Okay.
15:36:33 <alise> and then northeast would be a leaf
15:36:38 <Deewiant> There may be more clever solutions :-P
15:36:50 * alise includes coords in the quadtree and specialises it to machine words.
15:36:55 <alise> No point in lying about this code's generality.
15:38:22 <AnMaster> Deewiant, oh just one thing. it is STRN related probably
15:38:25 <alise> Deewiant: Hmm, so if we move in a direction where the pointer is NULL, we should allocate a new quadtree and attach it to the current one.
15:38:30 <AnMaster> since it is written there by STRN P
15:38:46 <alise> So what I actually need is a quadtree option ref.
15:38:57 <alise> i.e., a pointer to either NONE or SOME quadtree.
15:40:13 <alise> http://pastie.org/914126.txt?key=jbijawyvc0juty7ocqj8g I think this is it.
15:40:20 <alise> But how on earth would I do exact bounds like this...?
15:44:19 <alise> I like Standard ML.
15:45:14 <fizzie> Hm, what was that about fungot.
15:45:15 <fungot> fizzie: is the fact that i'm trying to think of it
15:46:31 <AnMaster> fizzie, basically fungot ends up overwriting itself with server name
15:46:31 <fungot> AnMaster: i guess linux does it for you than do it yourself. once you're happy with it, to see how you proceed and what that's about
15:46:39 <AnMaster> fizzie, in current cfunge and older cfunge.
15:46:48 <AnMaster> so I'm unable to find a known good revision
15:46:50 <AnMaster> which is absurd
15:47:10 <AnMaster> fungot, thus I want the exact revision that fungot in here is running on
15:47:10 <fungot> AnMaster: if a fnord of a
15:47:21 <AnMaster> or that you push any local changes that fixes it
15:47:39 <AnMaster> fungot, exact revision of cfunge that is
15:47:39 <fungot> AnMaster: hehe yeah, was really killing the conversation). try the latter after the list of include files for interpreter.c?) implemented in scheme
15:48:34 <fizzie> Hmn. I have just the "cfunge" binary on the server it's running on; that reports "0.3.2" with -v. I'll try to find where I built it.
15:48:43 <AnMaster> ouch
15:48:44 <AnMaster> that old
15:48:47 <AnMaster> fizzie, Basically the P at the line >:3g:#v_ >\ :0\3p 31g >3G 05g5+0\P v
15:48:57 <AnMaster> ends up overwriting the entire program
15:49:01 <AnMaster> with the server name
15:49:04 <AnMaster> fizzie, I have no idea why
15:49:24 <fizzie> Hrm.
15:49:27 <AnMaster> and I have looked back until summer 2009 for a working revision
15:49:30 <AnMaster> of cfunge
15:50:50 <oerjan> <alise> (I'm sure Okasaki would have some magic trick to avoid this.)
15:50:53 <oerjan> zippers
15:51:08 <fizzie> I have a directory with the name "cfunge_r462"; that might be the exact revision.
15:51:20 <fizzie> I really haven't had the occasion to update.
15:51:23 <AnMaster> okay lets try it
15:51:45 <alise> oerjan: yeah i know about zippers but how would they apply here? i don't exactly understand them :P
15:51:49 <fizzie> ^source
15:51:49 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
15:51:50 <AnMaster> fizzie, I think it worked on later revisions too for a long time, possibly until freenode changed to the new ircd
15:52:25 <AnMaster> r462 works
15:52:28 <AnMaster> now lets bisect this
15:52:40 <oerjan> alise: you keep your structure as your current cell with a pointer to the parent, where the parent does _not_ contain a backlink
15:53:01 <alise> oerjan: i see. do you think it would help for this case?
15:53:02 <fizzie> That irc-message splitting part of the fungot code is probably about the oldest thing there, I really haven't touched it in a while.
15:53:03 <fungot> fizzie: after a very small amount of writing to memory overflow!!!
15:53:26 <oerjan> alise: well you don't need to change the parent to change the current cell
15:53:38 <alise> oerjan: what about mutating the parent?
15:53:40 <alise> e.g. the subtree
15:53:41 <alise> s
15:54:00 <oerjan> although you now need to restructure things to move to a new current cell
15:54:12 <alise> My quadtrees are either a leaf containing a pointer to a word, or a branch containing an (x,y) pair of coordinates, and four pointers to NONE | SOME quadtree.
15:54:36 <oerjan> alise: the zipper requires a new datatype for quadtrees with holes, essentially
15:54:38 <alise> Hmm, I could actually make leaves not be pointers and just mutate their parents to do it.
15:54:43 <alise> That sounds icky though.
15:55:31 <alise> I don't think you can do mutually recursive data types in SML...
15:55:35 <alise> oerjan: explain? :D
15:55:39 <oerjan> (where the hole can be one of the four directions i think)
15:55:48 <oerjan> alise: isn't that type rec or something
15:55:57 <alise> datatype quadtree
15:55:58 <alise> = Leaf of word
15:55:58 <alise> | Branch of coords * subtree * subtree * subtree * subtree
15:55:58 <alise> and subtree = quadtree option ref
15:56:02 <alise> Recursive types work fine; mutually, however...
15:56:05 <alise> ("and" is not valid there)
15:56:20 <oerjan> oh? sounds unreasonable.
15:56:41 <AnMaster> hm okay bisection shows it is between 551 and 581 now
15:56:49 <fizzie> The P on that particular line is supposed to be hit only when processing a ":"-starting command option (something like the :msg part in :servername PRIVMSG #foo :msg), and it should put the text "msg" on line.. 7, in that case.
15:57:16 <alise> oerjan: yeah i'm sure there must be a way to do it
15:57:31 <alise> also i'm having to repeat my transparent data types in the module and in the structure
15:57:32 <alise> irritating
15:58:49 <alise> oerjan: ah it is because and implies a data type there not an alias
15:59:01 <oerjan> alise: hm i think ocaml used and there
15:59:18 <fizzie> (Hrm, I guess the same P is in fact used to put non-:-starting command options there too.)
15:59:51 * oerjan doesn't actually know SML
15:59:54 <alise> I'd just type out quadtree-option-ref if it weren't so darned verbose.
15:59:57 <alise> oerjan: nor do I
16:00:27 <AnMaster> hm r578
16:00:30 * AnMaster looks at the diff in it
16:00:50 <AnMaster> " Make stringbuffer_finish() optionally return string length. Make use of this feature in FILE, PERL, STRN and TURT."
16:00:53 <AnMaster> huh
16:01:01 <Deewiant> Ba-bam, an optimization breaks the day
16:01:06 <AnMaster> Deewiant, no code cleanup
16:01:10 <Deewiant> Darn
16:01:12 <Deewiant> :-P
16:01:21 <AnMaster> Deewiant, because the old was quite a mess of buggy strlen() and such
16:01:28 <Deewiant> But at least it worked!
16:01:32 <alise> I'd just make things abstract except I want pattern-matching on trees.
16:01:33 <AnMaster> so since the thing already *had* the string length I just made use of it
16:01:40 <AnMaster> Deewiant, sure, but that is what bisection is for :P
16:03:02 <AnMaster> fizzie, do you use any of these from STRN: G S
16:03:08 <AnMaster> if so, which ones
16:03:36 <oerjan> alise: if you think of your datastructure as a tree graph, a zipper is mostly just rerooting the tree at a new node
16:03:55 <alise> oerjan: so in your completely professional opinion do you think it'd beat pointers?
16:04:02 <Sgeo_> alise, apparently, Droid's getting 2.1
16:04:12 <alise> Sgeo_: can you do verizon?
16:04:17 <Sgeo_> No
16:04:29 <oerjan> alise: for speed? heck no.
16:04:35 <alise> oerjan: righty ho then
16:04:38 <alise> oerjan: i also meant for elegance
16:04:41 <alise> Sgeo_: then ignore it
16:04:56 <oerjan> </fake professional option>
16:05:12 <alise> Sgeo_: compared to the razr I doubt you will be anything less than outstanded by the Nexus One: it is one of the best phones around in every way apart from the display.
16:05:24 <alise> and dammit, it's pretty.
16:05:28 <alise> i want one.
16:05:41 <oerjan> (as a general rule, _all_ my value judgements can be assumed fake, when i'm even willing to give them)
16:05:50 <Sgeo_> alise, I'll probably stop being outstanded the instant I accidentally drop it on the ground :/
16:05:50 <alise> and it has a freaking 1ghz processor
16:05:53 <Sgeo_> Or lose it somewhere
16:05:57 <AnMaster> hm since you use FILE too I guess it could be causing issues
16:06:00 <alise> Sgeo_: they're tough beasts
16:06:09 <alise> they're not made out of random bendable plastic you know
16:06:10 <Sgeo_> Tougher than the RAZR?
16:06:14 <alise> the only issue with dropping them is height
16:06:17 <fizzie> AnMaster: Probably I use at least STRN's G.
16:06:21 <alise> if not much height, then the thickness protects it
16:06:25 <alise> if much height the weight works against it
16:06:31 <alise> unless you're very tall, or very VERY clumsy
16:06:33 <alise> you should be fine
16:06:42 <oerjan> alise: well with all the extra data types it's not really that elegant if you don't insist on purity...
16:06:52 <fizzie> AnMaster: I'm not sure if I use S for anything much, except perhaps in the ^save stuff.
16:07:10 <alise> Sgeo_: http://www.engadget.com/photos/google-nexus-one-unboxing-and-hands-on/#2573676 <-- porn
16:07:12 <AnMaster> fizzie, so S is used? I'm trying to figure out what exact change broke this you see
16:07:34 <Deewiant> AnMaster: This is why you should've committed that as five separate changesets ;-)
16:07:52 <fizzie> AnMaster: Don't you have some sort of tracing thing that could show you which fingerprint commands were invoked during the run?
16:08:06 <alise> http://www.engadget.com/photos/google-nexus-one-unboxing-and-hands-on/#2573691 http://www.engadget.com/photos/google-nexus-one-unboxing-and-hands-on/#2573676 http://www.engadget.com/photos/google-nexus-one-unboxing-and-hands-on/#2573655
16:08:10 <alise> Sgeo_: you know yo uwant one :P
16:08:10 <AnMaster> okay it is the G code
16:08:11 <alise> *you want
16:08:23 <Sgeo_> alise, did I mentioned I got to play with a Nexus One a bit on Thursday?
16:08:24 <oerjan> alise: also if you do a lot of non-local changing (like with get/put), then zippers probably get awful
16:08:27 <AnMaster> Deewiant, you mean one for STRN G one for STRN S and so on?
16:08:30 <alise> Sgeo_: yes.
16:08:42 <alise> oerjan: true.
16:08:44 <Deewiant> AnMaster: I was thinking one per fingerprint
16:08:44 <AnMaster> Deewiant, well I can actually manually revert the lines changed
16:08:48 <alise> Deewiant: with a quadtree you only store the root right?
16:08:51 <alise> and traverse each time
16:08:54 <AnMaster> and it seems to be STRN G that is causing issues
16:08:55 <alise> or do you move with the IP?
16:09:10 <Deewiant> alise: You can't move up a quadtree, so you don't have much choice
16:09:19 <alise> http://www.blogcdn.com/www.engadget.com/media/2010/01/nexus_shot_main.jpg nexus one has a nice camera
16:09:19 * AnMaster adds a assert(strlen(s) == len);
16:09:21 <alise> Deewiant: right
16:09:32 * AnMaster adds the header for assert too
16:10:05 <Sgeo_> Hm. When it's locked with a pattern, there's an Emergency Call button. How likely is it that it will accidentally be pressed -- does the touchscreen respond to non-skin?
16:10:14 <AnMaster> okay length 11 vs. length 10
16:10:16 <AnMaster> how weird
16:10:39 <AnMaster> it contains the nick of the thing.
16:10:50 <AnMaster> strange then ccbi didn't pick it up
16:10:53 <oerjan> alise: there's nothing preventing you from keeping a zipper even if the leafs are mutable, might make moving IP faster
16:11:01 <AnMaster> err
16:11:03 <AnMaster> not ccbi
16:11:05 <AnMaster> I mean mycology
16:11:15 <AnMaster> the extra char seems to be a null one
16:11:17 <oerjan> (or equivalently, a stack of subtrees up to the top)
16:11:24 <Deewiant> AnMaster: Do the Mycology UNDEFs change between those two revs?
16:11:31 <AnMaster> Deewiant, let me test
16:11:39 <oerjan> (when it's mutable you don't need those holes i should think)
16:12:06 <AnMaster> Deewiant, actually I can't easily, since this revision is so old it will hit END in current mycology nowdays
16:12:10 <AnMaster> I think
16:12:29 <Deewiant> You can just replace the first column of Mycology with v until the STRN test
16:12:37 <AnMaster> ah good idea
16:12:42 <alise> oerjan: I can't, you can't move up in a quadtree
16:12:43 * Sgeo_ wonders if anyone takes "A peek inside the neural network" seriously
16:12:56 <Sgeo_> *inside
16:13:11 <AnMaster> Deewiant, it hits the assert just before the line: GOOD: G works
16:13:13 <oerjan> alise: well you could also _make_ parent links
16:13:16 <AnMaster> in the new one
16:13:20 <Deewiant> Oh well
16:13:24 * AnMaster tries with the strlen() call
16:13:42 <AnMaster> Deewiant, no UNDEF there no
16:13:57 <AnMaster> Deewiant, what I believe will happen is that there will be an extra \0 byte in the newer version
16:13:59 <AnMaster> below
16:14:04 <AnMaster> Deewiant, perhaps you don't check for that :P
16:14:20 <Deewiant> Evidently not
16:14:30 * Sgeo_ wants to get his engraved with his email address
16:14:35 <Sgeo_> In case I do end up losing it
16:14:50 <AnMaster> Deewiant, actually I'm not sure that is what it will result in. That statement is based on logical reasoning about the code. I haven't dumped the stack
16:15:24 <Deewiant> Anything that'd result in anything extra is probably not checked
16:15:28 <Sgeo_> My dad think it's possible for someone to work around the pattern lock. alise, unless you suggest otherwise, I'm under the impression that it's difficult [requring gaining root access], but possible
16:15:30 -!- adam_d has joined.
16:15:43 <Deewiant> It might check one cell backwards and forwards but probably not more
16:15:49 <AnMaster> huh wait a second. Is strlen() number of chars *excluding* the ending \0?
16:15:52 <Deewiant> (And not necessarily even that much if I was too slow)
16:15:57 <Deewiant> AnMaster: Yes, of course. :-P
16:16:07 <AnMaster> Deewiant, hm I think that may be the issue
16:16:19 <Deewiant> It's the length of the string: the length of "foo" is 3, not 4.
16:16:22 <AnMaster> I need to check that though so I don't introduce new bugs
16:16:46 <alise> Sgeo_: Pattern locking is just for your convenience, I think.
16:16:50 <alise> Sgeo_: It should be not so hard to crack anyway.
16:16:58 <alise> Sgeo_: It's not difficult.
16:17:12 <alise> You hold down the trackball when booting to enter the bootloader, enter a line, say "yes I'm okay with no warranty", and it's done.
16:17:33 <alise> Deewiant: So wait, you know how the directions represent different combinations of same/different X/Y?
16:17:34 <AnMaster> now I wonder where to fix it. And since this value is used in lots of places calling that code, what will break and what hides other bugs
16:17:36 <oerjan> alise: btw you might look at the infinite tree with mutable leafs i made for implementing Malbolge Unshackled >:)
16:17:36 <AnMaster> hm
16:17:44 <alise> Deewiant: When you move in different-direction, the coords always increase, right?
16:17:45 <Deewiant> alise: Say what now?
16:17:53 <alise> Deewiant: Hey, it's not my fault you said that.
16:18:00 <alise> oerjan: that sounds nice -- link?
16:18:03 <Deewiant> alise: I've no idea what you're saying, I think
16:18:07 <Sgeo_> alise, does it keep track of its waranty status? I wonder if it's possible to overwrite it >:)
16:18:14 <alise> Deewiant: I have no idea how you use quadtrees
16:18:19 <alise> Sgeo_: That is called breaking the law.
16:18:27 <alise> And I am sure that Google could find out, if you gave them the phone...
16:18:47 <alise> I jailbroke my iPhone on its first day.
16:18:53 <alise> Chillax, warranties don't matter.
16:19:21 <AnMaster> okay wth
16:19:22 <Deewiant> alise: What part of using quadtrees are you thinking about now
16:19:26 <Sgeo_> My dad thinks that since it's "new", it would be a bad idea to get it, because of potential problems
16:19:27 <AnMaster> fixing it broke mycology
16:19:27 <alise> Deewiant: I just don't understand how four directions map to coordinates of 2D space.
16:19:50 <alise> Deewiant: Currently, I'm writing a function coords * direction -> coords; you feed it the coordinates of the current branch you're on, and the direction you're expanding the quadtree in.
16:19:53 <alise> It gives you the coordinates the new tree should have.
16:19:58 <alise> I am not sure how it should do this.
16:20:20 <alise> Sgeo_: My dad says. My dad says. My dad says. If he's just looking for excuses not to get it you'll either have to buy it yourself or not get it.
16:20:36 <alise> Tell him that there are regular updates to the entire phone software.
16:20:39 <Deewiant> alise: I think that's implementation-dependant i.e. you can do what you like
16:20:40 <alise> Maybe that'll "fool" him.
16:20:50 <Deewiant> alise: One easy(?) way of doing it would be start out with the central node at (0,0)
16:20:57 <Deewiant> I.e. root node
16:21:09 <alise> Deewiant: So then south = decrease x, north = increase x, west = decrease x, east = increase x?
16:21:10 <Sgeo_> Hardware is probably what he's mostly concerned about. I did tell him that the software's been around for a while
16:21:11 <Deewiant> So then the space you're working in is nicely bounded on all sides
16:21:13 <oerjan> alise: http://oerjan.nvg.org/esoteric/Unshackled.hs
16:21:20 <Sgeo_> Although this uses the newest version of it
16:21:25 <alise> Deewiant: What about when the coordinates of the branch you're on match the ones you are trying to look up? What direction then?
16:21:29 <alise> All the others are taken.
16:21:38 <alise> Sgeo_: Well... no answer then.
16:21:44 <Deewiant> alise: For example, yes; but you can't just increase by one (or you can, but the new tree will have all but one branch overlapping with the previous (I think?))
16:21:49 <alise> oerjan: Is it fast-in-theory?
16:22:01 <alise> Deewiant: And this is where I totally stop understanding what you're trying to say. :-)
16:22:21 <Deewiant> alise: Quadtrees are about splitting the space into four parts whenever you need increased granularity
16:22:22 <Sgeo_> alise, there are PDF readers for Android, right? I think I saw one or two
16:22:30 <Deewiant> alise: So you start with zero points and a root at (0,0)
16:22:32 <alise> Sgeo_: Presumably. The browser can probably handle it.
16:22:38 <alise> The iPhone certainly has always been able to.
16:22:47 <Deewiant> alise: Then you add a point (1,1) so you make the SE node a leaf with that value
16:22:57 <alise> So S = increase X, E = increase Y.
16:23:01 <Deewiant> alise: Up to you.
16:23:03 <alise> Deewiant: What about the VALUE at this point?
16:23:08 <alise> datatype quadtree
16:23:08 <alise> = Leaf of word ref
16:23:09 <alise> | Branch of coords * subtree * subtree * subtree * subtree
16:23:13 <Deewiant> The word?
16:23:13 <alise> We're looking up (1,1), which has already been inserted.
16:23:17 <alise> We move southeast, and get to (1,1).
16:23:20 <alise> But there are only four subtrees.
16:23:22 <Deewiant> Which is a Leaf.
16:23:24 <alise> Each of them /changes/ the coordinates.
16:23:27 <alise> Deewiant: What?
16:23:28 <oerjan> alise: i don't know, although it _does_ keep a next pointer for easy incrementing
16:23:33 <Deewiant> alise: At this point, it's a Leaf.
16:23:35 <alise> Deewiant: What about when I want to move to (1,2).
16:23:41 <Deewiant> alise: I was getting to that.
16:23:42 <alise> Deewiant: You said I'd never have to change a leaf into a branch.
16:23:58 <Deewiant> alise: Maybe I was wrong: hang on, let me work through this.
16:24:11 <oerjan> alise: i mostly linked to it because it's evil ;)
16:24:17 <alise> oerjan: fair enough then
16:24:19 <Deewiant> alise: So you're inserting (1,2) and all you have is a branch with three empty subtrees and one leaf at (1,1)
16:24:25 <AnMaster> oh wait I found it
16:24:29 <alise> Deewiant: And a dog.
16:24:33 <Deewiant> alise: What you need to do is subdivide the SE area into four parts
16:24:46 <alise> Deewiant: Right. But if I do that, then where goes the value at (1,1)?
16:24:48 <Deewiant> alise: The SE area at this point is (0,0) through (2^32-1, 2^32-1)
16:24:48 <Sgeo_> It still displays the Emergency Call button, even when there's no SIM card
16:24:54 <Deewiant> alise: (Assuming 32 bit words)
16:25:01 <alise> All four parts in the SE area are already taken up by subtrees.
16:25:05 <alise> So the value at (1,1) has nowhere to go.
16:25:09 <Sgeo_> Wait, can it actually use the nearest carrier it can find for emergency calls?
16:25:24 <Deewiant> alise: So you make a new tree, with root at the midpoint, (2^31, 2^31)
16:25:31 <Deewiant> alise: (± 1)
16:25:38 <alise> Deewiant: *Now* I am confused.
16:26:18 <Deewiant> alise: You replace the SE branch of your (0,0) with that tree
16:26:30 <Deewiant> alise: But you're still screwed, because (1,1) and (1,2) are both in the NW node of (2^31, 2^31)
16:26:34 <Deewiant> alise: So you continue subdividing
16:26:44 <alise> I think at this point I should find a nice article. With pictures.
16:26:44 <Deewiant> alise: Until you get to a point where they go into different nodes
16:27:03 <alise> Deewiant: Doesn't that end up creating an unholy amount of subdivisions?
16:27:07 <Deewiant> alise: There are lots of java applets and the like for this :-)
16:27:18 <Deewiant> alise: Max depth O(log n)
16:27:24 <Deewiant> alise: Not unholy, no.
16:27:54 <Deewiant> alise: If you have one word per leaf, you will end up using a lot of space, though; the standard recommendation is to switch to an array at some point, I think
16:28:02 <alise> Quadtrees seem like such a functional data structure; shame they need to be imperative to work nicely.
16:28:14 <alise> Deewiant: Bleh!
16:28:24 <Deewiant> Do they?
16:28:27 <alise> This just keeps getting hairier at hairier.
16:28:33 <alise> Deewiant: Well, they have nice diagrams.
16:28:35 <alise> *and
16:28:42 <alise> I wonder how big the arrays should be; 80*24/
16:28:43 <alise> *?
16:28:51 <Deewiant> alise: But do they need to be imperative? The arrays don't have to be. :-P
16:29:05 <alise> Deewiant: Well, if you update a node you have to update the branch it's in, and the branch that's in, and so on.
16:29:10 <AnMaster> also I should when I have time review the code to see what happens if you get a literal zero byte into the buffer. I suspect it may miscount then
16:29:14 <Deewiant> alise: True enough
16:29:22 <Deewiant> alise: You probably want square arrays since each node is square, btw.
16:29:34 <AnMaster> however I don't think it is possible for that to happen in most places. Certainly not in the two places it is used in STRN
16:29:37 <alise> Deewiant: So, basically, these algorithms are going to be hellishly ugly.
16:29:53 <Deewiant> alise: Data structures tend to be a bit hairy.
16:30:10 <AnMaster> Deewiant, pushing fix for the STRN case at least
16:30:31 <alise> Deewiant: Not their pure forms.
16:30:43 <alise> What I really need to do is hire Okasaki and make him write this for me.
16:31:53 <Deewiant> alise: No, their pure forms tend to also be. :-P
16:32:01 <alise> You're hairy.
16:32:13 * Sgeo_ doesn't want his Gmail Contacts in his phone
16:32:28 <Sgeo_> At least, until I have a chance to clear out my contact list
16:32:52 <fizzie> For some reason I just plain like the "you can't comb a hairy ball smooth" phrase.
16:33:37 <alise> Sgeo_: Tough shit, Android is all Google, all the time. :-)
16:34:10 <Deewiant> AnMaster: Awesome, thanks.
16:34:11 <AnMaster> Deewiant, actually the real issue was that the code was returning actual string length. Not length to first zero byte in case you managed to manually get a zero byte into it.
16:34:45 <AnMaster> Deewiant, probably all code using it should be reviewed, in most cases, like reading data from a file, treating \0 as nothing special is actually the correct behaviour
16:34:54 <fizzie> Deewiant: Why do you want to run fungot, anyway?
16:34:54 <fungot> fizzie: especially if you want to make heavy use of it, haven't eaten anything else either. :)): we create hierarchies all the time
16:34:55 <AnMaster> (this code is used in the fgets thingy for FILE too)
16:35:01 <alise> Deewiant: So, I understand all of it apart from the recursive subdivision.
16:35:01 <AnMaster> (and a few other places)
16:36:27 -!- fungotCCBI has joined.
16:36:35 -!- fungotCFUN has joined.
16:36:41 <Deewiant> Benchmark time!
16:36:59 <AnMaster> Deewiant, until I get a new fungespace in place I wouldn't be surprised if ccbi is faster
16:37:08 <AnMaster> and that won't happen soon
16:37:24 <Deewiant> fizzie: Maybe you can think up of some bf/ul slowness
16:37:46 <AnMaster> ^bf +[.]
16:37:46 <fungot> <CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP> ...
16:37:51 <AnMaster> !bf +[.]
16:37:57 <AnMaster> well what prefix does it use Deewiant ?
16:38:03 <Deewiant> ]
16:38:05 <AnMaster> ]bf +[.]
16:38:05 <fungotCFUN> <CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP> ...
16:38:05 <fungotCCBI> <CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP> ...
16:38:12 <Deewiant> But, erm
16:38:19 <AnMaster> well from here fungotCFUN was just slightly faster at that
16:38:20 <fungot> AnMaster: ok i get it well enough to predict what the most common one
16:38:20 <AnMaster> Deewiant, ^
16:38:31 <AnMaster> ]bf +[>+]
16:38:34 <Deewiant> Something that takes no time at all is pointless
16:38:37 <AnMaster> ]bf +[.]
16:38:37 <fungotCFUN> <CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP> ...
16:38:37 <fungotCCBI> <CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP><CTCP> ...
16:38:49 <Deewiant> AnMaster: Please stop with that one.
16:38:56 <AnMaster> Deewiant, oh?
16:39:06 <alise> Yeah, that is annoying.
16:39:06 <AnMaster> does your client try to treat it as CTCP ?
16:39:07 <Deewiant> AnMaster: It gives me four lines of "requested unknown CTCP" every time.
16:39:13 <AnMaster> mine doesn't
16:39:20 <alise> Not mine.
16:39:20 <AnMaster> ]bf ++[.]
16:39:20 <fungotCFUN> ...
16:39:20 <fungotCCBI> ...
16:39:20 <fizzie> It's a bit noisy anyhow.
16:39:22 <AnMaster> then
16:39:23 <AnMaster> there
16:39:23 <alise> It displays a lot of boxes.
16:39:25 <AnMaster> that is better
16:39:26 <AnMaster> anyway
16:39:40 <AnMaster> I notice the cfunge one is consistently faster
16:39:49 <Deewiant> I notice they are consistently of identical speed
16:40:08 <AnMaster> Deewiant, I notice that consistently CFUN one returns just a tiny fraction of time before the CCBI one
16:40:17 <Deewiant> I ignore such fractions. :-P
16:40:28 <fizzie> Deewiant: You could just test an infiniloop, the timeout cutoff counts executed bf cycles.
16:40:30 <Deewiant> If it takes no time it's not a benchmark.
16:40:32 <fizzie> ]bf +[]
16:40:34 <fungotCFUN> ...out of time!
16:40:34 <fungotCCBI> ...out of time!
16:40:47 <Deewiant> How many cycles is the cutoff?
16:40:58 <fizzie> That got a different second in my timestamps, but it didn't take very long either.
16:41:04 <AnMaster> ]ul (foo)S
16:41:04 <fungotCCBI> foo
16:41:05 <fungotCFUN> foo
16:41:12 <Sgeo_> This phone is going to be in place of getting a new computer
16:41:18 <fizzie> There's the awfully slow underload proggie, but I've forgotten it.
16:41:21 <AnMaster> hm a slow ul one might be better
16:41:31 <Deewiant> I should probably kill my bittorrent uploads to limit network lag
16:41:41 <fizzie> Deewiant: ^bf stops after executing aaaaaa***** bytecode ops.
16:41:44 <AnMaster> ]help
16:41:50 <AnMaster> ]commands
16:41:55 <AnMaster> ]show
16:41:56 <AnMaster> err
16:41:59 <AnMaster> what was the command
16:42:01 <AnMaster> to list all
16:42:02 <AnMaster> ^show
16:42:02 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble
16:42:04 <AnMaster> hm
16:42:09 <fizzie> Probably no commands defined.
16:42:10 <AnMaster> maybe those doesn't have any
16:42:19 <AnMaster> ^show fib
16:42:19 <fungot> >+10>+>+[[+5[>+8<-]>.<+6[>-8<-]+<3]>.>>[[-]<[>+<-]>>[<2+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<3-[>+<-]]]]]]]]]]]+>>>]<3][]
16:42:23 <AnMaster> ^help
16:42:23 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
16:42:26 <fizzie> If you start with an empty state file, there aren't any. But none of those is very slow.
16:42:38 <AnMaster> ]def fib bf >+10>+>+[[+5[>+8<-]>.<+6[>-8<-]+<3]>.>>[[-]<[>+<-]>>[<2+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<3-[>+<-]]]]]]]]]]]+>>>]<3][]
16:42:38 <fungotCFUN> Defined.
16:42:38 <fungotCCBI> Defined.
16:42:48 <alise> hey guys
16:42:48 <AnMaster> fizzie, wait, does it handle the compressed one there?
16:42:50 <AnMaster> ]fib
16:42:50 <fungotCFUN> <CTCP><CTCP><CTCP><CTCP><CTCP>..<CTCP>.<CTCP>..<CTCP>...<CTCP>...<CTCP>...<CTCP>...<CTCP>.. ...
16:42:50 <fungotCCBI> <CTCP><CTCP><CTCP><CTCP><CTCP>..<CTCP>.<CTCP>..<CTCP>...<CTCP>...<CTCP>...<CTCP>...<CTCP>.. ...
16:42:52 <AnMaster> err
16:42:57 <Deewiant> ...
16:42:59 <AnMaster> ^fib
16:42:59 <fungot> 0.1.1.2.3.5.8.13.21.34.55.89.144.233.377.610.987.1597.2584.4181.6765.10946.17711.28657.46368.75025.121393.196418.317811.514229.832040.1346269.2178309.3524578.5702887.9227465.14930352.24157817.39088169.632459 ...
16:42:59 <alise> http://www.w3.org/MarkUp/html3/mathscripts.html ;; once upon a time, there was a <MATH> element in HTML that actually rendered summation signs and stuff
16:43:02 <AnMaster> I guess not
16:43:14 <alise> you could write
16:43:15 <AnMaster> Deewiant, not my fault it can't read it's own output
16:43:26 <alise> <MATH>&sum;_k = 1_^n^ k</MATH>
16:43:32 <alise> for sum k=1 to n, k
16:43:41 <Sgeo_> alise, did any browsers actually support it?
16:43:45 <fizzie> ]ul (xxxx):*:*:*:*:*:*:*:*:(~~)(:^)^
16:43:46 <AnMaster> fizzie, btw why that [] at the end of the fib program?
16:43:48 <alise> Sgeo_: who knows
16:43:50 <fizzie> That should take a while.
16:43:50 <alise> it's awesome
16:43:56 <alise> wish it worked
16:43:58 <AnMaster> fizzie, doesn't it time out quickly?
16:44:11 <alise> Example - the integral from a to b of f(x) over 1+x
16:44:12 <alise> <MATH>&int;_a_^b^{f(x)<over>1+x} dx</MATH>
16:44:12 <alise> which can be rendered on a fixed pitch text-only medium as:
16:44:12 <alise> b
16:44:12 <alise> / f(x)
16:44:12 <alise> | ------- dx
16:44:14 <alise> / 1 + x
16:44:16 <alise> a
16:44:19 <alise> The example uses { and } as shortrefs for <BOX> and </BOX> respectively. This is used for invisible brackets, stretchy delimiters and integral signs, and placing one thing over another. The shortref characters "_" and "^" are used for subscripts and superscripts respectively.
16:44:22 <alise> this is hot
16:44:23 <Deewiant> fizzie: No CPU usage, at least.
16:44:26 <fizzie> No, because the Underload interp also counts executed instructions, and the instructions get slower when there's a long string.
16:44:39 <fizzie> Deewiant: Whoops, I forgot a : there, I think. :p
16:44:55 <fizzie> But it's still a bit fast; I'll refine it a bit, just a moment.
16:45:04 <AnMaster> ^ul (xxxx):*:*:*:*:*:*:*:*:(~~)(:^)^(end)S
16:45:04 <fungot> end
16:45:06 <AnMaster> yeah
16:45:27 <fizzie> ]ul (xxxx):*:*:*:*:*:*:*:*:*:*:*:(~~)(:^):^
16:45:28 <fungotCFUN> ...out of time!
16:45:28 <fungotCCBI> ...out of time!
16:45:41 <AnMaster> ^ul (xxxx):*:*:*:*:*:*:*:*:*:*:*:(~~)(:^):^
16:45:42 <fungot> ...out of time!
16:45:44 <fizzie> It's still pretty fast.
16:45:53 <AnMaster> indeed
16:46:01 <AnMaster> also Deewiant has a monster computer iirc
16:46:08 <AnMaster> some 7 or 8 GB RAM iirc
16:46:09 <Deewiant> Ideally it should take >10s on your fungot :-)
16:46:10 <fungot> Deewiant: i'd rather my scotch straight up. no scheme system still actively maintained ( although a bit different
16:46:12 <fizzie> You can't make the string longer without running out of stack; but it'd probably be better to have two long strings to swap instead of just one.
16:46:21 <fizzie> I'll try to cook up something that does that.
16:46:54 <alise> * Irene Gargantini: An Effective Way to Represent Quadtrees. Commun. ACM 25(12): 905-910(1982)
16:46:58 <alise> does anyone have an acm account? oerjan?
16:47:16 <AnMaster> Gregor, where is egobot? and hackego?
16:47:26 <alise> There was once an HTML 3.0 draft, with a section titled HTML Math, suggesting relatively simple markup for some basic mathematics. But its all history; the draft expired in 1995. (There was also an earlier idea about HTML+, which would have had a different, more natural-looking math syntax.)
16:47:28 <alise> so it was never official
16:47:35 <fizzie> Geh, it's still a bit too fast.
16:47:39 <fizzie> ]ul (xxxx):*:*:*:*:*:*:*:*:*:*:*:(a~a*~~^)(:^):^
16:47:39 <fungotCFUN> ...out of time!
16:47:39 <fungotCCBI> ...out of time!
16:47:39 <AnMaster> hah
16:47:45 <AnMaster> oh different seconds here
16:48:00 <fizzie> Deewiant: If you want, you could increase the limits.
16:48:08 <Deewiant> Whereabouts?
16:48:10 <AnMaster> Deewiant, anyway, if they were the same speed, then shouldn't the cfunge be after the ccbi one just *sometimes*
16:48:18 <AnMaster> Deewiant, which hasn't been the case so far
16:48:26 <Deewiant> AnMaster: It was once.
16:48:40 <AnMaster> oh yes <AnMaster> ]ul (foo)S
16:48:43 <AnMaster> ]ul (foo)S
16:48:44 <fungotCCBI> foo
16:48:44 <fungotCFUN> foo
16:48:44 <Deewiant> :-)
16:48:46 <AnMaster> hm
16:48:48 <Deewiant> heh.
16:48:48 <fizzie> Deewiant: For the underload one, it's on line 310, I believe; the ffaa***81p there.
16:48:54 <AnMaster> Deewiant, you are faster at that one program
16:48:55 -!- fungotCFUN has quit (Remote host closed the connection).
16:48:56 <AnMaster> ]ul (foo)S
16:48:56 <fungotCCBI> foo
16:48:56 -!- fungotCCBI has quit (Remote host closed the connection).
16:49:06 <fizzie> Deewiant: There's even lots of whitespace above it, shouldn't be a problem to fit in a longer number.
16:49:37 <Deewiant> So that's what, 255^2 * 100 = 6502500
16:49:43 <Deewiant> Er, no
16:49:44 <Deewiant> 255 * 100
16:49:53 <fizzie> 15*15 isn't 255.
16:49:56 -!- adam_d has quit (Ping timeout: 265 seconds).
16:50:06 <Deewiant> Blarg, I always think ff* is
16:50:14 <fizzie> Yes, it is a bit misleading.
16:50:21 <Deewiant> Anyway, let's try 500k
16:50:32 <Deewiant> ' '}:**
16:51:13 <fizzie> Deewiant: For the ^bf one it's the aaaaaa***** on line 294, if you want to change that too.
16:51:22 -!- fungotCCBI has joined.
16:51:24 -!- fungotCFUN has joined.
16:51:27 <AnMaster> Deewiant, anyway I believe you will run into your funge space box being suboptimal if I remember where fungot put it's stack correctly
16:51:27 <fungot> AnMaster: dont be silly.
16:51:34 <AnMaster> ]ul (xxxx):*:*:*:*:*:*:*:*:*:*:*:(a~a*~~^)(:^):^
16:51:36 <Deewiant> He said it, not me
16:51:37 <fungotCFUN> ...out of time!
16:51:39 <fungotCCBI> ...out of time!
16:51:42 <Deewiant> Awesome!
16:51:46 <AnMaster> Deewiant, now cfunge was faster :P
16:51:55 -!- fungotCFUN has quit (Remote host closed the connection).
16:51:55 -!- fungotCCBI has quit (Remote host closed the connection).
16:52:03 <Deewiant> Alright, that's what I wanted to know :-)
16:52:21 <AnMaster> Deewiant, but yes I do believe it extended out into -x just above the program code
16:52:36 <AnMaster> perhaps you are just growing the full sized box for the entire program in your AABB thingy
16:52:40 <Deewiant> I'm not that stupid
16:52:43 <AnMaster> Deewiant, good
16:53:29 <fizzie> Deewiant: The underload interp speed is probably quite STRN-dependent, and the stack starts from column 0 and extends to the negative direction, in case that bit of trivia is interesting. There's a whole lot of copying with STRN from stack to temporary space and back.
16:53:36 <AnMaster> Deewiant, but see. For real world befunge apps your carefully-tuned-for-CCBI measurements in fungicide doesn't mean a lot ;P
16:53:36 <Deewiant> fizzie: Any ideas about making that ul-interpreter runnable without requiring an IRC server
16:53:46 <fizzie> Deewiant: There's a standalone version of it already, actually.
16:53:57 <Deewiant> fizzie: Cool! Where's it at
16:54:05 -!- EgoBot has joined.
16:54:05 -!- HackEgo has joined.
16:54:06 <fizzie> Deewiant: Who knows? I'm trying to find it right now.
16:54:09 <Deewiant> fizzie: :-)
16:54:16 <AnMaster> I used to have it
16:54:19 <AnMaster> can't find it any more
16:54:21 <Deewiant> AnMaster: If it's about STRN as he suggests, it's the fact that STRN isn't optimized at all.
16:54:35 <AnMaster> oh found it
16:54:46 -!- coppro has quit (Quit: I am leaving. You are about to explode.).
16:54:46 <AnMaster> http://sprunge.us/FLOO
16:54:46 <fizzie> Deewiant: I found "underload.b98" and "underload2.b98" in my unversioned fungot/misc dir, but I don't know which one is which.
16:54:47 <fungot> fizzie: it depends. if we're going to make functional programming possible. " standard" here...
16:54:49 <AnMaster> Deewiant, see ^
16:55:02 <AnMaster> fizzie, that one was called underload.b98
16:55:13 <fizzie> Also http://zem.fi/~fis/underload.b98 and http://zem.fi/~fis/underload2.b98 -- you can diff all three if you want. :p
16:55:30 <Deewiant> Do these have a timeout?
16:55:41 <fizzie> Hrrm, actually probably not.
16:55:48 <Deewiant> Heh.
16:55:55 <Deewiant> Are those infinite loops?
16:55:57 <AnMaster> fizzie, mine is the non-2
16:56:16 <fizzie> Yes, the programs I did will not terminate.
16:56:35 <Deewiant> Right, so that's not very optimal.
16:56:41 <AnMaster> Deewiant, oh btw I made sure my STRN is quite tuned because fungot uses it. IIRC I even did it at fizzie's request, for being able to up the time limit
16:56:41 <fungot> AnMaster: yes. it's a long time, just send it straight to the end of the
16:56:43 -!- kar8nga has quit (Remote host closed the connection).
16:56:53 <AnMaster> but I'm not completely sure, it was as fungot said, a long time ago
16:56:54 <fungot> AnMaster: also it isn't as fast as scheme48? are you serious? how long did it take you to switch between dialects should probably be
16:57:02 <oerjan> alise: i vaguely recall augur had an acm account
16:57:16 <oerjan> or something like it
16:57:21 <alise> oerjan: I guess you'd be more of an AMS person.
16:57:23 <Deewiant> AnMaster: "Append" does things like pop both strings and push them back.
16:57:25 -!- cheater3 has quit (Ping timeout: 264 seconds).
16:57:27 <Deewiant> In CCBI, that is.
16:57:37 <Deewiant> I presume yours does it in-place? :-)
16:57:45 <Sgeo_> Well, it's going to be a few days until I can get it
16:58:00 <AnMaster> Deewiant, hm it seems mine pops both too.
16:58:01 <Sgeo_> I mentioned it to my step-mom's mother, and my dad doesn't want my step-mom hearing about it
16:58:04 <AnMaster> odd
16:58:19 <AnMaster> it really should not be needed
16:58:31 <fizzie> Deewiant: If you want, you can hack in a timeout; just pick a suitable spot from the beginning of the "interpreter main loop" part, and add in a bit of code; something like 81g1-:!#@_81p or some-such; and initialize with [large number]81p above. It's basically what my timeout does.
16:58:38 <AnMaster> it could pop top one and then push it back, after removing the final \0 byte
16:58:40 <AnMaster> could it not?
16:58:56 <Deewiant> fizzie: Yeah, I was looking at something like that.
16:59:10 <AnMaster> Deewiant, except that would run into issues should the second string have it's \0 = stack underflow
16:59:11 <AnMaster> as in
16:59:18 <AnMaster> it has no \0 in the stack
16:59:48 <fizzie> Deewiant: For example the part that does "1+ :0g:" is executed every round, somewhere in there maybe.
17:00:36 <Deewiant> underload2 looks much nicer to edit in that respect
17:01:18 <fizzie> I think it's the same code, just compacted a bit.
17:01:25 <Deewiant> Yes, it looks such.
17:02:02 <oerjan> alise: btw for a quadtree mapping all of Z x Z i think it only makes sense if there is an infinite tower of parents
17:02:34 <oerjan> although you can of course do that by expanding on the fly
17:02:41 <Deewiant> But this is no good! CCBI terminated in 8 seconds and cfunge is still going. >_<
17:02:54 <Deewiant> I wonder if it infinite-looped somewhere.
17:03:35 <alise> oerjan: well it's actually Z/nZ x Z/nZ
17:03:41 <alise> where n = 2^32 or 2^64, usually
17:03:43 <alise> if I have my notation right
17:04:05 <oerjan> also interestingly you cannot have each parent in that tower be in a _consistent_ position in relation to its parent, or else you will only get one quadrant of Z x Z
17:04:31 <oerjan> alise: oh, in that case subdividing like Deewiant says makes more sense
17:05:21 <oerjan> the subdivisions are just the paired sequence of bits for x and y coordinate, really
17:05:27 <Deewiant> No, CCBI is just going a crapload faster at this than cfunge.
17:05:31 <oerjan> (direction of them, that is)
17:06:07 <fizzie> I should probably make a non-socketized version of fungot, for benchmarking purposes. Non-intrusively I think it could be done by just arranging things so that it's the FILE R and W it uses instead of the SOCK ones there, and replacing the socket opening with file opening.
17:06:07 <fungot> fizzie: mostly directed ais523, if you're trying to solve
17:06:11 <Deewiant> With 500k iterations CCBI takes 3.9 seconds, cfunge is giving me about 200 iterations per second
17:06:14 <Deewiant> 2000*
17:06:24 <Deewiant> (I made it print the iteration count after every 1000 iterations)
17:06:26 <AnMaster> Deewiant, that doesn't match results on irc
17:06:29 <fizzie> fungot: But I'm not trying to solve a directed ais523.
17:06:30 <fungot> fizzie: yet another reason to be in there
17:06:34 <AnMaster> Deewiant, try underload as opposed to underload2
17:07:27 <AnMaster> fungot, in where?
17:07:27 <fungot> AnMaster: ok well my code works?" " i'd try to infer what he means by enticing code and stepping in fnord.
17:07:30 <fizzie> Yes, uh, I make no guarantees that the underload2 code is actually *correct*. It's just something I had.
17:08:14 <Deewiant> Ah yes, underload.b98 is much better.
17:08:23 <Deewiant> Both go fast, with cfunge being faster.
17:08:31 <AnMaster> Deewiant, see. That is the one you should use
17:08:32 -!- tombom has quit (Quit: Leaving).
17:08:37 <Deewiant> AnMaster: ;-P
17:08:51 <fizzie> Still a bit curious that you get different results there.
17:08:54 <Deewiant> But yes, it is around ten times faster for CCBI as well, so it is preferable.
17:09:38 <alise> You can actually make this valid SGML: T_`n` = #&sum# _(`k` = 1&to;`n`)_ 1/`k`
17:09:42 <alise> s/ $//
17:09:45 <alise> Expanding to
17:09:52 <alise> Err, wait, actually:
17:09:52 <Deewiant> fizzie: If it does wrapping, that could be one reason for the difference.
17:09:53 <AnMaster> Deewiant, hah, selfishness is the strongest force.
17:09:59 <alise> T_`n`_ = #&sum# _(`k` = 1&to;`n`)_ 1/`k`
17:10:15 <fizzie> Deewiant: I don't usually do wrapping intentionally, but I guess it might do it accidentally.
17:10:25 <Deewiant> CCBI's wrapping can be constant time in situations where it's O(n) in the number of spaces for hash table types.
17:10:48 <AnMaster> hm
17:11:29 <Deewiant> I wrap in the iteration time checkers, but then it should be the same for both.
17:12:02 <AnMaster> Deewiant, how much faster is cfunge than ccbi at that btw?
17:12:35 <Deewiant> AnMaster: It's around 0.7 versus 0.45 (seconds)
17:12:40 <fizzie> Incidentally, jitfunge's space is hash-table-based, but it does O(1)-ish wrapping, basically by computing the necessary delta-multiplications to get over the opposite top/side borders, then choosing the min() out of those and jumping directly there. It's a bit untested, though.
17:12:46 <AnMaster> Deewiant, cfunge being 0.45?
17:12:58 <Deewiant> AnMaster: I did say it was faster...
17:13:18 <AnMaster> Deewiant, yes, but try increasing timeout so you get around 10 seconds of each
17:13:24 <AnMaster> will be interesting
17:13:30 <Deewiant> I don't care that much
17:13:36 <Deewiant> It takes a minute to callgrind as is.
17:13:44 <AnMaster> why do you callgrind it?
17:13:48 <Deewiant> To profile.
17:13:54 <AnMaster> Deewiant, you don't use oprofile?
17:13:59 <Deewiant> Evidently not.
17:14:23 <Deewiant> fizzie: That can still be O(n) in some cases where CCBI is O(1) since your top/side borders always move with the whole space.
17:15:02 <AnMaster> btw this shows that while ccbi may excel at rather specialised test cases, cfunge is the best interpreter if you prefer real world applications ;P
17:16:29 <AnMaster> Deewiant, oh and do tell me where it spent the time when you analysed the callgrind result
17:17:32 -!- tombom has joined.
17:18:15 <Deewiant> Oh wait, wtf
17:18:22 <Deewiant> My iteration-checker is broken
17:18:32 <Deewiant> It never reenters the main loop >_<
17:18:55 <AnMaster> Deewiant, in the underload2 case?
17:19:00 <AnMaster> or the underload one?
17:19:04 <fizzie> Deewiant: Yes, that's why I called it just "O(1)-ish". :p
17:19:05 <Deewiant> The latter
17:19:14 <Deewiant> fizzie: :-P
17:19:28 <Deewiant> Here we go, 3.6 versus 2.6 now.
17:19:39 <AnMaster> Deewiant, and the latter is cfunge?
17:19:40 <Deewiant> At least CCBI uses a lot less memory. :-P
17:19:43 <Deewiant> Yes.
17:20:05 <fizzie> Deewiant: Do you special-case cardinal-direction movement/wrapping somehow? I don't do non-cardinal deltas at all, after all.
17:20:16 <AnMaster> Deewiant, memory usage is not of primary interest to cfunge. As long as it is reasonable (as defined by me!)
17:20:45 <AnMaster> fizzie, haha
17:20:49 <Deewiant> fizzie: I don't solve a diophantine equation for that case
17:20:56 <Deewiant> Or I guess I do, but I avoid the division
17:21:11 <Deewiant> Or at least I think I do that.
17:21:33 <Deewiant> Yes, I appear to.
17:22:16 <AnMaster> Deewiant, I just end up jumping to the opposite side. How much faster is the diophantine equation for non-cardinal wrapping than doing it like in the funge-98 spec?
17:22:25 <AnMaster> that is, reversing and searching for the opposite side
17:23:33 <Deewiant> AnMaster: time ccbi slowdown.b98 mycology.b98 -> 0.87user 0.00system 0:00.88elapsed 99%CPU (0avgtext+0avgdata 66096maxresident)k
17:23:43 <Deewiant> AnMaster: time cfunge slowdown.b98 mycology.b98 -> 10 seconds and counting
17:24:08 <AnMaster> Deewiant, huh? With exact bounds?
17:24:14 <Deewiant> Yes.
17:24:26 <AnMaster> Deewiant, I'm extremely surprised. Did you change something recently?
17:24:42 <AnMaster> like no longer removing the slowdown program from memory or such
17:24:52 <AnMaster> Deewiant, or resetting the storage offset to 0?
17:24:53 <Deewiant> I don't think slowdown has changed
17:25:10 <Deewiant> I think I changed Mycology to go a bit further
17:25:16 <Deewiant> Even with a bad storage offset, or something
17:25:18 <AnMaster> Deewiant, using the slowdown version I have here, it is quick
17:25:26 <Deewiant> Latest Mycology?
17:25:30 <Deewiant> Where does it end?
17:25:41 <oerjan> in disaster, obviously
17:25:46 <Deewiant> Quite
17:26:05 <AnMaster> Deewiant, it takes
17:26:07 <AnMaster> wait
17:26:08 <AnMaster> huh
17:26:11 <AnMaster> GOOD: basic cBAD: t reflects without creating a new IP or concurrency is very broken
17:26:11 <AnMaster> Situation might be very messed up, trying to quit with q
17:26:17 <AnMaster> only with slowdown
17:26:38 <AnMaster> Deewiant, is that where ccbi ends too?
17:26:42 <Deewiant> Yes
17:26:52 <AnMaster> Deewiant, well it took about 3 seconds. Let me rerun with time
17:27:03 <AnMaster> Deewiant, 2.83 seconds wall time
17:27:21 <Deewiant> I'm at 4 minutes of CPU and counting
17:27:27 <AnMaster> Deewiant, I suppose you either disabled exact bounds or you hit a bad random position
17:27:45 <AnMaster> Deewiant, tell me the random position it ended up at
17:27:58 <Deewiant> AnMaster:
17:27:58 <Deewiant> AnMaster: That the position of the IP was ( -1178306726 1116900389 )
17:28:06 <AnMaster> hm okay
17:28:30 <AnMaster> Deewiant, my slowdown seems to be that hardwired one you gave me to test that bug some time ago
17:28:37 <Deewiant> Well heh
17:28:41 <AnMaster> Deewiant, can't find any other
17:28:43 <Deewiant> That one goes to a really low point
17:28:45 <AnMaster> link to current version?
17:29:01 <AnMaster> wgetable link that is
17:29:10 <AnMaster> Deewiant, ?
17:29:16 <Deewiant> AnMaster: !
17:29:16 <Deewiant> AnMaster: !
17:29:16 <Deewiant> AnMaster: !
17:29:17 <Deewiant> AnMaster: !
17:29:17 <Deewiant> AnMaster: !
17:29:19 <Deewiant> AnMaster: !
17:29:22 <Deewiant> AnMaster: !
17:29:24 <Deewiant> AnMaster: !
17:29:25 <AnMaster> mhm?
17:29:27 <Deewiant> AnMaster: !
17:29:29 <Deewiant> AnMaster: !
17:29:49 <AnMaster> I see you are trying to make a point. I don't see what said point is
17:29:56 <Deewiant> AnMaster: http://iki.fi/deewiant/files/befunge/programs/slowdown.b98
17:30:00 <AnMaster> thanks
17:30:13 <Deewiant> Had to upload it first
17:30:37 <AnMaster> Deewiant, does it do wrapping inside y?
17:30:45 <AnMaster> also, it seems to be writing around 0,0
17:30:49 <AnMaster> well not odd in that case
17:30:49 <Deewiant> Mycology always wrapped inside y
17:31:07 <Deewiant> If by "inside y" you mean "in the y tests", anyway.
17:31:12 <AnMaster> well yes
17:31:19 <AnMaster> I thought that was obvious
17:31:27 <Deewiant> It was, fairly.
17:32:04 <oerjan> <AnMaster> GOOD: basic cBAD: t reflects without creating a new IP or concurrency is very broken <-- :D
17:32:22 <Deewiant> Damn, that underload.b98 takes a long time.
17:32:30 <Deewiant> 62750457 ticks
17:32:30 <AnMaster> Deewiant, not on cfunge :P
17:33:01 <oerjan> scrödinger's concurrency
17:33:06 <oerjan> *+h
17:33:12 <AnMaster> Deewiant, because it is a real world application®, which cfunge® is optimised for. Unlike CCBI, optimised for exotic benchmarks
17:33:46 <oerjan> i want some proof you actually registered that trademark
17:33:56 <Deewiant> Especially the one for application®
17:33:58 <AnMaster> oerjan, I didn't. It was a joke
17:34:08 <AnMaster> Deewiant, actually it is "real world application"®
17:34:15 <AnMaster> not just application
17:34:37 <Deewiant> Removing fingerprints cut off some 0.3 seconds, but not enough to make the difference
17:34:43 <oerjan> AnMaster: you cannot joke about such matters, you'll end up in jail
17:34:50 <AnMaster> Deewiant, fingerprints from what? underload?
17:34:58 <Deewiant> AnMaster: ...... CCBI
17:35:07 <alise> A quadtree may be represented without pointers by encoding each black node with a quaternary integer whose digits reflect successive quadrant subdivisions. We refer to the sorted array of black nodes as the linear quadtree and show that it introduces a saving of at least 66 percent of the computer storage required by regular quadtrees. Some algorithms using linear quadtrees are presented, namely, (i) encoding a pixel from a 2n 2>n array (or scr
17:35:08 <alise> een) into its quaternary code; (ii) finding adjacent nodes; (iii) determining the color of a node; (iv) superposing two images. It is shown that algorithms (i)-(iii) can be executed in logarithmic time, while superposition can be carried out in linear time with respect to the total number of black nodes. The paper also shows that the dynamic capability of a quadtree can be effectively simulated.
17:35:09 <AnMaster> Deewiant, for mycology or underload?
17:35:14 <AnMaster> which test is you testing on
17:35:21 <Deewiant> I don't test Mycology, it runs in 0s.
17:35:22 <AnMaster> are*
17:35:44 <AnMaster> Deewiant, well then. underload.b98 needs STRN. So weird that it works at all if you remove fingerprints
17:35:48 <AnMaster> so thus it can't be it
17:35:52 <AnMaster> it must be something else
17:35:56 <Deewiant> I didn't say /all/ fingerprints
17:36:05 <AnMaster> okay
17:36:35 <AnMaster> Deewiant, anyway why would removing fingerprints help? Basically it would reduce the binary size and the time needed to look up the fingerprint name
17:36:43 <Deewiant> AnMaster: TRDS, IMAP, IIPC, MODE...
17:36:45 <AnMaster> if those added up to 0.3 seconds something is *very* wrong
17:36:55 <Deewiant> You know, all those fingerprints that you don't implement
17:37:04 <AnMaster> Deewiant, those are in core partly, no? You have the core parts in #ifdef or such?
17:37:06 <oerjan> alise: i think that assumes actually allocating all the quadtree as an array up front
17:37:10 <Deewiant> Yes, I do.
17:37:13 <Deewiant> In part.
17:37:13 <AnMaster> right
17:37:43 <oerjan> hm, except that last sentence
17:37:48 <AnMaster> Deewiant, just accept it. You made a great funge interpreter. But you can't be best at everything
17:37:50 <AnMaster> :P
17:38:04 <Deewiant> AnMaster: So what's this I hear about you making a better Funge-Space? :-P
17:38:21 <alise> :- is notation for the turnstile |- isn't it
17:38:26 <oerjan> alise: oh wait, it's actually _saving the coordinates_?
17:38:26 <AnMaster> Deewiant, well yes, I can do that, But I would be very much surprised if that didn't result in it ended up slower at something else
17:38:33 <Deewiant> Of course it does
17:39:01 <AnMaster> Deewiant, so that is a trade off. You seem to use less memory too. Perhaps you preferred memory over speed in some tradeoffs?
17:39:05 <Deewiant> Ended with: 11 AABBs live
17:39:06 <Deewiant> Had: 12 AABBs live at maximum
17:39:06 -!- lament has joined.
17:39:11 <AnMaster> mhm
17:39:13 <Deewiant> That doesn't sound very good.
17:39:25 <AnMaster> Deewiant, I can't tell
17:39:31 <Deewiant> I know.
17:39:41 <AnMaster> Deewiant, if the program is split out in many parts it seems reasonable
17:40:00 <AnMaster> Deewiant, also I just realised a ul program that will throw off your algorithm
17:40:06 <Deewiant> It doesn't seem split.
17:40:22 <Deewiant> If the comments are to be believed, this should allocate at most 3 AABBs at any given time, I think. Maybe 2.
17:40:23 <AnMaster> Deewiant, one that writes large stretches of spaces in the stack then switches it to being filled
17:40:38 <Deewiant> In the stack?
17:40:43 <AnMaster> Deewiant, in the ul stack
17:40:45 <AnMaster> which is in funge space
17:40:51 <Deewiant> Right.
17:40:58 <Deewiant> That shouldn't be much of a problem?
17:41:10 <AnMaster> Deewiant, well, I don't know if you ever free AABBs?
17:41:18 <AnMaster> or shrink them
17:41:22 <Deewiant> Rarely.
17:41:31 <Deewiant> Never in this program.
17:41:43 <oerjan> the stack of 'ul
17:41:49 <AnMaster> Deewiant, what about shrinking them? Probably ccbi could be fooled into having a lot of mostly empty AABBs around
17:42:04 <Deewiant> Yes, that could happen.
17:42:35 <AnMaster> Deewiant, making it resort to the hash table., and then you make sure most of the cfunge static funge space is out of any AABB, thus giving cfunge an advantage
17:42:37 <AnMaster> you know
17:42:43 <AnMaster> you should write such a test for fungicide
17:42:48 <Deewiant> ?
17:42:51 <AnMaster> But I bet you won't :P
17:42:56 <Deewiant> I don't understand what you mean.
17:43:37 <AnMaster> Deewiant, I presume that if the program itself is actually just something tiny that loads the main program somewhere else and then jumps to it you won't have much of an AABB around the (0,0)?
17:44:00 <Deewiant> You've pretty much just described slowdown.b98. :-P
17:44:10 <AnMaster> Deewiant, and if that is cleared and then that AABB reused elsewhere for those mostly static ones.
17:44:21 <AnMaster> err
17:44:25 <AnMaster> mostly empty ones*
17:44:40 <Deewiant> If it is reused elsewhere?
17:44:44 <Deewiant> What do you mean?
17:44:50 <alise> does fungicide do slowdown?
17:44:54 <Deewiant> No.
17:44:56 <alise> if not, it should; it would then take 5 years to run
17:45:00 <Deewiant> Yes. :-P
17:45:03 <AnMaster> Deewiant, well I don't know. I presume you won't leave empty AABBs around if you are out of them elsewhere?
17:45:23 <Deewiant> Yes, I do.
17:45:27 <AnMaster> Deewiant, oh and when it switched to hash table, does it grow any of the existing AABBs?
17:45:33 <Deewiant> No, it doesn't.
17:45:47 <alise> datatype quadtree
17:45:47 <alise> = Leaf of word array
17:45:48 <alise> | Branch of coords * subtree * subtree * subtree * subtree
17:45:52 <Deewiant> In underload.b98 it didn't switch to hash table, I don't know why we're talking about the hash table.
17:45:53 <alise> This is the optimal practical structure, right?
17:46:06 <AnMaster> Deewiant, I'm not talking about underload.b98
17:46:08 <Deewiant> alise: You need a coords in the Leaf, no?
17:46:13 <alise> where subtree is a pointer to maybe-a-quadtree
17:46:15 <alise> Deewiant: Hm, right.
17:46:28 <alise> datatype quadtree
17:46:28 <alise> = Leaf of coords * word array
17:46:28 <alise> | Branch of coords * subtree * subtree * subtree * subtree
17:46:28 <alise> and type subtree = quadtree option ref
17:46:31 <AnMaster> Deewiant, anyway. Once that switch over happened, this benchmark would then write some funge space intensive thing near 0,0, but outside the initial AABB
17:46:36 <AnMaster> inside cfunge's static area
17:46:45 <AnMaster> but outside the initial AABB
17:46:53 <alise> I believe the only operations I need are
17:46:55 <alise> val move : quadtree * direction -> quadtree
17:46:56 <alise> val leaf : quadtree -> word
17:46:57 <alise> val put : quadtree * word -> unit
17:47:01 <AnMaster> Deewiant, that is my suggestion for a new fungicide benchmark :P
17:47:01 <alise> and I can perform the rest with pattern-matching + them
17:47:02 <Deewiant> AnMaster: That sounds a bit like an anti-CCBI test. :-P
17:47:13 <AnMaster> Deewiant, yes but I feel you have too many pro-CCBI tests already
17:47:16 <AnMaster> so you need some balance
17:47:25 <Deewiant> They're not really pro-CCBI IMO.
17:47:33 <Deewiant> Most of them were written before I even knew what to do with CCBI 2.
17:47:56 <AnMaster> Deewiant, right, but then you made sure ccbi2 would be fast with those, even at the expense of apps like underload.b98 ;P
17:47:59 <Deewiant> I was just thinking of different kind of data access patterns.
17:48:02 <Deewiant> kinds*
17:48:10 <alise> Deewiant: Of course the issue now is: deciding the size of the array, and finding out how the hell I do the subdivision.
17:48:15 <Deewiant> AnMaster: No, actually I was trying to be fast at everything.
17:48:28 <Deewiant> AnMaster: But heuristics will fail. (If that's what's going on here.)
17:48:48 <AnMaster> Deewiant, well, that is almost the definition of heuristics. "Will sometimes fail"
17:48:55 <Deewiant> Correct.
17:49:15 <AnMaster> Deewiant, was that to me or alise?
17:49:34 <Deewiant> Given that alise's last was a minute ago... to you.
17:49:40 <AnMaster> Deewiant, can't tell what alise is saying due to /ignore
17:49:45 <Deewiant> Then don't make it my problem.
17:49:48 <alise> Hey guys, did I mention I have alise on ignore
17:49:52 <alise> Guys GUYS WHAT ARE YOU TALKING ABOUT
17:49:53 <AnMaster> hm?
17:49:57 <alise> I can't understand you it's like you're talking to thin air
17:50:00 <AnMaster> that must have been to alise ;P
17:50:03 <Deewiant> Hmm, lots of weird boxes in underload.b98.
17:50:03 <alise> Oh it's alise. I have her on ignore by the way.
17:50:08 <AnMaster> Deewiant, hah
17:51:09 <AnMaster> Deewiant, anyway some anti-ccbi test might be a good idea. It isn't like CCBI will end up like Language::Befunge because of that
17:51:32 <AnMaster> there is no way Language::Befunge can beat ccbi, even at extremely anti-ccbi benchmarks
17:51:34 <Deewiant> If you can think of something reasonable and/or will implement it...
17:51:45 <Deewiant> AnMaster: Really, hollow-square and diagdown/diagup are anti-current-CCBI
17:51:47 <AnMaster> Deewiant, I suggested something above. I guess you consider it unreasonable?
17:52:16 <Deewiant> AnMaster: It just seems a bit random and too "tailored"
17:52:19 <AnMaster> Deewiant, anyway adding some real applications, such as life.bf and underload might be a good idea. I assume ccbi will be quite okay at the former
17:52:24 <Deewiant> What's the use case?
17:52:26 <AnMaster> since it keeps inside the b93 area
17:52:30 <Deewiant> Yes, they are a good idea
17:52:42 <Deewiant> life.bf I considered but found too much of a pain to try to figure out
17:52:50 <Deewiant> underload I didn't realize was available in such a convenient form.
17:53:00 <alise> Deewiant: Do you mind restating what the directions have to mean? Not specific ones, but the general...
17:53:07 <AnMaster> Deewiant, life.bf is some quite amazingly compact code yes
17:53:17 <AnMaster> also perhaps some IO performance tests
17:53:20 <AnMaster> that might be interesting
17:53:34 <AnMaster> not just standard IO but also i and o
17:53:41 <Deewiant> alise: Directions mean directions. What do you mean?
17:54:02 <Deewiant> AnMaster: Yes; please go ahead and write such tests. I'm not that interested in I/O performance so I haven't done that.
17:54:07 <AnMaster> Deewiant, I don't know how good ccbi is at i?
17:54:08 -!- alise has left (?).
17:54:11 -!- alise has joined.
17:54:15 <alise> Deewiant: for instance
17:54:18 <Deewiant> AnMaster: Neither do I?
17:54:21 <AnMaster> well then
17:54:29 <AnMaster> aren't you interested in finding out?
17:54:29 <alise> NW = (-1,-1), NE = (-1,1), SW = (1,-1), SE = (1,1)
17:54:33 <alise> Deewiant: but then what of (0,2)
17:54:43 <Deewiant> AnMaster: Not really? :-P The disk tends to be the bottleneck
17:54:45 <alise> how do we get there, considering all moves are diagonal?
17:54:56 <AnMaster> Deewiant, ffs. ramdisk
17:55:02 <Deewiant> AnMaster: Rare.
17:55:08 <AnMaster> Deewiant, well you could test that
17:55:13 <Deewiant> AnMaster: Rare.
17:55:16 <Deewiant> alise: The locations of the branches don't matter, only the root.
17:55:18 <AnMaster> Deewiant, anyway for stdio you don't need to ever put it on that
17:55:20 <Deewiant> alise: Er, the current node.
17:55:25 <AnMaster> Deewiant, it could go through a pipe
17:55:30 <AnMaster> to a throughput measuring app
17:55:32 <AnMaster> or whatever
17:55:33 <alise> Deewiant: I don't quite understand. :-P
17:56:08 <AnMaster> Deewiant, oh and what about fingerprint performance. Some might be interesting. Like FRTH and STRN. Both can be be implemented both quite fast and also very very naively
17:56:08 <Deewiant> alise: Well, I'm not sure what you're asking. If you want to know where to find/place (0,2), you look at where you are now and go in the appropriate direction.
17:56:15 <AnMaster> so that might show a huge difference
17:56:25 <AnMaster> 3DSP might be interesting too
17:56:27 <alise> Deewiant: You are at (0,0).
17:56:40 <Deewiant> alise: If x is equal do we go west or east?
17:56:41 <alise> You can move to (1,1), (1,-1), (-1,1), (-1,-1).
17:56:45 <Deewiant> alise: Incorrect.
17:56:50 <Deewiant> alise: You can move NW/NE/SW/SE.
17:56:50 <alise> (NW/NE/SW/SE)
17:56:58 <alise> Deewiant: ffff
17:56:59 <Deewiant> alise: What points are there is beyond are concern at this point.
17:57:03 <Deewiant> our*
17:57:05 <AnMaster> Deewiant, something like a befunge dhrystone?
17:57:06 <alise> Okay then:
17:57:14 <alise> North - X is same; South - X is different
17:57:23 <alise> West - Y is same; East - Y is different
17:57:25 <alise> Er, wait.
17:57:27 <alise> That's silly.
17:57:30 <AnMaster> Deewiant, from what I can tell, the current fungicide benchmarks don't test arithmetic speed
17:57:32 <Deewiant> AnMaster: Yes, all manner of thing can be tested that Fungicide doesn't. It is also work to do.
17:57:33 <alise> North - Y is same; South - Y is different
17:57:40 <alise> West - X is same; East - X is different
17:57:53 <alise> So we want to move southeast?
17:58:02 <AnMaster> Deewiant, this could be one place where jitfunge could shine. Optimising divisions by 2^5 into bitshifts and such
17:58:07 <Deewiant> alise: X is same here, so southwest, no?
17:58:10 <AnMaster> which is not feasible in either cfunge or ccbi
17:58:24 <Deewiant> AnMaster: I have lots of work to do; if you want these things to happen, help out. (It's probably fairly trivial to write this kind of benchmark.)
17:58:44 <alise> (0,0) / (0,2)
17:58:44 <alise> (x,y)
17:58:47 <alise> x is right
17:58:48 <alise> y is wrong
17:58:57 <alise> * NW: right X, right Y
17:58:57 <alise> * NE: right X, wrong Y
17:58:58 <alise> * SW: wrong X, right Y
17:58:58 <alise> * SE: wrong X, wrong Y
17:59:09 <alise> so northeast
17:59:12 <Deewiant> alise: It's not about right/wrong
17:59:12 <alise> wait
17:59:14 <alise> y is vertical
17:59:15 <AnMaster> Deewiant, anyway most useful is definitely real programs. I think life.bf would be most useful of these
17:59:16 <alise> ffff
17:59:21 <alise> okay let me rewrite this
17:59:26 <Deewiant> alise: It's about lesser-equal/greater vs lesser/greater-equal
17:59:28 <AnMaster> which is non-trivial to adapt
17:59:51 <Deewiant> AnMaster: So please adapt it so I don't have to. :-P
17:59:53 <alise> * NW: wrong X, wrong Y
17:59:53 <alise> * NE: right X, wrong Y
17:59:53 <alise> * SW: wrong X, right Y
17:59:53 <alise> * SE: right X, right Y
17:59:56 <AnMaster> Deewiant, hah
18:00:01 <alise> Deewiant: Wrong = different, right = same
18:00:02 <alise> So
18:00:06 <alise> (x,y) = (0,0)
18:00:10 <alise> (x,y) = (0,2)
18:00:13 <AnMaster> Deewiant, how many FLOPS can FPSP in ccbi manage btw? ;P
18:00:15 <alise> x is right, y is wrong.
18:00:18 <alise> Northeast.
18:00:19 <Deewiant> AnMaster: Do not know.
18:00:23 <Deewiant> AnMaster: As you know.
18:00:31 <AnMaster> Deewiant, I'm trying to get you interested in it dammit ;P
18:00:36 <alise> We want to move northeast.
18:00:40 <Deewiant> AnMaster: Not gonna happen like that. :-P
18:00:48 <AnMaster> meh
18:00:48 <Deewiant> alise: y increases to the south, no?
18:01:10 <alise> Deewiant: Okay, I am so fucking confused. My brain appears to have forgotten coordinates entirely.
18:01:19 <Deewiant> alise: 2010-04-11 19:59:02 ( Deewiant) alise: It's about lesser-equal/greater vs lesser/greater-equal
18:01:23 <alise> But still.
18:01:27 <alise> Having NW be wrong X, right Y seems so wrong.
18:01:34 <alise> West and North seem so... samey.
18:01:35 <Deewiant> alise: It's not about wrong/right, still.
18:01:41 <alise> Deewiant: You said same/different.
18:01:47 <alise> You didn't say <=/>
18:01:53 <Deewiant> alise: Where'd I say that?
18:02:03 <alise> Ages ago.
18:02:17 <Deewiant> /last same doesn't see me saying much of anything.
18:02:24 <alise> Okay, fine.
18:02:32 <Deewiant> It does see you saying it a couple of times, though. :-P
18:02:52 <Deewiant> alise: Make life simpler for yourself and pick (1,2) for the example. :-P
18:02:52 <alise> So, wait, eh?
18:02:55 <alise> You have four comparisons.
18:03:02 <alise> So I want to map [NS][WE] to pairs of ... what?
18:03:03 <Deewiant> You have two comparisons.
18:03:09 <alise> "lesser-equal/greater vs lesser/greater-equal"
18:03:31 <AnMaster> Deewiant, how far has he reached in his funge thing? Still deciding language? Or deciding how to implement the main loop now?
18:03:32 <Deewiant> alise: If input.x < node.x then go west; if input.x > node.x then go east; similarly for y
18:03:34 <AnMaster> Or perhaps the stack
18:03:51 <Deewiant> alise: The question is, which branch do we take when input.x = node.x.
18:03:59 <Deewiant> alise: (And it's completely arbitrary.)
18:04:18 <alise> Deewiant: Okay, I'll write this down.
18:04:22 <AnMaster> ah, I guess fungespace and quad/oct-tree then
18:04:49 <Deewiant> AnMaster: Disabling statistics bought me another 0.3 seconds.
18:04:54 <oerjan> alise: iiuc and if you are using 2^n x 2^n space then there is an easier way to look at it
18:04:57 <Deewiant> So I'm only 0.4 seconds behind now. :-P
18:05:07 <AnMaster> Deewiant, try disable tracing for cfunge
18:05:10 <AnMaster> Deewiant, otherwise it isn't fair
18:05:11 <alise> Deewiant: If I pick <= for North, I should pick <= for east, so that there's a sort of symmetry, rather than having a bias. :-D
18:05:15 <oerjan> basically take the (x,y) coordinate, write each of x and y in binary
18:05:15 <Deewiant> AnMaster: It's enabled in CCBI.
18:05:29 <AnMaster> Deewiant, well you have a debugger for it, mine is closer to statistics
18:05:30 <Deewiant> alise: Whatever. :-P
18:05:39 <Deewiant> AnMaster: Er, no it isn't
18:05:41 <AnMaster> Deewiant, so yes disable the tracing, won't make much of a difference
18:05:50 <oerjan> say x = 00001100 and y = 11100001
18:05:51 <Deewiant> AnMaster: Both are just one if (tracing) doSomething();
18:06:06 <AnMaster> Deewiant, do you have tracing inside k too?
18:06:07 <AnMaster> Deewiant, I do
18:06:17 <Deewiant> AnMaster: My statistics are all over the place: one per tick, one per IP per tick, one per Funge-Space lookup, one per stack push, one per stack pop, etc.
18:06:22 <alise> Deewiant:
18:06:23 <alise> (* North: wanted y <= current y
18:06:23 <alise> * South: wanted y > current y
18:06:23 <alise> *
18:06:23 <alise> * East: wanted x < current x
18:06:23 <alise> * West: wanted x => current x
18:06:25 <alise> *)
18:06:26 <oerjan> alise: then _pair_ corresponding bits. 01 01 01 00 10 10 00 01
18:06:29 <Deewiant> AnMaster: There are no ks in this program.
18:06:37 <AnMaster> Deewiant, my trace is all over the place too: one per ip per tick and in k
18:06:38 <alise> So, (0,2); x is ok, so West; y is wrong (wanted is greater), so South.
18:06:42 <alise> Southwest, Deewiant, right?
18:06:43 <AnMaster> Deewiant, plus in some fingerprints iirc
18:06:44 <alise> oerjan: wut.
18:06:46 <Deewiant> AnMaster: No, that's not all over the place. :-P
18:07:04 <oerjan> those pairs are your directions. 00 = SW, 01 = NW, 10 = SE, 11 = NE
18:07:07 <Deewiant> alise: Right.
18:07:10 <oerjan> (from the root)
18:07:14 <AnMaster> Deewiant, btw when do you shrink bounds in ccbi2?
18:07:20 <alise> Deewiant: But then what? Do we just insert a leaf there?
18:07:22 <Deewiant> oerjan: I don't see how this is "an easier way to look at it"
18:07:25 <AnMaster> Deewiant, lazily? Or eagerly ?
18:07:28 <Deewiant> AnMaster: In y.
18:07:36 <alise> Incidentally, I have no clue how I'm going to do exact bounds with this
18:07:40 <AnMaster> Deewiant, do you have a flag for if it is exact like I do?
18:07:41 <Deewiant> alise: No, now you go there and take a look.
18:07:47 <Deewiant> AnMaster: No, I don't.
18:07:50 <AnMaster> hm
18:07:55 <alise> Deewiant: >_<
18:08:04 <Deewiant> alise: I.e. take the SW link and do something based on what's there.
18:08:12 <AnMaster> Deewiant, btw with the hash table funge space is your wrapping still O(1)?
18:08:16 <Deewiant> alise: I.e. recursion. :-P
18:08:33 <Deewiant> AnMaster: My wrapping is not globally O(1)
18:08:35 <alise> Deewiant: I'll write a function to decide what direction to go in, then.
18:08:45 <Deewiant> alise: Good idea!
18:09:18 <Deewiant> AnMaster: But yes, it uses the same algorithm, just treating the hash table area as one more box.
18:09:28 <AnMaster> Deewiant, so one could make a benchmark where you get very slow wrapping due to using hash table and only shrinking bounds in y?
18:09:43 <oerjan> Deewiant: well i cannot make heads or tails of what you are saying, so easier for _me_ :D
18:09:44 <AnMaster> Deewiant, do you shrink the bounds of the hash table box then?
18:09:47 <Deewiant> AnMaster: The bounds aren't used for wrapping.
18:09:55 <Deewiant> oerjan: >_<
18:10:00 <alise> Deewiant: It freaks me out that we have x,y in tuples but y,x in direction names
18:10:02 <alise> like northeast
18:10:11 <AnMaster> Deewiant, then what is used for it? if you have a huge sparely populated hash table box
18:10:11 <Deewiant> alise: Blame English. :-P
18:10:11 <oerjan> actually i guess N and S should be switched if y is numbered from top like in funge
18:10:35 <AnMaster> oerjan, I don't get it
18:10:50 <AnMaster> the pun I mean
18:10:54 -!- jcp has joined.
18:10:54 <oerjan> what pun
18:10:57 <AnMaster> probably due to something alise said?
18:11:03 <AnMaster> <oerjan> Deewiant: well i cannot make heads or tails of what you are saying, so easier for _me_ :D <Deewiant> oerjan: >_<
18:11:14 <Deewiant> AnMaster: What makes you think there is a pun anywhere.
18:11:20 <AnMaster> Deewiant, oerjan said it :P
18:11:35 <oerjan> AnMaster: he is just frustrated i don't understand his NW stuff (or at least don't think it helps any)
18:11:37 <Deewiant> If oerjan says something it is not automatically a pun.
18:11:38 <AnMaster> pretty good indicator of P(pun)
18:11:49 <AnMaster> Deewiant, it is if someone else go >_< at it
18:12:09 <Deewiant> I think I'm the only one here who goes >_< at anything
18:12:20 <Deewiant> And I think I don't usually respond to puns
18:12:20 <AnMaster> Deewiant, I do it, in other channels mostly
18:12:35 <AnMaster> more often -_- though
18:12:55 <oerjan> Deewiant: i assumed you were trying to find out how to go to a specific coordinate. from the root my way is very simple.
18:13:27 <alise> fun directionFor ((cx,cy), (wx,wy)) =
18:13:27 <alise> case (wy <= cy, wx < cx)
18:13:27 <alise> of (false,false) => SW
18:13:27 <alise> | (false,true) => SE
18:13:27 <alise> | (true,false) => NW
18:13:27 <alise> | (true,true) => NE
18:13:40 <Deewiant> oerjan: Interleaving the x-bits and y-bits? I don't see the point of that at all
18:13:56 <alise> Deewiant: val move : quadtree * direction -> quadtree
18:13:56 <alise> val leaf : quadtree -> word
18:13:57 <alise> val put : quadtree * word -> unit
18:14:06 <alise> I think these primitives are wrong.
18:14:18 <alise> I don't think there is a useful set of primitives that do not handle coordinates themselves for this structure.
18:15:32 <oerjan> Deewiant: it tells you immediately the path from the root of the quadtree to the given coordinate
18:15:53 <AnMaster> <Deewiant> oerjan: Interleaving the x-bits and y-bits? I don't see the point of that at all <-- cache?
18:15:54 <Deewiant> oerjan: I don't understand at all how
18:16:18 <oerjan> Deewiant: let's say we have a 256 x 256 fungespace to be made into a quadtree
18:16:25 <Deewiant> oerjan: It depends on the quadtree itself, doesn't it?
18:16:45 <Deewiant> Oh, but we are assuming that it is centered at (0,0)
18:16:48 <oerjan> Deewiant: maybe you have some different structure in mind
18:16:50 <Deewiant> Which I guess helps
18:18:04 <oerjan> Deewiant: well you could make it -256 to 255 coordinates
18:18:13 <oerjan> er, -128 to 127
18:18:44 <oerjan> then (0,0) is at the lower left corner of the upper right quadrant, as close to the center as you can get
18:19:10 <Deewiant> Yes, sure
18:19:13 <oerjan> you'd just have to invert the very top bits for that
18:19:29 <oerjan> (the sign bits)
18:19:34 <Deewiant> I don't see at all how this bit-interleaving works :-P
18:20:01 <oerjan> er i keep thinking y increases upward
18:20:06 <oerjan> (as in math)
18:20:17 <oerjan> so switch upper and lower above
18:20:54 <oerjan> the upper left quadrant is now (-128, -128) to (-1, -1)
18:21:09 <oerjan> and can be detected by the sign bits
18:21:15 -!- charlls has joined.
18:21:32 <oerjan> the lower right is (0, 0) to (127, 127)
18:21:46 -!- cheater2 has joined.
18:21:55 <alise> so wait using y increasing upwards should i change my north/south conditions??
18:22:01 <alise> er i mean
18:22:02 <alise> increasing downwards
18:22:05 <oerjan> now when we subdivide the latter one, we get the upper left of _that_ is (0, 0) to (63, 63)
18:22:06 <alise> (* North: wanted y <= current y
18:22:06 <alise> * South: wanted y > current y
18:22:08 <alise> I am so, so confused
18:22:19 <Deewiant> alise: Don't listen to us :-P
18:22:27 <alise> >_<
18:22:33 <Deewiant> I mean, this convo.
18:22:36 <alise> I still don't get the subdivision algorithm :D
18:22:40 <oerjan> alise: well it's just about being consistent but i assume you want south == downwards == increasing line number?
18:22:43 <Deewiant> If what oerjan does works, it's still an optimization.
18:22:52 <Deewiant> I wouldn't worry about it just now.
18:22:52 <alise> oerjan: right
18:22:57 <alise> so my two lines are correct
18:23:09 <alise> so am I right in thinking tha
18:23:09 <alise> t
18:23:15 <alise> val move : quadtree * direction -> quadtree
18:23:16 <alise> val leaf : quadtree -> word
18:23:16 <alise> val put : quadtree * word -> unit
18:23:17 <alise> is a bad set of primitives
18:23:22 <alise> because it's basically useless without coordinate stuff
18:23:54 <Deewiant> You need put : quadtree * coords * word -> unit
18:23:54 <oerjan> alise: it's just that i don't see how knowing whether something is north or south of where you are helps anything particularly with finding out which quadtree quadrants you are in
18:24:05 <AnMaster> hm from the convo it seems alise isn't copying ccbi, but rather is copying Deewiant's step by step guide
18:24:09 <AnMaster> just saying
18:24:17 <Deewiant> oerjan: It tells you which quadrant to go to next
18:24:26 <alise> AnMaster: Actually, it isn't even CCBI's algorithm.
18:24:29 <Deewiant> oerjan: I mean, that's basically how a quadtree is defined
18:24:33 <alise> I'm asking for an explanation of an entirely neutral data structure.
18:24:47 <Deewiant> oerjan: About a branch, the points northwest of it are in the northwest quadrant, and so on. :-P
18:25:00 <oerjan> AnMaster: you know, either shut up or unignore alise
18:25:06 <alise> Anyway, I'm delighted that you've found happiness in being an irritating little prick by being an idiot with regards to me and continually mentioning that I'm annoyed; at least your life has purpose now.
18:25:13 <alise> *I'm ignored
18:25:16 <alise> Although I am annoyed too.
18:25:33 <oerjan> alise: the shut up goes for you too :D
18:25:36 <alise> oerjan: On the other hand, maybe he should keep me ignored :)
18:25:40 <alise> Hey, I haven't ignored him.
18:25:45 <alise> It's not my fault he's ignored me.
18:25:50 <Deewiant> I'm also annoyed, CCBI is failing at underload. :-P
18:25:52 <alise> Entirely out of my control.
18:25:55 <AnMaster> oerjan, hm? The former probably, I don't have anything to add after that. So it would be pointless not to shut up. A waste of the keycaps
18:26:48 <alise> Stinkhorn uses 64x64 arrays, it seems.
18:26:55 <alise> Seems like a nice round number.
18:27:13 <oerjan> alise: well the thing is when you have a quadtree of integer coordinates, afaict the leaves are 1 x 1, their parents represent 2 x 2 and _their_ parents represent 4 x 4 squares, etc.
18:27:15 <Deewiant> Careful; I think Stinkhorn is GPL.
18:27:20 <alise> Deewiant: :-D
18:27:35 <alise> Although 64x64 is suboptimal in that I think Befunge-93 programs should really fit into one array.
18:27:41 <oerjan> and it's then easy to align things such that the boundaries of the squares correspond to bit boundaries
18:27:43 <alise> Then again, 80*80 is both not round and a bit too big.
18:27:48 <alise> 96*96 is just travesty, isn't it?
18:27:59 <alise> oerjan: there are no parents in quadtrees
18:28:01 <alise> you cannot traverse upwards
18:28:15 <Deewiant> There are parents, you just can't access them.
18:28:35 * oerjan is now damn unsure if he knows what a quadtree _is_
18:28:40 <Deewiant> :-D
18:28:51 <Deewiant> oerjan: You've been right so far AFAICT.
18:29:00 <alise> datatype quadtree
18:29:00 <alise> = Leaf of coords * word array
18:29:01 <alise> | Branch of coords * subtree * subtree * subtree * subtree
18:29:01 <alise> and type subtree = quadtree option ref
18:29:03 <alise> I am fairly sure I have this right by now.
18:29:09 <alise> (The array is, of course, just an optimisation.)
18:29:10 <alise> Oh, wait.
18:29:18 <Deewiant> Yes, I think you have this right.
18:29:19 <alise> This means that when I hit something I need to decide whether I'm in the bounds of any potential array.
18:29:23 <alise> Or, no.
18:29:25 <alise> That's just if I hit a leaf.
18:29:27 <alise> Isn't it?
18:29:28 <Deewiant> Yes.
18:29:31 <alise> Good.
18:29:33 <alise> Otherwise that would be painful.
18:29:54 <Deewiant> I think your arrays need to be a power of two for this to work.
18:30:06 <alise> Maybe 64x64 blocks, plus an initial field of say a megabyte would be best; but that's not part of the quadtree stuff.
18:30:08 <Deewiant> At least without some carefulness.
18:30:20 <alise> Deewiant: Well, 64^2 = 4096, yep, that's a power of two.
18:30:28 <Deewiant> :-)
18:30:45 -!- Asztal has joined.
18:30:46 <AnMaster> <Deewiant> Careful; I think Stinkhorn is GPL. <-- oh, copying that too? How fun ehird must have
18:31:13 <Deewiant> AnMaster: I thought you were going to shut up.
18:31:24 <alise> AnMaster: You know what, I think I'd really appreciate it if you either (a) unignored me, (b) shut the fuck up, or (c) go aestivated under a rock somewhere.
18:31:32 <AnMaster> Deewiant, well, until the point of seeing a point of pointing out something else
18:31:33 <alise> Deewiant: Apparently that'd be a "waste of key caps".
18:31:47 <alise> A point? As far as I can tell everyone either doesn't care or is irritated.
18:31:47 <Deewiant> AnMaster: There is no point if you don't know the context.
18:31:56 <alise> *went and aestivated
18:32:11 <AnMaster> Deewiant, I know the context. Just not the complete context ;P
18:32:32 <Deewiant> AnMaster: I.e. you don't know the context.
18:32:33 * alise eliminates the QUADTREE signature for now
18:32:37 <alise> this is rather concrete atm
18:33:01 <Asztal> if by Stinkhorn you mean my befunge thing, it uses the MIT license.
18:33:26 <Deewiant> Darn, my bad.
18:33:38 <alise> Asztal: Your octrees are confusing as fuck, and I'm doing it with half the trees!
18:34:07 <Asztal> alise: I agree
18:35:20 <AnMaster> Asztal, out of interest, what sort of funge space do you use? Quad tree? hash table? AABBs?
18:35:29 <AnMaster> something else?
18:35:33 <Asztal> It's an octree/quadtree
18:35:42 <AnMaster> ah
18:36:52 <oerjan> i would have said that an octree's paths from the root is just combining _triples_ of bits from the coordinates, if i was sure of anything anymore
18:36:53 <Asztal> it uses page sizes of 64x64 or 4x4x4 depending on how many dimensions are in use
18:37:21 <AnMaster> Asztal, so smaller pages in trefunge?
18:37:24 <Deewiant> Asztal: $ ./stinkhorn -3
18:37:25 <Deewiant> warning: -3 doesn't do anything yet
18:37:43 <Asztal> Deewiant: haha, interesting... it should do something
18:38:32 <AnMaster> bbl
18:38:43 <Asztal> AnMaster: yes, it's kind of a design limitation actually, it would take some work to support non-cube pages
18:38:57 <Gregor> TIME CUBE
18:39:10 <Gregor> Somebody should make a time cube programming language.
18:39:13 <Gregor> Gogogo.
18:39:54 <oerjan> 16x16x16 would be as big as 64x64 btw
18:40:02 <Asztal> Deewiant: seems like the warning is indeed wrong there... does it run a trefunge program properly?
18:41:02 <Asztal> oerjan: it seems I actually use 8x8x8.
18:41:14 <Asztal> oerjan: I think 16x16x16 wasted too much memory.
18:41:15 <Deewiant> Asztal: It doesn't seem to, no.
18:41:20 <oerjan> 8x8x8x8 would also be the same size
18:41:44 <AnMaster> 4D funge is evil ;P
18:41:51 <AnMaster> plus non-portable
18:41:57 <AnMaster> there is no standard file format for it yet
18:42:45 <AnMaster> Deewiant, old version of stinkhorn?
18:43:03 <alise> Deewiant: So, basically, all my functions on quadtrees should take coordinates, as the actual primitive quadtree functions are basically useless.
18:43:06 <alise> Yeah?
18:43:11 <Deewiant> AnMaster: Latest hg.
18:43:18 <AnMaster> mhm
18:43:36 <Deewiant> alise: I'd say that's simpler, yes.
18:43:39 <alise> So
18:43:41 <alise> val get : quadtree * coords -> word
18:43:42 <alise> val put : quadtree * coords * word -> unit
18:43:47 <alise> Although I need bounds too, don't I?
18:43:51 <alise> Bounds will be hell :(
18:43:56 <Deewiant> You don't need to worry about bounds yet :-P
18:44:10 <alise> Okay.
18:45:35 <alise> get should be easy enough... I hope.
18:46:20 <alise> methinks youAreHere : quadtree -> coords needs a better name
18:46:24 <alise> oh, "here" should do fine
18:47:44 <AnMaster> Deewiant, btw stinkhorn handles lmh correctly in 2D
18:47:47 <AnMaster> haven't tested rcfunge yet
18:48:02 <alise> fun get (qt, there) =
18:48:03 <alise> let here = currentCoords qt in
18:48:03 <alise> (* move in direction `directionFor (here, there)`,
18:48:03 <alise> subtract from coordinates appropriately (?),
18:48:03 <alise> and recurse *)
18:48:04 <alise> for branch nodes
18:48:05 <alise> right?
18:48:42 <AnMaster> Deewiant, and surprisingly so does rcfunge!
18:48:50 <AnMaster> now that was unexpected
18:48:53 <alise> Hmm, the arrays should have coordinates in the middle I think
18:49:41 <AnMaster> Deewiant, my small test program was: http://sprunge.us/WUdC
18:50:19 <alise> fun get (Leaf(here, fs), there) = dummy (* handle the arrays, etc. *)
18:50:20 <alise> | get (Branch(here, st), there) =
18:50:20 <alise> (* move in direction `directionFor (here, there)`,
18:50:20 <alise> subtract from coordinates appropriately (?),
18:50:20 <alise> and recurse *)
18:50:23 <alise> wait
18:50:26 <alise> i don't want to subtract from the coords
18:51:55 <alise> Deewiant: There's no reason I need to inspect the directions, is there? I'm thinking about just representing them as their accessor functions of the subtree structure
18:52:52 <Deewiant> The directions themselves are always the same for any node so no, you don't need to do anything with them directly
18:53:38 <Deewiant> AnMaster: Making the timeout-checker in underload.b98 do a wraparound is a wonderful way of increasing CCBI's time by 10% and cfunge's by over 1000% :-P
18:53:47 <AnMaster> (can't alise figure out that sort of things himself. After all he claims to be smart and such)
18:54:03 <AnMaster> Deewiant, but that is pointless because most programs don't wrap around much
18:54:10 <alise> AnMaster has gone completely insane.
18:54:14 <alise> I think I've finally managed to crack his psyche.
18:54:18 <AnMaster> Deewiant, so I consider that utterly irrelevant for real usage
18:54:23 <ellisonch> AnMaster: thank you very much for your help re. reMorse
18:54:26 <Deewiant> Well, it depends
18:54:42 <alise> Can't ellisonch figure out that sort of things emself.
18:54:46 <alise> After all e claims to be smart and such.
18:54:48 <AnMaster> Deewiant, I suggest you try to make CCBI fast at the non-wraparound case instead
18:54:49 <Deewiant> AnMaster: E.g. the way I originally wrote this, if I hadn't made an error, I would've preferred to wrap around.
18:54:53 <AnMaster> Deewiant, better spent time
18:55:02 <Deewiant> Er, no.
18:55:05 <alise> (No offence, ellisonch. You're just the wonderful convenient scapegoat.)
18:55:07 <AnMaster> Deewiant, why not?
18:55:25 <AnMaster> ellisonch, no problem
18:55:36 <Deewiant> There is no "better spent time" since the way I do it now is not caused by massive optimization, it's pretty much a necessity
18:56:01 <Deewiant> I.e. the wrapping hasn't been particularly optimized, it just seemed like the only sensible way to do it
18:56:08 <AnMaster> Deewiant, just making an anti-cfunge-test because you can't make ccbi look better any other way?
18:56:22 <Deewiant> What the fuck now, seriously?
18:56:34 <AnMaster> Deewiant, well that is what adding such a wrap around results in
18:56:36 <AnMaster> IMO
18:56:50 <Deewiant> I'm just messing around and seeing what affects runtime
18:57:02 <Deewiant> I'm not adding this to any official benchmark and then using that to say "oh ho, CCBI kicks cfunge's ass"
18:57:05 <AnMaster> Deewiant, it favours AABB implementations and few other ones
18:57:11 <AnMaster> well good then
18:57:17 <Deewiant> I specifically stayed away from putting any conclusions in Fungicide to avoid seeming biased
18:57:45 <AnMaster> Deewiant, especially since it is hard to tell how well it reflects "real" applications yes
18:58:20 <Deewiant> I do like having fast worst cases at the slight expense of the average, though
18:58:55 <AnMaster> (When clicking logout link): Error: You have been logged out due to inactivity. To perform this action you must first log in again below: <login form follows>
18:58:57 <AnMaster> heh
18:59:03 <Deewiant> But CCBI does have worst cases in the wrapping which will make it O(n^2) in the delta, IIRC
18:59:09 <AnMaster> not the first time I seen that happen
18:59:21 <Deewiant> Or maybe just O(n)
18:59:29 <Deewiant> Can't remember exactly.
18:59:34 <AnMaster> Deewiant, hm.
19:00:30 <AnMaster> <Deewiant> I do like having fast worst cases at the slight expense of the average, though <-- opposite for me
19:01:18 <Deewiant> AnMaster: I think your intuition was right on the money, about having a space-filled stack which is then filled in here and there.
19:01:56 <AnMaster> Deewiant, well yes, from reading your code it seems obvious this should be a bad case for it. I'm unable to tell how bad exactly without testing of course.
19:02:02 <AnMaster> how bad was that case?
19:02:26 <Deewiant> Instead of getting one nice Nx1 rectangle there's one like that and then a dozen smaller squarish ones
19:02:35 <AnMaster> heh
19:02:43 <AnMaster> now that I didn't expect
19:03:01 <Deewiant> Well, the heuristic kicked in at some point and gave the Nx1
19:03:04 <AnMaster> I expected several Nx1 instead
19:03:05 <Deewiant> Fortunately enough
19:03:20 <AnMaster> Deewiant, you need to fine tune the test case to avoid that heuristic ;P
19:03:31 <Deewiant> No, I need to think about what to do in a situation like this.
19:03:48 <Deewiant> I think I might need a new subsumption pass.
19:04:07 <AnMaster> Deewiant, does it matter much though? It is still reasonably fast I presume?
19:04:18 <Deewiant> It's the same old 3ish versus 2.5ish
19:04:34 <AnMaster> Deewiant, hm? In speed ratio?
19:04:41 <Deewiant> In seconds
19:04:43 <AnMaster> ah
19:04:55 <Deewiant> Can't remember the exact numbers; I pasted them to you an hour ago or whenever.
19:04:57 <AnMaster> Deewiant, did you get better for the non-wrapping compact stack case?
19:05:04 <Deewiant> I haven't changed anything at all.
19:05:07 <AnMaster> ah
19:05:13 <Deewiant> I'm just looking at what's going on.
19:05:42 -!- myndzi has joined.
19:05:47 <Deewiant> Stinkhorn does it in about 5.5 seconds, FWIW.
19:05:58 <Deewiant> I wonder how it wraps.
19:06:12 <AnMaster> Deewiant, is that the non-wrapping that is 5.5?
19:06:17 <Deewiant> Evidently slowly enough that its time goes up a lot when wrapping as well.
19:06:22 <Deewiant> Yes.
19:06:26 <AnMaster> mhm
19:06:35 <AnMaster> how much does it go up by btw?
19:06:36 <Deewiant> Couldn't be bothered to wait for the wrapping, like with cfunge.
19:06:39 <AnMaster> ah
19:06:46 <Deewiant> Both take over a minute.
19:07:10 <AnMaster> Deewiant, I have an idea for slogan for ccbi
19:07:25 <AnMaster> CCBI: When edge cases is the only thing you care about
19:07:28 <AnMaster> what do you think?
19:07:42 <alise> AnMaster's new era: be a jerk to every single person.
19:07:43 <Deewiant> I think that's bullshit, but that's just me.
19:08:00 <AnMaster> Deewiant, but "almost the only thing" wasn't as snappy ;P
19:08:18 <pikhq> Hmm. Befunge interpreter debates?
19:08:27 <Deewiant> Not "debates", really.
19:08:29 <pikhq> You guys may well make me write a Befunge interpreter. :P
19:08:37 <AnMaster> pikhq, 93 or 98?
19:08:45 <pikhq> AnMaster: Sure.
19:08:46 <pikhq> :P
19:08:49 <AnMaster> pikhq, both?
19:08:59 <pikhq> Beats me.
19:09:05 <Deewiant> We managed to find a case where cfunge clearly beats CCBI and I'm trying to think of a heuristic that'd flip that.
19:09:28 <AnMaster> pikhq, and this one was in fungot
19:09:28 <fungot> AnMaster: perhaps. it doesn't lose any points for the original term. units may be the first char
19:09:36 <AnMaster> which is actually more representative than fungicide
19:09:54 <AnMaster> the ^ul interpreter to be specific
19:10:21 <pikhq> Hmm. Seems mutable. I may have to learn a thing or two about Haskell's arrays.
19:10:38 <pikhq> Or go crazy and do more functional C? :P
19:10:41 <Deewiant> AnMaster: "More representative"? Of what? Of real world programs? Sure, given that fungot's the only one, it's representative of itself...
19:10:42 <alise> pikhq: Don't use arrays.
19:10:42 <fungot> Deewiant: exit the channel), is chicken a wib implementation of scheme
19:10:44 <AnMaster> pikhq, the latter!
19:10:52 <alise> pikhq: You need 2^32 x 2^32, or even ^64, size array.
19:10:54 <AnMaster> Deewiant, exactly!
19:11:01 <alise> So you want something like a hash table, or a quad tree, or an array of boxes, etc.
19:11:14 <AnMaster> fungot, wib?
19:11:14 <fungot> AnMaster: but it wasn't even a word
19:11:24 <AnMaster> indeed that was why I asked
19:11:24 <Deewiant> AnMaster: So isn't cfunge the one tuned for a special case, namely only one program? :-P
19:11:27 <alise> pikhq: Also, functional C would be hell: while -93 is a trivial task, -98 contains many, many corner cases and even implementing the basic instructions correctly requires thousands of lines of code.
19:11:42 <alise> pikhq: Add in fingerprints and you have a project that must be embarked upon sanely.
19:11:47 <Deewiant> alise: Not thousands.
19:11:56 <alise> Deewiant: Well, with exact bounds and forking?
19:11:58 <AnMaster> Deewiant, Three. life.bf, underload.b98/fungot, mycology
19:11:58 <Deewiant> alise: Those Lua ones were almost there and they were at what, 500 lines.
19:11:58 <fungot> AnMaster: and merges them correctly when i now think it would make sense in unicode.
19:12:00 <alise> Maybe a few hundred, then.
19:12:03 <alise> I meant more like 1,000.
19:12:05 <AnMaster> because those are the apps I know in befunge basically
19:12:17 <alise> Deewiant: Still, if you want any sort of speed it's over 1,000.
19:12:19 <Deewiant> alise: Forking is unnecessary, exact bounds is cheap linewise if you do it suboptimally
19:12:21 <AnMaster> there are a few small ones sure, like the TURT quine
19:12:25 <alise> And if you want a good set of fingerprints, 4,000+?
19:12:25 <Deewiant> alise: Maybe, sure.
19:12:31 <alise> Forking is unnecessary but nice to have.
19:12:41 <Deewiant> AnMaster: Define "real world app", of course. :-P
19:12:48 <pikhq> alise: Hmm. This would require some actual thought regarding good data structures then.
19:13:00 <alise> pikhq: I've spent the past hours bugging Deewiant about quadtrees.
19:13:01 <Deewiant> pikhq: That's what alise's been up to the past few hours.
19:13:12 <alise> Deewiant: A nicer phrasing of it.
19:13:17 <Deewiant> :-)
19:13:35 <alise> pikhq: Eventually I settled on
19:13:37 <alise> datatype quadtree
19:13:38 <pikhq> Hmm. Now do I want "absolutely naive and readable" or "clever and speedy"?
19:13:39 <AnMaster> Deewiant, something more complex than "hello world", something that fills or is larger than befunge93 space I guess. life.bf fills it. fungot and mycology are larger.
19:13:39 <fungot> AnMaster: who even needs those equations?
19:13:40 <alise> = Leaf of coords * word array (* arrays are 64x64 = 4096 words *)
19:13:40 <alise> | Branch of coords * {nw : quadtree option ref,
19:13:40 <alise> ne : quadtree option ref,
19:13:40 <alise> sw : quadtree option ref,
19:13:40 <alise> se : quadtree option ref}
19:13:44 <alise> where array is mutable and ref is a non-NULL pointer
19:13:48 <AnMaster> Deewiant, and there are two more things
19:13:52 <alise> (postfix parametric types, so it's A option)
19:14:05 <Deewiant> AnMaster: Is not part of Fungicide? ;-)
19:14:06 <alise> pikhq: If it's absolutely naive, good luck running any of the interesting programs like fungot.
19:14:06 <fungot> alise: and i hope your teacher will look at it like that
19:14:08 <AnMaster> the first is: isn't made especially to test performance (excludes slowdown.b98)
19:14:13 <AnMaster> (and fungicide too)
19:14:19 -!- kar8nga has joined.
19:14:22 <pikhq> alise: Oh?
19:14:30 <pikhq> Befunge is that freaking slow?
19:14:31 <AnMaster> the other is: is actually used by someone
19:14:32 <olsner> hmm, ML syntax, I can't help but finding it so ugly
19:14:34 <AnMaster> like fungot
19:14:34 <fungot> AnMaster: it comes from printing " digital root: " and 255 and 0, oh my
19:14:35 <pikhq> ... If implemented naively.
19:14:37 <alise> pikhq: Yes; imagine its dawdling Underload performance, slowed down by a few hundred times.
19:14:46 <AnMaster> I mean, used for something not related to the program itself exclusively
19:14:52 <AnMaster> that may arguably exclude life.bf
19:14:57 <alise> pikhq: CCBI and the other top interpreters run the Mycology test suite in something like 0.02 seconds. Slow interpreters like Language::Befunge take several minutes.
19:15:00 <pikhq> alise: So, what you're saying is threaded code.
19:15:02 <Deewiant> AnMaster: It does IMO.
19:15:06 <pikhq> :P
19:15:06 <AnMaster> Deewiant, but I also use it sometimes to run GOL simulations
19:15:11 <AnMaster> Deewiant, before I installed golly
19:15:14 <alise> pikhq: Self-modifying? fizzie tried that
19:15:17 <Deewiant> alise: Not minutes.
19:15:17 <alise> (Language::Befunge is the slowest interp; N-dimensional Perl interp)
19:15:23 <alise> Deewiant: Language::Befunge takes how long now?
19:15:28 <Sgeo_> Hm
19:15:30 <Deewiant> alise: CCBI 1 is slower than Language::Befunge on some programs. :-)
19:15:33 <pikhq> alise: Threaded code, though. It's the Forth way!
19:15:36 <Sgeo_> Maybe I should write a Befunge interpreter in Haskell
19:15:42 <alise> pikhq: Well, whatever. :)
19:15:45 <Deewiant> alise: Hang on, /me times.
19:15:47 <alise> olsner: OCaml syntax, yes. But Standard ML>
19:15:48 <alise> *ML?
19:15:55 <alise> fun currentCoords Leaf(c,_) = c
19:15:56 <alise> | currentCoords Branch(c,_) = c
19:15:56 <alise> (*
19:15:56 <alise> | subtree (Branch(_,nw,_,_,_), NW) = nw
19:15:56 <alise> | subtree (Branch(_,_,ne,_,_), NE) = ne
19:15:56 <alise> | subtree (Branch(_,_,_,sw,_), SW) = sw
19:15:57 <alise> | subtree (Branch(_,_,_,_,se), SE) = se
19:15:58 <AnMaster> Deewiant, but yes, something made especially for benchmarking isn't a "real world" program
19:15:59 <Deewiant> alise: 17 seconds.
19:16:00 <alise> oops
19:16:02 <alise> fun directionFor ((cx,cy), (wx,wy)) =
19:16:03 <pikhq> Not sure how easy it is to handle the self-modification with that, though.
19:16:04 <alise> case (wy <= cy, wx < cx)
19:16:06 <alise> of (false,false) => #sw
19:16:08 <alise> | (false,true) => #se
19:16:10 <alise> | (true,false) => #nw
19:16:12 <alise> | (true,true) => #ne
19:16:14 <alise> looks pretty pretty to me
19:16:16 <alise> pikhq: Hard
19:16:18 <alise> JITfunge was really nitty-gritty code
19:16:41 <alise> Deewiant: How fast is CCBI2 running Mycology?
19:16:42 <AnMaster> I still have great hopes of jitfunge
19:16:43 <Deewiant> AnMaster: If I write an underload interp in Befunge for a Fungicide benchmark, is it a real world program?
19:16:48 <AnMaster> in fact I think it is the best way forward
19:16:48 <Sgeo_> Hm, too lazy to try to figure out how
19:17:01 <AnMaster> if fizzie ever continues with it
19:17:12 <AnMaster> then I bet we will see a jitccbi3 some time after
19:17:26 <AnMaster> just because Deewiant can't accept not being best at befunge ;P
19:17:28 <Deewiant> alise: Right now I've a fingerprintless version compiled, it takes 0.00s
19:17:41 <alise> Deewiant: I can't divide by zero. And with fingerprints. :-)
19:17:53 <Deewiant> alise: I don't want to compile a fingerprint version, I'm messing around.
19:18:00 <alise> Fair enough.
19:18:11 <AnMaster> Deewiant, well, would you make a ccbi3 in case of a JITing implementation overtakes you?
19:18:12 <Deewiant> But not much more than that, anyway.
19:18:21 <alise> pikhq: So, taking Deewiant's 0.00s for CCBI2 and 17 seconds for Language::Befunge, a non-naive interpreter is infinity times faster than a naive one on a simple test suite.
19:18:36 <alise> Infinity! That's bigger than 34, 3459873459, -2, and G_64.
19:18:44 <Deewiant> alise: Language::Befunge isn't that good an example, really. :-P
19:18:51 <olsner> alise: not sure which dialect I'm offended by... what's the difference between ocaml and sml syntax?
19:18:55 <Deewiant> AnMaster: If I had something interesting to do with it, sure.
19:19:04 <Deewiant> AnMaster: Not just as a matter of principle, no.
19:19:05 <alise> olsner: ocaml looks like +. this /. 3. ;;
19:19:08 <pikhq> alise: Clearly I should first do a Befunge-'93 interpreter.
19:19:15 <alise> olsner: it is incredibly offensive
19:19:34 <alise> Conversely, SML abstains from semicolons, has proper polymorphic arithmetic operations, etc.
19:19:36 <AnMaster> Deewiant, btw that is another problem with fungicide: In many of the tests the all of the instructions in the entire program are executed one time each. Which is _very_ rare for a "real world" befunge program.
19:19:45 <alise> It's basically like Haskell without indentation-sensitivity and some minor stylistic choices.
19:19:48 <alise> pikhq: That is about a page of code.
19:19:53 <alise> Less if you use a good language.
19:20:07 <alise> pikhq: Remember to prompt the user for the result to use on division-by-zero.
19:20:28 <AnMaster> pikhq, befunge93 is a good way to start at doing befunge98
19:20:32 <pikhq> alise: I was thinking of using C and crazy computed goto-ness, personally.
19:20:52 <Deewiant> pikhq: There's one like that already.
19:20:53 <AnMaster> then you extend it. Then you rewrite the funge space and the stack-stack. Then you rewrite the rest
19:20:59 <alise> AnMaster: It is not.
19:21:00 <alise> The entire fungespace architecture changes.
19:21:15 <AnMaster> Deewiant, which one?
19:21:15 <Deewiant> AnMaster: In some of the tests. Not all.
19:21:23 <Deewiant> I can't remember what it's called.
19:21:24 <AnMaster> Deewiant, I said "many"
19:21:26 <AnMaster> Deewiant, not "all"
19:21:30 <pikhq> alise: I'm guessing funge93 is only a good way to get... Used to befunge. I'm imagining most of this code will be chucked.
19:21:46 <alise> pikhq: Yeah.
19:21:48 <Deewiant> AnMaster: And you're free to look only at the other benchmarks if you wish.
19:22:00 <alise> pikhq: Mind, AnMaster certainly can't code Befunge, and I even less so.
19:22:07 <alise> Deewiant is probably the only implementer proficient in the language.
19:22:13 <AnMaster> Deewiant, well it doesn't bother me much in cfunge. But it is really unfair to something like jitfunge
19:22:17 <alise> Well, and fizzie, but his interpreters are abandoned.
19:22:22 <alise> (more or less)
19:22:55 <Deewiant> AnMaster: There's nothing "unfair" about demonstrating a program which runs slower on one interpreter than another.
19:23:40 <AnMaster> Deewiant, it is if you do it to the point of making it show "timeout" for max time :P
19:23:48 <Deewiant> No, it isn't.
19:24:04 <Deewiant> It is a simple fact: this program took over 3 hours on this interpreter.
19:24:18 <Deewiant> Whether you, the reader, care about that is up to you.
19:24:21 <AnMaster> Deewiant, anyway, how do you handle implementations that don't implement t in the rankings?
19:24:28 <Deewiant> They all do, so I don't have to worry.
19:24:41 <AnMaster> Deewiant, well if you were to add efunge it wouldn't
19:24:51 <Deewiant> Then I'd have to worry about that.
19:28:35 <Deewiant> Hmm, the runtimes are about the same for (:^):^
19:29:40 <AnMaster> Deewiant, well, underload without wrapping is really quite well suited to cfunge. Sure a static array there could work better in theory, but unlikely to be a problem in practise
19:29:50 <AnMaster> Deewiant, also do you mirror the Nx1?
19:29:52 <Deewiant> How is it well suited?
19:29:52 <AnMaster> that could help
19:29:56 <AnMaster> since it grows into -x
19:29:57 <Deewiant> Mirror?
19:30:05 <AnMaster> Deewiant, as in start of array near origin
19:30:13 <Deewiant> No, I don't.
19:30:13 <AnMaster> and end of array growing towards -inf
19:30:22 <Deewiant> For (:^):^ it doesn't matter anyway.
19:30:25 <AnMaster> Deewiant, well then I assume you have to realloc and also move the data
19:30:41 <Deewiant> Almost nothing is allocated in that program.
19:30:41 <AnMaster> Deewiant, well duh
19:30:50 <AnMaster> Deewiant, I meant for the previous test program
19:30:56 <AnMaster> that you ran on the bots in here before
19:31:09 <Deewiant> I'm markedly less interested in the more complex test program now that this gives the same results.
19:31:44 <AnMaster> Deewiant, well, sure. Because for that I think it is all in cfunge's static space
19:31:49 <AnMaster> and for you it is all in AABBs
19:31:54 <AnMaster> the same one even
19:32:05 <AnMaster> so indeed it is not going to cause any problems for you
19:32:07 <Deewiant> cfunge's static space is an AABB.
19:32:08 <AnMaster> nor for me
19:32:11 <AnMaster> Deewiant, well yes
19:32:16 <AnMaster> Deewiant, but a fixed such
19:33:15 <AnMaster> Deewiant, and in that way we both do pretty much the same. Since mine is compile time fixed that means I have slightly less overhead when it comes to checking if I'm in it. The compiler can write smart code.
19:33:27 <Deewiant> Yep.
19:33:36 <Deewiant> But the difference shouldn't be that big.
19:33:42 <AnMaster> Deewiant, since it is a power of two size, it can also be smart at mapping x/y coordinates
19:33:52 <AnMaster> as in
19:34:08 <AnMaster> multiplying by line length
19:34:11 <AnMaster> is a bitshift
19:34:50 <AnMaster> Deewiant, while in CCBI as far as I understood the code it may very well be a multiplication. Which takes more cycles
19:34:55 -!- zzo38 has joined.
19:35:00 <AnMaster> not as bad as integer division true
19:35:02 <AnMaster> but still
19:35:11 <zzo38> Those people in ##C channel won't help they make up all sort of confusing
19:35:24 <AnMaster> of confusing what?
19:35:28 <zzo38> How to write a code that makes a compile-time error in C if the endianness is wrong?
19:35:37 <pikhq> I love me some unary &&.
19:35:39 <AnMaster> eh
19:35:56 <alise> zzo38: ooh, interesting
19:36:11 <AnMaster> zzo38, I'm not sure that is feasible. Try using something like a test program for it. Like autoconf or whatever
19:36:16 <alise> zzo38: I'd construct some direct expression in something that won't have its endianness messed with, then cast it to the relevant type,
19:36:27 <alise> zzo38: and e.g. make an array of size it, minus what it should be
19:36:31 <alise> minus one
19:36:32 <AnMaster> zzo38, better would of course be to support all both big and little endian systems
19:36:36 <alise> except opposite...
19:37:02 <Deewiant> zzo38: Endianness is a property of representations, not values, and you can only mess with values at compile time
19:37:04 <zzo38> I need to use expression that can tell at compile-time the endianness.
19:37:08 <Deewiant> My hunch is that it is impossible.
19:37:21 <zzo38> It needs to be work on little-endian only
19:37:22 -!- atrapado has joined.
19:37:25 <alise> Deewiant: I'm not sure, you can do tricks with making arrays minus-sized.
19:37:40 <AnMaster> Deewiant, as far as I can tell from AMD docs bitshift is 1 cycle. reg32 is 4 cycles
19:37:48 <AnMaster> for multiplication that is
19:37:51 <Deewiant> alise: And get a compile error?
19:37:54 <zzo38> alise: I have made trick array with negative size for checking sizeof(int) and stuff like that at compile time
19:38:15 <alise> Deewiant: But you do an expression that's only -1 if it shouldn't work.
19:38:20 <AnMaster> zzo38, you can get sizeof(int) from limits.h
19:38:20 <alise> Like zzo38 said, he's done that before.
19:38:30 <AnMaster> well you get the range of it
19:38:34 <AnMaster> trivial to compute from that
19:38:37 <Deewiant> alise: Right; but you can't do anything depending on endianness at compile time, was my point.
19:38:51 <Deewiant> alise: Minus-sized arrays is just a compile-time assertion, that's a separate thing.
19:39:21 <zzo38> If you want to see why, look at the code: http://codepad.org/FANFIgbc line 83 is the key but a black key would be keys[-1] (because of color 0 = black) and it would give you 256 gems
19:39:27 <AnMaster> zzo38, why don't you just use a configure script to check this? Or make it work on both big and little endian?
19:39:50 <zzo38> ZZT was never programmed with black key so when people figured out a black key this is what it did, and this why it does so.
19:41:16 <zzo38> AnMaster: No, it needs to work on little endian it is not supposed to work on big endian.
19:41:17 <AnMaster> #define inc_world_head
19:41:17 <AnMaster> #include "world.h"
19:41:19 <AnMaster> what?
19:41:30 <AnMaster> what is the point of that
19:41:36 <zzo38> Please note that "world.h" is this same file. It includes itself
19:41:43 <AnMaster> zzo38, yes but why
19:41:44 <zzo38> And you should be able to see the point of that
19:41:51 <AnMaster> zzo38, I see what it does
19:41:54 <zzo38> It is because of ZZT.
19:41:57 <AnMaster> but I don't see why that is useful
19:42:03 <AnMaster> zzo38, and why does zzt need it?
19:42:57 <zzo38> I don't quite know, I didn't write ZZT. The people who did write ZZT wrote it in Pascal and has lost the source-codes but now I want to re-write it in C so that you do not lost the source-codes anymore
19:43:12 <AnMaster> heh
19:43:26 <zzo38> Tim Sweeny wrote ZZT and his hard-drive broke, unfortunately.
19:43:45 <AnMaster> zzo38, still I tell you the compile time endianness check is most probably impossible
19:44:00 <zzo38> I want to write ZZT as GNU GPL v3
19:44:03 <alise> what about bitshift operators
19:44:10 <AnMaster> zzo38, you will have to bite the bullet and use a configure script or rewrite the code to be endianness independent
19:44:12 <pikhq> Boilerplate nearly complete. Whoo.
19:44:24 <AnMaster> or just assume it is little endian and fail on big endian
19:44:27 <zzo38> OK. How do I use a configure script?
19:44:33 <AnMaster> pikhq, boilerplate for what?
19:44:51 <pikhq> Befunge '93 interpreter...
19:45:25 <AnMaster> zzo38, well, make a shell script that compiles a test program basically and then generates an include file like "config.h" with a "#define BIGENDIAN" or "#define LITTLEENDIAN" or such
19:45:30 <pikhq> With control-flow being done via an array of addresses. :P
19:45:33 <AnMaster> or that errors
19:45:49 <AnMaster> zzo38, there is GNU autotools but that is quite a horrible mess to write for
19:45:59 <AnMaster> may be easier to write your own shell script
19:46:07 <AnMaster> at least if you target *nix
19:46:10 <AnMaster> for windows I have no clue
19:46:15 <AnMaster> cygwin I guess
19:46:17 <AnMaster> or mingw
19:46:26 <zzo38> AnMaster: OK I can understand, thanks. I can write a shellscript in bash and it can use MinGW if you are Windows
19:46:37 <AnMaster> zzo38, or you could use something like cmake to do it. Which is like autoconf but another system
19:46:47 <AnMaster> it could compile a test program and do something based on the output
19:46:54 <AnMaster> which is the basic ideas of all configure scripts
19:47:32 <zzo38> But I have another question also that they don't answer in ##C channel: Is this the correct way to emulate counted strings: http://codepad.org/h5mOa9ZD
19:47:32 <pikhq> Oh, wait. Don't have a stack. Time to copy in Pikhq's Naive C Stack.
19:47:48 <AnMaster> zzo38, so do something like $CC -o test endiantest.c && FOO="$(./test)" && rm ./test
19:47:52 <AnMaster> well that won't work
19:48:02 <Gregor> pikhq: Just use Gregor's Naïve C Buffers
19:48:02 <AnMaster> due to what assignment and && does in bash
19:48:06 <AnMaster> but you get the general idea
19:48:20 <AnMaster> zzo38, then you do something by checking $FOO or whatever your variable is.
19:48:34 <AnMaster> pikhq, you don't have a stack?
19:48:51 <AnMaster> pikhq, as in, funge stack or C stack?
19:48:53 <zzo38> AnMaster: OK I understand the endianness check now but can you answer my second question?
19:49:00 <pikhq> Gregor: Oh, right. Those are nicer than my naive stack.
19:49:02 <AnMaster> zzo38, hm *looks*
19:49:11 <pikhq> AnMaster: Funge stack. Though I am making no use of the C stack.
19:49:13 <AnMaster> zzo38, define counted strings
19:49:22 <pikhq> My interpreter is based on computed goto.
19:49:25 <AnMaster> zzo38, if you mean pascal style <length><data>?
19:49:32 <zzo38> AnMaster: Yes I mean like that
19:49:45 <AnMaster> zzo38, str[_1]?
19:49:54 <AnMaster> oh wait I see now
19:50:00 <AnMaster> heh at that name
19:50:25 <AnMaster> zzo38, well not really. I see one issue here and that is that you allocate more than is needed
19:51:01 <AnMaster> zzo38, a 10 char long string20 would still take 24 bytes (21, but three bytes of padding is added to that)
19:51:02 <zzo38> AnMaster: What you mean by that, how is it allocate more than is needed?
19:51:21 <zzo38> AnMaster: OK now I know.
19:51:32 <zzo38> Is there a way to remove the padding?
19:51:35 <AnMaster> zzo38, I would allocate it dynamically as a length byte + a number of chars
19:52:01 <zzo38> I do need to remove the padding so that it can work like how it is stored in ZZT
19:52:16 <AnMaster> zzo38, the padding isn't the issue here. The issue is that it a 10 char string isn't 11 bytes (one for length, 10 for the string itself)
19:52:30 <alise> Deewiant: Well, I've implemented -- I believe correctly -- get.
19:52:32 <alise> So only put to go.
19:52:36 <AnMaster> zzo38, no portable way to remove the padding. You could always do it manually and not use a struct at all for it
19:52:49 <zzo38> AnMaster: Does GNU compiler can remove the padding?
19:52:52 <AnMaster> zzo38, perhaps convert it to/from C-strings as you need it?
19:52:53 <pikhq> Gregor: Definitely using the buffer macros of yours.
19:53:11 <AnMaster> zzo38, I think so, some type __attribute__ iirc
19:53:36 <zzo38> I need to make it so that if it overflows, it overflows in the exact same way as ZZT does it
19:53:44 <AnMaster> zzo38, http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html
19:53:53 <zzo38> Thanks
19:53:59 <AnMaster> zzo38, removing padding would slow it down for arrays of such though
19:54:17 <pikhq> Gregor: Well. Adapting, more-like.
19:54:18 <AnMaster> zzo38, oh wait it won't work
19:54:24 <AnMaster> there is more padding
19:54:26 <AnMaster> it won't be 24
19:54:34 <AnMaster> since there will be padding between the length and the array too
19:54:37 <AnMaster> not just at the end
19:54:37 <Gregor> pikhq: Any generally-useful changes you make could be committed upstream :P
19:55:00 <AnMaster> Gregor, what are these buffer macros?
19:55:03 <pikhq> Gregor: Only thing I'm *adding* is a PUSH_BUFFER macro.
19:55:16 <pikhq> AnMaster: Just some macros for handling C buffers safely.
19:55:26 <AnMaster> pikhq, like buffers of bytes?
19:55:31 <pikhq> Yes.
19:55:33 <AnMaster> right
19:55:41 <AnMaster> pikhq, why do you need that in a befunge interpreter?
19:55:41 <Gregor> AnMaster: http://codu.org/projects/stuff/hg/index.cgi/file/tip/buffer.h
19:55:44 <Gregor> No, buffers of types.
19:55:49 <Deewiant> AnMaster: What're the bounds of cfunge's static area?
19:55:53 <Gregor> The buffers can be of anything.
19:55:55 <AnMaster> Deewiant, why do you ask?
19:56:23 <olsner> any particular reason it's all macros rather than e.g. inline functions?
19:56:38 <Deewiant> AnMaster: I want to see what making the first box be like that will do to the performance
19:56:48 <pikhq> olsner: Because.
19:56:54 <AnMaster> Deewiant, I need to check then
19:57:09 <AnMaster> #define FUNGESPACE_STATIC_OFFSET_X 64
19:57:09 <AnMaster> #define FUNGESPACE_STATIC_OFFSET_Y 64
19:57:10 <AnMaster> #define FUNGESPACE_STATIC_X 512
19:57:10 <olsner> pikhq: Okay.
19:57:10 <AnMaster> #define FUNGESPACE_STATIC_Y 1024
19:57:14 <AnMaster> Deewiant, that should tell you
19:57:27 <Deewiant> AnMaster: So from (-64, -64) to (512-64, 1024-64)?
19:57:31 <AnMaster> Deewiant, yes
19:57:36 <Deewiant> Alright, thanks
19:58:26 -!- zzo38 has quit (Ping timeout: 260 seconds).
19:59:00 <AnMaster> Deewiant, also this is carefully tuned so that (FUNGESPACE_STATIC_X * FUNGESPACE_STATIC_Y * sizeof(funge_cell)) % 128 == 0 holds true
19:59:22 <AnMaster> Deewiant, I'll let you figure out why on your own (alternatively read the code)
19:59:50 <Deewiant> Well you've bragged about your inline asm often enough so presumably you want it aligned :-P
20:00:16 <AnMaster> Deewiant, correction: I want it to be not write outside of the array. That would be bad
20:00:23 <AnMaster> so it needs to be a multiple of a SSE store
20:00:46 <AnMaster> it isn't because of alignment. Which is also an issue of course
20:00:59 <Deewiant> You could always write the remaining bytes without an SSE store
20:01:16 <AnMaster> Deewiant, more complex. Too lazy
20:01:22 <Deewiant> :-P
20:01:31 <AnMaster> for alignment I use an __attribute__ to ensure it is aligned
20:01:43 <AnMaster> because SSE store requires it
20:01:43 <Sgeo_> "One and one still is one"
20:01:58 <AnMaster> as in it will cause an SIGSEGV (or was it SIGBUS) if not
20:03:19 <AnMaster> Deewiant, btw have you considered lazy funge loading? Like starting program when the top 200 lines or so is loaded, but then continuing load in the background
20:03:24 <Deewiant> Yes, I have.
20:03:37 <AnMaster> Deewiant, really? The sync issues seems quite bad tot me
20:03:51 <Deewiant> Doesn't mean I can't consider it.
20:04:12 <AnMaster> I doubt it would help much in practise
20:04:16 <AnMaster> most files aren't so large
20:04:24 <AnMaster> even fungot is only some 1000+ lines iirc?
20:04:25 <fungot> AnMaster: except maybe when entering stuff into repl. then they're a bit steep. a meg of irc is quite dead.
20:04:50 <Deewiant> Hmmh, bah, this sucks. Results point to a static area being a good idea even for me. But it's such a hack :-/
20:05:09 <alise> <Sgeo_> "One and one still is one"
20:05:13 <alise> But it is /also/ one other one.
20:05:49 <AnMaster> Deewiant, you mean it was faster using that size I used?
20:05:55 <AnMaster> Deewiant, or that it wasn't faster?
20:06:20 <Deewiant> I mean that having the first box be a constant size helps.
20:06:39 <AnMaster> Deewiant, ah so the bitshift thing didn't affect it much?
20:06:56 <Deewiant> I mean it did. Or I don't know if it's that, but it's probably part of it.
20:06:57 <AnMaster> Deewiant, and yes it helps. But I bet it slows down some stuff in fungicide
20:07:25 <Deewiant> Can I tell cfunge to not use its non-temporal loads and whatnot?
20:07:45 <AnMaster> brb there is some large moth
20:07:47 <AnMaster> just brb
20:08:00 <AnMaster> ah got it
20:08:12 <AnMaster> a large moth in front of the monitor was somewhat distracting heh
20:08:24 <AnMaster> Deewiant, what do you mean? for filling it with spaces? Well let me check
20:08:50 <AnMaster> Deewiant, yes
20:08:59 <Deewiant> How?
20:09:00 <AnMaster> Deewiant, use ccmake to edit the build settings
20:09:04 <AnMaster> Deewiant, to to advanced
20:09:11 <AnMaster> edit the cflags to add: -DCFUN_NO_SSE
20:09:20 <AnMaster> Deewiant, that will be pure C one
20:09:37 <AnMaster> Deewiant, it is meant for some static analysis tools screwing up on the inline asm and such :D
20:09:56 <AnMaster> Deewiant, be aware of that if you type at the start of a field in cmake it will erase that field
20:10:04 <AnMaster> so add it in the middle or two the end
20:10:04 <Deewiant> I know how ccmake works.
20:10:13 <Deewiant> CCBI 2 uses a CMake build system.
20:10:15 <AnMaster> Deewiant, I always found that "feature" annoying btw
20:10:17 <AnMaster> Deewiant, ah
20:10:35 <Deewiant> Welp, it made just about no difference anyway.
20:10:59 <AnMaster> Deewiant, oh? Well it made here on my slower system. I guess your system is too fast to see it
20:11:08 <AnMaster> Deewiant, basically I was having bad cache trashing without it
20:11:15 <AnMaster> due to the small cache I guess
20:12:59 <AnMaster> I wonder, why do I use intrinsics instead of inline asm for clang.
20:13:08 * AnMaster tests removing that check
20:13:27 <AnMaster> ah now I know
20:13:35 <AnMaster> error: invalid output constraint '=o' in asm
20:13:39 <AnMaster> which gcc is happy with
20:15:29 <AnMaster> Deewiant, so, is ccbi with the static space as fast as cfunge on that test case? ;)
20:18:41 <Deewiant> Nah, it's still around 0.3 seconds slower
20:18:42 <AnMaster> pikhq, I still haven't figured out why you added me to #irp access list. Do tell me please.
20:19:23 <AnMaster> Deewiant, you said "anything less than a second doesn't matter" before iirc? :P
20:19:33 <alise> because you systematically probe people about their creations, as a program would, so you can figure them out? :)
20:19:41 <alise> Asztal: ping
20:19:55 <AnMaster> anyway, "plausible" reasons why I'm faster at this: I don
20:19:59 <Deewiant> AnMaster: Yes, something like that. I think I was referring to times below a second, but yeah.
20:20:00 <AnMaster> don't* have code for other AABBs
20:20:02 <AnMaster> for example
20:20:21 <AnMaster> Deewiant, "<Deewiant> Nah, it's still around 0.3 seconds slower"
20:20:21 <pikhq> AnMaster: I was asked to hand op to someone in there.
20:20:21 <AnMaster> :P
20:20:23 <pikhq> So I did.
20:20:31 <Deewiant> AnMaster: I mean, total running times.
20:20:32 <AnMaster> pikhq, oh? by who?
20:20:34 <pikhq> Also, WTF does "string mode" do?
20:20:39 <pikhq> There's no documentation.
20:20:41 <AnMaster> pikhq, string mode implements string mode
20:20:42 <pikhq> AnMaster: Don't remember.
20:20:45 <Asztal> alise: hello
20:20:46 <Deewiant> pikhq: What documentation are you looking at?
20:20:50 <AnMaster> pikhq, befunge98 documents it
20:20:57 <pikhq> Wiki, http://catseye.tc/projects/befunge93/doc/befunge93.html.
20:21:00 <AnMaster> pikhq, basically from " to the next " all are pushed as chars
20:21:13 <Deewiant> pikhq: It says it right there in the first par under "The Stack"
20:21:16 <AnMaster> pikhq, "hello" would push, h, e, l, l, o
20:21:19 <pikhq> Ah.
20:21:30 <AnMaster> pikhq, that is their ASCII value
20:21:33 <alise> Asztal: would you be so kind as to take a brief glance at http://pastie.org/914495.txt?key=62xxzeduk3dhulomteqzg to see if I've got the basics of a quad tree right? since you're the only one who's actually implemented them :P
20:21:41 <pikhq> Mmkay.
20:21:42 <AnMaster> pikhq, note: a zero byte inside a string is *perfectly* valid
20:21:44 <pikhq> Easy enough.
20:22:06 <AnMaster> pikhq, of course a zero byte anywhere in the source is perfectly okay. mycology even tests that for befunge-98
20:22:13 <pikhq> AnMaster: Not a big deal. :)
20:22:17 <AnMaster> I doubt it fit into the 93 section
20:22:34 <AnMaster> pikhq, good. But if you use fgets() to read the file or such you might be in for a nasty surprise, that was my point
20:22:50 <pikhq> Mmkay.
20:23:02 <Deewiant> fgets() doesn't stop at 0.
20:23:38 <AnMaster> Deewiant, ah yes, it was getline() that had the issue
20:23:47 <AnMaster> still you need to think about it when handling the string
20:23:56 <AnMaster> because it is no string, it is a binary buffer
20:24:27 <Deewiant> Just don't think of it as a string and it's no problem :-P
20:24:48 <AnMaster> pikhq, oh and you should be able to handle any combination of \r \r\n and \n line endings in the program file. Possibly inconsistent in the same file even
20:25:09 <pikhq> AnMaster: I've not bothered writing file-handling yet.
20:25:21 <AnMaster> pikhq, just pointing out some annoying pitfalls. That's all
20:25:27 <pikhq> Mmkay.
20:25:42 <AnMaster> I knew I would have liked to know about them in advance myself :P
20:25:55 <pikhq> :P
20:25:56 <AnMaster> there are a lot more of them for 98 than 93 of course
20:26:17 <Deewiant> I don't see why you would ever write code that /doesn't/ handle inconsistent all kinds of newlines correctly
20:26:31 <AnMaster> Deewiant, haha.
20:26:35 <AnMaster> I can easily tell you
20:26:40 <AnMaster> because you used getline() for example
20:26:57 <Deewiant> I don't see why you would ever not just use fgetc() ;-P
20:27:04 <AnMaster> Deewiant, iirc you complained about having to handle all the newline types too
20:27:25 <Deewiant> I doubt it, I always do that.
20:27:38 <AnMaster> Deewiant, it was when cfunge was still very new
20:27:54 <AnMaster> Deewiant, anyway fgetc() is suboptimal! Having to go into bloated glibc code to fetch from it's buffer
20:28:02 <AnMaster> that was *measurable* with glibc
20:28:18 <AnMaster> Deewiant, doing even fread() or such is much faster
20:29:47 <AnMaster> Deewiant, btw I realised I have not yet seen cat in befunge. Things calling themselves cat sure
20:29:51 <AnMaster> but not proper cat
20:30:07 <Deewiant> "Proper cat"?
20:30:23 <AnMaster> Deewiant, as in takes a number of files on command line, outputs them in the order given
20:30:30 <AnMaster> which is what cat is actually meant to do
20:30:35 <Deewiant> Right.
20:30:56 <alise> proper cat izunt fake cat
20:30:56 <AnMaster> cat(1p) is very rare in esolangs
20:31:13 <AnMaster> cat "copy input to output" is common yes
20:31:47 <Deewiant> GNU cat ignores -u, why's that
20:33:24 <Asztal> alise: that looks sane to me.
20:33:45 <AnMaster> Deewiant, I have no idea
20:33:47 <alise> Asztal: good; now I can proceed to break it
20:33:50 <AnMaster> Deewiant, but yes I know about that
20:33:54 <alise> and bug Deewiant some more about the subdivision algorithm :-)
20:34:11 <AnMaster> wait I know
20:34:16 <AnMaster> and pikhq can explain it
20:34:26 <AnMaster> it must be because it loves showing off it's buffer implementation
20:36:28 <Deewiant> Blarg, LLVM stopped inlining an alwaysinline which is now killing performance.
20:36:36 <AnMaster> Deewiant, heh
20:36:48 <AnMaster> Deewiant, alwaysinline = microoptimising to me
20:37:11 <AnMaster> Deewiant, but there is help: rewrite it as a macro. Unless it actually "outlines" that
20:37:29 <AnMaster> (iirc gcc has an option to try to factor out common code for size optimisation)
20:37:55 <Deewiant> Of course it's micro-optimizing; doesn't mean it doesn't help :-P
20:38:17 <Deewiant> And yes, of course I can force the inlining in other ways but blah.
20:41:14 <Deewiant> Oh hey, I think it's because it's recursive now.
20:42:33 <alise> Deewiant: When I have a branch with an uninitialised subbranch and I'm trying to put a character, I should initialise the subbranch to a leaf, right?
20:42:51 <Deewiant> Yes.
20:44:02 <alise> Deewiant: And the leaf should contain an array centred on the cell I'm setting.
20:44:12 <Deewiant> That's up to you.
20:44:12 <alise> So I need to allocate from point-(32,32) to point+(32,32).
20:44:21 <AnMaster> Deewiant, you can't possibly inline a recursive function :P
20:44:33 <Deewiant> Sure you can, just to a limited depth.
20:44:34 <alise> Deewiant: Do I need to handle overflow in this code? I doubt it, since ints are... well... so big.
20:44:40 <alise> But maybe you guys run into that.
20:44:41 <AnMaster> well okay
20:44:43 <Deewiant> alise: I don't know.
20:44:45 <Deewiant> I know I need to.
20:44:46 <AnMaster> Deewiant, but I don't know any compiler doing it
20:44:49 <Deewiant> Not sure with quadtrees.
20:45:00 <Deewiant> Gah
20:45:11 <AnMaster> Deewiant, was any of that directed at me?
20:45:17 <Deewiant> No.
20:45:19 <AnMaster> ah
20:45:37 <AnMaster> Deewiant, you could manually make it inlineable btw
20:45:56 <AnMaster> Deewiant, as in: foo() and foo_rec
20:45:56 <Deewiant> How do I do an s/// replacement with sed on a line that matches /foo/ but not /bar/?
20:46:07 <AnMaster> Deewiant, with sed. Hm... No idea
20:46:17 <Deewiant> With non-sed?
20:46:29 <AnMaster> Deewiant, with pcregrep I know how to match it
20:46:36 <AnMaster> Deewiant, but that can't replace
20:46:48 <AnMaster> Deewiant, basically you want negative lookahead/lookbehind
20:46:53 <Deewiant> No I don't
20:46:58 <AnMaster> okay
20:47:03 <AnMaster> Deewiant, it should be possible with sed btw
20:47:03 <Deewiant> I just want if (/foo/) if (not /bar/) s///
20:47:06 <AnMaster> try reading man page
20:47:10 <AnMaster> Deewiant, okay what about awk then
20:47:16 <AnMaster> that should be *trivial* in awk
20:47:22 <AnMaster> heck you almost wrote it in awk already
20:47:32 <Deewiant> How do I write if (not /bar/) in awk
20:47:47 <AnMaster> Deewiant, like that or very similar. Don't remember of the top of my head
20:48:01 <AnMaster> Deewiant, try info gawk
20:48:43 <AnMaster> http://www.gnu.org/software/gawk/manual/html_node/If-Statement.html#If-Statement should help
20:48:52 <Deewiant> And then how do I do a s/// in awk
20:49:14 <alise> Hmm, I don't.
20:49:15 <Deewiant> I could pipe it to sed obviously ;-P
20:49:18 <AnMaster> Deewiant, again see info gawk, I have done this I know. It was quite some time ago
20:49:25 <alise> Deewiant: I don't suppose you feel like having one more bash at explaining the subdivision algorithm to me? ;-)
20:49:41 <Deewiant> AnMaster: I'm browsing it, just not seeing it which is why I asked.
20:49:50 <AnMaster> http://www.gnu.org/software/gawk/manual/html_node/Pattern-Overview.html#Pattern-Overview
20:49:51 <AnMaster> http://www.gnu.org/software/gawk/manual/html_node/Action-Overview.html#Action-Overview
20:49:55 <AnMaster> should help somewhat
20:50:06 <Deewiant> I've seen both of those pages, still missing it.
20:50:25 <AnMaster> Deewiant, I can't find the script where I did it. But I know I have done it
20:50:29 <Deewiant> Bah, I'll just pipe it to sed. :-P
20:50:44 <AnMaster> Deewiant, how would you then replace it in those files?
20:51:00 <AnMaster> marking the line with a marker at the start or somethiong?
20:51:02 <AnMaster> something*
20:51:15 <AnMaster> Deewiant, http://www.gnu.org/manual/gawk/html_node/String-Functions.html
20:51:23 <Deewiant> Hmm, except it loses order.
20:51:41 <AnMaster> Deewiant, I think you want the sub() function
20:51:43 <Deewiant> AnMaster: awk '{print foo | "sed bar"}
20:51:46 -!- ais523 has joined.
20:51:59 <AnMaster> Deewiant, that isn't complete
20:52:01 -!- adam_d has joined.
20:52:03 <AnMaster> the ' is never closed
20:52:06 <pikhq> Well, this now runs "Hello, world" correctly.
20:52:09 <Deewiant> AnMaster: '
20:52:12 <alise> hi ais523
20:52:13 <AnMaster> pikhq, congrats
20:52:27 <AnMaster> Deewiant, syntax error: line 2: AnMaster: Something expected
20:52:28 <AnMaster> ;P
20:52:29 <Deewiant> alise: You go into the middle of the unallocated area.
20:52:31 <pikhq> Let's see what instructions are unimplemented.
20:52:35 <Deewiant> AnMaster: That was the closing '.
20:52:40 <alise> Deewiant: What is the unallocated area?
20:52:46 <pikhq> &!gp
20:52:47 <AnMaster> Deewiant, well it read AnMaster: there
20:52:49 <pikhq> Erm.
20:52:49 <AnMaster> obviously
20:52:51 <ais523> hi alise
20:52:51 <pikhq> &~gp
20:52:54 <alise> fun put (Leaf(here, page), there, value) =
20:52:54 <fizzie> AnMaster: I have, in fact, been dabbling a bit with jitfunge lately. It's still too broken to run underload.b98, but it does run hello.b98. :p
20:52:55 <alise> if withinArray (there, here) then
20:52:55 <alise> let (x,y) = relativeCoords (there, here) in
20:52:55 <alise> Array.update (page, flatCoords (x,y), value)
20:52:55 <alise> else
20:52:56 <alise> (* The current leaf does not contain what we want; we must transform it into a branch *)
20:52:58 <pikhq> And reading stuff in from file.
20:52:59 <alise> Specifically that is the code I am trying to write.
20:53:04 -!- Oranjer has joined.
20:53:09 <AnMaster> fizzie, it runs life.bf still?
20:53:30 <fizzie> No, I don't think so. Haven't tried lately, though.
20:53:33 <Deewiant> alise: Hmm, I'm not sure how it should be computed actualy
20:53:35 <Deewiant> +l
20:53:53 <AnMaster> pikhq, g and p are easy. & and ~ may not be due to the way their buffers interact
20:54:05 <alise> Let's bother Asztal to tell us.
20:54:26 <Deewiant> alise: Basically it's the area covered by that node
20:54:34 <AnMaster> pikhq, basically you need to read in a line at a time then from that fetch next char/int, Note integer should swallow trailing \n , but getting a char should not
20:54:44 <AnMaster> if I remember correctly
20:54:52 <alise> Deewiant: ? No, that branch is for "this 64x64 node does not contain the point we want".
20:54:56 <AnMaster> fizzie, it used to work
20:55:03 <alise> So we need to create a new branch, which has one of the branches be the 64*64 node.
20:55:13 <Deewiant> alise: Yes
20:55:25 <fizzie> AnMaster: Yes, but I've cleaned things up since then. I think it was the breaking of life.bf that demotivated me a bit with trying to continue with the older code.
20:55:28 <Deewiant> alise: But I meant the maximum area that branch could cover
20:55:33 -!- alise has left (?).
20:55:34 <AnMaster> fizzie, ah
20:55:35 -!- alise has joined.
20:55:39 <alise> So what needs answering is:
20:55:45 <alise> What coordinates does the new branch have?
20:55:49 <Deewiant> alise: I.e. if your Leaf is immediately SE from (0,0), it's (0,0) to (2^32-1, 2^32-1)
20:55:55 <alise> And we need to add a node in this branch we create
20:55:57 <Deewiant> alise: Er, (1,1) I guess but whatever.
20:55:58 <alise> What of its coordinates?
20:56:09 <AnMaster> Deewiant, so any luck with gaining on those 0.3 faster of cfunge?
20:56:11 <alise> Deewiant: But what do you mean by two?
20:56:20 <Deewiant> alise: Two?
20:56:21 <alise> All pages are 64x64; all branches merely have one coordinate pair.
20:56:25 <alise> *by "to"?
20:56:33 -!- charlls has quit (Quit: Saliendo).
20:56:37 <Deewiant> alise: I mean that that's the area covered by that branch
20:56:46 <Deewiant> alise: The tree root covers the whole space from -2^32 to 2^32-1
20:56:51 <fizzie> AnMaster: I'm pretty sure it won't run life.bf right now, because I haven't cleaned up the old manual x86(-64) codegen; I've insted written a new one that uses LLVM's JIT engine, but it's a bit incomplete right now.
20:56:59 <Deewiant> alise: And the node SE from that covers 1 to 2^32-1
20:56:59 <alise> Deewiant: But that's the entirety of fungespaec.
20:57:02 <alise> *fungespace
20:57:06 <Deewiant> alise: Yes, and that's what your tree can store.
20:57:19 <alise> So if SE has half, and another has half, what of the other two?
20:57:26 <AnMaster> fizzie, cool. How much slower is it using the LLVM framework instead of putting the machine code in the buffer directly?
20:57:28 <Deewiant> alise: It doesn't have half, it has a quarter.
20:57:41 <Deewiant> alise: NW has -2^32 to 0, for example.
20:57:49 <Deewiant> alise: (I'm simplifying and saying only one coordinate.)
20:57:51 <alise> Deewiant: What about NE/SW?
20:57:55 <AnMaster> Deewiant, is alise having problems understanding a quadtree? :D
20:57:57 <alise> Oh, I see.
20:58:12 <alise> AnMaster: considering Deewiant himself just said he wasn't sure what the algorithm was...
20:58:13 <fizzie> AnMaster: I haven't benchmarked that; as long as it doesn't end up in a worst-case recompile-everything-constantly, the savings by LLVM's optimilizations are hopefully going to be more than the one-time compilation cost.
20:58:14 * AnMaster implemented quadtrees before. Not too hard.
20:58:38 <AnMaster> fizzie, hm
20:58:39 <fizzie> It's still not clever enough to realize how to snip up traces if you have, say, two sections of code that keep constantly "self-modifying" the other one.
20:59:02 <AnMaster> fizzie, that would require heuristics
20:59:13 <Deewiant> alise: Well, I understand the concept, but I'm not seeing the algorithm right now. :-P
20:59:28 <Deewiant> AnMaster: JIT is all about heuristics.
20:59:30 <pikhq> Hmm. Need file-reading now.
20:59:44 <AnMaster> Deewiant, well yes
20:59:45 <fizzie> Not many programs do that, I think. The older one had some sort of hard "if you p on top of a traced and compiled code, mark the spot so that it won't be traced over later on" rule, but that might not be quite optimal either.
20:59:59 <AnMaster> pikhq, simple: mmap() the file, then loop through that
21:00:06 <pikhq> AnMaster: Meh.
21:00:37 <AnMaster> pikhq, mmap() because if you use fgets() handling \r\n split between two "chunks" you read in is quite annoying
21:00:51 <AnMaster> same for fread() or any other similar call obviously
21:00:59 <AnMaster> you could use fgetc() but who wants to do that?
21:01:01 <pikhq> AnMaster: I'm just going to be going char by char, then. :P
21:01:19 <fizzie> And "meh"; I just spent over three hours trying to extract several years of accumulated crap from the wheels of this chair -- with scissors, tweezers and different types of pliers -- before finally realizing that the wheels are detachable, and you can just buy new ones for less-than-three euros from the local hardware store-alike.
21:01:22 <AnMaster> pikhq, you don't aim at beating ccbi and cfunge performance? Huh?
21:01:37 <pikhq> AnMaster: ... Reading. In. A. File.
21:02:00 <pikhq> I am *reading in an 80x25 file*. Performance is moot.
21:02:37 <AnMaster> pikhq, true. Just make a 25*80+1 buffer for fread
21:02:39 <AnMaster> fread()
21:02:42 <AnMaster> wait
21:02:59 <AnMaster> fread() needs 25*80+2*25 to handle \r\n
21:03:02 <AnMaster> I think
21:03:36 <AnMaster> pikhq, btw you know you should discard anything wider than 80 columns then?
21:03:46 <AnMaster> pikhq, that is how mycology befunge93 part works
21:03:57 <AnMaster> that anything outside it is discarded
21:07:01 <ais523> <clamav security update> Fix Quantum decompressor
21:08:13 <Deewiant> ais523: http://en.wikipedia.org/wiki/Quantum_compression
21:08:43 <ais523> I guessed it was something like that, but it's still funny
21:08:59 -!- alise has quit (Ping timeout: 258 seconds).
21:09:39 <ais523> also, that's a pretty bizarre technology to be using, but I suppose it makes sense in a virus scanner
21:09:48 <ais523> in case someone tries to trick people into decompressing a malicious .CAB file
21:10:43 <AnMaster> "Each of these require at least a 386 CPU to run"
21:10:46 <AnMaster> ehrrm
21:10:53 <AnMaster> riiight
21:15:04 <ais523> well, if there's more than one, where on earth are you going to find a dual-core 386?
21:16:13 <AnMaster> ais523, :D
21:16:38 <AnMaster> ais523, were there ever SMP 386?
21:16:50 <AnMaster> ais523, I mean, I know there were SMP Pentium
21:16:55 <AnMaster> (original ones even iirc?)
21:17:00 <ais523> I don't know, but it seems unlikely
21:17:14 <pikhq> The cat program on the esolang wiki... Seems wrong.
21:18:05 <pikhq> By "wrong" I of course mean "jumps off into nothingness with glee".
21:18:24 <Deewiant> pikhq: Wraparound.
21:18:42 <pikhq> Deewiant: Oh.
21:18:50 <pikhq> Darnit, gotta futz with step then.
21:18:53 <ais523> Befunge doesn't really have nothingness
21:19:15 <oerjan> befunge the anti-zen language
21:19:33 <Deewiant> In -98 you can run into infinite loops like that
21:19:50 <Deewiant> Well, I guess an empty file in -93 does the job as well :-P
21:20:48 <pikhq> What value should EOF be?
21:20:53 <AnMaster> pikhq, what?
21:20:56 <Deewiant> In what situation?
21:21:04 <pikhq> For ~
21:21:05 <ais523> Deewiant: is an annihilator program possible in -93?
21:21:11 <Deewiant> ~ should reflect
21:21:15 <Deewiant> ais523: Annihilator?
21:21:17 <AnMaster> Deewiant, eh?
21:21:18 <fizzie> AnMaster, ais523: NT 3.1 supports multiprocesspr 386 systems, so presumably there were some. No other versions of Windows apparently do, so maybe not that many.
21:21:21 <ais523> Deewiant: one that deletes its entire source code
21:21:25 <pikhq> ?
21:21:27 <AnMaster> Deewiant, what do you mean ~ should reflect on eof?
21:21:32 <Deewiant> ais523: I don't think so.
21:21:36 <AnMaster> oh
21:21:37 <ais523> by p'ing a space onto every cell of the playfield
21:21:37 <Deewiant> AnMaster: Shouldn't it?
21:21:38 <AnMaster> on EOF
21:21:40 <AnMaster> not EOL
21:21:41 <AnMaster> I misread
21:21:42 <Deewiant> AnMaster: :-P
21:21:46 <Deewiant> AnMaster: And miswrote? ;-P
21:21:49 <pikhq> Deewiant: What does "reflect" mean?
21:21:51 <AnMaster> pikhq, correct ~ should reflect on EOF
21:21:57 <Deewiant> pikhq: Reverse the direction of the instruction pointer
21:21:58 <AnMaster> Deewiant, thinko (like typo)
21:21:59 <ais523> hmm... you might be able to do it by putting a hilariously large number of coordinates on the stack, then repeatedly running over a column of p's
21:22:00 <pikhq> AnMaster: DEFINE REFLECT.
21:22:07 <AnMaster> pikhq, delta is mirrored
21:22:15 <AnMaster> pikhq, so it bounced back from where it came
21:22:24 <Deewiant> ais523: Hmm.
21:22:26 <ais523> and the p's themselves are the last thing to be deleted
21:22:32 <pikhq> Uh... http://catseye.tc/projects/befunge93/doc/befunge93.html Where is that in here?
21:22:49 <AnMaster> pikhq, with befunge98 and it's arbitrary delta you basically multiply dx and dy with -1
21:22:57 <Deewiant> pikhq: Presumably nowhere. -93 is a bit underspecified.
21:23:00 <AnMaster> pikhq, oh, 93, no clue
21:23:13 <Deewiant> pikhq: So in 93, knock yourself out with UB or do what everybody else does and reflect. :-)
21:23:13 <pikhq> Deewiant: Mmkay.
21:23:27 <pikhq> I'll go reflect then.
21:23:37 <oerjan> BOOORING
21:24:08 <AnMaster> Deewiant, in 93, pushing -1 isn't completely uncommon
21:24:18 <AnMaster> oerjan, what is boring?
21:24:23 <Deewiant> AnMaster: It isn't? Darn.
21:24:39 <Deewiant> I figured reflection was fairly much the norm there too.
21:24:40 <AnMaster> Deewiant, well, anagolf's b93 interpreter seems to push -1
21:24:41 <AnMaster> iirc
21:24:43 <pikhq> I just want cat to work. :(
21:24:49 <AnMaster> Deewiant, just as an example
21:24:51 <oerjan> AnMaster: reflecting
21:25:03 <AnMaster> pikhq, oh you need different cat for push -1 and reflect
21:25:12 <ais523> ooh, I've just reverted vandalism by a logged-in user on Esolang
21:25:13 <AnMaster> reflecting one is one char shorter
21:25:24 <AnMaster> ais523, logged in spam happens
21:25:25 <Deewiant> pikhq: That cat wants a negative one for EOF, it seems.
21:25:31 <Deewiant> So don't reflect. Meh.
21:25:34 <pikhq> Deewiant: Mmm.
21:25:35 <ais523> I think it may be a human rather than a spambot, so I've given them a nice warning rather than an instant 24-year block
21:25:39 <AnMaster> pikhq, make it an option
21:25:49 <AnMaster> pikhq, because a lot more code assumes reflection
21:25:52 <fizzie> Deewiant: Where was the ask-on-/0 thing stated, do you remember?
21:25:55 <oerjan> 9 out of 10 vampires agree: don't reflect
21:25:59 <AnMaster> fizzie, in befunge93
21:26:14 <AnMaster> fizzie, for 98 it is "push zero
21:26:16 <AnMaster> "
21:26:17 <pikhq> AnMaster: But that means argument handling!
21:26:21 <Deewiant> fizzie: In the -98 spec.
21:26:23 <AnMaster> pikhq, yes and?
21:26:27 <AnMaster> pikhq, getopt() is nice
21:26:36 -!- alise has joined.
21:26:41 <pikhq> Also, the cat program I'm using seems to not end on EOF. :P
21:26:51 <pikhq> Just output... EOF...
21:27:01 <AnMaster> huh
21:27:03 <pikhq> I'm not sure... Why.
21:27:06 <pikhq> Probably a bug.
21:27:08 <AnMaster> pikhq, link to it?
21:27:14 <AnMaster> and I can tell you if it should do that
21:27:24 <pikhq> ~:1+!#@_,
21:27:24 <AnMaster> or if it is an interpreter bug
21:27:27 <AnMaster> hm
21:27:29 <AnMaster> lets see
21:27:34 <fizzie> Deewiant: But it's mentioned there as a fact, as though it's common knowledge; I just didn't see it in the 93 spec.
21:27:35 <AnMaster> 1+!?
21:27:54 <Deewiant> AnMaster: It wants negative one for EOF.
21:28:09 <AnMaster> Deewiant, yes but add 1 logical not won't do that will it?
21:28:12 <Deewiant> fizzie: Well yes, I don't know about that.
21:28:25 <Deewiant> AnMaster: It will make the _ go left if it was EOF, thus hitting the @.
21:28:25 <AnMaster> oh wait it will
21:28:28 <AnMaster> true
21:28:40 <AnMaster> so indeed it shouldn't output EOF
21:28:55 <AnMaster> doing that indicates your _ is flawed. Or your # is *very* flawed
21:29:06 <AnMaster> (or your @ is extremely flawed)
21:29:16 <Deewiant> If you cat an empty file it will output EOF.
21:29:25 <Deewiant> Or no, it won't.
21:29:27 <Deewiant> Never mind.
21:29:54 <AnMaster> pikhq, will you do befunge98 or will you stay at 93?
21:30:33 <Deewiant> http://github.com/serprex/Befunge/blob/master/marsh.c is the fast -93 one I was thinking of.
21:30:54 <pikhq> AnMaster: 93 ATM.
21:31:00 <pikhq> http://sprunge.us/JRWd
21:31:04 <AnMaster> pikhq, so no plans to do 98 later?
21:31:22 <AnMaster> Deewiant, "#ifdef FUNGE" seems quite hilarious
21:31:28 <pikhq> Maybe. Maybe not.
21:31:36 <fizzie> Deewiant: I and mooz have both written reasonably fast 93 interps too, though I doubt either of them are online anywhere so that doesn't much help.
21:31:50 <Deewiant> No, it doesn't. :-P
21:32:10 <pikhq> Anything *obviously* wrong in there?
21:32:41 <AnMaster> ['+'] = &&add <-- is that C?
21:32:47 <pikhq> Yes.
21:32:55 <pikhq> GNU C, but yes.
21:32:56 <Deewiant> pikhq: Popping an empty stack doesn't seem worky?
21:32:57 <AnMaster> pikhq, the [] around an index like that?
21:33:05 <pikhq> Deewiant: Ah.
21:33:06 <pikhq> AnMaster: Yes.
21:33:12 <fizzie> That's a C99 thing.
21:33:22 <AnMaster> fizzie, hm only used the .foo C99 thing
21:33:27 <AnMaster> never the array index thingy
21:33:30 <pikhq> fizzie: The labels as values aren't, though.
21:33:30 <fizzie> It has both.
21:33:44 <fizzie> pikhq: Right, that's just a GNUism.
21:34:02 <AnMaster> <pikhq> Anything *obviously* wrong in there? <-- no. But then nothing is obviously right either
21:34:06 <AnMaster> it is too confusing for it
21:34:31 <Deewiant> pikhq: Also your ? ;-P
21:34:38 -!- MigoMipo has quit (Remote host closed the connection).
21:34:41 <AnMaster> pikhq, you won't pass mycorand
21:34:54 <pikhq> Deewiant: Couldn't be assed to do use rand yet. :P
21:34:58 <AnMaster> it runs until it gets two different random numbers iirc
21:35:11 <Deewiant> It runs until ? has gone in every direction.
21:35:28 <AnMaster> ah that even
21:35:33 <Deewiant> AnMaster: Why does oprofile point me to wrong symbols :-/
21:35:38 <pikhq> AnMaster: What's confusing about it, though?
21:35:53 <AnMaster> Deewiant, cfunge or ccbi?
21:35:57 <Deewiant> CCBI
21:35:58 <AnMaster> Deewiant, it never happened to me
21:36:04 <fizzie> My ff ("fast funge") used the gcc computed goto too, but in addition I had (macro-expanded) four copies of the instruction set, for each possible direction, so that there was a single jump per instruction. That deewiant-link seems to incur a call-through-pointer for movement every op.
21:36:06 <AnMaster> so I guess some D weirdness
21:36:13 <Deewiant> callgrind works fine.
21:36:17 <pikhq> The only logic at all is in step.
21:36:20 <AnMaster> Deewiant, but remember it is low overhead in kernel based
21:36:30 <Deewiant> AnMaster: Doesn't help me if it gives me wrong results.
21:36:43 <AnMaster> Deewiant, while callgrind basically emulates it in a virtual machine of it's own iirc
21:36:47 <AnMaster> like all of valgrind does
21:37:01 <Deewiant> Yes; and one reports things right, the other wrong.
21:37:16 <AnMaster> Deewiant, one is based on reality and both reported correctly for me
21:37:30 <AnMaster> Deewiant, but like your memory graph it might miss some tiny bit
21:37:41 <Deewiant> AnMaster: It's not reality when it's telling me about functions that are never called in the whole execution.
21:37:52 <AnMaster> Deewiant, that should not happen
21:37:55 <AnMaster> and never happened to me
21:38:05 <Deewiant> No kidding it probably "should not" happen, but it does. :-P
21:38:20 <AnMaster> Deewiant, what could happen is that it misses a tiny bit due to it being between sampling interval iirc
21:38:26 <AnMaster> since it uses performance counters of the CPU
21:38:39 <Deewiant> Yeah, that's not very important.
21:38:56 <AnMaster> Deewiant, well I can't help you since I have never seen it
21:39:16 <AnMaster> you could try debugging oprofile but I expect that to be a nightmare
21:39:32 <AnMaster> Deewiant, maybe two functions share a common tail? Does LLVM do that kind of size optimisation?
21:39:53 <Deewiant> It might.
21:40:14 <AnMaster> Deewiant, that could screw up something that isn't observing the calls, but looks at the program counter value and such
21:42:49 <AnMaster> pikhq, does that program pass mycology's b93 section?
21:43:23 <Deewiant> Bah, I'd got used to the speed of oprofile. :-P
21:43:42 <AnMaster> Deewiant, well yes callgrind is much slower and may not reflect a real computer
21:43:54 <AnMaster> for example modern computers have better hardware prefetch than it
21:43:55 <AnMaster> iirc
21:44:13 <AnMaster> Deewiant, like it either doesn't emulate hw prefetch or it emulates a perfect one
21:44:18 <AnMaster> oprofile shows the reality
21:44:26 <AnMaster> well except for your symbol name issue
21:44:34 <Deewiant> Yeah, so it actually doesn't show the reality. :-P
21:44:41 <AnMaster> Deewiant, it does for me though
21:44:51 <Deewiant> Well good for you.
21:44:57 <AnMaster> Deewiant, I blame your system/D + LLVM/other
21:45:00 <AnMaster> pick the one your prefer
21:45:08 <Deewiant> I don't need a scapegoat.
21:45:31 <AnMaster> meh should have told me before I went to all that trouble writing them down :P
21:45:54 <AnMaster> Deewiant, and yes what you really need is an escapegoat.
21:47:01 <pikhq> AnMaster: Lemme check.
21:47:08 <AnMaster> pikhq, do you handle wrapping around to the minus side correctly?
21:47:16 <AnMaster> pikhq, I don't think so
21:47:21 <AnMaster> pikhq, as in going < over the edge
21:47:23 <fizzie> Deewiant: Aw, that marsh.c doesn't even check for stack underflow and return 0; it just crashes in that case.
21:47:30 <fizzie> Deewiant: That's a cheaty way to be fast. :p
21:47:32 <AnMaster> pikhq, your code seems to only work for going > over the edge
21:47:48 <Deewiant> fizzie: There's a marshsafe.c, maybe that one does?
21:47:56 <fizzie> That sounds likely.
21:48:18 <AnMaster> Deewiant, the put code in the safe one seems longer
21:48:26 <AnMaster> I think it checks p is within bounds
21:49:06 <AnMaster> it also does check for /0
21:49:43 <AnMaster> hm iirc ppc's integer division gives you zero on division by zero
21:50:11 <AnMaster> FILE*rand=fopen("/dev/urandom","r"); <- heh
21:51:07 <fizzie> Deewiant: I'm having difficulties measuring the speed of marshsafe.c either, because it fails to run life.bf, sort.bf or serp.bf on my system. Curious.
21:51:23 <Deewiant> Maybe it's just broken. :-P
21:51:31 <AnMaster> fizzie, segfault?
21:52:56 <fizzie> AnMaster: serp.bf prints out a few (399?) dots, then seems to be stuck; sort.bf accepts an input line and then seems to be stuck; life.bf outputs "DFHJLþN" and "68:<>" and " @" repeatedly.
21:53:14 <AnMaster> fizzie, heh at that last one
21:53:25 <AnMaster> fizzie, I don't have serp or sort here
21:53:26 <AnMaster> links?
21:53:38 <AnMaster> also sort in befunge93 would be very limited
21:54:15 <fizzie> It sorts the letters of one word.
21:54:21 <fizzie> At http://quadium.net/funge/downloads/bef93src/
21:54:22 <AnMaster> fizzie, how long?
21:55:02 <fizzie> I don't know. Probably not very.
21:56:16 <pikhq> AnMaster: I appear to be having issues with reflection.
21:56:36 <alise> A real befunge would translate the whole program to an array of pointers to code.
21:56:37 <AnMaster> pikhq, ip.dx *= -1; ip.dy *= -1;
21:56:39 <AnMaster> that should work
21:56:45 <alise> (with specialised jumps for each direction)
21:56:48 <AnMaster> adapt it for you variable names
21:57:06 <AnMaster> fungespace_vector_x *= -1;
21:57:08 <AnMaster> fungespace_vector_y *= -1;
21:57:09 <AnMaster> it seem
21:57:11 <AnMaster> seems*
21:57:18 <AnMaster> pikhq, you reflect on unknown right?
21:57:29 <pikhq> AnMaster: Trying to now.
21:57:36 <alise> I want a Nexus One now.
21:57:40 <alise> Badly.
21:57:41 <pikhq> Minor issue -- this... Doesn't seem to be doing that right.
21:57:51 <fizzie> This is admittedly a very non-scientific benchmark, but: http://pastebin.com/nfmUUEwq
21:58:05 <AnMaster> fizzie, ff?
21:58:16 <fizzie> AnMaster: The thing I mentioned a moment ago.
21:58:17 <alise> fast funge, says fizzie.
21:58:22 <alise> Oh wait you can't hear >:)
21:58:23 <fizzie> <fizzie> My ff ("fast funge") used the gcc computed goto too, but in addition I had (macro-expanded) four copies of the instruction set, for each possible direction, so that there was a single jump per instruction. That deewiant-link seems to incur a call-through-pointer for movement every op.
21:58:25 <ais523> and what's marshsafe?
21:58:25 <fizzie> That one.
21:58:29 <AnMaster> ah
21:58:31 <alise> ais523: deewiant's github link
21:58:35 <ais523> ah, ok
21:58:37 <AnMaster> fizzie, several screens ago
21:58:50 <fizzie> AnMaster: Well, you're being so noisy.
21:58:51 <Deewiant> That github link is on the esolangs.org Befunge page.
21:59:07 <AnMaster> fizzie, I usually talk a lot
21:59:21 <fizzie> AnMaster: That was the plural, whole-channel "you", though.
21:59:27 <AnMaster> fizzie, ah
21:59:41 <AnMaster> fizzie, could have been made clearer with "you all" or such
22:00:21 <fizzie> Admittedly ff's a bit non-compliant in the sense that the playfield is 256x256 bytes; I do wrapping by unsigned-char overflow.
22:00:28 <AnMaster> haha
22:00:41 <AnMaster> pikhq, did you see what I said about going over the < edge?
22:00:48 <AnMaster> pikhq, that it seemed broken in your program
22:00:50 <ais523> fizzie: in befunge-93, without writing outside the playfield (which is IIRC undefined), is there any way to tell?
22:01:07 <AnMaster> pikhq, also wth:
22:01:10 <AnMaster> 306 fungespace_x += fungespace_vector_x;
22:01:11 <AnMaster> 307 fungespace_x %= 25;
22:01:11 <AnMaster> 308 fungespace_y += fungespace_vector_y;
22:01:11 <AnMaster> 309 fungespace_y %= 80;
22:01:17 <AnMaster> pikhq, I think you need to swap those
22:01:21 <AnMaster> 80 and 25
22:01:28 <AnMaster> your program is the wrong way around
22:01:31 <ais523> depends on the definitions of x and y, surely?
22:01:37 <AnMaster> ais523, well true
22:01:46 <fizzie> ais523: Mhm, maybe not. Though I don't ignore lines longer than 80 chars in the source file; I think that was specified there.
22:02:01 <AnMaster> pikhq, and yes it does the wrong thing when you hit -1
22:02:42 <AnMaster> <ais523> fizzie: in befunge-93, without writing outside the playfield (which is IIRC undefined), is there any way to tell? <-- is it explicitly undefined or just undefined?
22:02:46 <Deewiant> ais523: If it's not undefined, there is a way to tell.
22:03:07 <pikhq> AnMaster: Yeah, that's the issue.
22:03:10 <AnMaster> Deewiant, no there isn't
22:03:27 <Deewiant> AnMaster: Yes there is; put an @ at 255,0 and wrap around.
22:03:31 <ais523> Deewiant: well, depends on what it's defined /to/
22:03:35 <AnMaster> Deewiant, not if it is implementation defined
22:03:37 <Deewiant> ais523: Yes.
22:03:39 <AnMaster> which is a third option
22:04:08 <AnMaster> Deewiant, some interpreted could implement that as 255%80,0%25
22:04:15 <AnMaster> interpreter*
22:04:39 <AnMaster> pikhq, idea: befunge-98 self interpreter
22:04:43 <AnMaster> I don't think it has been done
22:04:50 <Deewiant> slowdown.b98.
22:04:57 <AnMaster> Deewiant, not a true self interpreter
22:05:01 <AnMaster> Deewiant, it uses the host
22:05:17 <AnMaster> Deewiant, it's like calling eval()
22:05:21 <fizzie> I seem to recall mooz's interp was around the same speed with a proper 80x25 playfield. IIRC, he used a 82x27-sized physical playfield, and put custom "jump the proper amount left/right/up/down" instructions on the borders. (The instructions of course checked the IP position and acted as nops when "executed" on the playfield.)
22:05:24 * Sgeo_ wonders if Silverlight works on Nexus One's browser
22:05:52 <Deewiant> Hmm, I wonder how underload.b98 manages to slow down when I preallocate an appropriately-sized box for the stack.
22:06:04 <AnMaster> fizzie, he could use 4 custom ones so it didn't need to check that
22:06:15 <alise> Sgeo_: no.
22:06:22 <AnMaster> Deewiant, hah
22:06:24 <Sgeo_> :(
22:06:24 <alise> Sgeo_: flash will, though, when the new version is out; but why would you want to?
22:06:25 <fizzie> AnMaster: He did use 4 customs ones, but you do need to check that, because someone could put the instruction in the middle of the program.
22:06:32 <Sgeo_> alise, Robozzle
22:06:33 <alise> laggy, shitty, battery-draining
22:06:34 <AnMaster> Sgeo_, no one uses that anyway?
22:06:40 <AnMaster> Sgeo_, there is a js version iirc
22:06:41 <alise> Sgeo_: bug him to make a paid android app
22:06:59 <AnMaster> fizzie, oh true
22:07:10 <AnMaster> fizzie, he could use out of band data
22:07:22 <AnMaster> fizzie, like a 34 bit word
22:07:30 <AnMaster> of course that is best left to VHDL people
22:07:45 <AnMaster> or other which can do non-standard word width
22:07:52 <AnMaster> s/which/who/
22:09:52 <Sgeo_> My dad's asking me to think hard about this
22:09:55 <Deewiant> The Befunge-93 docs don't seem to specify the space cell size, so you could store it as 32-bit, I suppose.
22:10:15 <Sgeo_> He suggested thinking about a no-contract iPhone, due to the number of apps. He also suggested getting a small laptop
22:10:26 <Sgeo_> Since I can't get both a better computer and a smartphone
22:12:16 <ais523> heh, you can use control-return to open links in a new tab using the keyboard in Firefox
22:12:43 <ais523> it's nice when you guess a keyboard shortcut and it works
22:12:47 * Sgeo_ goes to start the Android emulator
22:13:50 <AnMaster> Deewiant, or 16-bit
22:14:06 <Deewiant> On modern machines, 16-bit tends to be a bad idea.
22:14:37 <ais523> doesn't 16-bit get emulated in microcode?
22:14:45 <pikhq> Hrm. I seem to get no output from mycology.
22:16:27 <pikhq> Ah. It's an issue in the file loading.
22:17:24 <pikhq> Whoo, I now segfault.
22:18:25 <pikhq> 0x00007ffff7ad99b5 in getc () from /lib/libc.so.6
22:18:32 <pikhq> How the hell am I segfaulting there?
22:18:39 <Deewiant> Buffer overrun.
22:18:41 <ais523> passing it a NULL file pointer
22:18:58 <ais523> getc's a macro, it probably doesn't sanity-check its input
22:19:08 <pikhq> I didn't call getc.
22:19:10 <Deewiant> If it's a macro it can't be in the stack trace.
22:19:15 <ais523> yep, good point
22:19:19 <pikhq> 112 int c = fgetc(f);
22:19:23 <ais523> this is even more bizarre given that the function version's called fgetc
22:19:25 <pikhq> That's the line it's called from.
22:19:28 <ais523> hmm, ok
22:19:45 <ais523> so the function fgetc shows as getc in stack traces?
22:19:50 <pikhq> Yes.
22:19:52 <ais523> pikhq: why use fgetc ever, except to take its address?
22:20:09 <pikhq> ais523: Probably no good reason.
22:20:44 <pikhq> Okay, that still confuses me.
22:20:59 <ais523> hmm, I wonder if fgetc has sanity checks?
22:21:09 <pikhq> "f" is still a perfectly valid FILE*.
22:21:24 <ais523> err, it's pointing to a char, not to a file
22:21:29 <lament> how come fax isn't here?
22:21:32 <fizzie> ais523: At least my /lib/libc.so.6 has the symbols getc and fgetc with the identical address.
22:21:42 <fizzie> ais523: In this sort of situation gdb would probably just pick the first one.
22:21:46 <ais523> ah, ok
22:21:56 * Sgeo_ tries to access the bus scheduling stuff via the emulator
22:22:07 <Sgeo_> I see schedules for the train, but no bus stuff GRRR
22:22:10 <pikhq> ais523: getc takes a file?
22:22:16 <Sgeo_> F U Usablenet Mobile
22:22:20 <AnMaster> lament, because he is not currently in this channel
22:22:22 <ais523> pikhq: yep
22:22:22 <AnMaster> that is why
22:22:23 <AnMaster> ;P
22:22:24 <ais523> it's getchar that doesn't
22:22:30 <pikhq> Yuh.
22:22:38 <ais523> or getch doesn't either, but it's curses/DOS
22:22:42 <ais523> rather than standard C
22:22:49 <pikhq> So, yeah. I have no clue how this is segfaulting.
22:23:07 <fizzie> Step up in gdb, print out "f" just in case?
22:23:17 <AnMaster> what fizzie said and also link to the file
22:23:19 <ais523> did you ever call setvbuf or an abbreviation for it on f?
22:23:22 <AnMaster> pikhq, also try valgrind
22:23:24 <pikhq> fizzie: I'm examining f's buffer right now.
22:23:24 <ais523> it could be that something's happened to the buffer
22:23:36 <Sgeo_> The Android browser does NOT seem to support PDF
22:23:47 * Sgeo_ pokes alise. You said that iPhone supports PDFs?
22:23:49 <pikhq> ais523: No.
22:24:01 <AnMaster> Sgeo_, get a computer if you want one. Get a phone if you want a phone
22:24:05 <pikhq> I'm actually very, very curious why I'm not getting anything *else* from gdb.
22:24:06 <ais523> Sgeo_: it's not normally web browsers that support PDFs, but plugins
22:24:17 <AnMaster> Sgeo_, also surely you can install a pdf reader in it?
22:24:17 <pikhq> I *have* full debugging info and source code for my libc.
22:24:25 <AnMaster> ais523, exception: konqueror ?
22:24:26 <Sgeo_> AnMaster, I'm looking into that
22:24:26 <ais523> or separate programs
22:24:28 <AnMaster> or wait
22:24:34 <ais523> AnMaster: arguably konqueror isn't a web browser
22:24:35 <AnMaster> it does it as kpdf_kpart or such
22:24:41 <AnMaster> maybe
22:24:41 <ais523> it's a superset of a web browser
22:24:46 <AnMaster> true
22:24:48 <fizzie> Sgeo_: I really don't know *anything* about the iDevices, but an iPod Touchy friend did have a PDF reader on his thing.
22:24:55 <pikhq> I *should* be able to actually debug libc.
22:24:56 <Sgeo_> Hm
22:25:14 <ais523> pikhq: just because you have debugging libc doesn't mean the program's linked against it
22:25:16 <fizzie> Sgeo_: Anyway, doesn't the saying go "there's an app for that".
22:25:20 <Sgeo_> I don't really need the maps though. I need the schedule. And the MTA's mobile site doesn't have a link to the bus schedule
22:25:25 <ais523> you might need to set an env variable to tell it to link that version of libc
22:25:37 <pikhq> ais523: Every single binary on my system is splitdebug.
22:25:49 <alise> Sgeo_: yes iphone can read pdfs
22:25:53 <pikhq> I don't *have* non-debugging versions.
22:26:22 <pikhq> At least, I shouldn't. And yet, here's libc. Without debugging info.
22:26:25 <ais523> pikhq: surely, just the executable binaries?
22:26:37 <ais523> or are you saying that, say, your compressed tarballs are debugging versions too?
22:26:38 <alise> http://andpdf.sourceforge.net/ gross but
22:26:39 <Sgeo_> That.. may push my hand to an iPhone
22:26:48 <alise> Sgeo_: No.
22:26:56 <alise> I am the biggest iPhone evangelist on the planet, I love the things, but no.
22:27:00 <ais523> that's a really bad reason to get an iPhone
22:27:04 <alise> Apple have finally stepped too far: buying one is simply immoral now.
22:27:09 <pikhq> ais523: Yes, the executable ones.
22:27:10 <pikhq> :P
22:27:13 <ais523> alise: it seems unlikely that you're the biggest iPhone evangelist on the planet
22:27:14 <AnMaster> <ais523> pikhq: just because you have debugging libc doesn't mean the program's linked against it <-- split debug info?
22:27:20 <alise> (in case ais523 doesn't know: apple have amended the ToS; all applications have to be ORIGINALLY written in objective-c now)
22:27:22 <alise> (or c/c++)
22:27:22 <ais523> have you /seen/ some of the Apple evangelists on the Internet
22:27:26 <alise> (no third-party languages or runtime)
22:27:32 <ais523> alise: hmm, interesting
22:27:34 <Sgeo_> alise, will Android 1.5 programs work on 2.1?
22:27:38 <alise> Interesting and evil.
22:27:39 <ais523> they've banned interpreted languages forever
22:27:44 <alise> Sgeo_: Probably, but look at that screenshot; it's hideous.
22:27:47 <pikhq> What the hell?
22:27:57 <ais523> presumably, this is to get rid of the actionscript -> obj-c compiler someone wrote
22:27:57 <alise> http://androidforums.com/support/1198-pdf-android-work-around.html lol export to jpeg
22:28:00 <pikhq> I've got a .debug file for everything *but* libc.
22:28:03 <alise> Android Portal MultiReader: Free Word viewer / PDF reader for T ...
22:28:09 <fizzie> The N900 built-in PDF reader isn't quite that horrible-looking, but it's not very pretty either. I think there's some evince ports or whatever in the repositories, though.
22:28:16 <alise> Sgeo_: http://bsegonnes.free.fr/multireader/en_multireader.html
22:28:29 <alise> doesn't seem to do "rich" pdf stuff but...
22:28:34 <ais523> yay evince
22:28:38 <ais523> alise: you probably don't want to
22:28:47 <Sgeo_> I think I'll avoid telling my dad that iPhone has PDF capabilities
22:28:51 <alise> ais523: ?
22:28:56 <ais523> this reminds me of the exploit in the PDF spec people found recently
22:28:57 <Sgeo_> He's currently under the impression that it simply can't be done
22:28:58 <alise> ais523: I mean even basic formatting, maybe I'm wrong though
22:29:02 <ais523> ah
22:29:09 <alise> Sgeo_: heh
22:29:16 <ais523> still, it's kind of silly that a program has to be vulnerable in order to comply with the letter of the sepc
22:29:19 <ais523> *spec
22:29:22 <alise> Sgeo_: I take it your dad has no actual reason to believe himself to be competent in tech matters?
22:29:35 <fizzie> ais523: My favourite seen-in-the-maemo.org-repository so far: someone's put the whole texlive TeX distribution in there. When you desperately have to compile some LaTeX text and all you have is your phone!
22:29:46 <Sgeo_> He's.. somewhat competent. Competent enough to, say, know how to set a password in BIOS
22:29:53 <alise> That's barely competent :P
22:29:53 <ais523> it turned out that there'd been a raging flamewar on KDE internal dev lists about it, people wanting to implement the feature vs. people saying it was a security bug
22:30:09 <ais523> fizzie: it could be useful for academics, if someone sends you a .tex (say by email), nad you want to read it
22:30:10 <ais523> *and
22:30:11 <alise> Sgeo_: Oh yeah, what fizzie said, look at the N900
22:30:13 <alise> not a very good touchscreen
22:30:18 <ais523> that's actually /happened/ to me, although I wasn't on a phone at the time
22:30:19 <alise> but it almost certainly does pdf :P
22:30:29 <ais523> and the source is decent for editing, but bad for reading
22:30:38 <Sgeo_> How many apps are available for the N900?
22:30:44 <alise> Sgeo_: less than android
22:31:01 <alise> Sgeo_: why do you need pdf?
22:31:03 <alise> Academic papers?
22:31:06 <Sgeo_> alise, bus schedules
22:31:09 <fizzie> alise: Well, there's as many apps as there are in Debian, if you want to be technical about it...
22:31:24 <alise> Sgeo_: Presumably they don't change so often?
22:31:32 <Sgeo_> alise, correc
22:31:32 <fizzie> (Since there's a "install a Debian in a ext2 filesystem image" app in the official repository.)
22:31:37 <Sgeo_> t
22:31:45 <alise> Well, fizzie is right Sgeo_; technically maemo can run most Gtk applications.
22:31:47 <alise> Really badly, though.
22:31:53 <Sgeo_> They do change every few months, actually. Rarely the ones I use
22:31:55 <alise> Sgeo_: then just export them to pngs on your computer and put them on your android
22:32:09 <fizzie> Anyhow, I'm a bit reluctant to recommend N900; I personally like it a lot, but my likes and dislikes are probably a bit idiosyncratic.
22:32:33 <ais523> "I like this, therefore most people probably dislike it"?
22:32:53 <alise> I don't think, therefore statistically I'm more likely to be than if I did think.
22:32:53 <ais523> anyway, hasn't maemo merged with moblin nowadays?
22:32:57 <fizzie> ais523: Perhaps more like "I like this, but it probably has not much correlation with whether other people like it or not".
22:33:02 <ais523> presumably nowadays you need to look at the capabilities of meego
22:33:02 <alise> Evidence: there are more existing things that don't think than things that think.
22:33:25 <fizzie> ais523: Brandwise, perhaps, in the sense that Nokia's going that way; I am a bit unsure that the maemo community as a whole (such as it is) will swing that way.
22:33:28 <alise> cognition is actually evidence /against/ you existing :-)
22:33:30 <AnMaster> <ais523> this reminds me of the exploit in the PDF spec people found recently <-- ?
22:33:41 <AnMaster> <fizzie> ais523: My favourite seen-in-the-maemo.org-repository so far: someone's put the whole texlive TeX distribution in there. When you desperately have to compile some LaTeX text and all you have is your phone! <-- :DDD
22:33:45 <ais523> AnMaster: basically, you can specify attachments and executables that should open them
22:33:45 <fizzie> ais523: And anyway the current MeeGo release on the N900 doesn't support such things like the GUI. (You get a terminal and that's it.)
22:34:05 <ais523> you can make the PDF file a polyglot PDF/executable for target platform, and open it with itself
22:34:09 <AnMaster> ais523, oops
22:34:19 <ais523> but it would be an exploit even without that, just a harder one to exploit
22:34:25 <AnMaster> ais523, should definitely not be implemented
22:34:31 <ais523> yep
22:35:07 <Sgeo_> alise, what happens when I need a schedule for a bus I didn't plan on taking?
22:35:11 <Sgeo_> It has happened
22:35:38 * Sgeo_ installed an alternative .. market app? app app? on the emulator
22:35:39 <fizzie> Sgeo_: Bother your transportation company to put their schedules in the web in a sensible format? It's 2010, for foo's sake!
22:36:41 <AnMaster> <Sgeo_> alise, what happens when I need a schedule for a bus I didn't plan on taking? <-- happens to me too
22:36:43 <fizzie> Alternatively, you could put a pdf-to-png cgi script on some web-host and use that to open PDFs.
22:36:51 <AnMaster> I go to their website and read the html page
22:37:01 <AnMaster> well you search first
22:37:04 <alise> Sgeo_: where's the download link for the emulator?
22:37:06 <AnMaster> I don't do it from the phone
22:37:11 <AnMaster> due to opera mini being what it is
22:37:16 <Sgeo_> alise, somewhere on http://developer.android.com/
22:37:17 <fizzie> Can you use google's PDF "preview" thing with arbitrary PDF urls?-)
22:37:30 <AnMaster> fizzie, no idea. Try it?
22:37:33 <Sgeo_> http://developer.android.com/sdk/index.html
22:37:40 <Sgeo_> Requires a bit of fiddling
22:38:57 * Sgeo_ sees something about a standalone emulator, but that's 1.5
22:38:59 <fizzie> Sgeo_: If you don't mind using your Google account, presumably you can use http://docs.google.com/viewer with any suitably web-browsing-enabled device to open arbitrary PDF URLs.
22:39:23 <Sgeo_> fizzie,
22:39:24 <Sgeo_> hm
22:39:55 * Sgeo_ tries MultiReader
22:40:37 <alise> What fizzie said is probably the best idea.
22:40:44 <alise> Google will almost certainly optimise for Google shit working perfectly.
22:40:49 <Sgeo_> Powerpoint viewer seems like it would be useful too. In one of my classes, the professor lets students use their laptops to look at the slides
22:41:03 <fizzie> Well, the google-docs viewer does Powerpoint too.
22:41:28 <alise> Sgeo_: well, buy a laptop :P
22:41:30 <Sgeo_> WHY does MutiReader want access to my owner data and phone data
22:42:14 * pikhq rebuilds glibc with USE=debug, hopes that beats it into submission
22:42:19 <alise> SEXY PURPOSES
22:42:33 <fizzie> AnMaster: Since you've sort-of been following The Competition; turns out I had somehow managed to not update tournament.jar (the version of the framework used by the tournament scripts) with the newest version, so there was one fixed bug (Move.getPlayer() returned null instead of Side.RED or Side.BLUE for "pass" moves) still there; one of the participating bots crashed every match it participated in on its first turn because of that.
22:43:03 <alise> Sgeo_: do you really need eclipse to install android emulator?
22:43:15 <Sgeo_> alise, no
22:43:22 <pikhq> I demand to see another .debug file in /usr/lib/debug/lib64/, and a bunch of source in /usr/src/debug/sys-libs/glibc.
22:43:27 <fizzie> alise: It's better than the Windows you need to install a Symbian emulator. :p
22:43:30 <Sgeo_> Nor do you need to do command-line stuff
22:43:32 <alise> Sgeo_: how did you download it then?
22:43:49 <Sgeo_> In the .zip, there's a utility called SDK Setup
22:43:59 <Sgeo_> [erm, on Windows, not sure about other OSes]
22:44:27 <Sgeo_> I did need to download some packages using that utility, I probably installed stuff that wasn't needed
22:44:32 <alise> Which zip? :P
22:44:36 <alise> I'm having trouble finding the download
22:44:50 <AnMaster> fizzie, you will have to rerun those affected by it then
22:45:01 <Sgeo_> http://developer.android.com/sdk/index.html
22:45:05 <Sgeo_> "Download the Android SDK"
22:45:34 <alise> Well, that would work. :P
22:46:35 <fizzie> AnMaster: Yeah. According to bit of bash-oneliners invoking "javap", ten (out of 45) bots referred the Move.getPlayer method. I'm currently rerunning the (~700 out of 1980) matches where either the blue or red player was one of those ten.
22:47:03 <AnMaster> mhm
22:47:15 <fizzie> (Even those that didn't crash, because possibly some of them didn't try to "dereference" the returned Side, just compared it to something.)
22:47:51 <Sgeo_> It feels awkward that alise needs my help, rather than the other way around
22:50:58 <alise> Need to get 267MB of archives.
22:51:01 <alise> Forget Eclipse, then.
22:51:30 <Sgeo_> alise, Eclipse has nothing to do with anything
22:51:37 <Sgeo_> Unless you're trying to practise developing
22:52:56 -!- oerjan has quit (Quit: Good night).
22:53:03 <alise> Right.
22:53:20 <Sgeo_> I can live with the viewer thing
22:53:23 <alise> Do I need the jdk?
22:53:28 <alise> I guess not, but I bet I need the JRE.
22:53:33 <alise> Maybe not, though.
22:53:38 <ais523> I find the JDK is nice to have
22:53:40 <Sgeo_> You just need what's in the .. yeah, you do kind of need Java stuff
22:53:44 <ais523> although, maybe more so if you teach Java for a living
22:55:45 <Sgeo_> Just seems inconvenient to go to the viewer from links on the full version of the MTA's site
22:55:51 <fizzie> The JDK is sometimes nice to have even if you don't write Java; at least on the Ubuntu, openjdk-6-jre only has a plugin-appletviewer, the standalone "appletviewer" command is only in openjdk-6-jdk.
22:56:03 <fizzie> And the same for the "jar" command-line tool for peeking inside .jar files.
22:56:27 <Sgeo_> Aren't .jar files just .zip files or something, or am I misremembering, or is that old information
22:56:36 <fizzie> They are, so that's a minor thing.
22:56:38 <Deewiant> They are.
22:56:40 <Sgeo_> Stuff keeps freezing in the emulator :/
22:56:55 <fizzie> I still write "jar xvf file.jar" when trying to extract one, by force of habit.
22:57:08 <Sgeo_> The real phone better not be as badly behaved as this
22:57:14 <AnMaster> <Sgeo_> It feels awkward that alise needs my help, rather than the other way around <-- relish the feeling while it lasts
22:57:22 <ais523> they're zipfiles with a few special files in at known locations
22:57:41 <AnMaster> fizzie, jar xvf?
22:57:59 <fizzie> AnMaster: Yes?
22:58:10 <AnMaster> fizzie, does that work?
22:58:15 <fizzie> That's the syntax.
22:58:19 <fizzie> Extract jar file
22:58:19 <fizzie> jar x[vf] [jarfile] [inputfiles] [-Joption]
22:58:23 <AnMaster> fizzie, can you use it for normal zip?
22:58:45 <AnMaster> fizzie, I always need to check docs of zip when I want to unpack a zip
22:58:52 <fizzie> Apparently you can.
22:59:04 <fizzie> At least "jar tf bleh.zip" for a completely ordinary .zip seems to list files.
22:59:09 <fizzie> Didn't try extracting anything.
22:59:30 <Deewiant> "unzip foo.zip"
22:59:42 <fizzie> Deewiant: Admittedly it's not a very complicated syntax. :p
22:59:59 <fizzie> Deewiant: Though "unzip -l foo.zip" -- if you want to see the contents first -- is not *so* simple to remember.
23:00:02 <Gregor> fizzie: BSD?
23:00:11 <Gregor> Oh fleh
23:00:12 <Deewiant> fizzie: unzip -t works as well, no?
23:00:13 <Gregor> Cancel that.
23:00:15 <Gregor> Misread.
23:00:27 <fizzie> Deewiant: It might; -l is the only thing I remember. :p
23:00:37 <fizzie> Deewiant: There's still the "-" there.
23:00:51 <Deewiant> Yes, the "-" is such a rare thing that you might forget about it.
23:01:04 <Sgeo_> Why does THIS document viewer also feel a need to read my "phone state and identity"?
23:01:09 <fizzie> Deewiant: Apparently -t also calculates the CRC, which might be not what you want.
23:01:38 <Deewiant> Yes, it is short for "test" after all.
23:01:41 <AnMaster> Sgeo_, who knows
23:01:45 <Sgeo_> Also, it's asking for Internet access. I swear, if this thing decides it can only read local files, after I gave it Internet access, I'll scream
23:01:50 <Sgeo_> Then agian, it is a Trial
23:03:06 <Sgeo_> Maybe it's storing stuff to ensure against trying to keep it in the phone area
23:03:07 <alise> 4% [3 sun-java6-jre 2153087/6,421kB 33%]
23:03:09 <alise> keeps freezing on this
23:03:12 <alise> are you suuuure i need java
23:03:23 <Sgeo_> alise, you can try without and see what happens
23:03:29 <alise> yeah it wants java
23:03:30 <alise> ffs
23:03:33 <alise> why won't it just download
23:03:35 <Sgeo_> It does keep popping up console windows .. oh
23:03:44 <fizzie> .jar files are just .zip files with few special files; .war files are just .jar files with a few more extra files; unfortunately, .ear files are just .jar files with different magic files, not an add-on to .war files. I was hoping for a longer chain.
23:03:52 <alise> 4% [4 sun-java6-jre 2324862/6,421kB 36%] 912B/s 15h 24min 21s
23:03:56 <alise> heh it improved now
23:03:59 <alise> now only 20 minutes to go
23:04:01 <alise> now 9
23:04:10 <alise> fizzie: MAH EAR FILE
23:04:14 <alise> for filing my ears
23:04:21 <alise> so is the next .nail
23:05:11 <fizzie> alise: fileext says for .nail: "Primary association: Unknown Apple II File". That's probably no longer related.
23:06:57 <Sgeo_> Oh look, it wants to open something ON THE PHONE! AND I GAVE YOU INTERNET ACCESS, YOU PIECE OF SHIST
23:07:43 <alise> Shist.
23:08:41 <fizzie> "Shist" is this enemy type in Chrono Trigger.
23:08:47 -!- tombom has quit (Quit: Leaving).
23:09:24 <fizzie> http://www.spriters-resource.com/snes/chronotrigger/rubble_icon.PNG -- there, that's a Shist.
23:09:27 <fizzie> Now you know!
23:10:21 <fizzie> (It might be a Rubble too... the difference's just in the palette.)
23:14:02 <fizzie> Hee, there's now chromium (v. 5.0.369.2-maemo1) in the extras-devel maemo repo. I wonder if it's any good at all; probably not.
23:14:26 -!- adam_d has quit (Ping timeout: 276 seconds).
23:16:36 -!- Oranjer1 has joined.
23:18:09 -!- Oranjer has quit (Ping timeout: 248 seconds).
23:19:58 <AnMaster> <fizzie> http://www.spriters-resource.com/snes/chronotrigger/rubble_icon.PNG -- there, that's a Shist. <-- aargh
23:20:09 <AnMaster> they had massive HP didn't they?
23:20:16 <fizzie> AnMaster: No, just massive evasion.
23:20:30 <AnMaster> fizzie, maybe there were different coloured ones?
23:20:32 <AnMaster> as well
23:20:33 <fizzie> AnMaster: And the "lock all" ability, which meant you could only use phyiscal attacks.
23:20:49 <fizzie> AnMaster: Well, Rubble's the grey one. I guess Shists had more HP than Rubbles, yes.
23:20:56 <AnMaster> ah
23:21:17 <Sgeo_> Ok, OfficeSuite's taking forever
23:21:34 <fizzie> AnMaster: Also you got a lot of those... uh, what were they? APs? The things that you need to collect to enable different techs; if you managed to beat one. It's just that they ran away after a while, and with the maximum evasion, you usually just missed.
23:22:04 <AnMaster> fizzie, true but weren't APs caped?
23:22:08 <fizzie> AnMaster: And (despite a single exception) they didn't reappear. Though you could use that single exception to get access to pretty much all the techs.
23:22:10 <AnMaster> capped*
23:22:47 <AnMaster> fizzie, I remember I stopped getting tech points at some point
23:22:53 <AnMaster> before I had the majority of techs
23:22:53 <Sgeo_> I mentioned the iPhone PDF thing to my dad. He said that he knew it could do it, but it looks like crap
23:23:04 <alise> Sgeo_: tell him he's wrong
23:23:05 <Sgeo_> Not as bad as this, though
23:23:08 <alise> I read PDFs on my iphone regularly
23:23:13 <alise> it's beautifully antialiased and rendered perfectly
23:23:18 <alise> exactly the same as on os x
23:23:19 <AnMaster> Sgeo_, so that is going to decide it?
23:23:20 <alise> exact same engine
23:23:28 <Sgeo_> AnMaster, not if I have any say
23:23:36 <AnMaster> Sgeo_, can't you search for time tables without pdf
23:23:54 <ais523> "looks like crap" may just mean "screen too small"
23:24:03 <ais523> with nontechnical people, it's hard to know
23:24:48 <alise> Sgeo_: just get a nexus one
23:24:55 <alise> as someone who's used an iphone extensively, the nexus one looks awesome
23:24:57 <AnMaster> true
23:25:00 <fizzie> AnMaster: I don't think there's a cap, no. As long as you can still learn new techs, you should be getting APs. But you can have unlearned dual or triple techs and not get APs towards those unless you have all participants in the party, perhaps.
23:25:18 <fizzie> AnMaster: At least I distinctly remember learning Luminaire on the single reappearing Rubble, after a long and boring while.
23:25:47 <AnMaster> fizzie, heh
23:26:27 <Sgeo_> http://i.imgur.com/S6pDQ.png
23:26:30 <fizzie> AnMaster: (The one that does reappear is on Mt. Woe, and there's a boring battle or two on the way to the rubble from the nearest region-border you need to walk to-and-back to make it reappear.)
23:27:20 -!- Oranjer1 has changed nick to Oranjer.
23:27:44 <AnMaster> fizzie, hm
23:28:32 <alise> Sgeo_: linus torvalds likes the nexus one
23:28:36 <alise> http://torvalds-family.blogspot.com/2010/02/happy-camper.html
23:28:48 <Sgeo_> Isn't he also a KDE fan?
23:29:08 <Sgeo_> [Well, I shouldn't dis KDE. It's just Kubuntu I've had troubles with, really]
23:30:36 <alise> No, actually.
23:30:44 <alise> He's decided that KDE 4 sucks so much that GNOME is better.
23:30:47 <alise> iirc
23:30:59 <ais523> Sgeo_: don't worry, it's fair to hate Kubuntu's packaging of KDE
23:31:04 <ais523> which IIRC, and IME, is really bad
23:31:28 <alise> Sgeo_: Besides, dammit, the Nexus One has a 1 gigahertz processor.
23:31:37 <Sgeo_> I don't know if it's the packaging, but it was always crashy for me
23:31:37 <alise> ais523 barely even has a gigahertz processor on his laptop XD
23:32:11 <alise> All Nexus One devices have an unlockable bootloader (% fastboot oem unlock), which, once unlocked will allow you to reflash the boot partition (kernel + ramdisk), system partition, etc.
23:32:18 <alise> everything i've read confirms that getting root is "official"
23:32:38 <ais523> alise: yep, you just install a package that lets you become root
23:32:42 <alise> no
23:32:50 <alise> you just hold down the trackball at boot
23:32:52 <ais523> hmm, am I thinking of a different platform?
23:32:53 <ais523> ah
23:32:54 <alise> type in fastboot oem unlock
23:33:00 <alise> and you can just shazam, become root
23:33:15 <Sgeo_> alise, would that allow bypassing pattern lock?
23:33:16 <Sgeo_> :/
23:33:39 <ais523> one of the linuxy mobiles, you install a package that lets you become root, it doesn't have sudo/su by default
23:33:56 <alise> Sgeo_: Who would know how to?
23:34:07 <alise> Sgeo_: Dude, if your phone is stolen, and the person who stole it is an expert,
23:34:08 <alise> you are fucked.
23:34:11 <alise> But no experts steal phones.
23:34:35 <alise> http://androidandme.com/2010/01/hacks/video-how-to-unlock-and-root-a-nexus-one/ ;; admittedly you have to do some rom stuff to get root
23:35:31 -!- gm|lap has joined.
23:36:28 <AnMaster> ais523, heh
23:36:37 <AnMaster> ais523, how does the package manager work then?
23:36:46 <ais523> AnMaster: probably suid
23:36:57 <ais523> or something equivalent
23:37:24 <AnMaster> *shudder*
23:37:53 <alise> worrying over total linux security correctness in a phone produces openmoko
23:38:07 <alise> and if you know anything about openmoko you'll know that's an insult
23:38:07 <ais523> the Linux systems at university run updates as root during the boot process
23:38:15 <AnMaster> what?
23:38:19 <Sgeo_> alise, what's OpenMoko?
23:38:27 <pikhq> So, apparently glibc has a misfeature in its buildsystem.
23:38:27 <alise> Sgeo_: a defunct company
23:38:29 <pikhq> --omitfp
23:38:35 <alise> Sgeo_: they used to make really shitty linux phones that barely worked
23:38:35 <AnMaster> pikhq, ouch
23:38:39 <alise> now they don't make mobiles any more
23:38:42 <pikhq> This causes it to build with -fomitfp -O99 -g0
23:38:47 <AnMaster> -O99?
23:38:52 <pikhq> Yes.
23:38:57 <alise> -O100 ;; one faster
23:38:59 <pikhq> And no, that does not do anything.
23:39:00 <AnMaster> ..................
23:39:13 <pikhq> -g0 disables debugging.
23:39:25 <AnMaster> I know what -g0 does
23:39:29 <pikhq> -fomitfp breaks debugging *only on x86*.
23:39:33 <alise> but it OMITS FRAME POINTERS FUCK YEAH
23:39:37 <AnMaster> pikhq, x86_64 too
23:39:38 <ais523> I thought -O only went to 7
23:39:38 <alise> or maybe it omits floating point operations
23:39:41 <AnMaster> and a few other platforms
23:39:41 <pikhq> AnMaster: No.
23:39:43 <AnMaster> ais523, to 3
23:39:53 <ais523> AnMaster: I think it depends on details
23:39:55 <AnMaster> pikhq, sure? I'm almost completely sure about this
23:39:56 <pikhq> On x86_64, all optimisation levels omit the frame pointer.
23:39:59 <ais523> 3 is the highest normal useful value
23:40:07 <AnMaster> pikhq, yes okay so it always break debugging then?
23:40:15 <ais523> I think values higher than that have a special meaning on some platforms
23:40:17 <pikhq> No, it doesn't.
23:40:20 <AnMaster> mhm
23:40:32 <AnMaster> ais523, huh
23:40:35 <pikhq> Only a small handful of architectures.
23:40:40 <AnMaster> which ones?
23:41:10 <ais523> can't remember offhand, but I'm pretty sure I've seen -O7 before
23:41:20 <pikhq> Lemme check.
23:41:21 <alise> Sgeo_: seriously i'm a huge iphone fan and looking up stuff about it makes me really really want a nexus one
23:42:05 <Sgeo_> I mentioned the GPS Navigation to my dad. That was a bad thing, apparently. He's afraid I'll be listening to it, and not be paying attention. So I said that I won't use GPS nagivation
23:42:19 <Sgeo_> [in the hypothetical future where I drive]
23:42:40 <pikhq> I can't find anything other than "breaks on x86 and maybe elsewhere"
23:42:44 <alise> Sgeo_: with all due respect, your dad is fucking insane
23:43:04 <alise> "Turn left." <Sgeo's consciousness> I see a turn to the left, WAIT i must pay attention... what's this? turn left? *turns right*
23:43:28 <AnMaster> pikhq, "maybe elsewhere" is enough for me
23:43:37 <ais523> alise: do you know about hazard fixation?
23:43:38 <fizzie> ais523: For the N900, it does have sudo by default, but it's not configured so that the "user" user can execute it. So you install the "gainroot" package so that you can start using sudo. (And the "app manager" installation thing is probably suid-root, yes.)
23:43:42 <pikhq> But apparently not x86_64.
23:43:58 <ais523> if you try really really hard not to bump into something, you're more likely to bump into it than if you were just trying normally
23:44:01 -!- coppro has joined.
23:44:04 <alise> ais523: true
23:44:07 <Sgeo_> o.O RoboZZle has an iPhone version
23:44:10 * Sgeo_ grumbles
23:44:14 <alise> ais523: but listening to a gps doesn't exactly make you a dangerous driver
23:44:44 <ais523> depends on if you concentrate on it rather than the road
23:45:14 <ais523> experience with MarioKart DS shows that driving entirely from a GPS-alike is unreliable even when it shows the location of other cars
23:45:55 <fizzie> ais523: Actually, now that I look at it, the app-manager's not suid-root, but /etc/sudoers has a long list of "user ALL = NOPASSWD: foo", where foo is any sort of command you might need in the normal course of things; including stuff like "/etc/init.d/some-stuff stop" and so.
23:46:18 <alise> Sgeo_: I take it that Sprint isn't even remotely an option?
23:46:50 <Sgeo_> alise, unless Sprint has a contract-free phone
23:46:53 <ais523> fizzie: seems a little dubious
23:46:55 <alise> If it was the HTC EVO 4G might be a consideration, although I don't think it's technically out yet.
23:46:58 <alise> Well, no, Sprint are a network.
23:47:01 <ais523> presumably there are thousands of root exploits in there
23:47:04 <alise> So of course their phones are contract or pay as you go.
23:47:38 -!- kar8nga has quit (Remote host closed the connection).
23:48:01 <alise> Or the HTC Desire. (a "cousin of the nexus one", apparently)
23:48:18 <alise> The Desire has so much in common with the Nexus One that it feels like we've seen it all before. Spec-wise these two Android 2.1 phones have the same processor, 1,400mAh battery, 3.7-inch 800 x 480 AMOLED screen, 5-megapixel autofocus camera and 512MB of ROM, while externally they have very similar CMF (industrial shorthand for "color, material and finish") and weight (4.76 ounces).
23:48:25 <alise> 64 more megs of ram though :P
23:48:41 <alise> it has the htc sense ui though
23:48:45 <alise> which is... prettier
23:48:48 <alise> http://www.blogcdn.com/www.engadget.com/media/2010/03/htcdesiretriohed03302010.jpg
23:49:42 <alise> i'd just get the nexus one
23:49:44 <Sgeo_> I take it that RoboZZle shouldn't be enough of a reason to push me towards iPhone
23:49:51 <alise> it shouldn't :-)
23:49:51 <coppro> it should not
23:49:58 <alise> i am sure it will be ported to android some time
23:50:02 <alise> and besides
23:50:09 <alise> no amount of robozzle can make up for apple's immorality
23:50:14 <coppro> it's true
23:50:18 <alise> i defended the iphone dammit but the latest change is just unacceptable
23:50:29 <alise> I, fanboy of fanboies of the iPhone, even I realise it's out of line
23:50:34 * coppro wants a device that can record his train of thought so that he can pick it up later
23:50:53 <coppro> they've managed to even make me feel bad for working on clang
23:50:58 <ais523> alise: food for thought: iPhone licensing allows GPLv2 software but not GPLv3 software
23:51:22 <alise> coppro: ah, don't let that bother you
23:51:37 <alise> them supporting clang is a good thing no matter what else they do
23:51:37 <coppro> alise: yeah, I won't. It still makes me feel a little bad :(
23:51:48 <alise> say you were in germany in hitler's reign
23:51:48 <Sgeo_> clang?
23:51:56 <coppro> Yeah, I know
23:51:57 <alise> and hitler had a program to feed young orphans -- even if they're jews, or gay, or whatever
23:52:06 <alise> and it was a wild success, feeding tons of people and making them all happylike
23:52:11 <alise> would it be wrong to help this program?
23:52:11 <coppro> Sgeo_: The LLVM C/C++/Obj-C compiler
23:52:18 -!- FireFly has quit (Quit: Leaving).
23:52:21 <alise> Of course, it's not like Apple is anywhere near as bad as hitler :P
23:52:23 <AnMaster> hello? am I still connected?
23:52:28 <Sgeo_> AnMaster, no
23:52:29 <AnMaster> what the hell happened there
23:52:32 <AnMaster> Sgeo_, thanks
23:52:39 <ais523> alise: you'd have to be careful to make sure you were supporting the program rather than the people behind it
23:52:43 <AnMaster> Sgeo_, http://www.internetpulse.net/
23:52:48 <AnMaster> I seems to have been hit by
23:52:49 <alise> ais523: under hitler? that would be dangerous
23:52:49 <AnMaster> that
23:52:50 <ais523> this sort of issue happens with aid programs in corrupt countries
23:52:57 <alise> everyone under hitler supported hitler :-)
23:52:58 <AnMaster> "The server at www.internettrafficreport.com is taking too long to respond."
23:53:00 <AnMaster> still get that
23:53:01 <ais523> alise: exactly
23:53:08 <alise> so at least you could do some good
23:53:12 <AnMaster> half of internet is unreachable from here!
23:53:15 <AnMaster> or so
23:53:20 <coppro> that happens
23:53:29 <ais523> hmm, depeering?
23:53:32 <coppro> probably
23:53:38 <AnMaster> ais523, perhaps
23:53:42 <coppro> it's happened to me
23:53:43 <AnMaster> it is getting somewhat better
23:53:45 <Gregor> Now, to turn that into a political statement./
23:53:48 <AnMaster> freenode timed out before
23:53:53 <AnMaster> but now it works again
23:53:57 <Gregor> <AnMaster_China> Half of the Internet is unreachable from here!
23:53:59 <Gregor> Boo China!
23:54:04 <AnMaster> I guess it got rerouted
23:54:06 <AnMaster> Gregor, har
23:54:20 <AnMaster> ais523, seems they routed around it
23:54:21 <Sgeo_> http://www.youtube.com/watch?v=SnWJ29eNCbY RoboZZle's a ship now?
23:54:34 <AnMaster> internet traffic report up again
23:54:39 <ais523> ah, ok
23:54:47 <ais523> not a depeering, just a problem
23:54:57 <ais523> the whole trick with depeerings is that half the time you /can't/ reroute around them
23:55:01 <ais523> because it would cause too much political strife
23:55:03 <coppro> the tubes were clogged
23:55:13 <ais523> or, at least, people demanding loads of money
23:55:17 <AnMaster> ais523, indeed it isn't completely down
23:55:34 <alise> Though I loathe to quote techcrunch:
23:55:35 <alise> On the downside: all this hardware bling is an energy hog. The screen will self adjust brightness and Google is smart about turning down the processor when its not being used. But Ive found battery life to be woefully brief, even by iPhone standards. Officially the phone has up to 7 hours talk time, 250 hours standby, 5 hours of 3G Internet use, 7 hours of video playback and 20 hours of audio playback. Unofficially, I was able to kill the fully c
23:55:35 <alise> harged battery with 1.5 hours of continuous gameplay (Robo Defense) on the full-brightness screen. Be prepared to keep this phone near a charger at all times. You can easily view whats using the battery, though (the screen is 71% of my current usage), and then adjust the hardware or software usage to maximize battery life.
23:55:45 <alise> Note that full-brightness gameplay for 1.5 hours is unlikely.
23:56:08 <ais523> alise: I do that all the time on the DS
23:56:18 <ais523> so it rather depends on whether you bought your mobile for gaming or not
23:56:30 <ais523> (presumably, some people do that; or maybe they don't)
23:56:35 <alise> ais523: well, yes
23:56:40 <ais523> (still, whatever possessed anyone to invent the N-Gage?)
23:56:46 <AnMaster> hahah :D
23:56:49 <alise> but do you really need it on full brightness all the time?
23:57:00 <AnMaster> `addquote <ais523> (still, whatever possessed anyone to invent the N-Gage?)
23:57:04 <HackEgo> 147|<ais523> (still, whatever possessed anyone to invent the N-Gage?)
23:57:34 <AnMaster> ais523, wonderful quote
23:57:35 <ais523> alise: with the original DS, there are only two brightness settings, full and off
23:57:51 <ais523> and you can't change them except on the startup screen, which you have to powercycle to reach
23:57:59 <alise> I have the original DS
23:58:02 <alise> & proud
23:58:12 <ais523> alise: same, and the touchscreen still worsk
23:58:13 <ais523> *works
23:58:16 <alise> ditto
23:58:19 <alise> but i don't play on it all that much
23:58:26 <ais523> I use it when I can't sleep
23:58:27 <alise> `quote
23:58:29 <HackEgo> 52|<ehird> Apple = Windows.
23:58:33 <alise> ais523: I use laptops for that P
23:58:34 <alise> *:P
23:58:36 <Sgeo_> http://www.appleinsider.com/articles/10/04/11/steve_jobs_defends_apples_changes_to_iphone_developer_agreement.html
23:58:43 <ais523> alise: so do I sometimes, but they tend to make me less inclined to sleep rather than more
23:58:47 <alise> although monday-to-friday i can't do /anything/ when i can't sleep
23:58:52 <alise> `quote
23:58:54 <HackEgo> 25|`quote
23:58:54 <ais523> ouch
23:58:58 <alise> Nice quote.
23:59:04 <ais523> (quote quote)
23:59:25 <alise> `quote
23:59:27 <HackEgo> 75|* ehird disables javascript
23:59:30 <alise> `quote
23:59:31 <HackEgo> 18|<fungot> GregorR-L: i bet only you can prevent forest fires. basically, you know.
23:59:44 <alise> Smokey would be so much better if he said that.
23:59:46 <alise> `quote
23:59:48 <HackEgo> 13|* ehird has joined #lobby <Madelon> hmmm clean me
23:59:51 <alise> `quote
23:59:52 <HackEgo> 124|<Warrigal> I cannot eat meat that isn't flat.
23:59:56 <alise> `quote
23:59:57 <HackEgo> 72|<ehird> ignore me, i'm full of bullshit
←2010-04-10 2010-04-11 2010-04-12→ ↑2010 ↑all