00:11:30 -!- tiffany has quit (Quit: Leaving). 00:19:19 -!- CakeProphet has quit (Ping timeout: 258 seconds). 00:58:44 -!- zzo38 has joined. 00:59:08 It says "Anglo-Caledonian diplomacy and sword games" but you should do card game instead? 01:07:28 -!- Gregor has set topic: Anglo-Caledonian diplomacy and card games | Welcome to the international hub for exoteric voodoo programming design and deployment! | computed jumps... the topic. | 12345678^&!* | http://codu.org/logs/_esoteric/. 01:07:39 Agreed. 01:10:41 I have been trying to decide what two spells to select for the Dungeons&Dragons game; my brother has not selected anything for the next level yet. 01:10:50 I have selected everything except for the spells. 01:11:17 ^welcome 01:11:19 `welcome 01:11:24 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcome: not found 01:11:25 bluh? 01:13:09 `?welcome 01:13:11 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?welcome: not found 01:13:12 Errf 01:13:14 `? welcome 01:13:16 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 01:17:00 Which spell should be selected? Shield? Resistance? Extend Tentacles? Death to the Caster? Prohibit Metamagic? Merciful to Gibbering Mouthers? Object Mirrored? Spell Repetition? Breath Energy Mixture? Area of Mercy? Spell that nobody understands? 01:20:06 -!- augur has quit (Remote host closed the connection). 01:20:12 Object Mirrored is a spell I invented, which makes an object mirror-imaged of itself. 01:21:30 But there are some restrictions on its use: The center of gravity must not be moved more than six inches from its original location. The new position of the object must share at least one point in common with the old position of the object. The transformation must not cause any parts of the object to be moved through barriers that are not part of the target object. 01:21:54 If the target object is supporting something, you must not transform it as to make it no longer supporting the thing it is currently supporting. If the target object is being supported by something, you must not transform it to make it no longer supported by anything (although it does not necessarily have to be supported by the same thing as before). 01:22:20 You must not make it touching something it was not previously touching. Effects of mirroring molecules, atoms, and subatomic particles, is ignored. Any creature gets a +4 bonus to the saving throw of this spell if it would be fatal (or sufficiently harmful) to that creature. 01:39:27 -!- zzo38 has quit (Remote host closed the connection). 01:39:48 -!- pikhq has joined. 01:40:49 -!- pikhq_ has quit (Ping timeout: 244 seconds). 01:52:14 Dennis Ritchie apparently died recently 01:52:46 -!- augur has joined. 01:57:38 Awww. 02:05:03 RIP Dennis Ritchie :( 02:05:04 RIP Dennis Ritchie :( 02:07:53 * Madoka-Kaname Segmentation Fault 02:16:35 -!- CakeProphet has joined. 02:16:35 -!- CakeProphet has quit (Changing host). 02:16:35 -!- CakeProphet has joined. 02:26:59 variable: D-8 02:27:20 -!- pikhq has quit (Quit: Reconnecting). 02:32:18 -!- pikhq has joined. 02:34:18 -!- DH____ has quit (Read error: Connection reset by peer). 02:34:22 -!- DHeadshot has joined. 02:36:23 does anyone know a good calculator for matrix math? 02:36:32 nothing fancy, just needs to do multiplication and variables 02:40:04 found a haskell library that ought to do 02:41:05 I'm having trouble implementing A* in C# for university. There's no priorityqueue class so I'm not sure what kind of collection I should be using. 02:45:25 a set 02:45:41 will a set be efficient? 02:45:52 -!- zzo38 has joined. 02:50:42 no wait, that library sucks 02:52:53 There should be something that can use the functional representation system that I designed; it ought to be possible some Haskell compilers, and possibly other programs too, to be able to compile to and/or from it. It is designed, no unsafe function, no side effects, no unsafeCoerce, etc 02:56:51 (It means not all Haskell programs could be compiled to it, but most could.) 03:20:43 (Actually, even programs containing unsafeCoerce could be compiled, if you first changed the unsafeCoerce to a safe code having the same effect, such as (unsafeCoerce :: Maybe a -> Bool) into (maybe False $ const True)) 03:29:29 -!- TeruFSX has joined. 03:38:28 zzo38: 03:38:28 Prelude Unsafe.Coerce> unsafeCoerce (last $ [unsafeCoerce 1 :: (), unsafeCoerce "test" :: ()]) :: String 03:38:29 "test" 03:38:29 Prelude Unsafe.Coerce> unsafeCoerce (last $ reverse $ [unsafeCoerce 1 :: (), unsafeCoerce "test" :: ()]) :: Int 03:38:29 1 03:38:32 Do that without unsafeCoerce. 03:41:38 > 1 03:41:39 1 03:41:57 > 1 :: Int 03:41:58 1 03:41:59 my bad. 03:42:56 :t toDyn 03:42:57 forall a. (Typeable a) => a -> Dynamic 03:43:03 :t fromDyn 03:43:04 forall a. (Typeable a) => Dynamic -> a -> a 03:44:01 :t fromDynamic 03:44:02 forall a. (Typeable a) => Dynamic -> Maybe a 03:44:23 > ((`fromDyn` 0) . last . reverse $ [toDyn 1, toDyn "test"]) :: Int 03:44:24 0 03:44:36 hmmm 03:44:45 > ((`fromDyn` 0) . last . reverse $ [toDyn (1::Int), toDyn "test"]) :: Int 03:44:47 1 03:44:51 LOL 03:44:56 public float calcH(int X, int Y, int goalX, int goalY) 03:44:56 { 03:44:56 return (X - goalX) ^ 2 + (Y - goalY) ^ 2; 03:44:56 } 03:44:58 Spot the error 03:45:09 Java? 03:45:16 C# 03:45:27 What is ^ in C# 03:45:34 bitwise xor 03:45:39 You got it 03:45:43 So it was producing crrrrrazy paths 03:45:48 That went this way and that way it was lol 03:45:55 you want uh... Math.pow I think. 03:45:57 Yes 03:46:19 Or just use multiplication, is the other way 03:46:20 Madoka-Kaname: but yeah ^^^ is one way to do it. 03:47:19 CakeProphet, can you implement that without unsafeCoerce? 03:47:39 I.... don't remember. 03:47:47 it may use unsafeCoerce underneath. 03:47:52 @src toDyn 03:47:53 toDyn v = Dynamic (typeOf v) (unsafeCoerce v) 03:48:03 yep 03:48:04 @src fromDynamic 03:48:05 fromDynamic (Dynamic t v) = case unsafeCoerce v of 03:48:05 r | t == typeOf r -> Just r 03:48:05 | otherwise -> Nothing 03:48:13 okay well I think you could do a Typeable existential. 03:48:23 you could, but I don't think they had existentials back then 03:48:45 back then? this is the context of the past? 03:48:55 oh, I thought you were talking about Dynamic 03:49:13 oh. no. but yeah you can represent Dynamic with a Typeable existential. 03:49:31 I was talking about basically a different approach to dynamic typing that would be explicit form of one way to implement Dynamic. 03:49:34 :t Dynamic 03:49:35 Not in scope: data constructor `Dynamic' 03:49:41 @src Dynamic 03:49:42 Source not found. Wrong! You cheating scum! 03:50:01 Hmm... 03:50:18 () is completely safe to unsafeCoerce to, as you can't do anything to it, right? 03:50:34 you can pattern match it but that's all I can think of. 03:50:48 @hoogle () -> a 03:50:48 Control.Parallel.Strategies demanding :: a -> Done -> a 03:50:48 Control.Parallel.Strategies sparking :: a -> Done -> a 03:50:48 Unsafe.Coerce unsafeCoerce :: a -> b 03:50:52 (By safe, I mean "no risk of damage to underlying data or segFault, assuming you arn't casting to the wrong type") 03:51:05 -!- MDude has changed nick to MSleep. 03:51:21 Ok my game is getting retarded slowdowns. How can I profile in visual studio 2011? 03:51:47 http://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=C%23+profiling 03:51:49 I am a wizard. 03:51:59 Wowza 04:00:49 hmmm I wonder how I'd code a mandelbrot set in Haskell. 04:04:33 the iterated function part would obviously be f c = iterate ((+c).(**2)) 0 04:05:00 where c is a (Num a) => Complex a 04:06:15 er, just Complex a would be fine 04:06:25 since it's a is constrained to RealFloat 04:06:38 *its 04:10:46 then you'd have something like Complex -> Pixel 04:11:32 or (a,a) -> Pixel 04:19:13 mandel p escape max_iter = takeWhile (\(i, x) -> x < escape && i < max_iter ) $ zip [0..] (f p) 04:19:17 @pl (\(i, x) -> x < escape && i < max_iter ) 04:19:17 uncurry (flip ((&&) . (< escape)) . (< max_iter)) 04:19:55 hmmm 04:20:01 that's not complete at all though 04:20:28 :t toMaybe 04:20:29 Not in scope: `toMaybe' 04:20:38 @hoogle [a] -> Maybe a 04:20:38 Data.Maybe listToMaybe :: [a] -> Maybe a 04:20:39 Data.List find :: (a -> Bool) -> [a] -> Maybe a 04:20:39 Prelude head :: [a] -> a 04:21:44 @hoogle (a,a) -> Complex a 04:21:45 Prelude snd :: (a, b) -> b 04:21:45 Data.Tuple snd :: (a, b) -> b 04:21:45 Prelude fst :: (a, b) -> a 04:22:00 pixel c escape max_iter = listToMaybe $ dropWhile (\(i, x) -> x < escape && i < max_iter ) $ zip [0..] (f c) 04:22:18 @pl \a -> Complex (fst a) (snd a) 04:22:18 uncurry Complex 04:22:18 a very simple escape time algorithm. 04:22:26 ah right 04:22:29 :t uncurry 04:22:30 forall a b c. (a -> b -> c) -> (a, b) -> c 04:22:33 Heh 04:23:48 :t uncurry Complex 04:23:49 Not in scope: data constructor `Complex' 04:24:01 :+ 04:24:08 :t a -> a -> Complex a 04:24:09 parse error on input `->' 04:24:16 @hoogle a -> a -> Complex a 04:24:17 Data.Complex (:+) :: a -> a -> Complex a 04:24:17 Data.Complex mkPolar :: RealFloat a => a -> a -> Complex a 04:24:17 Prelude asTypeOf :: a -> a -> a 04:24:21 Ah 04:24:23 Madoka-Kaname: do you know what :t does? :P 04:24:26 :t uncurry (:+) 04:24:26 forall a. (RealFloat a) => (a, a) -> Complex a 04:24:28 CakeProphet, yes. I derped 04:26:57 @djinn (RealFloat a) => (a, a) -> Complex a 04:26:58 Error: Undefined type Complex 04:28:05 EgoBot: WHY DO YOU NOT EXIST ANYMORE. 04:28:35 @tell elliott TODO: convince Gregor to put ghc and runhaskell on hackego 04:28:35 Consider it noted. 04:28:42 `run ghc --version 04:28:45 The Glorious Glasgow Haskell Compilation System, version 7.2.1 04:28:54 `run runhaskell --version 04:28:56 runghc 7.2.1 04:29:09 @tell elliott ...oh nevermind. 04:29:09 Consider it noted. 04:35:53 -!- nooga has joined. 04:41:43 -!- pikhq has quit (Ping timeout: 245 seconds). 04:41:50 -!- pikhq_ has joined. 04:41:58 `run echo -e '#!/bin/sh\necho\'\$1\' \| runghc' > /bin/haskell 04:42:00 sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file 04:42:48 `run echo -e '#!/bin/sh\necho' \'\$1\' \| runghc > /bin/haskell 04:42:50 sh: /bin/haskell: Read-only file system 04:42:58 `run echo -e '#!/bin/sh\necho' \'\$1\' \| runghc > bin/haskell 04:43:00 No output. 04:43:08 `run echo "HUG!" 04:43:10 HUG! 04:43:20 `haskell 'main = putStrLn "Hello, World!"' 04:43:22 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/haskell: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/haskell: cannot execute: Success 04:43:26 halp 04:43:28 oh 04:43:36 `run chmod +x bin/haskell 04:43:38 No output. 04:43:39 `haskell 'main = putStrLn "Hello, World!"' 04:43:40 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/haskell: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/haskell: cannot execute: Success 04:43:51 erm 04:44:23 !haskell main = putStrLn "Hello, World~♪" 04:45:10 `run stat -c %A bin/haskell 04:45:12 ​-rwxr-xr-x 04:45:16 `run cat bin/haskell 04:45:18 ​#!/bin/sh \ echo '$1' | runghc 04:46:36 ah 04:47:08 `run echo -e '#!/bin/sh\necho' \"$1\" \| runghc > bin/haskell 04:47:10 No output. 04:47:14 `run echo -e '#!/bin/sh\necho' \"\$1\" \| runghc > bin/haskell 04:47:17 No output. 04:47:22 `cat bin/haskell 04:47:23 ​#!/bin/sh \ echo "$1" | runghc 04:47:40 `run haskell 'main = putStrLn "Hello, World!"' 04:47:45 Hello, World! 04:48:31 `run echo -e '#!/bin/sh\necho' \"\$@\" \| runghc > bin/haskell 04:48:33 No output. 04:48:40 `run haskell main = putStrLn "Hello, World!" 04:48:44 ​\ /tmp/runghcXXXX278.hs:1:22: parse error on input `,' 04:48:48 :( 04:48:52 ah right. 04:49:55 I doubt I can get bash to automatically escape quotes magically. 04:52:16 `run echo -e test 04:52:18 test 04:52:20 `echo -e test 04:52:22 ​-e test 04:52:34 okay so it just automatically quotes the entire line when written without run 04:53:09 `haskell main = putStrLn "Hello, World!" 04:53:13 Hello, World! 04:53:52 one less reason to have egobot, it seems. 04:55:44 though userinterps are pretty convenient. 04:56:57 -!- Jafet has joined. 04:56:59 `haskell import Unsafe.Coerce; main = print (unsafeCoerce (2 :+ 2 :: Complex Int) :: (Int, Int)) 04:57:04 ​\ /tmp/runghcXXXX278.hs:1:53: Not in scope: data constructor `:+' \ \ /tmp/runghcXXXX278.hs:1:61: \ Not in scope: type constructor or class `Complex' 04:57:16 `haskell import Unsafe.Coerce; import Data.Complex; main = print (unsafeCoerce (2 :+ 2 :: Complex Int) :: (Int, Int)) 04:57:20 ​(2,2) 04:58:15 `haskell import Unsafe.Coerce; isJust :: Maybe a -> Bool; isJust = unsafeCoerce; main = print $ map isJust [Maybe (), Nothing] 04:58:20 ​\ /tmp/runghcXXXX278.hs:1:100: Not in scope: data constructor `Maybe' 04:58:26 `haskell import Unsafe.Coerce; isJust :: Maybe a -> Bool; isJust = unsafeCoerce; main = print $ map isJust [Just (), Nothing] 04:58:30 ​[True,False] 05:01:08 noice. 05:01:44 `run echo -e '#!/bin/sh\necho' \"\$@\" \| runghc > bin/runperl 05:01:46 No output. 05:01:50 `run chmod +x bin/runperl 05:01:51 No output. 05:01:54 `runperl print "test" 05:01:59 ​\ /tmp/runghcXXXX278.hs:1:1: \ Parse error: naked expression at top level 05:02:05 ....er 05:02:06 lol oops 05:02:14 forgot to clothe my expressions. 05:02:25 `run echo -e '#!/bin/sh\necho' \"\$@\" \| perl > bin/runperl 05:02:27 No output. 05:02:31 Technically speaking I don't think it as much "quotes the line" as it just runs the first argument given the line as argv[1] without involving a shell. 05:02:38 `runperl print "test" 05:02:40 test 05:03:02 that's much better than perl -e, though a bit more limited in that I can't use all of perl's other wonderful options. 05:04:32 `python --version 05:04:34 Python 2.7 05:05:41 `run echo -e '#!/bin/sh\necho' \"\$@\" \| python - > bin/runpython 05:05:43 No output. 05:05:52 `run chmod +x bin/runpython 05:05:54 No output. 05:06:01 `runpython print "Hello, World!" 05:06:04 Hello, World! 05:06:55 `runpython print __name__ 05:06:57 ​__main__ 05:07:19 nech... oh derp 05:07:25 best scheme. 05:07:30 * CakeProphet names all of his python modules __main__ 05:07:45 Um, I can't imagine Python working really all that well when only given one line 05:08:01 `runpython x = 2; y =3; print x+y 05:08:04 5 05:08:05 Sgeo|web: yeah me neither 05:08:13 loops will be not so great though. 05:08:25 if statements also will not be so great. 05:08:42 Well, actually, I guess you kind of can 05:08:46 this is why Python is bad. 05:08:57 CakeProphet: because one-liners aren't feasible? 05:09:02 yep 05:09:15 Bad for HackEgo, maybe, but 05:09:33 `runpython 1 if False else 0 05:09:35 No output. 05:09:36 bad for simple code generation also. 05:09:46 `runpython print 1 if False else 0 05:09:48 where you only want to output some code that isn't intended to be read by humans. 05:09:49 0 05:09:57 you have to keep track of the indent level 05:11:02 `runpython x=5; (x+=1 if True else 0); print x 05:11:04 File "", line 1 \ x=5; (x+=1 if True else 0); print x \ ^ \ SyntaxError: invalid syntax 05:11:12 Didn't really expect that to work 05:11:23 why would you even write that. 05:11:31 anyone who knows anything about Python would know that wouldn't work ever. 05:12:06 Couldn't hurt to try? 05:13:40 `runperl print (x=5)?(x+=1):0 05:13:42 Can't modify constant item in scalar assignment at - line 1, near "5)" \ Execution of - aborted due to compilation errors. 05:13:46 noooooo 05:13:55 `runperl print ($x=5)?($x+=1):0 05:13:58 5 05:14:02 noooooooo 05:14:13 `runperl print (($x=5)?($x+=1):0) 05:14:15 6 05:14:19 I wonder if I can just... 05:14:26 `runperl print ($x=5?$x+=1:0) 05:14:28 1 05:14:30 nooooooo. damn you precedence. 05:15:57 Sgeo|web: you can actually use source filters to give Perl source code Python-style blocks 05:17:01 Huh 05:17:44 a source filter literally just being some perl code that takes your source code as input and outputs the source code that gets "compiled" 05:20:11 So I could make a source filter that takes +- and runs that as perl 05:20:12 ? 05:20:20 `runpython from __future__ import braces; 05:20:22 File "", line 1 \ SyntaxError: not a chance 05:20:30 erm, by +-, I mean Brainfuck 05:20:41 Plusminus, the new PC name of Brainfuck. 05:20:51 Or I'll just make it a derivative identical to the original. 05:20:54 Make everyone happy. 05:21:00 - is a convenience instruction. 05:21:16 Not if cell data doesn't wrap around 05:21:17 `runperl print "test" =~ tr[a-zA-Z][n-za-mN-ZA-M] 05:21:19 Can't modify constant item in transliteration (tr///) at - line 1, at EOF \ Execution of - aborted due to compilation errors. 05:21:24 ....WHY PERL WHY 05:21:42 `runperl print ($_="test") =~ tr[a-zA-Z][n-za-mN-ZA-M] 05:21:44 Can't modify print in transliteration (tr///) at - line 1, at EOF \ Execution of - aborted due to compilation errors. 05:21:49 wat 05:21:53 `runperl print (($_="test") =~ tr[a-zA-Z][n-za-mN-ZA-M]) 05:21:55 4 05:22:08 Oh god, perl's turning into lisp 05:22:09 it's so incredibly stupid that I have to assign it. 05:22:25 `runperl print ("test" =~ tr[a-zA-Z][n-za-mN-ZA-M]r) 05:22:27 Bareword found where operator expected at - line 1, near "tr[a-zA-Z][n-za-mN-ZA-M]r" \ Can't modify constant item in transliteration (tr///) at - line 1, near "tr[a-zA-Z][n-za-mN-ZA-M]r" \ syntax error at - line 1, near "tr[a-zA-Z][n-za-mN-ZA-M]r" \ Execution of - aborted due to compilation errors. 05:22:38 and there's no r option in this version of perl I guess. 05:23:32 `perl -v 05:23:33 ​\ This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi \ \ Copyright 1987-2007, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be 05:24:02 long version string 05:24:23 `runperl $_=q{$_='Hello, World!';print tr[a-zA-Z][n-za-mN-ZA-M]}; tr[a-zA-Z][n-za-mN-ZA-M]; print; 05:24:25 ​$_='Uryyb, Jbeyq!';cevag ge[n-mN-M][a-mn-zA-MN-Z] 05:27:31 `runperl $_=q{$_='Hello, World!';tr[!-~][P-~!-O];print};tr[!-~][P-~!-O];print; 05:27:33 S0lVw6==@[ (@C=5PVjEC,P\O.,!\OP\~.jAC:?E 05:28:39 `runperl use Filter::sh q{tr '!-~' 'P-~!-O'}; S0lVw6==@[ (@C=5PVjEC,P\O.,!\OP\~.jAC:?E' 05:28:41 Can't locate Filter/sh.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at - line 1. \ BEGIN failed--compilation aborted at - line 1. 05:28:47 noooooooo 05:29:26 `runperl use Filter::Util::Call; 05:29:28 No output. 05:32:05 `runperl use Filter::cpp; 05:32:06 Can't locate Filter/cpp.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at - line 1. \ BEGIN failed--compilation aborted at - line 1. 05:32:56 so yeah I don't feel like using Filter::Util::Call 05:33:09 it's OO-ish 05:33:33 Filter::sh literally just processes the source file with a sh command. 05:36:56 -!- aloril has quit (Ping timeout: 244 seconds). 05:37:23 It feels wrong to spend 4 hours on something so simple 05:37:41 Patashu: what is it? 05:39:13 I implemented A*, then I made it so that it 'drew' straight lines between path nodes if no walls were in the way and took that path instead, then I fixed my previous pathfinding algorithm (which still kicked in when a unit ran into a wall or other unit) so that it took the sideways path that brought it geometrically closer to its destination 05:39:27 Rather than always going...clockwise I think it was 05:42:51 Should have only taken 2 hours. I wonder if I can bribe father time 05:47:34 -!- Jafet1 has joined. 05:49:12 -!- Jafet has quit (Disconnected by services). 05:49:13 -!- Jafet1 has changed nick to Jfaet. 05:51:18 I'm learning a new math thing due to 05:51:25 Men inHats. 05:51:28 I am not making this up 05:51:44 http://meninhats.com/d/20031212.html 05:53:05 http://en.wikipedia.org/wiki/Ono's_inequality 05:53:08 That sounds boring 05:54:59 -!- Jfaet has changed nick to Jafet. 05:56:45 Freedom in general may be defined as the absence of obstacles to the realization of desires 05:56:48 -Bertrand Russel 05:56:54 smart man with smart words. 05:58:37 -!- aloril has joined. 06:01:28 -!- pikhq has joined. 06:01:34 -!- pikhq_ has quit (Ping timeout: 252 seconds). 06:03:17 -!- zzo38 has quit (Remote host closed the connection). 06:23:20 -!- aloril has quit (Ping timeout: 265 seconds). 06:23:37 hmmm 06:23:58 so whats the best SQL DBMS? 06:26:53 It's all BDSM. 06:27:38 okay, but would you recommend any? 06:27:48 CakeProphet: for small stuff, SQLite? 06:27:51 SDSM for reflection, GDSM for MR. 06:28:36 Why not just CoMR+SDSM rather than GDSM? Although I'm usually a wizard 06:28:56 >.> 06:29:01 Sgeo|web: Joke killer. 06:30:05 Sgeo|web: I don't think this is necessarily a small project. 06:30:10 -!- nooga has quit (Ping timeout: 256 seconds). 06:30:14 it's work related. I'm choosing which database to use. 06:30:23 Ah 06:30:24 so I can only assume that it needs to scale well. 06:30:47 PostgreSQL doesn't look too bad. It has a lot of features. 06:31:01 Of the open-sores "big ones", it's often a choice between either Postgres or the MySQL/derivatives. 06:32:39 And MySQL's in the middle of a giant "ABANDON SHIP" forkfest. 06:33:20 hmmm MySQL seems to be more popular than Postgres. is that an accurate statement? 06:34:03 MySQL, sadly, is (or at least was) quite often the "default". 06:34:15 LAMP and all that. 06:34:54 okay so I think I'll go with postgres 06:35:23 * CakeProphet has never used a database. Should be fun. 06:35:25 MySQL used to lack all kinds of "Real Database" features, but I suppose they've bolted most of them in more or less, now. 06:35:28 MySQL is more popular, but it's also been utterly shaken up by Oracle lately. 06:35:35 I know the basic ideas of a relational database, and a bit of SQL, but that's about it. 06:35:37 Also that. 06:36:22 -!- aloril has joined. 06:37:48 quick say some bad stuff about postgres 06:38:08 If your needs aren't very esoteric, it's sometimes possible to be both MySQL- and PostgreSQL-compatible without too much fuss. (Sensible languages have generic-ish database interfaces.) 06:38:38 fizzie: I'm using django (Python). It can use a lot of databases. 06:38:47 I don't know how painless it is to switch though. 06:39:15 Very painless, if you just use Django's own database object model/persistence things. 06:39:16 postgreSQL has the best logo. Therefore, I should use it. 06:41:36 (Well, I don't know how painless it is to switch an existing Django db from one to another; but the code for using any Django-supported one should be pretty much identical, since you're not really writing any SQL there.) 06:41:54 fizzie: right that's the situation I was talking about. 06:42:00 so I just want to go ahead and pick one and stick with it. 06:42:04 to avoid having to do that. 06:42:39 I'm a Postgres person, so my recommendations would be biased anyhow. 06:43:27 postgres seems to be sufficiently advanced, but I have little actual knowlege about it. 06:44:43 Based on some very little Django work, it's quite painless to use if you do things the way Django wants them to be done, e.g. use the django.db.models-based DB access API; in which case the specific features of the database don't really matter all that much. 06:45:17 I'm sure I won't need to do anything that Django doesn't already allow through its API 06:45:49 As for speed and scalability, it would be best if you could find some Django benchmarks on the different backends, but I'm not sure any exist. 06:47:08 There are quite a few on the web-server/"middleware" side (fcgi, wsgi, whatever), but. 06:47:13 fizzie: if I use a different frontend to manage the db in the future will that conflict with the Django API? 06:47:19 like pgadmin 06:47:49 Depends on whether you mess with the tables or not. It won't of course understand the Django object format, so you need to be slightly careful. 06:48:06 hmmm okay 06:48:10 Django can autogenerate a database web-admin interface directly from the Python models if you like. 06:48:19 It's... not perfect, but passable. 06:48:24 Looks fancy, anyway. 06:48:28 oh that might be good. 06:48:55 The objects tend to be serialized in a "sensible" way IIRC, so it's possible to edit things "manually" too. 06:49:18 and then as long as the code reflects the new table structure everything should be fine, I'd think. 06:49:41 http://jacobian.org/writing/django-performance-tips/ says "Use PostgreSQL: I’ll probably get lots of push-back from the MySQL community about this one, but in my experience PostgreSQL is much faster than MySQL in nearly every case." but that's just a random web-page. 06:50:02 random source on the internet? I'll take it. 06:50:14 * CakeProphet reinforces the nebulous fabric of his reality. 06:52:13 -!- DHeadshot has quit (Read error: Connection reset by peer). 06:52:17 -!- DH____ has joined. 06:52:31 I seem to recall there was some sort of a thing about editing the models. 06:52:49 -!- aloril has quit (Ping timeout: 265 seconds). 06:53:26 -!- sllide has joined. 06:55:39 fizzie: yeah I could be dealing with possibly 10 million rows here.. 06:55:46 http://www.djangobook.com/en/2.0/chapter10/#s-making-changes-to-a-database-schema 06:56:10 hm 06:56:49 hypothetically, how good would a modern GPU be for ray-tracing. I'm not expecting 60 FPS, but for offline rendering, how fast might it be? 06:57:07 (will of course depend on scene complexity) 06:57:33 I guess what I'm asking: how fit are modern GPUs to do the job compared to just doing it on the CPU 06:58:09 I think all of the GPU + ray-tracing things I've seen have been about doing it in real-time, but I'm pretty *someone*'s doing "traditional" offline rendering on a GPU too. 06:58:22 It sounds like a very reasonable thing to do. 06:58:37 yeah 06:59:02 fizzie, so how fast would doing real time ray tracing on a GPU be? (Alternatively: why doesn't every modern game do it?) 07:01:41 "How fast" is a bit of a senseless question; it's obviously "real-time fast". What might be more relevant is "how complex stuff can you do". (To which I don't know the answer, but there are some impressive-looking demos.) 07:01:53 hm 07:02:34 -!- hagb4rd has joined. 07:02:38 NVIDIA has that OptiX thing going on, for example; I don't know much more than the name about it, though. 07:02:54 hm skyrim + raytracing would be pretty cool for example. Lots of scenery that could be reflected in water and such. 07:05:00 I suppose it's somewhat a memory problem for (offline) ray-tracing really complex scenes. (As far as I understand it, most of the work in doing stuff on GPU is about memory management.) 07:05:11 heh 07:05:26 -!- aloril has joined. 07:06:54 There's probably papers on it from every SIGGRAPH of the last few years. 07:07:03 heh 07:07:36 do those require paid access? 07:08:11 I don't think so. Googling hit a one-hour slidefest about the topic from SIGGRAPH 2011 (by NVIDIA) at http://www.youtube.com/watch?v=0IC2NIogWR4 07:08:22 nice 07:08:45 AMD needs to start doing more cool stuff like that. Since I have an AMD CPU 07:08:57 There's a link to http://developer.nvidia.com/siggraph-2011 which lists all presentations from NVIDIA folks. (Haven't more than glanced at it.) 07:09:28 err 07:09:29 GPU 07:09:30 not CPU 07:11:11 Apparently http://www.mentalimages.com/products/mental-ray/about-mental-ray.html is reasonably GPU-accelerated. (It's an offline thing for complex images and realistic lighting and that sort of stuff.) 07:11:27 Go through your ray tracer and count how many control structures you use 07:11:37 And count how many indirect pointers you follow 07:11:53 That's how hard it is to ray-trace on a GPU 07:13:04 Also, you can't ray trace water, since it cannot trace caustics 07:13:46 You need path tracing, photon mapping, or good old textured caustics. Guess which one game developers prefer. 07:14:08 Ray-tracing in games? 07:14:17 I don't follow... unless pre-rendered? 07:14:32 It makes up for their one-dimensional plots. 07:15:07 Wait, are we living in the age of real-time ray-tracing already? 07:15:14 I feel left behind 07:15:17 For some definitions of "age of". 07:15:23 More like edge of 07:16:22 Intel had that "Enemy Territory ray-traced 720p at ~15-30 FPS" demo back in 2008 to showcase the power of their battlestat^W 16-core 3-gigahurts Xeon. 07:16:50 More like building hype for larrabee 07:17:01 Which of course will be available Any Time Now 07:19:34 That was what the Larrabee port of the demo was for; I'm not certain it was the reason for the initial CPU-based demo. But of course who knows. 07:19:42 There's a couple of screenshots at http://en.wikipedia.org/wiki/Quake_Wars:_Ray_Traced 07:20:44 And the video. 07:21:06 I like the floating, reflecting metal speheres they've dropped everywhere. 07:21:18 "Just in case you forgot this was about ray-tracing." 07:21:52 I love looking at ray-traced images 07:22:20 http://code.google.com/p/tokaspt/ 07:23:28 Anyway, the mental-ray stuff is apparently more relevant to the initial question (speeding up offline rendering of actually realistic scenes on the GPU); sadly, it's so proprietary they don't really tell how much use of a GPU they can get. 07:25:27 Lurchtime. 07:32:35 Is Moray 3d modeler considered decent? 07:32:46 I mean, it's in the process of becoming Free 07:33:26 Or, um. That may have been a while ago 07:35:22 Can I just say how pretty http://en.wikipedia.org/wiki/File:Glasses_800_edit.png looks? 07:37:26 Haskell needs moar web application framework/ 07:37:49 oh there's Yesod apparently 07:41:44 aren't there lots 07:42:17 * Sgeo|web wants heroku for Haskell 07:50:09 Erm 07:50:15 [whamlet|Hello World!|] 07:50:21 Is that a Template Haskell thing? 07:50:44 Because lets need more wham. 07:56:06 "One other quick note: you may have noticed that parseRoutes is called with a bit of a strange syntax with the square brackets and pipes. That's because it's a quasi-quoter" 07:56:08 Ah, ok 08:00:20 -!- monqy has quit (Quit: hello). 08:03:38 You need path tracing, photon mapping, or good old textured caustics. Guess which one game developers prefer. <-- which one? 08:03:44 (sorry, was away eating breakfast) 08:05:21 Can I just say how pretty http://en.wikipedia.org/wiki/File:Glasses_800_edit.png looks? <-- old and povray iirc 08:07:04 http://www.dmrdesigns.com.ar/download/Caustic.jpg 08:11:28 Sgeo|web: http://www.luxrender.net/forum/gallery2.php?g2_itemId=211 08:11:55 Jafet, ah 08:12:35 So yeah, those two links sum up video games versus offline rendering 08:12:50 yep 08:24:21 What does Caustic.jpg have to do with anything? 08:24:28 But that gallery is pretty, ty 08:25:05 Ah, LuxRender is an alternative to POV-Ray? 08:25:24 Can someone explain to me what's wrong with POV-Ray? 08:25:35 Besides non-GPL 08:27:03 LuxRender is quite different sort of beast; I'd say it's more an alternative for Radiance. 08:27:20 * Sgeo|web is more confused now 08:27:34 POV-Ray is archaic 08:27:41 I know this from experience 08:28:04 Luxrender is based on pbrt, I think 08:28:19 It is, yes; it's very more physics-inspired than something like POV-Ray. 08:28:25 Is LuxRender scenes not meant to be rendered by humans? 08:28:37 fizzie: by physics, you mean the physics of light? 08:28:53 Now I has a sad knowing that traditional ray-tracing isn't based on that 08:29:10 Ray tracing isn't physically correct, not even to classical optics 08:29:23 Read pbrt for the details 08:29:56 Apparently they've stuck in some GPU acceleration into LuxRender too. 08:30:08 When will we get real-time physics-based rendering? 08:30:22 That's my new standard for when graphics are good 08:30:31 I can render a cornell box in real time, does that count? 08:31:02 Pick what looks good; then extrapolate from the current time to render it + Moore's law. 08:31:58 What looks good now is going to look like crap when the hardware to ray-trace it rolls around. 08:32:45 At least, as long as the deciding factor for video games is graphical porn 08:33:16 Would it be possible to re-render POV-Ray scenes in LuxRender or pbrt? 08:33:33 I mean, I guess I have no idea what the fuck radiosity is, but I assume it has no place in pbrt? 08:34:39 POV-Ray scenes are procedural, while Luxrender scenes are descriptive. 08:34:50 That's what "physically based rendering" means. 08:34:56 POV-Ray scenes... wait what? 08:35:16 How is describing where a box is, for example, procedural? 08:35:19 The POV-Ray scene description language is Turing-complete(ish). 08:35:30 Okay, so you've never used POV-Ray 08:35:35 I'll stop then 08:35:43 I've used it, but only for simple stuff following the tutorial 08:35:51 A long time ago 08:36:10 I think I just want to rerender that Glasses thing in something like LuxRender 08:36:12 >.> 08:36:15 See what it looks like 08:36:26 Surely at least shapes should transfer over 08:36:32 In POV-Ray, you declare archaic early pixar era hacks like bump mapping 08:36:57 Actually pixar already used displacement mapping even then 08:37:12 ...? 08:37:19 * Sgeo|web has no idea what displacement mapping is 08:37:29 * Sgeo|web vaguely gets bump mapping, I think 08:37:41 In other words, you have to tell POV-Ray how to draw the scene. You tell Luxrender what the scene is. 08:37:58 * Jafet wonders how many ways to say the above differently 08:38:59 Surely, things like "box here, sphere there", or whatever, at least are in a sense both how to draw the scene and what the scene is? So not a perfect translation over, but something? 08:39:08 There are some converters from POV-Ray scenes to plain meshes, but they obviously only handle a subset of the possible things. 08:39:44 Scenes aren't merely shapes... 08:40:21 Yes; but you can extract the objects, and then recreate the rest. 08:40:36 You make it sound real simple 08:40:52 What is radiosity, and am I correct that it's an artifact of the fact that POV-Ray fakes it? 08:41:32 In POV-Ray you go "lol light_source { color rgb <0, 0, 1> }"; in Luxrender you give the physical colour and intensity 08:42:10 Why do you say rgb <0,0,1>? That's purely an artifact of how rendering software works. 08:42:27 Physical color == frequencies that are being emitted? 08:43:05 Yes 08:44:09 If I make a Luxrender scene today, and tomorrow everyone decides to accomodate tetrachromates, then my scene can be rerendered to look correct to them, as opposed to a POV-Ray scene which would lose necessary information? 08:45:45 I take it that if you place a sun and rain in Luxrender and position the camera properly, you'd get a rainbow? What would happen in POV-Ray, nothing? 08:46:04 I'm not entirely sure it would go quite *that* far. 08:46:08 Your POV-Ray scene doesn't even specify what colours are used, so your comparison is meaningless 08:46:34 fizzie: http://www.luxrender.net/forum/gallery2.php?g2_itemId=1928 08:46:56 rgb <0,0,1> isn't a colour until you specify the colour space being used 08:47:28 How do mere mortals specify color in Luxrender? 08:47:29 Jafet: Yeah, but that's not a rainbow. Do you think you'd really get a physically correct rainbow if you just put bazillion droplets in the sky. 08:47:30 But since the three components are treated independently, you can ignore them la la la 08:47:48 I mean, let's say, the SUn 08:47:48 Sun 08:48:01 fizzie: hm, think so. If you could wait for it to render. 08:48:20 I've watched an animated film where they rendered diffraction in rain 08:48:25 Lots of frequencies, probably a continuous range with continuously varying strenghts 08:49:04 Sgeo|web: You can specify a blackbody temperature. 08:49:11 Sgeo|web: That's a reasonable approximation for sunlight. 08:49:16 It was very subtle, but visible if you knew it was there 08:49:35 Sgeo|web: See http://www.luxrender.net/wiki/LuxRender_Textures_Spectrum for the different ways how you can specify the spectrum for a light source. 08:52:01 I don't see "arbitrary function" on there, but I guess regular data is close enough 08:52:47 In the luxrender community, iirc "arbitrary function" means you monkey patch it in 08:53:15 ...buh? 08:55:17 patch my-colour-function.patch && make 08:58:05 And here I was thinking that LuxRender is awesome 08:58:59 Jafet, sounds like povray is superior in that regard then. 08:59:29 maybe luxrender is better at other stuff 08:59:55 Yes, not being able to specify a spectrum is certainly superior to having to write a spectrum into an external file outside the scene description and read it from there. 09:00:25 huh? 09:00:44 fizzie, I mean, povray is great for rendering mathematical shapes and so on 09:00:45 You can't specify an "arbitrary function" spectrum for a POV-Ray light. 09:00:46 Perhaps luxrender doesn't trust its users to always pass in a real probability distribution 09:01:14 couldn't it jiggle it until it is one if it isn't? 09:01:23 How could it ever know if it is one? 09:01:37 patch lol-numerical-integration.patch 09:02:31 It can't ever know in the same sense that you can't prove or disprove the afterlife? 09:02:37 Or in a difference sense? 09:02:57 That's pretty much what the "regular data" numerical input is. Just add a thing you give a function to, and a grid specification; then it'll sample that function at those points and use it like it'd use a regular datafile. 09:03:01 Jafet, do you mean real as in "not complex"? 09:03:18 a probability distribution as in integrates to area 1 09:03:18 Uh, how can you know if int_{-\infty}^\infty f(x) dx = 1 09:03:27 For arbitrary f 09:04:00 Sample it at a coarseness of your choice 09:04:05 And then apply a normalizing factor 09:04:08 Can you do arbitrary mathematical surfaces in Luxrender? 09:04:13 And then ditch the samples if you don't need them anymore 09:04:42 Metal marbles on a metal 2d sin-based sheet 09:04:45 ooh 09:04:49 * Sgeo|web imagines 09:05:17 Does it need to be a probability distribution anyway? I don't see anything about normalizing for the regular/irregular numeric data inputs, and the gaussian spectrum an "energy" value too. 09:05:33 Jafet, right 09:06:05 fizzie: those aren't arbitrary, so you can normalize them (I don't know if luxrender does) 09:07:26 Anyway, that's no excuse for not providing an integrated "specify a function, then I'll sample it, as if you would have written those numbers down into an external file" feature. (Not having that much use for one is, though.) 09:08:02 Specify a function in what language 09:08:23 Remember that the function may be called a few billion times 09:09:37 You know, a function. Basic mathematical operations. And I don't see how the calling time matters; it would get sampled once (when it loads the scene), and then treated like it treats the existing "external datafile" things, except you wouldn't need to create such files outside the scene. 09:09:53 I'm not saying there'd be any need for something like that. 09:17:53 Is it feasible to make a LuxRender scene by hand like one might make a POV-Ray scene by hand? 09:19:01 -!- ais523 has joined. 09:19:50 Sgeo|web: It is a human-readable format, so for a simple scene one supposes. It's just that all complicated shapes nowadays tend to be approximated by meshes with lots of triangles, generated using graphical modelling tools. 09:19:54 -!- nooga has joined. 09:21:13 There's a reasonably complicated Blender-to-LuxRender exporter, I tried it out few versions ago. 09:22:03 It tries to (up to some degree) snarf the initial LuxRender-specific material/light/whatever values from the Blender settings. 09:22:12 (Then you can go a twiddle with them.) 09:23:27 E.g. (IIRC) for colors it'll take the RGB values from Blender properties; LuxRender will "generate a physically plausible spectrum based on the desired colour" then. 09:24:13 Does LuxRender take relativity into account? 09:24:23 e.g. can I use it to see what things look like near a blac hole? 09:24:26 >:) 09:24:43 I don't think there's gravity in there. 09:25:24 Or plasma physics 09:25:57 It might be interesting to render scenes in a different space 09:26:19 (generalized lenses) 09:26:20 After all, it's just "physically *based*", not a full universe-simulator like the one we're living in. 09:26:51 How difficult would it be to add it? 09:26:59 As a restricted example, the Portal developers hacked the HL2 engine to get recursive portal rendering 09:27:15 Sgeo|web: why don't you find out by adding it 09:30:43 Portals are such a hack; the developer commentary track goes into some detail about them. 09:30:54 "We achieve the impression of infinite recursion by copying part of the previously rendered frame onto the final portal in the recursive chain." 09:31:11 Also lots about how the physics are faked. 09:31:30 Oh; I thought they actually stuck a recursive renderer in there 09:31:45 I guess that would have led to inconsistent performance 09:31:58 It goes up to 9 (not 11) levels of real recursion. 09:32:14 "Initial implementations of this dynamic collision generation system could take up to one half of one second, or 500 milliseconds, to compute the correct collision. This may not sound like a long time in everyday life, but this pause during portal creation was quite noticeable in the context of the game. Ultimately, we designed a system that creates temporary hybrid physics environments in bubbles around the portals using less accurate collision than that produ 09:32:14 ced by Source's standard collision generation, but was accurate enough in practice and reduced the time to create the dynamic collision representation from 500 milliseconds to just 10 milliseconds, which is an imperceptible pause --" 09:32:39 Collisions across portals? 09:34:07 Well, physics in video games still sucks. Fire at a cardboard box and you get decals 09:35:17 They're quite static, but at least you can throw indestructible, rigid cubes around, and they bounce funnily. 09:38:22 -!- Jafet has changed nick to Tefaj. 09:46:59 -!- derdon has joined. 09:52:19 * Sgeo|web wants to see LuxRender renderings of physically impossible scenes 09:55:03 http://www.luxrender.net/forum/gallery2.php?g2_itemId=18353 those letters seriously look as if they could really have been 3d printed 09:56:29 http://www.luxrender.net/forum/gallery2.php?g2_itemId=17898 ok how in the hell was this picture taken? 10:02:23 Wires, man. 10:02:40 Or magnets. 10:02:46 They do it with mirrors. 10:04:11 Hmm. Wiki says point lights are unphysical. But suppose I wanted my scene to contain a hovering magic light sphere... 10:04:29 A sphere is not a point. 10:04:35 Well, a sphere with radius > 0. 10:05:08 But the sphere emitting lighting emits light in the direction of the normals of the surface, right? 10:05:27 I'm having trouble seeing how adjusting the radius of the sphere would change the lighting 10:06:23 No, it emits light in all directions. 10:06:39 From each point on the surface. 10:06:49 A real sphere, that is. 10:06:55 Well, some of the directions are less important. 10:07:35 "Objects only emit light in the direction that the normals of the object's faces are pointing. For rendering speed it is best to use as few faces as possible on emissive object" 10:07:43 Hmm, maybe I misunderstood that 10:07:55 Sgeo|web: As far as I can deduce, that's just "not backwards at all", perhaps. 10:11:20 For a "normal" sort of lighting fixture you'd usually have an IES profile which specifies the light distribution, even though theoretically speaking you should be able to just specify the internal geometry and the glowing bits, and let the software take care of the rest. 10:11:39 Heh 10:11:51 Well, a light bulb really is like a black body. 10:11:57 * Sgeo|web still doesn't know what IES is, although I saw something about using it for lasers 10:12:18 Tefaj: why heh? And what would be wrong with just specifying the internal geometry? 10:13:20 An incadescent light bulb is black-bodyish; but those are highly illegal here in Europe already, aren't they? A fluorescent lamp spectrum is rather spikier. 10:13:22 Because you run into extremities that are difficult to model, like internal scattering with high light intensity 10:13:49 When the scattering inside the light affects the whole scene, you can't cop out and fake it with a lower-dimensional model 10:14:39 http://en.wikipedia.org/wiki/File:Spectra-Philips_32T8_natural_sunshine_fluorescent_light.svg "natural sunshine" my ass. 10:15:42 -!- ais523 has quit (Ping timeout: 256 seconds). 10:15:43 Not that sunlight under all this air is all blackbodyish either. (http://en.wikipedia.org/wiki/File:Solar_Spectrum.png) 10:16:49 Well, there are worse approximations 10:21:44 So do you get a blue sky out of LuxRender if you plonk a 5500K sphere of radius 700000km in the scene, and then set the camera near the surface of a r=6371km sphere some 150 million km away from the sphere, and then put an atmosphere around that and specify the chemical composition and a density function? :) 10:23:13 (Okay, so there's the "sunsky" environment, but that's a hack.) 10:23:17 -!- ais523 has joined. 10:24:17 I'm not sure how good their volumetric scattering model is 10:24:41 But you can be sure that if it's any good, you're going to need two weeks and a cluster 10:26:16 Night 10:26:54 -!- Tefaj has quit (Quit: Leaving.). 10:27:13 "[A homogenous volume] can also be used as the world volume, which will enable atmospheric scattering." 10:27:19 Apparently it can do something like that. 10:30:06 -!- MichaelBurge has quit (Read error: Connection reset by peer). 10:31:19 "Heterogenous volumes are not currently supported in the new volume system, although they can be used via the old "volumegrid" system if needed. Note that volumegrid does not fully support other LuxRender features such as the bidirectional integrator, and is eventually scheduled to be deprecated and removed once heterogeneous volume support is added to the new object volume system that is documented on this page." 10:31:24 Seems to be a bit under construction. 10:38:59 -!- Phantom_Hoover has joined. 10:59:57 -!- oerjan has joined. 11:07:18 () is completely safe to unsafeCoerce to, as you can't do anything to it, right? 11:07:30 the Any type exists for that purpose. 11:09:17 and its documentation makes me believe unsafeCoerceing to () is _not_ safe from a function type. 11:10:42 04:05:00: where c is a (Num a) => Complex a 11:10:43 04:06:15: er, just Complex a would be fine 11:10:43 04:06:25: since it's a is constrained to RealFloat 11:11:13 no, that is not fine, and is one of the reasons why data type contexts are going away. 11:34:44 -!- derdon has quit (Remote host closed the connection). 11:38:17 -!- Phantom_Hoover has quit (Quit: Leaving). 11:47:49 -!- aloril has quit (Ping timeout: 265 seconds). 11:50:13 -!- aloril has joined. 11:57:45 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 12:05:31 -!- ais523 has quit (Remote host closed the connection). 12:06:30 -!- Madoka-Kaname has quit (Ping timeout: 255 seconds). 12:49:42 -!- Ngevd has joined. 12:50:10 Hello in 10, 9 ... 12:50:16 -!- Jafet has joined. 12:50:16 Hello1 12:50:22 *! 12:50:46 oops the final number got stuck 12:50:52 :P 12:53:56 "ddarius: Well when people say you need a PhD to program Haskell, you can point out that SPJ doesn't have a PhD." 12:54:05 http://contemplatecode.blogspot.com/2011/10/haskell-weekly-news-issue-203.html 13:01:02 -!- ais523 has joined. 13:10:09 I am proud to have written one of the few esoteric programming languages to be proved Turing-Complete by reduction from a Turing machine directly 13:15:33 hm which one, you already have a bit of a list there... 13:15:39 Luigi 13:19:16 hmm, was it K or R of K&R who invented hello world? 13:19:38 (R is now, unfortunately, dead) 13:19:55 K, I believe 13:21:09 Quoth wikipedia 13:21:11 "The example program from that book prints "hello, world" (without capital letters or exclamation mark), and was inherited from a 1974 Bell Laboratories internal memorandum by Brian Kernighan, Programming in C: A Tutorial, which contains the first known version:" 13:21:33 "The first known instance of the usage of the words "hello" and "world" together in computer literature occurred earlier, in Kernighan's 1972 Tutorial Introduction to the Language B,[1] with the following code:" 13:21:49 hmm, good to know 13:22:41 He is the only person to go down in history for writing a four line program in a memo 13:22:52 To my admitably lacking knowledge 13:29:35 -!- Madoka-Kaname has joined. 13:32:55 hmm, http://colinm.org/language_checklist.html is very upvoted on proggit 13:33:02 can we write an esolang that checks /every/ box? 13:33:44 Hmm... 13:33:51 probably not, some contradict each other 13:34:18 As many as possible. then 13:34:37 [ ] You have reinvented Brainfuck but non-ironically 13:35:05 this thing seems to handle esolangs pretty well too 13:35:52 oh, fun GLR-parsable grammar I was considering: operator precedence is chosen to make the expression type correctly 13:36:05 e.g. string_of_int 2 + 2 = string_of_int (2 + 2) 13:36:15 but string_of_int 2 + "a" = (string_of_int 2) + "a" 13:36:42 Sounds intresting 13:36:50 it'd be good for golfing, but loses basically all the benefits of static typing 13:37:10 I may make Uniquode actually usable 13:37:55 it'll probably end up with a usable subset just by chance 13:38:01 probably several hundred of them, actually 13:38:30 It'd be an exercise to the programmer to decide what's the best to use 13:40:04 ais523: i think oklopol already invented something like that 13:40:11 I suggest you embed MAGENTA 13:40:13 /all/ of it 13:40:22 wow, I get an uneasy feeling just looking at its name 13:40:56 it's the fnord between the G and E 13:41:52 aha, that would explain it 13:44:39 -!- oerjan has quit (Quit: Latefnordr). 13:45:42 -!- Phantom_Hoover has joined. 13:46:17 Should Uniquode memory be typed or untyped? 13:46:19 Or both? 13:46:27 both, obviously 13:46:37 >:D 13:46:51 both ADT-style and Visual Basic Variant-style 13:46:56 for the both 13:48:10 Hey, Google Wave still exist 13:48:12 s 13:53:10 I think functions would have to be numerated rather than named 13:56:57 hey, what's the Windows equivalent of ls -R? 13:57:14 it's going to be dir /something, presumably 13:59:17 oh right, I forgot just how bad Windows cmd sucks; it's not dir, it's tree /f, and it puts garbage at the starts of lines 13:59:18 dir /S? 13:59:50 aha, it is /s 14:00:07 dir /B /S 14:00:24 Those letters were chosen because they represent Windows best 14:07:54 XSL S and K potentially complete! 14:08:10 Do they work? 14:08:14 Haven't tried 14:16:27 * Phantom_Hoover notes that Wikipedia's coverage of Sheldrake has improved considerably since last he checked. 14:19:30 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:20:25 Doesn't work 14:20:33 Have an idea why 14:21:11 If I say "./s[position()=2]", does it give the second s, or the second element if it is an s 14:21:26 -!- MSleep has changed nick to MDude. 14:21:49 I'm really having a hard time believing that it's this convoluted. 14:22:27 Found out why it's wrong 14:41:09 -!- copumpkin has joined. 15:15:08 -!- augur has quit (Remote host closed the connection). 15:33:47 -!- DH____ has quit (Read error: Connection reset by peer). 15:43:18 -!- hagb4rd has quit (Ping timeout: 248 seconds). 15:47:33 -!- monqy has joined. 15:51:38 -!- Jafet has quit (Quit: Leaving.). 15:52:29 -!- augur has joined. 16:29:26 -!- zzo38 has joined. 16:38:47 -!- Ngevd has quit (Read error: Connection reset by peer). 16:50:30 -!- Vorpal has quit (Ping timeout: 248 seconds). 16:52:33 -!- elliott has joined. 16:53:02 ais523: K-lines can be automatic nowadays, I think 16:53:02 elliott: You have 3 new messages. '/msg lambdabot @messages' to read them. 16:53:21 elliott: they always have been able to be automatic, IIRC 16:53:27 but that still doesn't explain why it happened to quintopia 16:53:31 @messages 16:53:31 You don't have any new messages. 16:53:34 :( 16:53:40 ais523: you misused lambdabot 16:53:56 the messages delivered by lambdabot are generally better than those delivered by Rodney or heptagram 16:53:59 ais523: and, well, yes, but I mean quintopia might have been banned by software because it thought he was a malicious bot, say 16:54:16 joining too many channels in rapid succession, or something, perhaps 16:55:17 ais523: anyway, you can hardly expect to get messages if you violate the usage instructions 16:55:33 elliott: hey, those instructions were to /you/ 16:55:44 heh 16:55:54 CakeProphet said 12h 26m 47s ago: TODO: convince Gregor to put ghc and runhaskell on hackego 16:55:58 Hey Gregor, do that thing you already did. 16:56:42 21:20:49: Phantom_Hoover: what is functional minimalism done right? 16:56:42 21:21:05: rapido, Lazy K. 16:56:49 Phantom_Hoover: well I dunno, its IO model is not very nice. 16:56:55 21:24:54: diversion: anyone into K (or Q) from kxsystems - the only commercial esoteric language out there? 16:57:02 I like K but I like J more 16:57:12 BANCStar! 16:57:29 elliott, erm, what's wrong with Lazy K's IO? 16:57:38 Phantom_Hoover: it's equivalent to haskell lazy io 16:57:54 it depends crucially on evaluation order for any kind of interactivity 16:57:59 "Not being a system under active research" is not a valid wrongness. 16:58:00 it's kind of gross and impure in that way 16:58:04 Phantom_Hoover: what 16:58:12 i'm talking about getContents 16:58:39 I'm assuming that were I to ask what you'd use instead you'd say FRP. 16:59:04 frp doesn't even deal with console-based io, so obviously you don't actually know what you're talking about 16:59:17 01:52:14: Dennis Ritchie apparently died recently 16:59:17 02:05:04: RIP Dennis Ritchie :( 16:59:17 huh, he wasn't that old... 16:59:35 Of course I don't know what I'm talking about. 17:00:02 Phantom_Hoover: So stop making assumptions. 17:00:10 elliott, why. 17:00:20 Phantom_Hoover: Because you just look like an idiot? 17:01:04 03:50:18: () is completely safe to unsafeCoerce to, as you can't do anything to it, right? 17:01:09 Madoka-Kaname: yes you can, you can coerce it 17:01:09 erm 17:01:13 Madoka-Kaname: yes you can, you can force it 17:01:32 Madoka-Kaname: and that isn't a valid metric for determining whether unsafeCoerce is safe, anyway. 17:02:43 what about unsafeCoercing it back to the original type? 17:02:47 `rm bin/runperl 17:02:53 No output. 17:02:58 run prefix is gross 17:03:27 ais523: 17:03:28 The function unsafeCoerce# allows you to side-step the typechecker entirely. That is, it allows you to coerce any type into any other type. If you use this function, you had better get it right, otherwise segmentation faults await. It is generally used when you want to write a program that you know is well-typed, but where Haskell's type system is not expressive enough to prove that it is well typed. 17:03:28 The following uses of unsafeCoerce# are supposed to work (i.e. not lead to spurious compile-time or run-time crashes): 17:03:28 Casting any lifted type to Any 17:03:30 Casting Any back to the real type 17:03:32 Casting an unboxed type to another unboxed type of the same size (but not coercions between floating-point and integral types) 17:03:35 Casting between two types that have the same runtime representation. One case is when the two types differ only in "phantom" type parameters, for example Ptr Int to Ptr Float, or [Int] to [Float] when the list is known to be empty. Also, a newtype of a type T has the same representation at runtime as T. 17:03:39 Other uses of unsafeCoerce# are undefined. In particular, you should not use unsafeCoerce# to cast a T to an algebraic data type D, unless T is also an algebraic data type. For example, do not cast Int->Int to Bool, even if you later cast that Bool back to Int->Int before applying it. The reasons have to do with GHC's internal representation details (for the congnoscenti, data values can be entered but function closures cannot). If you want a saf 17:03:44 e type to cast things to, use Any, which is not an algebraic data type. 17:03:46 those are GHC's guarantees 17:04:05 05:07:45: Um, I can't imagine Python working really all that well when only given one line 17:04:11 Sgeo|web: this is why I wrote braces 17:06:07 `url bin/haskell 17:06:09 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/haskell 17:06:19 ugh, that needs improvement 17:06:30 actually wait just use egobot 17:07:39 which isn't here 17:08:42 oi Gregor 17:09:28 06:47:13: fizzie: if I use a different frontend to manage the db in the future will that conflict with the Django API? 17:09:28 06:47:19: like pgadmin 17:09:28 06:47:49: Depends on whether you mess with the tables or not. It won't of course understand the Django object format, so you need to be slightly careful. 17:09:32 fizzie: What django object format? 17:09:38 There's no serialisation or anything. 17:09:43 06:48:10: Django can autogenerate a database web-admin interface directly from the Python models if you like. 17:09:44 06:48:19: It's... not perfect, but passable. 17:09:44 06:48:24: Looks fancy, anyway. 17:09:53 fizzie: You're meant to customise it with the meta-object stuff. 17:10:22 fizzie: (It was created to be used as the admin interface in the large project that Django was abstracted from, so it's meant to be able to be pretty good.) 17:10:27 06:48:55: The objects tend to be serialized in a "sensible" way IIRC, so it's possible to edit things "manually" too. 17:10:37 fizzie: It's not serialisation, it just maps it to a schema. 17:10:47 It doesn't even serialise arbitrary Python objects, you have to tell it the schema. 17:10:59 06:49:41: http://jacobian.org/writing/django-performance-tips/ says "Use PostgreSQL: I’ll probably get lots of push-back from the MySQL community about this one, but in my experience PostgreSQL is much faster than MySQL in nearly every case." but that's just a random web-page. 17:11:05 fizzie: By one of the lead Django developers. 17:12:28 ais523: You need to crush Vorpal's dreams, I think. 17:12:41 elliott: of what/ 17:12:51 ais523: GPU raytracing as a panacea. 17:12:57 07:11:27: Go through your ray tracer and count how many control structures you use 17:12:57 07:11:37: And count how many indirect pointers you follow 17:12:57 07:11:53: That's how hard it is to ray-trace on a GPU 17:12:57 07:13:04: Also, you can't ray trace water, since it cannot trace caustics 17:12:57 07:13:46: You need path tracing, photon mapping, or good old textured caustics. Guess which one game developers prefer. 17:12:58 Damn, beaten to it. 17:13:33 07:16:50: More like building hype for larrabee 17:13:34 07:17:01: Which of course will be available Any Time Now 17:13:41 Larabee was explicitly cancelled. 17:14:25 http://upload.wikimedia.org/wikipedia/en/f/fe/Wolf_chand1.png The power of raytracing. 17:15:55 07:37:26: Haskell needs moar web application framework/ 17:15:58 CakeProphet: There are about fifty. 17:21:36 08:44:09: If I make a Luxrender scene today, and tomorrow everyone decides to accomodate tetrachromates, then my scene can be rerendered to look correct to them, as opposed to a POV-Ray scene which would lose necessary information? 17:21:36 tetrachromates, n. tetrachomats who are you are mates with. 17:22:26 08:47:29: Jafet: Yeah, but that's not a rainbow. Do you think you'd really get a physically correct rainbow if you just put bazillion droplets in the sky. 17:22:26 If you waited long enough! 17:24:19 09:01:14: couldn't it jiggle it until it is one if it isn't? 17:24:19 09:01:23: How could it ever know if it is one? 17:24:19 09:01:37: patch lol-numerical-integration.patch 17:24:19 09:02:31: It can't ever know in the same sense that you can't prove or disprove the afterlife? 17:24:19 09:02:37: Or in a difference sense? 17:24:26 Patashu discovers that not all propositions are decidable. 17:28:35 10:21:44: So do you get a blue sky out of LuxRender if you plonk a 5500K sphere of radius 700000km in the scene, and then set the camera near the surface of a r=6371km sphere some 150 million km away from the sphere, and then put an atmosphere around that and specify the chemical composition and a density function? :) 17:28:37 fizzie: I really hope so. 17:38:12 Is there a spell in Dungeons&Dragons that makes the sun rise in the south? 17:38:57 tetrachromates, n. tetrachomats who are you are mates with. 17:39:04 zzo38: I think some DMs would let you do that with wish/miracle 17:39:09 Please keep your fantasies out of this channel. 17:39:10 probably not all of them 17:39:39 Phantom_Hoover: I'm sorry but Sgeo|web was already talking about his true love (obsolete raytracing). 17:40:13 ais523: OK. Although that was something found in some book my character had; the phrase "the sun rises in the south" was torn out so that I could use it to notify someone. 17:40:42 zzo38: there are probably easier ways to notify people than actually moving the position of the sun 17:41:08 ais523: I did not move the position of the sun. 17:41:35 I had nothing to write with, so tore that phrase out of the book, tied it to a rock, and threw it through a window (which I could not get near due to a magical fog). 17:42:31 (The window was north of my position) 17:42:53 -!- zzo38 has quit (Remote host closed the connection). 17:48:55 Tell that to Notch 17:54:12 -!- vco has joined. 17:58:02 hi vco 17:58:03 `? welcome 17:58:05 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 17:58:46 -!- vco has quit (Ping timeout: 252 seconds). 17:58:59 bye vco 18:00:51 lol 18:23:30 "Now the complete sequence of Yersinia pestis, the most likely cause of the Black Death, has been unearthed from a medieval mass grave in London." 18:23:40 Damn, and I even postponed the construction of my bunker. 18:25:34 Dude, Y. pestis is endemic to Britain. 18:26:27 Phantom_Hoover: It was a joke, you know. 18:26:44 Yes? 18:27:59 apparently, it can also be cured trivially with modern medicine 18:28:13 which isn't surprising, given that it isn't around nowadays and so hasn't had much of a chance to evolve antibiotic resistance 18:28:45 They should do an experiment to find out what happens if you breed it intensely for antibiotic resistance and then put it into the water supply of every major city. 18:29:06 -!- augur has quit (Remote host closed the connection). 18:29:41 elliott, could work for a biology investigation (did 18:29:54 I mention my dwarven chemistry investigation it is the best.) 18:30:06 -!- Ngevd has joined. 18:30:17 Actually wait, I have a better experiment idea: 18:30:20 Hello! 18:30:22 They should find out what happens if you kill everyone. 18:31:40 I need to work out why identifying automatically is misconfigured on this client 18:32:09 You need a better client; also to learn you some XML. 18:32:37 It tries to, it just gets it wrong 18:33:15 Ngevd: How do you have it set up. 18:33:24 Stop using that thing. 18:33:26 With my password in the password box 18:33:30 I need it! 18:33:35 Why. 18:33:36 For my visual basic developement! 18:33:44 http://code.google.com/p/xchat-wdk/ 18:33:53 I REFUUU- wait 18:34:02 XChat exists for windows? 18:34:11 >_< 18:34:26 Why did no-one tell me! 18:34:29 We did. 18:34:35 You ignored us and kept using that piece of crap. 18:34:40 :P 18:34:42 Really? 18:34:46 Well, I did at least. 18:34:49 That was that Taneb guy, I bet 18:34:50 Or at least I think I did. 18:34:54 Nobody told /me/ 18:35:05 Well, this is true. 18:35:15 -!- Ngevd has changed nick to Taneb|Hovercraft. 18:35:22 Nobody told me either 18:36:16 Nobody told me that Windows exists. 18:36:50 So you're an afenestrist? 18:37:54 I'd like to defenestrate every software fenestrist. 18:39:40 -!- Taneb|Hovercraft has quit (Quit: client experimentation). 18:40:00 -!- Ngevd has joined. 18:41:34 -!- derdon has joined. 18:41:46 Hello! 18:56:38 . 18:56:50 Is XChat-wdk better than Silverex? 18:57:23 Supposedly. 19:06:10 -!- Sgeo|web has quit (Ping timeout: 252 seconds). 19:07:07 -!- Sgeo|web has joined. 19:07:08 -!- augur has joined. 19:30:06 -!- tiffany has joined. 19:30:52 -!- nooga has quit (Ping timeout: 258 seconds). 19:40:05 -!- Slereah_ has joined. 19:48:43 -!- Sgeo|web has quit (Ping timeout: 252 seconds). 19:51:04 -!- oerjan has joined. 19:51:47 hi oerjan 19:52:17 Hello oerjan! 19:52:36 good evening oerjan! 19:52:42 wait, am i doing it wrong 19:52:54 :'( 19:53:05 * oerjan hugs elliott 19:53:22 good evening, everyone in appropriate timezones! 19:53:22 wrongness 19:53:23 is bad 19:53:37 "Thumbs up if you're watching in 2O11 :)" — YouTube comment. 19:53:41 likewise, good morning and good afternoon! 19:53:43 It has 38 thumbs up. 19:53:45 2O11 19:53:51 Phantom_Hoover: with how many views? 19:54:02 1.1e6. 19:54:02 elliott: oh, that's YouTube's fault, it randomly distorts numbers 19:54:11 ais523: umm, are you sure 19:54:11 Phantom_Hoover: ...how old is the comment? 19:54:11 /why/, I don't know 19:54:17 2 months. 19:54:27 Phantom_Hoover: bah 19:54:28 ais523: probably to break spam links 19:54:35 elliott: yes, I think that's the reason 19:54:40 It's going to look stupid in two and a half months 19:54:42 I don't know how it happened, but it cannot be a bad sign that YouTube comments have hit their nadir. 19:55:06 Phantom_Hoover: optimist! 19:55:32 I've seen some great YouTube comments 19:55:35 Ngevd, nah, then everyone'll reminisce about how 2011 was so much better than 2012, thumbs up if you agree. 19:55:39 admittedly, most of them were self-parody 19:56:05 thumbs up if you have thumbs 19:56:13 ais523, but they are far outweighed by the terrible ones and the ultra-blatant karma whoring, which is all the more hilarious given that YouTube doesn't even /have/ a karma system AFAIK. 19:56:19 (probably done) 19:56:52 Phantom_Hoover: it indirectly does; having your comment in the "most popular comments" makes it more likely people will click on your username, deliberately or accidentally 19:56:58 which then increases the number of views to your channel 19:57:05 which indirectly increases the number of views to your videos 19:57:42 Phantom_Hoover: To be fair, reddit barely has a karma system. 19:57:48 Beyond extremes, it has literally no effect beyond being displayed. 19:58:02 but it's a number! that goes up indefinitely! 19:58:17 Slashdot's has a cap to try to stop people karma-whoring, but they do it anyway 19:58:20 ais523: it can go down, too 19:58:27 elliott, it is at least compiled into a single number. 19:58:28 yes, but on average it goes up 19:58:32 But one thing's for sure, Phantom_Hoover's will never, ever surpass mine. 19:58:40 That is the Law of Karma. 19:58:40 is yours currently positive? 19:58:48 ISTR you have had comments at negative values before 19:58:52 elliott, you know how I said it was over 2000 yesterday, it passed 2100 today. 19:59:01 ais523: Yes, I have, but I've been around long enough that it's pretty high. 19:59:13 (My comment karma is 6,233; my link karma is 1,769 and never changes because I never submit links.) 19:59:21 ais523, in other news, stars not fallen, pope is still a catholic. 20:00:54 ais523, haven't /you/ had comments at negative karma, despite having like 10? 20:01:13 Phantom_Hoover: I thought all mine were on positives, but I'm not sure 20:01:22 hey, how do you type smart quotes? 20:01:37 compose-`` doesn't seem to work 20:01:43 can you get them with altgr? 20:01:49 ais523: {" and "} or something for compose 20:01:52 grep the files 20:01:56 you can get them with altgr but I never remember how 20:01:59 sgeo has become a doctor who fan oh no 20:02:01 "" 20:02:06 seems to be {" }" 20:02:26 wait, no 20:02:30 that's just regular quotes 20:02:41 * Phantom_Hoover checks if ais' comments work when sorted by top, notes that they do not. 20:02:44 aha, altgr-v altgr-b 20:02:45 Phantom_Hoover: well it should be old enough 20:03:01 Phantom_Hoover: "Work"? 20:03:27 elliott, mine didn't work when you sorted them that way, so it must be spreading. 20:03:37 They just appear the same. 20:05:28 you know what Evolution needs? a "mark as handled" flag 20:05:32 a state more read than read 20:05:42 ais523: that's called Archive 20:05:47 (in all implementations I know of it) 20:06:00 ah, hmm, that would remove it from my inbox 20:06:07 ais523: yes, until someone sends another mail in that thread 20:06:08 but I still like the chronological view of everything with no threading 20:06:19 ais523, for a second I thought you were talking about biological evolution. 20:06:19 well, that's what All Mail is for 20:06:21 (or equivalent) 20:06:22 wait, /thread/? this has to be per-message 20:06:27 ais523: why? 20:06:33 because I might have handled some messages in a thread but not others 20:06:48 ais523: then it should be two threads 20:06:57 elliott: tell that to the people /sending the emails/ 20:07:21 ais523: Well, it's not exactly burdensome to have a few additional messages visible until you handle them all. 20:07:31 Unless you have pathological threads that constitute ten thousand things to handle. 20:07:32 elliott: it's not to do with visibility 20:07:38 it's to do with /knowing whether I've handled them/ 20:07:47 I don't care if they stay visible; in fact I want them to 20:07:55 and in fact, most of the messages I care about flagging are all in the same thread 20:08:04 ais523: Well, it's not exactly burdensome to have a few additional messages not-marked-as-handled until you handle them all. 20:08:09 Come on, assume a vaguely charitable interpretation. 20:08:11 because students have a habit of just hitting "reply" to an arbitrary message authored by the right person 20:08:16 elliott: I'm trying to handle each of them exactly ones 20:08:17 *once 20:08:31 I mean if it's thread-based. 20:08:43 well, I don't want it to be thread-based 20:09:00 I was just justifying it being thread-based. You're arguing like zzo. 20:09:00 I generally find threading to be really awkward because it takes the messages out of chronological order 20:09:19 and it's much easier to mentally reconstruct the threading (which is obvious from the content of the email) than the timing (which isn't) 20:38:45 -!- ais523 has quit (Remote host closed the connection). 20:44:40 Nooo Programming in the 21st Century redesigned I cannot deal with change. 20:46:22 well go to Programming in the 20th Century, then 20:46:37 :D 20:47:26 Programming in the Seventeenth Century 20:47:47 * oerjan accidentally discovers there's a hexham in new south wales 20:48:09 while stalking LTDave from the iwc forum, no less 20:48:16 There's one in Victoria too 20:49:57 (it's mentioned in the wikipedia page for the location on his profile) 20:50:52 it's only fair, since he was talking about stalking DMM 20:52:11 leibniz made a calculating machine about then, didn't he 20:52:22 (17th century) 20:54:31 "Hexham is a suburb of the city of Newcastle, about 15 kilometres (9 mi) inland from Newcastle in [...]" 20:55:08 Very Liebniz 20:55:22 oerjan: You're kidding me. 20:55:43 http://maps.google.co.uk/maps?q=Hexham,+Victoria,+Australia&hl=en&ll=-37.996163,142.69043&spn=2.454485,5.410767&sll=53.800651,-4.064941&sspn=14.745606,43.286133&vpsrc=6&hnear=Hexham+Victoria,+Australia&t=m&z=8 20:56:06 elliott: it's a direct wikipedia quote. 20:56:10 oerjan: I know augh. 20:56:19 The mosquito species Ochlerotatus alternans is common in the area and adults, famed for their size and ferocity, are referred to as "Hexham Greys".[9] The most famous Hexham Grey is "Ossie the Mossie", (sometimes spelled as "Ozzie the Mozzie") a large model of a mosquito that sits atop the Hexham Bowling Club sign at the corner of the Pacific Highway and Old Maitland Road in Hexham.[10] The previous "Ossie" was replaced with a new "Ossie" (pictur 20:56:19 ed) in 2005.[11] Ozzie disappeared from the sign in early February 2010 and was replaced in April 2010 20:56:58 -!- Patashu has joined. 20:57:06 ...We have a bowling club 20:57:32 There are two esolangers in Hexham 20:57:38 There are three Hexhams in the world 20:57:57 mind you LTDave isn't actually from hexham, just close 20:58:06 afaict 20:58:10 Ngevd: I refuse to believe that there are any esolangers in any other Hexhams of the world. 20:58:52 Does anyone know how to ask Google Maps to tell me about all the Hexhams it knows? 20:58:55 It knows at least three, after all. 20:59:06 http://en.wikipedia.org/wiki/Hexham_(disambiguation) just lists us plus the two Australian towns. 20:59:12 I think it's exactly thee 20:59:14 *three 20:59:56 Sigh. OK, who's going to go down there and ask them for their esolangers? 21:00:13 I nominate itidus20 21:00:38 -!- Nisstyre has quit (Ping timeout: 248 seconds). 21:00:46 hm he hasn't been here in a while, has he? 21:01:01 Future me wrote an IM in Feather 21:01:02 Has he been here since Phantom_Hoover found those videos of him. 21:01:14 wat 21:01:31 oerjan: he posted a YouTube video and PH looked at the other videos on the channel and that was when we found the glory of instant coffee. 21:03:10 Oh man, the instant coffee. 21:06:41 -!- Nisstyre has joined. 21:16:25 -!- Ngevd has quit (Quit: I'm a cuboid!). 21:28:33 oerjan: Hey, tell me why Data.Sequence doesn't export its finger tree implementation. 21:30:20 it's not quite generic, iirc it is specialized to Int weights 21:31:56 so it's more of a use case than a general finger tree 21:35:21 lol hi gaiz 21:35:59 i recall i tried genuine Data.FingerTree for http://oerjan.nvg.org/esoteric/Dupdog.hs 21:36:33 (i didn't like Int making it size limited.) 21:36:33 http://www.ebay.com/itm/ZEISS-EM-109-ELECTRON-MICROSCOPE-COMPLETE-AND-GREAT-CONDITION-/280753510541?pt=LH_DefaultDomain_0&hash=item415e36988d 21:36:46 oerjan: lol dupdog. 21:36:48 best language. 21:36:52 I live in a world where $500 is a reasonable price for an electron microscope what 21:37:07 I've considered creating a new language based on dupdog, but I have absolutely no idea how to make it interesting. 21:37:50 Pierogi are of an unknown origin. Myth has it that were invented in the kitchen of humble shoemaker Jonathan Hanigosky. He later died from choking on a rather large perogi. 21:39:13 i'm not convinced that haskell file could possibly compile, i'm using FingerTree unqualified... 21:39:57 I made some of these things today. I now desire more delicious eastern European food. 21:40:10 also, pierogi would be a good esolang. I think 21:40:20 (just to make this train of thought on topic, you know) 21:40:20 oh wait it's not imported qualified 21:40:27 back 21:40:28 Strax is a good name, but I lent it to elliott. 21:40:31 it's not quite generic, iirc it is specialized to Int weights 21:40:35 oerjan: yes but my weights are Ints :P 21:40:42 http://hackage.haskell.org/packages/archive/fingertree/0.0.1.0/doc/html/Data-FingerTree.html has generic finger trees, but dammit I want the specialised version 21:41:14 elliott: couldn't you SPECIALISE it? 21:41:26 does Haskell also accept SPECIALIZE? 21:43:36 huh, so ruskie apparently means dumpling. But is also American slang for a Russian? wat? 21:44:07 Russkie is slang for Russian. 21:44:45 ah okay 21:45:35 okay so... the question for improving upon the concept of dupdog is. 21:45:47 -!- Sgeo|web has joined. 21:45:49 what kinds of source code transformations can one do that resule in meaningful data / control flow changes. 21:45:50 Ooooh http://hackage.haskell.org/trac/haskell-prime/wiki/TypeDirectedNameResolution 21:45:54 *result 21:45:58 -!- Nisstyre has quit (Ping timeout: 248 seconds). 21:46:44 Sgeo|web: You don't even know Haskell, you have no right getting excited about proposals. 21:47:13 I think TypeDirectedNameResolution is kind of bad actually. 21:47:26 elliott, he doesn't? 21:47:28 I haven't read it yet, just the problem it's supposed to solve >.> 21:47:59 -!- Nisstyre has joined. 21:49:36 Phantom_Hoover: He took about half an hour to write a program to concatenate the files named in the argument list. 21:50:01 Phantom_Hoover: I haven't seen any indication that he's written any Haskell program that isn't hello world, either. 21:50:11 elliott: I wrote a BF interpreter once 21:50:17 elliott, so wait, even when he was a linguistic Casanova, he didn't bother to learn Haskell? 21:50:21 Sgeo|web: You think you could replicate that? 21:50:33 I haven't written a BF interpreter in Haskell. 21:50:45 Phantom_Hoover: Every time I tell him to learn it instead of whatever he's considering he says he wants something he can use ~practically~ not something MEGA-MATHEMATICAL that would ~~blow his mind~~. 21:50:45 I have actually tried, but I gave up. 21:50:48 mainly because it doesn't really change anything except for making qualified names a little more convenient via a OO-like syntax, and adds yet another usage for the . lexeme 21:50:56 (If he objects to this I'll find a quote saying almost exactly that in the logs.) 21:51:04 elliott, I fear you are going to fall into a well of ~s. 21:51:07 oerjan: Anyway it still sucks that it isn't exported. 21:51:09 Phantom_Hoover: ~~~~~~~~~~````````` 21:51:17 * Phantom_Hoover shoots elliott. 21:51:29 * CakeProphet has a bf interpreter. 21:51:33 elliott: surely that's only for Ruby... 21:51:37 That I said that 21:51:39 probably the only meaningful Haskell program I've written, honestly. 21:51:41 * Phantom_Hoover shoots CakeProphet's BF interpreter. 21:51:49 Phantom_Hoover: but but... it's so good. 21:52:02 actually it's probably not that great. 21:52:13 but it does use (wait for it) A ZIPPER 21:52:17 CakeProphet, doesn't matter, you may now pick a random point in the file and put the word 'bullet' in it. 21:52:25 with.... HIGHER-ORDER FUCTIONS ON THE ZIPPER. -gasp- 21:52:31 oerjan: are you sure that FingerTree isn't the one I linked to? 21:52:32 in dupdog 21:52:44 CakeProphet: A zipper is the obvious way to do a BF tape. 21:52:49 yes I know. 21:52:51 thus why I used it. 21:52:56 there is nothing extraordinary about the choice. 21:53:11 elliott: i would assume it is... 21:53:12 * Sgeo|web for some reason has the currently pointed value be separate from either list 21:53:24 Sgeo|web: hey so do I. 21:53:34 oerjan: you said you wrote it 21:53:42 elliott: no i didn't 21:53:58 oerjan: oh "i tried" ok 21:54:18 I would think that an efficient dupdog interpreter is actually somewhat difficult. 21:54:19 oerjan: maybe I should just write my own finger trees 21:54:22 what with all the reversing and doubling. 21:54:36 reversing just changes which end you index from. 21:54:52 ah yes you could use a bunch of state... 21:54:55 CakeProphet: my alternative idea would have been using ropes 21:54:58 exactly one bit of state. 21:55:07 oerjan: that's what _I'm_ trying to write 21:55:14 oerjan: except ropes still have O(n) reversing 21:55:15 elliott: well no you can use state also for the character translations. 21:55:29 elliott: well of course with a direction bit 21:55:31 since I believe they rotate. 21:55:45 Is there a functional data structure that has O(1) access to both ends and less efficient access in the middle? 21:55:58 Sgeo|web: yes, finger trees 21:56:00 Sgeo|web: yes, finger trees 21:56:02 aka Data.Sequence 21:56:05 aka functional lists 21:56:11 (list as in python list or whatever) 21:56:31 sort of. 21:56:32 I kind of wish Seqs were lazy somehow :) 21:56:43 that sounds 21:56:46 counter-intuitive. 21:56:50 oh wait 21:56:53 I thought you meant seq 21:56:58 like some kind of weird Seq structure 21:57:06 nevermind. :P 21:57:44 elliott: how do you feel about TDNR? 21:58:17 it just kind of looks like a terrible hack to get some OO-style syntax to me. 21:58:27 I've already argued with you about TDNR so don't. 21:58:38 oh you approve of it. okay. 21:58:56 Never said that. 21:59:14 not much to argue about then if we agree.... 21:59:39 elliott: i am wondering if Data.FingerTree is lazy enough for my Dupdog.hs to actually work efficiently on huge duplications 21:59:55 that was the intent of not using Int, but... 22:00:04 hmmmmmmmmmmmmm 22:01:05 I'm trying to figure how to make a loop entirely out of source code transformations. 22:01:26 to quine, or not to quine 22:01:58 CakeProphet: see SMITH 22:02:45 incidentally, i don't think anyone has proved dupdog conclusively non-tc 22:02:59 ...I don't see how it could be TC. 22:03:12 ...that's not a proof >:P 22:03:16 well sure. 22:03:22 CakeProphet: we said the same about ():^ 22:03:35 that man has a nose on his forehead. 22:04:11 how does one prove something non-TC? 22:04:20 tc xs [] = xs; tc xs (Push x:ps) = tc (x:xs) ps; tc (x:xs) (Dup:ps) = tc (x:x:xs) ps; tc (x:xs) (Call:ps) = tc (tc xs x) ps 22:04:22 Turing-complete. 22:04:34 (given data Ins = Push [Ins] | Dup | Call) 22:05:00 well there is technically unbounded memory in that you can just duplicate everything a lot. 22:05:08 as long as you want. 22:05:31 CakeProphet: (My "tc" interpreter has been proved Turing-complete.) 22:05:37 Well. It attempts to implement a language formally proven TC. 22:06:24 and then mfit-? is a conditional 22:06:28 CakeProphet: Anyway, Dupdog has a way to make the program "larger", which is a kind of control structure, and it has a conditional. 22:06:37 It also has another kind of control (reverse). 22:06:40 a no-op would probably be helpful for getting precise control. 22:07:04 but there are no no-ops. everything does something. 22:08:06 oerjan: anyway I don't really want to use the fingertree package because (a) it uses fundeps in a way that should really be type families and (b) I bet it's less tuned than the Data.Sequence specialisation that would work for me :P 22:08:26 oerjan: (I want to create a rope type based on a finger tree of UTF-8 bytestrings, because Text is disappointing in its internals) 22:10:56 * Phantom_Hoover → sleep 22:10:57 -!- Phantom_Hoover has quit (Quit: Leaving). 22:11:01 i'm not sure what operations ropes are supposed to have, in particular what you don't get from Seq 22:11:01 you should call them ElliottCables 22:11:24 oerjan: Seq Char would give me the same operations, but be ridiculously inefficient 22:11:28 oerjan: in terms of memory usage, at least 22:11:40 oerjan: which is why ropes use packed arrays at the leaves 22:12:05 oh. so you actually _don't_ want Seq, because you don't want the default valuation of 1 for each leaf 22:12:05 Obviously (Seq ByteString) doesn't work because the length of the ByteString (in _codepoints_ once decoded) contributes to length, indexing, etc. 22:12:45 oerjan: Right. 22:13:11 so even if it _did_ export its data structure, it wouldn't help. 22:13:18 oerjan: er are you sure 22:13:28 class Sized a where 22:13:28 size :: a -> Int 22:13:31 --Data.Sequence source 22:13:40 huh 22:14:24 wtf did i have to let windows install an update right now 22:14:29 I'm not actually sure what the 22:14:29 data Digit a 22:14:29 = One a 22:14:29 | Two a a 22:14:31 | Three a a a 22:14:33 | Four a a a a 22:14:35 thing is about though 22:14:47 for fingertrees? 22:15:01 elliott: link to Data.Sequence source please 22:15:02 read the fingertree paper 22:15:23 copumpkin: I probably should, but I swear I've implemented them without that before :-P 22:15:27 oerjan: http://www.haskell.org/ghc/docs/latest/html/libraries/containers/src/Data-Sequence.html 22:16:42 thanks 22:19:45 huh indeed the Elem type is what enforces size 1 22:22:57 Is it possible to fix shitty third party peripherals? I have a rock band drum kit that works perfectly...until you decide to play faster than 10 notes per second. Then it starts dropping taps, and if you go even faster it drops all of them. 22:23:08 Is this a problem that would be easy, hard or impossible to fix? 22:26:20 oerjan: You should fix this problem in the next Haskell Report you write. 22:26:29 O KAY 22:27:15 oerjan: Is it out yet. 22:30:35 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:30:45 oerjan: Sheesh. 22:32:48 -!- sllide has quit (Read error: Connection reset by peer). 22:33:20 -- > a = array (1,100) ((1,1) : [(i, i * a!(i-1)) | i <- [2..100]]) 22:33:24 huh, I had no idea that was valid 22:34:26 strict in the indices, lazy in the values 22:36:02 http://www.smbc-comics.com/index.php?id=2397 Troof 22:39:28 fizzie: The Google Books data omit years in which there were no occurrences, right? 22:41:37 `runperl print (("buy new engine", "buy used car")[int(rand(2))]) 22:41:39 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: runperl: not found 22:41:42 ....... 22:41:43 :( 22:41:45 WHY 22:41:54 `haskell main = putStrLn "Hello, World!" 22:41:56 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found 22:41:57 WHYYYYYY 22:42:35 `run perl print (("buy new engine", "buy used car")[int(rand(2))]) 22:42:37 sh: -c: line 0: syntax error near unexpected token `(' \ sh: -c: line 0: `perl print (("buy new engine", "buy used car")[int(rand(2))])' 22:42:40 `run haskell main = putStrLn "Hello, World!" 22:42:43 sh: haskell: command not found 22:43:26 elliott: needs improvement how? 22:43:36 CakeProphet: See logs. 22:43:48 -!- EgoBot has joined. 22:43:54 There we go; there's the improvement. 22:45:00 elliott: why not have it on HackEgo as well? 22:45:22 Gregor: reminds me of http://www.vbs.tv/en-se/guidetosex/icelandic-elf-sex (the rest of the site might be a bit nsfw, but this video is safe) 22:45:32 Because not only was it redundant and clutters the listing of bin, it was distinctly inferior in a number of ways, all of which are satisfied by HackEgo, but none of which I will list because I'm brbing this very second. 22:45:35 `run rm bin/runpython 22:45:37 rm: cannot remove `bin/runpython': No such file or directory 22:45:49 elliott: inferior in what way. 22:45:49 i.e. for some people, elves coming to fuck you in the night is considered a good thing 22:45:56 CakeProphet: As I said, brbing. 22:46:14 elliott: inferior in what way. (when you get back, silly billy) 22:48:40 please yoursELF bahahahahaha 22:50:27 elf sperm is very shimmery. 22:50:51 -!- copumpkin has joined. 22:55:45 -!- nooga has joined. 22:59:50 -!- oerjan has quit (Quit: AAAAAAAAAAAAA). 23:04:51 -!- nooga has quit (Ping timeout: 255 seconds). 23:16:42 -!- Jafet has joined. 23:20:44 Elves are terrific. They inspire terror. 23:21:01 (I don't think that word is suppose to be "inspire", but I forget what it is) 23:21:10 ANd also that quote ruined the word "terrific" for me 23:23:31 hi 23:44:09 hi 23:44:19 hi 23:48:20 `run perl -e 'print (("get new engine", "get used car")[int(rand(2))])' 23:48:22 get new engine 23:48:28 I solve the problems in my life pseudorandomly 23:49:20 fizzie: Do you think I should just drop the lines with less than five grams? 23:49:32 fizzie: There seem to be rather a lot of them: 23:49:34 ("\"* The latter ",54) 23:49:36 ("\"* Thus ",73) 23:49:43 ("\"* that is ",75) 23:53:41 CakeProphet: Hey, give me some Perl to print only the line after the line matching a regex. 23:54:18 so a remanufactured engine with 100k mile warranty is $2000, and will basically have my car running good as new for a few years. or I could get a used car for $3000-$6000 that may need lots of work or who knows what... 23:54:31 I think the engine is the better choice, even though people traditionally do not replace engines. 23:54:48 elliott: hmmm okay 23:55:10 Also, move somewhere where cars are unnecessary. 23:55:31 Cars are unnecessary everywhere. 23:55:39 lol ^^ 23:56:00 a car is vital to my everyday existence. 23:56:06 Jafet: Not in the US. 23:56:08 hmmm 23:56:12 I'm trying to think of the best way to do this. 23:56:22 perl -ne 'print if $p;$p=0;$p=/regexp/' 23:56:28 Thanks shachaf. 23:56:28 * shachaf doesn't know Perl. 23:56:34 (I could have written that myself, but I didn't want to.) 23:56:39 shachaf: I don't think = /regexp/ works. 23:56:41 er what 23:56:41 Hmm, wait. 23:56:44 Yes, it should. 23:56:51 Since you can do "print if /.../". 23:56:58 That was my reasoning. 23:57:17 ....oh, yeah that's the easiest way I guess. lol 23:57:20 ("\"",13007218) 23:57:20 That would explain why there's a pause before it prints that line. 23:57:32 I don't even initialize the variable. 23:57:38 Because I don't know how to do that in Perl. 23:57:40 * CakeProphet is not in programming-mode currently. 23:57:44 shachaf: BEGIN{...} 23:57:44 shachaf: you don't need to. 23:57:55 elliot: I like CakeProphet's solution. 23:58:06 the $p = 0 is also not necessary. 23:58:11 $p equals undef by default 23:58:13 which is false. 23:58:16 CakeProphet: It gets reset on every iteration? 23:58:22 oh really? 23:58:27 I asked first. 23:58:29 uh... are you sure. 23:58:32 I don't think so. 23:58:35 If it doesn't, then presumably the =0 is necessary. 23:58:40 CakeProphet is wrong. 23:58:42 shachaf is right. 23:58:45 Oh, wait. 23:58:50 * shachaf is wrong. 23:58:51 If CakeProphet was right, it wouldn't work at all, because the variable would be reset every iteration. 23:58:52 why would it reset. 23:58:55 It wouldn't. 23:58:58 That's why shachaf is right. 23:59:01 CakeProphet is right. 23:59:01 that's what I was saying. 23:59:02 * shachaf is wrong. 23:59:04 it wouldn't reset. 23:59:13 shachaf: How are you wrong? 23:59:16 It worked, after all. 23:59:27 elliott: Right, but the $p=0 is unnecessary. 23:59:30 it's just that the $p=0 is unecessary not that he's wrong. 23:59:34 It was in fact just stupid. 23:59:39 shachaf: Are you sure? 23:59:43 It will stay true after the first line printed. 23:59:43 perl -ne 'print if $p;$p=/foo/' 23:59:45 Oh, wait. 23:59:50 This is why mutable variables suck. 23:59:51 Anyway 23:59:52 elliott@katia:~/Code/ngrams$ ls -lh googlebooks-eng-all-5gram-20090715-478.csv foo 23:59:52 -rw-rw-r-- 1 elliott elliott 19M 2011-10-14 00:52 foo 23:59:53 -rw-r--r-- 1 elliott elliott 936M 2010-12-25 00:03 googlebooks-eng-all-5gram-20090715-478.csv 23:59:54 Same fucking data.