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 <zzo38> 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:10:41 <zzo38> 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 <zzo38> I have selected everything except for the spells.
01:11:24 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcome: not found
01:13:11 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?welcome: not found
01:13:16 <HackEgo> 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 <zzo38> 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 <zzo38> Object Mirrored is a spell I invented, which makes an object mirror-imaged of itself.
01:21:30 <zzo38> 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 <zzo38> 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 <zzo38> 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 <Sgeo|web> Dennis Ritchie apparently died recently
01:52:46 -!- augur has joined.
02:16:35 -!- CakeProphet has joined.
02:16:35 -!- CakeProphet has quit (Changing host).
02:16:35 -!- CakeProphet has joined.
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 <coppro> does anyone know a good calculator for matrix math?
02:36:32 <coppro> nothing fancy, just needs to do multiplication and variables
02:40:04 <coppro> found a haskell library that ought to do
02:41:05 <Patashu> 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:52 -!- zzo38 has joined.
02:50:42 <coppro> no wait, that library sucks
02:52:53 <zzo38> 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 <zzo38> (It means not all Haskell programs could be compiled to it, but most could.)
03:20:43 <zzo38> (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 <Madoka-Kaname> Prelude Unsafe.Coerce> unsafeCoerce (last $ [unsafeCoerce 1 :: (), unsafeCoerce "test" :: ()]) :: String
03:38:29 <Madoka-Kaname> Prelude Unsafe.Coerce> unsafeCoerce (last $ reverse $ [unsafeCoerce 1 :: (), unsafeCoerce "test" :: ()]) :: Int
03:42:57 <lambdabot> forall a. (Typeable a) => a -> Dynamic
03:43:04 <lambdabot> forall a. (Typeable a) => Dynamic -> a -> a
03:44:02 <lambdabot> forall a. (Typeable a) => Dynamic -> Maybe a
03:44:23 <CakeProphet> > ((`fromDyn` 0) . last . reverse $ [toDyn 1, toDyn "test"]) :: Int
03:44:45 <CakeProphet> > ((`fromDyn` 0) . last . reverse $ [toDyn (1::Int), toDyn "test"]) :: Int
03:44:56 <Patashu> public float calcH(int X, int Y, int goalX, int goalY)
03:44:56 <Patashu> return (X - goalX) ^ 2 + (Y - goalY) ^ 2;
03:45:43 <Patashu> So it was producing crrrrrazy paths
03:45:48 <Patashu> That went this way and that way it was lol
03:46:19 <zzo38> Or just use multiplication, is the other way
03:46:20 <CakeProphet> Madoka-Kaname: but yeah ^^^ is one way to do it.
03:47:19 <Madoka-Kaname> CakeProphet, can you implement that without unsafeCoerce?
03:47:53 <lambdabot> toDyn v = Dynamic (typeOf v) (unsafeCoerce v)
03:48:05 <lambdabot> fromDynamic (Dynamic t v) = case unsafeCoerce v of
03:48:13 <CakeProphet> okay well I think you could do a Typeable existential.
03:48:23 <copumpkin> you could, but I don't think they had existentials back then
03:48:45 <CakeProphet> back then? this is the context of the past?
03:48:55 <copumpkin> oh, I thought you were talking about Dynamic
03:49:13 <CakeProphet> oh. no. but yeah you can represent Dynamic with a Typeable existential.
03:49:31 <CakeProphet> I was talking about basically a different approach to dynamic typing that would be explicit form of one way to implement Dynamic.
03:49:35 <lambdabot> Not in scope: data constructor `Dynamic'
03:49:42 <lambdabot> Source not found. Wrong! You cheating scum!
03:50:18 <Madoka-Kaname> () is completely safe to unsafeCoerce to, as you can't do anything to it, right?
03:50:34 <CakeProphet> you can pattern match it but that's all I can think of.
03:50:48 <lambdabot> Control.Parallel.Strategies demanding :: a -> Done -> a
03:50:48 <lambdabot> Control.Parallel.Strategies sparking :: a -> Done -> a
03:50:48 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
03:50:52 <Madoka-Kaname> (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 <Patashu> Ok my game is getting retarded slowdowns. How can I profile in visual studio 2011?
03:51:47 <CakeProphet> http://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=C%23+profiling
04:00:49 <CakeProphet> hmmm I wonder how I'd code a mandelbrot set in Haskell.
04:04:33 <CakeProphet> the iterated function part would obviously be f c = iterate ((+c).(**2)) 0
04:10:46 <CakeProphet> then you'd have something like Complex -> Pixel
04:19:13 <CakeProphet> mandel p escape max_iter = takeWhile (\(i, x) -> x < escape && i < max_iter ) $ zip [0..] (f p)
04:19:17 <CakeProphet> @pl (\(i, x) -> x < escape && i < max_iter )
04:19:17 <lambdabot> uncurry (flip ((&&) . (< escape)) . (< max_iter))
04:20:38 <lambdabot> Data.Maybe listToMaybe :: [a] -> Maybe a
04:20:39 <lambdabot> Data.List find :: (a -> Bool) -> [a] -> Maybe a
04:22:00 <CakeProphet> pixel c escape max_iter = listToMaybe $ dropWhile (\(i, x) -> x < escape && i < max_iter ) $ zip [0..] (f c)
04:22:30 <lambdabot> forall a b c. (a -> b -> c) -> (a, b) -> c
04:23:49 <lambdabot> Not in scope: data constructor `Complex'
04:24:17 <lambdabot> Data.Complex (:+) :: a -> a -> Complex a
04:24:17 <lambdabot> Data.Complex mkPolar :: RealFloat a => a -> a -> Complex a
04:24:23 <CakeProphet> Madoka-Kaname: do you know what :t does? :P
04:24:26 <lambdabot> forall a. (RealFloat a) => (a, a) -> Complex a
04:26:57 <CakeProphet> @djinn (RealFloat a) => (a, a) -> Complex a
04:28:35 <CakeProphet> @tell elliott TODO: convince Gregor to put ghc and runhaskell on hackego
04:28:45 <HackEgo> The Glorious Glasgow Haskell Compilation System, version 7.2.1
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 <CakeProphet> `run echo -e '#!/bin/sh\necho\'\$1\' \| runghc' > /bin/haskell
04:42:00 <HackEgo> sh: -c: line 0: unexpected EOF while looking for matching `'' \ sh: -c: line 1: syntax error: unexpected end of file
04:42:48 <CakeProphet> `run echo -e '#!/bin/sh\necho' \'\$1\' \| runghc > /bin/haskell
04:42:50 <HackEgo> sh: /bin/haskell: Read-only file system
04:42:58 <CakeProphet> `run echo -e '#!/bin/sh\necho' \'\$1\' \| runghc > bin/haskell
04:43:20 <CakeProphet> `haskell 'main = putStrLn "Hello, World!"'
04:43:22 <HackEgo> /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:39 <CakeProphet> `haskell 'main = putStrLn "Hello, World!"'
04:43:40 <HackEgo> /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:45:18 <HackEgo> #!/bin/sh \ echo '$1' | runghc
04:47:08 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"$1\" \| runghc > bin/haskell
04:47:14 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$1\" \| runghc > bin/haskell
04:47:23 <HackEgo> #!/bin/sh \ echo "$1" | runghc
04:47:40 <CakeProphet> `run haskell 'main = putStrLn "Hello, World!"'
04:48:31 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$@\" \| runghc > bin/haskell
04:48:40 <CakeProphet> `run haskell main = putStrLn "Hello, World!"
04:48:44 <HackEgo> \ /tmp/runghcXXXX278.hs:1:22: parse error on input `,'
04:49:55 <CakeProphet> I doubt I can get bash to automatically escape quotes magically.
04:52:34 <CakeProphet> okay so it just automatically quotes the entire line when written without run
04:56:57 -!- Jafet has joined.
04:56:59 <CakeProphet> `haskell import Unsafe.Coerce; main = print (unsafeCoerce (2 :+ 2 :: Complex Int) :: (Int, Int))
04:57:04 <HackEgo> \ /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 <CakeProphet> `haskell import Unsafe.Coerce; import Data.Complex; main = print (unsafeCoerce (2 :+ 2 :: Complex Int) :: (Int, Int))
04:58:15 <Jafet> `haskell import Unsafe.Coerce; isJust :: Maybe a -> Bool; isJust = unsafeCoerce; main = print $ map isJust [Maybe (), Nothing]
04:58:20 <HackEgo> \ /tmp/runghcXXXX278.hs:1:100: Not in scope: data constructor `Maybe'
04:58:26 <Jafet> `haskell import Unsafe.Coerce; isJust :: Maybe a -> Bool; isJust = unsafeCoerce; main = print $ map isJust [Just (), Nothing]
05:01:44 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$@\" \| runghc > bin/runperl
05:01:59 <HackEgo> \ /tmp/runghcXXXX278.hs:1:1: \ Parse error: naked expression at top level
05:02:25 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$@\" \| perl > bin/runperl
05:02:31 <fizzie> 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:03:02 <CakeProphet> 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:05:41 <CakeProphet> `run echo -e '#!/bin/sh\necho' \"\$@\" \| python - > bin/runpython
05:07:45 <Sgeo|web> Um, I can't imagine Python working really all that well when only given one line
05:08:25 <Sgeo|web> if statements also will not be so great.
05:08:42 <Sgeo|web> Well, actually, I guess you kind of can
05:08:57 <Sgeo|web> CakeProphet: because one-liners aren't feasible?
05:09:46 <Sgeo|web> `runpython print 1 if False else 0
05:09:48 <CakeProphet> where you only want to output some code that isn't intended to be read by humans.
05:09:57 <CakeProphet> you have to keep track of the indent level
05:11:02 <Sgeo|web> `runpython x=5; (x+=1 if True else 0); print x
05:11:04 <HackEgo> File "<stdin>", line 1 \ x=5; (x+=1 if True else 0); print x \ ^ \ SyntaxError: invalid syntax
05:11:12 <Sgeo|web> Didn't really expect that to work
05:11:31 <CakeProphet> anyone who knows anything about Python would know that wouldn't work ever.
05:13:42 <HackEgo> Can't modify constant item in scalar assignment at - line 1, near "5)" \ Execution of - aborted due to compilation errors.
05:15:57 <CakeProphet> Sgeo|web: you can actually use source filters to give Perl source code Python-style blocks
05:17:44 <CakeProphet> 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 <Sgeo|web> So I could make a source filter that takes +- and runs that as perl
05:20:20 <Jafet> `runpython from __future__ import braces;
05:20:22 <HackEgo> File "<stdin>", line 1 \ SyntaxError: not a chance
05:20:41 <Sgeo|web> Plusminus, the new PC name of Brainfuck.
05:20:51 <Sgeo|web> Or I'll just make it a derivative identical to the original.
05:21:00 <Jafet> - is a convenience instruction.
05:21:16 <Sgeo|web> Not if cell data doesn't wrap around
05:21:17 <CakeProphet> `runperl print "test" =~ tr[a-zA-Z][n-za-mN-ZA-M]
05:21:19 <HackEgo> Can't modify constant item in transliteration (tr///) at - line 1, at EOF \ Execution of - aborted due to compilation errors.
05:21:42 <CakeProphet> `runperl print ($_="test") =~ tr[a-zA-Z][n-za-mN-ZA-M]
05:21:44 <HackEgo> Can't modify print in transliteration (tr///) at - line 1, at EOF \ Execution of - aborted due to compilation errors.
05:21:53 <CakeProphet> `runperl print (($_="test") =~ tr[a-zA-Z][n-za-mN-ZA-M])
05:22:08 <Jafet> Oh god, perl's turning into lisp
05:22:09 <CakeProphet> it's so incredibly stupid that I have to assign it.
05:22:25 <CakeProphet> `runperl print ("test" =~ tr[a-zA-Z][n-za-mN-ZA-M]r)
05:22:27 <HackEgo> 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 <CakeProphet> and there's no r option in this version of perl I guess.
05:23:33 <HackEgo> \ 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:23 <CakeProphet> `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 <HackEgo> $_='Uryyb, Jbeyq!';cevag ge[n-mN-M][a-mn-zA-MN-Z]
05:27:31 <CakeProphet> `runperl $_=q{$_='Hello, World!';tr[!-~][P-~!-O];print};tr[!-~][P-~!-O];print;
05:27:33 <HackEgo> S0lVw6==@[ (@C=5PVjEC,P\O.,!\OP\~.jAC:?E
05:28:39 <CakeProphet> `runperl use Filter::sh q{tr '!-~' 'P-~!-O'}; S0lVw6==@[ (@C=5PVjEC,P\O.,!\OP\~.jAC:?E'
05:28:41 <HackEgo> 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:32:06 <HackEgo> 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 <CakeProphet> so yeah I don't feel like using Filter::Util::Call
05:33:33 <CakeProphet> 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 <Patashu> It feels wrong to spend 4 hours on something so simple
05:39:13 <Patashu> 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 <Patashu> Rather than always going...clockwise I think it was
05:42:51 <Patashu> 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 <Sgeo|web> I'm learning a new math thing due to
05:51:44 <Sgeo|web> http://meninhats.com/d/20031212.html
05:53:05 <Sgeo|web> http://en.wikipedia.org/wiki/Ono's_inequality
05:54:59 -!- Jfaet has changed nick to Jafet.
05:56:45 <CakeProphet> Freedom in general may be defined as the absence of obstacles to the realization of desires
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:27:48 <Sgeo|web> CakeProphet: for small stuff, SQLite?
06:27:51 <fizzie> SDSM for reflection, GDSM for MR.
06:28:36 <Sgeo|web> Why not just CoMR+SDSM rather than GDSM? Although I'm usually a wizard
06:30:05 <CakeProphet> 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 <CakeProphet> it's work related. I'm choosing which database to use.
06:30:24 <CakeProphet> so I can only assume that it needs to scale well.
06:30:47 <CakeProphet> PostgreSQL doesn't look too bad. It has a lot of features.
06:31:01 <fizzie> Of the open-sores "big ones", it's often a choice between either Postgres or the MySQL/derivatives.
06:32:39 <pikhq> And MySQL's in the middle of a giant "ABANDON SHIP" forkfest.
06:33:20 <CakeProphet> hmmm MySQL seems to be more popular than Postgres. is that an accurate statement?
06:34:03 <fizzie> MySQL, sadly, is (or at least was) quite often the "default".
06:35:25 <fizzie> 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 <pikhq> MySQL is more popular, but it's also been utterly shaken up by Oracle lately.
06:35:35 <CakeProphet> I know the basic ideas of a relational database, and a bit of SQL, but that's about it.
06:36:22 -!- aloril has joined.
06:38:08 <fizzie> 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 <CakeProphet> fizzie: I'm using django (Python). It can use a lot of databases.
06:38:47 <CakeProphet> I don't know how painless it is to switch though.
06:39:15 <fizzie> Very painless, if you just use Django's own database object model/persistence things.
06:39:16 <CakeProphet> postgreSQL has the best logo. Therefore, I should use it.
06:41:36 <fizzie> (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 <CakeProphet> fizzie: right that's the situation I was talking about.
06:42:00 <CakeProphet> so I just want to go ahead and pick one and stick with it.
06:42:39 <fizzie> I'm a Postgres person, so my recommendations would be biased anyhow.
06:43:27 <CakeProphet> postgres seems to be sufficiently advanced, but I have little actual knowlege about it.
06:44:43 <fizzie> 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 <CakeProphet> I'm sure I won't need to do anything that Django doesn't already allow through its API
06:45:49 <fizzie> 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 <fizzie> There are quite a few on the web-server/"middleware" side (fcgi, wsgi, whatever), but.
06:47:13 <CakeProphet> fizzie: if I use a different frontend to manage the db in the future will that conflict with the Django API?
06:47:49 <fizzie> 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:10 <fizzie> Django can autogenerate a database web-admin interface directly from the Python models if you like.
06:48:19 <fizzie> It's... not perfect, but passable.
06:48:55 <fizzie> The objects tend to be serialized in a "sensible" way IIRC, so it's possible to edit things "manually" too.
06:49:18 <CakeProphet> and then as long as the code reflects the new table structure everything should be fine, I'd think.
06:49:41 <fizzie> 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 <CakeProphet> 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 <fizzie> 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 <CakeProphet> fizzie: yeah I could be dealing with possibly 10 million rows here..
06:55:46 <fizzie> http://www.djangobook.com/en/2.0/chapter10/#s-making-changes-to-a-database-schema
06:56:49 <Vorpal> 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 <Vorpal> (will of course depend on scene complexity)
06:57:33 <Vorpal> 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 <fizzie> 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 <fizzie> It sounds like a very reasonable thing to do.
06:59:02 <Vorpal> 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 <fizzie> "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:02:34 -!- hagb4rd has joined.
07:02:38 <fizzie> NVIDIA has that OptiX thing going on, for example; I don't know much more than the name about it, though.
07:02:54 <Vorpal> hm skyrim + raytracing would be pretty cool for example. Lots of scenery that could be reflected in water and such.
07:05:00 <fizzie> 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:26 -!- aloril has joined.
07:06:54 <fizzie> There's probably papers on it from every SIGGRAPH of the last few years.
07:07:36 <Vorpal> do those require paid access?
07:08:11 <fizzie> 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:45 <Vorpal> AMD needs to start doing more cool stuff like that. Since I have an AMD CPU
07:08:57 <fizzie> 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:11:11 <fizzie> 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 <Jafet> Go through your ray tracer and count how many control structures you use
07:11:37 <Jafet> And count how many indirect pointers you follow
07:11:53 <Jafet> That's how hard it is to ray-trace on a GPU
07:13:04 <Jafet> Also, you can't ray trace water, since it cannot trace caustics
07:13:46 <Jafet> You need path tracing, photon mapping, or good old textured caustics. Guess which one game developers prefer.
07:14:17 <Sgeo|web> I don't follow... unless pre-rendered?
07:14:32 <Jafet> It makes up for their one-dimensional plots.
07:15:07 <Sgeo|web> Wait, are we living in the age of real-time ray-tracing already?
07:15:17 <fizzie> For some definitions of "age of".
07:16:22 <fizzie> 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 <Jafet> More like building hype for larrabee
07:17:01 <Jafet> Which of course will be available Any Time Now
07:19:34 <fizzie> 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 <fizzie> There's a couple of screenshots at http://en.wikipedia.org/wiki/Quake_Wars:_Ray_Traced
07:21:06 <fizzie> I like the floating, reflecting metal speheres they've dropped everywhere.
07:21:18 <fizzie> "Just in case you forgot this was about ray-tracing."
07:21:52 <Sgeo|web> I love looking at ray-traced images
07:22:20 <Jafet> http://code.google.com/p/tokaspt/
07:23:28 <fizzie> 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:32:35 <Sgeo|web> Is Moray 3d modeler considered decent?
07:32:46 <Sgeo|web> I mean, it's in the process of becoming Free
07:33:26 <Sgeo|web> Or, um. That may have been a while ago
07:35:22 <Sgeo|web> Can I just say how pretty http://en.wikipedia.org/wiki/File:Glasses_800_edit.png looks?
07:37:26 <CakeProphet> Haskell needs moar web application framework/
07:50:21 <Sgeo|web> Is that a Template Haskell thing?
07:50:44 <Jafet> Because lets need more wham.
07:56:06 <Sgeo|web> "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"
08:00:20 -!- monqy has quit (Quit: hello).
08:03:38 <Vorpal> <Jafet> You need path tracing, photon mapping, or good old textured caustics. Guess which one game developers prefer. <-- which one?
08:03:44 <Vorpal> (sorry, was away eating breakfast)
08:05:21 <Vorpal> <Sgeo|web> Can I just say how pretty http://en.wikipedia.org/wiki/File:Glasses_800_edit.png looks? <-- old and povray iirc
08:07:04 <Jafet> http://www.dmrdesigns.com.ar/download/Caustic.jpg
08:11:28 <Jafet> Sgeo|web: http://www.luxrender.net/forum/gallery2.php?g2_itemId=211
08:12:35 <Jafet> So yeah, those two links sum up video games versus offline rendering
08:24:21 <Sgeo|web> What does Caustic.jpg have to do with anything?
08:24:28 <Sgeo|web> But that gallery is pretty, ty
08:25:05 <Sgeo|web> Ah, LuxRender is an alternative to POV-Ray?
08:25:24 <Sgeo|web> Can someone explain to me what's wrong with POV-Ray?
08:27:03 <fizzie> LuxRender is quite different sort of beast; I'd say it's more an alternative for Radiance.
08:27:34 <Jafet> POV-Ray is archaic
08:27:41 <Jafet> I know this from experience
08:28:04 <Jafet> Luxrender is based on pbrt, I think
08:28:19 <fizzie> It is, yes; it's very more physics-inspired than something like POV-Ray.
08:28:25 <Sgeo|web> Is LuxRender scenes not meant to be rendered by humans?
08:28:37 <Sgeo|web> fizzie: by physics, you mean the physics of light?
08:28:53 <Sgeo|web> Now I has a sad knowing that traditional ray-tracing isn't based on that
08:29:10 <Jafet> Ray tracing isn't physically correct, not even to classical optics
08:29:23 <Jafet> Read pbrt for the details
08:29:56 <fizzie> Apparently they've stuck in some GPU acceleration into LuxRender too.
08:30:08 <Sgeo|web> When will we get real-time physics-based rendering?
08:30:22 <Sgeo|web> That's my new standard for when graphics are good
08:30:31 <Jafet> I can render a cornell box in real time, does that count?
08:31:02 <fizzie> Pick what looks good; then extrapolate from the current time to render it + Moore's law.
08:31:58 <Jafet> What looks good now is going to look like crap when the hardware to ray-trace it rolls around.
08:32:45 <Jafet> At least, as long as the deciding factor for video games is graphical porn
08:33:16 <Sgeo|web> Would it be possible to re-render POV-Ray scenes in LuxRender or pbrt?
08:33:33 <Sgeo|web> 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 <Jafet> POV-Ray scenes are procedural, while Luxrender scenes are descriptive.
08:34:50 <Jafet> That's what "physically based rendering" means.
08:35:16 <Sgeo|web> How is describing where a box is, for example, procedural?
08:35:19 <fizzie> The POV-Ray scene description language is Turing-complete(ish).
08:35:30 <Jafet> Okay, so you've never used POV-Ray
08:35:43 <Sgeo|web> I've used it, but only for simple stuff following the tutorial
08:36:10 <Sgeo|web> I think I just want to rerender that Glasses thing in something like LuxRender
08:36:26 <Sgeo|web> Surely at least shapes should transfer over
08:36:32 <Jafet> In POV-Ray, you declare archaic early pixar era hacks like bump mapping
08:36:57 <Jafet> Actually pixar already used displacement mapping even then
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 <Jafet> 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 <Sgeo|web> 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 <fizzie> 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 <Jafet> Scenes aren't merely shapes...
08:40:21 <fizzie> Yes; but you can extract the objects, and then recreate the rest.
08:40:36 <Jafet> You make it sound real simple
08:40:52 <Sgeo|web> What is radiosity, and am I correct that it's an artifact of the fact that POV-Ray fakes it?
08:41:32 <Jafet> 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 <Jafet> Why do you say rgb <0,0,1>? That's purely an artifact of how rendering software works.
08:42:27 <Sgeo|web> Physical color == frequencies that are being emitted?
08:44:09 <Sgeo|web> 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? </least-important-conceivable-reason-for-physical-colors>
08:45:45 <Sgeo|web> 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 <fizzie> I'm not entirely sure it would go quite *that* far.
08:46:08 <Jafet> Your POV-Ray scene doesn't even specify what colours are used, so your comparison is meaningless
08:46:34 <Jafet> fizzie: http://www.luxrender.net/forum/gallery2.php?g2_itemId=1928
08:46:56 <Jafet> rgb <0,0,1> isn't a colour until you specify the colour space being used
08:47:28 <Sgeo|web> How do mere mortals specify color in Luxrender?
08:47:29 <fizzie> 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 <Jafet> But since the three components are treated independently, you can ignore them la la la
08:48:01 <Jafet> fizzie: hm, think so. If you could wait for it to render.
08:48:20 <Jafet> I've watched an animated film where they rendered diffraction in rain
08:48:25 <Sgeo|web> Lots of frequencies, probably a continuous range with continuously varying strenghts
08:49:04 <fizzie> Sgeo|web: You can specify a blackbody temperature.
08:49:11 <fizzie> Sgeo|web: That's a reasonable approximation for sunlight.
08:49:16 <Jafet> It was very subtle, but visible if you knew it was there
08:49:35 <fizzie> 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 <Sgeo|web> I don't see "arbitrary function" on there, but I guess regular data is close enough
08:52:47 <Jafet> In the luxrender community, iirc "arbitrary function" means you monkey patch it in
08:55:17 <Jafet> patch my-colour-function.patch && make
08:58:05 <Sgeo|web> And here I was thinking that LuxRender is awesome
08:58:59 <Vorpal> Jafet, sounds like povray is superior in that regard then.
08:59:29 <Vorpal> maybe luxrender is better at other stuff
08:59:55 <fizzie> 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:44 <Vorpal> fizzie, I mean, povray is great for rendering mathematical shapes and so on
09:00:45 <fizzie> You can't specify an "arbitrary function" spectrum for a POV-Ray light.
09:00:46 <Jafet> Perhaps luxrender doesn't trust its users to always pass in a real probability distribution
09:01:14 <Patashu> couldn't it jiggle it until it is one if it isn't?
09:01:23 <Jafet> How could it ever know if it is one?
09:01:37 <Jafet> patch lol-numerical-integration.patch
09:02:31 <Patashu> It can't ever know in the same sense that you can't prove or disprove the afterlife?
09:02:57 <fizzie> 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 <Vorpal> Jafet, do you mean real as in "not complex"?
09:03:18 <Patashu> a probability distribution as in integrates to area 1
09:03:18 <Jafet> Uh, how can you know if int_{-\infty}^\infty f(x) dx = 1
09:04:00 <Patashu> Sample it at a coarseness of your choice
09:04:05 <Patashu> And then apply a normalizing factor
09:04:08 <Sgeo|web> Can you do arbitrary mathematical surfaces in Luxrender?
09:04:13 <Patashu> And then ditch the samples if you don't need them anymore
09:04:42 <Sgeo|web> Metal marbles on a metal 2d sin-based sheet
09:05:17 <fizzie> 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:06:05 <Jafet> fizzie: those aren't arbitrary, so you can normalize them (I don't know if luxrender does)
09:07:26 <fizzie> 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 <Jafet> Specify a function in what language
09:08:23 <Jafet> Remember that the function may be called a few billion times
09:09:37 <fizzie> 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 <fizzie> I'm not saying there'd be any need for something like that.
09:17:53 <Sgeo|web> 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 <fizzie> 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 <fizzie> There's a reasonably complicated Blender-to-LuxRender exporter, I tried it out few versions ago.
09:22:03 <fizzie> It tries to (up to some degree) snarf the initial LuxRender-specific material/light/whatever values from the Blender settings.
09:22:12 <fizzie> (Then you can go a twiddle with them.)
09:23:27 <fizzie> 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 <Sgeo|web> Does LuxRender take relativity into account?
09:24:23 <Sgeo|web> e.g. can I use it to see what things look like near a blac hole?
09:24:43 <fizzie> I don't think there's gravity in there.
09:25:57 <Jafet> It might be interesting to render scenes in a different space
09:26:19 <Jafet> (generalized lenses)
09:26:20 <fizzie> After all, it's just "physically *based*", not a full universe-simulator like the one we're living in.
09:26:51 <Sgeo|web> How difficult would it be to add it?
09:26:59 <Jafet> As a restricted example, the Portal developers hacked the HL2 engine to get recursive portal rendering
09:27:15 <Jafet> Sgeo|web: why don't you find out by adding it
09:30:43 <fizzie> Portals are such a hack; the developer commentary track goes into some detail about them.
09:30:54 <fizzie> "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 <fizzie> Also lots about how the physics are faked.
09:31:30 <Jafet> Oh; I thought they actually stuck a recursive renderer in there
09:31:45 <Jafet> I guess that would have led to inconsistent performance
09:31:58 <fizzie> It goes up to 9 (not 11) levels of real recursion.
09:32:14 <fizzie> "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 <fizzie> 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 <Jafet> Collisions across portals?
09:34:07 <Jafet> Well, physics in video games still sucks. Fire at a cardboard box and you get decals
09:35:17 <fizzie> 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 <Sgeo|web> 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 <Sgeo|web> http://www.luxrender.net/forum/gallery2.php?g2_itemId=17898 ok how in the hell was this picture taken?
10:02:46 <fizzie> They do it with mirrors.
10:04:11 <Sgeo|web> Hmm. Wiki says point lights are unphysical. But suppose I wanted my scene to contain a hovering magic light sphere...
10:04:29 <fizzie> A sphere is not a point.
10:04:35 <fizzie> Well, a sphere with radius > 0.
10:05:08 <Sgeo|web> But the sphere emitting lighting emits light in the direction of the normals of the surface, right?
10:05:27 <Sgeo|web> I'm having trouble seeing how adjusting the radius of the sphere would change the lighting
10:06:23 <Tefaj> No, it emits light in all directions.
10:06:39 <Tefaj> From each point on the surface.
10:06:49 <fizzie> A real sphere, that is.
10:06:55 <Tefaj> Well, some of the directions are less important.
10:07:35 <Sgeo|web> "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 <Sgeo|web> Hmm, maybe I misunderstood that
10:07:55 <fizzie> Sgeo|web: As far as I can deduce, that's just "not backwards at all", perhaps.
10:11:20 <fizzie> 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:51 <Tefaj> 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 <Sgeo|web> Tefaj: why heh? And what would be wrong with just specifying the internal geometry?
10:13:20 <fizzie> 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 <Tefaj> Because you run into extremities that are difficult to model, like internal scattering with high light intensity
10:13:49 <Tefaj> 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 <fizzie> 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 <fizzie> Not that sunlight under all this air is all blackbodyish either. (http://en.wikipedia.org/wiki/File:Solar_Spectrum.png)
10:16:49 <Tefaj> Well, there are worse approximations
10:21:44 <fizzie> 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 <fizzie> (Okay, so there's the "sunsky" environment, but that's a hack.)
10:23:17 -!- ais523 has joined.
10:24:17 <Tefaj> I'm not sure how good their volumetric scattering model is
10:24:41 <Tefaj> But you can be sure that if it's any good, you're going to need two weeks and a cluster
10:26:54 -!- Tefaj has quit (Quit: Leaving.).
10:27:13 <fizzie> "[A homogenous volume] can also be used as the world volume, which will enable atmospheric scattering."
10:27:19 <fizzie> Apparently it can do something like that.
10:30:06 -!- MichaelBurge has quit (Read error: Connection reset by peer).
10:31:19 <fizzie> "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 <fizzie> Seems to be a bit under construction.
10:38:59 -!- Phantom_Hoover has joined.
10:59:57 -!- oerjan has joined.
11:07:18 <oerjan> <Madoka-Kaname> () is completely safe to unsafeCoerce to, as you can't do anything to it, right?
11:07:30 <oerjan> the Any type exists for that purpose.
11:09:17 <oerjan> and its documentation makes me believe unsafeCoerceing to () is _not_ safe from a function type.
11:10:42 <oerjan> 04:05:00: <CakeProphet> where c is a (Num a) => Complex a
11:10:43 <oerjan> 04:06:15: <CakeProphet> er, just Complex a would be fine
11:10:43 <oerjan> 04:06:25: <CakeProphet> since it's a is constrained to RealFloat
11:11:13 <oerjan> 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:16 -!- Jafet has joined.
12:50:46 <oerjan> oops the final number got stuck
12:53:56 <oerjan> "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 <oerjan> http://contemplatecode.blogspot.com/2011/10/haskell-weekly-news-issue-203.html
13:01:02 -!- ais523 has joined.
13:10:09 <Ngevd> 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 <oerjan> hm which one, you already have a bit of a list there...
13:19:16 <ais523> hmm, was it K or R of K&R who invented hello world?
13:19:38 <ais523> (R is now, unfortunately, dead)
13:21:11 <Ngevd> "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 <Ngevd> "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:22:41 <Ngevd> He is the only person to go down in history for writing a four line program in a memo
13:22:52 <Ngevd> To my admitably lacking knowledge
13:29:35 -!- Madoka-Kaname has joined.
13:32:55 <ais523> hmm, http://colinm.org/language_checklist.html is very upvoted on proggit
13:33:02 <ais523> can we write an esolang that checks /every/ box?
13:33:51 <ais523> probably not, some contradict each other
13:34:18 <Ngevd> As many as possible. then
13:34:37 <ais523> [ ] You have reinvented Brainfuck but non-ironically
13:35:05 <ais523> this thing seems to handle esolangs pretty well too
13:35:52 <ais523> oh, fun GLR-parsable grammar I was considering: operator precedence is chosen to make the expression type correctly
13:36:05 <ais523> e.g. string_of_int 2 + 2 = string_of_int (2 + 2)
13:36:15 <ais523> but string_of_int 2 + "a" = (string_of_int 2) + "a"
13:36:50 <ais523> it'd be good for golfing, but loses basically all the benefits of static typing
13:37:10 <Ngevd> I may make Uniquode actually usable
13:37:55 <ais523> it'll probably end up with a usable subset just by chance
13:38:01 <ais523> probably several hundred of them, actually
13:38:30 <Ngevd> It'd be an exercise to the programmer to decide what's the best to use
13:40:04 <oerjan> ais523: i think oklopol already invented something like that
13:40:11 <ais523> I suggest you embed MAGENTA
13:40:22 <ais523> wow, I get an uneasy feeling just looking at its name
13:40:56 <oerjan> it's the fnord between the G and E
13:41:52 <ais523> aha, that would explain it
13:44:39 -!- oerjan has quit (Quit: Latefnordr).
13:45:42 -!- Phantom_Hoover has joined.
13:46:17 <Ngevd> Should Uniquode memory be typed or untyped?
13:46:51 <ais523> both ADT-style and Visual Basic Variant-style
13:48:10 <Ngevd> Hey, Google Wave still exist
13:53:10 <Ngevd> I think functions would have to be numerated rather than named
13:56:57 <ais523> hey, what's the Windows equivalent of ls -R?
13:57:14 <ais523> it's going to be dir /something, presumably
13:59:17 <ais523> 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
14:00:24 <Ngevd> Those letters were chosen because they represent Windows best
14:07:54 <Ngevd> XSL S and K potentially complete!
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:21:11 <Ngevd> 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 <Phantom_Hoover> I'm really having a hard time believing that it's this convoluted.
14:22:27 <Ngevd> 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 <elliott> ais523: K-lines can be automatic nowadays, I think
16:53:02 <lambdabot> elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
16:53:21 <ais523> elliott: they always have been able to be automatic, IIRC
16:53:27 <ais523> but that still doesn't explain why it happened to quintopia
16:53:40 <elliott> ais523: you misused lambdabot
16:53:56 <ais523> the messages delivered by lambdabot are generally better than those delivered by Rodney or heptagram
16:53:59 <elliott> 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 <elliott> joining too many channels in rapid succession, or something, perhaps
16:55:17 <elliott> ais523: anyway, you can hardly expect to get messages if you violate the usage instructions
16:55:33 <ais523> elliott: hey, those instructions were to /you/
16:55:54 <elliott> <lambdabot> CakeProphet said 12h 26m 47s ago: TODO: convince Gregor to put ghc and runhaskell on hackego
16:55:58 <elliott> Hey Gregor, do that thing you already did.
16:56:42 <elliott> 21:20:49: <rapido> Phantom_Hoover: what is functional minimalism done right?
16:56:42 <elliott> 21:21:05: <Phantom_Hoover> rapido, Lazy K.
16:56:49 <elliott> Phantom_Hoover: well I dunno, its IO model is not very nice.
16:56:55 <elliott> 21:24:54: <rapido> diversion: anyone into K (or Q) from kxsystems - the only commercial esoteric language out there?
16:57:02 <elliott> I like K but I like J more
16:57:38 <elliott> Phantom_Hoover: it's equivalent to haskell lazy io
16:57:54 <elliott> it depends crucially on evaluation order for any kind of interactivity
16:57:59 <Phantom_Hoover> "Not being a system under active research" is not a valid wrongness.
16:58:00 <elliott> it's kind of gross and impure in that way
16:58:12 <elliott> i'm talking about getContents
16:58:39 <Phantom_Hoover> I'm assuming that were I to ask what you'd use instead you'd say FRP.
16:59:04 <elliott> frp doesn't even deal with console-based io, so obviously you don't actually know what you're talking about
16:59:17 <elliott> 01:52:14: <Sgeo|web> Dennis Ritchie apparently died recently
16:59:17 <elliott> 02:05:04: <variable> RIP Dennis Ritchie :(
16:59:17 <elliott> huh, he wasn't that old...
17:00:02 <elliott> Phantom_Hoover: So stop making assumptions.
17:00:20 <elliott> Phantom_Hoover: Because you just look like an idiot?
17:01:04 <elliott> 03:50:18: <Madoka-Kaname> () is completely safe to unsafeCoerce to, as you can't do anything to it, right?
17:01:09 <elliott> Madoka-Kaname: yes you can, you can coerce it
17:01:13 <elliott> Madoka-Kaname: yes you can, you can force it
17:01:32 <elliott> Madoka-Kaname: and that isn't a valid metric for determining whether unsafeCoerce is safe, anyway.
17:02:43 <ais523> what about unsafeCoercing it back to the original type?
17:03:28 <elliott> 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 <elliott> The following uses of unsafeCoerce# are supposed to work (i.e. not lead to spurious compile-time or run-time crashes):
17:03:28 <elliott> Casting any lifted type to Any
17:03:30 <elliott> Casting Any back to the real type
17:03:32 <elliott> Casting an unboxed type to another unboxed type of the same size (but not coercions between floating-point and integral types)
17:03:35 <elliott> 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 <elliott> 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 <elliott> e type to cast things to, use Any, which is not an algebraic data type.
17:03:46 <elliott> those are GHC's guarantees
17:04:05 <elliott> 05:07:45: <Sgeo|web> Um, I can't imagine Python working really all that well when only given one line
17:04:11 <elliott> Sgeo|web: this is why I wrote braces
17:06:09 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/haskell
17:06:19 <elliott> ugh, that needs improvement
17:06:30 <elliott> actually wait just use egobot
17:09:28 <elliott> 06:47:13: <CakeProphet> fizzie: if I use a different frontend to manage the db in the future will that conflict with the Django API?
17:09:28 <elliott> 06:47:19: <CakeProphet> like pgadmin
17:09:28 <elliott> 06:47:49: <fizzie> 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 <elliott> fizzie: What django object format?
17:09:38 <elliott> There's no serialisation or anything.
17:09:43 <elliott> 06:48:10: <fizzie> Django can autogenerate a database web-admin interface directly from the Python models if you like.
17:09:44 <elliott> 06:48:19: <fizzie> It's... not perfect, but passable.
17:09:44 <elliott> 06:48:24: <fizzie> Looks fancy, anyway.
17:09:53 <elliott> fizzie: You're meant to customise it with the meta-object stuff.
17:10:22 <elliott> 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 <elliott> 06:48:55: <fizzie> The objects tend to be serialized in a "sensible" way IIRC, so it's possible to edit things "manually" too.
17:10:37 <elliott> fizzie: It's not serialisation, it just maps it to a schema.
17:10:47 <elliott> It doesn't even serialise arbitrary Python objects, you have to tell it the schema.
17:10:59 <elliott> 06:49:41: <fizzie> 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 <elliott> fizzie: By one of the lead Django developers.
17:12:28 <elliott> ais523: You need to crush Vorpal's dreams, I think.
17:12:51 <elliott> ais523: GPU raytracing as a panacea.
17:12:57 <elliott> 07:11:27: <Jafet> Go through your ray tracer and count how many control structures you use
17:12:57 <elliott> 07:11:37: <Jafet> And count how many indirect pointers you follow
17:12:57 <elliott> 07:11:53: <Jafet> That's how hard it is to ray-trace on a GPU
17:12:57 <elliott> 07:13:04: <Jafet> Also, you can't ray trace water, since it cannot trace caustics
17:12:57 <elliott> 07:13:46: <Jafet> You need path tracing, photon mapping, or good old textured caustics. Guess which one game developers prefer.
17:13:33 <elliott> 07:16:50: <Jafet> More like building hype for larrabee
17:13:34 <elliott> 07:17:01: <Jafet> Which of course will be available Any Time Now
17:13:41 <elliott> Larabee was explicitly cancelled.
17:14:25 <elliott> http://upload.wikimedia.org/wikipedia/en/f/fe/Wolf_chand1.png The power of raytracing.
17:15:55 <elliott> 07:37:26: <CakeProphet> Haskell needs moar web application framework/
17:15:58 <elliott> CakeProphet: There are about fifty.
17:21:36 <elliott> 08:44:09: <Sgeo|web> 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? </least-important-conceivable-reason-for-physical-colors>
17:21:36 <elliott> tetrachromates, n. tetrachomats who are you are mates with.
17:22:26 <elliott> 08:47:29: <fizzie> 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 <elliott> If you waited long enough!
17:24:19 <elliott> 09:01:14: <Patashu> couldn't it jiggle it until it is one if it isn't?
17:24:19 <elliott> 09:01:23: <Jafet> How could it ever know if it is one?
17:24:19 <elliott> 09:01:37: <Jafet> patch lol-numerical-integration.patch
17:24:19 <elliott> 09:02:31: <Patashu> It can't ever know in the same sense that you can't prove or disprove the afterlife?
17:24:19 <elliott> 09:02:37: <Patashu> Or in a difference sense?
17:24:26 <elliott> Patashu discovers that not all propositions are decidable.
17:28:35 <elliott> 10:21:44: <fizzie> 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:38:12 <zzo38> Is there a spell in Dungeons&Dragons that makes the sun rise in the south?
17:38:57 <Phantom_Hoover> <elliott> tetrachromates, n. tetrachomats who are you are mates with.
17:39:04 <ais523> zzo38: I think some DMs would let you do that with wish/miracle
17:39:10 <ais523> probably not all of them
17:39:39 <elliott> Phantom_Hoover: I'm sorry but Sgeo|web was already talking about his true love (obsolete raytracing).
17:40:13 <zzo38> 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 <ais523> zzo38: there are probably easier ways to notify people than actually moving the position of the sun
17:41:08 <zzo38> ais523: I did not move the position of the sun.
17:41:35 <zzo38> 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 <zzo38> (The window was north of my position)
17:42:53 -!- zzo38 has quit (Remote host closed the connection).
17:54:12 -!- vco has joined.
17:58:05 <HackEgo> 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).
18:23:30 <elliott> "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 <elliott> Damn, and I even postponed the construction of my bunker.
18:26:27 <elliott> Phantom_Hoover: It was a joke, you know.
18:27:59 <ais523> apparently, it can also be cured trivially with modern medicine
18:28:13 <ais523> 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 <elliott> 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:54 <Phantom_Hoover> I mention my dwarven chemistry investigation it is the best.)
18:30:06 -!- Ngevd has joined.
18:30:17 <elliott> Actually wait, I have a better experiment idea:
18:30:22 <elliott> They should find out what happens if you kill everyone.
18:31:40 <Ngevd> I need to work out why identifying automatically is misconfigured on this client
18:32:37 <Ngevd> It tries to, it just gets it wrong
18:33:15 <elliott> Ngevd: How do you have it set up.
18:33:26 <Ngevd> With my password in the password box
18:33:36 <Ngevd> For my visual basic developement!
18:33:44 <elliott> http://code.google.com/p/xchat-wdk/
18:34:02 <Ngevd> XChat exists for windows?
18:34:26 <Ngevd> Why did no-one tell me!
18:34:35 <elliott> You ignored us and kept using that piece of crap.
18:34:49 <Ngevd> That was that Taneb guy, I bet
18:34:50 <elliott> Or at least I think I did.
18:35:15 -!- Ngevd has changed nick to Taneb|Hovercraft.
18:36:16 <Gregor> Nobody told me that Windows exists.
18:37:54 <Gregor> 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:56:50 <Sgeo|web> Is XChat-wdk better than Silverex?
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:52:42 <oerjan> wait, am i doing it wrong
19:53:22 <ais523> good evening, everyone in appropriate timezones!
19:53:37 <Phantom_Hoover> "Thumbs up if you're watching in 2O11 :)" — YouTube comment.
19:53:41 <ais523> likewise, good morning and good afternoon!
19:53:51 <ais523> Phantom_Hoover: with how many views?
19:54:02 <ais523> elliott: oh, that's YouTube's fault, it randomly distorts numbers
19:54:11 <oerjan> Phantom_Hoover: ...how old is the comment?
19:54:28 <elliott> ais523: probably to break spam links
19:54:35 <ais523> elliott: yes, I think that's the reason
19:54:40 <Ngevd> It's going to look stupid in two and a half months
19:54:42 <Phantom_Hoover> I don't know how it happened, but it cannot be a bad sign that YouTube comments have hit their nadir.
19:55:06 <oerjan> Phantom_Hoover: optimist!
19:55:32 <ais523> I've seen some great YouTube comments
19:55:35 <Phantom_Hoover> Ngevd, nah, then everyone'll reminisce about how 2011 was so much better than 2012, thumbs up if you agree.
19:55:39 <ais523> admittedly, most of them were self-parody
19:56:05 <oerjan> thumbs up if you have thumbs
19:56:13 <Phantom_Hoover> 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:52 <ais523> 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 <ais523> which then increases the number of views to your channel
19:57:05 <ais523> which indirectly increases the number of views to your videos
19:57:42 <elliott> Phantom_Hoover: To be fair, reddit barely has a karma system.
19:57:48 <elliott> Beyond extremes, it has literally no effect beyond being displayed.
19:58:02 <ais523> but it's a number! that goes up indefinitely!
19:58:17 <ais523> Slashdot's has a cap to try to stop people karma-whoring, but they do it anyway
19:58:20 <elliott> ais523: it can go down, too
19:58:27 <Phantom_Hoover> elliott, it is at least compiled into a single number.
19:58:28 <ais523> yes, but on average it goes up
19:58:32 <elliott> But one thing's for sure, Phantom_Hoover's will never, ever surpass mine.
19:58:40 <ais523> is yours currently positive?
19:58:48 <ais523> ISTR you have had comments at negative values before
19:58:52 <Phantom_Hoover> elliott, you know how I said it was over 2000 yesterday, it passed 2100 today.
19:59:01 <elliott> ais523: Yes, I have, but I've been around long enough that it's pretty high.
19:59:13 <elliott> (My comment karma is 6,233; my link karma is 1,769 and never changes because I never submit links.)
19:59:21 <Phantom_Hoover> ais523, in other news, stars not fallen, pope is still a catholic.
20:00:54 <Phantom_Hoover> ais523, haven't /you/ had comments at negative karma, despite having like 10?
20:01:13 <ais523> Phantom_Hoover: I thought all mine were on positives, but I'm not sure
20:01:22 <ais523> hey, how do you type smart quotes?
20:01:37 <ais523> compose-`` doesn't seem to work
20:01:43 <ais523> can you get them with altgr?
20:01:49 <elliott> ais523: {" and "} or something for compose
20:01:56 <elliott> you can get them with altgr but I never remember how
20:02:30 <ais523> 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:45 <oerjan> Phantom_Hoover: well it should be old enough
20:03:27 <Phantom_Hoover> elliott, mine didn't work when you sorted them that way, so it must be spreading.
20:05:28 <ais523> you know what Evolution needs? a "mark as handled" flag
20:05:32 <ais523> a state more read than read
20:05:42 <elliott> ais523: that's called Archive
20:05:47 <elliott> (in all implementations I know of it)
20:06:00 <ais523> ah, hmm, that would remove it from my inbox
20:06:07 <elliott> ais523: yes, until someone sends another mail in that thread
20:06:08 <ais523> but I still like the chronological view of everything with no threading
20:06:19 <Phantom_Hoover> ais523, for a second I thought you were talking about biological evolution.
20:06:19 <elliott> well, that's what All Mail is for
20:06:22 <ais523> wait, /thread/? this has to be per-message
20:06:33 <ais523> because I might have handled some messages in a thread but not others
20:06:48 <elliott> ais523: then it should be two threads
20:06:57 <ais523> elliott: tell that to the people /sending the emails/
20:07:21 <elliott> ais523: Well, it's not exactly burdensome to have a few additional messages visible until you handle them all.
20:07:31 <elliott> Unless you have pathological threads that constitute ten thousand things to handle.
20:07:32 <ais523> elliott: it's not to do with visibility
20:07:38 <ais523> it's to do with /knowing whether I've handled them/
20:07:47 <ais523> I don't care if they stay visible; in fact I want them to
20:07:55 <ais523> and in fact, most of the messages I care about flagging are all in the same thread
20:08:04 <elliott> <elliott> 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 <elliott> Come on, assume a vaguely charitable interpretation.
20:08:11 <ais523> because students have a habit of just hitting "reply" to an arbitrary message authored by the right person
20:08:16 <ais523> elliott: I'm trying to handle each of them exactly ones
20:08:31 <elliott> I mean if it's thread-based.
20:08:43 <ais523> well, I don't want it to be thread-based
20:09:00 <elliott> I was just justifying it being thread-based. You're arguing like zzo.
20:09:00 <ais523> I generally find threading to be really awkward because it takes the messages out of chronological order
20:09:19 <ais523> 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 <elliott> Nooo Programming in the 21st Century redesigned I cannot deal with change.
20:46:22 <oerjan> well go to Programming in the 20th Century, then
20:47:26 <Ngevd> Programming in the Seventeenth Century
20:47:47 * oerjan accidentally discovers there's a hexham in new south wales
20:48:09 <oerjan> while stalking LTDave from the iwc forum, no less
20:48:16 <Ngevd> There's one in Victoria too
20:49:57 <oerjan> (it's mentioned in the wikipedia page for the location on his profile)
20:50:52 <oerjan> it's only fair, since he was talking about stalking DMM
20:52:11 <oerjan> leibniz made a calculating machine about then, didn't he
20:54:31 <oerjan> "Hexham is a suburb of the city of Newcastle, about 15 kilometres (9 mi) inland from Newcastle in [...]"
20:55:22 <elliott> oerjan: You're kidding me.
20:55:43 <Ngevd> 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 <oerjan> elliott: it's a direct wikipedia quote.
20:56:19 <elliott> 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 <elliott> 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 <Ngevd> ...We have a bowling club
20:57:32 <Ngevd> There are two esolangers in Hexham
20:57:38 <Ngevd> There are three Hexhams in the world
20:57:57 <oerjan> mind you LTDave isn't actually from hexham, just close
20:58:10 <elliott> Ngevd: I refuse to believe that there are any esolangers in any other Hexhams of the world.
20:58:52 <elliott> Does anyone know how to ask Google Maps to tell me about all the Hexhams it knows?
20:58:55 <elliott> It knows at least three, after all.
20:59:06 <elliott> http://en.wikipedia.org/wiki/Hexham_(disambiguation) just lists us plus the two Australian towns.
20:59:12 <Ngevd> I think it's exactly thee
20:59:56 <elliott> Sigh. OK, who's going to go down there and ask them for their esolangers?
21:00:13 <Ngevd> I nominate itidus20
21:00:38 -!- Nisstyre has quit (Ping timeout: 248 seconds).
21:00:46 <oerjan> hm he hasn't been here in a while, has he?
21:01:01 <Ngevd> Future me wrote an IM in Feather
21:01:02 <elliott> Has he been here since Phantom_Hoover found those videos of him.
21:01:31 <elliott> 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:06:41 -!- Nisstyre has joined.
21:16:25 -!- Ngevd has quit (Quit: I'm a cuboid!).
21:28:33 <elliott> oerjan: Hey, tell me why Data.Sequence doesn't export its finger tree implementation.
21:30:20 <oerjan> it's not quite generic, iirc it is specialized to Int weights
21:31:56 <oerjan> so it's more of a use case than a general finger tree
21:35:59 <oerjan> i recall i tried genuine Data.FingerTree for http://oerjan.nvg.org/esoteric/Dupdog.hs
21:36:33 <oerjan> (i didn't like Int making it size limited.)
21:36:33 <Phantom_Hoover> http://www.ebay.com/itm/ZEISS-EM-109-ELECTRON-MICROSCOPE-COMPLETE-AND-GREAT-CONDITION-/280753510541?pt=LH_DefaultDomain_0&hash=item415e36988d
21:36:52 <Phantom_Hoover> I live in a world where $500 is a reasonable price for an electron microscope what
21:37:07 <CakeProphet> I've considered creating a new language based on dupdog, but I have absolutely no idea how to make it interesting.
21:37:50 <CakeProphet> 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 <oerjan> i'm not convinced that haskell file could possibly compile, i'm using FingerTree unqualified...
21:39:57 <CakeProphet> I made some of these things today. I now desire more delicious eastern European food.
21:40:10 <CakeProphet> also, pierogi would be a good esolang. I think
21:40:20 <CakeProphet> (just to make this train of thought on topic, you know)
21:40:20 <oerjan> oh wait it's not imported qualified
21:40:31 <elliott> <oerjan> it's not quite generic, iirc it is specialized to Int weights
21:40:35 <elliott> oerjan: yes but my weights are Ints :P
21:40:42 <elliott> 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:43:36 <CakeProphet> huh, so ruskie apparently means dumpling. But is also American slang for a Russian? wat?
21:45:35 <CakeProphet> okay so... the question for improving upon the concept of dupdog is.
21:45:47 -!- Sgeo|web has joined.
21:45:49 <CakeProphet> what kinds of source code transformations can one do that resule in meaningful data / control flow changes.
21:45:50 <Sgeo|web> Ooooh http://hackage.haskell.org/trac/haskell-prime/wiki/TypeDirectedNameResolution
21:45:58 -!- Nisstyre has quit (Ping timeout: 248 seconds).
21:46:44 <elliott> Sgeo|web: You don't even know Haskell, you have no right getting excited about proposals.
21:47:13 <CakeProphet> I think TypeDirectedNameResolution is kind of bad actually.
21:47:28 <Sgeo|web> I haven't read it yet, just the problem it's supposed to solve >.>
21:47:59 -!- Nisstyre has joined.
21:49:36 <elliott> Phantom_Hoover: He took about half an hour to write a program to concatenate the files named in the argument list.
21:50:01 <elliott> Phantom_Hoover: I haven't seen any indication that he's written any Haskell program that isn't hello world, either.
21:50:11 <Sgeo|web> elliott: I wrote a BF interpreter once
21:50:17 <Phantom_Hoover> elliott, so wait, even when he was a linguistic Casanova, he didn't bother to learn Haskell?
21:50:21 <elliott> Sgeo|web: You think you could replicate that?
21:50:45 <elliott> 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:48 <CakeProphet> 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 <elliott> (If he objects to this I'll find a quote saying almost exactly that in the logs.)
21:51:04 <Phantom_Hoover> elliott, I fear you are going to fall into a well of ~s.
21:51:07 <elliott> oerjan: Anyway it still sucks that it isn't exported.
21:51:09 <elliott> Phantom_Hoover: ~~~~~~~~~~`````````
21:51:33 <Sgeo|web> elliott: surely that's only for Ruby...
21:51:39 <CakeProphet> probably the only meaningful Haskell program I've written, honestly.
21:52:17 <Phantom_Hoover> CakeProphet, doesn't matter, you may now pick a random point in the file and put the word 'bullet' in it.
21:52:25 <CakeProphet> with.... HIGHER-ORDER FUCTIONS ON THE ZIPPER. -gasp-
21:52:31 <elliott> oerjan: are you sure that FingerTree isn't the one I linked to?
21:52:44 <elliott> CakeProphet: A zipper is the obvious way to do a BF tape.
21:52:56 <CakeProphet> there is nothing extraordinary about the choice.
21:53:11 <oerjan> 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:34 <elliott> oerjan: you said you wrote it
21:54:18 <CakeProphet> I would think that an efficient dupdog interpreter is actually somewhat difficult.
21:54:19 <elliott> oerjan: maybe I should just write my own finger trees
21:54:36 <elliott> reversing just changes which end you index from.
21:54:55 <oerjan> CakeProphet: my alternative idea would have been using ropes
21:55:07 <elliott> oerjan: that's what _I'm_ trying to write
21:55:14 <elliott> oerjan: except ropes still have O(n) reversing
21:55:15 <CakeProphet> elliott: well no you can use state also for the character translations.
21:55:29 <oerjan> elliott: well of course with a direction bit
21:55:45 <Sgeo|web> Is there a functional data structure that has O(1) access to both ends and less efficient access in the middle?
21:55:58 <oerjan> Sgeo|web: yes, finger trees
21:56:00 <elliott> Sgeo|web: yes, finger trees
21:56:11 <elliott> (list as in python list or whatever)
21:56:32 <elliott> I kind of wish Seqs were lazy somehow :)
21:58:17 <CakeProphet> it just kind of looks like a terrible hack to get some OO-style syntax to me.
21:58:27 <elliott> I've already argued with you about TDNR so don't.
21:59:14 <CakeProphet> not much to argue about then if we agree....
21:59:39 <oerjan> elliott: i am wondering if Data.FingerTree is lazy enough for my Dupdog.hs to actually work efficiently on huge duplications
21:59:55 <oerjan> that was the intent of not using Int, but...
22:01:05 <CakeProphet> I'm trying to figure how to make a loop entirely out of source code transformations.
22:01:26 <oerjan> to quine, or not to quine
22:02:45 <oerjan> incidentally, i don't think anyone has proved dupdog conclusively non-tc
22:03:12 <oerjan> ...that's not a proof >:P
22:03:22 <elliott> CakeProphet: we said the same about ():^
22:04:20 <elliott> 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:34 <elliott> (given data Ins = Push [Ins] | Dup | Call)
22:05:00 <CakeProphet> well there is technically unbounded memory in that you can just duplicate everything a lot.
22:05:31 <elliott> CakeProphet: (My "tc" interpreter has been proved Turing-complete.)
22:05:37 <elliott> Well. It attempts to implement a language formally proven TC.
22:06:28 <elliott> 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 <elliott> It also has another kind of control (reverse).
22:06:40 <CakeProphet> a no-op would probably be helpful for getting precise control.
22:07:04 <CakeProphet> but there are no no-ops. everything does something.
22:08:06 <elliott> 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 <elliott> 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:57 -!- Phantom_Hoover has quit (Quit: Leaving).
22:11:01 <oerjan> i'm not sure what operations ropes are supposed to have, in particular what you don't get from Seq
22:11:24 <elliott> oerjan: Seq Char would give me the same operations, but be ridiculously inefficient
22:11:28 <elliott> oerjan: in terms of memory usage, at least
22:11:40 <elliott> oerjan: which is why ropes use packed arrays at the leaves
22:12:05 <oerjan> oh. so you actually _don't_ want Seq, because you don't want the default valuation of 1 for each leaf
22:12:05 <elliott> Obviously (Seq ByteString) doesn't work because the length of the ByteString (in _codepoints_ once decoded) contributes to length, indexing, etc.
22:13:11 <oerjan> so even if it _did_ export its data structure, it wouldn't help.
22:14:24 <oerjan> wtf did i have to let windows install an update right now
22:14:29 <elliott> I'm not actually sure what the
22:15:01 <oerjan> elliott: link to Data.Sequence source please
22:15:23 <elliott> copumpkin: I probably should, but I swear I've implemented them without that before :-P
22:15:27 <elliott> oerjan: http://www.haskell.org/ghc/docs/latest/html/libraries/containers/src/Data-Sequence.html
22:19:45 <oerjan> huh indeed the Elem type is what enforces size 1
22:22:57 <Patashu> 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 <Patashu> Is this a problem that would be easy, hard or impossible to fix?
22:26:20 <elliott> oerjan: You should fix this problem in the next Haskell Report you write.
22:30:35 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:32:48 -!- sllide has quit (Read error: Connection reset by peer).
22:33:20 <elliott> -- > a = array (1,100) ((1,1) : [(i, i * a!(i-1)) | i <- [2..100]])
22:33:24 <elliott> huh, I had no idea that was valid
22:34:26 <oerjan> strict in the indices, lazy in the values
22:36:02 <Gregor> http://www.smbc-comics.com/index.php?id=2397 Troof
22:39:28 <elliott> fizzie: The Google Books data omit years in which there were no occurrences, right?
22:41:37 <CakeProphet> `runperl print (("buy new engine", "buy used car")[int(rand(2))])
22:41:39 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: runperl: not found
22:41:56 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found
22:42:35 <Patashu> `run perl print (("buy new engine", "buy used car")[int(rand(2))])
22:42:37 <HackEgo> 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 <Patashu> `run haskell main = putStrLn "Hello, World!"
22:42:43 <HackEgo> sh: haskell: command not found
22:43:48 -!- EgoBot has joined.
22:43:54 <elliott> There we go; there's the improvement.
22:45:00 <CakeProphet> elliott: why not have it on HackEgo as well?
22:45:22 <olsner> 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 <elliott> 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:37 <HackEgo> rm: cannot remove `bin/runpython': No such file or directory
22:45:49 <olsner> i.e. for some people, elves coming to fuck you in the night is considered a good thing
22:45:56 <elliott> CakeProphet: As I said, brbing.
22:46:14 <CakeProphet> elliott: inferior in what way. (when you get back, silly billy)
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 <Sgeo|web> Elves are terrific. They inspire terror.
23:21:01 <Sgeo|web> (I don't think that word is suppose to be "inspire", but I forget what it is)
23:21:10 <Sgeo|web> ANd also that quote ruined the word "terrific" for me
23:48:20 <CakeProphet> `run perl -e 'print (("get new engine", "get used car")[int(rand(2))])'
23:48:28 <CakeProphet> I solve the problems in my life pseudorandomly
23:49:20 <elliott> fizzie: Do you think I should just drop the lines with less than five grams?
23:49:32 <elliott> fizzie: There seem to be rather a lot of them:
23:53:41 <elliott> CakeProphet: Hey, give me some Perl to print only the line after the line matching a regex.
23:54:18 <CakeProphet> 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 <CakeProphet> I think the engine is the better choice, even though people traditionally do not replace engines.
23:55:10 <elliott> Also, move somewhere where cars are unnecessary.
23:55:31 <Jafet> Cars are unnecessary everywhere.
23:56:12 <CakeProphet> I'm trying to think of the best way to do this.
23:56:22 <shachaf> perl -ne 'print if $p;$p=0;$p=/regexp/'
23:56:34 <elliott> (I could have written that myself, but I didn't want to.)
23:56:39 <elliott> shachaf: I don't think = /regexp/ works.
23:56:51 <elliott> Since you can do "print if /.../".
23:57:17 <CakeProphet> ....oh, yeah that's the easiest way I guess. lol
23:57:20 <elliott> That would explain why there's a pause before it prints that line.
23:57:32 <shachaf> I don't even initialize the variable.
23:57:38 <shachaf> Because I don't know how to do that in Perl.
23:57:55 <shachaf> elliot: I like CakeProphet's solution.
23:58:16 <shachaf> CakeProphet: It gets reset on every iteration?
23:58:35 <shachaf> If it doesn't, then presumably the =0 is necessary.
23:58:51 <elliott> If CakeProphet was right, it wouldn't work at all, because the variable would be reset every iteration.
23:58:58 <elliott> That's why shachaf is right.
23:59:13 <elliott> shachaf: How are you wrong?
23:59:27 <shachaf> elliott: Right, but the $p=0 is unnecessary.
23:59:30 <CakeProphet> it's just that the $p=0 is unecessary not that he's wrong.
23:59:34 <shachaf> It was in fact just stupid.
23:59:43 <elliott> It will stay true after the first line printed.
23:59:43 <shachaf> perl -ne 'print if $p;$p=/foo/'
23:59:50 <elliott> This is why mutable variables suck.
23:59:52 <elliott> elliott@katia:~/Code/ngrams$ ls -lh googlebooks-eng-all-5gram-20090715-478.csv foo
23:59:52 <elliott> -rw-rw-r-- 1 elliott elliott 19M 2011-10-14 00:52 foo
23:59:53 <elliott> -rw-r--r-- 1 elliott elliott 936M 2010-12-25 00:03 googlebooks-eng-all-5gram-20090715-478.csv