00:00:10 Aaand the build starts again. 00:03:30 checking for x86_64-unknown-linux-gnu-gcc... /home/elliott/Downloads/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/home/elliott/Downloads/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/ -B/opt/gcj/x86_64-unknown-linux-gnu/bin/ -B/opt/gcj/x86_64-unknown-linux-gnu/lib/ -isystem /opt/gcj/x86_64-unknown-linux-gnu/include -isystem /opt/gcj/x86_64-unknown-linux-gnu/sys-include 00:03:30 checking for C compiler default output file name... 00:03:30 configure: error: in `/home/elliott/Downloads/gcc-4.6.1/x86_64-unknown-linux-gnu/libgomp': 00:03:30 configure: error: C compiler cannot create executables 00:03:31 See `config.log' for more details. 00:03:33 make[2]: *** [configure-stage1-target-libgomp] Error 77 00:03:35 pikhq: hepl 00:03:46 -!- derdon has quit (Remote host closed the connection). 00:04:06 configure:3666: checking for C compiler default output file name 00:04:06 configure:3688: /home/elliott/Downloads/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/home/elliott/Downloads/gcc-4.6.1/host-x86_64-unknown-linux-gnu/gcc/ -B/opt/gcj/x86_64-unknown-linux-gnu/bin/ -B/opt/gcj/x86_64-unknown-linux-gnu/lib/ -isystem /opt/gcj/x86_64-unknown-linux-gnu/include -isystem /opt/gcj/x86_64-unknown-linux-gnu/sys-include -g -O2 conftest.c >&5 00:04:06 /usr/bin/ld: cannot find crt1.o: No such file or directory 00:04:07 /usr/bin/ld: cannot find crti.o: No such file or directory 00:04:08 collect2: ld returned 1 exit status 00:04:10 configure:3692: $? = 1 00:04:12 configure:3729: result: 00:04:14 configure: failed program was: 00:04:21 pikhq: idgi? 00:04:27 elliott: urgh 00:04:29 well, night → 00:04:39 Is it failing to find the crt files because they're in some multilib location? 00:07:02 OK, here's my plan: 00:07:04 Don't disable multilib :P 00:09:23 Uhh, excuse me, pikhq. 00:09:25 Debian is incapable of wrong. 00:09:37 Therefore no matter how terrible, annoying and incompatible their solution is, it's right. 00:10:43 -!- CakeProphet has quit (Read error: Connection reset by peer). 00:12:21 -!- CakeProphet has joined. 00:12:22 -!- CakeProphet has quit (Changing host). 00:12:22 -!- CakeProphet has joined. 00:17:09 /usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory 00:17:10 Yessssssssss 00:18:21 I like how Gregor returned JUST to inform us about Debian :P 00:19:21 elliott: Eff if I know. 00:19:39 pikhq: I guess I gotta install 32-bit libc 00:19:42 What's the multilib incantation for that :P 00:20:00 Won't help, that's also multilibbed. 00:20:12 Also, 00:20:27 (nothing) 00:20:44 Gregor: See /msg :P 00:22:45 elliott: Yeah yeah 00:27:24 Gregor cares about us; you can tell. 00:27:25 -!- Zuu has quit (Read error: Connection reset by peer). 00:27:47 :p 00:27:57 Gregor is my best friend 00:28:12 I <3 everyone 00:29:42 CakeProphet: Where's my cake? 00:30:23 obviously CakeProphet cannot say where your cake is, only where it _will_ be. 00:30:38 .. 00:30:51 I wonder when/if people will get tired of talking about my nickname 00:31:03 NOT UNTIL THE CAKE COMES 00:31:43 -!- Zuu has joined. 00:35:06 -!- tiffany has quit (Quit: Bai~). 00:51:56 -!- kmc has joined. 00:59:04 Yo CakeProphet 00:59:06 `frink 38 feet -> "meters" 00:59:15 7239/625 (exactly 11.5824) meters 00:59:17 `frink siderealday -> ["hours", "minutes", "seconds"] 00:59:25 23 hours, 56 minutes, 4.090530833 seconds 00:59:27 `frink ??moon 00:59:36 ​[moonmass = 7.3483e+22 kg (mass), \ moondist = 3.84400000e+8 m (length), \ moonlum = 2500 m^-2 cd (illuminance), \ moongravity = 1.62 m s^-2 (acceleration), \ moonradius = 1738000 m (length)] 00:59:38 `frink teaspoon water c^2 -> "gallons gasoline" 00:59:47 3.1642098628361009386e+6 gallons gasoline 01:00:07 It can also do translations (although I haven't set up the proxy stuff for that yet), historical concurrency conversions, general calculations, symbolic reductions, functional programming, blah blah blah blah blah it can do fucking everything. 01:00:14 (Oh, and the quotes around the units aren't necessary; they just append the unit name to the result.) 01:01:41 `frink now - #2001-01-01# 01:01:50 Warning: undefined symbol "now". \ now (undefined symbol) + AD 2001-01-01 a.m. 12:00:00.000 (Mon) GMT 01:01:53 Oops 01:01:54 `frink now[] - #2001-01-01# 01:02:03 339469322551/1000 (exactly 3.39469322551e8) s (time) 01:02:11 elliott: units can do some currencies I think? 01:02:16 `frink now[] - #2001-01-01# -> ["years", 0] 01:02:25 10 years 01:02:26 CakeProphet: So to answer "why are you replacing units", the answer is "because Frink is about nine billion times more awesome". 01:02:49 `frink minorsecond -> majorthird 01:02:58 halp syntax 01:02:58 Warning: undefined symbol "minorsecond". \ Unconvertable expression: \ minorsecond (undefined symbol) -> 5/4 (exactly 1.25) 01:03:06 Well, it knows majorthird :P 01:03:14 There's a list of all the units, lemme get it 01:03:22 http://futureboy.us/frinkdata/units.txt 01:03:25 `la 01:03:26 `ls 01:03:27 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: la: not found 01:03:28 bin \ canary \ hs_err_pid275.log \ hs_err_pid278.log \ karma \ lib \ paste \ quotes \ share \ wisdom 01:03:38 o_O 01:03:39 `rm hs_err_pid275.log 01:03:41 `ls share 01:03:41 No output. 01:03:42 `rm hs_err_pid278.log 01:03:43 foo \ units.dat 01:03:44 No output. 01:03:53 does frink use some kind of data file where you can add units? 01:03:58 `units --version 01:04:00 GNU Units version 1.88 \ with readline, units database in /hackenv/share/units.dat \ Copyright (C) 2006 Free Software Foundation, Inc. \ GNU Units comes with ABSOLUTELY NO WARRANTY. \ You may redistribute copies of GNU Units \ under the terms of the GNU General Public License. \ 01:04:09 Yes, but it's built in. I think you can specify your own, but w/e. 01:04:18 actually I don't think units has minorsecond either 01:04:40 I would bet money on Frink not only having a strict superset of units' units, but far, far more in total :P 01:04:51 `run cat share/units.dat | grep minorsecond 01:04:54 No output. 01:05:00 `run cat share/units.dat | grep musicalfifth 01:05:03 majorsecond musicalfifth^2 / octave \ musicalfifth 3|2 \ majorseventh musicalfifth majorthird \ minorseventh musicalfifth minorthird \ pythagoreanthird majorsecond musicalfifth^2 / octave \ pythagoreancomma musicalfifth^12 / octave^7 01:05:24 perfectfifth would be a better name. 01:05:52 `run for [line] = read["share/units.dat"] =~ %r/musicalfifth/g { println[line] } 01:05:53 sh: -c: line 0: syntax error near unexpected token `=' \ sh: -c: line 0: `for [line] = read["share/units.dat"] =~ %r/musicalfifth/g { println[line] }' 01:05:57 Aw :P 01:06:08 I'm a bit off on my Frink control constructs. 01:06:14 also you didn't use frink. 01:06:22 `frink for [line] = read["share/units.dat"] =~ %r/musicalfifth/g { println[line] } 01:06:24 THAT MIGHT BE WHY 01:06:26 lol 01:06:31 Syntax error: , line 1, near column 58 \ for [line] = read["share/units.dat"] =~ %r/musicalfifth/g { println[line] } \ ^ \ 1 error(s) occurred during parsing. 01:06:39 Good, I made an actual mistake. 01:06:52 `run 999 grams / sugar -> cups 01:06:53 sh: 999: command not found 01:06:55 so frink is like perl+units? 01:06:57 `frink 999 grams / sugar -> cups 01:06:58 I'm smart. 01:07:06 4.995 01:07:21 CakeProphet: Frink is a calculator with strongly-typed units support and a huge built-in library of functions. 01:07:29 It's kind of Perlish but that's not really the main thing :P 01:07:37 ah okay. 01:07:39 http://futureboy.us/frinkdocs/ 01:07:44 Its one flaw is being Java :P 01:07:46 right I didn't mean it was literally units+perl 01:07:57 but that's neat. 01:08:16 `frink 5 beardseconds -> lightyears 01:08:25 Warning: undefined symbol "beardseconds". \ Warning: undefined symbol "beardseconds". \ Unconvertable expression: \ 5 beardseconds (undefined symbol) -> 9460730472580800 m (length) 01:08:29 NOOOOOO 01:08:31 I taught it beardseconds once :P 01:08:35 It's one definition: 01:08:47 `frink beardsecond := 5 nm; 5 beardseconds -> lightyears 01:08:48 units has beardseconds only because I added it. 01:08:56 1/378429218903232000000000 (approx. 2.6425020850615385e-24) 01:08:59 Note how it handles the plural automatically. 01:09:07 same as units, yes. 01:09:16 but frink is much better, I agree. 01:09:29 That gcj-compiling was for this :P 01:09:37 Turns out getting Gregor to download libgcj is easier. 01:09:38 `run frink '55 mph -> yards' 2>&1 | paste 01:09:42 !help 01:09:48 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5864 01:09:49 is egobot down forever? 01:09:56 CakeProphet: Behold, strongly typed 01:09:58 (See that paste) 01:10:01 With USEFUL SUGGESTIONS :P 01:11:07 nea 01:11:08 t 01:11:12 CakeProphet: Anyhow, it's a bit slow to start up right now because Java and because HackEgo is slooow, but I think I can solve that 01:11:19 By writing a little "eval server" in Frink 01:11:24 So it can reuse the same instance 01:11:29 right I was going to say 01:11:33 summon a daemon to do your bidding. 01:11:38 like any good warlock. 01:12:17 does hackego allow that even? 01:12:27 I figure it would time out. 01:12:31 Hmm 01:12:32 Good point 01:12:34 Gregor: How daemons 01:12:43 Can we just get you to set things off :P 01:14:43 `frink ?cubit 01:14:52 ​[blackcubit, hebrewcubit, egyptianshortcubit, shortgreekcubit, romancubit, greekcubit, persianroyalcubit, northerncubit, assyriancubit, homericcubit, sumeriancubit, egyptianroyalcubit, irishcubit, biblicalcubit, olympiccubit, hashimicubit] 01:14:55 So many cubits. 01:15:12 CakeProphet: Yeah, you can specify a different units file, it seems 01:15:30 the search feature is very nice. 01:15:36 obvious solution: port frink to Haskell 01:15:57 `run 3 gram 18 karat Gold -> pound_1752 01:15:59 sh: 3: command not found 01:16:02 >_< 01:16:05 `calc 3 gram 18 karat Gold -> pound_1752 01:16:09 I'd like to allow daemons, but I haven't thought of a good way to do it. 01:16:10 Just gonna use my calc synonym since it's easier to remember than frink :P 01:16:14 Warning: reading currency values from cache dated 2007-06-04 20:08:19 UTC \ Unknown symbol "pound_1752" \ Warning: undefined symbol "pound_1752". \ Unconvertable expression: \ 48.536123424838473363 dollar (currency) -> pound_1752 (undefined symbol) 01:16:22 Gregor: Didn't HackEgo addinterps use to be daemons 01:16:30 *EgoBot, and no 01:16:38 Well, they were killable 01:16:42 It had daemons separately, yeah. 01:16:48 CakeProphet: Yeah, I need to get the HTTP connections working so it uses up to date currency info and can translate :P 01:16:49 They weren't the addinterps, it was another system. 01:17:02 Gregor: Ah :P 01:17:06 It'd be nice if there was a way to be certain that it was behaving as a daemon ... 01:17:18 Gregor: Does it matter? Just provide an easy way to kill it 01:17:25 e.g. you have to specify a name for it, and there's a special `killdaemon 01:17:34 elliott: actually kill n birds with 1 stone: write a Java -> Haskell translator 01:17:38 then you never have to use Java again. 01:17:39 -!- ive has quit (Ping timeout: 256 seconds). 01:17:48 Excellent. 01:18:04 Gregor: I mean, the only exploitable thing seems to be that you could get it to churn for hours. 01:18:09 Gregor: But there's just plain not much you can do with that power :P 01:18:21 If you use up all the CPU, anyone can `killdaemon it easily. 01:18:29 If you use up all the RAM, well you'll get killed. 01:18:33 If you use up all the disk, you can't, ulimits. 01:19:07 Anyway, I wasn't really asking how you were gonna do them in general, just how I have to convince you to special-case a single daemon :P 01:19:07 but daemons are scary!!! 01:20:13 `run acre -> "m" 01:20:14 sh: acre: command not found 01:20:19 saoidhlakslkdsfldkfg 01:20:22 `calc acre -> "m" 01:20:22 I believe acre is ambiguous 01:20:25 oh 01:20:26 right 01:20:31 Conformance error \ Left side is: 62726400000/15499969 (approx. 4046.872609874252) m^2 (area) \ Right side is: 1 m (length) \ Suggestion: divide left side by length \ or divide left side by area^(1/2) \ \ For help, type: units[length] \ or \ units[area] 01:20:35 CakeProphet: Let's see HOW ambiguous 01:20:36 `calc ?acre 01:20:45 ​[acrefeet, acrefoot, intacre, scotsacre, irishacre, acre] 01:20:47 `calc acre -> square metres 01:20:56 62726400000/15499969 (approx. 4046.872609874252) 01:21:01 how does it parse the multi-word units? 01:21:09 er, how does it work semantically 01:21:10 I mean. 01:21:25 er, both. 01:21:33 `calc squrae 99 01:21:36 erm 01:21:38 `calc square 99 01:21:39 so square is a function 01:21:42 Nah 01:21:43 Warning: undefined symbol "squrae". \ 99 squrae (undefined symbol) 01:21:45 Functions are f[x] 01:21:48 9801 01:21:48 ah 01:21:50 I'm trying to answer your question :P 01:21:56 DO IT FASTER 01:21:57 GAH 01:22:02 I think "square x" is special syntax for x^2. 01:22:04 Which is reasonable. 01:22:17 `calc cubic 8 01:22:26 512 01:22:31 excellent 01:22:35 `calc beardsecond := 5 nm; 99 mph -> megabeardseconds/minute 01:22:43 13277088/25 (exactly 531083.52) 01:22:46 bahahaha 01:23:10 `calc beardsecond := 5 nm; 99 acres -> square terabeardseconds 01:23:18 31049568/1937496125 (approx. 0.01602561553510204) 01:23:21 imo square terabeardseconds is best unit 01:23:41 `calc beardsecond := 5 nm; moon area -> square terabeardseconds 01:23:48 `quote monqy.*?agree 01:23:49 Warning: undefined symbol "area". \ Warning: undefined symbol "moon". \ Warning: undefined symbol "area". \ Warning: undefined symbol "moon". \ Unconvertable expression: \ area (undefined symbol) moon (undefined symbol) -> 25000000 m^2 (area) 01:23:51 682) i agree with elliott 01:23:55 `frink ??moon 01:24:03 ​[moonmass = 7.3483e+22 kg (mass), \ moondist = 3.84400000e+8 m (length), \ moonlum = 2500 m^-2 cd (illuminance), \ moongravity = 1.62 m s^-2 (acceleration), \ moonradius = 1738000 m (length)] 01:24:27 `frink c 01:24:36 299792458 m s^-1 (velocity) 01:24:53 `calc beardsecond := 5 nm; moonmass -> sugar cubic terabeardseconds 01:25:02 6.9540853530918000001e+8 01:25:09 How many cubic terabeardsecond cups of sugar do you need to have the same mass as the moon? 01:25:10 Ah. 01:25:34 `frink 299792458 m s^-1 01:25:40 CakeProphet: I think I might have made the best calculation possible in my entire life. 01:25:43 299792458 m s^-1 (velocity) 01:25:45 Do I kill myself now? 01:25:51 so I guess spaces do multiplication or something. 01:25:58 yep 01:26:03 elliott: no you strive to become even more excellent 01:26:35 become unpossible in your entire life. 01:26:49 calculations 01:26:51 . 01:27:00 Hmmmmmmmmmmm 01:27:23 `calc moonmass 01:27:27 `calc feet 01:27:31 `calc atom -> bits 01:27:33 7.3483e+22 kg (mass) 01:27:39 381/1250 (exactly 0.3048) m (length) 01:27:41 Warning: undefined symbol "atom". \ Unconvertable expression: \ atom (undefined symbol) -> 1 bit (information) 01:27:42 I need to figure out how many bits, exactly, are in ten cups of sugar. 01:27:47 `calc mol -> bits 01:27:50 COME ON, CALCULATE MY BULLSHIT 01:27:53 `calc m 01:27:56 Conformance error \ Left side is: 1 mol (amount_of_substance) \ Right side is: 1 bit (information) \ 01:28:02 1 m (length) 01:28:19 I was wondering how it handles units. 01:28:25 it just, does. 01:28:38 It has a set of primitive units. 01:28:41 Everything else reduces to them. 01:28:45 rght 01:28:46 +i 01:28:48 On top of that, it has a set of configured display units, that everything displays in by default. 01:28:59 And then it handles all the operations like multiplication, division, powers, etc. on units. 01:29:20 `calc ?tempF 01:29:22 `calc ?F 01:29:29 No matches found. 01:29:32 ​[doricfoot, frenchinch, lateromanfoot, statfarad, daraf, fluidounce, degreeFahrenheit, fbm, degfahrenheit, olympicfinger, Rinfinity, greekfeet, fingerlength, footlambert, sulfur, frenchfeet, thaifung, fresnel, flemishell, femto, tonsrefrigeration, irishfurlong, fourier, imperialfloz, californium, hafnium, lbf, tonref, 01:29:45 `frink editDistance["poop", "scoop"] 01:29:53 2 01:29:56 CakeProphet: try ?fahren 01:30:11 `calc 100 degfahrenheit -> degcelsius 01:30:14 `calc ?fahren 01:30:21 CakeProphet: it's F btw 01:30:21 500/9 (approx. 55.55555555555556) 01:30:24 ​[degreeFahrenheit, degfahrenheit, Fahrenheit[x]] 01:30:26 `frink 99 F -> C 01:30:34 CakeProphet: Also, 01:30:35 degfahrenheit := 5/9 degC // The *size* of a degree in the Fahrenheit scale. 01:30:35 degreeFahrenheit := degfahrenheit // The *size* of a degree in the Fahrenheit scale. 01:30:35 degF := degfahrenheit // WARNING: These should only be used when 01:30:35 // you're indicating the *difference* between 01:30:35 // two temperatures, (say, how much energy to 01:30:35 Error 01:30:37 // raise the temperature of a gram of water by 5 01:30:39 // degrees Fahrenheit, *not* for absolute 01:30:41 // temperatures. (I wonder if they should go 01:30:43 // entirely to eliminate this confusion...) 01:30:45 // For calculating absolute temperatures, use 01:30:47 // the Fahrenheit[] or F[] functions below. 01:30:49 `frink 99 F -> celsius 01:30:58 Unknown symbol "celsius" \ Warning: undefined symbol "celsius". \ Unconvertable expression: \ 99 m^-2 s^4 kg^-1 A^2 (capacitance) -> celsius (undefined symbol) 01:31:17 Pah :P 01:31:27 ah okay. 01:31:29 Oh 01:31:31 Case sensitive 01:31:34 `frink 99 F -> Celsius 01:31:42 Ohh 01:31:43 Error 01:31:45 I see, I see 01:31:48 yeah what are you doing :P 01:32:02 Grep for // Function for converting Fahrenheit to/from standard units 01:32:03 `calc F[99] 01:32:04 in http://futureboy.us/frinkdata/units.txt 01:32:12 310.37222222222222222 K (temperature) 01:32:13 basically because it's not a multiplication factor 01:32:15 right 01:32:16 it can't be a simple unit 01:32:20 CakeProphet: You can write that as 01:32:20 this is what units does 01:32:22 `calc 99 -> F 01:32:28 with tempF and tempC 01:32:28 which is a bit nicer. 01:32:30 Right. 01:32:31 310.37222222222222222 K (temperature) 01:32:49 I suppose K is the temperature primitive then. 01:32:53 that... uh... makes sense. 01:32:55 \u2109 := degfahrenheit // Single Unicode codepoint for 01:32:55 // DEGREE FAHRENHEIT 01:32:56 Useful 01:33:03 CakeProphet: It's based on SI units whenever possible 01:33:06 But you can change the display units: 01:33:21 `calc temperature :-> "Celsius"; 99 -> F 01:33:28 It's the smiley face operator. 01:33:31 BasicUnitFormatterManager: Warning: cannot find unit 'Celsius' -- you may get errors when displaying units of this type later. \ 37.22222222222222222 01:33:37 Oh, god, I'm an idiot 01:33:44 oh no you've angered the BasicUnitFormatterManager 01:34:00 OK, lemme figure this out :P 01:34:03 elliott: today does not seem to be your day. 01:34:10 you're making as many mistakes I typically make with hackego stuff. 01:34:11 Aha 01:34:11 So, the size of a Kelvin 01:34:11 // and a degree Celsius are the same, but 01:34:11 // the zero point of the Celsius scale is actually 01:34:11 // set to .01 Kelvin below the triple point. 01:34:25 That is... so stupid :P 01:34:40 so temperature is all fucked up in frink 01:34:41 SO YEAH I TOTALLY LOVE IT DISPLAYING IN KELVINS NO DEBATE 01:34:44 CakeProphet: No 01:34:47 CakeProphet: Temperature is all fucked up in real life 01:34:50 He's quoting the actual standards 01:34:55 oh okay. 01:35:54 `calc ??bit 01:35:59 `calc ??byte 01:36:03 ​[blackcubit = 0.540512 m (length), \ hebrewcubit = 0.446532 m (length), \ egyptianshortcubit = 0.44914457142857142856 m (length), \ bit = 1 bit (information), \ shortgreekcubit = 0.35575875 m (length), \ romancubit = 111/250 (exactly 0.444) m (length), \ greekcubit = 0.474345 m (length), \ persianroyalcubit = 01:36:07 ​[byte = 8 bit (information)] 01:36:11 blackcubit? 01:36:13 http://futureboy.us/frinksamp/derivatives.frink 01:36:17 LIKE SCOTCH BUT BETTER 01:36:30 so many cubits. 01:36:52 this program will be useful for whenever I decide to make a historic RP MUD 01:36:56 Wow, X-Chat Aqua really sucks. 01:37:03 But brew can't build X-Chat for me >_< 01:37:31 so I can say "the palace of the Gupta ruler is 215123135981240981240812 Guptan cubits" 01:37:31 Gregor: Don't use XChat. 01:37:36 or whatever measurement the Gupta dynasty used. 01:37:40 Gregor: http://limechat.net/mac/ 01:37:46 Gregor: Trust me :P 01:37:58 elliott: I used it for a while. 01:37:59 It sucks. 01:38:11 Gregor: It's not all that fully-featured, but it's also not painful. You want to run ported software on OS X; it will be painful. 01:38:12 Just tried X-Chat Aqua to see if it sucks less. 01:38:13 It doesn't. 01:38:25 LimeChat is okay, it's just not very fleshed out. 01:38:27 At least it has ignores nowadays. 01:38:47 Limechat's huge issue for me is that it remembers channels from session to session. 01:38:48 `calc 215123135981240981240812 persianroyalcubits -> m 01:38:56 1.3769601687887272727e+23 01:38:59 So if I ever restart it, it forceably rejoins every channel I've ever been in, which is godawful with a BNC. 01:39:02 Gregor: Tried Cmd+W? :-P 01:39:07 Gregor: But I think you can disable that. 01:39:12 It's in the server prefs or main prefs I believe. 01:39:30 `calc ??fourier 01:39:34 OK, X-Chat Aqua is seriously unusable. 01:39:39 ​[fourier = 1 m^-2 s^3 kg^-1 K^2 (unknown unit type)] 01:39:41 *fffffff* 01:39:53 does this thing let me look up functions? 01:40:22 wait what the hell is a fourier 01:40:52 CakeProphet: Ooh, I forgot YET ANOTHER THING Frink can do: 01:40:55 `frink g = new graphics; g.text["Hello, world!", 0, 0]; g.write["foo.png", 640, 480] 01:41:05 DrawTextExpression: Don't have environment! \ GraphicsUtils:getWriterFormatNames: \ java.lang.reflect.InvocationTargetException \ Warning: unknown extension 'png' when writing image file 'foo.png'. Image file will probably not render correctly. \ The file formats supported for writing by your Java platform are: 01:41:09 temperature per square length mass? 01:41:13 Javaaaaaaaaaaaaa >_< 01:41:34 `run frink 'g = new graphics; g.text["Hello, world!", 0, 0]; g.write["foo.png", 640, 480]' 2>&1 | paste2 01:41:39 CakeProphet: And yes, (?)? looks up everything 01:41:43 `frink ??java 01:41:44 sh: paste2: command not found 01:41:53 ​[Javanese[str], \ FromJavanese[str], \ staticJava[arg1,arg2], \ newJava[arg1], \ newJava[arg1,arg2], \ callJava[arg1,arg2,arg3], \ newJavaArray[arg1,arg2]] 01:41:53 `calc ??fft 01:41:58 `run frink 'g = new graphics; g.text["Hello, world!", 0, 0]; g.write["foo.png", 640, 480]' 2>&1 | paste 01:42:01 Javanese? 01:42:03 No matches found. 01:42:06 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.18412 01:42:07 language translation? 01:42:09 CakeProphet: Grep /FFT/ on http://futureboy.us/frinkdocs/ 01:42:26 Also the library 01:42:27 Fourier[text] Routines for discrete and fast Fourier transforms (FFT) of data. 01:42:39 which we can't access without manual downloading because Gregor hasn't told me how to get HTTP working yet. 01:42:52 The file formats supported for writing by your Java platform are: 01:42:53 GraphicsUtils:getWriterFormatNames: 01:42:53 java.lang.reflect.InvocationTargetException 01:42:54 Wow :P 01:42:58 `rm foo.png 01:42:59 rm: cannot remove `foo.png': No such file or directory 01:43:02 `run echo $http_proxy 01:43:03 http://127.0.0.1:3128 01:43:09 `calc Javanese["Hello"] 01:43:20 Error reading from http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&format=text&langpair=en|jw&q=Hello: \ java.net.UnknownHostException: ajax.googleapis.com:80 \ Error when calling function Javanese: \ Error when calling function translate: \ MatchExpression: left must be string. Expression was undef 01:43:22 Like I said 01:43:23 No HTTP yet 01:43:25 Gregor: Tried that 01:43:28 Gregor: Four-oh-three'd 01:43:36 CakeProphet: Anyway, the FFT implementation is in http://futureboy.us/frinksamp/Fourier.frink (grep for "// Fast Fourier Transform") 01:43:41 elliott: Well, you can only access what I've whitelisted. 01:43:43 CakeProphet: It probably isn't, uh, fast, though, being implemented in Frink itself. 01:43:56 "F"FT 01:44:01 Gregor: Can you whitelist a bunch of domains for me? :P 01:44:09 I /can/. 01:44:12 But I /won't/. 01:44:21 `calc binomial[3,4] 01:44:23 Gregor: They're just translation, currency conversion, and the like. 01:44:25 Anything you can't get through `fetch, you don't need :P 01:44:30 0 01:44:34 Gregor: Oh come on :P 01:44:44 so this thing is kind of like Mathematica kind of. 01:44:53 Gregor: It lets us convert CURRENT GOLD PRICES to HISTORICAL VALUES OF THE POUND IN THE EIGHTEENTH CENTURY 01:45:02 And then TRANSLATE OUR THESIS ON IT TO ARABIC 01:45:13 What about ... 01:45:15 Linear-B? 01:45:23 Gregor: No :P 01:45:30 . 01:45:35 Interest waning ... 01:45:35 * elliott tries to find a definitive list of the domains Frink needs. 01:45:36 it's like mathematica but with units. 01:45:45 >_> 01:45:57 * CakeProphet doesn't actually know much about mathematica 01:45:59 Gregor: What IS on the whitelist, anyway 01:46:12 elliott: Mostly Google and Wikipedia. 01:46:18 Probably a couple other things. 01:46:19 `calc println[join["\n",sort[lines["http://google.com/"]]]] 01:46:28 LineEnumeration: could not open http://google.com/: \ java.net.UnknownHostException: google.com:80 \ at frink.e.f$a.a(frink) \ at frink.e.f$a.access$000(frink) \ at frink.e.f.do(frink) \ at frink.expr.s.a(frink) \ at frink.c.e$20.do(frink) \ at frink.c.s.if(frink) \ at frink.c.f.a(frink) \ at 01:46:30 for line = lines[url] 01:46:30 for [result] line =~ %r/(\w+@(?:\w|\.)+\.\w+)/g 01:46:30 println[result] 01:46:36 I like how Frink is better at some Perl things than Perl is 01:46:49 I'm guessing %r is like s? 01:46:57 how is that better than Perl? :P 01:46:59 It's the regexp literal syntax, so ... not really? 01:47:03 CakeProphet: Note "url" 01:47:10 All of Frink's file reading functions work on URLs. 01:47:21 oh well that's cool I guess. 01:47:29 * elliott adds the HTTP proxy stuff. 01:47:31 Or, hmm 01:47:34 I /do/ have to add a use LWP to get that in Perl. 01:47:34 I'm not sure -D will even work 01:47:39 so I guess that's something. 01:48:00 still no $_ goodness. 01:48:43 You could assign it to a variable named _, I believe 01:48:57 that's not quite how $_ works though 01:49:04 CakeProphet: Also, note how that iterates through all regexp matches 01:49:11 Of that specific group 01:49:13 I see. 01:49:34 each match in the string or each group in the match? 01:49:36 * elliott recompiles a frink with the proxy settings. 01:49:42 CakeProphet: Each match 01:49:54 ah yes okay. same as perl then. 01:49:58 with g on 01:50:25 * elliott reuploads 01:50:37 CakeProphet: How do you go through each match in Perl? 01:50:55 while (/blah/g) 01:51:05 Ah 01:51:28 I'm sure there's another way to do it with a for loop 01:51:30 but that's the one I use. 01:52:23 `run mv frink lib 01:52:26 No output. 01:52:31 `calc read["http://google.com/"] =~ %s/<[^>]*>//gs 01:52:33 ​/hackenv/bin/calc: line 2: /hackenv/lib/frink: Permission denied \ /hackenv/bin/calc: line 2: exec: /hackenv/lib/frink: cannot execute: Success 01:52:40 `run chmod +x lib/frink 01:52:42 No output. 01:52:44 `calc read["http://google.com/"] =~ %s/<[^>]*>//gs 01:52:52 Googlewindow.google={kEI:"eriLTsLEIqLjiALV-K36AQ",getEI:function(a){var b;while(a&&!(a.getAttribute&&(b=a.getAttribute("eid"))))a=a.parentNode;return b||google.kEI},kEXPI:"28936,30465,33068,33076,33104",kCSI:{e:"28936,30465,33068,33076,33104",ei:"eriLTsLEIqLjiALV-K36AQ"},authuser:0,ml:function(){},kHL:"en",time:function(){return(new 01:53:14 `run perl -e '$_="tttt"; print /t/g' 01:53:17 tttt 01:53:26 ah okay for or while doesn't matter. 01:53:43 `run perl -e '$_="tttt"; print for /t/g' 01:53:45 tttt 01:53:49 `run strings lib/frink | grep 'http://' | paste 01:53:49 `run perl -e '$_="tttt"; print while /t/g' 01:53:51 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31036 01:53:52 tttttttttttttttt 01:53:55 ....er 01:54:18 okay so while is probably not what you want. 01:55:01 Gregor: OK, how much pleading do I gotta do to get these domains whitelisted: www.systranbox.com, www.systranet.com, www.xe.com, babelfish.altavista.com, futureboy.us, www.measuringworth.com, ajax.googleapis.com? 01:55:15 Depends, how many of those are secretly porn? 01:55:18 Those are all currency conversion and translation, apart from futureboy.us which is the Frink site and contains all the auto-downloadable libraries. 01:55:23 "futureboy.us" looks like gay porn to me. 01:55:28 http://futureboy.us/ :P 01:56:30 Gregor: Anyway, I think `fetch would be more useful to download gay porn than any sort of scripted thing :P 01:56:35 The /g modifier specifies global pattern matching--that is, matching as many times as possible within the string. How it behaves depends on the context. In list context, it returns a list of the substrings matched by any capturing parentheses in the regular expression. If there are no parentheses, it returns a list of all the matched strings, as if there were parentheses around the whole pattern. 01:56:48 elliott: Well yeah, that's what it's for. 01:56:49 In scalar context, each execution of m//g finds the next match, returning true if it matches, and false if there is no further match. 01:57:09 Gregor: Right. Unfortunately I have no interest in gay porn, and tons of interest in Frink libraries, currency conversion, and translation :P 01:57:21 Pfff. 01:57:29 (I take it adding the normal domain includes the www. subdomain too? Just thinking of redirections and the like.) 01:57:30 The effort involved in adding them RIGHT NOW is over my lazy threshold. 01:57:41 Is it part of the repo? 01:57:44 I could send you a patch. 01:57:46 `help 01:57:47 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 01:58:31 No, it's not. 01:58:40 Repeat after me: Laaaaaaaame 01:58:43 Quick CakeProphet repeat. 01:58:58 `quote monqy.*?agree 01:59:01 682) i agree with elliott 01:59:24 .*? = .*; this isn't Perl. 01:59:27 `quote [^]]agree.*elliott 01:59:30 682) i agree with elliott 01:59:36 Err 01:59:37 I meant 01:59:40 lol 01:59:41 `log [^]]agree.*elliott 01:59:44 why would .*? = .* that's silly 02:00:04 2011-10-05.txt:01:59:30: 682) i agree with elliott 02:00:07 lol 02:00:11 You can't make zero-or-more optional; it already IS optional. 02:00:27 that's not what ? means 02:00:28 there 02:00:34 ? means optional everywhere. 02:00:37 nope 02:00:52 Yes. 02:00:55 Perl mind virus. 02:00:58 ? is non-greedy in perl when used after * or + 02:01:26 this is, I thought, how most regexes workd. For example, PCRE and Python 02:01:29 this is most 02:01:29 of them. 02:01:32 yep. 02:02:28 What would it even mean to non-greedily grep? 02:02:30 It just prints out matching lines. 02:02:51 it's non-greedy matching one or zero repetitions of . 02:02:55 which is useful 02:03:01 for not having . match everything 02:03:20 .*? = "some stuff inbetween the thing before and the thing after it" 02:03:55 -!- oerjan has quit (Remote host closed the connection). 02:04:08 -!- oerjan has joined. 02:04:31 .* = "MATCH EVERYTHING UP TO A LINE BAHAHAHAHAHA SUCKER" 02:04:38 CakeProphet: You do not understand. 02:04:41 -!- pikhq has quit (Ping timeout: 256 seconds). 02:04:47 of course in actual programs I try to avoid .*? in favor of something more efficient. 02:04:48 Non-greedy matching would never change whether grep prints a line or not. 02:05:08 erm... 02:05:22 `quote monqy.*agree 02:05:25 682) i agree with elliott 02:05:55 why? 02:06:35 does it not match . to the end of the line? 02:06:55 Um... you realise that monqy.*agree would work in Perl, Python, etc. too? 02:07:15 "Regexps are declarative" is the closest I can come to answering your question, because it doesn't make any sense. 02:07:27 The string has a monqy in it; it then has an arbitrary amount of text, followed by an agree. 02:07:39 01:46:12: elliott: Mostly Google and Wikipedia. 02:07:45 not esolang, check 02:07:47 That is fact. If a regular expression algorithm cannot confirm that that string matches that regular expression, then it is just... broken. 02:09:04 `curl esolangs.org 02:09:07 ​% Total % Received % Xferd Average Speed Time Time Time Current \ Dload Upload Total Spent Left Speed \ .100 1110 100 1110 0 0 8034 0 --:--:-- --:--:-- --:--:-- 8034.100 1110 100 1110 0 0 6976 0 --:--:-- --:--:-- --:--:-- 0 02:09:11 Grrf 02:09:15 elliott: erm... 02:09:16 `run curl esolangs.org 2> /dev/null 02:09:18 \ \ \ \ \ 02:09:25 Gregor: Did you just add esolangs.org before adding the ones I asked for? X-D 02:09:29 -!- pikhq has joined. 02:09:30 elliott: what you're basically saying is "all * and + are non-greedy always" 02:09:35 elliott: No, was just checking if it's already there. 02:09:45 elliott: I don't have the keys set up to SSH from here, so it's bleh. 02:09:54 Gregor: abcdefghijklmnopqrstuvwxyz 02:10:01 If you need any punctuation, well... me too, man, me too. 02:10:56 who removed the punctuation from the topic. 02:11:03 atehwa. 02:11:13 * oerjan swats atehwa -----### 02:11:18 My disabilities must end with the passing of the Esolang event in Hel/Finland. 02:11:28 `run perl -e '$_="this is a test"; /this(.*?)test/; print $1; 02:11:30 sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file 02:11:44 `run perl -e '$_="this is a test"; /this(.*)test/; print $1;' 02:11:46 elliott: it's a miracle! 02:11:47 is a 02:11:49 `run perl -e '$_="this is a test"; /this(.*?)test/; print $1;' 02:11:51 is a 02:11:54 o_o 02:12:14 CakeProphet: For someone who's such a fan of Perl, you think you'd realise that the major strength of regexps is that they're declarative. 02:12:33 elliott: no I just misunderstood the greediness semantics entirely. 02:12:59 Pretty sure you can't give a declarative semantics that makes .* behave in such a broken manner. 02:13:07 It would necessarily involve detailing a sequential scanning algorithm. 02:13:54 `run perl -e '$_="this is a test is a test"; /this(.*?)test/; print $1;' 02:13:57 is a 02:13:58 `run perl -e '$_="this is a test is a test"; /this(.*)test/; print $1;' 02:14:01 is a test is a 02:14:26 that is how greediness works. okay got it. 02:14:37 Changing greediness only changes what matches you might get from a regexp. 02:15:01 It never, ever changes whether it matches or not. 02:15:15 Because either there are multiple matches to choose from -- in which case greediness effects which you pick but does not affect whether the line as a whole matches -- 02:15:25 or there is no choice to make between N possible matches, and so the greediness flag has no effect. 02:15:37 Therefore greediness is completely irrelevant for grep, apart from when it's used interactively and highlights the matching portion. 02:15:53 I was assuming a degree of procedural simplicity to the algorithm, I suppose. 02:16:18 -!- ive has joined. 02:16:38 it's just never been a problem because I almost always write .*? and it always does what I expect. 02:17:42 That is the worst habit I've ever heard of. 02:17:56 I don't always write *? just .*? 02:17:56 You usually want ".*". 02:20:08 -!- CakeProp1et has joined. 02:20:44 >_> I would think you usually want .* to match minimally in a complex pattern. 02:20:47 but it really just depends on what you're doing 02:21:05 -!- pikhq_ has joined. 02:21:07 s/\.\*/.*?/ 02:22:22 -!- CakeProphet has quit (Ping timeout: 245 seconds). 02:22:44 -!- CakeProp1et has changed nick to CakeProphet. 02:24:13 -!- pikhq has quit (Ping timeout: 252 seconds). 02:24:41 elliott: also to what degree I'm actually a "perl fan" is debatable. :P 02:24:52 but I guess it's a fair description. 02:24:59 given my history. 02:26:12 i expect .*? to be more efficient if .* needs to backtrack a lot for the whole to match 02:27:05 and assuming it doesn't get compiled into a [ND]FA 02:28:00 oerjan: You can't compare the performance of two programs that don't do the same thing. 02:28:05 And that's a lousy assumption to make. :p 02:28:33 depends on the complexity of the regex... 02:28:39 if there are backreferences 02:28:55 Some regexp. 02:30:32 if there are backreferences it will not usually be regular, so cannot become a finite automaton. 02:30:33 -!- Nisstyre has quit (Ping timeout: 248 seconds). 02:33:22 readTVar is cheap, right? 02:33:38 no idea 02:33:43 As in, if I have a variable read from a lot of places but only written from one, using a TVar for consistency won't add much overhead? 02:33:52 I know it would with an MVar because a read is basically a take and a put, but I don't think it's true for STM 02:34:09 At least that's my intuitive understanding :P 02:35:00 -!- Nisstyre has joined. 02:43:10 eoarhlo 02:43:37 Oh this will be useful: 02:43:54 `frink 99 -> senary 02:44:02 243 02:44:19 `frink parseInt["243", senary] 02:44:26 Hmm, might have to specify the number seven instead of senary there 02:44:28 Error when calling function parseInt: \ Second argument to parseInt must be an integer. \ at frink.c.ab.a(frink) \ at frink.c.ab.evaluate(frink) \ at frink.parser.Frink.parseString(frink) \ at frink.parser.Frink.parseStrings(frink) \ at frink.parser.Frink.main(frink) \ Error when calling function parseInt: 02:44:32 `frink parseInt["243", 7] 02:44:41 129 02:45:01 `frink messageDigestInt["abc", "SHA-512"] -> nonary 02:45:10 262827730040205642614466440440232551770554584231506366374325431342721804221340285445347202750758683730362606388826870860288613438235502803411426336365100834080128 02:45:12 Yessssssssssssssssssssssssssssssssssssssssssssss;dfkglhd 02:45:46 -!- yours_truly has joined. 02:46:33 -!- Nisstyre has quit (Ping timeout: 248 seconds). 02:46:37 Hey, oerjan still didn't name my ellipsisatification function 02:47:18 i so did! 02:47:36 oerjan: What did you name it? 02:47:43 elliott: Using readTVar prolifically and putTVar rarely is extremely cheap, and the use-case STM is optimised for. 02:47:44 `frink 99 -> undecimal 02:47:54 Unknown symbol "undecimal" \ Warning: undefined symbol "undecimal". \ Unconvertable expression: \ 99 -> undecimal (undefined symbol) 02:48:00 pikhq_: Right, it's just that there will literally never be a conflict, because the TVar is only modified from one thread. 02:48:05 elliott: procrustean 02:48:05 ...Hmm, that might not actually be true :P 02:48:09 Yeah I'll just use TVars for everything. 02:48:11 oerjan: NOT GOOD 02:48:19 oerjan: What's undecimal meant to be 02:48:41 11 02:48:42 -!- yours_truly has quit (Client Quit). 02:48:45 `frink 99 -> undenary 02:48:46 ellipse was a good name too 02:48:48 readTVar basically is just a straight read from a var, except only happening on transaction commit. It is only ever more than slight overhead if the transaction is invalid. 02:48:54 90 02:48:59 wtf 02:49:03 pikhq_: readTVarIO avoids the transaction too :P 02:49:03 If the transaction's invalid, you get to do the transaction all over again. 02:49:10 oerjan: ? 02:49:26 So, it's cheap unless you're putting to the var very often. 02:49:32 `frink 99 -> denary 02:49:35 Say, at the point where I wonder why the hell you're doing threads. 02:49:41 http://www.wolframalpha.com/input/?i=99+in+undecimal 02:49:41 99 02:49:43 definitely correct 02:49:50 oerjan: AKA decimal :P 02:49:56 O KAY 02:50:02 -!- ralc has quit (Remote host closed the connection). 02:50:27 pikhq_: Hmm, I wonder how I'll handle the case of e.g. teleports. 02:50:42 `frink 99 -> duovigintesimal 02:50:42 I want to unilaterally set the position of a player, even though it'll be changing constantly because e.g. they're running. 02:50:48 Oh, I guess modifyTVar will avoid conflicts in that case? 02:50:51 Unknown symbol "duovigintesimal" \ Warning: undefined symbol "duovigintesimal". \ Unconvertable expression: \ 99 -> duovigintesimal (undefined symbol) 02:50:55 Or will it? 02:51:02 Wait, there is no modifyTVar :P 02:51:07 But yeah, not sure what to do there. 02:51:13 The player thread will be constantly incrementing their position. 02:51:23 So there'll be a conflict every time the teleportation transaction runs. 02:51:34 elliott: hm, "cropText" 02:51:36 I mean, sure, they'll stop running EVENTUALLY, but it means you can theoretically indefinitely postpone being teleported. 02:51:37 The player thread will itself be running transactions. 02:51:56 oerjan: I wanted to call it "truncate" but that's taken. 02:52:03 oerjan: I'd rather avoid "Text" since I use the Text type :P 02:52:07 (but this takes Strings) 02:52:12 cropWhatever 02:52:13 It is equally likely the incrementing of the position will be the transaction that gets retried. 02:53:01 pikhq_: Oh, I thought it'd retry them both simultaneously. 02:53:11 Right, duh, of course retrying is sequential whenever that would matter. 02:53:25 -!- Nisstyre has joined. 02:53:53 What happens is that each time it tries to commit a transaction, at least one transaction will actually commit. 02:54:16 And it will continue down the list of transactions to commit sequentially, only retrying the ones that fail. 02:54:45 Right. 02:54:46 So, you're *always* getting at least one transaction to succeed, and in the common case multiple transactions will succeed. 02:55:16 Notice that the worst-case behavior is basically sequential execution with added overhead. :) 02:56:14 oerjan: the problem with ellipse is that it reads like a noun to me... 02:56:15 :P 02:56:24 hmm... cutString? 02:56:29 cutoff? 02:56:36 CROP I SAY 02:56:37 oerjan: monqy: how does cutoff sound? 02:58:51 cutoff is okay but it does more than that it's more of a fadeout but that's awful 02:59:33 > let cutoff end n xs | n <= length end && xs `isLongerThan` n - length end = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan _ [] = False; isLongerThan 0 _ = True; isLongerThan n (_:xs) = isLongerThan (n-1) xs in cutoff "..." 9 "abc" 02:59:34 Couldn't match expected type `[t]' 02:59:34 against inferred type `GHC.Types... 02:59:39 > let cutoff end n xs | n <= length end && xs `isLongerThan` n - length end = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan _ [] = False; isLongerThan 0 _ = True; isLongerThan n (_:xs) = isLongerThan (n-1) xs in cutoff "..." 9 (replicate 9 'a') 02:59:40 Couldn't match expected type `[t]' 02:59:40 against inferred type `GHC.Types... 02:59:44 ... 02:59:54 > let cutoff end n xs | n <= length end && xs `isLongerThan` (n - length end) = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan _ [] = False; isLongerThan 0 _ = True; isLongerThan n (_:xs) = isLongerThan (n-1) xs in cutoff "..." 9 (replicate 9 'a') 02:59:55 Couldn't match expected type `[t]' 02:59:56 against inferred type `GHC.Types... 02:59:59 oerjan: hepl 03:00:52 lol @ frink's multifor 03:01:13 it's actually not a bad idea it's just a funny name. 03:01:26 yeah multifor is nice 03:02:06 elliott: wrong isLongerThan argument order 03:02:36 oh duh 03:02:41 Frink can evaluate a string as a Frink expression. If that means something to you, good. It's cool. You can make programs that write and run their own programs. Frink became self-aware on December 7, 2001 at 9:26 PM MST. This is 1561.926 days after Skynet became self-aware. History will be the judge if this December 7th is another date that will live in infamy. 03:02:46 ... 03:03:34 > let cutoff end n xs | n <= length end && xs `isLongerThan` n - length end = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan [] _ = False; isLongerThan _ 0 = True; isLongerThan (_:xs) n = xs `isLongerThan` (n-1) in cutoff "..." 9 "abc" 03:03:35 Couldn't match expected type `GHC.Bool.Bool' 03:03:35 against inferred type ... 03:03:43 oerjan: hi, hepl 03:03:48 > let cutoff end n xs | n <= length end && xs `isLongerThan` (n - length end) = end; cutoff end n (x:xs) = x : cutoff end (n-1) xs; isLongerThan [] _ = False; isLongerThan _ 0 = True; isLongerThan (_:xs) n = xs `isLongerThan` (n-1) in cutoff "..." 9 "abc" 03:03:49 "abc*Exception: :3:4-127: Non-exhaustive patterns in function ... 03:03:52 X-D 03:04:16 it types! 03:04:16 nice pattermns for cutoff 03:04:34 ASCII needs moar brackets. 03:04:38 that means you're at least halfway there 03:04:43 nice patterms for islognerthan too 03:04:51 cutoff :: String -> Int -> String -> String 03:04:51 cutoff end n = cutoff' end (n - length end) 03:04:52 where cutoff' _ _ [] = [] 03:04:52 cutoff' end 0 _ = end 03:04:52 cutoff' end m (x:xs) = x : cutoff' end (m-1) xs 03:04:55 that should do it, I think 03:05:32 elliott: you are missing cutoff end n [] case 03:05:42 oerjan: look closely 03:05:44 where cutoff' _ _ [] = [] 03:05:45 in what you tried 03:05:47 PEEKABOO 03:05:48 :P 03:05:51 but yeah I got that 03:06:56 CakeProphet: but yeah, I really like Frink, it is one of the few languages I have few problems with 03:08:06 what about the "ugly boolean" stuff 03:08:13 like with "" being false and stuff. 03:08:29 I said few problems 03:08:34 I think the units are Very Cool and would like to see that in other languages. 03:08:44 there's a Haskell library for it but it's not very good 03:08:51 elliott: just one corner case, n < length end 03:08:53 but yes, dimensional analysis is Good 03:08:56 oerjan: indeed 03:09:08 oerjan: Haskell should have saturation arithmetic :P 03:09:09 can you do things like sphereVolume[radius is length] := ... 03:09:15 in the Haskell library 03:09:31 it's something like 03:09:39 sphereVolume :: (Num a) => a :. Length -> a :. Length 03:09:49 ah 03:10:03 http://hackage.haskell.org/packages/archive/dimensional/0.10.1.2/doc/html/Numeric-Units-Dimensional-SIUnits.html 03:10:13 http://hackage.haskell.org/packages/archive/dimensional/0.10.1.2/doc/html/Numeric-Units-Dimensional.html 03:10:15 Nice typeclasses. 03:10:18 that's not... too bad. 03:10:21 Should be type families. 03:10:35 the use looks something like 03:10:35 sqrt (9 *~ meter^pos2) 03:10:39 at least that's the example I found on their page :P 03:10:40 elliott: oh hm i don't think that cutoff' _ _ [] = [] is right, because you need to end when the length of what's remaining == length of end 03:10:44 :: Area Double 03:10:47 CakeProphet: so it's actually better than I said 03:10:56 oerjan: no, I don't 03:11:06 oerjan: if a line fits on the screen, no ellipsis is required 03:11:43 Prelude Main MC.Utils> cutoff "..." 9 (replicate 9 'a') 03:11:43 "aaaaaa..." 03:11:44 hmm 03:11:48 oerjan: you're right, that is a bug :P 03:11:51 type DOne = Dim Zero Zero Zero Zero Zero Zero Zero 03:11:52 lol wat 03:11:53 oerjan: just an off-by-one, I think 03:12:03 off-by-length of end, i think 03:12:16 is that.... 03:12:17 oerjan: um howso? 03:12:19 binary in phantom types? 03:12:37 the problem is that once you know end is supposed to go there, you have already got too many chars from the string included 03:12:43 CakeProphet: i don't think so 03:12:45 data Dim l m t i th n j 03:12:54 oerjan: hm... 03:12:57 oh I see. 03:12:57 oerjan: you fix it :P 03:13:01 it was so ugly first time around 03:13:18 it's just kind of ugly and probably not as flexible as frink's unit system. 03:14:08 `frink for line = lines["http://esolangs.org"] { println["test"] } 03:14:16 Syntax error: , line 1, near column 40 \ for line = lines["http://esolangs.org"] { println["test"] } \ ^ \ 1 error(s) occurred during parsing. 03:14:21 `frink for line = lines["http://esolangs.org"] do { println["test"] } 03:14:29 Syntax error: , line 1, near column 40 \ for line = lines["http://esolangs.org"] do { println["test"] } \ ^ \ 1 error(s) occurred during parsing. 03:14:32 hmph :P 03:15:58 `frink newJava["frink.parser.Frink", []] 03:16:08 JavaObject:frink.parser.Frink 03:16:16 -!- pikhq has joined. 03:16:26 `frink newJava["frink.parser.Frink", []].parseString["\"meta\""] 03:16:36 I wonder why it calls eval parse in the API :P 03:16:38 meta 03:16:44 CakeProphet: Check out that shit :P 03:17:14 `frink newJava["frink.parser.Frink", []].parseStringToExpression["\"meta\""] 03:17:26 meta 03:17:32 Awww yeaaah 03:17:41 ... 03:17:59 next logical step: evaluate Jython? 03:18:27 oerjan: Fixed it yet? 03:18:54 > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l ys1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing now yeah" 03:18:56 "testing..." 03:19:00 (assuming that Jython has an interpreter binding/implementation in Java) 03:19:05 > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l ys1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing eh" 03:19:07 "testing..." 03:19:09 CakeProphet: Dude. 03:19:10 argh 03:19:13 What else would Jython be written in? 03:19:37 -!- pikhq_ has quit (Ping timeout: 248 seconds). 03:19:45 elliott: I've learned not to assume these things. 03:19:46 > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l ys1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing a" 03:19:48 "testing..." 03:19:51 http://futureboy.us/frinkdocs/images/multiinput.png ;; I love how you can get shit like this from [first, last] = input["What is your name",[["First Name", "Jeff"], ["Last Name", "Albertson"]]] 03:19:57 Except less ugly in the more recent GUIs Frink has :P 03:20:08 oh duh 03:20:29 > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing eh" 03:20:32 "testing eh" 03:20:35 > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing now" 03:20:37 "testing..." 03:20:41 > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "..." 10 "testing a" 03:20:43 "testing a" 03:20:46 elliott: ^ 03:20:58 oerjan: ok, now to eliminate all uses of let and case :P 03:21:04 i didn't handle n < l, though. or did i 03:21:26 > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "........." 10 "test ho" 03:21:28 "test ho" 03:21:43 > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "........." 4 "test ho" 03:21:45 "test ho" 03:22:13 Is the use of splitAt really necesssary? It's kinda gross 03:22:19 But I guess nicer than a loop 03:22:43 oerjan: your naming is very inconsistent 03:22:46 of the xs/yss 03:23:01 well i named y what would be used after the in 03:23:51 hmm. I'm just wondering why it's so ugly :P 03:23:55 THIS IS AN ELEGANT ALGORITHM ;__; 03:24:21 > splitAt (-2) "testing" 03:24:23 ("","testing") 03:25:16 hm... 03:25:28 > let cutoff end n xs = let l = length end; (ys1, xs1) = splitAt (n - l) xs; (ys2, ys3) = splitAt l xs1 in ys1 ++ case ys3 of [] -> ys2; _ -> end in cutoff "........." 4 "test how this works" 03:25:30 "........." 03:25:59 i think it's about as reasonable as possible in the n < l case 03:26:16 What's that doing? 03:26:35 oerjan: I appreciate the effort, but am going to stay mired in indecision until I figure out a nicer way of writing it 03:26:40 well maybe. :p 03:26:47 well... 03:26:52 at least one that doesn't involve affixing numbers to variable names 03:26:55 or a case 03:31:52 :t runState 03:31:54 forall s a. State s a -> s -> (a, s) 03:32:00 oerjan: oh dear 03:32:50 -!- hagb4rd has joined. 03:33:01 > let cutoff end n = cutoff' . runState (mapM state [splitAt (n-l), splitAt l]); l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing now" 03:33:02 Not in scope: `end'Not in scope: `end' 03:33:12 oops 03:33:28 > let cutoff end n = cutoff' . runState (mapM state [splitAt (n-l), splitAt l]) where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing now" 03:33:30 "testing..." 03:33:31 * elliott wonders what oerjan's definition of less ugly is :P 03:33:39 *MWAHAHAHA* 03:33:59 > let cutoff end n = cutoff' . runState (mapM state [splitAt (n-l), splitAt l]) where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh" 03:34:01 Terminated 03:34:05 argh 03:34:06 > let cutoff end n = cutoff' . runState (mapM state [splitAt (n-l), splitAt l]) where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh" 03:34:08 "testing eh" 03:34:13 whew 03:34:26 Y U NO LIKE MONADS 03:34:36 oerjan will be shocked by the news that I'm not adopting this version 03:34:56 ;_; 03:35:16 there there 03:35:37 well the other idea i had involved using curry a lot :P 03:35:39 -!- MDude has changed nick to MSleep. 03:35:49 er, uncurry 03:36:14 cutoff' is there to solve your case hate 03:36:46 hm... 03:36:50 it's not case hate, it's 03:36:54 cutoff end n xs = ys ++ case ys'' of [] -> ys'; _ -> end 03:36:55 hate :P 03:37:13 i don't know, it definitely feels like this algorithm is simple. my version that only works for ellipses is trivial: 03:37:23 cutoff _ "" = "" 03:37:40 cutoff THREE (_:_:_:_:_) = "..." 03:37:47 cutoff n (x:xs) = x : cutoff (n-one) xs 03:37:55 so the "special case" of [] is odd to me. 03:38:07 it just cuts off the part that is always included, then the part that might possibly be included, and then checks whether there is anything left that cannot. 03:38:12 :t mapAccumL 03:38:13 forall acc x y. (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y]) 03:38:32 hm... 03:38:46 I have never once in my life used mapAccumL :P 03:38:55 I have once!! 03:39:06 or wait maybe it was mapaccumr...... 03:39:11 challenge: write a Haskell program that strips preceding and trailing whitespace, and then reduces multiple consecutive occurences of whitespace within the string to one space 03:39:23 not necessarily in that order or in any order at all. 03:39:36 atEnd (dropWhile isSpace) . dropWhile isSpace where atEnd f = reverse . f . reverse 03:39:40 there's two thirds of it 03:39:49 :t atEnd 03:39:50 Not in scope: `atEnd' 03:39:54 you'r eblind 03:39:56 you're blind 03:40:05 > let cutoff end n = mapAccumL (flip splitAt) [n-l, l] where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh" 03:40:05 > unwords . words $ " a b " 03:40:05 I just skim lazily :P 03:40:06 Couldn't match expected type `GHC.Types.Int' 03:40:06 against inferred type ... 03:40:06 "a b" 03:40:08 > nubBy (\a b -> isSpace a && isSpace b) "abc def quux \t x" 03:40:09 "abc defquuxx" 03:40:12 pah 03:40:18 argh 03:40:34 oerjan: what is cutoff' there for? 03:40:36 CakeProphet: were you joking 03:40:41 oh hm 03:40:43 no 03:40:46 CakeProphet: because: unwords.words seems to do what you want 03:40:50 elliott: i said, your case avoidance 03:40:51 that too 03:40:54 monqy: not quite 03:40:55 oerjan: you NEVER USE CUTOFF' 03:40:57 was my point 03:40:58 oh? 03:41:04 oh right 03:41:08 monqy: well it turns \n into " " 03:41:09 yes it doesn't preserve the kind of whitespace 03:41:11 yes 03:41:15 > let cutoff end n = cutoff' . mapAccumL (flip splitAt) [n-l, l] where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh" 03:41:16 Couldn't match expected type `[a]' 03:41:17 against inferred type `GHC.Types... 03:41:18 oh you want it to preserve the kinds 03:42:40 > let cutoff end n = cutoff' . flip (mapAccumL (flip splitAt)) [n-l, l] where l = length end; cutoff' ([], [pre,post]) = pre++post; cutoff' (_,[pre,_]) = pre++end in cutoff "..." 10 "testing eh" 03:42:42 " eh..." 03:42:48 wat 03:43:09 oops :P 03:43:30 :t mapAccumR 03:43:31 forall acc x y. (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y]) 03:43:55 elliott: just about _every function_ takes arguments in the wrong order for this to be pretty :P 03:44:12 in and out 03:44:13 oerjan: you can flip the arguments of cutoff 03:44:14 if you want 03:44:24 no, not that one :P 03:44:34 what do you need flipping then :P 03:44:48 the output (acc, y), for one thing :P 03:44:55 in mapAccum* 03:45:01 shall I ask #haskell to prettify it then? :p 03:45:20 code pageant = like golfing but with prettiness. 03:47:23 “Can anyone make this code less ugly?” pasted “elliott” at http://hpaste.org/52166 03:47:24 oerjan: here we go :P 03:49:10 couldn't you use a guard or something to get rid of the case? 03:49:18 huh, /another/ internet suicide by a famous programmer 03:49:57 waht 03:50:39 this time it's mark pilgrim who's erased their entire online presence 03:50:43 (last time _why) 03:50:43 CakeProphet: then it wouldn't be lazy in the ys part, but maybe elliott wouldn't care about that 03:52:00 but a pattern guard on ys'' would work, wouldn't it 03:52:11 pattern guards are so recently standardised :'( 03:52:49 hm now, what about my uncurry idea... 03:54:08 oerjan: what kind of pattern guard, again? 03:54:33 i have never used them, but isn't | [] <- ys'' the syntax 03:54:45 well yes 03:55:21 oerjan: it'd be nice if you could give me nicer names for the xss and yss though :P 03:56:37 -!- pikhq_ has joined. 03:57:11 elliott: 03:57:13 er 03:57:27 elliott: intermediateValue1 intermediateValue2 intermediateValue3 ... 03:57:58 > let cutoff end n = splitAt (n-l) >>> uncurry `id` \ys -> splitAt l >>> uncurry `id` \ys' ys'' -> ys ++ case ys'' of [] -> ys'; _ -> end where l = length end; cutoff' ([pre,post],[]) = pre++post; cutoff' ([pre,_],_) = pre++end in cutoff "..." 10 "testing eh" 03:57:59 Couldn't match expected type `GHC.Types.Int' 03:57:59 against inferred type ... 03:58:07 argh newline paste 03:58:08 oerjan: i am not using arrows... 03:58:39 elliott: how do you expect to write Haskell without using functions? 03:58:41 :3 03:58:45 it was the only way i could think of to avoid parens around the lambdas 03:59:18 -!- pikhq has quit (Ping timeout: 255 seconds). 03:59:22 man you guys sure are weird about what's pretty and stuff. 03:59:31 weirdos 03:59:37 veirdooes 04:00:34 > let cutoff end n = uncurry (\ys -> uncurry (\ys' ys'' -> ys ++ case ys'' of [] -> ys'; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing eh" 04:00:36 "testing eh" 04:00:49 > let cutoff end n = uncurry (\ys -> uncurry (\ys' ys'' -> ys ++ case ys'' of [] -> ys'; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing now" 04:00:50 maybe Haskell is just an ugly language and there's NOTHING YOU CAN DO ABOUT IT BAHAHAHAHA. 04:00:51 "testing..." 04:01:21 oerjan, why not just use a recursive function or something? 04:01:23 :v 04:01:26 CakeProphet: well _i_ think what elliott hpasted from my code was pretty :P 04:01:38 oerjan: it's the best of a bad job :P 04:01:41 oerjan: but i really want nicer names for the variables 04:02:17 > let cutoff end n = uncurry (\pre -> uncurry (\post test -> pre ++ case test of [] -> post; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing now" 04:02:19 "testing..." 04:02:41 hm... 04:02:56 > let cutoff end n = uncurry (\pre -> uncurry (\post left -> pre ++ case left of [] -> post; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing now" 04:02:58 "testing..." 04:03:25 oerjan: well it may be pretty but it has another flaw too 04:03:27 the use of (++) 04:03:36 which is /not/ optimised out, I just checked the core :D 04:03:44 sheesh 04:04:04 Madoka-Kaname: please supply a recursive function if you can think of one, btw 04:04:09 the one I wrote was horrible 04:04:15 and the one that wasn't horrible didn't work 04:04:15 Actually. 04:04:19 Doesn't even have to be recursive. 04:04:19 cutoff end n str = if(length str' > cutlen) then (take cutlen str') ++ end else str' 04:04:19 where cutlen = n - length end 04:04:19 str' = take n str 04:04:21 Can't you do that? 04:04:33 i can move pre++ out a bit 04:04:55 Madoka-Kaname: firstly, you have parenthesis disease. 04:05:03 Madoka-Kaname: secondly, that doesn't work on infinite inputs. 04:05:08 thirdly, it traverses the input twice 04:05:13 yes it does, read it more carefully 04:05:24 oerjan: ? 04:05:28 oh 04:05:36 ok, it technically does, but it still traverses the input twice :P 04:05:46 And infinite end doesn't make sense, so. 04:05:56 it failst on length str == n, though 04:05:58 *fails 04:06:16 Madoka-Kaname: infinite end /does/ make sense 04:06:20 but it's not important 04:08:33 oerjan: I'd accept a simple recursive function as long as it works, btw 04:08:40 > let cutoff end n = uncurry (\pre -> (pre++) . uncurry (\post left -> case left of [] -> post; _ -> end) . splitAt l) . splitAt (n-l) where l = length end in cutoff "..." 10 "testing now" 04:08:42 "testing..." 04:08:49 does that optimize better? 04:08:50 and would probably prefer it, to ease my mind 04:09:00 oerjan: it certainly doesn't /read/ better... but I'll check 04:10:03 i suppose splitAt is dangerous for avoid thunks in both parts, though 04:10:09 *avoiding 04:11:21 -!- hagb4rd has quit (Ping timeout: 248 seconds). 04:13:17 oerjan: it is /definitely/ not optimised better 04:13:39 I don't really care how fast it goes, it's just a convenient way to reject ugly :P 04:16:49 > let cutoff end n = cutoff' (n-l) where l = length end; cutoff' 0 xs | null (drop l xs) = xs | otherwise = end; cutoff' n [] = []; cutoff' n (x:xs) = x : cutoff' (n-1) xs in cutoff "..." 10 "testing now" 04:16:50 "testing..." 04:16:54 > let cutoff end n = cutoff' (n-l) where l = length end; cutoff' 0 xs | null (drop l xs) = xs | otherwise = end; cutoff' n [] = []; cutoff' n (x:xs) = x : cutoff' (n-1) xs in cutoff "..." 10 "testing eh" 04:16:55 "testing eh" 04:17:38 oerjan: hm that looks nice 04:18:20 oerjan: that traversal in null (drop l xs) is inevitable, right? :P 04:18:24 oh, it only looks one ahead 04:18:47 yeah it cannot give any more characters until it's checked that 04:19:07 hm I wonder if this is an unfold of some kind 04:20:46 it's essentially the same as the splitAt algorithm, except it is careful to return characters if possible before recursing 04:21:02 it looks kind of like an unfold 04:21:03 :P 04:21:07 :t unfoldr 04:21:08 forall b a. (b -> Maybe (a, b)) -> b -> [a] 04:21:22 unfoldr is tricky to get the end right, it hink 04:21:28 *i think 04:21:36 hmm, right 04:22:23 "Mark Pilgrim is alive/annoyed we called the police." 04:22:33 (-- jason scott) 04:23:59 elliott: strictly speaking most of it i think is fusing something of the form (\(x,y) -> x++ f y) (splitAt (n-l) xs) 04:24:14 which is what is needed to avoid your dreaded ++ :P 04:25:16 maybe that can be written as something unfoldry 04:25:51 hm or not. 04:25:57 food -> 04:33:36 -!- copumpkin has quit (Ping timeout: 244 seconds). 04:33:37 cutoff end m 04:33:37 | m < l = error "cutoff: target length shorter than terminator string" 04:33:37 | otherwise = cutoff' (m-l) 04:33:37 where l = length end 04:33:37 cutoff' 0 xs 04:33:37 | null (drop l xs) = xs 04:33:39 | otherwise = end 04:33:41 cutoff' _ [] = [] 04:33:43 cutoff' n (x:xs) = x : cutoff' (n-1) xs 04:33:45 oerjan: ugly but oh well 04:34:00 -!- copumpkin has joined. 04:43:57 -!- GreaseMonkey has quit (Ping timeout: 260 seconds). 04:48:35 oerjan: I HAVE ANOTHER FUNCTION FOR YOU TO NAME 04:49:41 oerjan: Stop running away. 04:49:56 i can name it unless i can't 04:50:02 i'm bad at names, after all 04:50:21 f "Abc" "fooBarBaz" == "abcFooBarBaz" 04:50:21 except for "monqy". that was a good one. 04:50:28 basically, given constructor and field name, returns a field name :P 04:51:03 f "NamedEntitySpawn" "currentItem" == "namedEntitySpawnCurrentItem" 04:51:08 implementation: 04:51:12 f cs "" = undefined 04:51:14 f "" fs = undefined 04:51:16 camelCaseConcat 04:51:21 f (c:cs) (f:fs) = toLower c : cs ++ toUpper f : fs 04:51:22 givenAConstructorAndFieldNameReturnsAFieldName. 04:51:22 oerjan: GOGOGO 04:51:41 elliott, camelCaseConcat 04:51:47 Madoka-Kaname: 04:51:48 :t concat 04:51:49 forall a. [[a]] -> [a] 04:51:59 that's how >>= is implemented and it behaves the same as the twistedmatrix in python 04:52:00 I... 04:52:02 @hoogle [a] -> [a] -> [a] 04:52:03 Prelude (++) :: [a] -> [a] -> [a] 04:52:03 Data.List (++) :: [a] -> [a] -> [a] 04:52:03 Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a] 04:52:09 elliott: i 04:52:23 @hoogle join 04:52:23 Control.Monad join :: Monad m => m (m a) -> m a 04:52:24 System.FilePath.Posix joinDrive :: FilePath -> FilePath -> FilePath 04:52:24 System.FilePath.Windows joinDrive :: FilePath -> FilePath -> FilePath 04:52:32 oerjan: hepl 04:52:35 f (c:cs) (f:fs) = toLower c : cs ++ toUpper f : fs 04:52:35 elliott, "camelCase[something]" then. 04:52:37 basically, given constructor and field name, returns a field name :P 04:52:38 f "NamedEntitySpawn" "currentItem" == "namedEntitySpawnCurrentItem" 04:52:40 @src (++) 04:52:40 [] ++ ys = ys 04:52:40 (x:xs) ++ ys = x : (xs ++ ys) 04:52:41 -- OR 04:52:41 xs ++ ys = foldr (:) ys xs 04:52:41 oerjan: hepl hepl hepl pelhpel 04:52:48 Madoka-Kaname: That isn't even camel case, thisIs. 04:52:49 erm 04:52:50 Madoka-Kaname: That isn't even camel case, ThisIs. 04:52:56 (Subject to flamewars.) 04:53:06 javaCase[something] 04:54:00 I LIKE HOW OERJAN ISN'T NAMING IT 04:54:28 my implementation proabably would have been something stupid like (++) . modL headLens toLower because im dumb and like doing things like that 04:54:36 name? no idea 04:54:57 monqy: that avoids the toUpper on the second argument 04:55:06 oh right i did not notice that 04:55:12 bad at noticing 04:55:14 i'm not sure head is a lens, anyway 04:55:20 it isn't ;_; 04:55:25 i mean 04:55:28 i'm not sure it obeys the lens laws 04:55:49 is trhere any good way to modify head 04:55:51 without points 04:57:08 monqy: did you see all my fink fanboying above because 04:57:08 you should 04:57:09 because 04:57:10 frink is 04:57:11 the best 04:57:14 elliott: +:+ 04:57:22 oerjan: not inmfxeixe.... 04:57:28 elliott: i saw the name frink and then opened a tab for frink stuff so i can ignore it 04:57:33 why not :( 04:57:33 monqy: READE LEOGS... 04:57:39 elliott: how much logs :( 04:57:41 oerjan: well maybe but ... quite obscure.... 04:57:48 oerjan: I would go with camelCase but it's not really camel case 04:57:51 Call it (.++^). (It's trying to be (v++^) but since v won't go.) 04:57:56 otherwise, camelCaseAppend 04:57:59 +camel+ 04:58:01 it's not 04:58:02 really 04:58:02 camel 04:58:03 case 04:58:51 monqy: read from http://codu.org/logs/log/_esoteric/2011-10-05#005904elliott to http://codu.org/logs/log/_esoteric/2011-10-05#015244elliott :P 04:58:51 lowerCaseCamelCaseAppned. 04:59:03 (00:59 to 01:52) 05:00:18 oerjan: i'm fine with it having a name that involves "field" btw 05:00:26 my first try was fieldName, but that's taken 05:00:34 (by a record accessor :P) 05:00:37 "filedNameify". 05:00:45 fieldNamify 05:00:52 There's a reason I pinged oerjan. 05:00:55 fieldNamiscate. 05:00:58 feldnam 05:01:15 fieldoIt. 05:01:23 -!- pikhq has joined. 05:01:27 oerjan: Ban those people and answer. 05:01:42 fieldoctrinate. 05:01:44 oh hey i just noticed someone actually fiddled with elliott's hpaste 05:02:00 Yes but 05:02:01 -- | Fits a string to a certain length, replacing the last characters 05:02:02 -- with a terminator if the string is longer. 05:02:02 -- 05:02:02 -- > cutoff "..." 8 "abcd" == "abcd" 05:02:02 -- > cutoff "..." 8 "abcdabcd" == "abcdabcd" 05:02:03 -- > cutoff "..." 8 "abcdabcda" == "abcda..." 05:02:05 cutoff 05:02:07 :: String -- ^ Terminator string 05:02:09 -> Int -- ^ Target length 05:02:11 -> String -- ^ Input string 05:02:13 -> String -- ^ Truncated result 05:02:15 cutoff end m 05:02:17 | m < l = error "cutoff: target length shorter than terminator string" 05:02:19 | otherwise = cutoff' (m-l) 05:02:21 where l = length end 05:02:23 cutoff' 0 xs 05:02:25 | null (drop l xs) = xs 05:02:27 | otherwise = end 05:02:29 cutoff' _ [] = [] 05:02:31 cutoff' n (x:xs) = x : cutoff' (n-1) xs 05:02:33 it became too glorious of its own accord. 05:02:40 ahh 05:02:52 fieldMerge 05:02:54 fieldMyName, as in "Pimp My Ride". 05:03:04 I'm going to rip your skulls off. 05:03:21 Would it help if I told you that the current name that I'm dissatisfied with is mkPacketFieldName? 05:03:27 -!- MichaelBurge has quit (Ping timeout: 258 seconds). 05:03:30 helpFieldsHelp 05:03:31 fieldsFriend 05:03:37 oerjan: WOULD THAT HELP 05:03:46 fieldICantNameThis. 05:03:59 namesAreHard 05:04:07 packsOfFields 05:04:07 I didn't want "packetFieldName" because I have "packetName" and "packetShowsFieldsPrec" in a typeclass and I didn't want to make it look like it was part of that typeclass. 05:04:13 -!- pikhq_ has quit (Ping timeout: 258 seconds). 05:04:13 You are horrible. 05:04:15 I want to kill you. 05:04:28 mkFieldFriend 05:04:42 snuggleTheseNamesIntoFieldishName. 05:04:53 breedField 05:04:57 killingFields 05:05:57 fieldorTheAppendator. 05:06:04 fieldOfGold 05:06:59 I think he broke down under the weight of all the suggestions. 05:07:09 fieldNeverGiveUp. 05:07:15 yes. did he want you to op him too? 05:07:42 YOU MUST BE PUNISHED 05:07:46 No, possibly because I never do anything. 05:07:53 And oerjan does? 05:07:55 Ooh, fieldPunisher. 05:08:03 OK that crosses the line. 05:08:03 punish those fields 05:08:09 fizzie: Op me, I must kick you. 05:08:18 quantumField 05:08:21 elliottPunisher??? is that bad enough 05:08:27 since it is 05:08:29 punishing 05:08:30 elliott 05:08:33 by being bad 05:08:36 monqy: Op me, I mu- fuck you, you can't even op me. 05:08:54 I hate you and I hate living, I am going to go shuffle off this mortal coil. 05:09:05 Just call it "myFriendsAreDickheadsAndAreNotTakingThisSeriously". 05:09:19 i _told_ you these were killing fields. 05:09:38 fizzie: You consider me your FRIEND after this??? 05:09:44 I am coming to Finland and there will be no survivors. 05:10:40 -!- ChanServ has set channel mode: +o fizzie. 05:10:43 -!- fizzie has kicked fizzie I think it's safer this way.. 05:10:43 -!- fizzie has joined. 05:10:49 fizzie: Um excuse me. 05:10:51 Oh no, autorejoin. :/ 05:10:52 You missed the two other sinners. 05:11:20 Yes, but doing anything to them would be *impolite*. Can't have that, no-no. 05:11:34 elliott: what is that first argument to your function, really? 05:11:35 oerjan: monqy: Consent to your mandatory punishment. 05:11:41 oerjan: constructor name 05:12:02 i mean, what does it have to do with packets? 05:12:16 oerjan: because all the fields of my packets are named with that :P 05:12:26 otherwise there are lots of clashes because the field names in my protocol files are short 05:12:31 e.g. 05:12:36 , packet 0x01 "Login" 05:12:36 [ PF.entityID "entity" 05:12:36 , PF.string "unused" 05:12:36 , PF.long "mapSeed" -- as above 05:12:36 -- Note that this is an *int*, not a bool. 05:12:37 -- 05:12:39 -- FIXME: Give this its own type too. 05:12:41 , PF.int "isCreative" 05:12:43 , PF.worldID "world" 05:12:45 , PF.difficulty "difficulty" 05:12:47 , PF.ubyte "worldHeight" 05:12:49 , PF.ubyte "maxPlayers" 05:12:51 ] 05:12:53 the fields are loginEntity, loginUnused, loginMapSeed, etc. 05:13:01 and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace) 05:15:33 oerjan: HOPE THIS HELPS 05:17:30 monqy: berate oerjan 05:18:36 oerjan: berate berate 05:18:39 oerjan: (im berate you) 05:18:42 elliott: is that ok 05:18:54 monqy: ok 05:19:04 elliott: is that enough mandatory punishment 05:19:06 elliott: for me 05:20:00 monqy: ok 05:23:34 I believe oerjan has gone into an infinite name-finding loop. Good job! 05:23:50 Now someone must go and reboot him. 05:23:59 templates/GenericTemplate.hs:219:14: 05:23:59 Warning: Pattern bindings containing unlifted types should use an outermost bang pattern: 05:23:59 sts1@((HappyCons (st1@(action)) (_))) 05:23:59 = happyDrop k (HappyCons (st) (sts)) 05:23:59 In an equation for `happyMonadReduce': 05:24:00 happyMonadReduce k nt fn j tk st sts stk 05:24:01 = happyThen1 05:24:03 (fn stk tk) 05:24:05 (\ r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk)) 05:24:07 where 05:24:09 sts1@((HappyCons (st1@(action)) (_))) 05:24:11 = happyDrop k (HappyCons (st) (sts)) 05:24:13 drop_stk = happyDropStk k stk 05:24:15 help 05:24:26 happy 05:24:45 HappyMonad is sad. :( 05:24:49 is this the happy parser generator or what 05:24:53 because 05:24:54 happy is a good name 05:25:02 you should call your function happy 05:25:10 no....... 05:26:43 happyField 05:27:30 Yay, it terminated! 05:27:37 -!- copumpkin has quit (Ping timeout: 248 seconds). 05:27:57 happy termination 05:28:02 -!- copumpkin has joined. 05:28:13 Happy termination day, everybody. 05:28:44 praise the Computer for happy termination day! 05:28:44 fungot: Except you, not being a flash-sack you're obviously exempt from termination. 05:28:44 fizzie: cyrus! are you leaving! let your hair down! get crazy! i'm opening a stall in leene! i thought she ate too! 05:29:27 oerjan: i 05:29:28 oerjan: explained 05:29:32 oerjan: the first argument and shit 05:29:33 ....... 05:29:36 read.......... 05:29:59 elliott: You did all that, and all you got was a happyField. 05:30:10 :( 05:30:30 well he refuses the obvious names 05:31:29 oerjan: there were about two obvious names offered, and they both weren't very good :P 05:31:44 (camelCase and whatever that silly modification of that was) 05:31:58 elliott: um no, i mean packetFieldName 05:32:15 oerjan: nobody ever suggested that 05:32:21 i preemptively explained why i wasn't using it 05:32:31 thus refusing it. 05:33:14 oerjan: if it was so obvious why didn't you think of it in like five minutes :P 05:33:34 ...it was obvious when you explained how your naming scheme otherwise worked. 05:33:44 I had a serious suggestion too, while in the bathroom, but forgot it. But don't worry, I seem to recall it was far too vague anyway, so no great loss there. 05:33:56 oerjan: umm, you clearly misinterpreted me 05:33:59 the typeclass is _not_ involved here 05:34:02 so that name is very misleadin 05:34:02 g 05:34:05 it never looks at any packet at all 05:34:28 um in that case, what does it have to _do_ with packets 05:34:45 you haven't explained what the function is really for 05:35:36 oerjan: because all the fields of my packets are named with that :P 05:35:37 otherwise there are lots of clashes because the field names in my protocol files are short 05:35:37 e.g. 05:35:37 , packet 0x01 "Login" 05:35:37 [ PF.entityID "entity" 05:35:38 , PF.string "unused" 05:35:40 , PF.long "mapSeed" -- as above 05:35:42 -- Note that this is an *int*, not a bool. 05:35:44 -- 05:35:46 -- FIXME: Give this its own type too. 05:35:48 , PF.int "isCreative" 05:35:50 , PF.worldID "world" 05:35:52 , PF.difficulty "difficulty" 05:35:54 , PF.ubyte "worldHeight" 05:35:56 , PF.ubyte "maxPlayers" 05:35:58 ] 05:36:00 the fields are loginEntity, loginUnused, loginMapSeed, etc. 05:36:02 and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace) 05:36:05 oerjan: HOPE THIS HELPS 05:36:07 oerjan: because all the fields of my packets are named with that :P 05:36:09 otherwise there are lots of clashes because the field names in my protocol files are short 05:36:12 e.g. 05:36:14 , packet 0x01 "Login" 05:36:16 [ PF.entityID "entity" 05:36:17 ok... 05:36:18 , PF.string "unused" 05:36:20 , PF.long "mapSeed" -- as above 05:36:22 -!- elliott has left ("Leaving"). 05:36:26 -!- elliott has joined. 05:36:27 elliott: prefixPacketField 05:36:28 -- 05:36:30 -- FIXME: Give this its own type too. 05:36:32 , PF.int "isCreative" 05:36:33 Something on the lines of expandFieldName or something. uniqueifyFieldName. prefixFieldName(MaybeWithSomething). elaborateFieldName. differentiateFieldName. It was something along those lines, but not quite as silly. 05:36:34 , PF.worldID "world" 05:36:36 , PF.difficulty "difficulty" 05:36:38 , PF.ubyte "worldHeight" 05:36:40 , PF.ubyte "maxPlayers" 05:36:42 ] 05:36:44 the fields are loginEntity, loginUnused, loginMapSeed, etc. 05:36:46 and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace) 05:36:49 oerjan: HOPE THIS HELPS 05:36:50 It just keeps going. 05:36:51 oerjan: because all the fields of my packets are named with that :P 05:36:53 otherwise there are lots of clashes because the field names in my protocol files are short 05:36:56 e.g. 05:36:58 , packet 0x01 "Login" 05:37:00 [ PF.entityID "entity" 05:37:02 , PF.string "unused" 05:37:04 , PF.long "mapSeed" -- as above 05:37:05 ^msg chanserv quiet #esoteric elliott 05:37:06 -- Note that this is an *int*, not a bool. 05:37:08 -- 05:37:08 -!- ChanServ has set channel mode: +q *!*@unaffiliated/elliott. 05:37:15 The paste alone can't stop! 05:37:36 -!- elliott has left. 05:37:38 -!- elliott has joined. 05:37:58 -!- elliott has left. 05:38:08 -!- elliott has joined. 05:38:08 hi eliot bye eliot 05:38:11 hi eliot 05:38:34 -!- elliott has left. 05:38:38 bye 05:38:39 eliot 05:38:46 -!- elliott has joined. 05:38:52 -!- ChanServ has set channel mode: -q *!*@unaffiliated/elliott. 05:38:55 "a new form of spamming" 05:39:00 oh that works too 05:39:14 -- FIXME: Give this its own type too. 05:39:14 , PF.int "isCreative" 05:39:14 , PF.worldID "world" 05:39:16 , PF.difficulty "difficulty" 05:39:18 , PF.ubyte "worldHeight" 05:39:20 , PF.ubyte "maxPlayers" 05:39:22 -!- elliott has left ("Leaving"). 05:39:35 -!- elliott has joined. 05:39:37 , PF.int "isCreative" 05:39:38 whats happening 05:39:39 , PF.worldID "world" 05:39:41 , PF.difficulty "difficulty" 05:39:43 , PF.ubyte "worldHeight" 05:39:43 -!- ChanServ has set channel mode: +q *!*@unaffiliated/elliott. 05:39:43 oh no 05:39:45 -!- elliott has left. 05:39:50 Good client. Best friend. 05:40:13 qualifyFieldName, except that sounds like it should have something to do with module names. 05:40:32 i said prefixFieldName in the middle of the spam 05:40:37 -!- helpohgod has joined. 05:40:42 -!- elliott has joined. 05:40:51 hi 05:40:55 oerjan: No, you said prefixPacketField; I said prefixFieldName. 05:41:01 HELP 05:41:02 oh hm 05:41:15 well they are fields for use in packets 05:41:21 HELP 05:41:28 what's up with your client, helpohgod 05:41:32 helpohgod: are you elliott? 05:41:35 HELP 05:41:42 HELP 05:41:42 HELP 05:41:48 double quieted 05:42:01 :'( 05:42:21 helpohgod: have you tried turning it off and on again? 05:42:29 :'( 05:42:47 Have you checked if the power cable is plugged in? 05:42:52 loss of precious data / precious data loss 05:43:07 have you brought it to a therapist 05:43:12 HELP 05:43:17 helpohgod: anyway, we've made several new suggestions 05:43:28 I CAN'T TALK YOU FUCKER 05:44:09 -Q ME OR DIE 05:44:13 pls 05:44:24 what if the paste freaks out again... 05:44:41 oerjan hi -q pls fizzie thx ok 05:44:43 has it stopped freeaking 05:45:01 helpohgod: i am not -q'ing you until you can guarantee it won't continue spamming 05:45:20 im not good with computers but i tihnk it is fine now 05:45:25 i did the flushq thing 05:45:27 ok 05:45:35 -!- ChanServ has set channel mode: -q *!*@unaffiliated/elliott. 05:45:38 , PF.ubyte "maxPlayers" 05:45:38 ] 05:45:39 the fields are loginEntity, loginUnused, loginMapSeed, etc. 05:45:39 and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace) 05:45:39 oh no 05:45:41 oerjan: HOPE THIS HELPS 05:45:42 -!- ChanServ has set channel mode: +q *!*@unaffiliated/elliott. 05:45:50 SHEESH 05:45:58 help 05:46:17 -!- elliott has quit (Remote host closed the connection). 05:46:26 im ... restart xchat 05:46:32 -!- ChanServ has set channel mode: -q *!*@unaffiliated/elliott. 05:46:33 -!- elliott has joined. 05:46:41 That is a very persistent paste subsystem. 05:46:43 whew 05:46:48 oerjan: because all the fields of my packets are named with that :P 05:46:48 otherwise there are lots of clashes because the field names in my protocol files are short 05:46:48 e.g. 05:46:48 , packet 0x01 "Login" 05:46:48 [ PF.entityID "entity" 05:46:50 ONLY KIDDING 05:46:53 ha 05:46:53 ha 05:46:54 ha 05:47:00 it am funy joke 05:47:03 ...should i ban him. 05:47:13 only if you ban yourself for all those suggestions 05:47:26 elliott: we made some new ones in the logs 05:47:31 -!- helpohgod has quit (Quit: SACRIFICED TO LIFE FOR THE BLOOD GOD). 05:47:41 you'll have to dig through some spam to find it, though 05:47:41 oh i think helpohgod might be in eternal suffering torment now 05:47:42 cool 05:47:52 05:40:32: i said prefixFieldName in the middle of the spam 05:47:56 i /responded/, my client was just stubborn 05:48:07 oerjan: i wouldn't have ragepasted that but I did tell you to read it RIGHT AFTER you started talking again :P 05:48:07 prefixPacketField might be good 05:48:07 It just keeps going. 05:48:07 i'm not quite sure it's a prefix though 05:48:07 i mean, it treats both its arguments quite equally :P 05:49:46 oerjan: GEE THANKS 05:49:58 hm? also fizzie had some. 05:51:05 oerjan: gee thanks for not responding to my response :P 05:51:10 fizzie: what were yours 05:52:43 Something on the lines of expandFieldName or something. uniqueifyFieldName. prefixFieldName(MaybeWithSomething). elaborateFieldName. differentiateFieldName. It was something along those lines, but not quite as silly. 05:53:05 also qualifyFieldName 05:53:13 oerjan: I dunno, I'm not sure prefix is quite right >_> 05:53:27 i can add all those with *PacketField instead :P 05:53:33 qualifyFieldName, except that sounds like it should have something to do with module names. 05:53:51 It was something rather generic, anyway. 05:53:59 elliott: i am thinking of prefix as a verb, there 05:54:11 oerjan: yes, but, I dunno 05:54:14 would you call (++) prefix? 05:54:21 it prefixes the second string with the first one 05:55:01 it _is_ a kind of qualify, though, you're example used PF. 05:55:08 ... 05:55:10 so, maybe qualifyPacketField 05:55:13 oerjan: ok, you clearly have no idea what i'm writing 05:55:15 "No, you're the example." 05:55:18 Man. I realised something that C++ does better than C. 05:55:20 *your 05:55:35 It is possible to make a conformant C++ implementation that is Turing-complete. 05:55:39 The same is not true of C. 05:55:40 elliott: a haskell compiler, i thought 05:55:40 i'm going to paste this again because maybe you will actually read the last line this time 05:55:45 05:35:37: , packet 0x01 "Login" 05:55:46 05:35:37: [ PF.entityID "entity" 05:55:46 05:35:38: , PF.string "unused" 05:55:46 05:35:40: , PF.long "mapSeed" -- as above 05:55:46 05:35:42: -- Note that this is an *int*, not a bool. 05:55:46 05:35:44: -- 05:55:48 05:35:46: -- FIXME: Give this its own type too. 05:55:50 05:35:48: , PF.int "isCreative" 05:55:52 05:35:50: , PF.worldID "world" 05:55:52 hi 05:55:54 05:35:52: , PF.difficulty "difficulty" 05:55:56 05:35:54: , PF.ubyte "worldHeight" 05:55:58 05:35:56: , PF.ubyte "maxPlayers" 05:56:00 05:35:58: ] 05:56:02 05:36:00: the fields are loginEntity, loginUnused, loginMapSeed, etc. 05:56:04 05:36:02: and I need to reconstruct this field name within my fake "show" function that shows it like a record (but with more whitespace) 05:56:07 f "Login" "mapSeed" == "loginMapSeed" 05:56:09 thus reconstructing the record field name 05:56:11 oerjan: >_< 05:56:13 oerjan: no this is not the haskell compiler 05:56:21 oh I was afraid for a moment there 05:56:51 elliott: But it could be the first Haskell compiler with a difficulty setting! 05:56:55 fizzie: please tell me _you_ understand the usecase, or maybe I'm just mad 05:57:58 I think I do, yes. Doesn't help in the naming department, though. 05:58:22 ok a game. 05:58:31 IT DOESN'T MATTER WHETHER IT'S A GAME OR NOT 05:58:33 HOLY SHIT >_< 05:58:44 monqy: you understand my description of the usecase too right??? 05:58:49 elliott is a very angry man. 05:59:08 i am still not sure qualifyPacketField is a bad name 05:59:10 oerjan: yes, you've never got aggravated when someone on IRC didn't understand you to the point of absurdity :P 05:59:32 elliott: i think i understand the usecase 05:59:53 or, qualifiedPackedField 06:00:07 it might not be a bad name, but it does suggest modules to me. 06:00:31 "packetQualifiedField". You can even put the words in any order. 06:00:46 hm... 06:00:58 yes, maybe better 06:01:14 fizzie: no, I want to avoid packet prefix for previous typeclass issue 06:01:26 oh right, that stupid... 06:01:41 oerjan: excuse me :P 06:01:50 and I'd rather have "FieldName" instead of "Field" in the name, because this definitely does /not/ do anything to packets or their fields, it just constructs a field name 06:02:10 wrappedFieldName 06:02:37 extendedFieldName. 06:03:23 fieldNameWrapper 06:04:13 You're awful people. :( 06:04:22 Oh no, I feel the urge to go all silly on this again. Best not, it might cause a flip-out. 06:04:29 Æ>ΩŁ©ª‘ 06:04:35 ØıÞ°¿‘ÆŁRCS{ZЩ×÷W 06:04:38 ↓↓↓↓↓↓↓↓↓↓ 06:04:51 Apparently even mentioning it does. 06:04:53 ↓ 06:05:06 fizzie: you too eh 06:05:42 packetN'FieldName 06:05:49 oh darn 06:05:59 Would (↓++↑) be infix-legal? 06:06:17 > let (↓++↑) = "maybe" in (↓++↑) 06:06:18 T̷̟̺̬̮̗̞̖̪̭̳͖̤͇̦̪̾ͣ̿ͯ̇͑̾̉̑̚̕͟͠Hͨ̂ͬ̽ͥ̒̎ͧ͂ͤͩ̌̍ͨ͂̊̒ͯͥ҉̤̼̭͕̟̲͓͉̺̻̘͎̰̬͟͟͡E̵̸̡̠̜̤̜̤̺̤̲̜̼̻̠͖̣̫ͮ̿̑ͩ͋ͯ̔̓͐ͥͨ̐̿̌ͫͣ̉ͅͅͅ ̨͚̮͉̬̦̭̮̗̭̪̄́ͥ̅ͣ̊͊͐̾̏̿͘͝R̩͎̙̰̟͖̺̙̣̺̰̘̰̼͓̬̪ͣ͐̈ͬ̈ͫ̇̑̉ͥ̉́͠͞O̸̧͓̖̣̙ͥ̏͗ͥ͌̃̒͘͞Ąͣͨ͆ͥ̓ͤ̓ͤ͋ͬ̋ͮͯ͐̃̇͘҉̢̫͉͍͎͈͚̞R̝̖̠̳̖͈̞̹̉̇̈̓̓͋̄̈ͣ́̚͜ 06:06:18 ̫ ̸͙̜͕̺̮͈̜̫̼͙̲͕̑ͯ̅ͤ̆̾̌͗̾ͩͭ̈́ͯͬ͒͋̀͢Ơ͆̈̽ͭ̾͂ͣ̏̈́ͩ̄ͦ̆ͫͨ̒ͮ́̚̚͘͏̮͔̟̙͉̠͚̣̙̞̜̣F̴̵͚͇̙̯̼̪̼̬̺͚̜͕̘͂̄ͪͬ̾̈́̽͛͌ͤ̒̒̐̍ͦ͠ ̴̺͔͉̰̘̜̬̙͓̹̥̫͈̺͖ͭ̆̂̉ͪ̓ͭͨͥ̓̈́̽̈ͫ͝ͅP̨̨̨ͩ͌̾̄͛̎̈ͩ̐̈ͩ͑ͩ͆̚҉͇̜̙̟̱͍͈̝̦̫͝Ā̢̯͍̗̹̳͙̫̤͖͉͓̰̝̤̻̠͉̖̓ͨ̑͆̚̚̚I͖̫̜̲͎͈̪̬̪͚͕̳̮̗͉̦̗̫ͯͥ̉ͤ̍ͭ̑ͦ̈́ͦ̔͘͘͜͠ 06:06:19 "maybe" 06:06:19 ̹N̢̅͋̑ͯ͋ͧ͟͏͍͕̤̝̼̻̗̤̖̳̞̗̹͓̯̰̰͔ 06:06:36 S̨ͪ͊̎̏͆ͯͤ̚҉̩̳̳̖͈͔̕Á̛̬͚̪̞̥̪̳͚͙͙̠̹̙͚̲̪̱ͩ͐ͬͧ̎̃̅͌̋ͪ̀͊̄̂́̀̕͠Ṱ̸̡̞̫͇̦̺̜̩̞̣̳̰̹̻͔͇̝̮̒̆̓ͥ̀̋̏̂̽͊ͩͪͣ̇̀͐͛͗̀͘͠A̵̠̼͇̞͇̣͍̬̘̥̭̩̪̩͎̳̗͌̄͂̐̆̏͌̏̾ͨ̎̿̆ͦ͌̚͜ͅÑ̵̵̸̡̟̫̻͇̹̰̮͓̖̘̗̞̮͔̰̻͚͈͆̍̄̄̒͊̊̽͗̓ͪ̐ͫ̍ͮ̀ ̥̯̫̟̙̜̪̦̬̻̄̓̔̀̀͢W̴̱̻̯̹͍͔̳̦̬̝̬̘̽̅̌͆ͧͪ̂̊I̒̎ͯ͂ͪͥͦ̎͛̐ͬ̌͗͊ 06:06:36 ̡ͯͪ͛͆͏̤̝̜̱͇̻̟̯̣̣̰̮͉͇͡Lͦ̈̍̾ͣͣ̊̾ͪͧͮ̉̄̒̐ͨ̚҉̳̯̭̮͇̻̦͎̲̬̣̲̙͖͜Ļ̶̱̙̙̮̝̣͖̗̠͖ͤ͗͋͒͗ͫ̈̀́̚ ̵͖̜̩̩̱̱̬̺̞͔̹̠̰̒ͣ̔ͥ͗ͥͩͬͧͭ̀̕͠S̴̸̨̭͉͕̹͙͚̃ͧ͑̋̈́̆ͬ͂̚͟͠H̸̲̱͈͖̱͎͔̰̳͇͖̠̤͔̩̲̪͍̋ͭ̒̉̐̿̂͒Ě̷̫̝̼̭͖̗̘͔̙̹̯͎ͫ̾ͨͩ͊ͩͭ̐̑ͤ͂̉ͨ̑͊̌̎̚͜͟͡L̛̖̦̠̤̑̀̓͛̓̽ͪ̽͛͋ͦ̑ͩ͘͡V͑̀͂͂̒̋̈̔ͧ̇ͣͫͬ̾͒̈ 06:06:36 ̨̨̧̱̮̱̱͚̞ͫͩ́͜ͅEͮ͐ͯ́̈́̄̎̃ͥ̌̇̇ͪ͊ͤ͂ͦ͛҉̵̝̩̱͙̹̖̩̮̹̮̥̘̀͢͞ ̙̹̪͉̘͈̻̬͇̪̳̳̭̙̲͕͍̂͊̍ͣ͐̄̌̿́̔͛ͧ̈́ͭ͋ͦ̾̈́̀͢ͅỲ̞̻͓͇̗̫̬̪̥̦̻̱̮͚̦͚̪ͮͯͫ́̿͑ͫ̉ͫ̈ͬͤ̐ͣ̓̉̄ͮ͢ͅÒ̄̿͒͘͏̢̛̹̪̣̣̰̤̠͎̟͍͚̱̺̲̣̤͠Ū̵̡͚̟̮͎̜͖̳̮͔͊͑̿͐̿͞ ̐ͨͫͮ́́̽͏̴͔̥̥͘T̶̷̸͈͔̭̯̯͇̟͚͎̝͕̻̯͓̲̮͓͔͆͂̈́́ͬ͘͟Ő͂ͮ̄̈́̅ͬ͛̾͒ͣ͂ 06:06:41 ̵̨̡͕̻͚͎̞̯̲̳̮͉̮̟̣̠ͥ͛ͭ̀ ̧̡̥͔͕͕͈̙͖̟̞̼̪̙̬̩͕͗̔ͬ̇ͧͮͭ͗͟Ţ̫̰̠͔̝ͤͥ̆͋̽̑ͯͥ͂͐ͧ̆̅̔͂̀̇̐̕͟H̸̡̞͔̪͕̠̘̟̱̙̫̰͛̃ͦ̄͐̑̀̿̓͌̂̈ͦ̽̾̔̌͛͢͞ͅẼ̶̽͛̒̓ͣ̃̄̋͊̚͟͢͠҉͇͈͓̞͇̗͎͈͇̜̣̭͖̲̥͚̯͈̹ ̶̛̥̬͉͇̖̬̙̯̪̥͔̮̠̟͙̮̥͑ͫ̂ͦ͌̐ͧ̓̋̚D͍͍̪͎͓̤͔͈̮̘͚͉̰̮͈̙̬ͨͪ̒̐͋̕͟͠Eͣͯͩ̊ͥ̚̚͘͏̘͖͓̹͖͟͜Pͭͦ̅̌ͯ̓̀̆̚ 06:06:46 ̶̇̕҉̡͇̭͚̳̤͚̠͔̲͚͚̹̲̙̮̙ͅT͆̍́̄͏̯̘̲̲͚͇̺̰͍̗̟̜̤̻̲̕Hͥͣͮͮ̔̏̍̔̓̚҉̨̢̨̼̱̗̦̙̜̗̯͇͙̦̳̲̲͇̭̦͚̖͜Ş͙̣̗̰̯ͮ͊́͢ ̳̱̲͙͑͂ͫ̋̿͆͆̎̎͛ͨͧ͛̈̀̚͝O̡̮͈̞͉͓͔̭̼̺̻̯̦͎̜̪̘͍̎ͤ̄̌̿͜͡Ḟ̤̠͈̥̞͚̥̭̲̩͕̓̏̂ͨ͆̽ͮ́͟͞ͅ ̢̛͍̰̥̭͛̃́̄͛ͥ̍ͤ̑ͬ̄̓̈̀̈ͣ̀͜E̡̛̥̼͈̙̱ͬͯ͋͂̓̌ͨ̒ͤ͐͒̊̓̉̎͆́͠͠Tͪͥ͛ͫͨ͛ͫ̆̿̃ͫͤ̑̌ 06:06:49 -!- nooga has joined. 06:06:51 ̸̛̰̪̮̳̒ͩ̓̉Ē̫̜̺͓̞̆ͧͣ̔͋ͩͯͮͬ̀͂͘͢R̷̝͔̣͉̮ͤ́̓ͫͬ̇́̒̓ͨ̉̔̋̽̒̆̀͒͒̀͟͠͡ͅN̷̷̨̡̯̩͕͓̰̪͔͕̗̻̣̰̱̳͓̻̰̝̑̆̽̾̿͆ͤ̒ͯ̂ͩ̍̓̚͠I̶̵͔̩̗͚͚͔̘̖͖̅̔͛͗ͬ͗ͦͪ͂͐͑̌̾̓̚͘̕T̋͌̇̑͊͂͏̦̥̞̞͢͠͞Ỹ̸ͧ̓͛̓̉̆͐͏̫̮̹͈͍̟ 06:06:53 and thus zalgo was born 06:07:02 -!- elliott has left ("Ŗ̻̭̖͉̦͍̖̘̮͓̹̲͈̯̪͇̤̊͛ͯͥ̓͑ͫ̍̈ͨ͆ͧͤ̉̄ͬͮ̉͢ͅͅO̖͈͖̳͍͕̠͚͉̰̠̊ͣͬ̈̍̂̽̋ͭ̔̆ͫ̎̚͜͝Ą̸̸̛̼̘̯̝̟͎̜͚̻̘͔͕̒̋͛͑A̹͚̖̮͚͙̥͙̙͚̜̝̝̝̲͒̑̔͆̆͟͡͠ͅͅA̡͋ͮ̌̑͗̎͌ͧ͊͋̂ͩ̔̅͞"). 06:07:04 hey, ↓++↑ is a good name 06:07:10 -!- elliott has joined. 06:07:13 yo sup 06:07:16 zalgoFieldName is something I also was thinking. 06:07:28 elliott: nice, you managed to destroy my status line 06:07:33 you deserve it 06:07:59 oerjan: somehow i doubt those displayed right for you anyway :P 06:08:05 wouldYouLikeFieldsWithThatPacket 06:08:33 supersizedFieldName. 06:08:34 i saw something about SA T A N 06:09:41 elliott: a compromise, if you switch the argument order you can call it fieldNameWithPacket 06:10:06 packetCon (Packet _ pname fields) = recC pname $ map (packetField pname) fields 06:10:06 packetField pname fi = (,,) (mkFieldName pname (fieldName fi)) IsStrict <$> fieldType fi 06:10:06 mkFieldName pname fname = mkName $ mkPacketFieldName (nameBase pname) fname 06:10:18 showPacketRecord :: (Packet a) => a -> ShowS 06:10:18 showPacketRecord p = 06:10:18 showString (packetName p) . 06:10:18 showString "\n" . 06:10:18 showFields firstField midField (showString " }") (packetShowsFieldsPrec 0 p) 06:10:19 where field (name,f) = showString (mkPacketFieldName (packetName p) name) . showString " = " . f 06:10:20 firstField x = showString "\n { " . field x 06:10:22 midField x = showString "\n , " . field x 06:10:24 showFields _ _ _ [] = id 06:10:26 showFields f g h (x:xs) = f x . showConcatMap g xs . h 06:10:28 those are the two actual uses of it 06:11:31 the first use doesn't really argue for changing the name 06:12:04 addPacketToFieldName 06:12:14 very descriptive 06:12:33 i'm definitely changing the name, especially since 06:12:36 mkName :: String -> Name 06:12:36 but 06:12:42 mkPacketFieldName :: String -> String -> String 06:12:46 when the two are mixed... 06:12:54 hm 06:13:21 combineTypeAndField. 06:13:44 combineHarvester OH NO THE SILLY I MUST SHUT: UP. 06:14:24 skeletonHarvester. 06:14:29 somehow i thought that too 06:14:30 somehow 06:14:48 skeletonHarvester (cycle "SKELETONS") (cycle "SKELETONS") = cycle "SKELETONS". 06:14:49 it must have been the harvester 06:15:00 It is a perfect simulation. 06:15:22 harvestTheField 06:15:37 reapAndCombine 06:16:01 Someone has "this ship is being sunk by Skeletor" as one of his Finnish/Swedish "show that you can use the passive voice" exercise. 06:16:27 not the same thing....... 06:16:45 if the ship were being sunk by skeleton harvester, however...... 06:19:42 fizzie: why must show...... 06:19:50 monqy: then the skeletons on the ship... 06:19:53 would be harvested.......... 06:19:54 (soon) 06:20:56 Skeletor vs. The Skeleton Harvester - match of the century. 06:21:30 -!- copumpkin has quit (Ping timeout: 248 seconds). 06:21:55 -!- copumpkin has joined. 06:22:07 prefixFieldName is tempting; did any of you suggest that exactly? 06:22:13 fizzie: I'm pretty sure there's no "The". 06:22:24 http://buttersafe.com/2008/03/13/romance-on-the-floating-island/ <-- yeah, no "the". 06:22:25 lastlog turns up results, at lesat 06:22:41 Oh yeah, lastlog. 06:24:41 TODO: Move the serialisation stuff and prefixFieldName into another module so I can not-export them from MC.Protocol. 06:25:13 It's the name oerjan continuously (read: once) tries to steal credit for. 06:25:41 continuously in a discrete topology 06:28:11 Maybe you should put the function in... wait for it... MC.Utils! 06:28:45 Oh, did you already make one? Then that won't really fly. 06:28:59 yeah cannot have more than one function in it 06:29:08 MC.FieldUtils 06:29:41 MC.Utils.ForAppendingPacketAndFieldNamesWithProperCase. 06:30:06 clearly. 06:30:27 I hate you. 06:30:30 import qualified MC.Utils.ForAppendingPacketAndFieldNamesWithProperCase as MUFAPAFNWPC. 06:30:54 I'm on the plane now. I sure hope you enjoy your lives, because they're about to be... 06:30:55 CUTOFF. 06:31:03 so easy to pronounce, too 06:31:13 DO YOU GET IT 06:31:26 MUFDWSAOTLT.cutoff, you mean. 06:31:30 but you _liked_ my cutoff implementation. 06:31:53 (MC.Utils.ForDealingWithStringsAndOtherThingsLikeTh5.) 06:32:00 s/5/at/ 06:32:23 fizzie: nah 5 is ok, the cutoff function has obviously been applied here 06:37:50 oerjan: this is the final cutoff, fwiw: http://sprunge.us/eaDO 06:45:34 The shit i have to deal with as a retail employee... (imgur.com) <-- i really wish people would put some kind of warning on reddit links like this. (ok I probably should have looked at the NSFW tag) 06:46:03 i cannot imagine 06:46:26 monqy: http://imgur.com/7Ufsm. (do not click this.) 06:46:53 Move packet field name handling into MC.Protocol.Types 06:46:53 oh no it's over fifty characters 06:46:55 what do i dooo 06:47:16 wat 06:47:21 Abstract packet field name generation out of TH 06:47:22 there we go 06:47:26 oerjan: git commit summaries should be fifty chars or less 06:47:35 todo 06:47:36 give 06:47:36 Abstract packet field name generation out of TH 06:47:38 a better commit message 06:47:50 elliott: so, gits are even worse than twats? 06:53:44 http://sprunge.us/PdCV 06:53:53 look at this awful "git diff" I have to make into modular commits 06:57:16 commit more often yo 06:57:50 olsner: I don't work linearly 06:58:01 olsner: and I'm not going to start ten branches for two hours' worth of work 06:58:37 As soon as I run into any kind of blockade I work on something else, there's not much I can do about it :P 06:58:58 you can commit chunks as you switch back and forth, then rebase to group them back together and squash into commits that make sense 06:59:17 olsner: s/you can/I can/ 06:59:26 that would result in a bunch of commits that completely undo and replace other commits 06:59:39 oh, and I often end up restructuring things in the process of solving a problem just because it bugs me 06:59:43 so I'd basically end up in merge hell 06:59:51 plus it's probably at least as difficult as just sorting through the diff afterwards :) 06:59:55 it's (marginally) less painful to do all the work, and then selectively reapply it 07:00:11 git doesn't really have a nice workflow for that 07:00:17 the only thing I can work out involves a lot of stashing 07:02:26 if each topic-related change ends up restructuring other code, you'd probably quickly end up with conflicts between the stuff you've stashed 07:02:39 olsner: nah, I mean 07:02:53 olsner: my strategy of large ugly diff -> nice atomic commits involves stashes 07:04:29 olsner: basically, you have a "todo stash", which is initially the ugly diff; each iteration, you pop that stash, then run "git add -p", and select all the hunks you want to work with this commit round. then you stash it again with --keep-index (becoming the new todo stash, with a few hunks ripped out of it), make it work (ofc, just selecting random hunks doesn't mean it'll compile as a whole, so modifications will likely be required to be an ato 07:04:29 mic commit), then you commit it and start again 07:05:06 ...I swear there was another stash involved... 07:05:20 olsner: tl;dr: git stash → loop {git stash pop → git add -p (select hunks to work on) → git stash --keep-index → make it work → git commit} 07:05:25 oh, the actual workflow I did was 07:06:01 hmm 07:06:02 I forget 07:06:05 but this way is simpler :) 07:06:14 although you need to git add -p before the commit again but w/e 07:06:18 well or just git commi t-a 07:06:20 git commit -a 07:06:35 olsner: if you have a better way i would love to hear it :P 07:06:54 that's similar to what I do when I bother actually checking if all the intermediates work 07:07:57 olsner: Well, if they don't at least fail in a way that makes sense, then you've just made an atomic commit with a really hard to read diff (because it's split into arbitrary parts) :) 07:08:04 How does it differ, re: similar? 07:08:17 I might take it a bit far though, every commit so far has compiled without a single warning. 07:10:44 I'd probably not bother with the initial stash/stash pop though, and just do commit/stash/test and amend as needed/unstash 07:10:50 olsner: oh, and re: olsneryasm, that diff also makes my code only work with the git version of one of the libraries I use :P 07:11:02 olsner: hmm, how would that work? 07:11:25 you can't "git commit" as the first step, that's nonsense, there's nothing to commit yet 07:11:32 (well, there's too much :)) 07:11:55 right, commit using add -p to select the part to extract into a commit 07:12:06 i.e. using git gui to select the hunks 07:12:26 olsner: what? then how do you "test and amend as needed"? 07:12:34 the working tree will still contain all of the other changes 07:12:40 so you can't even see if it builds or not 07:12:51 that's why you stash after making the commit 07:12:59 to remove the other changes 07:13:50 olsner: are you suggesting I use git commit --amend or something? 07:14:11 basically it keeps the tentative commit as the last commit (and you amend it with changes afterwards) instead of as uncommitted changes in the index 07:14:22 olsner: you realise the index is a commit, right? :) 07:15:42 olsner: I mean, I don't see how that's simpler, since it involves using a commit to simulate the index 07:16:18 what I really want is "git stash pop -p" 07:16:30 which presents a "git add -p" interface to all the hunks in the stash, applies those hunks to the working tree, and takes them out of the stash 07:16:31 -!- kmc has quit (Quit: Leaving). 07:16:36 that would simplify things a lot 07:17:07 it makes it so you don't have to worry about preserving or messing up the index, which I think is a bit too easy to do otherwise 07:17:37 but sure, it *is* just a different way of doing the same thing 07:17:37 fair enough 07:18:02 now to decide which of the million changes to do first 07:18:43 Stage this hunk [y,n,q,a,d,/,K,g,s,e,?]? s 07:18:44 Split into 7 hunks. 07:18:46 that hunk was way too big, git 07:18:51 i'm disappointed in you 07:20:11 Hunky-dory. 07:21:03 a simple choice between y,n,q,a,d,/,K,g,s,e - how good that all of those alternatives are completely obvious 07:22:20 olsner: well, to be fair, darcs had about as many choices :) 07:22:51 ...darcs' interactive interface made me think "oh, this is smooth and comforting and pleasant and civilised", though; git's makes me think "augh stop trying to be darcs. you are a cold emotionless robot. you can _never_ be darcs." 07:24:20 The / looks sort of out of place. (Also it's probably a /oD and that n is probably going to zap you with it real soon.) 07:26:07 Can I rearrange history with rebase --interactive? 07:26:12 I just want to put a patch before the other ones. 07:26:27 I'm fine with bumping the commit times of the commits after it (in fact I'd prefer it). 07:26:28 -!- kmc has joined. 07:26:30 s/patch/commit/ 07:26:53 yes, I think that's its primary feature 07:27:03 Yes, you should be able to just reoder the lines. 07:27:05 [master c80b9f2] Add missing dependency on transformers XXX FIXTHISCOMMITMESSAGE 07:27:05 Pro. 07:27:24 olsner: fizzie: What will it do to the commit times? 07:27:30 I don't think it will touch those. 07:27:35 So it'll look a bit silly. 07:27:47 How do I edit those? ;___; 07:27:52 I think the commit times are updated but the author times stay the same 07:27:58 That's even worse :P 07:28:07 Can I just bump all the times after that one? 07:28:31 It's for the best though because it'll make these commits actually work... 07:29:15 Eh 07:29:20 Will GitHub show the differing commit date? 07:29:37 commit de16b332b0158ae562e1b415d800d5315da3eba4 07:29:37 Author: Elliott Hird 07:29:37 AuthorDate: Sat Oct 1 20:20:47 2011 +0100 07:29:37 Commit: Elliott Hird 07:29:37 CommitDate: Mon Oct 3 19:02:03 2011 +0100 07:29:37 Oh no. 07:29:41 Can I undo a rebase? 07:29:54 you should have the previous branch in your reflog 07:29:54 (I've already pushed that commit; I didn't change it in the rebase but mistakenly included it.) 07:30:09 3a9f935 HEAD@{0}: rebase -i (pick): Remove -O2 from the Cabal file 07:30:09 7884128 HEAD@{1}: rebase -i (pick): Add the git repository to the Cabal file 07:30:09 bb6df3e HEAD@{2}: rebase -i (pick): Add showPacket{Inline,Record} functions 07:30:09 a84b1e1 HEAD@{3}: rebase -i (pick): Abstract packet field name generation out of TH 07:30:09 0fa7b8b HEAD@{4}: rebase -i (pick): Remove unused "id" field name handling 07:30:09 a61d65a HEAD@{5}: rebase -i (pick): Add missing dependency on transformers XXX FIXTHISCOMMITMESSAGE 07:30:11 de16b33 HEAD@{6}: checkout: moving from master to de16b33 07:30:13 234f0de HEAD@{7}: checkout: moving from master to 234f0de 07:30:15 Wow I have no idea how to work this. 07:31:14 looks like 7 is your old branch and 6 is where rebase rewinded to 07:31:22 "Looks like"? :P 07:31:41 So, ehhm, how would I go back to that branch? git reset HEAD or something? 07:32:05 if you have no local changes to preserve, git reset --hard abc123 07:32:28 Does "local changes" include stashes? 07:32:37 it'll blow away the index and changed files in your working directory 07:32:44 That's OK. 07:32:51 Yar, that's right 07:32:51 Thanks 07:32:55 it doesn't change any commits 07:33:19 "You can do an interactive rebase and choose edit for the commit you would like to alter its date. When the rebase process stops for amending the commit you type in for instance git commit --amend --date="...", says (what else?) stackoverflow. (That would edit the author date; presumably GIT_COMMITTER_DATE="..." git commit --amend to edit the other date.) 07:33:27 --committer-date-is-author-date, --ignore-date 07:33:28 These flags are passed to git am to easily change the dates of the rebased commits (see git-am(1)). Incompatible with the --interactive option. 07:33:31 help????/ 07:33:46 will those 07:33:49 be helpful 07:34:52 if it's only a specific commit you want to change the date of, what fizzie said 07:35:14 it's all the ones since the one I'm moving up to the top 07:35:20 pick 0c48e1c Remove unused "id" field name handling 07:35:20 pick 1033a69 Abstract packet field name generation out of TH 07:35:20 pick 5c31d4c Add showPacket{Inline,Record} functions 07:35:21 pick a3155c1 Add the git repository to the Cabal file 07:35:21 pick 627ba85 Remove -O2 from the Cabal file 07:35:21 pick 234f0de Add missing dependency on transformers XXX FIXTHISCOMMITMESSAGE 07:35:29 that last one is going to the top, I want it to just keep its original date and have no commit date 07:35:34 all the others I want to be boosted to, like, now 07:35:38 but I guess it doesn't matter much 07:37:05 -!- monqy has quit (Quit: hello). 07:37:29 I know of no way to do that :) you're the first I've heard wanting to do something like that 07:37:33 error: Your local changes to the following files would be overwritten by merge: 07:37:33 Main.hs 07:37:33 Please, commit your changes or stash them before you can merge. 07:37:33 Aborting 07:37:36 THREE-WAY MERGE YOU DUMBO 07:37:52 olsner: basically I want sg :) 07:38:01 DEAR GIT IM TRYING TO MERGE TWO STASHES JUST 07:38:03 GO ALONG WITH IT OK 07:40:58 ok... this is worrying 07:41:15 oh duh 07:47:23 olsner: btw, what even /is/ git gui 07:47:32 i keep seeing mention of it but no citation 07:47:39 it certainly isn't a command in my git 07:47:40 elliott: git gui, it's built in 07:47:49 $ git gui 07:47:49 git: 'gui' is not a git command. See 'git --help'. 07:47:55 git version 1.7.5.4 07:48:21 oh, hmm, it's a separate package in ubuntu actually 07:48:35 it doesn't use Tk does it :p 07:48:40 yes it does 07:48:46 ah lovely. 07:48:54 * elliott installs it anyway 07:49:49 olsner: oh, it actually tries to make the tk look decent though 07:49:54 oh 07:49:55 so does gitk 07:49:58 i guess they're using tile now? 07:49:59 good? 07:50:34 if you manage to make it use tk8.5 it'll end up a lot less ugly than if it uses tk8.4, that might require some kind of configuration though 07:50:48 tile? what's that? 07:53:10 a tk thing 07:53:34 the difference between hideous motif-style widgets and pretty clean flat-ish threedee widgets 07:54:07 -!- aloril has quit (Ping timeout: 240 seconds). 07:55:32 b0ef146 Add support for packet analysis XXFIXMETOO 07:55:32 44fcf00 Remove -O2 from the Cabal file 07:55:32 e56cb95 Add the git repository to the Cabal file 07:55:32 352d498 Add showPacket{Inline,Record} functions 07:55:32 4a1b67e Abstract packet field name generation out of TH 07:55:34 12a79ff Remove unused "id" field name handling 07:55:36 d77e488 Add missing dependency on transformers XXX FIXTHISCOMMITMESSAGE 07:55:38 olsner: I think I'm doin it rite 07:55:57 elliott: good for you 07:56:18 olsner: I CANNOT THICKEN MY SARCASM YOU MONSTER 07:56:48 oh, you were sarcastic? I totally didn't miss that 07:57:23 anyway, time to go 07:57:51 olsner: I figured the XXs would make it obvious 08:07:26 -!- aloril has joined. 08:16:21 -!- oerjan has quit (Quit: leaving). 08:53:47 -!- fngraph has joined. 08:53:48 -!- fngraph has left. 08:55:47 -!- ive has quit (Quit: leaving). 09:06:47 -!- Jafet has joined. 09:11:33 -!- sllide has joined. 09:16:29 -!- sllide has quit (Ping timeout: 256 seconds). 09:21:14 -!- nooga has quit (Ping timeout: 248 seconds). 09:46:09 -!- CakeProphet has quit (Ping timeout: 258 seconds). 09:51:04 -!- cheater has quit (Ping timeout: 276 seconds). 09:52:06 fizzie: Sads: diod does not seem to do FIFOs either. :/ 09:57:00 http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2 09:57:01 Nice. 09:57:32 Vorpal: So kernel.org is up only FSVO up :P 09:57:35 pikhq: I blame you 09:58:54 elliott: yeah saw that 09:59:10 Vorpal: I like how the huge big download links just go to a fourohfour with no explanation 09:59:20 hm 10:00:12 kernel.org is back up, hope you don't want to download a kernel!!! 10:03:27 -!- Nisstyre has quit (Ping timeout: 252 seconds). 10:04:04 -!- cheater has joined. 10:04:42 -!- Nisstyre has joined. 10:05:54 pikhq: But seriously, where is one meant to maintain linux-3.0.4.tar.bz2? 10:05:57 s/maintain/obtain/ 10:06:35 -!- nooga has joined. 10:08:51 http://www.reddit.com/r/programming/comments/ka4h8/javas_combover/c2ipvy1?context=3 10:09:01 I had actually completely forgotten there were people who disliked lambdas. 10:13:18 -!- derdon has joined. 10:17:09 bbl, university 10:18:42 rip university 10:44:42 -!- sebbu2 has joined. 10:44:42 -!- sebbu2 has quit (Changing host). 10:44:42 -!- sebbu2 has joined. 10:47:38 -!- sebbu has quit (Ping timeout: 248 seconds). 10:48:17 -!- sebbu2 has changed nick to sebbu. 11:05:02 -!- nooga has quit (Ping timeout: 260 seconds). 11:24:47 The BBL University of Procrastination. 11:27:42 fizzie: Oi, gimme linux-3.0.4.tar.bz2. (I'm sure you can do this with your magical Finn powers.) 11:28:16 Yes, being from the same country as Torvalds gives me magical kernel-predictive powers. 11:28:39 fizzie: Predictive? 11:28:45 3.0.4 is out. 11:28:46 It just 11:28:52 (a) isn't on kernel.org because no kernel tarballs are yet; 11:28:55 (b) isn't in Linus' git tree. 11:29:03 Yes, so I can convert any old binaries you might have up into 3.0.4 and (perhaps) beyond. 11:29:06 I'm therefore at a complete loss as to how one is meant to obtain it. 11:29:14 Have you tried searching for it in Archie? (Is that thing still alive?) 11:29:24 Heh. 11:29:40 Well, I found a Random Copy with Google, but considering all this hoohah is because kernel.org got hacked into... 11:29:40 "External links: Last surviving Archie web interface" 11:29:44 "A legacy Archie server is still maintained active for historic purposes in Poland at University of Warsaw's Interdisciplinary Centre for Mathematical and Computational Modelling." 11:29:57 WORTH A TRY 11:30:22 Gosh, it is slow. 11:30:29 1 /vol/nfs1/ftp.icm.edu.pl/pub/Linux/ipv6/usagi/daily-snap/200106 11:30:29 -r--r--r-- 115352 21:00:00 24 Jun 2001 GMT linux22-2.2.19-usagi-20010626.patch.gz 11:30:35 I just told it to look for "linux". 11:30:43 I got similar results looking for "kernel". :p 11:30:54 The exact same version, in fact, though in .rpm flavour. 11:31:05 I think that perhaps it does not index any recent files. 11:31:08 Also will this ever load. 11:31:12 (1)ftp.laizsme.edu.pl 11:31:13 1 /Linux/LTSP/LTSP-3.0 11:31:13 -rw-rw-r-- 5015061 00:00:00 12 Jul 2002 GMT ltsp_kernel-3.0.4-i386.tgz 11:31:18 Points for effort I guess. 11:32:08 Incidentally, I suppose you have come across that Ten15 thing? (http://www.mca-ltd.com/martin/Ten15/introduction.html) 11:32:45 Yes, though I keep forgetting its name -- many thanks for reminding me. 11:33:02 The most memorable name ever. 11:33:03 I'm flattered it (presumably) makes you think of @ :-P 11:34:02 You presume correctly; especially I guess the "it's safe by virtue of the languages" bit. 11:34:30 Also the ubiquitous GC. And object-based (rather than textual) "syntax". 11:34:39 Also the object-capability model in general. :p 11:34:40 Those, too. 11:35:05 Also the lambda calculus relation. etc. etc. etc. 11:38:20 How about http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commit;h=04aa37b5f943920017ad094e776cd5514b1a9246 would that work? 11:38:28 I don't really know anything about the source control. 11:38:30 But there's a tag. 11:39:03 Oh, the git repos are up? 11:39:06 'Hokay then. 11:39:24 http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commit;h=a004e0962a10dfa7fc83dfa4ed4109d1cf84124b 11:39:27 -!- DH____ has joined. 11:39:28 What. 11:39:30 -!- DH____ has quit (Remote host closed the connection). 11:39:36 Huh, there is a Linux 3.0.6. 11:39:59 * elliott gets himself a snapshot. 11:40:06 The server encountered an internal error or misconfiguration and was unable to complete your request. 11:40:07 oh ffs... 11:40:31 It's funnier when that happens on the apache website 11:41:12 -!- DH____ has joined. 11:42:00 elliott: Based on the Date: headers of the LKML postings, 3.0.6 came out three minutes after 3.0.5. 11:42:04 fizzie: Yes. :p 11:42:09 * elliott tries to get it in something that isn't tgz (90 megs...) 11:42:12 "There was a build error in the radeon driver of the 3.0.5 kernel, so this update is only needed if you have problems building that kernel." 11:42:42 I was already mildly concerned they had caught the Firefox bug. 11:43:34 fizzie: Well... 11:43:39 40 hours agov3.0.5 11:43:39 5 weeks agov3.0.4 11:43:42 6 weeks agov3.0.3 11:43:46 7 weeks agov3.0.2 11:43:50 fizzie: It /is/ rather rapid. 11:43:55 fizzie: Or do kernel releases normally go that fast? 11:43:57 I don't really keep track. 11:44:09 The singularity, it is coming. 11:44:42 The singularity is just a moment of infinite Firefox and kernel updates? 11:44:48 That's the most bullshit singularity I've ever heard of. 11:44:51 A bit anticlimactic, eh? 11:44:56 What kind of idiot sets the singularity at the point of infinite bugs? 11:45:05 think there's usually several weeks, but haven't really been keeping track either. I'm sure someone's graphed it. 11:45:17 "When the singularity arrives, it will be plagued by frequent outages and bad customer service." 11:45:19 I mean, if they do graphs of all the "fuck"s in the kernel... http://www.vidarholen.net/contents/wordcount/ 11:45:22 fizzie: That wasn't quite legible. 11:45:23 think there's usually several weeks, but haven't really been keeping track either. I'm sure someone's graphed it. 11:45:24 That one. 11:45:54 s/^/I / + s/weeks/weeks between kernel releases/ 11:47:11 I always just assumed it was, like, every two months or so. 11:47:12 I notice that the instances of "fuck"ing have been dropping since 2.6.12 or so, but the frequency of "shit" happening has more than made up for it. 11:47:34 │ │ [*] DMA memory allocation support │ │ 11:47:42 I'm still perplexed as to why that's the first kernel config option. 11:47:45 Like, newly. 11:48:03 Admittedly I don't quite recall how the current numbering was supposed to go. In the late 2.6 age, the fourth number was being kept incremented rather rapidly. 11:48:40 * elliott wonders what fun things turning that off would do. 11:53:18 What the hell is an .lrz file? 11:54:05 lrzip - compression program with a very high compression ratio 11:54:05 I guess this. 11:54:09 Seems to be lzo-based. 11:55:35 Apparently, with a really long available history buffer compared to the usual suspects. 11:56:11 Preface 11:56:11 Way back a long time ago, Thompson and Ritchie were sitting opposite one another at the commissary, sipping coffees and discussing their evolving behemoth. 11:56:11 "This behemoth of ours," said Ken, "is becoming rather popular, wouldn't you say?" "Yes," said Dennis. "Every time I want to do a compilation, I have to wait for hours and hours. It's infuriating." They both agreed that the load on their system was too great. Both sighed, picked up their mugs, and went back to the workbench. Little did they know that an upper-management type was sitting just within earshot of their conversation. 11:56:12 "We are AT&T Bell Laboratories, aren't we?" the upper-management type thought to himself. "Well, what is our organization best known for?" The brill-cream in his hair glistened. "Screwing people out of lots of money, of course! If there were some way that we could keep tabs on users and charge them through the nose for their CPU time..." 11:56:16 The accounting utilities were born. 11:56:18 -- gnu acct manual 11:56:30 Reminds me of GNU "viva la revolution" su. 11:56:46 Apparently, with a really long available history buffer compared to the usual suspects. 11:56:51 Ha ha, compression jargon. 11:56:55 It is like speech recognition jargon 11:56:57 except 11:56:59 one is useful and the other not 11:57:02 -!- MichaelBurge has joined. 11:57:34 Yes, and the useful one is speech recognition. Or haven't you heard of Siri yet? 11:57:39 If Apple's doing it, it must work right. 11:58:07 It's in that 4S thing. 11:58:20 Yes, I've seen it. It looks interesting and apparently it might have enough brains behind it to work. 11:58:31 Also supports W|A, which is awesome. 11:58:34 -!- nooga has joined. 11:58:35 But that was made by experts. 11:58:38 Not people like /you/. 11:58:45 Also DOES IT SUPPORT FRINK. 11:58:55 * elliott disables namespaces support to annoy ais. 11:59:14 One can just ask it for the shear modulus of human brain matter or anything like that. 11:59:23 (That's 1680 Pa.) 12:00:02 I love the configuration advice the kernel gives. "You should only consider disabling this option for embedded systems with no facilities for reporting errors. Just say Y." 12:00:17 You know, when you absolutely have to shear some brains, and want to know how much they'll deform. 12:00:31 fizzie: So I take it the entire speech recognition world (yes, all four of you) is partying now that Apple are validating you guys and -- rumour has it -- even feeding you on occasion? 12:00:35 -!- DH____ has quit (Read error: Connection reset by peer). 12:00:51 -!- DH____ has joined. 12:01:03 TODO: Come back to configure standard kernel features menu. 12:01:27 And other things in its parent menu. I'm good at configuration. 12:09:22 Also go back to that boring power management section. 12:09:51 Also the bus options menu. God there are a lot of boring menus. 12:35:28 -!- derdon has quit (Remote host closed the connection). 12:49:40 -!- calamari has joined. 12:59:42 -!- MSleep has changed nick to MDude. 13:13:19 -!- calamari has quit (Quit: Bye). 13:16:48 -!- sadhu has joined. 13:17:08 howdy elliott 13:17:15 hi 13:30:01 elliott: you program in C ? 13:30:11 Sometimes 13:30:33 ok 13:39:50 pikhq: But seriously, where is one meant to maintain linux-3.0.4.tar.bz2? 13:39:50 s/maintain/obtain/ 13:39:55 I have that I think 13:40:05 I got it from linux-stable.git 13:40:13 kernel.org git is back up, at least :P 13:42:25 elliott: 3.0.6? what? 13:42:49 yep 13:42:59 got released about five minutes after 3.0.5 13:43:12 Sorry, 13:43:13 elliott: Based on the Date: headers of the LKML postings, 3.0.6 came out three minutes after 3.0.5. 13:43:13 three. 13:43:46 fizzie: Or do kernel releases normally go that fast? <-- maintenance releases are usually about that fast up to .5 or .8 or so when they start to slow down, at least in my experience 13:47:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 13:47:33 The accounting utilities were born. <-- is that story true? I seem to remember stuff like that boot resource usage and time usage graphing thingy using accounting tools 13:48:38 elliott: wait, why are you compiling your own kernel? 13:48:55 Vorpal: (a) Who knows; (b) so that you'll CTCP PING me for no apparent reason. 13:49:05 elliott: I was wondering if you were lagging out 13:49:23 "haskell for "the masses" is possible as soon as "the masses" has a degree in mathematics. java and php are copy-and-paste languages, functional languages simply take more thinking to compile at all, and i think many programmers are not prepared to do that to the required degree, although i'd love to be proved wrong." 13:49:23 "Score:5, Insightful" 13:49:37 so what they say about slashdot comments is true 13:50:00 elliott: what is it they say about them? 13:50:09 They're shit. :p 13:50:15 Or at least trolly. 13:50:33 (Of course there's the opposing school of thought which I will dub the "they're not shit" school.) 13:50:35 elliott: well it is true that a lot of programmers suck badly and wouldn't understand something like haskell 13:51:02 not sure it requires a degree in math, though that certainly helps with /all/ programming 13:51:07 That is not really true at all but whatever. 13:51:09 (On either account) 13:54:17 -!- DH____ has quit (Read error: Connection reset by peer). 13:54:20 -!- DHeadshot has joined. 13:59:43 -!- Sgeo|m has joined. 13:59:50 Why does Managed C++ exist? 14:00:32 For people who would normally choose C++ over, say, C#, because of the _syntax_? 14:01:43 -!- sadhu has left ("Leaving"). 14:01:59 -!- sllide has joined. 14:03:14 For people who feel more familiar there? Comfort languages, and all that. (Does someone still use that thing?) 14:18:04 -!- copumpkin has joined. 14:41:19 pikhq: I kind of wish there was a way to schedule IO actions to be run whenever a TVar is modified... 14:42:04 Something like newTVarWithHandler :: a -> (a -> IO ()) -> STM (TVar a), then upon successful transaction commit, all the queued handlers for the modified TVars are executed in order of modification. 14:42:23 elliott: yeah that would be nifty 14:42:41 Vorpal: I think you can implement it already 14:42:48 oh? 14:42:52 but it requires you to pass an additional parameter around to your writeTVar equivalent 14:43:08 a TVar [IO ()] or whatever 14:43:25 you could do ReaderT (TVar [IO ()]) STM 14:43:32 and have your variable type work natively in that 14:43:33 but ehhh 14:43:54 the usecase I'm imagining here is queueing up the "hey player you are now over here" packets when modifying a player's position in mchost 14:44:49 Hmph, the Bukkit API is I think making things hard for me in that area. 14:49:01 -!- Phantom_Hoover has joined. 14:50:00 HELO PHAOIntomeohOVEr 14:50:31 I... 14:50:31 Phantom_Hoover: You have 5 new messages. '/msg lambdabot @messages' to read them. 14:50:39 Messages! 14:50:54 Either Homestuck updated or someone was really, really stupid. 14:51:13 -!- Sgeo|m has quit (Ping timeout: 252 seconds). 14:51:16 -!- CakeProphet has joined. 15:03:02 http://www.reddit.com/r/math/comments/l0nnx/letter_to_the_prime_minister_on_the_future_of/c2ozv5r 15:03:17 It's like something from the Private Eye. 15:04:13 "Everyone can afford to go to university, even 32 year olds." I like this guy's definition of "afford". ("first, thatcher took my school milk." is now my favourite sentence ever, also.) 15:04:27 elliott, erm, do you know how university fees work? 15:04:49 Phantom_Hoover: Yes, but it's still a fairly misleading statement. 15:04:52 It's basically just a tax you pay until you pay it off or retire. 15:05:02 elliott, so how would you define 'afford'? 15:05:36 I'm not sure. I'm not sure that guy is sure either. 15:05:46 It is like a big tower of sureness. 15:07:16 Hmm, I wonder if I could use TChans. 15:07:58 elliott, if you mean 'can pay for without radical financial alterations', then yes, you can. 15:08:24 That just shifts the issue onto "pay for". But w/e :P 15:08:45 Pay for as in exchange money for goods or services. 15:09:20 What a strange concept. 15:10:29 "Writing a “Hello World” Device Driver for kernel 2.6 using Eclipse" 15:10:31 Yikes. 15:11:15 "Thanks. I will check the autotools plugin soon. Do you know any better IDE for driver programming? Do you think I (a lazy VS user who have no experience in linux) can manage makefile? Is makefiles really manageable in big projects?" 15:11:24 Is makefiles good for our children? 15:13:32 -!- Phantom__Hoover has joined. 15:13:41 helloei phaoeirntomhievtre 15:13:50 PhaeoeirntomHievtre. 15:13:52 That's your new name. 15:13:59 /nick Phaeoeirntom_Hievtre, please. 15:14:41 -!- Phantom__Hoover has changed nick to PH______________. 15:15:22 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 15:15:27 no......... 15:15:31 PH______________: Phaeoeirntom_Hievtre.... 15:15:47 -!- PH______________ has changed nick to P_______________. 15:16:39 P_______________: Phaeoeirntom_Hievtre........ 15:16:49 -!- P_______________ has changed nick to ________________. 15:18:04 ________________: Phaeoeirntom_Hievtre.................... 15:18:13 Either that or keep ________________ permanently. 15:18:26 <________________> Can't, it's registered. 15:18:53 lol 15:18:57 Add another _? 15:19:42 qwrojq23r 15:19:58 -!- CakeProphet has changed nick to _. 15:20:28 -!- _ has changed nick to CakeProphet. 15:21:57 -!- DHeadshot has quit (Quit: Bye). 15:22:12 -!- DH____ has joined. 15:27:00 -!- CakeProphet has changed nick to CP____. 15:27:10 yo dawg. 15:27:35 MC/Host.hs:9:8: 15:27:35 Could not find module `Control.Monad.Class.IO' 15:27:35 Perhaps you meant 15:27:35 Control.Monad.IO.Class (from transformers-0.2.2.0) 15:27:35 Control.Monad.Trans.RWS (from transformers-0.2.2.0) 15:27:36 Control.Monad.Trans (needs flag -package mtl-2.0.1.0) 15:27:38 Use -v to see a list of the files searched for. 15:27:41 GHC 7.2.1's error messages sure are improving. 15:27:55 Or, rather, are an improvement upon previous versions. 15:28:41 indeed 15:28:53 ghc --version 15:28:53 The Glorious Glasgow Haskell Compilation System, version 6.12.3 15:28:55 :( 15:29:09 stupid repos 15:29:50 so it's actually GGHCS? :P 15:30:57 You shouldn't use repo GHC. 15:31:10 That version is from June 2010. 15:32:00 doesn't that quickly become "you shouldn't use repo " 15:32:09 at which point I'm manually compiling a lot of things? 15:35:16 I guess GHC is an acceptable exception. 15:41:22 <________________> Seen in r/AskScience: someone arguing that defrosting someone from 2011 in 2211 would be easier than playing ancient YouTube codecs. 15:41:39 -!- ________________ has changed nick to ______________. 15:41:45 <______________> I think they're all registered. 15:42:59 -!- ______________ has changed nick to Phantom_Hoover. 15:43:22 <________________> Seen in r/AskScience: someone arguing that defrosting someone from 2011 in 2211 would be easier than playing ancient YouTube codecs. 15:43:25 Say this again so I can addquote it. 15:43:35 Or just find me the person who said it :P 15:43:49 Well, they didn't say that exactly. 15:43:52 Seen in r/AskScience: someone arguing that defrosting someone from 2011 in 2211 would be easier than playing ancient YouTube codecs. 15:46:00 -!- CakeProphet has joined. 15:46:01 -!- CakeProphet has quit (Changing host). 15:46:01 -!- CakeProphet has joined. 15:47:03 Phantom_Hoover: OK I hate you for directing me to this comment thread. 15:47:23 Why, the censorship stuff? 15:47:28 Phantom_Hoover: It's like a battle of who can make me want to agree with the other just because everyone on the other side is so bad, and it KEEPS SWITCHING. 15:47:34 What censorship stuff? I mean the cryonics thing. 15:47:45 Irrelevant, then. 15:48:04 -!- CP____ has quit (Ping timeout: 255 seconds). 15:48:09 "It amazes me that any intelligent person would buy in to this given the knowledge that the method doesn't work right now." 15:48:14 What. 15:48:35 "I say, Elliott, human flight? the notion is simply absurd." 15:48:38 * CakeProphet smokes his pipe. 15:49:08 In the case of cryonics, it's a bit more complicated. 15:49:31 Phantom_Hoover: Yes of course, I was balking at the statement itself. 15:49:49 They're literally saying that you shouldn't believe any technology will be invented ever. 15:50:08 nm chips? SO FOOLISH OF YOU TO BELIEVE IN THESE THINGS 15:50:36 Again, in the case of cryonics it's more complicated than that. 15:51:06 Phantom_Hoover: Note how (a) the line I quoted is devoid of the word "cryonics", (b) I am not attempting to defend cryonics. 15:51:16 Yes, true. 15:51:31 Whether you agree with their /conclusion/ or not, it's a ridiculous argument. 15:52:55 elliott: I don't visit reddit. Life is wonderful. 15:53:14 CakeProphet: You and some seven billion people. 15:53:47 are you suggesting that a negative number of people frequent reddit? 15:53:54 Yes. 15:54:23 You didn't know? 15:54:36 no. the notion is simply absurd. 15:55:15 Tell that to the -30,000,000 redditors. 15:55:22 so when someone is born a negative person dies? 15:56:04 or is a negative person a dead person? help the number system doesn't match the units. 15:56:58 Every moment dies a negative man, every moment one is born. 15:58:47 elliott: are... are you a negative human? 15:59:02 Most assuredly. 15:59:09 o_- I see. 15:59:10 Yes. Taneb is his positive counterpart. 15:59:26 Phantom_Hoover: and what about you? 15:59:31 am I your positive counterpart? 15:59:36 I am imaginary. 15:59:40 -!- CakeProphet has changed nick to Cake_Prophet. 15:59:43 I see. 16:00:28 this is getting rather complex. 16:00:33 (ZING) 16:01:23 -!- monqy has joined. 16:01:30 monqy is the pope in this analogy 16:01:42 hi 16:01:54 He's the real part of god. 16:02:10 The trinity make up the rest; god is therefore a quaternion. 16:02:36 Best quaternion. 16:02:45 Godternion. 16:03:05 * Cake_Prophet thinks the Julia set quaternions are the best. 16:03:12 they make neat shapes. 16:03:37 (when a 3-dimensional slice is taken) 16:04:08 though I imagine their 4-dimensional shape is neat as well. 16:04:13 to make such neat 3-dimensional shapes. 16:04:32 * Cake_Prophet : master of sound reasoning 16:09:55 so... javascript doesn't have any kind of built-in randint? 16:10:01 I have to do silly things with random() 16:11:10 -!- augur has quit (Remote host closed the connection). 16:21:26 elliott: I'M A MOODERER 16:21:34 What. 16:21:37 elliott: If you retell me that list of domains, I MAY find it in my heart to add them. 16:21:57 Gregor: www.systranbox.com, www.systranet.com, www.xe.com, babelfish.altavista.com, futureboy.us, www.measuringworth.com, ajax.googleapis.com 16:22:06 Gregor: Preferably wildcarded rather than literally with www. in front of them and the like :P 16:22:09 (Because of redirects etc.) 16:22:28 I just whitelist SLDs usually 16:23:33 i might look at frink today. today or tomorrow. or friday. i will look at it before monday. 16:24:12 Gregor: Does that include subdomains? 16:24:59 elliott: Yeah 16:25:03 Right 16:25:15 `run curl futureboy.us 2> /dev/null 16:25:18 ​ \ \ \ Alan Eliasen \ \ 16:29:55 Gregor: :D 16:30:02 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 16:30:11 `run 3 gram 18 karat Gold -> GBP_1865 16:30:13 sh: 3: command not found 16:30:17 `frink 3 gram 18 karat Gold -> GBP_1865 16:30:48 No output. 16:30:59 Seems pretty great. 16:31:16 >_> 16:31:17 `frink 3 gram 18 karat Gold -> GBP_1865 16:31:28 Unknown symbol "GBP_1865" \ 1.1727588630689421115 16:31:43 `frink 9 GBP -> pounds_1960 16:31:52 0.58441558441558441558 16:32:01 Gregor: TA-DAAAAAA 16:32:19 * Cake_Prophet is downloading the first two seasons of Adventure Time 16:32:21 mmmm 16:32:24 -!- Cake_Prophet has changed nick to CakeProphet. 16:32:43 Gregor: I WILL NOW 16:32:44 TRANSLATE 16:32:57 Yes yes, your thesis on gold prices. 16:33:00 Into whatever. 16:33:00 `frink "My hovercraft is full of eels." -> German 16:33:02 THANKS FRINK DOCS 16:33:09 Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ My hovercraft is full of eels. -> German (undefined symbol) 16:33:12 X-D 16:33:14 `frink "My hovercraft is full of eels." -> German 16:33:23 Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ My hovercraft is full of eels. -> German (undefined symbol) 16:33:26 `frink "Gasoline costs " + (round[1.37 USD/gallon / (EUR/liter), 0.01]) + " Euro/liter in the United States." -> German 16:33:32 `frink "The spirit is willing but the flesh is weak." -> Spanish -> Ingles 16:33:34 SOMETHING WORK ANYTHING WORK 16:33:35 Seems pretty great 16:33:37 Benzin kostet 0,27 Euro/Liter in den Vereinigten Staaten. 16:33:42 YAaaaay 16:33:43 Could not get input stream java.net.ProtocolException: Peer closed connection \ Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Unconvertable expression: \ The spirit is willing but the flesh is weak. -> Spanish (undefined symbol) -> Ingles (undefined symbol) 16:33:45 I guess the German server is down :P 16:33:50 `frink "Yo quiero un burrito." -> Ingles 16:34:00 Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Yo quiero un burrito. -> Ingles (undefined symbol) 16:34:04 .. 16:34:05 `frink "Yo quiero un burrito." -> Ingles 16:34:10 Gregor: Your internet connection sucks 16:34:15 Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Yo quiero un burrito. -> Ingles (undefined symbol) 16:34:18 elliott: So does your face. 16:34:28 `run curl babelfish.altavista.com 2> /dev/null 16:34:30 No output. 16:34:33 Huh 16:34:37 `frink "Amo tu huevos" -> Ingles 16:34:37 `run curl babelfish.altavista.com 2> /dev/null 16:34:37 `frink "Én már nem vagyok fertőzött." -> guessLanguage 16:34:39 No output. 16:34:49 Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Amo tu huevos -> Ingles (undefined symbol) 16:34:49 Error reading from http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=C%09n+mC%21r+nem+vagyok+fertE%11zC6tt.: \.java.net.ProtocolException: Peer closed connection \ Warning: Tried to call guessLanguage[] but it didn't work. \ MatchExpression: left must be string. Expression was undef \ Unknown symbol "guessLanguage" 16:34:59 Well. wtfbbq :P 16:35:05 I guess I'll have to look into that :P 16:38:36 `calc "Tu madre es una puta" -> Ingles 16:38:47 Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ Tu madre es una puta -> Ingles (undefined symbol) 16:39:02 needs more accents probably 16:40:53 -!- ais523 has joined. 16:42:55 -!- augur_ has joined. 16:46:38 hi ais523 16:46:54 -!- Phantom_Hoover has joined. 16:47:14 hi elliott 16:49:19 -!- pikhq_ has joined. 16:49:40 -!- pikhq has quit (Ping timeout: 276 seconds). 17:02:13 hmm, the Conservative Party in the UK are busy trying to confuse people by using a party political broadcast slot to appeal for charity donations for starving people in Africa 17:04:17 -!- sadhu has joined. 17:08:15 cooool 17:09:43 -!- CakeProphet has quit (Ping timeout: 240 seconds). 17:20:40 -!- nooga has quit (Ping timeout: 260 seconds). 17:30:27 -!- augur_ has quit (Remote host closed the connection). 17:37:13 Interesting how different the landscape looks in gmaps in Norway vs. Sweden, at the border: http://users.ics.tkk.fi/htkallas/norway-sweden.png 17:37:13 You could almost even believe the Norwegians have provided more accurate maps. 17:37:21 I almost accidentally shared this revelation on the WRONG CHANNEL. 17:37:32 Where "almost" is "actually". 17:38:19 Even though the other channel lacks any Norwegians (I think) who could take national pride in it. 17:40:14 -!- augur_ has joined. 18:06:26 -!- sadhu has quit (Quit: Leaving). 18:07:04 -!- sllide has quit (Read error: Connection reset by peer). 18:09:24 -!- Ngevd has joined. 18:09:56 Hello! 18:14:29 -!- Jafet1 has joined. 18:16:48 -!- Jafet has quit (Ping timeout: 265 seconds). 18:20:49 -!- Jafet has joined. 18:21:38 -!- Jafet1 has quit (Ping timeout: 265 seconds). 18:21:38 So... 18:21:45 Thoughts on Brook? 18:25:22 -!- Entanglements has joined. 18:31:31 Ngevd: I'd like to see a program in it 18:31:42 that does something like just output 1, 2, 3, 4... indefinitely 18:31:42 There's a fibonacci numbers program 18:31:48 aha, even better 18:37:35 Sadly, not infinite, but input-defined length 18:37:57 ah, ouch 18:38:00 infinite is what I was hoping for 18:38:12 It's tricky 18:43:41 I'll try to write one 18:53:45 -!- augur_ has quit (Remote host closed the connection). 18:59:45 -!- augur_ has joined. 19:01:44 -!- augur_ has quit (Remote host closed the connection). 19:08:40 pikhq_: Man, this is tricky 19:11:22 ais523: Did you hear about the Italian Wikipedia? 19:11:38 what about it? 19:11:42 I mean, I know it exists 19:11:44 http://it.wikipedia.org/wiki/Wikipedia:Comunicato_4_ottobre_2011/en 19:11:52 it's completely unavailable 19:12:05 because of legislation coming in 19:12:18 "This proposal, which the Italian Parliament is currently debating, provides, among other things, a requirement to all websites to publish, within 48 hours of the request and without any comment, a correction of any content that the applicant deems detrimental to his/her image." 19:12:20 pro law 19:13:13 given the political situation in Italy, I can sort-of understand that law 19:13:23 it is not a good idea for the populace, but is for the government 19:13:29 oh no, this $35 Indian tablet is made by the same people who made that awful netbook you guys probably remember 19:13:41 india... trust me... it is not worth it... 19:13:43 that's ridiculous 19:13:49 you do not know what you are getting in to... STOP BEFORE IT IS TOO LATE 19:14:15 "The launch — attended by hundreds of students, some selected to help train others across the country in the tablet’s use — followed five years of efforts to design a $10 computer that could bridge the country’s vast digital divide." 19:14:24 I like how these things always end up costing about twice as much as they estimate 19:15:28 elliott: I'm going to submit that Italian Wikipedia page to Slashdot, I think 19:15:32 because nobody else has yet 19:15:52 I'm surprised 19:16:03 -!- tiffany has joined. 19:16:15 what an inane slashdot poll 19:16:35 Oblig.: it doesn't even have an option for CowboyNeal's computer 19:19:58 ais523, what Italian WP page? 19:20:05 Phantom_Hoover: http://it.wikipedia.org/wiki/Wikipedia:Comunicato_4_ottobre_2011/en 19:20:09 the only Italian WP page 19:20:16 at least, for now 19:21:14 Wow. 19:22:01 ah, I've been beaten to it 19:22:06 Reminds me of how a girl in my year suggested, over the course of a discussion, that if somebody was convicted and later acquitted of a crime, all internet reports on their conviction would have to be amended. 19:22:16 I never got around to pointing out the obvious flaw, unfortunately. 19:22:24 no wonder Slashdot submissions tend to be rubbish, it's because people writing a few fractions of a sentence get their submissions in first 19:22:39 Phantom_Hoover: that would be a decent idea, if not for the impossibility and awful implications :P 19:22:50 Phantom_Hoover: claim that the obvious flaw is "/b/ is not your personal army" 19:23:02 hmm, isn't the Italian Wikipedia the one that forked off early on in WP history, then merged back in? 19:23:17 ah no, that was Spanish 19:23:20 Enciclopedia Libre 19:24:12 isn't the obvious solution to host the Italian Wikipedia outside Italy? 19:26:51 ais523: they'll just block it, or something 19:26:53 :P 19:27:05 people will find ways round the block, they always do 19:27:41 Wikipedia have even come up with their own plans to help (e.g. the ipblockexempt permission that can be given to accounts to allow them to connect via Tor) 19:29:21 TIL: the current version of GRUB 1 is 0.97, and of GRUB 2 is 1.99 19:30:05 GNU counting. 19:31:34 | 19:31:39 =|:{D 19:31:41 | 19:31:45 Bandito smiley 19:32:49 Ngevd: I would comment on Brook, but I'm Not Allowed To. 19:33:03 I've revoked that status 19:33:09 IT IS MY DUTY. 19:33:41 "Thus the closure syntax and the for syntax really aren't equivalent and closures can't replace for loops. They might supplement them, but this is only relevant if they really can be run on multiple processors simultaneously." 19:33:46 This is the most nonsense post I have ever read. 19:35:32 http://en.wikipedia.org/w/index.php?title=Talk:Lava&curid=21438031&diff=454118153&oldid=452764824 19:35:37 Gfrsdgerr makes a good point. 19:38:28 "A personal appeal from Wikipedia programmer Brandon Harris." 19:38:50 "Please tell me how to program help" — all WP programmers. 19:40:55 -!- quintopia has quit (Ping timeout: 240 seconds). 19:40:58 OK this BBC thing on dinosaurs has really, really awful CGI. 19:41:48 I think they're trying to disguise the fact that everything moves really jerkily by making the camera look like a Sensodyne ad. 19:42:16 ahahaha 19:42:44 (Does anyone else get the Sensodyne reference I'm unclear on how well-known that is.) 19:42:53 yes 19:42:56 oh 19:42:57 else 19:42:57 ok 19:42:59 ask ais523 :P 19:43:12 -!- augur has joined. 19:43:14 Ask him what? 19:43:25 whether 19:43:25 he 19:43:26 got it, 19:43:29 I didn't 19:44:17 ais523, there were some Sensodyne ads a while back which just had a dentist blabbering on while the camera jumped between what I suspect are more angles than geometrically possible. 19:44:39 Phantom_Hoover: there still are 19:44:42 there have been for years 19:44:55 Also they have really terrible noise filtration. 19:44:59 Phantom_Hoover: I think it was like 19:45:03 -!- quintopia has joined. 19:45:04 Yes, but I don't keep a Sensodyne ad diary. 19:45:04 -!- quintopia has quit (Changing host). 19:45:05 -!- quintopia has joined. 19:45:09 a response to all those insane toothpaste ads 19:45:10 that are like 19:45:16 HERE ARE SCIENTISTS IN OUR FUTURE SCIENCE LAB 19:45:18 THEY'RE LOOKING AT A TOOTH 19:45:22 LOOK AT THE ENAMEL 19:45:23 IT'S PROTECTED 19:45:27 GOOD JOB DONE 19:45:29 LAB COATS FOR EVERYONE 19:45:33 TRY IT TODAY 19:45:40 YOUR TEETH WILL BE #FFF 19:45:53 and they tried to....capitalise.....on this... 19:46:44 And their CGI budget was £5, but they had like 20 cameras and a hyperspace camera arranger 19:46:48 *? 19:47:47 Yes. 19:48:30 i want #CCCCCC teeth 19:49:41 Light grey? 19:49:55 Aren't you Americans all about getting #GGGGGG teeth? 19:50:34 -!- DH____ has quit (Ping timeout: 248 seconds). 19:51:20 -!- DH____ has joined. 19:51:49 wow, I've used four different web browsers today, and have three open right now 19:52:07 actually, five if you count the HTML renderer in my feed reader 19:52:12 which is just an embedded version of Konqueror 19:53:16 haha 19:53:37 you are totally hooked into the cybernet 19:56:32 ais523: NOT - ENOUGH - BROWSERS 19:57:01 I'm using Firefox, Epiphany, and Chromium simultaneously atm 19:59:45 ais523: NOT - ENOUGH - BROWSERS 20:00:11 and was using w3m earlier 20:00:16 (I treat w3m rather like man or info) 20:04:39 Phantom_Hoover: chiclet teeth are scary. why would i want to be a freak? 20:05:09 The bass section of school youth theatre is 40% Nathan 20:05:13 quintopia, I don't know, ask the people who do? 20:05:26 Ngevd, the bass section of a *theatre*? 20:05:37 Bass as in singing 20:05:39 We do musicals 20:05:43 Gregor: Re STM: I'm about to get some much more substantial data and experience to argue based on :P 20:08:10 elliott: Good! Do so! 20:08:26 Gregor: I am (it's called "basing the entirety of mchost on STM") 20:08:36 (Like "STM transactions every tick") 20:08:43 (I am determined to make the most impossible things work) 20:08:44 And I got a named part! 20:08:57 Almost made a nasty typo there 20:09:14 Ngevd, you seem proud of this. 20:09:36 I'm proud I got a named part 20:09:43 I felt the nasty typo needed sharing 20:16:28 :t map ?f . M.toList 20:16:29 forall b k a. (?f::(k, a) -> b) => M.Map k a -> [b] 20:16:50 :t map (\(k,v) -> (,) k <$> return v) . M.toList 20:16:51 forall t a (f :: * -> *). (Monad f, Functor f) => M.Map t a -> [f (t, a)] 20:31:08 -!- derdon has joined. 20:52:19 -!- Ngevd has quit (Quit: Leaving). 21:06:32 How is David Cameron even so annoying it's preternatural. 21:06:52 I actually rather like him 21:06:57 I'm suspicious of him, in some ways 21:07:00 but I'm fine with him as a person 21:07:03 ais... 21:08:05 Compromise opinion: At least Cameron doesn't use the word "preternatural". 21:08:36 elliott: Phantom_Hoover is Scottish, it's genetic, or at least memetic, for them to hate Conservatives 21:08:41 It is the best word. 21:08:58 ais523, actually my genes are like all Irish so I don't even. 21:09:18 ais523: I'm sorry if you interpreted my comment as in any way a support of David Cameron or the Conservatives. 21:09:26 No, I just really hate the idea of a person who uses the word "preternatural". 21:09:27 elliott: I didn't 21:09:40 I'm trying to defend Phantom_Hoover for disliking David Cameron for no obvious reason 21:09:57 * ais523 websearches for ""David Cameron" preternatural" 21:10:24 26 Apr 2010 – Britain's Conservative leader, David Cameron, is ahead in the race for ... That same face, so preternaturally smooth that Cameron was forced to ... 21:10:25 Gross. 21:10:36 4 Apr 2010 – Meanwhile, Coulson remains one of David Cameron's inner strategic ..... get caught and end up in the poo, lacking TB's preternatural faculties. ... 21:10:45 "The majority of the Cabinet, led by David Cameron, took the oath: one by one they made a solemn declaration on pain of divine or preternatural wrath:" — "Archbishop Cranmer" 21:10:55 OK it's a fucking epidemic. 21:11:03 Let's kill everyone, but first the conservatives; that way we'll all be happy. 21:11:24 The conservatives rest assured that they won't have to see everyone else perish, and everyone else gets to revel in it. 21:11:30 And then "preternatural" will be wiped out. 21:11:39 Why do you hate 'preternatural' so much? 21:11:49 Phantom_Hoover: Have you ever even looked at that word. 21:12:04 It is like another word making a caricature of snobbish words. 21:12:15 "Ooh, look at me, I'm Mr. PRETERNATURAL!" 21:12:21 At least I didn't spell it præternatural. 21:12:36 Wow OK you are not even allowed to speak now. 21:12:48 -!- sllide has joined. 21:13:17 elliott, hey, you said ""preternatural"" yourself! 21:13:43 Phantom_Hoover: Yes but not that æ variant. 21:14:35 I was citing it as a bad thing! 21:15:06 Phantom_Hoover: Yes but you let it in to the world. 21:15:46 -!- oerjan has joined. 21:16:00 I just copied it from the WP article modulo æ. 21:16:26 æ is the best modulo 21:16:39 it's not prime, though 21:18:38 very æsthetic 21:19:26 Is preternatural not a good word. 21:19:51 !c printf("%d",0xae); 21:19:54 -!- Entanglements has quit. 21:19:59 rip entanglements 21:19:59 oh right, EgoBot isn't here 21:20:09 `printf "%d", 0xae 21:20:11 ​"0", 0xae 21:20:16 `printf "%d" 0xae 21:20:18 ​"0" 0xae 21:20:26 `run printf "%d" 0xae 21:20:27 174 21:20:31 ais523: try frink :P 21:20:33 > chr 0xae 21:20:34 '\174' 21:20:46 ^chr 174 21:20:46 21:20:46 elliott: what's the difference between printf and `run printf 21:20:51 `frink char[0xae] 21:20:55 ais523: quoting 21:20:59 former only passes one arg 21:20:59 ​? 21:21:04 lol 21:21:05 `run factor 174 21:21:06 174: 2 3 29 21:21:14 indeed, æ isn't prime 21:21:34 erm 21:21:39 Note to self: go through ~/Downloads. Soon. 21:21:50 ^asc æ 21:21:50 195. 21:21:51 Phantom_Hoover: You will never wipe the evidence. 21:21:59 `frink 0xae -> nonary 21:22:08 213 21:22:10 ais523: See, Frink is the most useful for all your æ-related needs. 21:22:12 oh hm 21:22:25 * oerjan confused that with %c. he thinks. 21:22:35 `frink 0xae -> hexadecimal 21:22:41 "hex" would do. 21:22:45 ae 21:22:48 elliott: it's a pointless query anyway 21:22:49 > showHec 0xae " 21:22:51 : 21:22:51 lexical error in string/character literal at end o... 21:22:54 > showHex 0xae " 21:22:55 and took altogether too long to reply to 21:22:55 : 21:22:55 lexical error in string/character literal at end o... 21:22:59 wat 21:23:02 > showHex 0xae "" 21:23:03 oerjan: what's with the stray "? 21:23:03 "ae" 21:23:29 ais523: i'm starting to wonder if my keyboard's flaky (i use that word a lot lately don't i) 21:23:51 a esolang based on spacechem 21:24:00 spacechem? 21:24:03 `frink "preternatural" -> jp 21:24:07 its a puzzle game 21:24:12 Unknown symbol "jp" \ Warning: undefined symbol "jp". \ Unconvertable expression: \ preternatural -> jp (undefined symbol) 21:24:15 Hmm. 21:24:17 `frink "preternatural" -> Japanese 21:24:20 http://www.youtube.com/watch?v=RjYOYtd298o 21:24:20 Probably more proxy problems. 21:24:27 Could not get input stream java.net.ProtocolException: Peer closed connection \ Unconvertable expression: \ preternatural -> Japanese (undefined symbol) 21:24:27 I blame Gregor(tm). 21:24:29 Yeah. 21:25:27 > showIntAtBase 256 chr 1234567890 "" 21:25:29 "I\150\STX\210" 21:26:01 oerjan: HMPH: 21:26:19 oh damn 21:26:23 :t showIntAtBase 21:26:24 forall a. (Integral a) => a -> (Int -> Char) -> a -> String -> String 21:26:25 frink's base support only goes up to 36 :P 21:26:34 *MWAHAHAHA* 21:26:42 > showIntAtBase 10 chr 123456789 "" 21:26:43 "\SOH\STX\ETX\EOT\ENQ\ACK\a\b\t" 21:26:45 > showIntAtBase 10 chr 123456789 "0" 21:26:46 "\SOH\STX\ETX\EOT\ENQ\ACK\a\b\t0" 21:27:09 `frink messageDigestInt[1234567890 -> quattuordecimal, "MD5"] -> octal 21:27:11 well lambdabot's probably has some trouble beyond fromEnum (maxBound :: Char) 21:27:12 oerjan: CHECKMATE 21:27:18 3475200621337201247103053166105120607462731 21:27:25 > showIntAtBase 10 (chr.add$ord "a") 123456789 "" 21:27:26 Not in scope: `add' 21:27:27 ;_; 21:27:40 > showIntAtBase 10 (chr.(+ord "0")) 123456789 "" 21:27:41 Couldn't match expected type `GHC.Types.Char' 21:27:41 against inferred type... 21:27:43 oerjan: now you just have to implement MD5 with @lets :P 21:27:54 > showIntAtBase 10 (chr.((ord "0")+)) 123456789 "" 21:27:55 Couldn't match expected type `GHC.Types.Char' 21:27:55 against inferred type... 21:27:56 :< 21:28:27 > showIntAtBase 10 (chr.(+ord '0')) 123456789 "" 21:28:29 "123456789" 21:28:39 Madoka-Kaname: you probably want intToDigit for normal conversions (only up to 16) 21:28:48 oerjan, I'm just messing around! 21:28:49 :< 21:28:51 > showIntAtBase 10 (chr.(+ord '!')) 123456789 "" 21:28:53 "\"#$%&'()*" 21:29:09 http://en.wikipedia.org/wiki/Wikipedia:Templates_for_discussion/Log/2011_October_3#Template:Facepalm 21:29:09 WJW 21:31:07 elliott: hilarious 21:31:11 you know about the T1 debate, right? 21:31:19 ais523: I might do but I don't recall that name 21:31:20 go on 21:31:22 it looks like it's been resurrected in a really unlikely way 21:31:31 elliott: it was part of the userbox wars 21:31:44 Jimbo unilaterally added a new speedy-delete criteria for "divisive or inflammatory templates" 21:31:47 and it lead to a row 21:31:58 ais523: oh, hmm 21:32:05 ais523, the userbox wars? 21:32:08 the only userbox drama I remember was that SPUI-related one 21:32:08 (Best wars.) 21:32:34 you might both be too young to remember the userbox wars, but wow were they both pointless and futious 21:32:35 *furious 21:32:52 too young X-D 21:33:05 Well, I do remember lots of userbox hoohah 21:33:09 it just kind of all melded together into one 21:33:21 ais523 is a veteran of the userbox wars— screw it I don't know the song well enough. 21:34:02 here we go: http://en.wikipedia.org/wiki/Wikipedia:T1_and_T2_debates 21:34:35 oh, right, I was thinking of the right one 21:34:46 (the one started by the paedophilia userbox) 21:34:58 hmm, was that the first test of "is Jimbo the final say"? 21:35:19 I seem to recall everyone thought he was until he did something people disagreed with, at which point he retroactively stopped ever having a final say 21:36:17 haha 21:37:27 ais523: please try and convince Phantom_Hoover not to solve all package dependency problems with --force-all... 21:37:39 Phantom_Hoover: it won't work properly 21:37:43 elliott, it's like a hammer! 21:37:46 and the errors will only become obvious later 21:38:02 But it's all I have... 21:39:30 I've used --force-depends once, in an emergency 21:39:32 but that's it 21:39:54 (hard power-off during a distro upgrade; I'm sort-of surprised it managed to recover from that even if I had to do parts of it manually) 21:40:04 I use --force-all to hotswap packages sometimes 21:40:39 So what am I /meant/ to do? 21:41:58 don't install packages that you don't have the dependencies for 21:42:41 Uh, your package manager can't recover from a crash? 21:42:45 Well that's a great solution (note: not a great solution). 21:42:51 What kind of software is that! 21:43:30 ais523, I see David Gerard was heavily involved. 21:43:35 Jafet: it can, normally; I was in the middle of a /distro upgrade/ 21:43:48 And it can't recover while doing that? 21:44:30 ais523, did you know about Gerard's RW career BtW. 21:44:44 it actually can with a couple of "I know what I'm doing" command line options 21:44:51 but I was surprised at that 21:45:31 11:44:42: The singularity is just a moment of infinite Firefox and kernel updates? 21:45:34 11:44:48: That's the most bullshit singularity I've ever heard of. 21:45:46 yes, but afters you will find that it looks _exactly_ like @ 21:45:50 *afterwards 21:46:20 * oerjan gets even more suspicious that his keyboard is dropping characters 21:46:37 hm when i try to touch type properly, my speed goes _down_ :( 21:47:15 ais523, so wait, the userbox wars were more a dispute over core site policy precipitated by the userbox deletion? 21:47:28 also, there will be an icon for "galactic network portal" 21:47:36 Phantom_Hoover: the policy in question was aimed reasonably directly at userboxes 21:47:42 ais523: well, it should really have been automatic 21:47:47 but yes, there was an argument about the metapolicy 21:48:08 Jafet: which OSes are you used to? and what update/upgrade mechanisms? 21:48:30 ais523, reminds me of like every conflict in RW's history, although it looks way less messy. 21:48:43 debian and apt, which is a piece of crap that can't figure out anything by itself 21:49:48 clearly Jafet is another person waiting for @ 21:49:52 this was Ubuntu and apt 21:50:09 elliott: hmm, I'm not convinced @ even has a package manager, the packages are just platonically there 21:50:15 Ah, at least the debian maintainers don't actively work against you. 21:50:27 Like the ubuntu packagers enjoy doing. 21:50:39 ais523: I think @'s package management system is type-based 21:51:02 you specify the module signatures you need, @ and the user collaborate on deciding which modules to give you meeting those signatures 21:51:16 one problem is that signatures could get general enough that the desired semantics aren't enforced, but I'll work something out 21:52:26 you need intensional types 21:52:43 oerjan: you get right on that 21:53:30 as soon as they invent strong ai 21:53:35 ais523: heh, maybe you can disambiguate by specifying desired big-O complexities with the signatures 21:53:43 filled in by the implementation author (inferring them is impossible ofc) 21:53:54 that might eliminate, like, a whole /three/ clashes 21:54:19 The cheating solution is to give each defined API a unique hash identifier so that even structurally equivalent ones are distinct, but that has a whole bunch of authority and control problems. 21:54:28 It might work out better in the end though. 21:55:25 I should make it illegal to ping me about @ and then not respond enthusiastically to the ramblings I accidentally let escape afterwards. 21:56:43 ais523: I SEE 21:57:01 hey, I /read/ them 21:57:10 but my brain's a bit fried atm 21:57:18 trying to fix and run marking scripts at 9pm 21:57:27 ais523: it's 9 pm? 21:57:32 looks more like eleven here 21:57:40 elliott: that's when I was fixing them and running them 21:57:46 I've finished that barring further emails flying around 21:57:56 but my brain got fried in the process 21:57:58 it'll recover, I hope 21:58:01 They should really use a safer method of delivering email. 21:58:01 but hasn't yet 22:00:28 emails by paper plane 22:01:53 I mean, if they do graphs of all the "fuck"s in the kernel... http://www.vidarholen.net/contents/wordcount/ 22:02:00 i like how they included "penguin" 22:02:09 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:02:58 I like how "penguin" ranks higher than "fuck". 22:04:16 -!- DH____ has quit (Read error: Connection reset by peer). 22:04:19 -!- DHeadshot has joined. 22:04:21 http://www.anvari.org/fortune/Kernel_Cookies/134 22:05:50 the word "shit" seems to have dropped a lot from the start, i wonder if that's linus's personal favorite 22:06:15 (relatively) 22:06:48 Linus says crap a lot. 22:06:55 At least in emails. 22:07:46 well crap _does_ dominate in the middle 22:08:42 but shit had a huge dominance initially 22:09:11 there are also releases where "penguin" wins 22:12:06 oerjan: bear in mind that the kernel was not all that much code initially :P 22:12:21 it does dominate for a while though 22:14:36 a little known fact is that "shit" was the first word linus wrote in original linux. right after the first "/*" 22:15:12 Nothing good ever starts with a comment. this is the wisdom of ZOMGMODULES caret w elliott 22:16:03 hm being elliott _would_ explain why cpressey rarely shows up here 22:16:28 Unfortunately it falls down at the part where, e.g. I'm not amazing. 22:16:50 -!- oerjan has set topic: computed jumps... the topic. | 12345678^&!@ | http://codu.org/logs/_esoteric/. 22:18:31 hmm, the tdwtf sidebar discussion about legal train routes is pretty amazing 22:18:38 there are over 600 pages of instructions 22:18:42 together with a long list of exceptiosn 22:18:44 *exceptions 22:18:55 oerjan: thank you 22:18:59 yw 22:19:01 oerjan: @ is unnecessary 22:19:03 alt+q gives me that 22:19:07 oerjan: i suggest asterisk instead 22:19:14 -!- oerjan has set topic: computed jumps... the topic. | 12345678^&!* | http://codu.org/logs/_esoteric/. 22:19:25 ais523: the tdwtf sidebar should be forced to fit into an actual sidebar, really 22:19:30 because I imagine it like that whenever it's referenced 22:19:37 also, it's the only way the forum software could get worse 22:19:39 * Phantom_Hoover → sleep 22:19:43 -!- Phantom_Hoover has quit (Quit: Leaving). 22:23:20 gah, seems it also depends on the day of the week 22:23:29 and the time, but only if getting a train from England to Ireland 22:23:33 which is, how is that even possible? 22:24:39 help 22:25:13 OK, I think I've just verified that it's legal to travel from Birmingham to Cambridge via Loughborough (and vice versa) 22:25:19 even though map-wise, it makes no sense 22:25:25 why would it be 22:25:26 ieglegilgal 22:25:34 because it's not on the route 22:25:52 since when do train routes _not_ depend on the day of the week? 22:26:07 that's like, what they do 22:26:15 oerjan: well, it's about what combination of trains is legal to get from A to B 22:26:20 e.g., can you go via unrelated location C? 22:26:31 -!- copumpkin has joined. 22:28:37 hmm, I think it might be theoretically possible to have a pair of stations which, by the rules, can't be travelled between at all 22:28:43 except that there's an exception that the shortest route is always legal 22:29:22 why would they even _have_ rules? 22:29:52 other than, you have to pay for the stretches you actually travel 22:30:50 mind you in norway at least, prices depend on when you travel, too. well last i traveled by train. i think. 22:32:03 also, down near oslo they are almost never on time. 22:33:50 oerjan: because there's some rule allowing you to get off at intermediate stations, but the fare depends only on source and destination 22:34:14 hm 22:34:31 where destination is _final_ destination, i guess? 22:34:36 yep 22:34:41 there was a famous incident where someone exploited this to get really low fares on his commute 22:34:47 until the train operators caught on and changed the rules 22:35:39 hm, i see, so somehow paying directly to the intermediate station is _more_ expensive? 22:35:57 oerjan: yes 22:36:16 although, the rules nowadays explicitly state that a route's illegal if it's more expensive to go directly to an intermediate station 22:36:41 * pikhq_ grawr 22:37:09 i guess this would only make sort of sense if the route takes a long roundabout to get to its final destination 22:37:20 oerjan: yes, or if London is involved 22:38:28 It's a bit weird hearing about train routes discussed in a manner that makes it clear that people actually *use* them. 22:38:34 well, you do have the world's oldest train system, it figures it would be complicated. 22:39:36 that's europe for you. although the norwegian trains (esp. near oslo, i think) are sufficiently bad they have trouble competing with other solutions. 22:39:53 we don't have high speed tracks 22:41:04 and many places, only a single track so there are delays whenever trains need to pass each other 22:41:41 We don't have a passenger rail system. 22:41:47 much the same in the UK, except that single tracks are moderately rare and the trains are timed so that they don't cause delays 22:42:16 The closest we have is Amtrak, which runs ridiculously limited passenger service on freight lines. 22:43:02 https://upload.wikimedia.org/wikipedia/commons/c/c5/Amtrak_System_Map.svg 22:43:16 Keep in mind, this is for a country about the size of the EU. 22:43:24 more like tamtruck 22:43:46 ok im going to bed 22:43:56 -!- Jafet has quit (Quit: Leaving.). 22:44:21 https://upload.wikimedia.org/wikipedia/commons/1/1f/Map_of_current_Interstates.svg And this is a map of major freeways. 22:45:31 -!- elliott has quit (Remote host closed the connection). 22:45:40 pikhq_ is american? I thought you were finnish or something 22:45:49 Very much American. 22:46:36 olsner: you haven't noticed his political discussions? although admittedly he seems to know something about europe, which might throw you off :P 22:46:55 oerjan: politics? I don't read politics 22:46:58 I'm an American who just happens to give a shit about other places. 22:47:07 Which *probably* suffices to throw people off. 22:47:08 :P 22:48:28 olsner: Anyways. Why'd you think I was Finnish? Or, more generally, Scandinavian? 22:48:47 it _is_ a good first guess on this channel 22:49:10 not british and not swedish/norwegian => finnish 22:49:10 Well, yeah, we seem to have a pretty high proportion of Scandinavians. 22:50:02 I don't know of any regulars outside that rule except pikhq :) 22:50:12 Gregor? 22:50:21 Though Gregor is not one of the *talkative* regulars. 22:50:45 he's british afaik :P 22:50:53 Gregor's American. 22:51:14 zzo38, too 22:51:22 -!- ais523 has quit (Remote host closed the connection). 22:51:22 zzo38's Canadian, isn't he? 22:51:30 wat, zzo38 is finnish :P 22:51:32 -!- kmc has quit (Quit: Leaving). 22:51:33 yes, which doesn 22:51:37 't fit olsner's rule 22:51:45 Yeah. 22:52:12 Hmm. Do we have people from outside the Germanic language sphere? 22:52:17 olsner: i once thought zzo38 was chinese, but... 22:52:25 lifthrasiir is korean 22:52:26 Oh, wait, lifthrasiir's in Korea. There we go. 22:52:39 I think I see the problem: since I use the rule to decide everyone's nationality I fail to disprove the rule 22:52:59 waht nationality am i 22:53:02 oerjan: Yeah, zzo38's idiosyncratic grammar does seem pretty Sinitic. 22:53:07 slereah is french, although maybe not so regular 22:53:15 monqy: british 22:53:23 actually american 22:53:34 pikhq_: as does zzo if it were his initials (not sure on the "o", though) 22:53:45 augur is american 22:53:56 wow lots of americans 22:54:24 nooga and asiekierka are polish 22:54:31 oerjan: beep boop 22:54:37 * oerjan waves 22:54:38 monqy: Well, yeah. The US is pretty big for a country. 22:54:58 hiato is south african, although he is rarely here 22:55:10 And it's not yet completely economically fucked, so of course it'll have a lot of representation. 22:55:58 Some 312 million people. 22:57:07 The EU, for comparison, features some 502 million people. 22:57:19 sebbu is also french, but he never talks 22:57:34 i _think_ cheater is german. 22:58:14 boily is french, or maybe french canadian 22:58:24 ...not sure on that 22:58:40 jix is german 22:59:05 tswett is american, i think 22:59:45 -!- derdon has quit (Remote host closed the connection). 23:00:22 a number of the others might be american but i'm not sure. and i haven't mentioned those i know are scandinavian/nordic or british 23:01:00 and then there is shachaf, of which i have my suspicions :P 23:02:01 oerjan: Well, of course you have suspicions of me. 23:02:07 Wait, what are we talking about? 23:02:18 shachaf: where everyone is from 23:02:26 Oh. "from" meaning what? 23:03:15 country. and in your case i suspect birth and residence are not the same. 23:03:44 Right. Which one? 23:05:32 probably residence. 23:05:43 in which case i suspect you're in the us 23:06:30 * shachaf born in Asia, live in North America 23:07:26 and your name looks distinctively jewish. 23:07:52 Well, it's Hebrew. 23:08:00 Southwest Asia. :-) 23:08:19 * shachaf also citizen of Finland. 23:08:24 ah i saw that 23:08:32 wasn't sure if you were joking 23:08:45 Saw what? 23:09:00 that you said you were a citizen of finland. 23:09:55 and you could be born in israel, but if it's some other sw asian country things could get complicated... 23:10:58 and the finnish mention indicates it might be. 23:11:59 * oerjan finally breaks down and google-stalks shachaf 23:12:14 * shachaf sighs. 23:12:58 "anything seasoned with balsamic vinegar" 23:14:44 oerjan: It's probably to ask for places of birth, residence, and citizenship. 23:15:03 i think you accidentally a word 23:15:11 Probably best 23:15:16 pikhq_: i started getting that feeling, too 23:15:26 shachaf: sorry if i've embarassed you 23:17:36 -!- sllide has quit (Read error: Connection reset by peer). 23:20:14 I wish that "Executive Profile" wasn't there. 23:20:19 It's kind of ridiculous. 23:20:24 Maybe I can have them take it down. 23:26:03 -!- tiffany has quit (Ping timeout: 248 seconds). 23:39:58 You could almost even believe the Norwegians have provided more accurate maps. 23:40:03 -!- Sgeo|web has joined. 23:40:11 the norwegian side might actually have people still living there. 23:41:33 Steve Jobs died 23:44:01 Oh? 23:44:11 Sure enough. 23:44:14 You seem to have beat Google News. 23:44:36 It seems to have literally just happened. 23:44:41 My dad had the TV on 23:47:09 Well, that's "fun". The US signed the ACTA, and is claiming that they don't need Senate approval. 23:47:30 Which is of course impossible. 23:47:50 The President only has the power to make treaties with 2/3rds of the Senate concurring. 23:48:34 Welp, Jobs managed to capture our attention for three minutes. 23:48:36 That's pretty good, really. 23:49:24 -!- DHeadshot has quit (Read error: Connection reset by peer). 23:49:28 -!- DH____ has joined. 23:51:21 An admin here wants to nominate me for the dubious title of "Music Maker" (where "Maker" is the Purdue Official Pun). Anybody want to write a 100-world blurb on my amazing musical abilities? :P 23:51:53 音楽良 23:51:56 There. 23:52:02 3 characters. 23:52:03 -!- DH____ has quit (Read error: Connection reset by peer). 23:52:05 That count? 23:52:53 Well, that's almost 100 words. 23:53:11 Far short of 100 worlds, though. 23:53:16 OK, I am seriously terrified by this curry ... PLEASE DON'T BURST INTO FLAMES ... I'M SORRY THAT I'VE ANGERED THE COCONUT OIL GODS ... 23:53:23 ... lol 23:53:26 I tpyo'd 100 "worlds" 23:53:30 That's pretty great. 23:53:34 Let's try 100 /words/ :P 23:53:42 01:48 Gregor> Welp, Jobs managed to capture our attention for three minutes. 23:53:42 01:48 Gregor> That's pretty good, really. 23:53:45 out in a blast 23:56:24 "Gregor has a preternatural talent for creating wonderfully salient and laisse-faire compositions alluding to the bourgoisie sensibilities of the current American zeitgeist." 23:57:01 someone else can do the remaining 78 23:57:41 (no, i'm not sure what all those words mean) 23:58:14 oerjan: Good! Gettin' there!