00:30:08 -!- ais523 has quit (""Going home"").
00:35:54 -!- sebbu has quit ("je re").
00:41:28 -!- timotiis has quit (Remote closed the connection).
00:43:39 -!- slereah_ has joined.
00:44:38 -!- sebbu has joined.
00:46:52 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
01:12:51 -!- oerjan has quit ("Good night").
01:25:46 -!- calamari has joined.
01:30:16 -!- BMeph69 has changed nick to BMeph.
01:45:33 -!- Tritonio_ has joined.
01:45:41 -!- Tritonio__ has joined.
01:45:49 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)).
01:45:57 -!- Tritonio__ has quit (Read error: 104 (Connection reset by peer)).
01:46:13 -!- Tritonio_ has joined.
02:01:59 -!- RodgerTheGreat has joined.
02:08:12 <Deformative> Ugh, I just realized that if I do in fact make this language, I am going to make my own profiler since it cannot use C calling convention. Sigh.
02:08:40 -!- ehird has quit ("Konversation terminated!").
02:09:23 * Sgeo has learned a LOT about DNS today
02:11:03 <oklofok> today, i pood, ate and coded java
02:11:19 <oklofok> (you figure out the parse tree.)
02:11:35 <Deformative> I assume coding java and pooing are a single process.
02:12:24 <Deformative> Eh, that doesn't make as much sense as it did in my head.
02:13:01 <oklofok> sometimes i take the comp with me to the toilet.
02:14:01 <Deformative> Well I was trying to make a simile between eating poo and coding java.
02:17:50 <oklofok> i've made that multiple times
02:18:29 <Deformative> Except the words came out in senseless babble.
02:18:53 <Deformative> I guess that is the result of spending too much time writing a language spec.
02:19:16 <Deformative> My typing system is turning into a clone of C.
02:19:57 <Deformative> The only additional type I expect is a closure.
02:20:58 <Deformative> But every other aspect of the language is in no way similar to C.
02:25:04 <oklofok> do you considered it esoteric?
02:25:34 <oklofok> eso- is something you add when something is esoteric, -licious is just something you add when something is hot and steamy
02:25:49 <oklofok> the latter can also be a nop, depends on the situation
02:30:50 <Deformative> I am trying to decide if I should even implement closures.
02:31:24 <Deformative> And it isn't that much work to just create a function.
02:38:44 <oklofok> umm, closure = function copies surrounding namespace?
02:38:47 <Sgeo> The US Government uses ZoneEdit?
02:39:46 <oklofok> Deformative: and that is slow because?
02:40:11 <Deformative> You need to stick all the local variables on the heap somewhere.
02:40:14 <oklofok> you just compile that into giving the params explicitly instead of taking them from the surroundings.
02:40:46 <Deformative> Yeah, but you need to malloc every single time you pass a closure.
02:40:57 <Deformative> And in my language they could EASILY become overused.
02:42:25 <Deformative> The user would likely end up creating a closure for the true and false of every single if statement.
02:44:26 <Deformative> Plus it would massively uglify the syntax.
02:45:05 -!- Tritonio_ has quit (Remote closed the connection).
02:45:36 <Deformative> I am also trying to decide to have anonymous functions or not.
02:50:38 <oklofok> anonymous functions are sex
02:50:48 <oklofok> you have them, and people will like you
02:54:43 <Deformative> Should I use <> or [] for function definitions?
02:54:59 <Deformative> I think <> so that i could use [] for arrays.
02:55:35 <Deformative> Even thought vice versa looks better, [] for arrays will conform with all other languages.
03:04:04 <oklofok> <-- --> for oklotalk, -- for most
03:04:49 <oklofok> -- is from haskell, <-- --> is my own invention based on haskell + nopol, but it is also a html comment perhaps
03:05:00 <oklofok> not sure, i've never used comments in my html :)
03:07:18 <Deformative> Well I cannot use <> that is function definition.
03:07:45 <Deformative> I guess I could use /* */ but it is so difficult to type.
03:10:29 <Deformative> Heh, if I could make everything with more than 2 lines of indentation commented.
03:10:37 <Deformative> Because there will never be more than one.
03:13:44 <oklofok> make one indentation comment
03:19:16 <Deformative> Not enough characters on the keyboard, seriously.
03:33:27 <oklofok> that's why they invented tokens
03:53:07 <pikhq> Hmm. ~comments~ would logically be not comments. :p
03:56:05 <lament> "...colorForth can not help but be the one operating system in the world capable of being totally open and at the same time the most quickly understandable by children."
03:56:40 <lament> "...if you realize that this is possibly a once in a life time chance to make computing easier for the entire world in one project..."
03:56:49 <lament> (somebody wants to put colorForth on OLPC)
04:03:59 <lament> it's perhaps the most insane page i've ever seen. http://colorforthray.info/
04:20:42 <RodgerTheGreat> I'm having difficulty understanding why colors are necessary or useful in FORTH.
04:23:29 <RodgerTheGreat> and lament- if that's the most insane page you've ever seen, you should investigate http://www.timecube.com/
05:04:33 <pikhq> That reminds me. . .
05:04:46 <pikhq> cherez: Going to do more of your dramatic readings of Time Cube?
05:06:25 <pikhq> Wow. The Time Cube stuff has even gotten worse recently. . .
05:07:14 <pikhq> The craziness goes up to eleven now.
05:09:11 <Sgeo> the TimeCube page gets updated?
05:10:18 <Sgeo> "Believer is far more EVIL than a False God, for Google
05:10:19 <Sgeo> cut back my Site from 34,000,000 to 4,000,000 in 1 night
05:10:19 <Sgeo> for the above Statement. 1 Day1God exists only as Evil.
05:10:19 <Sgeo> I thought Google was free of such evil bias, predjudice
05:10:19 <Sgeo> and shenanigans that block real truth from being known.
05:10:19 <Sgeo> Once before, Google cut back my site from 89,000,000 to
05:10:21 <Sgeo> 34,000,000 in a single act for something I said, that/s Evil"
05:10:30 <Sgeo> WTF is that supposed to MEAN?
05:10:41 <pikhq> He's now discussing +0- antipodes. . .
05:11:18 <pikhq> http://uncyclopedia.org/wiki/Slime_Cube :D
05:11:39 <pikhq> BTW, a slime cube with a bunch of potions in it? *Dangerous*.
05:19:23 <RodgerTheGreat> I always figured it would digest any potions spilled within, but that could be interesting...
05:20:05 <pikhq> Potions activating at random.
05:24:04 <RodgerTheGreat> knowing my campaigns, a couple random potions are instant, bottled hilarity
05:26:33 <pikhq> Do I *want* to know what that does?
05:26:58 <RodgerTheGreat> a particularly deranged alchemist made most of my players fear potions with odd, misspelled labels like the plague
05:52:45 * pikhq needs to know more of this campaign
05:53:35 <RodgerTheGreat> I ran my D&D games very fast and loose, and there was a lot of comedy and running gags
05:54:25 <RodgerTheGreat> "Melf" was a dangerously inept wizard/alchemist/probably pothead that made the craziest shit
05:55:23 <RodgerTheGreat> sometimes my notes would be just a sheet of paper with "there are some caves, here's a random encounter table and here's a list of the insane magic items the players will find"
05:55:58 <RodgerTheGreat> we could spend hours with them just figuring out what stuff did, fighting some goblins and solving a puzzle room or two
05:57:39 <RodgerTheGreat> Even in the more serious adventures, it wasn't unusual to run across some "Melf's Acid Apples" or a deck of "Stinky Pete's Cards of Fortune"
06:00:09 <RodgerTheGreat> the "bag-O-charisma" was a fun one. Strangle someone with it, and it steals a portion of their CHA, and then transfers it to the next person that dons the bag, temporarily. It took players a while to figure it out, and then caused trouble because nobody recognized the players afterwards until the effects wore off.
06:00:56 <RodgerTheGreat> Fortunately one player, thinking quickly, beat himself in the face with a rock until he was ugly enough for the townspeople to recognize
06:04:56 <RodgerTheGreat> y'know, I think if I could find my old notes to refresh my memory, I could make some pretty funny comics about our exploits back in the day
06:08:13 <pikhq> Of course, you need a few Decks of Everything.
06:08:33 <pikhq> I forget the name of that again. . .
06:08:48 <pikhq> Deck of Many Things.
06:10:21 * pikhq goes off, sticks of Bag of Holding in a Bag of Holding.
06:10:57 <pikhq> Speaking of which. . .
06:11:05 <pikhq> RodgerTheGreat: You should have given out a bag of devouring.
06:12:09 <RodgerTheGreat> One of my players sewed a bag of devouring into his pocket, hilariously slaying several pickpockets
06:13:07 <RodgerTheGreat> and the books make it clear that storing bags of holding or portable holes in themselves or each other will tear a hole in existence and suck shit inside before disappearing
06:13:37 <pikhq> Fun to mess with magic objects.
06:14:41 <RodgerTheGreat> I am *intimately* familiar with all the core rulebooks, particularly magic items. I'm good at memorizing these things, which is why I was a good DM. They're still all up here in my skull.
06:15:10 <RodgerTheGreat> After a year or two I never needed the books at all unless somebody had to roll up a character
06:15:26 <pikhq> Hmm. What's the funniest one you can think of?
06:16:00 <RodgerTheGreat> well, the hand and eye of Vecna aren't exactly funny, but they're interesting
06:16:26 * pikhq is not familiar with the magic items. . .
06:16:35 <RodgerTheGreat> but you can't just sling those around willy nilly, because they're supposedly unique
06:16:36 <pikhq> Didn't come up much in campaigns I've played. ;)
06:17:14 <RodgerTheGreat> I made loads of Vorpal quarterstaffs and intelligent +2 hafling skiprocks and goofy stuff like that
06:20:19 <RodgerTheGreat> hell, I could run an adventure over skype for old times sake someday if you can get a decent group together
06:22:15 <pikhq> I might have a copy of 2nd around here, though.
06:22:20 <RodgerTheGreat> good, good. Would you be up for trying 1st edition sometime?
06:23:00 <pikhq> Sure, I'd be up for trying it.
06:23:01 <RodgerTheGreat> I've always wanted to run an adventure for it, and I have a handful of classic modules I could snazz up
06:23:04 <pikhq> I lack rulebooks, though.
06:23:35 <RodgerTheGreat> I can scan a couple pieces, explain the rest and preroll characters for people
06:23:49 <RodgerTheGreat> I even have a table of pregenerated characters for this purpose
06:24:12 <RodgerTheGreat> Everyone will probably get 2 characters because they'll die like flies
06:25:08 <RodgerTheGreat> example: in 1st edition, if you're disabling a poisoned lock and miss the DC, it stabs you. Fort save to resist poison. Fail the DC there, and your character is dead. period. stats are irrelevant.
06:26:21 <pikhq> I wanna try that trick with the bag of devouring, though. . .
06:26:33 <pikhq> Something more unique would be nice, though.
06:26:36 <RodgerTheGreat> in 1st edition a wizard's starting HP is lower than an average housecat. There is no difference between money and XP. Everything, EVERYTHING is fucking hardcore.
06:27:38 <RodgerTheGreat> Melf's Acid apples are cool. Bite into one and it'll dissolve most of your head. They're best used as grenade-like things once you know what they actually are. Good for making holes in castle walls
06:28:34 <RodgerTheGreat> I think the damage was like 2d10+5+ 1d4 CHA damage if you ate it.
06:30:29 * pikhq discovers an online copy of the d20 ruleset. w00ts.
06:30:51 <RodgerTheGreat> (and yes, I know there's a difference between CHA and Rifts-style P.B.- you're less persuasive and convincing when you don't have a lower jaw.)
06:31:21 <pikhq> A Cloak of Poisonousness. . .
06:31:31 <pikhq> That could actually be used as a deadly weapon.
06:31:36 <RodgerTheGreat> did I mention that aside from encyclopedic knowledge of D&D I know about 6 other rulesets as well?
06:31:51 <pikhq> (put it on. Unless you succeed a fortitude check of 28, you die.)
06:32:45 <RodgerTheGreat> This all contributes to why I play with out books, and make up most stuff on the fly- I know how everything works, and I know all kinds of ways it *could* work.
06:33:45 <RodgerTheGreat> eventually, you realize the books are just there to point you in the direction, and if you take enough of a running jump on your own, you can learn to fly.
06:35:28 <RodgerTheGreat> it's like the DM/GM equivalent of becoming "the one". The rules of a roleplaying game are just like the rules of a computer system- some can be bent. Others, broken.
06:36:00 <pikhq> Most of the time, I'd play using nothing but my character sheet. . . The DM would look things up from time to time, but most of the time, it was just sheer amusement. . .
06:36:15 * pikhq remembers the final day of his first campaign. . . A giant chicken ended that. XD
06:37:25 <pikhq> The DM stuck a rubber chicken and some miniatures on the table and said 'There. You're fighting that.'
06:37:29 <pikhq> 'I summon a giant bee.'
06:37:41 <RodgerTheGreat> A good DM knows the only rules necessary to play are the following: 1) Be consistent. 2) Be fair. 3) You want the players to succeed, but they don't have to know that. 4) keep 'em guessing.
06:37:44 * pikhq <3 druids, BTW. . .
06:38:14 <RodgerTheGreat> follow those principles and you can have a grand time doing *anything*
06:38:18 <pikhq> Another campaign ended in apocalypse. For the hell of it, he was rolling an apocalypse check every time we did something really, really unlikely.
06:38:23 <pikhq> (3 20s in a row, for example.)
06:39:49 <RodgerTheGreat> best moment for me as a player EVER "I rolled a 20! I succeeded" "No, you didn't" "What if he rolls a nat 20 too?" "Yeah, like that's gonna happen" (rolls a nat 20 without blinking) "... fuck you guys. It explodes."
06:40:38 <pikhq> "I rolled a 20. Thrice." "That. . . Can't die. . ."
06:41:11 <RodgerTheGreat> new galleries on my site for games (http://rodger.nonlogic.org/games.php) and comics (http://rodger.nonlogic.org/comics.php), btw
06:41:13 <pikhq> "Fine. It dies. You see it again, behind you."
06:42:07 <RodgerTheGreat> "I hide and make the sounds of a babbling brook to throw the owlbears off my trail" (critical failure) "BAAAASSS! BAAASSS!"
06:44:24 <RodgerTheGreat> and then there was the time my character used weighted dice and some insane bluff checks to win EVERYTHING the guards to this fortress OWNED while the other characters snuck in and locked them out.
06:44:51 <pikhq> http://rodger.nonlogic.org/comics/Comic019.png Brilliant.
06:45:27 <RodgerTheGreat> "halt who goes there" "Flashbang, gnomish smith of great renown. Up for a game of chance? I have *shiny* things..."
06:47:50 <pikhq> http://rodger.nonlogic.org/comics/Comic011.png Sorry, but I won.
06:47:53 <pikhq> I'll have to in a bit.
06:48:35 <pikhq> I think The Game just became more positive.
06:49:30 <RodgerTheGreat> I think ryan just has a less rigorous strain of the virus- mine is pretty explicit about what constitutes a win condition.
06:49:54 <RodgerTheGreat> "A STRANGE GAME; THE ONLY WINNING MOVE IS NOT TO PLAY. *klick*"
06:50:57 <pikhq> Because he must be executed.
06:51:10 <pikhq> Nice 'weekly' schedule, no?
06:53:05 <RodgerTheGreat> I gather you're starting to take my point of view on the matter
06:53:28 <pikhq> It was one thing when he didn't update during the flu and moving. . .
06:53:40 <RodgerTheGreat> "If you do a strip for a living, MOTHERFUCKING TREAT YOUR RELEASE SCHEDULE AS MORE THAN A VAGUE SUGGESTION"
06:53:46 <pikhq> But god dammit, it's halfway through March, and we've had one update in the past two weeks.
06:55:00 <RodgerTheGreat> at that rate, 6 strips per YEAR. Dresden Codak is well done, but I could draw something that well blindfolded if I had two months in which to make it.
06:55:29 <pikhq> http://rodger.nonlogic.org/comics/Comic001.png
06:55:53 <pikhq> I'll need to stick that one on my wall or something.
07:00:22 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
07:07:31 -!- calamari has quit ("Leaving").
07:14:42 <RodgerTheGreat> feel free to download the source and fiddle. It's all WTFPLed
07:34:41 -!- RodgerTheGreat has quit.
07:47:40 -!- BMeph has quit ("calls it a night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:14:24 -!- RedDak has joined.
09:37:24 -!- Corun has quit ("This computer has gone to sleep").
10:20:03 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
10:25:04 -!- RedDak has joined.
11:32:46 -!- marshmallows has joined.
13:14:04 -!- slereah_ has quit (Remote closed the connection).
13:14:31 -!- Slereah has joined.
13:21:33 <AnMaster> it's mentioned in some befunge fingerprint specs I'm trying to implement, but I got no idea what it is
13:26:16 <AnMaster> C ('bracelet') pops three vectors off the stack and performs a low-order copy of Funge-Space.
13:30:49 <Deewiant> IIRC the way I interpreted that is start from the end, not the beginning, or vice versa
13:31:00 <Deewiant> i.e. go from top left to bottom right versus bottom right to top left
14:04:16 <AnMaster> ah so not a high order byte copy?
14:08:03 -!- RodgerTheGreat has joined.
14:08:33 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
14:09:18 -!- bsmntbombdood has joined.
14:11:16 <Deewiant> AnMaster: if I recall correctly, !Befunge does it the same way - or at least tries to, the mycology test fails
14:12:02 <AnMaster> Deewiant, you need to update that chart, try my last version, it got concurrency
14:12:16 <AnMaster> Deewiant, pretty fast still with my super-optimize script
14:12:29 <AnMaster> no idea if you *want* to see it
14:13:09 <AnMaster> Deewiant, http://rafb.net/p/ipoHrq23.html
14:13:18 <AnMaster> need to be run from top checkout dir
14:13:25 <AnMaster> ie, out of tree builds = not supported
14:14:12 <AnMaster> Deewiant, also skipping GC = saves about 0.01 seconds or so
14:14:26 * AnMaster is down around 0.077 here so :D
14:15:20 <AnMaster> Deewiant, anyway what do you think? try adding your own -march and such in CHOSTFLAGS
14:15:35 <AnMaster> I want to know how well it performs with that
14:15:47 <AnMaster> Deewiant, yes but I want to see how fast I can get it!
14:16:04 <Deewiant> you haven't compared startup times yet? i.e. just replace the first char of mycology with @
14:16:06 <AnMaster> Deewiant, oh and you may want to add -DCONCURRENT_FUNGE to DEFINES variable
14:16:17 <AnMaster> Deewiant, right, I'll test that
14:17:03 * AnMaster ponders optimizing if it can be determined that part of the program won't get loaded, ie, if first char is @ just quit :D
14:18:03 <AnMaster> Deewiant, hrrm, looks like loading takes most of the time
14:18:40 <Deewiant> the program is completely IO bound and you're optimizing CPU usage like crazy :-)
14:19:06 <AnMaster> Deewiant, well without my optimizing it wouldn't be IO bound
14:19:19 * AnMaster goes to look at how to make loading faster
14:19:41 <Deewiant> if a program spends 90% of its time doing IO it's IO bound alright ;-)
14:20:00 <AnMaster> Deewiant, because in CCBI the difference is much larger
14:20:28 <AnMaster> real 0m0.188s for ./ccbi --disable-fprints ~/src/cfunge08/mycology/mycology.b98 > /dev/null
14:20:35 <Deewiant> and keep in mind that CCBI is always doing IO during mycology as well :-)
14:21:29 <AnMaster> Deewiant, well notice that I got it down from around 0.150 to 0.070 with my cpu optimizing, with -O0 -ggdb3 it takes around 0.500
14:21:54 <AnMaster> Deewiant, no, not the very last, will download last
14:22:06 <AnMaster> this one had the typo in --help
14:22:11 <Deewiant> so we've got a program that used to take 0.2 seconds to run now takes 0.1 seconds to run, and it's doing IO for 70% of that :-)
14:22:23 <AnMaster> Deewiant, for what is left yes
14:22:43 <Deewiant> I don't know, optimizing such just seems like so much overkill :-)
14:22:53 <Deewiant> I'd go optimize bashfunge instead
14:23:12 <AnMaster> Deewiant, bah, it would fail at doing x
14:23:57 <AnMaster> Deewiant, the last ccbi zip file from your site is slower
14:24:00 <AnMaster> $ time ./ccbi --disable-fprints ~/src/cfunge08/mycology/mycology.b98 > /dev/null
14:24:14 -!- timotiis has joined.
14:24:29 <Deewiant> I don't know, it's about 50% faster for me :-)
14:24:42 <Deewiant> hence we see that optimizations are once again a bit... dubious
14:24:49 <AnMaster> Deewiant, I downloaded the last ccbi_linux.zip
14:24:55 <AnMaster> Deewiant, not if you do profiling!
14:25:17 <Deewiant> that took the time for funge-space access down by 30% or so
14:25:41 <AnMaster> Deewiant, yes indeed, changing to not pass fspace pointer around helped for me too
14:25:56 <AnMaster> and it wouldn't be needed without TRDS I suspect
14:26:51 <AnMaster> Deewiant, if I profile for a mycology with a @ at the start I can get time down to less than 0.06 seconds XD
14:27:21 <Deewiant> of course, what I don't do is profile-guided optimization. :-P
14:28:25 <AnMaster> I got an idea at least, hm can you get the size of a file without using stat *looks at man pages*
14:28:47 <AnMaster> Deewiant, what I'm thinking about is doing some optimizing of initial allocation size
14:28:58 <AnMaster> to select maybe 1.25 * program size
14:29:15 <AnMaster> instead of hard coded defaults
14:34:34 -!- oerjan has joined.
14:54:57 <AnMaster> Deewiant, it looks, according to gprof, like the bottle neck is inserting into hash table
14:55:43 <Deewiant> or admit you're at the limit :-P
14:56:06 <AnMaster> Deewiant, nah, current hash library I selected because it was 1) lgpl 2) small 3) easy to use
14:56:34 <AnMaster> I've seen better that are 1) custom GPL compatible 2) large 3) harder to use
14:57:04 <AnMaster> http://www.sunrisetel.net/software/devtools/sunrise-data-dictionary.shtml <-- going to investigate that one
14:57:30 <AnMaster> Deewiant, anyway I can speed up current hash library a bit
14:57:41 <AnMaster> by hard coding it to handle FUNGEDATATYPE
14:57:51 <AnMaster> instead of handling pointers to data
14:58:37 <Deewiant> I'm not going to say anything, I'm just going to sit here and laugh at your desperate attempts to squeeze every last bit of performance from a Befunge interpreter :-D
14:58:39 <AnMaster> Deewiant, also it use a function pointer to a hash function, hard coding it to use one of the hash functions instead would also help
14:59:08 <AnMaster> Deewiant, it's just a matter of seeing "how far can I take this"
14:59:28 <AnMaster> Deewiant, it looks like most code in mycology only executes once, right?
15:01:25 <AnMaster> Deewiant, looks like gprof works sub-optimally on binaries with much inlining hrrm
15:05:17 <AnMaster> Deewiant, without inlineing I see it is "search_in_bucket" private function of hash table that is slowest
15:10:05 <Deewiant> here a GC function is the one that takes most time
15:10:23 <Deewiant> AnMaster: what style of GC is the boehm one? generational, mark-and-sweep, what?
15:12:04 <AnMaster> Deewiant, anyway that was a build without GC I tried to check what was going on in hash
15:12:21 <Deewiant> looks like it does some generational collection as well
15:12:34 <AnMaster> the search_in_bucket takes 80% of the time of running when mycology starts with a @
15:12:48 <AnMaster> and it already looks quite optimized
15:13:19 <Deewiant> here gc.mark takes 30%, followed by input, followed by hashing, followed by input, followed by gc.fullCollect, followed by gc_calloc
15:13:39 -!- slereah_ has joined.
15:13:45 <AnMaster> Deewiant, anyway I did LEAK_MODE to check without gc
15:13:51 <Deewiant> AnMaster: D always initializes all variables
15:14:03 <Deewiant> might cause slowdown somewhere with arrays, can't be bothered to find where
15:14:06 <AnMaster> Deewiant, aha, well I think boehm does too
15:14:54 <Deewiant> the difference is that where you do int[40] x; D also does memset(&x, 0, 40 * int.sizeof); or something :-)
15:14:54 <AnMaster> at least you can safely do: #define calloc(x,y) GC_MALLOC(x) * (y))
15:15:19 <Deewiant> but I don't really use static arrays much anyway
15:15:34 <AnMaster> static arrays would not be initialized would they?
15:15:46 <AnMaster> nor ones allocated on the stack, right?
15:15:56 <Deewiant> everything is initialized to something.
15:16:22 <Deewiant> C initializes nothing implicitly.
15:16:56 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
15:16:59 <AnMaster> Deewiant, that still doesn't explain why an array on stack ended up as { 0, 0, 0, 0 } without initializing heh
15:17:20 -!- oklofok has quit (No route to host).
15:17:41 <AnMaster> Deewiant, probably, anyway I filled it just one line after so didn't matter, but gdb told me every time I hit it that it was that
15:19:18 * AnMaster thinks DESCRIPTION and RETURN VALUE of man memcmp are somewhat redundant, telling the same info
15:20:02 <AnMaster> aha, gcc does a __builtin__ for memcmp, explains why that instruction took so much
15:21:19 <AnMaster> Deewiant, btw kprof is very nice
15:22:03 <AnMaster> Deewiant, and it turns out according to it, the real problem isn't loading when running without @, but getting from hash
15:23:58 <AnMaster> Deewiant, of the 0.8 seconds to run without the @, about 0.4 is spent searching in hash
15:24:28 <AnMaster> and of course insert on loading program needs to look up too
15:33:56 -!- slereah__ has joined.
15:40:31 -!- oklofok has joined.
15:40:50 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
15:44:50 <AnMaster> Deewiant, for now I'm not going to try to optimize hash, but the way it is coded it should be easy to replace with another hash library later
15:53:53 -!- faxathisia has joined.
15:54:51 -!- marshmallows has quit (Nick collision from services.).
15:55:03 -!- faxathisia has changed nick to marshmallows.
16:00:37 -!- Slereah has joined.
16:03:30 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
16:18:14 <Deformative> Should I have whitespace separate type and var name the way C does?
16:18:42 <Deformative> That is the only relevant whitespace in my whole language if I do.
16:19:49 <SimonRC> Deformative: how about a colon
16:20:03 <Deformative> Uhm, there is no other languages that have the same syntax as the one I am designing.
16:20:24 <SimonRC> "var : type" is a common syntax for variable types
16:20:51 <marshmallows> sigh, I still have no idea what the language looks like.....
16:21:07 <SimonRC> It is the formal one, as well as the one found in Haskell, Pascal, ML-likes, etc
16:21:36 <marshmallows> I don't think any of those languages does that..
16:22:08 <marshmallows> haskell uses ::, Pascal uses whitespace (sort of like C), and ML don't have explicit type annotation....?
16:22:31 <Deformative> functionName<..., type arg, type arg> continuation(..., arg, arg)
16:22:36 <SimonRC> things like "global foo : int"
16:22:46 <Deformative> That is the current syntax, and I don't really like it.
16:23:16 <marshmallows> ok yeah get rid of the <> and do it like pascal
16:24:12 <SimonRC> and Haskell and ML-likes just took the two alternatives to the dilemma of : or :: for cons and : or :: for type-annotation
16:25:27 <Deformative> I would rather use <> for arrays and [] for function definitions, but I figured it would be better to follow the conventions of C and such.
16:31:51 <SimonRC> why not use -> for array indexing?
16:32:12 <SimonRC> or >>, or !!, or !, or } or some other symbol
16:32:24 <SimonRC> All of those are from actual languages
16:32:47 <Deformative> They are ugly, heh. And i am using {} for structures/
16:33:09 <SimonRC> }, or maybe it is {, is in J and K
16:33:35 <Deewiant> I was thinking of esoteric languages and almost hit the mark ;-)
16:34:09 <SimonRC> !! and ! are or course from Haskell, and I forget where -> is from
16:37:55 <Deformative> So yeah, <> looks somewhat ugly, but I think I will use it.
16:43:24 <SimonRC> -> and --> as indexing operators are out of Inform
16:43:42 <SimonRC> -> is byte indexing and --> is word indexing
16:45:17 <Deewiant> there's plain brackets, table(idx), too
16:51:51 <AnMaster> Deewiant, I think I'm close to the limit of speed with current design yes
16:52:02 <AnMaster> so I'll concentrate on features instead
16:52:36 <AnMaster> Deewiant, oh and I do have some idea for loading faster, the problem is the actual IO part isn't the slow bit, it is the hash table lookup that is
16:53:02 <AnMaster> Deewiant, btw, anyone made some sort of coverage analysis for befunge?
16:53:11 <Deewiant> all time is basically dominated for hash table + GC
16:53:50 <AnMaster> Deewiant, as in gcov style, shows how many time each line is executed, for befunge that would be instruction not line of course
16:54:28 <Deewiant> I could do that right now by just compiling with -cov and running :-P
16:54:34 <AnMaster> Deewiant, I plan to use gcov on my source to see how much of it mycology actually tests
16:54:48 <SimonRC> Deformative: the same syntax for function calls and array indexing is fine.
16:54:54 <AnMaster> Deewiant, but I mean actual coverage on the befunge program itself
16:55:16 <AnMaster> Deewiant, as in see how much of mycology is executed in CCBI for example
16:55:22 <Deewiant> AnMaster: you mean not count how many times # is called, but how many times a particular # is called
16:55:47 -!- Tritonio_ has joined.
16:55:50 <Deewiant> basically easy to do by running your trace mode, for instance
16:55:53 <SimonRC> After all, an array is just a function from the index to a mutable cell
16:55:56 <Deewiant> and then just use a program which counts that
16:57:12 <Deewiant> AnMaster: have you run the Fungus Befunge IDE?
16:57:41 <Deewiant> AnMaster: it has a cool "show path that IP travelled" kind of feature
16:57:55 <Deewiant> it draws lines on top of the befunge program to show where the IP went
16:58:06 <AnMaster> by the way it seems CRC32 hash is faster than one-at-a-time hash, hm....
16:58:19 <SimonRC> can it draw lines over all the boundaries that the IP didn't cross?
16:58:24 <AnMaster> Deewiant, very nice, except for mycology fingerprints it would look like a mess
16:58:27 <SimonRC> that is more comprehensible
16:58:29 <AnMaster> as you use common loading code
16:58:30 <Deewiant> I was thinking of implementing something like that for CCBI, and was thinking even of a protocol so that you could map any GUI onto it
16:58:47 <Deewiant> the same line is just drawn a bunch of times
16:58:59 <Deewiant> since it's always entered from the same direction etc.
16:59:11 <AnMaster> Deewiant, well yes should be useful for coverage analysis
16:59:23 <AnMaster> however, how does it show the line over say: #v r
16:59:55 <Deewiant> I guess I could upload a screenie of what it does with the parts of Mycology that it can handle
16:59:58 <SimonRC> when annotating Hunt The Wumpus, I found that lines between code to show where the IP didn't go were much easier to read than lines the showed where it did go
17:00:00 <AnMaster> Deewiant, hm fungus site gone?
17:00:03 <Deewiant> it doesn't look /that/ great but it's handy
17:00:18 <AnMaster> Deewiant, and only a windows binary on your site :(
17:00:20 <Deewiant> AnMaster: yeah, only the web archive page exists
17:00:26 <Deewiant> and only a windows binary was ever releaased
17:00:40 <Deewiant> like I say, The only closed-source Befunge interpreter I’ve come across.
17:01:01 <AnMaster> Deewiant, upload screenshot somewhere, say omploader or such a picture pastebin
17:01:08 -!- Corun has joined.
17:02:18 <AnMaster> Deewiant, anyway when do you plan to update your mycology results page?
17:03:39 <AnMaster> Deewiant, you used some script to generate that table?
17:04:34 <AnMaster> ah, was going to ask you to send them over so I can have a look, but if it is haskell forget it
17:05:08 <Deewiant> http://users.tkk.fi/~mniemenm/fungus_running.png and http://users.tkk.fi/~mniemenm/fungus_end.png
17:05:14 <AnMaster> I mean, I don't know D, but if I read your D code I can often guess what it is trying to do, same for C++, but well with haskell it is just weird
17:05:17 <Deewiant> like said, it's nothing special
17:05:34 <AnMaster> Deewiant, oh, I was hoping for some opengl stuff with arrows and such
17:05:57 <Deewiant> hence why I was thinking of some kind of standard-ish protocol
17:06:23 <AnMaster> Deewiant, yes if you make one I'll be sure to implement it
17:06:39 <AnMaster> Deewiant, something over unix sockets maybe?
17:06:42 <Deewiant> i.e. interpreter outputs "IP with ID foo and mode bar is at pos x,y with delta a,b and offset f,g" or whatever and then a frontend can draw stuff given that
17:07:05 <Deewiant> doesn't matter really, but ideally text-based
17:07:13 <AnMaster> Deewiant, I'd prefer a more compact and easier to parse for a program format
17:07:22 <Deewiant> well, of course not literally like that
17:08:07 <AnMaster> IP=5;MODE=STR;POSX=5;POSY=7;DELTAX ....
17:08:29 <Deewiant> which is why something like pos={5,7} would be better
17:08:53 <SimonRC> fscanf(sock, "%d %d %d %d %d %d %d %d", &id, &mode, etc etc etc
17:09:13 <AnMaster> Deewiant, but please make it easy to parse with scanf or such, and single line for each to parse
17:09:17 <Deewiant> the trick is how to handle stuff like mode and fingerprints, and what kind of all info is needed
17:09:45 <SimonRC> maybe indent following lines with whitespace?
17:09:52 <AnMaster> Deewiant, for mode you could do some string constants, say CODE,STR for the two standard ones, and some more
17:10:07 <AnMaster> Deewiant, support for transmitting TRDS info would NOT be needed
17:10:17 <Deewiant> I was just about to say what about TRDS :-D
17:10:20 <SimonRC> so you have an ID, pos, delta, and other fixed stuff, then an indented list of properties
17:10:31 <AnMaster> Deewiant, it's horrible, and quite pointless
17:10:37 <Deewiant> it seems like we're rapidly moving towards JSON/sexps ;-)
17:11:01 * AnMaster is a emacs user and is used to elisp
17:11:10 <AnMaster> so I feel at home with S-Expressions
17:11:16 <Deewiant> TRDS would be pretty easy to support actually
17:11:33 <AnMaster> Deewiant, I even wrote some code in C# to seralize .NET classes to S-Expressions
17:11:37 <Deewiant> all that happens is all the IPs suddenly move to a different place
17:11:43 <AnMaster> or rather I wrote a substantial part of that code
17:11:58 <AnMaster> the actual parser and tokenizer someone else coded
17:12:09 <SimonRC> TODO: prolog in befunge via TRDS
17:12:27 <AnMaster> SimonRC, ERR_TRDS_TOO_STUPID_NOT_SUPPORTED
17:12:34 <SimonRC> actually TRDS allows IPs to meet their younger selves
17:12:51 <AnMaster> I don't get what TRDS stands for
17:12:54 <SimonRC> AnMaster: no, very mnuemonic
17:12:58 <Deewiant> http://en.wikipedia.org/wiki/TARDIS
17:13:18 <AnMaster> Deewiant, ah, never watched that TV series
17:23:43 <Deewiant> SimonRC: in the RC/Funge-98 readme
17:25:17 <AnMaster> Deewiant, I find it odd some even fail at sainty.bf
17:25:37 <AnMaster> http://users.tkk.fi/~mniemenm/befunge/mycology-output/sanity/!Befunge.txt
17:25:53 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
17:26:00 <Deewiant> AnMaster: "*** Exited normally"
17:26:08 -!- Slereah has joined.
17:26:12 <AnMaster> Deewiant, ah so it shows that at the end?
17:26:24 <Deewiant> as you can see right there :-P
17:26:32 <Deewiant> you can always compare to the expected
17:26:47 <AnMaster> err but why is CCBI marked good, output doesn't match
17:26:55 <AnMaster> http://users.tkk.fi/~mniemenm/befunge/mycology-output/sanity/CCBI.txt
17:27:13 <AnMaster> Deewiant, ah for me it is "enable warnings by -W"
17:27:49 <Deewiant> that's why it says for !Befunge "irremovable exit code output" - it can't be removed
17:28:00 <AnMaster> Deewiant, hm does http://users.tkk.fi/~mniemenm/befunge/mycology-output/sanity/FBBI.txt contain something strange? I get a download box instead of it getting show inside firefox like the rest of the files
17:28:24 <Deewiant> yeah, apparently firefox or the web server don't like txt files that contain null bytes
17:28:53 <Deewiant> or not null bytes, but control characters
17:29:43 <AnMaster> Deewiant, "# < jumps over <" in http://users.tkk.fi/~mniemenm/befunge/mycology-output/befunge93/BeQunge.txt why did that cause END?
17:29:50 <AnMaster> or did it crash just after that?
17:30:37 <Deewiant> and even if there were, I wouldn't bother to find out
17:31:02 <AnMaster> Deewiant, ah but for !Befunge you would bother to check I suspect? ;P
17:31:20 <Deewiant> as in, mycology quits afterward
17:31:32 <Deewiant> AnMaster: yeah, if the interpreter is interesting in its own right, sure
17:31:39 <Deewiant> but if it's just another crap implementation then no :-P
17:31:46 <AnMaster> "BAD: 3k< takes more than two ticks" <-- hm is there no matching GOOD for that one?
17:32:30 * SimonRC realises something important about befunge...
17:32:39 <AnMaster> that it is a bloated language?
17:32:46 <SimonRC> You can't add new operators that look like the built-in ones
17:33:10 <AnMaster> SimonRC, indeed, all chars between ASCII 32 and 127 are in use
17:33:24 <SimonRC> In things like C, most stuff is in functions, and your functions look like the builtins
17:33:35 <AnMaster> Deewiant, sure? isn't 127 == ~?
17:34:10 <AnMaster> so what control char is 127 then?
17:34:19 <Slereah> On my ASCII chart, it's some sort of house shape
17:34:25 <SimonRC> it is often typed as Ctrl-?
17:34:45 <AnMaster> Deewiant, btw, the limit on chars in input is a bit odd for befunge
17:35:03 <SimonRC> it is one of the two common bindings for backspadem, the other being ^H (BS)
17:35:09 <AnMaster> "(and greater than 255 on systems where characters are stored in multiple bytes; but no greater
17:35:28 <AnMaster> Deewiant, does that mean I have to handle chars greater than 255? Ie, handle utf8
17:35:35 <AnMaster> currently I read files in assuming 8 bit chars
17:35:44 <Deewiant> I originally read that so that you do
17:35:53 <Deewiant> and made the mistake of assuming UTF-8 on input
17:36:02 <SimonRC> hmm, on systems where there is a difference, are befunge files text or binary?
17:36:03 <Deewiant> but note that it talks about /systems/ where characters are stored in multiple bytes
17:36:12 <Deewiant> not about text encodings or anything like that
17:36:14 <AnMaster> Deewiant, what such systems exist?
17:36:18 <SimonRC> it makes a difference if you have (e.g.) Chinese strings as UTF-8
17:36:46 <Deewiant> if you read further it's clear what is meant
17:36:48 <Deewiant> That is to say, character #417 may look like a squiggle on system Foo and a happy face on system Bar, but the meaning is always the same to Funge, 'character #417', regardless of what it looks like.
17:37:32 <AnMaster> Deewiant, also utf8 should work fine, say a char consists of {125 123}, assuming it is loaded on stack that way and the terminal interpreters it as such an encoding, it will work fine
17:37:33 <Deewiant> so if you get 0xeb 0xbb 0xbf on input you're not to read it as char #65534
17:37:53 <AnMaster> Deewiant, however that will depend on if you travel > or < or other direction
17:37:57 <Deewiant> AnMaster: yes, just plain reading/writing in basic ways works if done correctly.
17:38:15 <Deewiant> AnMaster: just as getting GOOD or DOOG depends on which dir you're moving in. :-)
17:38:33 <Deewiant> yes, if you assume your editor's display is correct in that sense
17:38:35 <AnMaster> and if you do say "ö" you would get different results depending on what way you travel
17:38:48 <AnMaster> and it would be a PITA to write in reverse
17:39:55 <AnMaster> Deewiant, however it would break say, ip going down over line later on it
17:39:57 <Deewiant> or, if you've got the luxury of a working j or x
17:40:09 <SimonRC> personally, I would store each unicode code point in one cell
17:40:18 <Deewiant> AnMaster: like said, if you think your editor display is correct then you're mistaken.
17:40:45 <AnMaster> <Deewiant> or, if you've got the luxury of a working j or x <-- yes but what is wrong with ; ?
17:40:49 <Deewiant> SimonRC: yeah, such a mode could easily be implemented, but it'd depend on interpreter support.
17:40:57 <Deewiant> AnMaster: if you've got more ;s
17:41:05 <Deewiant> ; astusaddrfasdfasdfa ;#"ö";# < asdfsadfasd a;
17:41:20 <AnMaster> Deewiant, I almost only use ; for comments
17:41:40 <Deewiant> the few places where I comment I just put it next to the code :-)
17:41:41 <SimonRC> how do # and space interact?
17:41:48 <AnMaster> btw, does mycology test wrapping within ; mode?
17:41:51 <Deewiant> SimonRC: we just talked about it above, # jumps over space
17:42:00 <AnMaster> SimonRC, jump over, ie, doing nothing either way
17:42:10 <Deewiant> SimonRC: many interpreters get that wrong and instead jump over the next instruction after spaces
17:42:24 <Deewiant> AnMaster: probably not explicitly, but it uses it
17:54:04 -!- RedDak has quit ("Killed (NickServ (Comando GHOST usato da DIO))").
17:54:26 -!- RedDak has joined.
18:02:27 <AnMaster> SimonRC, it was just because I was in a discussion so it would seem odd if I just left
18:02:34 <AnMaster> otherwise I wouldn't mention it :P
18:11:29 -!- RedDak has quit (Remote closed the connection).
18:17:41 <AnMaster> Deewiant, btw mycology fails at testing greatest point of y well, I had two errors in it, that, for mycology's case, canceled out each other
18:17:57 <AnMaster> Deewiant, 1) I pushed width and breath not absolute max point
18:18:14 <AnMaster> and least point in mycology at that point is -1,-1
18:18:27 <AnMaster> result: my error did not show up in mycology
18:19:21 <Deewiant> well, if I make the least point -1,-2 somebody will have an off by one and off by two error ;-)
18:19:41 <AnMaster> Deewiant, better check once, write to a new negative value and check again
18:19:50 -!- slereah_ has joined.
18:19:59 <Deewiant> yeah, right, you fit that in there :-P
18:20:01 <AnMaster> Deewiant, but at least in C off by one are rather common when working with array
18:20:02 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
18:20:25 <AnMaster> ie, brain thinks in 1-indexed, computer doesn't
18:20:38 <AnMaster> off by two or so is not as common
18:20:52 <AnMaster> Deewiant, as for fitting in: I prefer PIC befunge
18:21:21 <Deewiant> but I started it out like that and hence it became that
18:21:28 <Deewiant> but I'm not going to rewrite it either :-P
18:21:47 <AnMaster> actually is it harder to write PIC in befunge than absolute code?
18:21:50 <Deewiant> like I said, test {}gp first and then use {} to keep stuff PIC
18:22:05 <AnMaster> maybe some fingerprint to help that?
18:22:05 <Deewiant> but if you have a working { and }, not much
18:22:20 <Deewiant> no need, { and } make it as easy as can be
18:22:22 <AnMaster> SUBR is actually worse for PIC
18:23:25 <AnMaster> yeah, but I would prefer a mode for finding such functions that was position independent
18:23:45 <AnMaster> maybe register function entry point, and then jump to that name or something?
18:24:23 <AnMaster> actually there is one thing I'd like to add in a fingerprint, just because it would so totally NOT fit with funge
18:25:13 <AnMaster> Deewiant, hm but REFC got a problem: you can't know what it returns
18:25:27 <AnMaster> so if you could register something under a given index
18:25:40 <AnMaster> because then you could hard code what entries to look up
18:25:58 <AnMaster> Deewiant, oh you mean REFC = registers?
18:26:07 <AnMaster> or REFC = register entry points?
18:26:19 <Deewiant> REFC = variables, which is essentially equivalent to registers
18:27:58 <AnMaster> I would prefer something like A = push into %bax, B = Push into %bbx, C = Push into %bcx, maybe 2-3 registers more, then have operations that multiply those and such
18:28:17 <AnMaster> just to make it feel like registers :)
18:28:41 <AnMaster> as befunge is a stack based language it would feel so totally wrong :D
18:30:17 <SimonRC> is there a goot way to do a goto in befunge?
18:30:35 <AnMaster> SimonRC, x, relative addressing to
18:30:45 <AnMaster> or there is J from SUBR fingerprint
18:30:54 <AnMaster> that is jump to absolute coordinates
18:31:16 <AnMaster> so you got to reset delta after you jump
18:31:25 <SimonRC> just about to say that myself
18:31:59 <AnMaster> SimonRC, however, for "jump and go east", if you can depend on SUBR fingerprint, then I'd recommend J
18:32:14 <AnMaster> avoid depending on fingerprints if you can IMO
18:32:43 <SimonRC> darn, Forth rather relies on address = 1 cell
18:32:46 <Deewiant> which is like x, but it moves once and doesn't change the delta
18:32:54 -!- oerjan has quit ("leaving").
18:33:09 <AnMaster> actually it does, but then it changes it back again (in my implementation, or it breaks at wrapping)
18:33:32 <Deewiant> only the semantics matter, not how it's implemented :-)
18:33:36 <AnMaster> as I don't want to do like CCBI and run "one forward" 9999 or whatever times
18:34:06 <AnMaster> optimizing CPU as I can't optimize hash more yet
18:34:24 <AnMaster> Deewiant, btw cachegrind looks nice
18:34:52 <AnMaster> looks for cache miss situations
18:35:05 <AnMaster> not using it is because it's output is hard to parse
18:35:11 <AnMaster> maybe when everything else is doen
18:35:25 <Deewiant> there are frontends for cachegrind as well, you know :-)
18:35:28 <AnMaster> I do run valgrind and mudflap every now and then
18:35:37 <AnMaster> Deewiant, yep, kachegrind or something like that
18:35:45 <AnMaster> or maybe they actually left the c in for once
18:36:49 <AnMaster> Deewiant, btw ever tried mudflap?
18:37:03 <AnMaster> very nice pointer debugging thing, if you enabled the mudflap useflag for gcc
18:37:06 <Deewiant> haven't programmed that much in C/C++
18:37:18 <AnMaster> http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging
18:37:46 <AnMaster> Deewiant, quite nice, at some things better than valgrind, at other things valgrind is better
18:38:07 <AnMaster> oh and I've seen boehm-gc in leak check mode catch leaks neither of those two catched
18:39:23 <AnMaster> Deewiant, btw I've been thinking of some kind of JIT for some things, but I think they may end up slower, ie. caching the matching ; for a ; and such
18:39:41 <AnMaster> but likely to be slower as I would need to invalidate cache at p and so on
18:39:57 <AnMaster> another thing, concurrency, ; takes 0 ticks right?
18:40:09 <AnMaster> but how long does this take: ; blah blah;;blah blah;
18:40:30 <Deewiant> ;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;$ takes one tick
18:42:01 <AnMaster> btw, when cfunge is done I think I'll try to write a fast brainfuck compiler, ie, optimize and convert to speedy C
18:42:27 <Deewiant> I'm not that interested in brainfuck, it's too simple :-)
18:42:41 <AnMaster> Deewiant, so what other esoteric languages are you interested in?
18:42:58 <Deewiant> I don't know, I've been looking for something cool but haven't found anything that special
18:43:07 <Deewiant> Rail or whatever it was called looked nice
18:44:15 <Deewiant> haven't done anything with anything other than befunge, really
18:44:15 <AnMaster> so what was the problem with it?
18:44:40 <AnMaster> Deewiant, a rail -> befunge converter maybe?
18:45:04 <Deewiant> maybe I've just had enough of esoterica for now ;-)
18:45:42 <AnMaster> Deewiant, one thing you could do, change wrapping to allow user defined topologies, ie, load klein-funge file into CCBI
18:45:56 <AnMaster> but could be a nice experiment
18:46:18 <Deewiant> since the wrapping function can be arbitrary
18:46:57 <AnMaster> something that can be JIT compiled or so
18:47:15 <AnMaster> or compiled to a *.so/*.dll even
18:47:15 <Deewiant> would need to implement a whole language there
18:47:39 <AnMaster> actually you could just dlopen a file, with a few basic functions
18:47:39 <Deewiant> might as well leave it to the dynamic language people
18:48:03 <Deewiant> except that that doesn't work on windows
18:48:12 <AnMaster> Deewiant, there are *.ddl on windows
18:48:28 <AnMaster> don't remember functions names for windows though
18:48:33 <Deewiant> but it would require writing a lot of code to make it work
18:48:55 <AnMaster> something like LoadLibraryExWeDidn'tGetAPIRightFirstTimeSoHereIsAnExtendedOne
18:48:55 <Deewiant> it's trickier in D than in C, with the garbage collection and all that
18:49:07 <Deewiant> might be easier if only loading C code
18:49:25 * AnMaster finds all the *Ex API functions of Windows sad
18:49:35 <AnMaster> they can't even get their APIs right first time sigh
18:50:56 <Deewiant> there's stuff like tmpfile in the C/POSIX APIs as well :-)
18:51:18 <AnMaster> oh yes tmpfile/tempfile/mktemp/mkstemp
18:51:39 <AnMaster> Deewiant, but hardly as common
18:51:46 <Deewiant> and when you've got a million customers you usually can't just say "stop using what you have because this new stuff is better", you're burdened with backwards compatibility
18:52:01 <Deewiant> but yes, I admit, the design of windows could have been much better from the start.
18:52:28 <AnMaster> Deewiant, indeed, but windows got more *Ex functions than POSIX got updated functions
18:53:45 <Deewiant> the windows stuff also supports a lot more stuff
18:53:54 <Deewiant> not saying that it's a good thing to have all that built in
18:54:09 <AnMaster> windowing routines belongs in X API
18:54:25 <Deewiant> from what I've heard the X API is absolutely horrid
18:54:53 <AnMaster> Deewiant, very likely, xlib is
18:54:59 <Deewiant> http://en.wikipedia.org/wiki/X11#Limitations_and_criticisms_of_X
18:55:00 <AnMaster> I think that new xlib replacement is better
18:55:51 <Deewiant> yeah, isn't that like a big *Ex for all of X? ;-)
18:58:48 <Deformative> It is just the 11th protocol revision, it is horrible, no matter what api they use to wrap it, it still sucks.
18:59:33 <AnMaster> Deformative, so use motif or QT or something
19:00:03 <pikhq> The X API is sheer insanity.
19:00:16 <Deformative> Motif and qt still use the 11th protocol revision.
19:00:29 <AnMaster> Deformative, is there any 12th?
19:00:34 <pikhq> Deformative: *Everyone* uses X11.
19:00:39 <pikhq> There's not an X12.
19:00:49 <pikhq> (although X.org is tossing around ideas for it, actually)
19:00:59 <Deformative> Not really considering it, but they have a wiki with ideas about it.
19:01:01 <AnMaster> hope they make the new API sane
19:01:10 -!- RedDak has joined.
19:01:32 <AnMaster> really nice and sane, and provide backward compatiblity in some external library
19:01:52 <Deformative> I already said this, the api is not the problem, the problem is the protocol that the server and clients must follow, the packets they must send.
19:02:32 <pikhq> Deformative: No, the API is the problem.
19:02:39 <pikhq> It is *fucking insane*.
19:02:42 <Deformative> You can wrap this protocol in an api to make it tolerable, but it still would suck internally.
19:02:46 <pikhq> It makes Win32 look reasonable.
19:03:42 <AnMaster> Deformative, nop, you could replace it with a 12th protocol revision
19:06:24 <Deformative> If graphics contexts, window borders, and all the other useless garbage was removed from the protocol, the api would inevitably become more sane.
19:07:49 <Deformative> And I don't have a clue how they could fix the hell that is the icccm.
19:09:34 <Deformative> I don't know, maybe they could make a lib to handle that or such.
19:10:31 <pikhq> So, basically, "If the entirety of X11 were removed, then the API would become sane".
19:10:44 <Deewiant> AnMaster: what the ICCCM specifies
19:11:26 <AnMaster> Deewiant, even back a few years that was useful, think of transparency in gif, you could threat that as a 1-bit pixmap acting as a mask
19:11:49 <Deewiant> AnMaster: sure, useful, but it's one hell of a limitation
19:12:20 <AnMaster> Deewiant, but I can see 24-bit images or whatever it is on my screen, and I can see transparency, so I'm not sure I get the *current* problem
19:12:25 <pikhq> Perhaps just an *alpha channel*? ;)
19:12:45 <AnMaster> pikhq, even they are 8-bit these days
19:12:53 <pikhq> AnMaster: Well aware.
19:15:44 <Deformative> AnMaster: Without using an extension to the protocol, the core protocol itself, the most colors that you can use for many things is two, for example, you can only use two colors to create a cursor using the core protocol.
19:16:38 <AnMaster> I like the standard X11 cursor
19:16:46 <AnMaster> I wouldn't trade it for anything
19:17:03 <AnMaster> Deewiant, hm? so the standard cursor is 3-color?
19:17:23 <marshmallows> only the bit's that arent the cursor are trasparent
19:17:34 <AnMaster> Deformative, transparent and black as far as I can se?
19:18:32 <AnMaster> however, wouldn't the cursor be a rectangular bitmap?
19:19:16 <marshmallows> I don't think that's relevant to how many colors it's made o
19:19:34 <marshmallows> in that case you could probably even say it's 256 colors
19:21:47 <Deformative> I remember i always needed to use the xcursor extension in order to get > 2 colors.
19:22:01 <Deformative> If I remember correctly xrender could be used as well.
19:25:03 <Deformative> Hmm, you may be able to have 2 colors + a mask
19:33:37 <AnMaster> Deewiant, there? why are some of the GOOD BAD boxes on the result page for the mycology tests not links?
19:34:07 <Deewiant> because there's no point in linking to anything, they're the expected output
19:34:19 <AnMaster> Deewiant, still some GOOD are links?
19:34:20 <Deewiant> it does say that right above the table you know :-)
19:34:27 <Deewiant> because they have something UNDEF
19:43:56 -!- Corun has quit ("back later, with pizza").
19:44:04 <SimonRC> I recall there is a supposed X replacement called Y
19:44:10 <SimonRC> It was on /. a few years back
19:47:16 -!- RodgerTheGreat has quit.
19:49:11 -!- RodgerTheGreat has joined.
20:13:47 -!- Sgeo has joined.
20:19:12 <AnMaster> Installed versions: 1.2.11-r2(02.57.23 2008-01-05)(X alsa arts fbcon opengl xv -aalib -custom-cflags -dga -directfb -esd -ggi -libcaca -nas -noaudio -nojoystick -novideo -oss -svga -xinerama)
20:25:40 -!- RedDak has quit (Remote closed the connection).
20:30:20 -!- oklofok has quit (Connection timed out).
20:39:06 -!- oklofok has joined.
21:01:08 <AnMaster> how do you in C convert an integer to a string in the given base, for decimal, octal or hexdecimal it is easy with printf, but for other ones? say base 2 or base 31
21:01:27 <AnMaster> printf seems to only do base 8 10 and 16
21:03:34 <AnMaster> marshmallows, so how should one do it, it is for an befunge fingerprint
21:03:43 <AnMaster> some kind of loop on the value?
21:04:03 <AnMaster> or what is the best way to get arbitrary base in C?
21:04:12 <AnMaster> is there some "standard algorithm"?
21:04:40 <marshmallows> void binary(int number) { if(number > 0) binary(number >> 1);
21:05:09 <pikhq> Gotta do it by hand.
21:05:14 <AnMaster> marshmallows, need a look for a number larger than say 1 ;P
21:05:16 <marshmallows> s/number & 1 ? '1' : '0'/number["0123456789"]/
21:05:44 * AnMaster ponders how to convert to a while loop
21:06:17 <AnMaster> marshmallows, recursion mean function can't be inlined
21:06:59 <AnMaster> marshmallows, look I'm aiming to make the fastest befunge interpreter out
21:08:21 <marshmallows> not ultra optimizing a proc that only works on numbers < 65536
21:08:25 <AnMaster> marshmallows, an recursion is not a good algorithm
21:08:34 <AnMaster> marshmallows, err, it only does that?
21:09:09 <AnMaster> marshmallows, fingerprints names have to fit into four ASCII chars
21:09:20 <AnMaster> but that doesn't affect the fingerprint routines themself
21:10:15 <AnMaster> xFFFF=65535 <-- yes but range is [A-Z0-9], or maybe even [A-Z0-9a-z], not [0-F]
21:10:36 <AnMaster> 2^32 - 1 I think is the number of possible fingerprints that can exist
21:11:27 <AnMaster> marshmallows, but that doesn't limit what the fingerprints can do
21:11:30 <marshmallows> anyway you should stop thinking recursion is inefficient that's like poison
21:11:49 <marshmallows> (and yes I know C does not define TCO who cares)
21:12:25 * Sgeo finds what looks like an IPv6 propaganda comic
21:13:01 <Sgeo> "The adventures of Team ARIN"
21:13:02 <Sgeo> http://www.arin.net/education/comic/index.html
21:13:43 <AnMaster> Sgeo, that's weird, like very weird
21:14:15 <AnMaster> it sounds almost as bad as that "sorcefource" thing or of microsoft
21:14:37 <Sgeo> At least I'm learning from this comic
21:16:39 <AnMaster> marshmallows, your algorithm works for bases below 10, I can see that, but what about higher ones? I need to support up to 36 bases
21:16:58 <marshmallows> s/number & 1 ? '1' : '0'/number["0123456789ABCDEF"]/...then
21:18:41 <Sgeo> "Thank goodness I was able to ZING your hardware and stop your packets from moving and messing up the Internet!"
21:23:00 <pikhq> marshmallows: "01223456789ABCDEF"[number] looks cleaner to me. . .
21:23:24 <marshmallows> I prefer it the other way, it's your code do you watn
21:54:22 -!- slereah__ has joined.
21:58:28 -!- Sgeo has quit ("Ex-Chat").
21:58:45 -!- Sgeo has joined.
21:59:43 <pikhq> Of course, we all know the real way is "mov eax, [hex_string + number]".
22:06:23 <AnMaster> pikhq, doesn't handle 64-bit values
22:06:52 <AnMaster> %rax maybe on amd64, on 32-bit no idea
22:07:11 <AnMaster> assuming bases above. say 2^32
22:08:18 <lament> RodgerTheGreat: i know about timecube, but colorforthray.info is possibly more insane
22:08:42 <lament> AnMaster: timecube.com
22:08:43 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
22:09:10 <lament> the owner of colorforthray is actually on freenode.
22:12:11 <AnMaster> slereah__, err, lets see that can be simplified to -1x = 2, means x = 2/(-1) x =-1
22:12:48 <AnMaster> slereah__, how is it stupid an evil?
22:16:03 -!- slereah_ has joined.
22:16:46 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
22:24:16 <SimonRC> lament: I will have to read that site
22:24:58 <SimonRC> but maybe only in the way unlambda is great
22:28:25 <slereah_> In the way that it is totally awesome?
22:28:45 -!- Tritonio_ has quit (Remote closed the connection).
22:30:01 <slereah_> It's pretty much the best known functional esoteric language!
22:30:06 <slereah_> Well, then again, that's still not very known
22:30:33 <Deformative> I am trying to figure out if the language I am designing is "functional" or not.
22:32:43 <SimonRC> are there first-class function-like things?
22:32:58 <pikhq> Is lambda a keyword?
22:33:22 <Deformative> And I could have closures, but I do not think I will.
22:33:39 <Deformative> Functions typically need to return a value.
22:34:03 * pikhq nods... In a purely functional language, of course. . .
22:34:14 <AnMaster> I just got a nice idea from a language due to a typo I made in C:
22:34:33 <AnMaster> ie, a language where stuff can return several values
22:35:19 <pikhq> (technically, those are no longer functions, but rather *relations*. . . :p)
22:35:22 <AnMaster> pikhq, no time to write specs, but basically you wouldn't have to do say bool (bool * foo); to return several values
22:35:33 <AnMaster> but instead could return any number of values
22:35:37 <Deformative> marshmallows: main<...>add(..., print, 3, 4)
22:36:02 <lament> SimonRC: read it, it's fucked up.
22:36:05 <pikhq> AnMaster: Ignore, please.
22:37:03 <AnMaster> wonder how assignment syntax from such a function should look
22:37:19 <AnMaster> foo,bar,quux = somefunction(); ?
22:37:20 <oklofok> AnMaster: what does it mean here to retu multiple values? do you return multiple times to the return continuation, or just return a pair, or..?
22:37:40 <oklofok> don't wanna be a killjoy, but if it's the latter, it's not that crazy :P
22:37:51 <AnMaster> oklofok, well not sure, you can return several values, any given amount of values
22:38:10 <AnMaster> oh and variable amount of returns
22:38:23 <Deformative> marshmallows: http://pastebin.ca/945366 That is a snippet of the old spec.
22:38:30 <AnMaster> oklofok, so: int ... myfunc();
22:38:37 <Deformative> That is before anonymous functions and before the syntax changed.
22:38:37 <AnMaster> would return n number of integers
22:38:59 -!- oerjan has joined.
22:39:42 <AnMaster> oklofok, like variable argument count in C, but instead variable return arguments
22:40:00 <pikhq> AnMaster: You could have some very interesting calling conventions with that. . .
22:40:01 <AnMaster> oklofok, would be a procedural language I think
22:40:26 <AnMaster> pikhq, oh yes, at least when you do variable both ways
22:40:36 <Deformative> marshmallows: Because, there are no return values.
22:40:45 <AnMaster> pikhq, double ... floor(double ...)
22:40:46 <pikhq> For compatibility with the standard calling convention, have the first return value stuck in eax, and the rest get pushed on the stack.
22:41:09 <AnMaster> pikhq, err not eax, would rather be rax right?
22:41:16 <pikhq> On AMD64, it would be rax.
22:41:21 <marshmallows> I don't understand the code enough to decide, sorry
22:41:42 <pikhq> But most people don't have OSes that enable long mode, so the rax register won't exist for those people. ;)
22:41:52 <Deformative> marshmallows: Basically, it has continuations only, no return values.
22:41:54 <AnMaster> pikhq, anyway I could not code this heh, anyway I don't know ASM
22:42:01 <AnMaster> pikhq, however an interpreter should work
22:42:10 <Deformative> So you pass a function to execute next to every function.
22:42:10 <AnMaster> and I probably won't code this, just a crazy idea
22:42:16 <pikhq> It'd be trivial to code up given a simple C compiler, actually. . .
22:42:33 <Deformative> I use the word "function" but I do not believe they can be called functions.
22:42:41 <pikhq> Getting it to handle the syntax would be the pain.
22:42:57 <pikhq> But the actual *semantics*? Trivial.
22:43:07 <AnMaster> pikhq, anyway if the first return value is larger than 32-bit it won't fit in %rax, or if it is floating point
22:44:12 <pikhq> The standard C calling convention returns the value in eax if it's 32-bit or less, and not a float. If it's a float, it's on the floating point stack instead. And, if it's just larger than 32-bit, then eax has a pointer to it.
22:44:31 -!- calamari has joined.
22:44:42 * pikhq should look up cdecl again
22:44:52 <AnMaster> pikhq, amd64 calling convention doesn't do that, it returns floating point in SSE registers iirc
22:45:00 <Deformative> AnMaster: What is the point? Why not just return a structure?
22:45:10 <AnMaster> Deformative, it could be interesting
22:45:29 <AnMaster> and if you make this language has, first class functions
22:45:35 <AnMaster> then it could be really interesting
22:45:40 <pikhq> AnMaster: The amd64 calling convention is different from the x86 calling convention.
22:45:46 <oklofok> could you curry return values
22:46:36 <Deformative> AnMaster: Are you talking about my language or your's?
22:46:59 <AnMaster> I probably won't implement it, or write a spec for it
22:47:03 <Deformative> What is the point of multiple return values?
22:47:04 <pikhq> (x86's convention stores all arguments on the stack. x86_64 stores the first 6 arguments or so in registers.)
22:47:08 <AnMaster> Deformative, would be cheating
22:47:31 <AnMaster> Deformative, why not ask yourself: what is the point of any esoteric language then
22:47:43 <Deformative> marshmallows: Still trying to understand my code or should I leave?
22:47:55 <oklofok> AnMaster: the prob is, what's the essential difference between returning multiple values and an n-tuple
22:48:43 <AnMaster> oklofok, hm, also you could code this as returning multiple times, would need some kind of setjmp I suspect, but I suspect you would prefer such a way of doing it?
22:48:59 <oklofok> i prefer to know what you mean :)
22:49:12 <pikhq> Hmm. Well, you *could* define the calling convention so that it's equivalent to a C program returning a struct. . .
22:49:31 <oklofok> pikhq: stop being so hardware, i'm a pythonist nowadays! :D
22:49:38 <AnMaster> oklofok, it all started as a typo I made when copy pasting a new prototype for a function into a header, and missed to remove the old bool
22:49:47 -!- oklofok has changed nick to oklopol.
22:49:49 <pikhq> oklofok: When discussing something C-esque, then you've got to be hardware. :p
22:50:43 <AnMaster> oklopol, so I ended up with: extern bool bool input_getint(FUNGEDATATYPE * value, int base);
22:51:04 <AnMaster> however that would be even easier, as value is an out parameter here
22:51:15 * calamari made an 8 instruction assembly language today.. 3 bits for the opcode, 5 bits for a single arg
22:51:28 <AnMaster> that could be written as bool FUNGEDATATYPE input_getint(int base);
22:51:35 <calamari> wish I knew more about circuit design
22:52:02 <AnMaster> pikhq, also this should be supported: bool ... int ... somefunction(), that is several sets of varreturns
22:52:09 <pikhq> AnMaster: Could be even worse, though.
22:52:18 <pikhq> extern bool static bool input_getint(...);
22:52:33 <oklopol> starting to sound fun again! now support regexes
22:52:35 <AnMaster> pikhq, oh why static in front of the second bool, what would that mean?
22:52:54 <pikhq> That it would return different values depending upon the linakge.
22:53:01 <pikhq> s/linakge/linkage/
22:53:21 <AnMaster> how, if I may ask, would the return statement look?
22:53:36 <AnMaster> or would it be implemented as some sort of co-routine?
22:53:43 <pikhq> extern bool static bool linked_p() {return 0, 1;}
22:54:42 <AnMaster> pikhq, but for say extern bool ... static bool ... int ... then?
22:54:44 <pikhq> No *idea* how you'd make that calling convention work, though.
22:55:10 <pikhq> Except *maybe* by making the linker understand this language's conventions?
22:55:12 <pikhq> AnMaster: No clue.
22:55:26 <AnMaster> and what about oklopol's regexes?
22:55:49 <pikhq> return(0,1,0,0,1)(1,0,1,1,0)(5,6,7,8,9,10);
22:56:04 <AnMaster> pikhq, ok and assignment from this function?
22:56:28 <AnMaster> say /* what here*/ = linked_p()
22:56:38 <pikhq> bool foo,bool bar, bool baz, int qux, int quux = this_insane_function();
22:56:55 <pikhq> Well, for linked_p, it'd be easy.
22:57:00 <pikhq> bool foo = linked_p();
22:57:07 <AnMaster> pikhq, err I mean for the "extern bool ... static bool ... int ..." one
22:57:11 <pikhq> It returns 1 value; that value is different based upon linkage.
22:57:54 <AnMaster> or discard values not fitting into number of return variables?
22:58:11 <AnMaster> and I still think oklopol's regex for return value looks cool
23:01:03 <oklopol> (oklotalk does regex-like pattern matching, you can set an assert on lambdas to return a certain type pattern)
23:01:21 <oklopol> (all this done in such an unclean fashion you'll want to cry <3)
23:01:32 <AnMaster> oklopol, mine at least is quite clean idea
23:01:42 <AnMaster> with all the pointer hell of C too
23:03:00 <pikhq> Window's calling convention does not allow variadic functions.
23:03:26 <AnMaster> btw what do you call "varadic return"?
23:03:35 <pikhq> The more I know about Windows, the more I hate it.
23:04:37 <AnMaster> pikhq, windows "falls back" to cdecl for varadic functions I think
23:08:02 * Sgeo becomes obsessed with ViolaWWW
23:08:21 <Sgeo> AnMaster, old web browser, from before Mosaic
23:08:32 <Sgeo> http://www.xcf.berkeley.edu/~wei/viola/violaCentral.html
23:08:42 <AnMaster> make it be able to show xhml pages
23:09:04 <AnMaster> even tried adding garbage collector but didn't get that work finished
23:09:17 <Sgeo> seems like ViolaWWW had AJAX-like features way before everyone else oO
23:09:19 <AnMaster> if you got bzr 0.92 or later installed, you could check it out from *looks for url*
23:10:16 <AnMaster> Sgeo, yes... "http://www.xcf.berkeley.edu/~wei/viola/vw/inset_chess.v" <-- wow
23:10:57 <Sgeo> Think ".js for ViolaWWW"
23:10:59 <AnMaster> marshmallows, viola script it seems
23:11:08 <Sgeo> WAAAAAAAAAY before JS ofc
23:11:45 <marshmallows> http://www.xcf.berkeley.edu/~wei/viola/vw/chessDemo.html
23:12:05 <AnMaster> it's for some really old browser
23:12:14 <AnMaster> of course it doesn't work in modern ones
23:12:38 <Sgeo> AJAX(like) in 1994! http://www.xcf.berkeley.edu/~wei/viola/vw/monitor2.v
23:12:40 <AnMaster> Sgeo, it looks very weird, parts of it look like C code
23:13:01 <AnMaster> yes C code with some \latexstyle commands in it
23:14:30 <Sgeo> If the Viola code was adopted for the WWW, how much more advanced would we be right now?
23:15:02 <Sgeo> (I mean, if we made that decision way back when, not saying we should do that now)
23:16:26 <Sgeo> marshmallows, where do you see that?
23:16:33 <marshmallows> <Sgeo> If the Viola code was adopted for the WWW, how much more advanced would we be right now?
23:18:42 * Sgeo wonders if he can download ViolaWWW from somewhere and play with it
23:20:40 <Sgeo> "All objects can be individually programmed using the scripting language. Each object is essentially its own interpretive environment, and each object is its own variable scope. So, an object only affects its own variable values and can not directly affect other objects' variables, thus minimizing side effects.
23:20:40 <Sgeo> Having an encapsulated mini environment is useful not only for organizational purposes, but is also useful for enforcing security. This is particularly relevant in the Internet scaled World Wide Web context. "
23:20:52 <AnMaster> /usr/include/gentoo-multilib/amd64/ctype.h:#define __isctype(c, type) \
23:20:52 <AnMaster> /usr/include/gentoo-multilib/amd64/ctype.h- ((*__ctype_b_loc ())[(int) (c)] & (unsigned short int) type)
23:21:01 <AnMaster> that is how isalpha and such are done it seems
23:21:22 <Sgeo> I don't see how stopping one object on a page from interacting with others on the page improves security
23:23:12 <AnMaster> bank login object should not be reachable from either simple game object, nor trojan object
23:24:07 <marshmallows> does not give you proof that it's not reachable though
23:26:52 <AnMaster> marshmallows, true but other security features exist I assume
23:26:57 * Sgeo wonders if there are people who fans of ViolaWWW
23:27:14 <AnMaster> I just wanted to get it to work and try it
23:27:34 <AnMaster> then I noted how much faster than, say, firefox it was
23:28:53 <Sgeo> Historical Web Browsers
23:28:58 <Sgeo> http://www.livinginternet.com/w/wi_browse.htm
23:29:56 <AnMaster> Sgeo, btw I also forked original gopher client
23:32:47 * Sgeo just wants to download VioletWWW right now