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