←2009-05-14 2009-05-15 2009-05-16→ ↑2009 ↑all
00:00:14 <ehird> "ANYONE USING THIS SYSTEM EXPRESSLY CONSENTS TO MONITORING"
00:00:19 <ehird> just put words in my mouth why don't you!
00:00:28 <ehird> https://www.intelink.gov/
00:00:30 <ehird> login page
00:06:19 <ehird> .
00:06:32 <ais523> login page is not at all surprising
00:06:44 <ais523> I certainly imagine intellipedia doesn't have much vandalism
00:06:48 <ais523> people would likely get fired for that
00:08:00 <ehird> :P
00:12:00 <ehird> mm, i can't wait to get my new machine
00:12:08 <ehird> I'm becoming increasingly dissatisfied with os x
00:12:11 <ehird> *os x
00:30:20 <ehird> bye
00:30:34 <ais523> is that bye #esoteric, or bye OS X?
00:30:42 <ais523> and what are you disliking about it atm?
00:33:36 <ais523> I guess that was bye #esoteric
00:49:26 -!- psygnisfive has joined.
00:49:37 <psygnisfive> neiho.
00:51:33 <ais523> hi
00:57:46 <psygnisfive> hey man
01:01:57 <ais523> haha: http://en.wikipedia.org/w/index.php?title=Therac-25.&action=history
01:02:05 <ais523> someone at reddit typoed a link to Wikipedia
01:02:16 <ais523> and instead of editing the link, they just edited Wikipedia to add in a redirect
01:05:13 -!- kerlo has quit (Remote closed the connection).
01:05:13 -!- thutubot has quit (Remote closed the connection).
01:06:20 -!- inurinternet has quit (No route to host).
01:08:49 -!- puzzlet has joined.
01:09:37 -!- puzzlet_ has quit (Remote closed the connection).
01:17:09 -!- darthnuri has joined.
01:19:56 -!- puzzlet has quit (Remote closed the connection).
01:19:59 -!- puzzlet has joined.
01:27:08 -!- puzzlet_ has joined.
01:27:15 -!- puzzlet has quit (Remote closed the connection).
01:27:26 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
01:32:07 -!- puzzlet has joined.
01:41:43 -!- olsner has joined.
01:49:20 -!- kerlo has joined.
01:50:32 -!- kerlo has left (?).
02:11:18 -!- darthnuri has changed nick to inurinternet.
02:12:46 <pikhq> LAWLZ
02:40:15 -!- jix_ has quit ("leaving").
02:55:21 <ski__> ehird,fizzie : you should do `load "$",8', then `list', without the `,1' secondary address to `load'
02:57:07 <ski__> (istr with the `,1' it will load the directory (as a BASIC program) on $0400, which is the start of the screen memory on C64 .. it might have been that $0400 was the start of BASIC program memory on older PET machines, i'm not sure)
02:58:44 <ski__> (the `,1' basically tells `load' to load the program not into the current BASIC memory, but instead to the address that the program was saved from .. in the case of the directory, though, the "program" is synthesized by the disk drive, so it just invents the origin address $0400 for some reason)
03:20:13 -!- bsmntbombdood has joined.
03:20:17 <bsmntbombdood> finally got some debian
03:20:23 <pikhq> Goody.
04:21:01 -!- oerjan has joined.
05:06:54 -!- ais523 has quit (Remote closed the connection).
05:07:58 -!- ais523 has joined.
05:30:33 -!- Gracenotes has quit (Remote closed the connection).
05:31:29 -!- Gracenotes has joined.
06:10:50 -!- coppro has quit (Read error: 110 (Connection timed out)).
06:28:38 -!- ais523 has quit (Remote closed the connection).
06:45:34 -!- oerjan has quit ("leaving").
07:16:23 -!- bsmntbombdood has quit (Remote closed the connection).
07:25:51 -!- bsmntbombdood has joined.
07:43:45 <bsmntbombdood> xset b 35 440 75
07:59:52 <bsmntbombdood> wtf!
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:02 <bsmntbombdood> my load average goes above 1 while watching flash video
08:00:04 <bsmntbombdood> so much for fast
08:00:26 -!- tombom has joined.
08:03:24 -!- kar8nga has joined.
08:04:25 <fizzie> That's rather curious; on this work-workstation, playing a random U-tube video results in ~18% CPU usage for Firefox, and ~8% for Xorg.
08:09:35 <bsmntbombdood> 90% xul-runner, 85% xorg
08:12:40 <bsmntbombdood> it's also giving me all sorts of weird artifacts...
08:27:13 * ski__ listens to `Turkish_towel'
08:29:22 -!- kar8nga has quit (Remote closed the connection).
09:39:10 -!- BeholdMyGlory has joined.
10:11:16 -!- bsmntbombdood has quit (Remote closed the connection).
10:13:08 -!- Slereah_ has quit.
10:18:06 -!- Slereah has joined.
10:36:21 -!- BeholdMyGlory has quit (Remote closed the connection).
10:57:52 -!- darthnuri has joined.
11:14:18 -!- inurinternet has quit (Read error: 110 (Connection timed out)).
11:42:25 -!- jix has joined.
12:32:15 -!- MizardX has quit ("What are you sinking about?").
12:49:56 -!- asiekierka has joined.
12:49:57 <asiekierka> hi
12:50:05 <asiekierka> I had an idea on how to not waste ram with function i won't use later on
12:50:20 <asiekierka> I basically make a slot of $100 or $200 bytes, and then after the init function is done
12:50:21 <asiekierka> i clear it
12:50:24 <asiekierka> which gives me saving
12:50:26 <asiekierka> s
12:50:47 <asiekierka> after execution is finished, i get about 128 bytes of saving for now
12:50:54 <asiekierka> also, I have a routine to clear blocks of $100 now
12:52:18 <asiekierka> As well as I have finally fixed putc (just need to do backspace and cursor), and I did HextoStr and stuff
13:07:05 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
13:16:10 <asiekierka> 1010 bytes, everything except backspace is done
13:16:16 <asiekierka> And I planned 8KB for my kernel...
13:16:27 -!- darthnuri has quit (Connection timed out).
13:19:40 -!- tombom has quit ("Peace and Protection 4.22.2").
13:22:47 -!- KingOfKarlsruhe has joined.
13:29:31 -!- jix has quit ("i shouldn't use irc now!!").
13:33:24 -!- inurinternet has joined.
13:54:19 -!- jix has joined.
14:14:32 -!- oerjan has joined.
14:26:04 -!- KingOfKarlsruhe has quit (Remote closed the connection).
14:48:03 -!- MizardX has joined.
15:19:45 -!- FireFly has joined.
15:49:52 -!- inurinternet has quit (No route to host).
16:05:54 <ehird> 23:30 ais523: and what are you disliking about it atm?
16:05:57 <ehird> it's too conventional
16:05:59 <ehird> also, bsmntbombdood:
16:06:06 <ehird> make sure you have the proprietary flash player,
16:06:08 <ehird> disable hyperthreading,
16:06:13 <ehird> and make sure you have the proper nvidia drivers
16:06:17 <ehird> preferably the proprietary ones
16:06:29 <ehird> also you can't edit links on reddit
16:18:04 -!- inurinternet has joined.
16:37:05 * pikhq discovers that the IBM mainframe hypervisor was released as public domain until the mid-80s...
16:43:56 -!- BeholdMyGlory has joined.
16:45:04 <ehird> hypervisor is such a cool nam
16:45:04 <ehird> e
16:45:08 <ehird> it VISES HYPERLY
16:52:38 <AnMaster> define:vises
16:52:44 -!- jix has quit (":(").
16:53:43 <AnMaster> <asiekierka> I had an idea on how to not waste ram with function i won't use later on
16:53:43 <AnMaster> <asiekierka> I basically make a slot of $100 or $200 bytes, and then after the init function is done
16:54:14 <AnMaster> um, I remember seeing in the Linux kernel bootup output something like "Freeing unused SMP function variants... freed 5K"
16:54:17 <AnMaster> or similiar
16:54:26 <AnMaster> when run on an uniprocessor
16:54:52 <AnMaster> I assume it would do the reverse (freeing single cpu variants) on SMP machines.
16:57:16 <AnMaster> <asiekierka> also, I have a routine to clear blocks of $100 now <-- fixed size memset?
16:57:57 <AnMaster> <ehird> disable hyperthreading, <-- why.
16:58:08 <ehird> AnMaster: because hyperthreading is broken
16:58:26 <ehird> it's (1) a hack to get around bad pipelining (2) increases cache thrashing a lot
16:58:35 <AnMaster> aha.
16:58:41 <pikhq> And the Atom doesn't have bad pipelining.
16:58:42 <ehird> it's unlikely that it's causing his load issues but he should disable it anyway :)
16:58:47 <ehird> pikhq: it's not an atom
16:58:49 <AnMaster> why then did Intel reintroduce it.
16:58:50 <ehird> it's a nehalem :-p
16:58:55 <ehird> AnMaster: marketability?
16:59:02 <pikhq> The Nehalem has *crazy good* pipelining.
16:59:03 <AnMaster> hm ok
16:59:14 <pikhq> AnMaster: It was popular in the Pentium 4 line.
16:59:22 <pikhq> And the Pentium 4 sorely needed it.
16:59:30 <AnMaster> pikhq, I had a P4 once. Early one
16:59:47 <pikhq> Hyperthreading made a difference on that architecture.
17:00:02 <AnMaster> it ran at 1.8 GHz or something like that
17:00:04 <AnMaster> iirc
17:00:21 <AnMaster> so pretty early P4
17:00:52 <ehird> I wonder when Intel will get off their butts and release Larrabee.
17:00:58 <ehird> Although apparently it's crap.
17:01:41 <ehird> [http://en.wikipedia.org/wiki/Larrabee_(GPU), fyi]
17:01:48 <pikhq> Of course, the downsides of hyperthreading are somewhat reduced on Linux, which has a hyperthreading-aware scheduler.
17:01:55 <ehird> pikhq: yeah, but still
17:01:56 <AnMaster> ehird, is it crap? that is news to me
17:01:58 <ehird> that cache thrashing
17:02:02 <ehird> pikhq: and also, 4 cores is enough for anyone ;-)
17:02:12 <ehird> AnMaster: Larrabee's early presentation has drawn some criticism from GPU competitors. At NVISION 08, several NVIDIA employees called Intel's SIGGRAPH paper about Larrabee "marketing puff" and told the press that the Larrabee architecture was "like a GPU from 2006".[7]
17:02:17 <pikhq> (without one, it treats the hyperthreading CPU as two full cores. Bad performance ahoy!)
17:02:20 <ehird> ofc, nvidia has a reason to be biased
17:02:27 <AnMaster> heh
17:02:31 <ehird> but... otoh, it doesn't seem like they'd outright lie
17:02:44 <ehird> also, a GPU running x86 sounds fairly pointless.
17:02:55 <pikhq> ehird: Intel has always done low-end GPUs. That their GPUs are now from 2006 is a massive step up.
17:03:06 <ehird> True enough :-)
17:03:07 <AnMaster> haha
17:03:11 <pikhq> And the main draw of Larrabee is being highly programmable.
17:03:32 <AnMaster> well so are recent nvidia and ati cards iirc
17:03:33 <pikhq> This is a chip you play around with real-time raytracing on. ;)
17:03:45 <AnMaster> nvidia's cuda and whatever ati's one was called
17:03:47 <pikhq> They *are*, but they're a pain to program for.
17:03:52 <ehird> pikhq: Nah, you need a specialized chip to do that. See Caustic Graphics; they get about 5fps.
17:03:57 <ehird> (on an *FPGA*)
17:04:01 <ehird> pretty impressive
17:04:13 <AnMaster> hm
17:04:17 <pikhq> They're technically Turing-complete, but if your code does much branching, it's faster to do it on a CPU.
17:04:29 <AnMaster> having a computer based completely on fpgas would be interesting
17:04:32 <ehird> GPUs are for embarrasingly parallel stuff ;-)
17:04:39 <AnMaster> would allow some interesting optimised algorithms
17:04:39 <ehird> AnMaster: err, that;'s called any hobbyist computer
17:04:43 <AnMaster> like sorting networks
17:04:46 <ehird> it's also called "dog slow"
17:04:47 <AnMaster> and what not
17:05:03 <AnMaster> ehird, why is it so slow? Because it is hobbyist?
17:05:05 <pikhq> The Larrabee is also for embarassingly parallel jobs.
17:05:15 <ehird> AnMaster: Because it's an FPGA!
17:05:25 <AnMaster> ehird, good point
17:05:32 <AnMaster> why can't you make fast FPGAs
17:05:37 <pikhq> ehird: They do at least get some benefit from having appropriate circuitry possible.
17:05:49 <pikhq> Still, you're running it at 100Mhz.
17:05:53 <ehird> AnMaster: Think about how an FPGA works, and then think about fabricating silicon.
17:05:59 <ehird> No contest.
17:06:03 <AnMaster> true
17:06:11 <pikhq> AnMaster: FPGAs are hard as hell to make with smaller processes.
17:06:32 <AnMaster> fair enough
17:06:38 <pikhq> Really, FPGAs are hard as hell to make.
17:06:38 <AnMaster> but programmable hardware is cool anyway!
17:07:03 <pikhq> It's cool, but not something that you're likely to ship on a production board.
17:07:08 <AnMaster> pikhq, how come they are used so much then. For when a ASIC would be too expensive.
17:07:38 <pikhq> Because ASICs are done in large batches.
17:07:52 <pikhq> Why order 100,000 ASICs if you need 100 FPGAs to do the same?
17:08:04 <ehird> 17:07 AnMaster: pikhq, how come they are used so much then. For when a ASIC would be too expensive.
17:08:07 <ehird> Because ASICs are expensive
17:08:10 <AnMaster> yeah
17:08:11 <AnMaster> :/
17:08:38 <AnMaster> ever read about Synthesis? I think someone in here linked it.
17:08:47 <ehird> Nope.
17:09:10 <AnMaster> lockless SMP OS, with runtime modification. Ran on some old Motorola CPU with double-CAS instruction.
17:09:14 <AnMaster> really interesting
17:09:18 <ehird> Cool.
17:09:28 <AnMaster> google for quajets iirc
17:09:53 <AnMaster> hm
17:09:55 <AnMaster> doesn't find it
17:09:57 <ehird> Semiconductor fabrication scares me. It's so damn small.
17:10:25 <AnMaster> http://lwn.net/Articles/270081/
17:10:27 <AnMaster> there
17:11:07 <ehird> THINGS I HATE:
17:11:11 <ehird> lwn.net requires fuckin' subscription.
17:11:18 <ehird> Damn that crap.
17:11:19 <AnMaster> ehird, that link didn't
17:11:22 <ehird> I know.
17:11:23 <AnMaster> ...
17:11:27 <ehird> But I clicked other links on the sidebar.
17:11:30 <ehird> And it asked me to pay.
17:11:33 <ehird> And I irrited :-P
17:12:00 <AnMaster> ehird, anyway I read parts of the thesis/paper/whatever, and it described testing on a system with a programmable MMU to test performance in case of two CPUs requested at once. Which is hard to test reliably. So the MMU was programmed to simulate it.
17:12:06 <ehird> Cool
17:12:29 <ehird> I wonder when we'll get 8-core chips from Intel
17:13:35 <AnMaster> ehird, double-ended queues with one producer and one consumer updating at the same time, lockless.
17:13:54 <ehird> AnMaster: sounds like Snake ;-)
17:14:04 <AnMaster> ehird, as in the game snake?
17:14:06 <ehird> yep
17:14:06 <AnMaster> huh
17:14:18 <AnMaster> care to explain that analogy?
17:14:25 <ehird> every tick you lose a block at your end and get another at the start
17:14:33 <ehird> consumer, producer, consumer, producer
17:14:39 <AnMaster> hah
17:15:04 <AnMaster> ehird, iirc they were wait-free too.
17:16:10 <AnMaster> "The current implementation of Synthesis runs on two machines: the Quamachine and the Sony NEWS 1860 workstation. As described in section 1.3.4, the Quamachine is a home-brew, experimental 68030-based computer system designed to aid systems research and measurement. Its measurement facilities include an instruction counter, a memory reference counter, hardware program tracing, and a memory-mapped cloc
17:16:10 <AnMaster> k with 20-nanosecond resolution. The processor can operate at any clock speed from 1 MHz up to 50 MHz. Normally it runs at 50 MHz. But by changing the processor speed and introducing waitstates into the main memory access, the Quamachine can closely emulate the performance characteristics of common workstations, simplifying measurements and comparisons."
17:16:11 <AnMaster> :D
17:16:20 <AnMaster> "The Quamachine also has special I/O devices that support digital music and audio signal processing: stereo 16-bit analog output, stereo 16-bit analog input, and a compact disc (CD) player digital interface."
17:16:29 <ehird> compact disc (CD)
17:16:48 <AnMaster> ehird, indeed. It is old.
17:17:02 <ehird> AnMaster: I guess early 80s.
17:17:22 <AnMaster> "The Sony NEWS 1860 is a commercially-available workstation with two 68030 processors. Its architecture is not symmetric. One processor is meant to be the main processor and the other is meant to be the I/O processor. Synthesis tries to treat it as if it were a symmetric multiprocessor, scheduling most tasks on either processor without preference, except those that require something that is accessible
17:17:22 <AnMaster> from one processor and not the other. While this is not a large number of processors, it nevertheless helps demonstrate Synthesis multiprocessor support. But for measurement purposes of this chapter, only one processor -- the slower I/O processor -- was used. (With the kernel's multiprocessor support kept intact.)"
17:17:47 <AnMaster> ehird, says 1992 on the front page
17:17:52 <ehird> Wow.
17:17:56 <AnMaster> Columbia University
17:17:56 <AnMaster> 1992
17:17:57 <ehird> "compact disc (CD)" in 1992?
17:18:11 <AnMaster> ehird, in a computer it certainly wasn't common
17:18:31 <ehird> well, sure
17:18:40 <AnMaster> 'What do you mean a "change directory"?!"
17:18:43 <pikhq> Out of curiosity, is it specified what the frequency of its audio handling was?
17:18:46 <AnMaster> s/"$/'/
17:18:57 * AnMaster looks
17:19:12 <pikhq> 44.1 kHz 16-bit signed little-endian PCM, I'd *assume*...
17:19:19 <pikhq> But you never know with older systems. ;)
17:19:50 <AnMaster> http://valerieaurora.org/synthesis/SynthesisOS/toc.html
17:19:54 <AnMaster> look for yourself
17:22:00 <AnMaster> "The point is not to parade Synthesis speed nor justify the other's slowness. It is to point out that that speed is possible through careful thought and program structuring that provides just the right level of abstraction for each application. For example, one application that runs under Synthesis reads music data from the CD player, computes its Fourier transform (1024 point), and displays the resul
17:22:00 <AnMaster> t in a window, all in real-time. It displays 88200 data points per second. This is impossible to do today using any other single-processor workstation and operating system because the abstractions provided are too expensive and just plain wrong for this particular task. This is true even though the newer Sparc-based workstations from SUN are more than four times faster then the machine running Synthes
17:22:01 <AnMaster> is."
17:22:05 <AnMaster> :D
17:22:41 <AnMaster> also ehird:
17:22:43 <AnMaster> "Worth noting is the cost of open. The simplest case, open /dev/null, takes 49 microseconds, of which about 70% are used to find the name in the directory structure and 30% for memory allocation and code synthesis to create the null read and write procedures. The additional 19 microseconds in opening /dev/tty come from generating more involved code to read and write the TTY device. Finally, opening a
17:22:43 <AnMaster> file requires synthesizing more sophisticated code and buffer allocations, costing 17 additional microseconds."
17:22:54 <ehird> 49 microseconds to open /dev/null.
17:22:55 <ehird> Sweet.
17:23:09 <AnMaster> ehird, it was fast compared to mainstream then
17:23:46 <AnMaster> ehird, check "7.2.2 Comparing Window Systems"
17:24:09 <pikhq> ehird: That's 50 clock cycles, I think. :p
17:25:15 <ehird> AnMaster: It cites GEB!
17:25:20 <AnMaster> ehird, where?
17:25:25 <AnMaster> "The simplification in applications programming that occurs using this scheduler cannot be overstated. One no longer needs to worry about assigning priorities to jobs, or of carefully crafting the inner loops so that everything is executed frequently enough. For example, in Synthesis, reading from the CD player is no different than reading from any other device or file. Simply open "/dev/cd" and read
17:25:25 <AnMaster> from it. To listen to the CD player, one could use the program in Figure 6.7. The scheduler FLL keeps the data flowing smoothly at the 44.1 KHz sampling rate -- 176 kilobytes per second for each channel -- regardless of how many CPU-intensive jobs might be executing in the background."
17:25:36 <AnMaster> it uses feedback based scheduler
17:25:43 <AnMaster> uses a*
17:25:44 <ehird> AnMaster: on the page
17:25:51 <AnMaster> ehird, which chapter
17:26:04 <ehird> http://valerieaurora.org/synthesis/SynthesisOS/ch7.html
17:26:15 <AnMaster> ok. Where on the page.
17:26:19 <pikhq> AnMaster: Somehow, I find it hard to find that impressive.
17:26:29 <AnMaster> pikhq, by today's standards yes
17:26:31 <ehird> AnMaster: grep Escher
17:26:54 <asiekierka> ^style
17:26:59 <asiekierka> oh wait
17:27:00 <AnMaster> ehird, right
17:27:02 <asiekierka> no fungot!!! :((
17:27:08 <ehird> fizzie:
17:27:09 <AnMaster> fizzie, where is fungot!
17:27:18 <AnMaster>
17:27:24 <pikhq> Probably because right now I'm decoding an 823 kilobit stream with a 44.1 kHz sampling rate to 16-bit PCM, converting it to 48 kHz sampling rate, and handing it to ALSA. :p
17:27:44 <AnMaster> pikhq, could you do that on a CPU running at 25 MHz.
17:28:07 <AnMaster> pikhq, with none of the advanced pipelining and branch prediction and so on
17:28:10 * pikhq wonders what the clock speed is on his Sansa...
17:28:19 <AnMaster> Sansa?
17:28:25 <fizzie> Oh, right, it was that orwell.freenode.net buggery. It might be up by now.
17:28:40 <AnMaster> fizzie, can't you use the round robin dns
17:28:46 <pikhq> MP3 player.
17:28:49 <pikhq> Running Rockbox.
17:28:56 <AnMaster> pikhq, "rockbox"?
17:29:00 <fizzie> AnMaster: fungot doesn't do DNS. :p
17:29:03 <ehird> AnMaster: Rockbox.
17:29:09 <ehird> It's an alternative OS for music players.
17:29:09 <AnMaster> fizzie, it could, with SCKE
17:29:14 <ehird> Including the iPod, Rio Karma, ...
17:29:14 <AnMaster> ah
17:29:18 <ehird> It supports FLAC and stuff.
17:29:20 <ehird> Quite nice.
17:29:24 <ehird> FOSS.
17:29:35 <AnMaster> anyway. It is not a general purpose OS.
17:29:36 <fizzie> AnMaster: I didn't want to depend on SCKE, so it takes an IP address as a parameter. (Although I ended up using SCKE anyway, for the currently-under-construction http support.)
17:29:46 <ehird> AnMaster: Doom was ported to Rockbox.
17:29:50 <ehird> It's general-purpose enough.
17:29:56 -!- fungot has joined.
17:30:05 <pikhq> It does multitasking, too.
17:30:11 <AnMaster> ehird, ok, that still doesn't make the device a general purpose computer though!
17:30:13 <fizzie> I'm hoping no-one is building any mission-critical systems on fungot's availability, anyway.
17:30:15 <fungot> fizzie: and you kill the nice man? call/ cc using only lambda. in general if you want thing to move half as far as i know,
17:30:15 <pikhq> And MPEG2 playing.
17:30:20 <ehird> AnMaster: They use ARM, I think.
17:30:37 <pikhq> Seems its clock speed goes from 24 to 80 MHz on-demand.
17:30:40 <ehird> And have screens, etc; some even coloured.
17:30:50 <ehird> And butans.
17:31:15 <pikhq> It's also got a GB emulator...
17:31:15 <AnMaster> still doesn't make it a general purpose device. And: Is it a full UNIX OS?
17:31:26 <pikhq> No, it's not a UNIX.
17:31:41 <pikhq> It's a different sort of general-purpose multitasking OS.
17:31:45 <AnMaster> which is what they are comparing Synthesis against there. SunOS 3 iirc
17:31:55 <ehird> Rockbox is a general purpose OS running on quite powerful general-purpose hardware with lots of I/O.
17:32:26 <AnMaster> and you have fast storage on an mp3 player
17:32:43 <ehird> You do?
17:32:47 <ehird> It's just a flash drive.
17:32:57 <pikhq> ... Which is a moot point, since a CD drive is fast enough to play CDs. :p
17:33:40 <AnMaster> with or without buffering. As far as I understand it. Synthesis didn't buffer that audio much.
17:34:31 <pikhq> Well, it probably didn't have the RAM handy for large buffers.
17:35:06 <AnMaster> looking at the code it seems to have a 100 byte buffer.
17:36:31 <AnMaster> These programs can be connected together in a pipeline to perform more complex sound processing functions, in a similar way that text filters in Unix can be cascaded using the shell's "--" notation. <-- huh? Doesn't it mean |
17:39:09 <ehird> AnMaster: typographical limitations.
17:39:13 <ehird> -- is sideways |
17:39:17 <AnMaster> hm
17:44:56 <Deewiant> — is sideways |
17:48:28 <ehird> well yes
17:48:39 <ehird> but -- is poor man's —
17:50:03 <AnMaster> Deewiant, is — ASCII?
17:51:27 <fizzie> There's just the strange hybrid "hyphen-minus" dash in ASCII, none of the fancy ones.
17:51:45 -!- tombom has joined.
17:54:13 <ehird> what about that broken | char
17:54:16 <ehird> that's -- sideways :-P
17:54:20 <ehird> well, with a lil' ridge
17:56:30 <fizzie> Ah, the broken bar. That's still non-ascii, though. (But it is in latin-1, which is perhaps a bit unexpectadinous. It doesn't seem all that useful.)
17:56:50 -!- pikhq has quit ("Back in a flash").
17:57:10 <ehird> besides, "is — ASCII?" is silly
17:57:12 <ehird> because | is ascii
17:57:18 <ehird> so evidently if they can't type | they're not using ascii
17:57:22 <ehird> prolly a typewriter
17:57:25 <ehird> i guess
17:58:05 <fizzie> Unicode name for | is a boring "VERTICAL LINE", while ¦ is the "BROKEN BAR".
17:59:10 <fizzie> Though Unicode naming is a bit stuffy anyway. They've opted to call / and \ the "solidus" and "reverse solidus" instead of slash/backslash.
18:01:49 <fizzie> "slash" was the name in Unicode 1.0. I wonder what sort of committee discussions there were when they decided to rename it to solidus. (That gucharmap tool also lists "slash" and "virgule" as aliases, but I'm not sure where it's getting those from.)
18:02:20 <fizzie> "How do I send commands to my IRC client? Just type a VIRGULE in front of the command."
18:02:29 <ehird> :-D
18:03:15 <ehird> http colon virgule virgule virgulefullstop full stop org
18:04:29 <fizzie> http two-spot change change changespot spot org.
18:04:34 <fizzie> To use the INTERCAL names.
18:05:38 <fizzie> At least according to first google-hit e2 page; I'm not quite sure about the reliability there.
18:06:08 <ehird> fizzie: e2's like 10x more infallable than wikipedia because it's just from one reliable source
18:06:48 <fizzie> slat, says the manual. Though the e2 page lists / twice.
18:12:20 <fizzie> Right, "change" is the "c overstrike /" thing, they've just mangled the e2 page. Well, that makes more sense anyway. (Though one has to wonder why a slat and not a spike, since ¢ has a vertical line in it.) Still, even "http two-spot slat slat slatspot spot org" has certain charm.
18:12:21 <ehird> Pros: very fast cpu
18:12:21 <ehird> Cons: price and the company who makes it
18:12:22 <ehird> Other Thoughts: stop and think seriously think about where intel gets their new technology from............... AMD. Intergrated memory controller and 64 bit technology both comes from AMD so for those who bash said company well your r-tarded. AMD holds the patents on the new Technology Intel uses and intel is trying to cancel AMD's right to make x86 cpu's so that means AMD pulls those rights from Intel so all of you who jumped aboard the i7 boat will sin
18:12:27 <ehird> k because no one will support updates so good luck
18:12:29 <ehird> Ah, kooks.
18:12:42 <ehird> fizzie: cent is c/ in some typographical contexts
18:12:45 <ehird> c| is quite modern i think
18:12:54 <ehird> also, slatspot is sort of like a spoonerism of slashdot
18:12:59 <fizzie> Can be; I'm quite modern, I wouldn't know.
18:13:31 <fizzie> "-- the cent sign, a lower-case letter c pierced top to bottom by a forward slash or a vertical line --"
18:13:36 <fizzie> Okays.
18:13:47 <ehird> oooh!
18:13:51 <ehird> the i7 975 will have 1mb of l2
18:13:53 <ehird> me likey
18:14:03 <ehird> ...130 watts though...
18:14:09 <ehird> hmm
18:14:16 <ehird> it seems the 1MB thing was lying
18:14:19 <ehird> they're multiplying it by cores
18:14:20 <ehird> since it's per-core
18:14:40 -!- pikhq has joined.
18:16:37 <ehird> hi pikhq
18:24:59 -!- pikhq has quit ("leaving").
18:26:00 -!- pikhq has joined.
18:39:02 <GregorR> ehird: WTF @ cache size
18:39:16 <ehird> GregorR: It's 256KB *per each core*.
18:39:37 <ehird> GregorR: And there's an 8MB L3 cache.
18:39:41 <ehird> (shared between all cores)
18:40:33 <GregorR> Bleh, the inconsistent labeling of L2 and L3 confuses me ...
18:40:43 <ehird> Well, the L3 cache is shared and the L2 isn't.
18:40:45 <ehird> Big difference :-P
18:41:58 <GregorR> Core 2 Quad has (IIRC) a 4MB cache, which is divided into two 2MB caches each of which are shared between two cores, or something like that..
18:42:29 <ehird> the yorkfield xe has 2 x 6MB L2s
18:42:41 <ehird> (QX9650)
18:42:46 <ehird> rather confuzzling
18:43:03 <GregorR> Well, it's something like that.
18:43:17 <GregorR> Anyway, the point is that 256KB/core L2 seems awfully low for Intel.
18:43:51 <ehird> It is a lot smaller than in recent times.
18:43:58 <ehird> GregorR: but the L2 is faster
18:44:01 <ehird> and you have the L3 too
18:44:07 <ehird> so it's just shifting the boundaries a bit
18:44:25 <GregorR> Yeah, but having an L3 shared amongst more cores is stupid, the whole problem is that shared memory doesn't scale :P
18:44:58 <ehird> It also leads to a security vulnerability, but Nehalem is worth it ;-)
18:45:18 <ehird> Yummy integrated memory controller... Yummy DDR3...
18:47:48 <oerjan> !slashes http://oerjan.nvg.org/esoteric/slashes/crashtest.sss
18:48:20 <oerjan> ic, it must be just this nvg machine
18:48:36 <ehird> ?
18:48:40 <oerjan> or possibly the old perl version
18:48:54 <GregorR> !sh perl --version
18:49:03 <oerjan> 5.8.8 here
18:49:17 <oerjan> !help
18:49:18 <EgoBot> Supported commands: addinterp bf_txtgen daemon daemons delinterp fyb help info kill userinterps 1l 2l adjust asm axo bch bct befunge befunge98 bf bf16 bf32 bf8 bfbignum boolfuck c chiqrsx9p choo cintercal clcintercal cxx dimensifuck echo forth glass glypho hello kipple lambda lazyk linguine malbolge ook pbrain perl qbf rail rhotor rot13 sadol sceql sh show slashes test trigger udage01 underload unlambda whirl yodawg
18:49:23 <GregorR> EgoBot sez 5.10.0
18:49:42 <GregorR> (Codu runs Debian Testing)
18:49:44 <oerjan> i'll make a file twice the size and retest, just in case
18:50:23 <oerjan> !slashes http://oerjan.nvg.org/esoteric/slashes/crashtest.sss
18:50:25 <EgoBot> Complex regular subexpression recursion limit (32766) exceeded at /tmp/input.19081 line 10, <> line 516.
18:50:30 <oerjan> aha
18:51:30 <oerjan> ok a different error (not segmentation fault), but still annoying
18:54:11 <oerjan> so how does one optimize (s!^/((?:[^/\\]|\\.)*)/((?:[^/\\]|\\.)*)/!!s) further :(
18:54:54 <GregorR> By killing oneself.
18:55:52 <ehird> oerjan: don't use regexs?
18:55:53 <ehird> as in
18:55:58 <ehird> yeah.
18:56:56 <oerjan> well that _should_ be a finite automaton needing no recursion
18:57:06 <ehird> But isn't.
18:58:29 <asiekierka> You know, I wonder what esolang to create
18:58:33 <asiekierka> I want it to be based on painting
18:58:34 <ehird> wow, the 975 will only cost $999
18:58:35 <ehird> how cheep
18:58:45 <asiekierka> as in, you know, mixing colors and stuff
18:59:23 <asiekierka> add (R/G/B/W/K) x% - adds X % of the color to the brush
18:59:36 <asiekierka> each color can have a defined value
18:59:40 <asiekierka> R, G, and B just add
18:59:46 <asiekierka> White adds twice the amount it stores
18:59:51 <asiekierka> Black subtracts the amount it stores
19:00:12 <asiekierka> set COLOR x , output brush, get brush...
19:01:13 <asiekierka> while BRUSH( (R(ed)/G(reen)/B(lue)/A(ll)) ) = x then...
19:01:30 <asiekierka> So I have an equalivment of [], +/-, , and .
19:01:35 <asiekierka> but sadly I don't have infinite memory
19:01:42 <asiekierka> oh! store 1 - stores brush to slot 1
19:01:50 <asiekierka> acquire 1 - gets the value of 1
19:02:49 <asiekierka> water - waters the brush, I.E. clears it
19:03:20 <asiekierka> also, output brush does not clear it
19:06:40 <asiekierka> oh wait
19:06:44 <asiekierka> acquire 1 and get 1 add themselves
19:07:31 <asiekierka> oh, and not watering the brush after finishing is an error
19:08:09 <asiekierka> http://rafb.net/p/Rf4Tix42.html
19:08:12 <asiekierka> check it out
19:08:16 <asiekierka> 47 lines of code for an hello world
19:08:57 <fizzie> !perl print $^V, "\n";
19:08:58 <EgoBot> v5.10.0
19:09:03 <fizzie> There's that.
19:09:20 <asiekierka> what do you think of this esolang I CAN POSSIBLY IMPLEMENT
19:09:39 <asiekierka> (not on a C64)
19:10:23 <asiekierka> is it good or does it suck
19:10:28 <asiekierka> or is there an exact same language
19:10:46 <asiekierka> and yes, the output can be represented as colors
19:10:52 <asiekierka> you just interpret RGB separately
19:10:55 <asiekierka> and then take the values
19:10:59 <asiekierka> and output them as a pixel
19:15:25 <Gracenotes> -.-
19:15:38 <asiekierka> what?
19:21:28 <AnMaster> <oerjan> so how does one optimize (s!^/((?:[^/\\]|\\.)*)/((?:[^/\\]|\\.)*)/!!s) further :( <-- how did you end up with that one
19:21:34 <AnMaster> and
19:21:37 <AnMaster> what is it supposed to do
19:21:59 <AnMaster> there is too much escaped stuff for me to be able to parse it without more work that I'm willing to spend on it.
19:25:54 <fizzie> It matches /foo/bar/ where both foo and bar are sequences of either something else than / or \, or \ followed by any character.
19:26:23 <fizzie> So basically it removes a ///-language expression from the start of the string, and sets $1 and $2 to the two parts of it.
19:29:42 <fizzie> I'm not sure how optimizable it is, although you can (a) clarify it a bit with something like $body = qr{(?:[^/\\]|\\.)*}s after which you can write it as s!^/($body)/($body)/!!... or (b) obfuscate it a bit by referring to the first parenthesized subexpression in the other with something like s!^/((?:[^/\\]|\\.)*)/((?1))/!!s.
19:29:50 <AnMaster> why use a regex to do it...
19:30:08 <fizzie> Because regular expressions are awesome, of course.
19:30:12 <AnMaster> um
19:30:36 <AnMaster> Some people, when confronted with a problem, think ``I know, I'll use regular expressions.'' Now they have two problems. -- jwz
19:31:28 <fizzie> That particular one is not such a terrible abuse, though.
19:32:13 <ehird> Some people, when confronted with a joke, think ``I know, I'll use that Jamie Zawinski quote.'' Now they have a douchebag problem. -- jwz
19:32:21 <AnMaster> fizzie, that jwz quote was actually in the description for http://www.jwz.org/hacks/gdb-highlight.el (not found in that file, but in http://www.jwz.org/hacks/marginal.html)
19:32:36 <AnMaster> so that is rather ironic too
19:33:02 <fizzie> And anyway awesome is what they are. It's like a finite state machine cleverly disguised as a one line of curious scratches.
19:33:26 <ehird> "like"?
19:33:40 * AnMaster writes down that line for future quoting
19:34:57 <AnMaster> and yes, regex are awesome, as a DSL for searching text, or doing non-trivial (but still not complex) text replacements.
19:34:57 <oerjan> AnMaster: i wrote the /// interpreter in perl, of _course_ i used regexes
19:35:08 <AnMaster> Plus, doing a regex across two lines tends to be a PITA
19:35:38 <oerjan> that's what that s at the end is for
19:36:03 <fizzie> The "how to optimize" question strongly depends on what you're optimizing; character count or clarity or what.
19:36:29 <AnMaster> what if I want to grep for "while(\*p) p\+=[0-9]+;\nwhile(\*p) p\+=[0-9]+;", something I wanted to do recently
19:36:32 <AnMaster> that is non-trivial
19:36:54 <AnMaster> a grep limitation rather than regex limitation of course
19:37:08 <AnMaster> but a lot of the tools with regex are line based.
19:37:26 <oerjan> fizzie: erm, i'm trying to optimize its ability not to crash on >= 50000 byte strings :D
19:37:37 <AnMaster> then you don't want a regex.
19:37:49 <oerjan> *sigh*
19:38:32 <fizzie> Oh. I wouldn't have thought that particular one would be very trying for the regex-exxxecutor.
19:38:47 <AnMaster> how many x
19:38:48 <AnMaster> ...
19:38:57 <fizzie> As many as it needs.
19:39:03 <AnMaster> good answer.
19:39:04 <tombom> triple x
19:39:05 <fizzie> Depends on how exxxxxtreme you are.
19:39:12 <ehird> fizzie, have an eggscellent day!
19:39:13 <tombom> it represents your computer's temperature
19:39:17 <tombom> uh
19:39:19 <ehird> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXtreme
19:39:21 <tombom> ignore that it sucks
19:39:27 <ehird> Pronounced: chhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhstreme
19:39:29 <oerjan> !slashes http://oerjan.nvg.org/esoteric/slashes/crashtest.sss
19:39:32 <AnMaster> ehird, the e got lost
19:39:32 <AnMaster> there
19:39:34 <EgoBot> Complex regular subexpression recursion limit (32766) exceeded at /tmp/input.19351 line 10, <> line 516.
19:39:38 <ehird> AnMaster: No, it's Xtreme.
19:39:39 <oerjan> ^ fizzie
19:39:44 <AnMaster> ehird, oh. Buzzword
19:39:47 <AnMaster> right :P
19:39:47 <ehird> http://www.google.com/search?client=safari&rls=en-us&q=xtreme&ie=UTF-8&oe=UTF-8
19:39:52 <AnMaster> regex are in general not very efficient.
19:39:53 <ehird> Buxworx.
19:40:01 <ehird> Pronounced buchsworch, where ch is like Bach.
19:40:12 <fizzie> Strange crashey.
19:40:38 <AnMaster> that google's code search does allow regex is strange.
19:40:40 <AnMaster> very strange
19:40:45 <ehird> strange?
19:40:48 <ehird> you mean FUCKING AWESOME.
19:40:54 <AnMaster> ehird, well yes.
19:40:56 <AnMaster> but strange too
19:40:56 <ehird> besides, they aren't full regexps, are they?
19:41:00 <AnMaster> maybe
19:41:04 <AnMaster> haven't checked what dialect
19:41:06 <ehird> no more powerful than google's (x OR y) OR z
19:41:07 <ehird> etc
19:41:10 <oerjan> and this nvg machine gave a different crash (Segmentation fault)
19:41:19 <AnMaster> "Google Code Search supports POSIX extended regular expression syntax, excluding backreferences, collating elements, and collation classes. [...]"
19:41:20 <AnMaster> ehird, ^
19:41:27 <ehird> Awesome.
19:41:32 <AnMaster> http://www.google.com/intl/en/help/faq_codesearch.html#regexp
19:41:40 <ehird> Well, I don't know, maybe they just throw three machines at it every time you search. It can't be too popular of a search engine.
19:42:04 <AnMaster> ehird, load would be very small compared to the load of normal google
19:42:11 <ehird> Eggsactly.
19:42:17 <ehird> Have an eggcellent day!
19:42:25 <ehird> If it's Xtreme, feel good!
19:42:37 <AnMaster> "We also support the following Perl extensions: [list removed to not spam]"
19:42:42 <oerjan> let me try that ?> thing
19:42:44 <AnMaster> but
19:42:49 <AnMaster> those are trivial extensions
19:42:53 <ehird> So?
19:43:27 <oerjan> bah :(
19:43:39 <ehird> oerjan: rewrite it in haskell with PURITY
19:43:41 <ehird> and TAIL CALLS
19:44:13 <AnMaster> oerjan, is there no other implementation of /// ?
19:44:20 <ehird> oerjan: Fine, I will.
19:44:21 <ehird> Happy?
19:44:23 <oerjan> don't think so...
19:44:25 <ehird> You're making me code.
19:44:27 <AnMaster> oerjan, ah
19:44:33 <ehird> oerjan: HAPPY NOW‽‽‽
19:44:35 <AnMaster> ehird, Since you mention it....
19:44:35 <oerjan> ARGH
19:44:52 <ehird> AND YOU WILL BE FORCED TO USE MY IMPLEMENTBWAHAHAHAH
19:44:52 <ehird> A
19:44:54 <AnMaster> ehird, what happened with that befunge interpreter in haskell you were working on
19:44:56 <oerjan> no, because to usefully _use_ it i'll have to finally install ghc... :D
19:44:56 <ehird> -TION
19:45:01 <ehird> AnMaster: AIEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!!!!!!!!!!!!!!!!!!!!
19:45:06 <ehird> oerjan: just grab a binary
19:45:09 <AnMaster> ehird, wut?
19:45:24 <AnMaster> ehird, are you still working on it?
19:45:28 <ehird> AnMaster: Yes. Dormantly.
19:45:32 <AnMaster> ah
19:45:35 <ehird> oerjan: on unix, installing the binary is just "make install". on Windows, I think they have a fancy installer
19:46:17 <fizzie> I'm guessing it fails when it's trying to extend that (?:[^/\\]|\\.) pattern modified with *, since there's a lot of possibilities-except-not-really for backtracking there. You might actually try something like (?:(?>[^/\\]*)|\\.)* -- at least that should match long strings of non-escaped characters as a single blorb.
19:46:51 <fizzie> Though that's just a minor help, I'm guessing any reasonable /// program has quite a lot of escaped stuff in it.
19:47:10 <oerjan> er i just tried (?>[^/\\]*|\\.)*
19:47:16 <oerjan> didn't help here
19:47:20 <oerjan> although...
19:47:25 <fizzie> Yes, but that's different.
19:47:32 <ehird> What's the defined behaviour of
19:47:34 <ehird> /a
19:47:36 <ehird> undefined?
19:47:37 <fizzie> I'm not sure how different, though.
19:47:41 <AnMaster> /a?
19:47:47 <AnMaster> where
19:47:53 <ehird> in Slashes.
19:48:01 <AnMaster> hm
19:48:03 <oerjan> fizzie: oh, and long strings of non-escaped characters are useful for what i'm currently doing
19:48:13 <AnMaster> ehird, does it have that?
19:48:20 <oerjan> *useless
19:48:26 <ehird> If it's a /, characters are taken up to the next /
19:48:29 <oerjan> how the heck did i mistype that
19:48:31 <ehird> —[[slashes]]
19:49:01 <oerjan> ehird: don't know but my interpreter just gives up then
19:49:05 <oerjan> and quits
19:49:06 <ehird> yeah, so will mine
19:49:37 <oerjan> fizzie: er, i miscopied you
19:49:55 <oerjan> i'm trying (s!^/((?>[^/\\]|\\.)*)/((?>[^/\\]|\\.)*)/!!s)
19:50:00 <oerjan> and that didn't help here
19:50:22 <oerjan> !delinterp slashes
19:50:22 <EgoBot> Interpreter slashes deleted.
19:50:35 <AnMaster> !help
19:50:36 <EgoBot> Supported commands: addinterp bf_txtgen daemon daemons delinterp fyb help info kill userinterps 1l 2l adjust asm axo bch bct befunge befunge98 bf bf16 bf32 bf8 bfbignum boolfuck c chiqrsx9p choo cintercal clcintercal cxx dimensifuck echo forth glass glypho hello kipple lambda lazyk linguine malbolge ook pbrain perl qbf rail rhotor rot13 sadol sceql sh show test trigger udage01 underload unlambda whirl yodawg
19:50:39 <oerjan> !addinterp slashes perl http://oerjan.nvg.org/esoteric/slashes/slashes.pl
19:50:39 <EgoBot> Interpreter slashes installed.
19:50:48 <AnMaster> !userinterps
19:50:48 <EgoBot> Installed user interpreters: bct bfbignum chiqrsx9p choo echo hello ook rot13 slashes yodawg
19:50:49 <oerjan> !slashes http://oerjan.nvg.org/esoteric/slashes/crashtest.sss
19:50:50 <EgoBot> Complex regular subexpression recursion limit (32766) exceeded at /tmp/input.19509 line 16, <> line 516.
19:50:53 <AnMaster> !perl help
19:50:54 <oerjan> nah
19:51:00 <oerjan> still the same
19:51:00 <AnMaster> !perl print hi
19:51:04 <AnMaster> no?
19:51:16 <oerjan> !perl print "hi"
19:51:16 <EgoBot> hi
19:51:16 <AnMaster> !perl print "hi"
19:51:17 <fizzie> I don't think it should help in that case, since it's just matching that single character as an independent blorb. But I guess my version won't necessarily help either.
19:51:17 <EgoBot> hi
19:51:17 <AnMaster> ah
19:51:39 <AnMaster> oerjan, does it work when run on your own computer
19:52:22 <oerjan> i don't have perl there
19:52:26 <oerjan> i run it on nvg
19:52:38 <oerjan> (shell account)
19:52:40 <AnMaster> what sort of computer doesn't have perl these days...
19:52:46 <ehird> a windows one
19:52:47 <fizzie> oerjan: Anyway, there are experimental-and-subject-to-change "Special Backtracking Control Verbs" in (at least) 5.10; if you write (*PRUNE) somewhere it should clear the backtracking tree at that point; I'm not sure if it helps with that recursion limit, though. And I don't know if that's in 5.8.
19:52:48 <AnMaster> aha
19:52:50 <AnMaster> true
19:52:51 <ehird> which oerjan uses
19:52:58 <ehird> he also uses IE, just so you can get more riled up
19:53:01 <AnMaster> activestate perl sounds familiar for windows
19:54:02 <ehird> (dest,xs'') = toSlash xs''
19:54:06 <ehird> count of 's fail
19:54:20 <AnMaster> ehird, I'm pretty sure I remember oerjan using ubuntu for a while? Or was it oklopol
19:54:28 <ehird> oklopol
19:54:30 <AnMaster> aha
19:54:38 <ehird> oerjan: the example program,
19:54:38 <ehird> \
19:54:39 <ehird> /foo
19:54:41 <ehird> /foo/bar
19:54:43 <ehird> how does execution go there?
19:54:50 <ehird> replace foo\n with foo
19:54:53 <ehird> and, uh...
19:55:08 <ehird> waitasecond
19:55:13 <ehird> "If it's not / or \, it's printed."
19:55:15 <ehird> it's then removed, right?
19:55:20 <AnMaster> the only way I can see that working is with newlines being stripped
19:55:29 <AnMaster> but I must be wrong about that
19:55:30 <oerjan> first it prints a newline
19:55:32 * ehird tries the / world! world!/Hello,/ world! world! world! program anyway
19:55:37 <ehird> simpler to understand
19:55:45 <ehird> *Main> run "/ world! world!/Hello,/ world! world! world!"
19:55:45 <ehird> (" world! world!","Hello,"," world! world! world!")
19:55:48 -!- M0ny has joined.
19:55:51 <ehird> easy peasy lemon squeezey
19:56:01 <AnMaster> ehird, not exactly right!
19:56:06 <ehird> it isn't executing
19:56:12 <AnMaster> ah
19:56:12 <ehird> it's just print-debugging
19:56:13 <oerjan> !slashes / world! world!/Hello,/ world! world! world!
19:56:13 <EgoBot> Hello, world!
19:56:15 <AnMaster> just tokenising
19:56:17 <AnMaster> or whatever
19:56:21 <ehird> let (source,xs') = toSlash xs
19:56:22 <ehird> (dest,xs'') = toSlash xs'
19:56:23 <AnMaster> wrong word for it
19:56:23 <ehird> in print (source,dest,xs'')
19:56:27 <ehird> parsing, pretty much
19:56:31 <AnMaster> yeah
19:56:42 <AnMaster> ehird, what bit in that handles the \
19:56:49 <oerjan> ehird: also can you make your interp more efficient by not backtracking all the way after a match?
19:57:02 <ehird> AnMaster: toSlash, and also run
19:57:06 <oerjan> the perl one obviously redoes the whole string
19:57:13 <ehird> oerjan: isn't that required?
19:57:22 <M0ny> Hello, world!
19:57:25 -!- KingOfKarlsruhe has joined.
19:57:29 <oerjan> ehird: i mean by not going further than necessary
19:57:34 -!- tombom_2 has joined.
19:57:45 <ehird> oerjan: esplain?
19:58:15 <oerjan> say, /foo/o/abcdeffffoooooo
19:58:29 <oerjan> you can throw away everything up to the e
19:58:37 <ehird> ooh, you're right
19:58:40 <ehird> oerjan: throw away is a bit strong
19:58:42 <ehird> it needs to be output
19:58:55 <ehird> oerjan: what about
19:59:02 <oerjan> and after the first match you don't need to go back to the very first f
19:59:03 <ehird> /foo/o//bar/quux/foo
19:59:08 <ehird> it gets a bit hairy
19:59:13 <AnMaster> /throw away/put in the already done list/throw away
19:59:14 <AnMaster> :P
19:59:24 <AnMaster> (right?)
19:59:38 <oerjan> -> /bar/quuux/o
19:59:41 <AnMaster> !slashes /foo/o//bar/quux/foo
19:59:42 <EgoBot> o
19:59:55 <AnMaster> !slashes /foo/foo/bar
19:59:55 <EgoBot> bar
19:59:57 <AnMaster> um
20:00:03 <ehird> oerjan: but, /bar/quuux/o isn't rewinding
20:00:06 <ehird> it's the bad case you said
20:00:10 <ehird> oerjan: so, check for / and don't do it?
20:00:14 <ehird> that sounds like a hack
20:00:21 <ehird> if you give some more precise semantics it's done
20:00:22 <AnMaster> <ehird> \
20:00:22 <AnMaster> <ehird> /foo
20:00:22 <AnMaster> <ehird> /foo/bar
20:00:25 <AnMaster> I wonder too
20:00:33 <oerjan> ehird: i've pondered it a bit and doing it perfectly may be awkward
20:00:51 <AnMaster> <ehird> foo/foo/bar
20:00:53 <AnMaster> err
20:00:57 <AnMaster> !slashes foo/foo/bar
20:00:58 <EgoBot> foo
20:01:01 <oerjan> but you can (1) check initial characters (2) not backtrack more than the length of the matched string
20:01:04 <ehird> oerjan: how about "output-with-escapes and throw away everything up to either: the first unescaped / or the term we're looking for"
20:01:07 <AnMaster> thought I had !slashes in front not <ehird>
20:01:07 <AnMaster> sorry
20:01:19 <AnMaster> !slashes foo/foo/bar/quux
20:01:19 <EgoBot> fooquux
20:01:26 <AnMaster> !slashes foo/foo/bar/qufooux
20:01:27 <EgoBot> fooqubarux
20:01:33 <AnMaster> !slashes /foo//qufooux
20:01:33 <EgoBot> quux
20:01:36 <oerjan> ehird: you cannot output until you are sure the match doesn't cause an infinite loop
20:01:38 <AnMaster> right
20:01:47 <ehird> oerjan: this sounds more and more ugly
20:01:53 <AnMaster> still doesn't explain the multiline example that ehird pasted
20:02:23 <oerjan> AnMaster: let's use space instead of newline
20:02:30 <oerjan> \ /foo /foo/bar
20:02:45 <oerjan> output ' ' -> /foo /foo/bar
20:02:45 <ehird> there's no "foo " in the program
20:02:47 <fizzie> oerjan: You don't have to backtrack in the Perl interpreter either: you can use pos($str) = x; to set the position where \G matches, and then nail your replacing regular expression with that. (Although the savings there might be more than offset by the overhead of having to "replace" everything from the \G point with itself.)
20:02:51 <oerjan> -> bar
20:02:57 <oerjan> indeed not
20:02:58 <ehird> ah
20:03:02 <ehird> so it's a silly example :P
20:04:13 <ehird> oerjan: i'll implement without
20:04:14 <ehird> and mod later
20:04:18 <AnMaster> !slashes /foo/bar/foo
20:04:19 <EgoBot> bar
20:04:19 <ehird> that's just the expressive power of HASKOLI
20:04:22 <AnMaster> !slashes /foo/b\\ar/foo
20:04:23 <EgoBot> bar
20:04:25 <AnMaster> !slashes /foo/b\ar/foo
20:04:25 <EgoBot> bar
20:04:27 <AnMaster> err
20:04:29 <AnMaster> !slashes /foo/b\\ar/foo
20:04:29 <EgoBot> bar
20:04:34 <ehird> !slashes foo/foo/bar/foo
20:04:35 <EgoBot> foobar
20:04:35 <AnMaster> surely that is wrong
20:04:41 <AnMaster> oerjan, ^
20:04:55 <AnMaster> !slashes /foo/b\\\\ar/foo
20:04:55 <pikhq> GregorR: You know how you were wanting C++->C compilation? llvm can do it.
20:04:55 <EgoBot> bar
20:04:57 <AnMaster> !slashes /foo/b\\\ar/foo
20:04:58 <EgoBot> bar
20:05:01 <AnMaster> !slashes /foo/b\\\\\\ar/foo
20:05:02 <EgoBot> bar
20:05:05 <pikhq> llvm has a GCC frontend, and it can target C.
20:05:07 <AnMaster> oerjan, sure that is correct?
20:05:20 <AnMaster> it doesn't seem to be to me
20:05:28 <oerjan> eek
20:05:43 <AnMaster> wow that was fun. Making oerjan say "eek"
20:05:50 <AnMaster> ;P
20:06:02 <oerjan> EgoBot bug
20:06:13 <AnMaster> oerjan, oh?
20:06:15 <AnMaster> GregorR, ^
20:06:16 <AnMaster> bug
20:06:19 <pikhq> The resulting C code when compiled won't fully comply with the C++ ABI, but it's otherwise correct.
20:06:25 <oerjan> the last one prints b\ar here
20:06:51 <AnMaster> <AnMaster> !slashes /foo/b\\\\\\ar/foo <oerjan> the last one prints b\ar here <-- what? There are way more \ than that
20:06:52 <oerjan> /foo/b\\\\\\ar/foo -> b\\\ar
20:06:52 <AnMaster> right
20:07:00 <AnMaster> ah
20:07:02 <AnMaster> true
20:07:25 <oerjan> !slashes \\\\\\\\
20:07:25 <EgoBot> \\
20:07:34 <AnMaster> !slashes /foo/b\\\\\\\\ar/foo
20:07:35 <EgoBot> b\ar
20:07:37 <AnMaster> hm
20:07:39 <AnMaster> !slashes /foo/b\\\\\\\ar/foo
20:07:39 <EgoBot> bar
20:07:40 <AnMaster> !slashes /foo/b\\\\\\ar/foo
20:07:41 <EgoBot> bar
20:07:44 <oerjan> clearly egobot does some unescaping of its own
20:07:45 <AnMaster> !slashes /foo/b\\\\\ar/foo
20:07:45 <EgoBot> bar
20:07:47 <AnMaster> !slashes /foo/b\\\\ar/foo
20:07:48 <EgoBot> bar
20:07:50 <AnMaster> yeah
20:07:55 <AnMaster> it is a bug still
20:07:57 <AnMaster> in EgoBot
20:08:09 <AnMaster> !slashes \
20:08:13 <AnMaster> !slashes \\
20:08:16 <AnMaster> ok
20:08:18 <AnMaster> that is wrong
20:08:24 <AnMaster> that should output a \
20:08:27 <AnMaster> as far as I can see
20:08:40 <AnMaster> !slashes /foo/b\/ar/foo
20:08:40 <EgoBot> b
20:08:46 <AnMaster> err
20:08:47 <AnMaster> wut
20:08:52 <AnMaster> !slashes /foo/b\\\/ar/foo
20:08:53 <EgoBot> b/ar
20:08:56 <AnMaster> ah
20:09:02 <AnMaster> !slashes /foo/b\\\/a\\\/r/foo
20:09:02 <EgoBot> b/a/r
20:09:03 <oerjan> the interpreter gives up if the code ends with an incomplete command such as \
20:09:44 <AnMaster> !slashes /a/A/b/B/r/R/foo/b\\\/a\\\/r/foo
20:09:45 <EgoBot> bRb/A/r
20:09:47 <AnMaster> no
20:09:54 <AnMaster> that is wrong oerjan I think
20:10:03 -!- tombom_2 has left (?).
20:10:07 <AnMaster> unless I'm mistaken
20:10:08 -!- tombom_2 has joined.
20:10:15 <AnMaster> !slashes /a/A/b/B/r/R/foo/bar/foo
20:10:15 <EgoBot> bRbAr
20:10:25 <oerjan> assuming EgoBot decodes that to /a/A/b/B/r/R/foo/b\/a\/r/foo
20:10:35 <oerjan> before sending it to ///
20:10:36 <AnMaster> wait hm
20:10:45 <AnMaster> !slashes /a/A//b/B//r/R/foo/bar/foo
20:10:46 <EgoBot> foo
20:10:50 <AnMaster> no. Not that either
20:11:04 <AnMaster> I want upper case BAR output
20:11:12 <AnMaster> !slashes /a/A//b/B//r/R//foo/bar/foo
20:11:13 <EgoBot> BAR
20:11:14 <AnMaster> aha
20:11:23 <oerjan> -> /foo/B\/A\/R/foo
20:11:24 <ehird> oerjan: I almost have a working slashes
20:11:28 <ehird> with only one butt-ugly function!
20:11:30 <AnMaster> oerjan, yeah I see now
20:12:22 <ehird> *Main> replace "abc" "def" "abcdef"
20:12:22 <ehird> "defabc"
20:12:24 <ehird> LOL
20:12:26 <ehird> WAT
20:12:34 <ehird> *Main> replace "abc" "def" "abcxxx"
20:12:34 <ehird> "defabc"
20:12:49 <oerjan> for a certain value of "almost"
20:12:56 * ehird attempts to clear head
20:13:05 * ehird cuts out replace function, writes better one
20:14:08 -!- olsner has quit ("Leaving").
20:14:55 <ehird> oerjan: the basic problem is that "replace the first instance of this with this or do nothing if there isn't one" is not an intuitive operation
20:15:13 <oerjan> you can say that
20:15:41 <oerjan> anyway i have an idea that you might use a zipper
20:16:06 <oerjan> as in, pass the characters already checked in reverse
20:16:25 <oerjan> easy to backtrack a short length then
20:17:18 <Deewiant> replace _ _ [] = []; r what with s@(x:xs) = let (a,b) = splitAt (length what) s in if a == what then with ++ b else x : replace what with xs
20:17:21 <ehird> *Main> replace "abc" "def" "abcdef"
20:17:21 <ehird> "defdef"
20:17:21 <Deewiant> Or something.
20:17:22 <ehird> *Main> replace "abc" "def" "aaabcdef"
20:17:24 <ehird> "defdef"
20:17:26 <ehird> *Main> replace "abc" "def" ""
20:17:28 <ehird> ""
20:17:30 <ehird> score
20:17:32 <ehird> Deewiant:
20:17:32 <Deewiant> ehird: Fail.
20:17:34 <ehird> replace :: String -> String -> String -> String
20:17:36 <ehird> replace [] r ys = r ++ ys
20:17:38 <ehird> replace _ _ [] = []
20:17:40 <ehird> replace s@(x:xs) r (y:ys)
20:17:42 <ehird> | x == y = replace xs r ys
20:17:44 <ehird> | otherwise = replace s r ys
20:17:46 <ehird> much simpler
20:17:48 <ehird> what
20:17:50 <ehird> how is that fail
20:17:51 <Deewiant> ehird: otherwise = y : replace s r ys
20:17:55 <ehird> oh
20:17:57 <ehird> true enough :-)
20:18:08 <ehird> Deewiant: it also doesn't handle this
20:18:16 <ehird> *Main> replace "abc" "def" "abx"
20:18:16 <ehird> ""
20:18:21 <ehird> i knew it couldn't be so trivial
20:18:28 <Deewiant> Shouldn't that otherwise handle it
20:18:40 <ehird> Deewiant: no, read it; it chops off the first two chars which do match
20:18:41 <Deewiant> Just use mine :-P
20:18:45 <ehird> but then the last one doesn't match, oshi-
20:18:47 <ehird> and is yours efficient?
20:18:55 <Deewiant> No, you should precompute length what
20:19:09 <ehird> ressir
20:19:10 <ehird> *yessir
20:19:11 <Deewiant> Other than that; efficient enough.
20:19:14 <Deewiant> :-P
20:20:46 <Deewiant> Alternatively, if what could be infinite, do something like; replace what with s@(x:xs) = if what `isPrefixOf` s then with ++ drop (length what) s else x : replace what with xs
20:21:22 <oerjan> erm if what could be infinite isPrefixOf is not going to finish
20:21:32 <Deewiant> Yes it will
20:21:34 <Deewiant> When s runs out
20:21:51 <ehird> *Main> replace "abc" "def" "abxabcdef"
20:21:51 <ehird> "abxdefdef"
20:21:52 <ehird> Kay.
20:22:00 <Deewiant> repeat 1 `isPrefixOf` [] --> False
20:22:18 <ehird> *Main> run "/ world! world!/Hello,/ world! world! world!"
20:22:18 <ehird> Hello, world!*Main>
20:22:20 <ehird> Fuck yeah!
20:22:37 <ehird> Now, oerjan, I will run 99bob, then your simpler counter.
20:22:41 <ehird> Then, I will implement your efficiency thing.
20:23:16 <ehird> oerjan: Epic unsuccess.
20:23:21 <oerjan> heh
20:23:32 <ehird> oerjan: You CAN replace inside future ///s, right?
20:23:38 <ehird> I get:
20:23:38 <oerjan> certainly
20:23:38 <ehird> *Main> run prog
20:23:39 <ehird> 99 bottles of beer on the wall,
20:23:41 <ehird> 99 bottles of beer
20:23:43 <ehird> Take one down, pass it around
20:23:45 <ehird> 98 bottles of beer on the wall.
20:23:47 <ehird> 98#98$97%97#97$96%96#96$95%95#95$94%94#94$93%93#93$92%92#92$91%91#91$90%90#90$89%89#89$88%88#88$87%87#87]
20:23:50 <ehird> [more crap]
20:23:52 <ehird> then the 1 verse
20:24:15 <oerjan> you are not redoing the replacement after success...
20:24:20 <ehird> Ah.
20:24:21 <ehird> Ah.
20:24:21 <oerjan> it would seem
20:24:25 <ehird> Yes, yes that would be it.
20:25:16 <ehird> findFixPoint :: (Eq a) => (a -> a) -> a -> a
20:25:17 <ehird> findFixPoint f x
20:25:18 <ehird> | x == x' = x
20:25:20 <ehird> | otherwise = findFixPoint f x'
20:25:22 <ehird> where x' = f x
20:25:24 <ehird> A trusty helper.
20:25:32 <ehird> It wooooooooooooooooooooooooorks!
20:25:38 <oerjan> not very efficient though
20:25:43 <ehird> What?
20:25:45 <ehird> Whyever not?
20:25:55 <ehird> oerjan: it outputs all at once; I wonder why?
20:26:00 <ehird> prob'ly buf'ring
20:26:00 <oerjan> that findFixPoint will check all through
20:26:08 <ehird> and, wat?
20:26:18 <Deewiant> findFixPoint = until =<< ap (==)
20:26:25 <ehird> Deewiant: i'm no obfuscator
20:26:52 <Deewiant> findFixPoint f = until (ap (==) f) f
20:26:59 <ehird> oerjan: does the 99bob program output all at once?
20:26:59 <Deewiant> findFixPoint f = until (\x -> x == f x) f
20:27:01 <Deewiant> Pick one :-P
20:27:18 <oerjan> hm more or less i should think
20:27:29 <oerjan> it would do all the substitutions early
20:27:54 <ehird> right
20:28:00 <ehird> oerjan: same with thue-morse?
20:28:08 <oerjan> ehird: that findFixPoint is going to be inefficient as the changes come later and later in the string
20:28:13 <ehird> ah
20:28:14 <Deewiant> findFixPoint f = fmap snd . find (uncurry (==)) . (zip `ap` tail) . iterate f
20:28:14 <ehird> right
20:28:21 <ehird> oerjan: but that's just your optimization; I can fix that later.
20:28:30 <ehird> and what, oerjan, about infinite loops?
20:28:36 <ehird> oh, you can just check if dest contains source
20:28:41 <ehird> oerjan: mmnope
20:28:44 <ehird> oerjan: take, for example
20:28:46 * oerjan looks up thue-morse
20:29:15 <oerjan> i was wondering if you could have an infinite loop without strict containment
20:29:15 <ehird> oerjan: /axx/ax/aaxxx → aaxx
20:29:21 <ehird> your don't-backtrack doesn't handle that
20:29:29 <oerjan> huh?
20:29:31 <ehird> also, do these examples have newlines at the end?
20:29:40 <ehird> oerjan: they handle → aaxx
20:29:42 <ehird> but then don't backtrack
20:29:45 <oerjan> i didn't say you _shouldn't_ backtrack
20:29:45 <ehird> and so mixx the extra axx replacement
20:29:46 <Deewiant> You can backtrack a limited amount
20:29:55 <Deewiant> You don't need to backtrack all the way, though
20:29:57 <oerjan> i said you shouldn't backtrack all the way
20:30:02 <ehird> oerjan: your counter works
20:30:09 <oerjan> yay
20:30:12 <ehird> oerjan: it gets slower every time, of course
20:30:20 <ehird> oerjan: do you mean:
20:30:25 <ehird> only backtrack to the start of the replacement?
20:30:46 <oerjan> backtrack to start of replacement - length of replaced string
20:30:59 <oerjan> + 1, i think
20:31:05 <ehird> okeydokey
20:31:19 <ehird> oerjan: er minus length of replaced string?
20:31:25 <ehird> so if you start replacing at 5, and replace with a 3 char string
20:31:25 <oerjan> and that can backtrack further if there is a match there
20:31:27 <ehird> you go back to 2?
20:31:51 <oerjan> the string that is replaced from
20:32:20 <ehird> excuse me?
20:32:42 <oerjan> /abc/cdefg/ababcde
20:32:59 <ehird> *Main> run "/abc/cdefg/ababcde/"
20:32:59 <ehird> cdefgdefgde*** Exception: slashes.hs:(31,0)-(33,23): Non-exhaustive patterns in function toSlash
20:33:01 <ehird> nice typo handling
20:33:16 <oerjan> -> abcdefgde -> cdefgdefgde
20:33:36 <ehird> toSlash [] = error "OHGAHGHGHAGH WHAT DOES IT MEAN!! AN ARMY OF SNEEZING WANGS STALKS MY NIGHTMARE"
20:33:41 <oerjan> abc has length 3, so you only need to go back 3-1
20:33:51 <ehird> Hmm, same error.
20:34:01 <ehird> wait what
20:34:02 <ehird> toSlash :: String -> (String,String)
20:34:03 <ehird> toSlash [] = error "OHGAHGHGHAGH WHAT DOES IT MEAN!! AN ARMY OF SNEEZING WANGS STALKS MY NIGHTMARE"
20:34:06 <ehird> toSlash ('/':xs) = ("",xs)
20:34:08 <ehird> toSlash ('\\':x:xs) = is x xs -- curses! foiled again!
20:34:10 <ehird> toSlash (x:xs) = is x xs
20:34:12 <ehird> i see no inexhaustive patterns
20:34:14 <ehird> *non-exhaustive
20:34:54 <oerjan> indeed not
20:34:58 <ehird> owell
20:34:58 <ehird> oh
20:35:01 <ehird> I saved to the wrong place
20:35:02 <ehird> kekekeke
20:35:16 <ehird> i was wondering why it accepted my invalid syntax too
20:36:09 -!- psygnisfive has quit (Remote closed the connection).
20:36:18 <ehird> oerjan: okay, so here's the rule
20:36:38 <oerjan> for further tests, http://oerjan.nvg.org/esoteric/slashes/counter{1,3,4}.sss
20:36:41 <ehird> After making a replacement, backtrack to position start_of_replacement - length_of_replacement
20:36:45 <ehird> oerjan: yesno?
20:36:49 <oerjan> (2 is the simple one you already tried)
20:37:09 <oerjan> ehird: terminology confusion
20:37:12 -!- Sgeo has joined.
20:37:22 <oerjan> what do you call the first and second arguments of /// ?
20:37:30 <ehird> Source, replacement.
20:37:37 <ehird> but
20:37:38 <Deewiant> Replacee, replaceand
20:37:41 <oerjan> length_of_source
20:37:45 <ehird> oerjan:
20:37:45 <Sgeo> Quick Linux question: If I make /home unwritable and owned by root, does that make it as secure as a LiveCD
20:37:54 <ehird> Sgeo: lol, no.
20:37:57 <oerjan> also, + 1 at end
20:38:11 <ehird> oerjan: clearer:
20:38:23 <ehird> After making a replacement, backtrack to position start_of_where_replacement_begins_in_string - length_of_replacement_used
20:38:30 <ehird> + 1
20:38:37 <oerjan> nope, length_of_source_used
20:38:40 <ehird> ah
20:39:18 <ehird> ok, need to mod replace to tell me where the replacement begins :-P
20:39:27 <oerjan> !slashes /abc/cde/ababababcde
20:39:27 <EgoBot> cdedededede
20:39:28 <ehird> I'll just make it return (beforeReplacement,afterAndIncludingReplacement)
20:39:59 <Sgeo> ehird, how so?
20:40:28 <Sgeo> Is it at least close enough?
20:40:33 <pikhq> Sgeo: What you do to make it as secure as a LiveCD is to make your entire filesystem read-only and unioned with a RAM filesystem.
20:40:33 <oerjan> ehird: i repeat my suggestion to use a zipper
20:40:35 <ehird> Sgeo: what are you trying to do
20:40:44 <ehird> oerjan: I've never understood 'em.
20:40:46 <oerjan> (reverse of previous, remainder)
20:40:47 <pikhq> ;)
20:41:17 <ehird> *Main> replace "abc" 3 "def" "xxabc"
20:41:17 <ehird> ("xb","")
20:41:19 <ehird> Er.
20:41:28 <Sgeo> ehird, have a secure OS that I can use when I need to do something with sensitive information
20:41:30 <oerjan> ehird: let's say you've done the first match of that /abc/cde/ababababcde
20:41:42 <ehird> Sgeo: you're 20, why are you handling FBI documents?
20:41:53 <Sgeo> ehird, I'm handling my social security number
20:41:56 <oerjan> then your zipper state is then ("bababa", "cdede")
20:42:04 <ehird> Sgeo: encrypt it with GPG, put it in ~.
20:42:04 <ehird> done
20:42:16 <ehird> Sgeo: also, you think that thing's secure?
20:42:21 <ehird> err, you give it to like a thousand businesses
20:42:46 <Sgeo> Better that than 1000 businesses and one hacker
20:42:57 <ehird> what's the hacker going to do
20:42:58 <pikhq> ehird: You're only legally mandated to give it to, lessee...
20:43:03 <ehird> give it to ANOTHER BUSINESS?!
20:43:05 <pikhq> The IRS, your employer... I think that's it.
20:43:06 <ehird> oh woe!
20:43:11 <ehird> pikhq: yeah, but in practice...
20:43:15 <pikhq> Maybe some other government agency that I'm forgetting.
20:43:19 <ehird> also, your employer is still a huge leak
20:43:33 <pikhq> ehird, in every other instance, you can give out a fake one with no repercussions.
20:43:47 <Sgeo> I already gave the college my real one
20:44:08 <ehird> pikhq: OTOH, not many people do.
20:45:02 <ehird> argh, why isn't thsi code working
20:45:04 <ehird> is it because it hates me
20:45:06 -!- tombom_2 has left (?).
20:45:51 * AnMaster wonders why erlang think doing Node#bfn.extra#bfe_loop.input is a syntax error before the second #
20:46:32 * pikhq recommends 666-69-0666
20:46:41 <oerjan> ehird: oh i just realized something
20:46:48 <oerjan> \
20:46:48 <oerjan> /foo
20:46:48 <oerjan> /foo/bar
20:46:53 <oerjan> is _not_ one example
20:46:56 <oerjan> it's three
20:46:59 <ehird> o
20:47:05 <ehird> :-D
20:47:10 <oerjan> each of which are an incomplete program which does nothing
20:47:14 <oerjan> *is
20:47:18 <Sgeo> pikhq, if we ever go to the same college, and I end up using that..
20:47:29 <ehird> Sgeo: THEN THE WORLD WILL EXPLOOOOOOOOOOOOOODE!!
20:47:37 <ehird> ((And turned into an adult-only area.))
20:47:47 <ehird> ((Where you will have to give proof of your adulthood. Or shut down your store!))
20:47:54 <Sgeo> I'm just thinking it could cause problems for the college
20:48:00 <Sgeo> otoh, that could be fun
20:48:00 <pikhq> Sgeo: Better still, ask them which law requires that you give them your SSN.
20:48:20 <pikhq> Also, there are a few cases where two people have been assigned the same SSN.
20:48:26 <Sgeo> oO
20:48:34 <ehird> Wonder what Dubya's SSN is.
20:48:44 <Sgeo> ....I only have 9GB free?
20:50:24 <oerjan> /abc/bcab/aabcc -> abcabc -> bcababc -> bcabbcab
20:50:29 <oerjan> not quite working
20:50:36 * ehird reads his replace function v e r y c a r e f u l l y
20:50:44 <pikhq> ehird: Dunno, but I know Nixon's. 567-68-0515.
20:50:52 <ehird> pikhq: yeah
20:53:58 <ehird> Deewiant: your function broke catastrophically when i modded it :<
20:54:07 <ehird> replace :: String -> Int -> String -> String -> (String,String)
20:54:07 <ehird> replace _ _ _ "" = ("","")
20:54:08 <ehird> replace src srcLen dest s@(x:xs) =
20:54:08 <Deewiant> Don't mismod it :-P
20:54:10 <ehird> let (before,after) = splitAt srcLen s
20:54:12 <ehird> in if before == src
20:54:14 <ehird> then ("",dest ++ after)
20:54:16 <ehird> else let (before',after') = replace src srcLen dest after
20:54:18 <ehird> in (x:before',after')
20:54:20 <ehird> i can't see the flaw! :)
20:54:22 <ehird> *:(
20:54:46 <Sgeo> WoG is a bit less enjoyable perhaps after seeing most of the solutions
20:54:49 <Deewiant> ehird: Don't call replace with after, call it with xs
20:54:57 <ehird> O
20:55:03 <ehird> ... didn't you do that Deewiant?
20:55:11 <Deewiant> No, I called it with xs.
20:55:15 <ehird> Huh. Kay.
20:55:20 <ehird> Works now ^_____________________^;;;;;;;;;
20:55:31 <ehird> oerjan:
20:55:32 <ehird> *Main> replace "abc" 3 "def" "xabc"
20:55:32 <ehird> ("x","def")
20:55:37 <Deewiant> Otherwise /abc/foo/aabc wouldn't work, for instance.
20:55:37 <ehird> so we backtrack to |def, right?
20:55:39 <ehird> where | = us
20:55:41 <Deewiant> Since it'd jump to "c".
20:57:57 <ehird> *Main> doReplacements "abc" "def" "aaabcxxabcxxdefabc"
20:57:57 <ehird> "aadefxxdefxxdefdef"
20:57:59 <ehird> Sucks ess.
20:58:15 <ehird> oerjan: link to latest counter?
20:58:18 <ehird> http://oerjan.nvg.org/esoteric/slashes/counter3.sss?
20:58:31 <oerjan> counter4.sss is the latest
20:58:45 <ehird> oerjan: ... but not the most practical, it seems
20:58:49 <oerjan> :D
20:59:01 <ehird> http://oerjan.nvg.org/esoteric/slashes/counter4.sss
20:59:01 <ehird> er
20:59:04 <ehird> /Only / and \ from this point on/
20:59:06 <ehird> a patent lie
20:59:08 <ehird> there's spaces and |
20:59:10 <ehird> and newlines
20:59:17 <oerjan> after the substitutions prior to that point
20:59:48 <ehird> oerjan: Congrats; your program now runs in... well, it's not constant time; it increases each time to the increased length of string to scan. But it's a lot less of an increase.
20:59:59 <oerjan> ah
21:00:01 <ehird> oerjan: What buffering does your interp use? Regular line-based buffering?
21:00:11 <ehird> That's what I'm doing atm.
21:00:11 -!- asiekierka has quit (Read error: 110 (Connection timed out)).
21:00:25 <oerjan> actually i put it on character buffering recently for debugging
21:00:40 <ehird> Which would you suggest? Since it's now infallably perfect.
21:00:49 <oerjan> (every print statement that means)
21:01:14 <oerjan> it would be nice for it to work with output that contains no newlines, and is infinite
21:01:23 <oerjan> (See that counter4.sss)
21:01:53 <oerjan> also, for infallably perfect please try http://oerjan.nvg.org/esoteric/slashes/bct.sss which is what made perl crash in the first place
21:01:57 <ehird> oerjan:
21:01:58 <ehird> [ehird:~/Code/scraps/2009-05/slashes] % time ./slashes < counter3.sss > f
21:01:59 <ehird> ^C
21:02:01 <ehird> ./slashes < counter3.sss > f 1.25s user 0.03s system 99% cpu 1.284 total
21:02:03 <ehird> [ehird:~/Code/scraps/2009-05/slashes] % wc -l f
21:02:05 <ehird> 945 f
21:02:07 <ehird> Not bad.
21:02:23 <ehird> The first 100 or so lines swim past immediately on the terminal, too.
21:02:24 <oerjan> counter3.sss is about as efficient as counter2.sss, just a minor variation
21:02:42 <ehird> Also, infinite output with no newlines; roger that.
21:03:11 <oerjan> ehird: what happens with the bct.sss ?
21:03:35 <ehird> first tell me the expected output
21:03:37 <ehird> then I'll run it
21:03:43 <oerjan> it crashed on me before i got to check if it's any good
21:03:45 <oerjan> lessee
21:04:18 <oerjan> \//\/\ endlessly repeated, i think is what i intended
21:05:27 <oerjan> it's supposed to check the program looping of the 100101 program (no data handling yet)
21:06:00 <oerjan> and 0 -> /, 1 -> \
21:06:31 <ehird> [ehird:~/Code/scraps/2009-05/slashes] % time ./slashes counter3.sss > f
21:06:31 <ehird> ^C
21:06:32 <ehird> ./slashes counter3.sss > f 0.49s user 0.54s system 99% cpu 1.034 total
21:06:34 <ehird> [ehird:~/Code/scraps/2009-05/slashes] % wc -l f
21:06:36 <ehird> 368 f
21:06:37 -!- M0ny has quit ("Read error: 182 (Connection reset by beer)").
21:06:38 <ehird> bit of a regression
21:06:45 <ehird> [ehird:~/Code/scraps/2009-05/slashes] % time ./slashes counter3.sss > f
21:06:45 <ehird> ^C
21:06:47 <ehird> ./slashes counter3.sss > f 2.41s user 3.09s system 99% cpu 5.506 total
21:06:49 <ehird> [ehird:~/Code/scraps/2009-05/slashes] % wc -l f
21:06:49 <oerjan> the previous test was that counter4.sss, which only showed that the er, _slashes_ program looping worked
21:06:51 <ehird> 888 f
21:06:59 <ehird> oerjan: the regression is due to outputting lots and lots of *s individually
21:07:00 <oerjan> (as opposed to the BCT program)
21:07:11 <ehird> oerjan: doesn't matter though does it
21:07:14 <ehird> it's still wicked fast
21:07:19 <ehird> bct time
21:07:26 <ehird> % ./slashes bct.sss
21:07:27 <ehird> \/
21:07:28 <ehird> it then hangs
21:07:51 <ehird> oerjan: how did you add it to ze egobots?
21:08:16 <oerjan> with !addinterp slashes perl http://...
21:08:21 <ehird> ah
21:08:23 -!- Judofyr has joined.
21:08:23 <oerjan> unfortunately there is no haskell in it
21:08:27 <ehird> hey GregorR!
21:08:41 <ehird> GregorR: sudo apt-get install ghc on EgoBot, please.
21:08:45 <ehird> I'll be adding a new interpifoo.
21:08:47 <oerjan> ehird: well, at least it didn't crash at the same point for you
21:08:53 <oerjan> you actually got input
21:08:55 <ehird> GregorR: how do I add a compiled interp btw
21:08:56 <oerjan> *output
21:08:59 <ehird> oerjan: yep
21:09:03 <ehird> and it doesn't crash
21:09:03 <ehird> just hang
21:09:18 <ehird> total lines: 54, includign whitespace and comments (all one of them takes its own line)
21:09:21 <ehird> *including
21:09:24 <ehird> well, plus the 3 line header
21:09:37 <oerjan> in fact it's the correct output for the first iteration
21:09:41 <ehird> % ./slashes slashes
21:09:41 <ehird> ????
21:09:42 <ehird> $?8__PAGEZERO?__TEXT??__text__TEXT@#??
21:09:44 <ehird> Quine!
21:09:47 <ehird> Wellalmost.
21:09:57 <ehird> % ./slashes slashes.hs
21:09:57 <ehird> -- An interpreter for the
21:10:34 <oerjan> !slashes http://oerjan.nvg.org/esoteric/slashes/counter4.sss
21:10:36 <ehird> oerjan: yay, it uses constant memory on ///
21:10:50 <oerjan> hmph
21:10:54 <ehird> % ./slashes counter4.sss
21:10:54 <ehird> \/\\/\\\/\\\\/\\\\\/\\\\\\/\\\\\\\/\\\\\\\\/\\\\\\\\\/\\\\\\\\\\/\\\\\\\\\\\/\\\\\\\\\\\\/\\\\\\\\\\\\\/\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\\\\\\\\\/\\\\\\\\\\
21:10:59 <ehird> and so on
21:11:01 <ehird> it's a lot slower than counter3
21:11:04 <ehird> a lot lot slower
21:11:08 <oerjan> EgoBot doesn't handle output without newlines :(
21:11:17 <ehird> although it gets faster as it goes on; or rather it doesn't, but it seems like it does, because of its outputting a lot of \s in succession
21:11:27 <oerjan> heh :)
21:11:40 <oerjan> yes, the /\ only coding is much more verbose
21:11:48 <ehird> [ehird:~/Code/scraps/2009-05/slashes] % ./slashes
21:11:48 <ehird> slashes: No filename specified.
21:11:50 <ehird> [ehird:~/Code/scraps/2009-05/slashes] % ./slashes /dev/stdin
21:11:52 <ehird> /
21:11:54 <ehird> slashes: OHGAHGHGHAGH WHAT DOES IT MEAN!! AN ARMY OF SNEEZING WANGS STALKS MY NIGHTMARE
21:11:57 <ehird> The best error reporting system, methinks.
21:12:24 <oerjan> that may not be strictly according to spec, but who cares
21:12:33 <ehird> it is
21:12:46 <ehird> there is no program with unmatched /s
21:12:53 <ehird> "If it's a /, characters are taken up to the next /"
21:12:54 <oerjan> "The program ends when there is no longer enough of it to execute, e.g.:"
21:13:07 <oerjan> and then the three examples
21:13:08 <ehird> oerjan: i don't think that's a valid interpretation :P
21:13:18 <oerjan> um that's a quote
21:13:24 <oerjan> from the /// page
21:13:25 <ehird> right
21:13:25 <ehird> but
21:13:31 <ehird> oerjan: the program \ outputs a \ for me
21:13:34 <AnMaster> !slashes /
21:13:35 <ehird> do you think that's right :P
21:13:40 <AnMaster> !slashes a/a
21:13:41 <EgoBot> a
21:13:42 <oerjan> nope
21:13:49 <AnMaster> !slashes /a/b
21:13:59 <AnMaster> !slashes a/b/c
21:14:00 <EgoBot> a
21:14:01 <AnMaster> hm
21:14:05 <ehird> oerjan: okay then
21:14:26 <ehird> oerjan: I think that an unmatched // is invalid, though.
21:14:28 <ehird> But I'll do
21:14:30 <ehird> run "\\" = return ()
21:14:31 <AnMaster> !slashes \
21:14:34 <AnMaster> !slashes \\
21:14:40 <AnMaster> oh right
21:14:43 <AnMaster> the egobot bug
21:14:44 <ehird> % ./slashes fibonacci.sss
21:14:44 <ehird> */*/**/***/*****/********/*************/*********************/**********************************/*******************************************************
21:14:48 <AnMaster> GregorR, !!!!
21:14:51 <ehird> Takes 0.009s.
21:14:55 <ehird> \m/
21:15:19 <ehird> thuemorse takes from 0.012-0.016
21:15:45 <ehird> oerjan: oh, dear
21:15:49 <ehird> oh, nevermind
21:15:54 -!- kar8nga has joined.
21:15:55 <oerjan> what?
21:16:03 <ehird> oerjan: i got a hang after the first * on counter1.sss, but another line came and I realised it was just dog slow
21:16:03 <ehird> :D
21:16:09 <ehird> less than 1 line/sec
21:16:11 <AnMaster> um
21:16:15 <oerjan> oh
21:16:19 <AnMaster> source of that counter?
21:16:31 <ehird> wikipage.
21:16:32 <AnMaster> I want to see that epic program
21:16:38 <ehird> erm
21:16:38 <ehird> http://oerjan.nvg.org/esoteric/slashes/counter1.sss
21:16:40 <ehird> it's not very epic
21:16:47 <ehird> http://oerjan.nvg.org/esoteric/slashes/counter3.sss current sane version
21:16:57 <ehird> hey wait oerjan
21:17:02 <ehird> your interp is faster than mine on counter1
21:17:10 <AnMaster> why are you using \ so much btw
21:17:16 <oerjan> was afraid of that
21:17:17 <AnMaster> I mean literal ones
21:17:23 <oerjan> AnMaster: where?
21:17:23 <ehird> oh wait
21:17:26 <ehird> hmm
21:17:26 <ehird> wtf
21:17:29 <ehird> oerjan: why is it faster?
21:17:34 <AnMaster> oerjan, http://oerjan.nvg.org/esoteric/slashes/counter1.sss for example
21:17:39 <ehird> my algorithms are better, haskell is faster than perl, I used your optimization...
21:17:46 <AnMaster> or in http://oerjan.nvg.org/esoteric/slashes/counter3.sss
21:17:54 <AnMaster> less there in that
21:17:54 <oerjan> but perl has heavily optimized regexes
21:18:04 <Deewiant> ehird: "Haskell is faster than Perl"?
21:18:04 <oerjan> which is what my interpreter uses most
21:18:11 <ehird> Deewiant: GHC is,.
21:18:13 <ehird> *.
21:18:20 <oerjan> unfortunately they break on the large programs :(
21:18:21 <Deewiant> If you're doing string processing, I'm not at all surprised that Perl + arrays beats GHC + linked lists
21:18:21 <ehird> oerjan: right, but there's not much more to optimize than my code.
21:18:25 <AnMaster> depends on what exactly you are doing I guess
21:18:32 <ehird> Deewiant: The string processing is mostly linked-listy.
21:18:40 <Deewiant> ehird: That doesn't mean it's fast.
21:18:42 <ehird> There's not really anything much bytestring about it.
21:18:46 <AnMaster> Deewiant, can't you do arrays in GHC?
21:18:47 <Deewiant> Arrays tend to be faster even for linked-listy stuff.
21:18:48 <AnMaster> :P
21:18:48 <ehird> Besides, that should be a memory issue.
21:18:51 <Deewiant> AnMaster: Yes, you can.
21:18:52 <ehird> AnMaster: You can do ByteStrings.
21:18:55 <ehird> And also arrays.
21:18:56 <AnMaster> ah
21:18:59 <ehird> But ByteStrings are better.
21:19:40 <Deewiant> ehird: Some 8-10 bytes (?? I forget how many exactly) per char does not lead to speed
21:19:54 <ehird> Deewiant: That's memory.
21:20:00 <Deewiant> ehird: That's CPU cache.
21:20:04 <ehird> True enough.
21:20:09 <ehird> I can switch to [Int].
21:20:15 <Deewiant> As a bonus, linked lists aren't contiguous.
21:20:24 <Deewiant> [Int] is the same size as [Char], isn't it?
21:20:27 * ehird stabs Deewiant.
21:20:29 <Deewiant> I'd use [Word8].
21:20:32 <ehird> I'll use a bloody ByteString.
21:20:48 <ehird> A strict bytestring, even./
21:20:49 <oerjan> AnMaster: the fundamental reason for backslashes is so that you can copy things
21:20:59 <AnMaster> oerjan, hm ok
21:21:19 <oerjan> the looping happens by program self-replication, after all
21:21:45 <AnMaster> Deewiant, go write a slashes interpreter for Linux x86_64 in asm!
21:21:47 <AnMaster> :P
21:21:55 <ehird> Grr, you can't pattern match on bytestrings.
21:22:05 * AnMaster wonders if a slashes compiler make any sense.
21:22:07 <Deewiant> I'm not particularly interested in slashes.
21:22:24 <Deewiant> And I'm done with asm for the time being.
21:22:27 <AnMaster> ok
21:22:30 <oerjan> AnMaster: too self-modifying
21:22:36 <AnMaster> oerjan, yeah
21:23:05 <AnMaster> an optimising and program folding compiler would work
21:23:13 * AnMaster waits for oerjan to figure that out
21:23:27 <oerjan> nah that's not my sort of thing
21:24:04 <AnMaster> huh?
21:24:26 <oerjan> optimising compilers
21:24:28 <AnMaster> basically what ick does when given that command line option I forgot
21:25:28 <ehird> *Main> run (B.singleton forwardSlash)
21:25:28 <ehird> hi
21:25:30 <AnMaster> if program is deterministic and uses no input: run program, save output. Write a shell script wrapper for it.
21:25:30 <ehird> woot
21:25:33 <AnMaster> ;P
21:25:46 <oerjan> AnMaster: also that newer counter with less backslashes is quite deceptive, because i have just temporarily abbreviated <\\>\\\ to | :D
21:26:01 <AnMaster> oerjan, ouch
21:26:25 <oerjan> the older one at least used | internally, though inefficiently
21:26:28 <AnMaster> so... \|
21:26:29 <AnMaster> is
21:26:35 <AnMaster> um
21:26:41 <Deewiant> \<\\>\\\
21:26:41 <oerjan> | is like a prefix really
21:26:54 <oerjan> it "quotes" the next character
21:26:59 <AnMaster> yeah
21:27:10 <AnMaster> !slashes http://oerjan.nvg.org/esoteric/slashes/counter3.sss
21:27:13 <EgoBot> *
21:27:19 <AnMaster> is that expected?
21:27:24 <oerjan> yes
21:27:36 <oerjan> it sends the next lines as DCC CHAT
21:32:31 <ehird> *Main> run $ B.pack [backSlash,backSlash,97,10]
21:32:32 <ehird> \a
21:32:34 <ehird> getting there
21:34:55 <ehird> oerjan: one thing's for sure
21:35:02 <ehird> this bytestring haskell version will kick the perl interp's ass :)
21:35:04 <ehird> >:)
21:35:41 <oerjan> heh
21:35:46 -!- GregorR-L has joined.
21:37:58 <ehird> oerjan: so, you think that if you reach EOF in /foo, you stop executing?
21:38:13 <ehird> now *that's* something haskell
21:38:15 <ehird> 's not attuned to
21:38:22 <ehird> i can't even exitSuccess
21:38:24 <ehird> since I'm out of IO
21:38:51 <oerjan> Maybe is your friend?
21:38:56 <ehird> oerjan: what about /foo\<EOF>
21:39:00 <ehird> same result?
21:39:03 <GregorR-L> lawl @ \<EOF>
21:39:04 <ehird> and yeah, Maybe sounds right
21:39:07 <oerjan> sure
21:39:10 <ehird> GregorR-L: no, it's '\' eof
21:39:11 <ehird> :-P
21:39:22 <GregorR-L> Ohhhhhhhhhhh lehm
21:40:41 <ehird> O(n) cons is analogous to (:) for lists, but of different complexity, as it requires a memcpy.
21:40:44 <ehird> OSHI—
21:40:48 <ehird> time to restructure ::::))))))
21:41:11 <ehird> just have to track current string, trivial
21:43:11 <AnMaster> <oerjan> it sends the next lines as DCC CHAT
21:43:16 <AnMaster> that never happened?
21:43:21 <ehird> you didn't accept?
21:43:24 <AnMaster> ah wait
21:43:25 <AnMaster> <*status> DCC Chat Bounce (EgoBot): Timeout waiting for incoming connection [192.168.0.64:59319]
21:43:32 * AnMaster tries to figure out the reason
21:43:39 <AnMaster> possibly the IP!
21:45:12 <GregorR-L> Uhh, you shouldn't have an incoming connection, you should be establishing an outgoing connection to EgoBot.
21:45:22 <GregorR-L> And yes, even though some people have DCC problems, I still think this is the best solution :P
21:48:29 <oerjan> ehird: hm and yeah, thue-morse prints all at the end
21:48:45 <GregorR-L> !bf http://esoteric.sange.fi/brainfuck/bf-source/prog/beer.b
21:48:47 <EgoBot> 99 Bottles of beer on the wall
21:49:09 <GregorR-L> There, I increased the limit to be enough for 99 bottles :P
21:50:07 <oerjan> GregorR-L: it would be nice if you could also accept long lines, it's sort of a tradition to do infinite lazy programs on bots here
21:50:19 <oerjan> s/long/infinite/
21:50:44 <GregorR-L> What do you mean by "infinite lines" ...
21:50:56 <ehird> GregorR-L: for(;;)putchar('a')
21:51:19 <GregorR-L> That's an infinite line alright :P
21:51:23 <oerjan> ^ul ( *)(~:S(*)*~:^):^
21:51:24 <fungot> * ** *** **** ***** ****** ******* ******** ********* ********** *********** ************ ************* ************** *************** **************** ***************** ****************** ******************* ******************** ********************* ********************** *********************** ************************ ...too much output!
21:51:24 <AnMaster> <GregorR-L> Uhh, you shouldn't have an incoming connection, you should be establishing an outgoing connection to EgoBot.
21:51:26 <AnMaster> err
21:51:27 <AnMaster> no idea
21:51:40 <oerjan> GregorR-L: ^ example
21:51:57 <GregorR-L> Oh, just tell you when it gets cut off?
21:52:04 <AnMaster> !befunge98 'A,a,'A,@
21:52:04 <EgoBot> A
21:52:24 <oerjan> GregorR-L: for a start, actually print the line
21:52:41 <GregorR-L> !unlambda ( *)(~:S(*)*~:^):^
21:52:41 <EgoBot> ./interps/unlambda/unlambda.bin: file /tmp/input.21406: parse error
21:52:48 <GregorR-L> Well that's unique :P
21:52:49 <oerjan> !slashes http://oerjan.nvg.org/esoteric/slashes/counter4.sss
21:52:57 <oerjan> that doesn't print anything
21:53:04 <GregorR-L> It does print (truncated) very long lines.
21:53:08 <oerjan> because there are no newlines in it
21:53:14 <GregorR-L> Even with no newlines.
21:53:17 <oerjan> hm...
21:53:20 <GregorR-L> Or at least, it's certainly supposed to :P
21:53:28 <GregorR-L> !underload ( *)(~:S(*)*~:^):^
21:53:37 <GregorR-L> Well that ain't right.
21:54:09 <GregorR-L> OHHH, that program is an infinite loop.
21:54:16 <GregorR-L> It'll get cut off before it accepts any input.
21:54:23 <ehird> No shit.
21:54:31 <ehird> An infinite loop is the only way to output infinite characters.
21:54:32 * GregorR-L doesn't speak underload :P
21:54:32 <AnMaster> << PRIVMSG #esoteric :!befunge98 'A,a,'A,@
21:54:32 <AnMaster> >> :EgoBot!n=EgoBot@codu.xen.prgmr.com PRIVMSG #esoteric :+A
21:54:32 <AnMaster> >> :EgoBot!n=EgoBot@codu.xen.prgmr.com PRIVMSG AnMaster :<CTCP>DCC CHAT chat 1404135913 59867<CTCP>
21:54:35 <AnMaster> hm ok
21:55:04 <oerjan> GregorR-L: but it doesn't output slowly, so why shouldn't it reach the buffer limit first, and get printed?
21:55:25 <GregorR-L> oerjan: It always waits for either the program to complete or a newline to be printed :P
21:55:29 <AnMaster> GregorR, bouncer seems to mangle it somehow
21:55:41 <AnMaster> GregorR-L, fixed the \ bug yet?
21:55:41 <oerjan> well that's what we don't want, then
21:55:43 <AnMaster> !slashes \\
21:55:47 <AnMaster> !slashes \\\
21:55:49 <AnMaster> !slashes \\\\
21:55:49 <EgoBot> \
21:55:52 <AnMaster> no
21:55:54 <AnMaster> you didn't
21:56:01 <GregorR-L> WTFBBQ? That's a weird one.
21:56:08 <GregorR-L> !sh echo '\\'
21:56:09 <EgoBot> \
21:56:10 <AnMaster> !slashes /foo/ba\\\\r/foo
21:56:10 <EgoBot> bar
21:56:19 <AnMaster> that should output ba\r
21:56:20 * GregorR-L looks in to it.
21:56:21 <AnMaster> not bar
21:56:27 <oerjan> !perl print "\\"
21:56:28 <AnMaster> and oerjan said it wasn't in his code
21:56:30 <AnMaster> it worked locally
21:56:45 <AnMaster> ok. Seems the perl one is broken?
21:56:57 <AnMaster> actually the sh one too
21:56:57 <AnMaster> above
21:57:01 <AnMaster> <GregorR-L> !sh echo '\\'
21:57:01 <AnMaster> <EgoBot> \
21:57:05 <AnMaster> that is plain wrong indeed
21:57:23 <oerjan> !sh echo "\\"hi there"
21:57:23 <EgoBot> /tmp/input.21670: line 1: unexpected EOF while looking for matching `"'
21:57:34 <oerjan> oh well
21:57:38 <oerjan> !sh echo "\\"
21:57:46 <AnMaster> !befunge98 'A,a,'A,@
21:57:47 <EgoBot> A
21:57:53 <oerjan> o_O
21:58:20 <GregorR-L> !sh ghc
21:58:23 <EgoBot> ghc-6.8.2: no input files
21:58:39 <AnMaster> !befunge98 'A,a,'A,@
21:58:39 <EgoBot> A
21:58:43 <ehird> !sh cabal --help
21:58:44 <Deewiant> !sh ghc -e 'putStrLn "hello"'
21:58:44 <EgoBot> /tmp/input.21837: line 1: cabal: command not found
21:58:46 <EgoBot> hello
21:58:49 <AnMaster> * DCC CHAT to EgoBot lost (Remote host closed socket).
21:58:51 <AnMaster> hm
21:58:53 <AnMaster> kay
21:59:09 <GregorR-L> AnMaster: That should be after you retrieved all the data.
22:01:00 <AnMaster> GregorR-L, well I generally blanket ignore CTCP and DCC. Why? Because it is irritating when you wake up in the morning and see a list of pending (and timed out) DCCs with spambots that tried to DCC you during the night.
22:01:37 <GregorR-L> Well that's too bad. DCC is a much-better way to handle long output, because I don't have to worry about flooding and users don't have to wait for lots of output.
22:01:43 <GregorR-L> Go run mycology and enjoy :P
22:03:08 <AnMaster> meh. *writes a white list that overlays the blacklist*
22:03:58 -!- puzzlet has quit (Read error: 60 (Operation timed out)).
22:15:53 <fizzie> Is there some sort of limit for lots-of-output in the DCC chat thing too?
22:16:01 <GregorR-L> 16K
22:16:23 <GregorR-L> No speed limits though, just a flat total limit.
22:18:53 <fizzie> fungot: Are you disappointed that the other bots know all kinds of DCC tricks and bazillion languages and whatnot?
22:18:54 <fungot> fizzie: ( ( oh yeah what))
22:20:10 <GregorR-L> EgoBot doesn't speak almost-English though.
22:20:13 <oerjan> poor fungot :(
22:20:13 <fungot> oerjan: ( ( they have a lot
22:20:37 <AnMaster> what? X just crashed. Someone give me a few lines of context above "<GregorR-L> EgoBot doesn't speak almost-English though." please
22:20:37 <GregorR-L> !echo I WILL DEFEAT FUNGOT MUAHAHHAHAHAHAHAHAHAHHAHHHHAH
22:20:39 <ehird> ^style
22:20:40 <EgoBot> I WILL DEFEAT FUNGOT MUAHAHHAHAHAHAHAHAHAHHAHHHHAH
22:20:40 <fungot> Available: agora alice c64 darwin discworld europarl ff7 fisher* ic irc jargon lovecraft nethack pa speeches ss wp youtube
22:20:47 <AnMaster> (since I just reconnected to bouncer)
22:20:53 <ehird> fungot: Oh yeah what
22:20:54 <fungot> ehird: that i understood that you could
22:20:59 <ehird> fungot: be a green piece of food
22:21:00 <fungot> ehird: i need your help to get this treadmill inside and it my husband laughs everything you name it provided for us even after september eleven
22:21:00 <GregorR-L> AnMaster: fungot is feeling down because EgoBot supports more languages.
22:21:01 <fungot> GregorR-L: and you can chat while you play oh god they've got euka and spades and hearts and it it
22:21:09 <ehird> fungot: even after september eleven
22:21:09 <fungot> ehird: oh let's see sigh i didn't think it was
22:21:14 <ehird> fungot: i see i see
22:21:15 <fungot> ehird: excuse me but anyway um i mean
22:21:18 <ehird> fungot: right
22:21:19 <fungot> ehird: ( ( really uh)) did we look at each other every now and then a
22:21:19 <AnMaster> GregorR-L, how was that determined?
22:21:24 <ehird> fungot: really, did we?
22:21:25 <fungot> ehird: ' cause think about it laughter laughter who knows maybe somebody else did um i'm kind of a
22:21:30 <ehird> fungot: laughter laughter!
22:21:31 <GregorR-L> AnMaster: Well, fungot speaks almost-English.
22:21:32 <fungot> GregorR-L: um but but like i said nine one one they was aware of um
22:21:38 <AnMaster> and why is the damn spell checker suddely set to Afrikaans!?
22:21:42 * AnMaster switches it to English
22:21:43 <GregorR-L> X-D
22:22:04 <oerjan> ehird: i redesigned bct.sss to use about half the size, now it runs in perl but gives completely wrong output.
22:22:04 <GregorR-L> My guess: Because Afrikaans is, in the English alphabet, the first language :P
22:22:20 <AnMaster> GregorR, it complained it couldn't find the word list for Afrikaans.
22:22:21 <ehird> oerjan: that's nice; my interp will still rule.
22:22:25 <AnMaster> for every letter I wrote
22:22:33 <ehird> AnMaster: And?
22:22:36 <AnMaster> (that is because I don't have it installed duh)
22:22:43 <AnMaster> GregorR, but yeah would make sense
22:22:47 <AnMaster> ehird, and what?
22:23:07 <oerjan> ehird: see you tomorrow then :)
22:23:12 <ehird> What's that gotta do with what GregorR-L said
22:23:13 <AnMaster> it usually starts with the one in LANG. Or English. Seems a bit random.
22:23:28 -!- oerjan has quit ("Good night all").
22:23:49 <AnMaster> <ehird> What's that gotta do with what GregorR-L said <-- what has what got to do with it?
22:23:54 <GregorR-L> it should be $LANG, fallback to C.
22:24:26 <AnMaster> GregorR, LANG is sv_SE.UTF-8. But I always switch to English after starting client since I mainly chat in English channels.
22:33:12 <AnMaster> hm
22:33:37 <AnMaster> GregorR, will the current hostmask change?
22:33:42 <AnMaster> or will it stay the same
22:33:42 <AnMaster> that is
22:33:50 <AnMaster> EgoBot!n=EgoBot@codu.xen.prgmr.com
22:34:38 <AnMaster> !befunge98 'A,a,'A,@
22:34:39 <EgoBot> A
22:34:54 <AnMaster> ok lets see..
22:34:55 <AnMaster> !befunge98 'A,a,'A,@
22:34:55 <EgoBot> A
22:34:56 <GregorR-L> AnMaster: It will change to codu.org soon.
22:35:04 <AnMaster> GregorR, meh
22:35:19 <AnMaster> anyway I added the white list for it now
22:35:47 <AnMaster> GregorR-L, but why does it close as "connection lost" instead of the usual "connection closed"
22:35:54 <AnMaster> are you sure you follow the protocol?
22:36:14 <GregorR-L> I'm sure I don't.
22:36:19 <GregorR-L> When I'm done, I just close the port.
22:36:29 <AnMaster> GregorR-L, can you do it the proper way, whatever that is
22:36:40 <GregorR-L> If I can figure out what the proper way is, probably :P
22:38:55 -!- kar8nga has quit (Remote closed the connection).
22:40:59 <GregorR-L> There seems to be some magical DCC CLOSE message, which isn't documented anywhere on Earth :P
22:42:22 <AnMaster> if you saw a file ending in .es, what would you think it was?
22:42:38 <GregorR-L> A Spanish file.
22:42:42 <GregorR-L> :P
22:42:50 <AnMaster> GregorR, it seems to be "EMCAScript" says wikipedia.
22:42:52 <AnMaster> heh
22:42:57 <AnMaster> better known as javascript
22:43:07 <GregorR-L> Oh, sure.
22:43:07 <AnMaster> GregorR, when it comes to IRC, few things are well documented.
22:43:51 <GregorR-L> The problem is that the non-browser-based ECMAScript-land is quite fragmented, so a .es file is probably an ECMAScript file for a very particular interpreter.
22:44:00 <AnMaster> yeah
22:44:48 <AnMaster> I prefer to stick to languages where you have a high level of cross-implementation portability. Or possibly just one implementation
22:45:27 <GregorR-L> !sh echo 'Hello'; echo 'World'
22:45:28 <EgoBot> Hello
22:45:40 <AnMaster> !sh echo -n 'Hello'; echo 'World'
22:45:40 <EgoBot> HelloWorld
22:45:43 <GregorR-L> Well, that wasn't how it's done apparently :P
22:45:44 <AnMaster> well, better
22:45:54 <AnMaster> GregorR, use tcp dump
22:46:01 <AnMaster> on a "real" connection
22:46:14 <GregorR-L> Gawd that's a lame way to do this, but OK :P
22:46:53 -!- tombom has quit ("Peace and Protection 4.22.2").
22:47:00 <AnMaster> GregorR, it is a reasonable way
22:47:03 <AnMaster> when it comes to IRC
22:47:07 <AnMaster> also what does the -L mean
22:47:28 <GregorR-L> In what context?
22:47:34 <AnMaster> your nick
22:47:38 <GregorR-L> Oh, laptop
22:47:41 <AnMaster> ah
22:48:29 <GregorR-L> AnMaster: Unblock DCC from me so I can DCC CHAT you :P
22:48:37 <AnMaster> kay. sec
22:48:38 -!- zzo38 has joined.
22:49:36 <zzo38> Netcat does not use the shell functions in Linux. So if I get Linux, I will need to write interactive netcat.
22:49:47 <AnMaster> done, added exception for GregorR!n=gregor@65.183.185.209
22:49:50 <AnMaster> GregorR, ^
22:49:56 <GregorR-L> ....... wrong me :P
22:50:04 <GregorR-L> zzo38: What a strange statement.
22:50:22 <AnMaster> GregorR-L, done. Added exception for GregorR-L-who-can't-ssh-to-desktop!n=gregor@c-76-105-254-150.hsd1.or.comcast.net
22:50:41 <GregorR-L> I don't want to get wireshark running on my desktop over SSH, that's a PITA.
22:50:54 <AnMaster> * DCC CHAT connection established to GregorR-L [192.168.0.64:55613]
22:50:54 <AnMaster> * DCC CHAT to GregorR-L lost (Remote host closed socket).
22:50:55 <AnMaster> there
22:50:59 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
22:51:00 <AnMaster> ?
22:51:11 <AnMaster> <*status> DCC Chat Bounce (GregorR-L): Timeout waiting for incoming connection [192.168.0.64:37086]
22:51:11 <AnMaster> <*status> DCC Xfer Bounce (GregorR-L): Socket error [Cannot assign requested address]
22:51:12 <GregorR-L> Well that didn't work properly at all :P
22:51:13 <AnMaster> huh?
22:51:21 <zzo38> Can you write 99 bottles of beer in Furryscript? It is not indended for stuff like that at all. But I think I have heard it sone in sendmail also, which isn't designed for that either.
22:51:48 <GregorR-L> Never heard of Furryscript, although it sounds awesome :P
22:51:53 <AnMaster> GregorR-L, turned off the bounce
22:52:02 <AnMaster> !befunge98 'A,a,'A,@
22:52:02 <EgoBot> A
22:52:11 <AnMaster> * DCC CHAT connection established to EgoBot [64.62.173.65:10002]
22:52:11 <AnMaster> * DCC CHAT to EgoBot lost (Remote host closed socket).
22:52:12 <AnMaster> hm
22:52:15 <AnMaster> and no bounce
22:52:37 <GregorR-L> Connection refused :P ... I'll try a different tact.
22:52:43 <AnMaster> GregorR-L, connection timed out to you
22:52:44 <AnMaster> ....
22:52:47 <GregorR-L> (With a different user, namely GregorR )
22:52:49 <AnMaster> fix firewall
22:53:04 <zzo38> The sendmail codes is at: http://99-bottles-of-beer.net/language-sendmail-588.html the Furryscript codes is at: http://zzo38computer.cjb.net/furry/scripts/beer.txt
22:53:05 <GregorR-L> I did a passive-chat to you because I don't have access to the router here, I can't poke any holes.
22:53:46 <AnMaster> GregorR-L, I'm behind double NAT and poking holes is a PITA.
22:54:04 <zzo38> The Furryscript codes sort of looks like it was designed for 99 bottles of beer, but actually, it wasn't. I'm just using the built-in function in different ways.
22:54:06 <GregorR-L> Double NAT, wow :P
22:54:07 <AnMaster> GregorR, plus highly dynamic ip
22:54:19 <AnMaster> GregorR-L, for complex reasons.
22:54:44 <GregorR-L> zzo38: But what IS furryscript?
22:54:51 <AnMaster> GregorR, anyway, I don't think my client knows what passive DCC is
22:55:02 <GregorR-L> Souper :P
22:55:04 <AnMaster> the bouncer might, but not the client
22:55:19 <AnMaster> GregorR, passive dcc according to which model
22:55:29 <GregorR-L> X-Chat :P
22:55:34 <zzo38> Furryscript is design for generator of things such as D&D adventure idea, video game names, etc. Look at it in my web-site. Also look at the individual script codes you can see how it is supposed to work.
22:55:48 <AnMaster> GregorR, that model isn't supported here at all.
22:56:15 <zzo38> For example, the ARG command actually reads a number from the category 0( but it was designed for multiple parameter codes inside of strings, such as <X | <One> | <Two> | <Three> > a dynamic number of arguments.
22:56:28 <AnMaster> zzo38, link?
22:56:45 <zzo38> Run it on the web-page at: http://zzo38computer.cjb.net/furry/webform.php
22:57:04 <zzo38> See the video-games script for an example of the ARG command. And see the D&D adventure ideas script for an example of the plural command.
22:57:29 <AnMaster> huh?
22:57:40 <AnMaster> where does one input the code
22:58:24 <zzo38> If you want to input code to Furryscript, you will need to get Furryscript.php (copy and paste the text from the web-page, or use a different program to remove the color-codes) and run it as a command-line program with the filename on the command-line argument.
22:58:40 <AnMaster> I'll guess I skip it
22:58:53 * GregorR-L forces it into EgoBot >: )
22:58:55 <AnMaster> anyway. What has this got to do with netcat.
22:58:55 <zzo38> And if you make some codes, post them, I would like to see them so I can add them to my web-site!
22:59:09 <AnMaster> GregorR-L, no. Just no.
22:59:12 <zzo38> Nothing to do with netcat. That was an unrelated comment.
22:59:15 <AnMaster> it isn't an esolang
22:59:23 <AnMaster> zzo38, and that comment about netcat made no sense either
22:59:38 <zzo38> Maybe not, but sendmail isn't an esolang either. I just wanted to post how it was done in similar things like that.
22:59:44 <AnMaster> what
22:59:46 <AnMaster> to netcat?
22:59:54 <GregorR-L> AnMaster: So what if it's not an esolang, it's still interesting :P
23:00:07 <AnMaster> is it? looks like a text generator language to me
23:00:57 <zzo38> The netcat comment has to do with, one day I went to FreeGeek office, I tried to access gopher and IRC through netcat but it doesn't do things like Windows push F2 for repeat up to something, arrow to select previous entry, etc. That is why I should write netcat interactive one day, for Linux only.
23:01:37 <zzo38> Try generating a list of adventure ideas with it to see how it works. http://zzo38computer.cjb.net/furry/webform.php?which=adventure.txt&count=20
23:01:43 <AnMaster> zzo38, on Windows that line editing is all in cmd.exe
23:01:57 <AnMaster> try using telnet instead of netcat
23:01:59 <AnMaster> for telnet
23:02:35 <AnMaster> "Furries are intentionally catching lycanthropy." <-- wut
23:03:09 <zzo38> Telnet doesn't do line editing either. Unless there is a program for that. But if I should write interactive netcat with mode for display of control-codes, color-codes, and line-editing (including the F2 of Windows, very useful in IRC but should be useful for other protocols also.)
23:03:29 <AnMaster> telnet seems to do so here
23:03:34 <AnMaster> but maybe it is on the server side
23:04:21 <zzo38> AnMaster: That's just one of the entries in the list. There are many more, which include parameters and various other things. See (View selected script codes) to see the codes so you can know how the parameters are substituted. Also look at the codes in video-game-names if you want to see how they detect duplicates with that.
23:04:54 <zzo38> Telnet is good when the server accepts telnet commands but netcat (or netcat interactive) should be use for raw linemode protocols,,,...
23:04:56 <AnMaster> Spells and psionic powers start having weird quantum effects.
23:04:58 <AnMaster> I like that one
23:05:07 <zzo38> I like that one also!
23:05:10 <AnMaster> The gods announce a holiday for Paladins. A Paladin is not bound by his code on this day.
23:05:11 <AnMaster> OOOH!
23:05:52 <AnMaster> Minotaurs want to live in your village but don't know the common language and refuse to learn it. <-- that's stupid
23:05:54 <zzo38> I didn't write all of them by myself but I did many of them, and I added parameters to many of them taken from other sources, also. If you have other ideas to add (with or without parameters), I would like to add it on.
23:06:10 <AnMaster> zzo38, so a lot of them are hard coded?
23:06:16 <AnMaster> I was hoping markov chain style
23:06:25 <AnMaster> hopeing*
23:06:27 <zzo38> Many are hard-coded and many have parameters, and some of the parameters have their own parameters even.
23:06:42 <AnMaster> A bulette is tearing apart viable farmland. was generated twice
23:07:15 <zzo38> It can generate things twice. Furryscript itself only generates one per call to the program, but the web interface calls it multiple times and therefore might generate duplicates.
23:07:37 <AnMaster> A new noble seeks to clear a patch of wilderness of all monsters. <-- sounds like most computer RPGs/adventure games
23:08:38 <zzo38> You are right. But now I added a second one. <A new noble seeks to stop another new noble from clearing a patch of wilderness of all monsters> in addition to keeping the other one also
23:08:48 <AnMaster> zzo38, "The grim reaper has taken a human aprentice. " <-- you stole that from Discworld. Admit it.
23:09:29 <zzo38> AnMaster: No I didn't. Probably someone else stole it from Discworld and I just happened to find it listed somewhere, I certainly know nearly nothing about Discworld.
23:09:43 <AnMaster> Two hobgoblin bards argue about wheelbarrows. <-- exactly how is that an adventure :D
23:10:06 <GregorR-L> These video game names are great.
23:10:09 <zzo38> They aren't necessarily full adventures, they could be parts of adventures (when you want to modify parts), etc
23:10:27 <GregorR-L> "Minimal Booty Tactics" "Fruity Music Squadron" "Chinese Cheese Jamboree"
23:10:37 <AnMaster> A priest asks you to rescue his/her pet from a tree. <-- Before fire fighters were invented.
23:10:38 <AnMaster> :P
23:10:58 <AnMaster> err is that right English word?
23:12:06 <GregorR-L> Yes
23:13:17 <zzo38> I think if the DM combined what he already had with some of these ideas, it would make a interesting D&D game
23:13:34 <AnMaster> btw, the xkcd title/alt-text seems cryptic today
23:13:36 <zzo38> I don't play D&D like other people, I am a good defensive player at D&D.
23:14:06 <AnMaster> The entire game so far has been an illusion.
23:14:09 <AnMaster> good one
23:14:31 <AnMaster> I'm always a defensive player, in any game I play
23:14:38 <AnMaster> even where it makes no sense.
23:15:00 <AnMaster> (which is why I suck at car racing games and similar)
23:15:40 <AnMaster> hah, as the last item listed was "The King of Nowhere hires you to secretly solve tense situtations."
23:16:00 <zzo38> Defensive play is not as simple as you might think. It is more interesting than offensive play in my opinion. Not only am I defensive play, my character has NG alignment so I try to good thing as well, like not kill someone if it is not necessary and if someone steal something I will give them back the money for buying a new one.
23:16:42 <zzo38> Many people want to play you have to kill everyone and steal their stuff but D&D is not a computer game! If you want to kill some monsters or whatever and steal their stuff, you should hire murderers and thieves, not adventureres
23:17:00 <zzo38> And it's D&D 3.5 edition, in case you didn't know.
23:17:14 <AnMaster> I never played table top D&D
23:17:22 -!- KingOfKarlsruhe has quit (Remote closed the connection).
23:17:22 <AnMaster> It turns out the tarrasque is really just cold. Find out how to knit him a sweater.
23:17:24 <AnMaster> fun
23:17:27 <ehird> 22:49 zzo38: Netcat does not use the shell functions in Linux. So if I get Linux, I will need to write interactive netcat.
23:17:29 <ehird> wat
23:17:35 <AnMaster> ehird, read on
23:17:37 <AnMaster> before you comment
23:17:47 <AnMaster> it was confusing yes, but in the end it was explained
23:17:51 <ehird> tl;dr :-)
23:18:06 <ehird> but I tried to read a bit
23:18:08 <AnMaster> ehird, yop
23:18:17 <AnMaster> or
23:18:18 <AnMaster> yl
23:18:20 <ehird> ah
23:18:20 <ehird> 23:00 zzo38: The netcat comment has to do with, one day I went to FreeGeek office, I tried to access gopher and IRC through netcat but it doesn't do things like Windows push F2 for repeat up to something, arrow to select previous entry, etc. That is why I should write netcat interactive one day, for Linux only.
23:18:24 <ehird> rlwrap nc, yo
23:18:46 <zzo38> What's rlwrap nc
23:18:53 <AnMaster> ehird, is that allowed if nc isn't GPL compatible btw
23:19:04 <ehird> AnMaster: Legally, yes. According to rms, probably no.
23:19:15 <ehird> zzo38: nc is netcat, "rlwrap foo" runs foo with line editing capabilities
23:19:22 <zzo38> Use GNU netcat if normal netcat doesn't GPL compatible
23:19:23 <AnMaster> does it count as linking? Will Stallman use this to say every software ever made that uses the console has to be GPL?
23:19:24 <ehird> rlwrap wraps other programs to use readline
23:19:31 <ehird> AnMaster: Nope, yes,
23:19:35 <ehird> but rms is insane
23:19:39 <ehird> and not in the good way, so.
23:19:42 <GregorR-L> rlwrap so doesn't count as linking :P
23:19:52 <GregorR-L> And RMS is totally insane in the good way.
23:19:53 <AnMaster> Follow the interesting drama in the next episode of FSF
23:19:59 <zzo38> OK. Their computers are Ubuntu, does Ubuntu include rlwrap can I just type something like "rlwrap nc zzo38computer.cjb.net 70" and it will work?
23:20:04 <AnMaster> (next week, same time)
23:20:14 <ehird> zzo38: You have to install rlwrap.
23:20:17 <AnMaster> ehird, you answered too quickly
23:20:22 <zzo38> RMS is too impractical, lately, as far as I know.
23:20:31 <AnMaster> :/
23:20:31 <ehird> zzo38: the incident we're referring to was in 1992
23:20:46 <ehird> GregorR-L: If the clisp incident counts as viral, so does rlwrap.
23:22:16 <zzo38> If I make up my own Linux distribution then, rlwrap and netcat will be included and a command "nci" (netcat interactive) to run netcat with readline
23:22:31 <GregorR-L> "Post-Apocalyptic Thunder Psychiatrist" I would totally play this game.
23:22:36 <AnMaster> !slashes //a/
23:22:37 <zzo38> And I make my own window manager also
23:22:48 <AnMaster> !slashes a//b/c
23:22:49 <EgoBot> ac
23:22:51 <AnMaster> hm
23:23:00 <AnMaster> that doesn't fully make sense
23:23:04 <AnMaster> ehird, agree?
23:23:25 <ehird> It's replacing "" with b.
23:23:25 <AnMaster> it should match every zero width
23:23:32 <AnMaster> not "nothing"
23:23:41 <AnMaster> if you see what I mean
23:23:59 <AnMaster> zero width like ^ and $ in regex
23:24:05 <AnMaster> so between every char
23:24:06 <zzo38> Do you know something about optimize convert brainfuck to Javascript?
23:24:17 <AnMaster> zzo38, why into javascript
23:24:18 <AnMaster> but
23:24:30 <zzo38> I tried to make it optimize but I want to know if it can be improved optimized
23:24:37 <ehird> zzo38: See esotope-bfc.
23:24:38 <AnMaster> you could write a javascript backend for esotope-bf
23:24:39 <AnMaster> I guess
23:24:41 <AnMaster> bfc*
23:24:44 <ehird> http://code.google.com/p/esotope-bfc/
23:24:50 <ehird> compiles hello world to
23:24:50 <ehird> PUTS("Hello World!");
23:24:51 <ehird> return 0;
23:24:55 <AnMaster> he split the code generator out last I looked
23:25:12 <zzo38> It is into Javascript because of XUL-runner is programmed in Javascript, so when a client-script is being loaded from gopher it has to convert to Javascript.
23:25:35 <zzo38> My optimizer converts "," to "yield;"
23:25:40 <AnMaster> err
23:25:43 <ehird> zzo38: you really want to use esotope for any hugely-optimizing BF optimizer.
23:25:49 <AnMaster> zzo38, and +++ into "add 3"?
23:26:03 <AnMaster> and [-]++++ into "set 4"?
23:26:10 <AnMaster> and [>] into seek. and so on
23:26:31 <AnMaster> constant folding and what not
23:26:35 <zzo38> Yes it does convert "+++" to "t[p]+=3;"
23:26:46 <ehird> zzo38: does it convert
23:26:48 <ehird> >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
23:26:48 <ehird> <.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
23:26:49 <ehird> into
23:26:52 <ehird> print("Hello, world!")
23:26:53 <ehird> ?
23:27:01 <zzo38> Yes yes, it does do "[-]++++" into "t[p]=4;" as well. But it doesn't do everything.
23:27:13 <ehird> If not ... write an http://code.google.com/p/esotope-bfc/ backend ;-)
23:27:19 <zzo38> No. It doesn't do that last one.
23:27:23 <AnMaster> zzo38, and ++>-<++ into t[p]+=4; t[p+1]-=1;
23:27:25 <ehird> it also optimizes multiplication, all balacned loops, ...
23:27:30 <ehird> *balanced
23:27:34 <AnMaster> zzo38, that is. skip the pointer move
23:28:50 <zzo38> So far my program doesn't optimize I/O, it alawys converts "," to "yield;" and "." to "O();"
23:28:51 <AnMaster> !befunge98 http://rage.kuonet.org/~anmaster/nosuchfile
23:28:56 <AnMaster> hm?
23:29:05 <AnMaster> !befunge98 http://rage.kuonet.org/~anmaster/mycology.b98
23:29:06 <EgoBot> 0 1 2 3 4 5 6 7
23:29:28 <GregorR-L> Hey, http://rage.kuonet.org/~anmaster/nosuchfile doesn't exist! :P
23:29:42 <AnMaster> GregorR-L, indeed it doesn't. Was wondering about error message.
23:30:02 <GregorR-L> None 8-D
23:30:18 <zzo38> Look at my codes if you want to, to help me tell me what I am missing?
23:30:22 <AnMaster> also I think your version is outdated?
23:30:25 <AnMaster> it is 4.0
23:30:27 <AnMaster> not 4.0.1
23:30:36 <ehird> Oh noes!
23:30:38 <AnMaster> err
23:30:41 <AnMaster> 0.4 not 0.4.1
23:30:42 <AnMaster> even
23:30:43 <GregorR-L> My version of what?
23:30:52 <ehird> GregorR-L: he probably released a new cfunge
23:30:54 <ehird> 0.000001ms faster
23:30:55 <AnMaster> GregorR, cfunge
23:30:59 <zzo38> And I can't use esotope-bfc because it is Python and I need the optimizer also be written in Javascript.
23:31:10 <AnMaster> locally: That the interpreter's version is 41
23:31:11 -!- inurinternet has quit (No route to host).
23:31:19 <AnMaster> <EgoBot> That the interpreter's version is 40
23:31:20 <GregorR-L> Feel free to send me a hg bundle.
23:31:29 <AnMaster> GregorR, it was some time ago (weeks?)
23:31:30 <zzo38> See my codes in http://zzo38computer.cjb.net/vonkeror/Vonkeror.zip the file modules/brainfuck.js contains the optimizer of brainfuck into Javascript.
23:31:53 <AnMaster> GregorR, what is your file with the version info
23:31:55 <GregorR-L> AnMaster: If you think that I'm going to follow the versions of all the interpreters installed, you're quite severely incorrect :P
23:32:01 <GregorR-L> USED_VERSION
23:32:01 <AnMaster> so I can know what rev to diff from
23:32:04 <AnMaster> yes
23:32:08 <AnMaster> what does it contain!
23:32:15 <GregorR-L> !sh cat interps/cfunge/USED_VERSION
23:32:15 <EgoBot> http://rage.kuonet.org/~anmaster/cfunge/ 0.4.0+bzr:trunk:r763
23:32:19 <AnMaster> ah
23:32:28 <ehird> =a!<_^%
23:32:31 <ehird> ↑afiosdj
23:32:41 <GregorR-L> ehird: Fascinating.
23:32:48 <ehird> GregorR-L: pojdpaosdjpoajp!!!!!!! !
23:32:50 -!- Sgeo[Pidgin] has joined.
23:32:56 <ehird> \\\\\\//////λλλλλλλλ
23:33:04 <ehird> ⁹⁸⁰‽↙ababababau˙ª´•
23:33:11 <Sgeo[Pidgin]> Is the guest account of Ubuntu wiped at logoff?
23:33:11 <GregorR-L> Sgeo[Pidgin]: Having "[Pidgin]" on your name is just advertising "I use shitty IRC clients"
23:33:15 <AnMaster> <GregorR-L> AnMaster: If you think that I'm going to follow the versions of all the interpreters installed, you're quite severely incorrect :P <-- you could sign up for the news letter (sourceforge project news simply)
23:33:17 <AnMaster> :P
23:33:24 <Sgeo[Pidgin]> If so, then I think that means it's secure enough for my needs
23:33:25 <zzo38> My program always wraps values of cells 0 to 255, and has two new commands * and ~ for using the second tape. I want to know if there is a way for checking when it doesn't need to wrap and therefore optimize it better.
23:33:25 <ehird> Sgeo[Pidgin]: Storing your WORLD-ENDINGLY IMPORTANT SSN?
23:33:35 <ehird> Sgeo[Pidgin]: lern2gpg
23:33:54 <Sgeo[Pidgin]> GregorR-L, didn't bother installing XChat yet
23:34:34 <AnMaster> GregorR, does plain diff work for you?
23:34:41 <GregorR-L> Finefine.
23:35:04 <zzo38> Another thing that netcat does in Windows, if you are typing, it won't interrupt what you are typing with the output, it will let you finish typing first. Does readline do that?
23:35:18 <GregorR-L> ... that seems terrible :P
23:35:46 <ehird> zzo38: that's awful
23:35:51 <ehird> it means you miss out on stuff :P
23:35:54 <ehird> but
23:35:58 <ehird> readline will repeat the line again after
23:35:59 <ehird> I think
23:36:01 <ehird> so you don't lose the trail
23:36:09 <GregorR-L> I would assume so, yeah.
23:36:41 <GregorR-L> Also, is zzo38 looking for http://codu.org/rawirc.c ? :P
23:36:57 <AnMaster> GregorR-L, http://rage.kuonet.org/~anmaster/r763_to_r777.diff is in the cfunge source dir directly. Then you need to change USED_VERSION to 0.4.1+bzr:trunk:r777
23:37:07 <AnMaster> GregorR-L, does that work for you
23:37:14 <AnMaster> GregorR, make clean and make after
23:37:20 <zzo38> OK if readline just puts output and then repeats the typing line afterward so that you can finish typing, that is even more better than Windows. Now the only thing needed is control-codes display mode and to make your typing a different color than the server's typing and then it is completely good.
23:37:56 <ehird> Bam! Underfeatured IRC client.
23:38:03 <AnMaster> ehird, which one?
23:38:08 <AnMaster> oh... netcat
23:38:10 <AnMaster> oh my
23:38:28 <GregorR-L> Done
23:38:38 <AnMaster> !sh cat interps/cfunge/USED_VERSION
23:38:39 <EgoBot> http://rage.kuonet.org/~anmaster/cfunge/ 0.4.0+bzr:trunk:r777
23:38:50 <AnMaster> !befunge98 http://rage.kuonet.org/~anmaster/mycology.b98
23:38:51 <EgoBot> 0 1 2 3 4 5 6 7
23:39:11 <AnMaster> GregorR-L, um?
23:39:20 <GregorR-L> Um what
23:39:30 <AnMaster> ah yes it works
23:39:32 <AnMaster> -zzo38- VERSION I am using netcat on Windows right now. But one day I will get Linux instead and maybe use rawirc.c or netcat with readline
23:39:35 <AnMaster> oh
23:39:36 <AnMaster> my
23:39:55 <AnMaster> zzo38, anything wrong with a normal irc client
23:39:59 <GregorR-L> One big benefit of rawirc.c over netcat: It PINGs and PONGs for you :P
23:40:04 <AnMaster> like irssi, xchat or whatever
23:40:04 <Sgeo[Pidgin]> "Student Information effective from Fall 2008 to The End of Time"
23:40:12 <ehird> GregorR-L: freenode doesn't need pings/pongs
23:40:17 <AnMaster> what is rawirc.c
23:40:23 <zzo38> I don't need to reply to your PING message. The rawirc.c that you posted looks interesting, I will look at it more, a bit
23:40:29 <GregorR-L> ehird: FreeNode has a very long timeout for pings/pongs, but it does get pissed at you if you never pong.
23:40:29 <Sgeo[Pidgin]> Expected Graduation Date: May 21, 2009
23:40:34 <ehird> 23:36 GregorR-L: Also, is zzo38 looking for http://codu.org/rawirc.c ? :P
23:40:38 <AnMaster> ah
23:40:46 <ehird> GregorR-L: Very long = weeks?
23:40:46 <AnMaster> -GregorR-L- VERSION xchat 2.8.6 Linux 2.6.29-1-686 [i686/2.40GHz]
23:40:49 <ehird> optbot never responded to ping
23:40:52 <AnMaster> quite sensible
23:40:53 <ehird> and never got disconnected
23:41:07 <AnMaster> ehird, true, freenode doesn't require it
23:41:08 <GregorR-L> ehird: Idonno, I recall EgoBot getting bumped. Maybe its only if you send no output whatsoever.
23:41:12 <AnMaster> most other irc networks does
23:41:18 <AnMaster> and yeah what GregorR said
23:41:23 <zzo38> The automatic ping-pong is useful. What would be very useful is a option to enable/disable that option, in case for whatever reason, you want to do it manually.
23:41:26 <ehird> Freenode is the only IRC network worth bothering with ;-)
23:41:33 <AnMaster> <zzo38> The automatic ping-pong is useful. What would be very useful is a option to enable/disable that option, in case for whatever reason, you want to do it manually.
23:41:34 <AnMaster> um
23:41:35 <ehird> zzo38: WHY would you want to do it manually‽‽
23:41:35 <AnMaster> why
23:41:36 <ehird> :-D
23:41:39 <AnMaster> WHY ON EARTH
23:41:48 <GregorR-L> zzo38: I haven't changed rawirc.c in years, but you can delete the relevant lines :P
23:41:48 <AnMaster> and
23:41:48 <ehird> ahh zzo38 is great
23:41:53 <AnMaster> why not a normal irc client
23:42:03 <GregorR-L> AnMaster: BECAUSE THEY'RE FOR PUSSIES
23:42:15 <AnMaster> -GregorR-L- VERSION xchat 2.8.6 Linux 2.6.29-1-686 [i686/2.40GHz]
23:42:19 <AnMaster> right pussy!
23:42:37 <ehird> <GregorR-L> I WISH I HAD PUSSY
23:42:42 <ehird> *rimshot*
23:42:45 <AnMaster> haha
23:42:47 <zzo38> Probably no reason to do it manually, but it should be configurable, together with configurable colors and keyboard shortcuts (rawirc.c uses ^P for PRIVMSG and ^O for last channel, but if you could add more with a configuration file, would be useful,
23:42:48 <GregorR-L> I have a pussy. In my lap.
23:42:52 <GregorR-L> She's purring.
23:42:56 <ehird> zzo38: The whole program should be configurable.
23:43:01 <ehird> The single configuration option is program_source.
23:43:14 <ehird> This is more flexible in case you want to, say, make toast.
23:43:16 <ehird> Or a web browser.
23:43:23 <GregorR-L> X-P
23:43:25 <AnMaster> um
23:43:28 <ehird> Actually that's been done
23:43:30 <ehird> It's called emacs
23:43:38 <AnMaster> I was just about to mention it
23:43:43 * AnMaster use ERC in emacs yeah.
23:43:57 <zzo38> I like automatic ping-pong, so I don't want to delete it. But if I modify it I will make automatic ping-pong configurable, but still enabled by default (I have no reason to disable it, but later on there might be a use for it, in case you want to test something, maybe)
23:43:58 <AnMaster> because it is so configurable. More than any other normal client
23:44:06 <AnMaster> while still doing most of the normal client stuff
23:44:13 <ehird> zzo38: to test something couldn't you use netcat?
23:44:32 -!- BeholdMyGlory has quit (Remote closed the connection).
23:44:46 <Sgeo[Pidgin]> Would it be bad for me to ask the average GPA of people in here?
23:44:54 <AnMaster> Sgeo[Pidgin], what the hell is GPA
23:44:58 <ehird> 72.5
23:45:02 <ehird> AnMaster: school thing.
23:45:02 <GregorR-L> Sgeo[Pidgin]: Apparently :P
23:45:07 <ehird> http://en.wikipedia.org/wiki/Grade_(education)
23:45:09 <AnMaster> ehird, never heard of it
23:45:11 <ehird> grade point average
23:45:23 <Sgeo[Pidgin]> ehird: pretty sure it goes up to 4
23:45:30 <ehird> Sgeo[Pidgin]: this one ... goes up to 72.
23:45:32 <GregorR-L> I got an A- this term so I got demoted to a 3.98 >: (
23:45:37 <ehird> It's like going up to 11, but moreso.
23:45:53 <AnMaster> Sgeo[Pidgin], in Sweden there is one that goes up to 20
23:46:02 <ehird> Or is it 22, AnMaster?
23:46:06 <GregorR-L> AnMaster: Divide that by 5 :P
23:46:08 <Sgeo[Pidgin]> Got an A in all classes but two. One I got an A-, and one I got a C
23:46:10 <AnMaster> err what
23:46:15 <ehird> AnMaster: http://en.wikipedia.org/wiki/Up_to_eleven
23:46:16 <Sgeo[Pidgin]> I don't think the A- was recorded as an A-
23:46:23 <Sgeo[Pidgin]> GPA: 3.78
23:46:26 <AnMaster> um
23:46:28 <ehird> it's from Spinal Tap
23:46:32 <AnMaster> I meant as in max value is 20
23:46:35 <ehird> Yes
23:46:38 <ehird> I know what you meant.
23:46:39 <GregorR-L> AnMaster: In the US, grades are basically: A=4.0, B=3.0, C=2.0, D=1.0, F=0.0, then average by number of credits.
23:46:44 <AnMaster> it is used when you apply for university
23:46:48 <ehird> The phrase was coined in a scene from the 1984 mockumentary/rockumentary This Is Spinal Tap by the character Nigel Tufnel, played by Christopher Guest. In this scene Nigel gives the rockumentary's director, Marty DiBergi, played by Rob Reiner, a tour of his stage equipment. While Nigel is showing Marty his Marshall guitar amplifiers, he points out one in particular whose control knobs all have the highest setting of eleven (unlike standard amplifiers, wh
23:46:50 <ehird> ose volume settings are typically numbered from zero to ten), believing that this numbering actually increases the volume of the amp ("It's one louder."). When Marty asks why the ten setting is not simply set to be louder, Nigel pauses, clearly confused, before responding, "These go to eleven".[2][3]
23:46:51 <AnMaster> after you finished high school
23:47:02 <GregorR-L> AnMaster: SO, if the max value is 20, then divide by 5 to get something roughly equivalent to US GPA.
23:47:09 <zzo38> Another feature to add to rawirc (I might add it, one day) is if you type PASS, it will echo the rest of your command as asterisks regardless of what you actually type (also configurable, of course).
23:47:11 <AnMaster> I have 17.5 in that system
23:47:12 <AnMaster> btw
23:47:20 <ehird> zzo38: Erm.
23:47:22 <pikhq> Sometimes those numbers, in high school, are incremented for honors or college credit courses.
23:47:25 <ehird> Couldn't you just type asterisks, zzo38?
23:47:30 <ehird> I mean...
23:47:35 <ehird> ... why god why?
23:47:44 <GregorR-L> ehird: It will ECHO the rest of your command as asterisks :P
23:47:45 <pikhq> Making for 5.0 semesters being theoretically possible.
23:47:48 <ehird> oh for the PASS command
23:47:54 <ehird> that's still ridiculous :-P
23:47:58 <AnMaster> pikhq, what?
23:48:00 <AnMaster> anyway
23:48:00 <GregorR-L> ehird: SO'S YOUR FACE.
23:48:04 <AnMaster> who cares about the US system
23:48:10 <zzo38> What if your password isn't asterisks? The reason is so that you can type in your password and it is not displayed on the screen
23:48:11 <ehird> People in the US?
23:48:12 <pikhq> People in the US.
23:48:17 <GregorR-L> AnMaster: WE ARE USA. YOU HAVE NO CHANCE TO SURVIVE MAKE YOUR TIME.
23:48:21 <AnMaster> and we have different systems in primary school, high school and university.
23:48:25 <ehird> You're remarkably anti-US, AnMaster; it makes you look even more idiotic than UScentric people
23:48:25 <AnMaster> here in Sweden
23:48:28 <Sgeo[Pidgin]> My HS cumulative GPA was 12.569... making me wonder what the max for that is
23:48:28 <AnMaster> three different systems
23:48:29 <pikhq> SOMEONE SET US UP THE BOMB.
23:48:39 <GregorR-L> Sgeo[Pidgin]: 40
23:48:41 <AnMaster> pikhq, yeah. The CIA did :P
23:48:59 <ehird> GregorR-L: Oh burn.
23:49:04 <GregorR-L> :P
23:49:13 <AnMaster> anyway
23:50:50 <AnMaster> IG (not passed), G (passed), VG (passed with excellence), MVG (passed with lots of excellence) is the basic system used in Sweden. For primary and high schools. At university level there is U (not passed) G (passed) VG (pased with excellence)
23:50:55 <AnMaster> those are rouge translations
23:51:20 <ehird> Passed with lost of excellence sounds so much funnier than summa cum laude.
23:51:20 <GregorR-L> They don't seem very red.
23:51:22 <ehird> *lots
23:51:41 <pikhq> Those don't seem very high-grained.
23:51:44 <pikhq> Erm.
23:51:46 <ehird> Well, maybe it translates to magna cum laude
23:51:46 <pikhq> Finely grained.
23:51:55 <pikhq> Not that A,B,C,D,F is very finely grained, either...
23:52:15 <GregorR-L> pikhq: That's why we have this A-, B+, B-, C+ sh** :P
23:52:22 <ehird> Wait, there's no E grade in the US?
23:52:23 <ehird> WTFBBQ
23:52:41 <AnMaster> <ehird> Passed with lost of excellence sounds so much funnier than summa cum laude. <-- I didn't remember the Latin term
23:52:43 <pikhq> GregorR-L: My school had them, but didn't apply for the GPA.
23:52:43 <AnMaster> and
23:53:06 <GregorR-L> ehird: A, B, C and D are just lettered from A, but "F" isn't meant to be the next letter, it stands for "failed"
23:53:07 <pikhq> A* = 4.0, B* = 3.0, C* = 2.0, D* = 1.0, F* = 0.0.
23:53:18 <ehird> GregorR-L: AAAAAAAAAAAAAAA THAT SUCKS THERE NEEDS TO BE AN E GRADE
23:53:19 <ehird> E+
23:53:20 <AnMaster> it is "MVG = Mycket Väl Godkänd". Literal translation: "Much Well Passed".
23:53:21 <pikhq> Oh, and D was very much a passing graid.
23:53:25 <pikhq> Grade, even.
23:53:27 <AnMaster> which just doesn't work in English ehird
23:53:30 <GregorR-L> pikhq: lawl
23:53:54 -!- Judofyr has quit (Remote closed the connection).
23:53:57 <AnMaster> <ehird> Well, maybe it translates to magna cum laude <-- yes
23:54:06 <GregorR-L> Because that's so English ;)
23:54:06 <AnMaster> and then VG would be cum laude
23:54:10 <ehird> In ascending order: F, D, C, B, A, ´, ¥, ↓, œ, ‽, *BEEP*,
23:54:12 <ehird> Segmentation fault
23:54:29 * GregorR-L got a Segmentation fault+ once.
23:54:34 <AnMaster> GregorR-L, everyone know English is a mix of Germanic and Latin languages. Oh and a bit of celtic too iirc.
23:54:45 <GregorR-L> AnMaster: Latin only through French.
23:54:50 <GregorR-L> French kills everything :P
23:54:51 <AnMaster> yeah
23:54:54 <ehird> FRENCH
23:54:55 <ehird> KILLS
23:54:56 <ehird> EVERYTHING
23:55:00 <ehird> A new horror movie. Out Summer.
23:55:09 <GregorR-L> Starring French Stewart
23:55:10 -!- darthnuri has joined.
23:55:19 <ehird> And the whole of Franc
23:55:20 <ehird> e
23:55:22 <ehird> and the French language itself
23:55:27 <GregorR-L> Personified
23:55:32 <Gracenotes> argh, why do I have the word 'stewart' stalked
23:55:33 <ehird> And unpersonified
23:55:38 <ehird> FRENCH
23:55:39 <ehird> KILLS
23:55:40 <ehird> EVERYTHING
23:55:42 <ehird> a film by French.
23:55:48 <pikhq> AnMaster: Mostly place names are Celtic.
23:55:48 <GregorR-L> Gracenotes: Because you're such a French Stewart fan?
23:56:00 -!- darthnuri has changed nick to inurinternet.
23:56:10 <Gracenotes> oh yes, now I remember, it's because of James Stewart's calculus book
23:56:25 <Gracenotes> rawr.
23:56:25 <AnMaster> pikhq, cwm!
23:56:28 <Sgeo[Pidgin]> "The following survey pages must be completed prior to accessing the Registration:"
23:56:32 <pikhq> ( *cester == unholy amalgamate of Celtic and Latin)
23:56:34 <AnMaster> (Welsh yeah)
23:56:44 <AnMaster> pikhq, what does cester mean
23:56:50 <Gracenotes> which I don't have an ebook of by the way.
23:56:52 <AnMaster> I know it is found in many
23:57:05 <pikhq> Something like "town"?
23:57:06 <GregorR-L> Gracenotes: Neither do I. And neither does French Stewart.
23:57:13 <AnMaster> pikhq, kay
23:57:21 <Gracenotes> *wink*
23:57:24 <pikhq> Kinda screwy when you consider that my last *name* is Worcester.
23:57:39 <AnMaster> hah
23:57:40 <ehird> pikhq: Whenever I think Worcester I think http://en.wikipedia.org/wiki/Worcestershire_sauce
23:57:49 <AnMaster> haha
23:58:06 <GregorR-L> Pronounced "Warshrrrhshfshouapfhdoiafs"
23:58:09 <pikhq> ehird: Well, Worcestershire sauce comes from the shire containing the town that gives me my last name...
23:58:13 <ehird> (Which I seem to alternate between liking and hating every time I try it)
23:58:16 <ehird> pikhq: Ar.
23:58:27 <pikhq> "Woostershir sauce" is the pronounciation, BTW.
23:58:38 <pikhq> (I'm not giving you IPA)
23:58:53 <GregorR-L> pikhq: But WHY X_X
23:59:20 <ehird> War sest er sher. ← say it ten times quick
23:59:24 <pikhq> BECAUSE ENGLISH SUXORS.
23:59:29 <pikhq> ehird: Wrong.
23:59:46 <ehird> i knoq
23:59:47 <ehird> w
23:59:48 <pikhq> ... Ten times quick will get you close to how it's actually pronounced, though.
23:59:51 <ehird> I was just doing it the obvious way
23:59:58 <ehird> which is har
23:59:58 <ehird> d
←2009-05-14 2009-05-15 2009-05-16→ ↑2009 ↑all