←2010-08-09 2010-08-10 2010-08-11→ ↑2010 ↑all
00:00:28 <cpressey> Well it's either that, or get a ham radio operator's license, clearly.
00:00:38 -!- relet1 has quit (Quit: Leaving.).
00:00:49 <Phantom_Hoover> Ligature!
00:01:03 <cpressey> Phantom_Hoover: Quite so.
00:01:17 <Phantom_Hoover> cpressey, you use Libertine too?
00:01:36 <cpressey> Nope. But I know you're excited about it.
00:01:56 <Phantom_Hoover> Ligatures!
00:01:58 <cpressey> I use a font called (I think) "Crap Windows Font"
00:02:54 <Phantom_Hoover> How crap.
00:03:15 <Phantom_Hoover> I was going to s/// on that, but it's way better that way.
00:07:41 <cpressey> ‏heyo
00:08:12 <Phantom_Hoover> Incidentally, why is Basic generally viewed as an offence to computing?
00:08:12 <cpressey> Ooh. I dunno about your client, but my client displays that right-justified.
00:08:30 <Phantom_Hoover> What?
00:08:34 <cpressey> Phantom_Hoover: Because the masses do not understand the beauty of GOTO.
00:08:54 <Phantom_Hoover> cpressey, pff. Goto is the poor man's call/cc.
00:09:16 <cpressey> Phantom_Hoover: Hey, you asked.
00:10:12 <cpressey> I will design a language and put up a sign that says "DO NOT WRITE CRAP CODE IN THIS LANGUAGE" and it will be the best language.
00:10:35 <Phantom_Hoover> Heh.
00:11:08 <Phantom_Hoover> How about make it reject any programs with spelling or grammatical errors in the comments or procedure names?
00:14:38 <cpressey> 10 REM O HAI
00:17:00 <zzo38> GOTO is sometimes useful. But sometimes there is better ways, depending on what programming language you use and what you are trying to do with it.
00:17:36 <Phantom_Hoover> zzo38, goto is an offence against god!
00:18:26 <zzo38> Phantom_Hoover: I disagree.
00:18:39 <Phantom_Hoover> zzo38, HERETIC
00:20:38 <zzo38> I want to write a feat and spell in D&D game called "Merciful to Gibbering Mouthers", so that my character can have that feat and that spell.
00:26:44 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
00:31:22 <zzo38> If you play D&D game which class/race/feat/spell you should prefer to use instead?
00:35:08 -!- tombom__ has quit (Quit: Leaving).
00:38:41 <cpressey> Poet.
00:38:43 <cpressey> .quit
00:38:49 <cpressey> Or, y'know
00:38:50 -!- cpressey has quit (Quit: Leaving.).
00:47:23 * Sgeo still has yet to wrap his mind around thisContext
00:48:09 <oerjan> it's always either this or that
00:49:13 <alise> Sgeo: it's a souped-up continuation
00:49:17 <alise> basically a first-class representaiton of the call stack
00:49:28 <Sgeo> Is it always a MethodContext, or can it be a BlockContext?
00:49:42 <alise> Presumably the latter if you say thisContext in side of a block. Maybe.
00:49:43 <alise> Not sure.
00:49:47 <alise> Maybe blocks inherit it upwards for convenience.
01:04:51 -!- Killerkid has joined.
01:10:54 <alise> Killerkid: So you're a kid that kills?
01:13:05 <alise> Killerkid: And apparently doesn't speak.
01:15:08 -!- Wamanuz has quit (Remote host closed the connection).
01:20:24 -!- AnMaster has quit (Quit: ZNC - http://znc.sourceforge.net).
01:20:31 <alise> Quite.
01:20:35 <alise> Quite Quit, Quine.
01:20:37 <alise> Quill.
01:20:42 <alise> Quirks.
01:27:31 <Sgeo> I'm going to bite the bullet and try Squeak proper
01:29:30 <oerjan> if it squeaks, it's not a real bullet. i think.
01:32:14 <pikhq> Hmm. Now I have a good *reason* to typeset public domain books.
01:32:32 <pikhq> Now to wonder what the optimal dimensions are for a PDF on here.
01:34:07 <oerjan> Public Domain Format
01:36:38 <alise> Sgeo: Pharo IS Squeak proper.
01:36:40 <alise> Sgeo: Literally.
01:36:45 <alise> Sgeo: They just improved a lot.
01:36:56 <alise> Sgeo: In fact, practically nobody recommends plain Squeak any more. Pharo is where it's at.
01:37:05 <Sgeo> Telemorphic looks fun
01:37:18 <alise> Pharo doesn't have its own tools or anything, it just bundles good shit that you'll use anyway, makes it look less like it was drawn with crayons, and is basically ongoing development.
01:38:20 <Sgeo> But does Pharo have stable FFI yet? I mean, it's the Squeak VM, yet somehow it seems up in the air
01:38:43 <alise> Squeak doesn't have a stable FFI either.
01:38:56 <Sgeo> ???
01:39:03 <Sgeo> Alien? Native FFI thingy?
01:39:27 <alise> Well, yeah, okay, so it is stable.
01:39:33 <alise> Pharo supports it too.
01:39:35 <alise> Pharo is based on Squeak, you know ...
01:39:37 <alise> Recent Squeak.
01:39:46 <alise> I was just making a snarky reference to FFIs sorta being anti-Smalltalk.
01:45:17 <Gregor> alise: DEBIAN FOREVARZ
01:53:18 -!- alise has quit (Remote host closed the connection).
01:53:54 -!- alise has joined.
01:53:58 <alise> Quite.
01:59:53 <Sgeo> Hmm, afaict, what was meant on the Pharo homepage was the possibility of being included with the default image
02:00:51 * Sgeo mutters about structs whose size is determined at runtime
02:01:52 <oerjan> phar out
02:01:55 <alise> Gregor: lulz
02:02:07 <Sgeo> Hm
02:02:17 * Gregor wonders why he just got a "lulz"
02:02:27 <Sgeo> Due to Alien limitations, I might need to write some C for this
02:02:43 <alise> Gregor: For saying "DEBIAN FOREVARZ"
02:02:57 <Gregor> Ah. I thought that's what "Quite." was to X-P
02:03:14 <alise> Quiet lulz.
02:03:24 <zzo38> I don't think you can write structs whose size is determined at runtime, in C, you have to fake it. (GNU C offers some ways to fake it)
02:03:59 <Sgeo> n/m possibly
02:04:01 <alise> zzo38: JUST USE MALLOC
02:04:13 -!- nooga_ has joined.
02:04:18 <nooga_> hi
02:04:21 <nooga_> CTO http://theendisnear.no-ip.org/index.html
02:04:30 <alise> VRANVS IS A PLANET
02:04:46 <nooga_> FVCK
02:05:00 -!- nooga_ has changed nick to nooga.
02:05:00 <alise> VRANVS? FVCK THAT
02:06:04 <zzo38> alise: You can use malloc but that doesn't change the size of a struct, it only changes the size of the memory allocated for it. GNU C allows you to have array size to be zero so that you can add the size
02:06:18 <nooga> romans invaded england
02:06:33 <nooga> you're not roman, you're english
02:06:43 <alise> FVCK YOV
02:06:52 <nooga> SVRE
02:07:51 <nooga> THAT'D BE VNTRVE
02:08:47 <nooga> the mostrelaxing way of taling is talking like a troll
02:08:55 <nooga> talking*
02:09:30 <nooga> I BEG TO DIFFER
02:10:19 <alise> SHVT VP
02:10:19 <Gregor> I BEG FOR MERCY
02:10:26 <alise> GREGOR: DENIED
02:10:34 <zzo38> Gregor: OK
02:11:22 <Gregor> Dam nit
02:11:25 <Gregor> *damn it
02:11:26 <Gregor> "THOV"
02:11:31 <alise> THOV XD
02:11:42 <alise> GREGOR: CVRST, TOO
02:11:47 <zzo38> But I am different. I hav enot deny some mercy
02:11:49 <Gregor> I svck at this :(
02:11:52 <zzo38> s/hav enot/have not/
02:13:08 <alise> PERL -PE 'S/[VV]/V/G' | TR 'A-Z' 'A-Z'
02:13:28 <Gregor> lvlz
02:14:14 <nooga> http://en.wikipedia.org/wiki/Certificate_in_Advanced_English
02:14:32 <nooga> i'm going to pass that 'with flying colours'
02:14:38 <nooga> how cool is that!?
02:14:55 -!- alise has changed nick to ALISE.
02:15:02 <ALISE> VERILY
02:15:03 <nooga> oh
02:15:05 <nooga> well
02:15:07 <Gregor> nooga: Going to?
02:15:14 <nooga> yeah
02:15:27 <Gregor> Getting a little bit ahead of ourselves?
02:15:34 <nooga> what? :P
02:16:02 <nooga> it's just called ADVANCED
02:16:10 <nooga> okay
02:16:14 <nooga> I WILL
02:16:18 <nooga> better?
02:16:22 <Gregor> No
02:16:35 <nooga> awesome :/
02:16:39 <ALISE> S
02:16:40 <Gregor> Don't count your chickens before they've hatched?
02:16:53 <Gregor> alise: I refvse.
02:17:03 <nooga> vvvv
02:17:14 -!- Gregor has changed nick to NO_V.
02:17:15 <zzo38> This is the code you have to use, instead: l@>>perl.$> vvvv@d for(;;)}}{{{ ===@m ll.$THISISNOTAPIPE | pipetex texpipe |
02:17:17 * NO_V takes a vow.
02:17:24 <NO_V> Errr
02:17:24 <ALISE> *uow
02:17:26 <NO_V> Bow ...
02:17:38 * Sgeo installs Alien with a lot of help from #squeak
02:17:48 -!- NO_V has changed nick to Gregor.
02:17:57 * pikhq has determined that it is basically just painful to create a PDF for reading on a phone
02:18:06 <Gregor> pikhq: I'll bet.
02:18:13 <zzo38> Then don't create a PDF for reading on a phone
02:18:34 <nooga> facite iudicium et iustitiam et liberate
02:18:34 <nooga> vi oppressum de manu calumniatoris et advenam et pupillum et viduam nolite
02:18:34 <nooga> contristare neque opprimatis inique et sanguinem innocentem ne effundatis
02:18:35 <nooga> in loco isto
02:18:40 <zzo38> Use gzipped DVI format encoded in QR code
02:18:54 <nooga> this is from the city hall of my city
02:19:00 <nooga> how cool is that?!
02:19:36 <ALISE> VROLOGY
02:19:49 <nooga> VULNERABLE
02:20:03 -!- zzo38 has quit (Remote host closed the connection).
02:20:13 <pikhq> Let's see about a reader of free eBooks, then.
02:20:42 <pikhq> ALISE: $0.00
02:25:00 -!- augur has quit (Remote host closed the connection).
02:25:13 -!- augur has joined.
02:25:18 <nooga> ALISE
02:26:11 <nooga> VVOULD YOU?
02:26:20 <ALISE> "VVOULD"
02:26:24 <ALISE> FAIL
02:26:34 <nooga> VV -> W ?
02:26:51 <nooga> DOUBLE V? ISN'T IT?
02:27:03 <ALISE> TOVCHE
02:27:13 <pikhq> nooga: YES, THAT IS THE ETYMOLOGY
02:27:38 <nooga> OH
02:27:43 <pikhq> nooga: AND IT USED TO BE WRITTEN AS "VV" OR (ABOMINATION) "UU".
02:27:58 <nooga> CRAPULUS
02:28:03 <ALISE> Gregor: [[Christianity in the United States]] does not link to Jesus. Can you believe that?
02:29:09 <ALISE> Gregor: Why is 5CTJ so slow?
02:29:38 <nooga> pikhq: where are you from?
02:30:06 <nooga> are you a native speaker of english?
02:30:39 <ALISE> us, yes
02:30:43 <ALISE> i like to answer people's questions for them
02:30:44 -!- ALISE has changed nick to alise.
02:31:41 <nooga> this thread is about cut vs uncut nao!
02:32:07 <alise> x_x
02:32:19 <alise> Let's assume you're talking about films!
02:32:45 <pikhq> nooga: United States of America, and native speaker.
02:33:05 <nooga> pikhq: that's so rad
02:33:15 <alise> I'm a native speaker too, is that rad?
02:33:20 <nooga> it is
02:33:23 <nooga> sure
02:33:32 <alise> Yay radness
02:33:53 <nooga> i'm so awkward in using your native tongue
02:33:57 <nooga> heh
02:34:27 <alise> Don't worry, so are we.
02:34:53 <nooga> :|
02:36:23 <nooga> i can't understand Scots :|
02:36:48 <alise> nor can we!
02:36:55 <nooga> yeah
02:37:02 <alise> the best laid plans o' mine an' men / gang aft agley
02:37:06 <alise> *mice
02:37:08 <alise> first line: okay
02:37:14 <nooga> i've been to a scottish house party with some guys from london
02:37:17 <alise> second line: gonna assume that's "gong", aft sounds like "oft"... Agley?!
02:37:17 <Gregor> alise: Because it is lame.
02:37:20 <alise> What the fuck, Burns?
02:37:28 <alise> Gregor: Make it cool.
02:37:35 <alise> "Cheez (music)" HOW DO I GET TO JESUS
02:38:16 <Gregor> -> some country -> religion in some country -> Christianity -> Jesus
02:38:33 <alise> Yeah, it should be harder.
02:38:36 <alise> Like "find the longest path to Jesus".
02:39:08 <alise> Gregor: It doesn't allow category pages :(
02:39:15 <Gregor> "Five clicks to Stalin"
02:39:26 <alise> Five clicks to FPGA
02:39:28 <nooga> and then i was stoned and i was talking with the londoners and trying to pick up a scottish girl and i failed because i couldn't understand her speaking
02:39:34 <nooga> sooo ...
02:39:34 <alise> Five clicks to autoerotic asphyxiation
02:40:18 <nooga> jive!
02:42:40 <Gregor> Five clicks to Wikipedia
02:44:15 <nooga> pive clicks to hell
02:44:20 <nooga> f
02:44:24 <nooga> darn
02:44:36 <nooga> i'm too tired
02:45:40 <alise> Five clicks to Where You Started
02:46:03 <alise> Five clicks to Special:Random
02:46:40 <nooga> alise: one thing, how did you've manage to get from fpga to erotic asphyxiation?
02:47:05 <alise> i didn't
02:47:07 <nooga> oh
02:47:09 <nooga> sry
02:47:10 <alise> although i gotta try that now
02:47:17 <alise> Gregor: new challenge
02:47:18 <alise> :P
02:47:19 <nooga> now i see
02:47:38 <nooga> too tired
02:48:13 <nooga> i was coding for 8 hours straight, i guess i'm not in the best shape
02:50:24 <alise> Field-programmable gate array -> Ross Freeman -> Michigan -> United States of America -> Sexual revolution -> Sexuality -> Human sexuality -> Index of human sexuality articles -> Sexual fetishism ->
02:51:33 <alise> Field-programmable gate array -> Ross Freeman -> Michigan -> United States of America -> Sexual revolution -> Sexuality -> Human sexuality -> Index of human sexuality articles -> Sexual fetishism -> List of paraphilias -> Autoerotic asphyxiation
02:51:43 <alise> That's 10 clicks from FPGA.
02:51:52 <alise> Gregor: nooga: FPGA to autoerotic asphyxiation in less than 10 clicks. Go.
02:54:54 <nooga> awesome
02:55:04 <nooga> i'll try that
02:57:58 <Gregor> alise: I feel that I'm close ...
02:58:06 <alise> TMI
02:58:53 <nooga> United States of America -> Sexual revolution -> Sexuality -> Human sexuality -> Index of human sexuality articles -> Sexual fetishism -> List of paraphilias -> Autoerotic asphyxiation
02:59:01 <nooga> USA -> deviation
02:59:07 <alise> nooga: wha?
02:59:09 <alise> you start at FPGA
02:59:11 <alise> not USA
02:59:14 <Gregor> "List of sex positions"'s picture of fellatio is of gay fellatio. I approve :P
02:59:31 <Gregor> In fact, its picture of cunnilingus is also gay. I also approve.
02:59:39 <nooga> huh
03:00:00 <nooga> Gregor: are you gay? :D
03:00:14 <Gregor> Depends who's asking :P
03:00:26 <nooga> lol
03:01:31 <alise> Gregor: How many clicks?
03:01:43 <Gregor> alise: I haven't gotten there yet, I got distracted by Wikipedia porn :P
03:01:54 <alise> The highest-quality of all porn!
03:02:54 <nooga> http://en.wikipedia.org/wiki/BDSM <- not about Badly Developed Sadol Machine ;|
03:03:39 <Gregor> FPGA -> medical imaging -> organ (anatomy) -> sex organs -> sex -> category: human sexuality -> same as yours from here.
03:03:47 <Gregor> So nine
03:04:25 <nooga> but look at the rich references
03:05:39 <alise> Gregor: Categories are cheating dude
03:05:45 <Gregor> alise: So's your face.
03:07:19 <nooga> beh
03:07:19 <nooga> gn8
03:07:19 <alise> G'neight.
03:07:19 -!- nooga has quit (Quit: Lost terminal).
03:07:19 <Gregor> Actually, every picture on "List of sex positions" that's meaningful for gay couples is gay. Bahahahaha.
03:07:21 <alise> Including "cunnilingus"!
03:07:34 <alise> FPGA -> Bredboard -> Cutting board -> Vegetable ->
03:07:35 <Gregor> Uhh, yes.
03:07:40 <alise> I sure hope I can rely on Wikipedia's perversity.
03:08:08 <alise> FPGA -> Breadboard -> Cutting board -> Vegetable -> Seed ->
03:08:33 <alise> FPGA -> Breadboard -> Cutting board -> Vegetable -> Seed -> Seed (disambiguation) ->
03:08:41 <alise> This is going to suck
03:09:29 <alise> FPGA -> Breadboard -> Cutting board -> Vegetable -> Seed -> Seed (disambiguation) -> Semen ->
03:09:57 <alise> FPGA -> Breadboard -> Cutting board -> Vegetable -> Seed -> Seed (disambiguation) -> Semen -> Autofellatio ->
03:10:04 <alise> If nothing else, this will be an amusing route.
03:10:16 <alise> FPGA -> Breadboard -> Cutting board -> Vegetable -> Seed -> Seed (disambiguation) -> Semen -> Autofellatio -> Autoeroticism ->
03:10:43 <alise> I give up.
03:11:41 <myndzi> haha @ seed (disambiguation)
03:11:42 <myndzi> that's nice
03:11:58 <alise> I was sort of going for the humour angle that time. :P
03:14:01 <alise> Well... I had best be going soon.
03:14:07 <alise> Have to be up at 8 and all.
03:15:15 -!- sshc_ has joined.
03:17:15 <alise> I AM TOTALLY GONE LOL (i'm not)
03:18:07 -!- sshc has quit (Ping timeout: 258 seconds).
03:21:19 <alise> I will now be disapparating.
03:21:24 <alise> Hopefully.
03:21:48 <alise> Bye.
03:21:50 -!- alise has quit (Quit: Leaving).
04:01:08 <Gregor> http://www.cs.purdue.edu/people/images/graduate_students/gkrichar.jpg Wow, this is like, the worst picture of me ever.
04:01:18 <Gregor> Why has my face shrunk into the center of my head?
04:01:23 * Sgeo reads about Newspeak
04:01:34 <Sgeo> While the model sounds fun, I'm not grokking the syntax
04:01:41 <Sgeo> And afaict, it's not particularly mature
04:02:04 <oerjan> the syntax is doubleplusgood. duh.
04:02:28 -!- cpressey has joined.
04:02:41 <Sgeo> Actually, how does E handle security? With capabilities like Newspeak?
04:02:58 <oerjan> Gregor: facehuggers
04:03:11 <oerjan> common side effect
04:04:51 <Gregor> Daaaaaayamn.
04:09:33 <Ilari> Sgeo: E has capabilities as central concept...
04:13:40 <cpressey> I take is this is not Wouter's E under discussion...
04:13:49 <pikhq> I hate piracy. And not for any typical reasons.
04:14:03 <pikhq> I hate piracy because MP3 is still the default, not FLAC.
04:15:04 <Gregor> MP3 -> FLAC is a pretty insane jump to imagine.
04:15:09 <Gregor> Let's imagine MP3 -> AAC
04:15:11 <Gregor> That's more feasible.
04:15:58 <pikhq> ButbutbutFLAC
04:20:25 <Gregor> http://codu.org/pics/main.php?cmd=imageorig&var1=Assorted%2Fmyeye-2010-08-07-4.jpg I ANSWER YOU WITH AN EXTREME CLOSEUP OF MY EYE
04:23:16 <cpressey> No R package for Intrepid, it seems. Pity.
04:24:28 <cpressey> "R is an implementation of the S programming language..." OMG, that's like my pet peeve *in reverse*.
04:24:55 <cpressey> At least they're up front about it being an environment.
04:24:57 <Gregor> Your pet peeve is ... languages and implementations being one in the same?
04:25:06 <Gregor> s/in the/and the/
04:25:15 <cpressey> Si, senor.
04:25:27 <Gregor> Plof's implementation is named cplof, do I win a cookie?
04:25:44 <cpressey> Si, señor.
04:26:50 <Gregor> YAY COOKIE
04:30:16 <cpressey> "configure: error: No F77 compiler found
04:30:31 <cpressey> I... that's interesting.
04:31:29 <cpressey> I often see configure *check* for the existing of a Fortran compiler, but I've never seen it actually *care* before.
04:32:18 <cpressey> A... yup. R requires Fortran 77. Noice.
04:32:42 <cpressey> And I found the Ubuntu package, so... tempting as it is to build from source...
04:34:29 <Gregor> WOW
04:34:32 <Gregor> R requires Fortran?
04:34:47 <cpressey> Yes! Selecting the package selected a bunch of F77 packages as deps...
04:34:48 <Gregor> I've used R. The combination of how terrible R is with the fact that it requires Fortran makes me feel ... so dirty ...
04:35:07 <cpressey> Ooh. It's terrible you say? Now I'm even more intriughed.
04:35:45 * cpressey stops himself from typing *intrigued.
04:36:25 <cpressey> I figure it must have miserable string processing, so I was wondering how bad it would be for esolang implementation.
04:38:49 <pikhq> I love having root on my phone.
04:40:18 <pikhq> Hmm. Now, should I start by replacing my kernel?
04:42:31 <Sgeo> Any opinions on Newspeak programming language?
04:50:17 <cpressey> Newspeak fails to excite me. It could be OK.
04:52:48 <cpressey> Neko, Boo, Pure.
04:53:18 <cpressey> Y'know, one could make a programming language whose programs consist only of the names of other programming languages.
04:54:17 <oerjan> using fortran's comment convention looks like a good bet, then, iirc
04:55:29 <oerjan> we have Go for flow control
04:57:49 <cpressey> Boo presumably throws an exception...
04:58:27 <oerjan> Logo should be good for picture data
04:59:22 <pikhq> The Palm Pixi becomes pretty awesome when you "jailbreak" it.
04:59:37 <pikhq> (and by "jailbreak" I mean "use the official SDK")
05:00:00 <Sgeo> Disconnecting soon
05:00:20 <Sgeo> Or not
05:00:23 <Sgeo> I'm weak
05:00:57 -!- oerjan has quit (Quit: Boo!).
05:01:04 <cpressey> > paste("pika","chu",sep="")
05:01:04 <cpressey> [1] "pikachu"
05:01:23 <cpressey> String concatenation in R! Yes, 'sep=""' is required. Otherwise you get "pika chu".
05:09:59 <pikhq> And now, a terminal...
05:11:44 <pikhq> And SSH.
05:13:21 <cpressey> And to get output to stdout without implementation-added noise, you have to say write(5,file=""). I'm noticing a pattern here...
05:27:39 <Sgeo> Newspeak or E?
05:27:51 <Sgeo> I like Newspeak's "no static data" stuff
05:47:36 -!- cpressey has quit (Quit: quit()).
06:28:43 -!- GreaseMonkey has joined.
06:39:23 -!- myndzi\ has joined.
06:40:22 -!- myndzi has quit (Ping timeout: 260 seconds).
06:41:46 -!- myndzi\ has changed nick to myndzi.
06:43:11 <pikhq> ... GAH
06:43:19 <pikhq> My fucking phone runs Pulseaudio.
06:43:24 <pikhq> No joke, they put Pulseaudio on here.
06:44:48 <Gregor> Hyuk
06:45:19 <Mathnerd314> pikhq: why is that bad?
06:45:31 <pikhq> Mathnerd314: Pulseaudio is the daemon that breaks your audio!
06:45:49 <Mathnerd314> not according to their FAQ
06:46:07 <pikhq> I hate abstraction layers on top of abstraction layers.
06:47:01 <Mathnerd314> well, Pulseaudio is probably the final layer
06:47:22 <pikhq> ... Most programs then abstract the audio further.
06:47:40 <pikhq> http://upload.wikimedia.org/wikipedia/commons/0/00/Pulseaudio-diagram.svg
06:47:46 <pikhq> You may now vomit.
06:47:47 <Mathnerd314> curses, I knew I should have used the word "penultimate"
06:48:10 <pikhq> *You see how there are further daemons in there*?
06:48:38 <Mathnerd314> daemons are cheap
06:49:22 <pikhq> And the Pulseaudio thing in the middle there is busy doing nothing that couldn't be done in ALSA or OSS.
06:50:26 <pikhq> (granted, some of it isn't *being* done there, but this is a flaw in the base audio stack, not something deserving of a behemoth-in-the-middle)
06:50:42 <Mathnerd314> the problem is scale. That diagram should have entries sized by LOC
06:51:24 <pikhq> The problem is that you get nearly-equivalent functionality without pulseaudio.
06:51:46 <pikhq> It is literally sitting there wasting CPU time.
06:51:52 <fizzie> Hey, my phone runs PulseAudio too. Everyone's doing it.
06:52:46 <Mathnerd314> pikhq: your computer is sitting there wasting CPU time right now, unless you're doing some distributed computing
06:53:17 <pikhq> Mathnerd314: When there is not any CPU time being *used*, the CPU sits *idle*.
06:53:34 <pikhq> When it's being used for no *reason*, the CPU is acting as a *space heater*.
06:54:16 <pikhq> (well, when it's being used at all, it acts as a space heater. Just soley as such when there's no point in it being used.)
06:55:21 <Mathnerd314> so... in your perfect universe, a computer uses no energy when you're using it, even if it's turned on.
06:56:35 <fizzie> It's reasonably close to that already; when idle, it uses a small-ish fraction of what it does when doing stuff.
06:56:50 <pikhq> When idle, most of it actually is off.
06:57:28 <pikhq> If this *weren't* true, there'd be hardly any temperature fluctuations based on usage...
06:57:34 <Mathnerd314> even with PulseAudio...
06:58:08 <fizzie> (I don't know if PulseAudio's CPU use is a very terrible thing, though, it's more of a principle thing. And Pulse's at least idle when you're not bleeping audio out or in.)
06:58:27 <pikhq> Pulseaudio does work that doesn't need to be done. Hence, it is the single most retarded kind of thing, even if it doesn't effect all that much.
06:58:58 <Mathnerd314> well, good luck removing it
06:59:03 <pikhq> Trivial.
06:59:10 <Gregor> *affect
06:59:21 <pikhq> My desktop system has never ran Pulseaudio.
06:59:53 <pikhq> Linux audio works just fine without Pulseaudio being involved.
07:01:02 <fizzie> I do like the "you get a nice tool which can pipe the audio of different apps to different places" thing you get with it. I mean, yes, most apps do let you change the alsa device string somewhere, but it is often very clumsy.
07:01:33 <Gregor> pikhq: The funny thing is that pulseaudio came into popularity JUST in time to be useless.
07:01:42 <Gregor> pikhq: A couple years earlier and it would have been useful.
07:01:48 -!- sshc_ has changed nick to sshc.
07:02:08 <pikhq> fizzie: Yeah, but that really ought to be done in the libalsa layer...
07:02:43 <pikhq> Gregor: Yeah, before Alsa's mixing stopped being a pain.
07:03:24 <pikhq> (well. It has never been a pain if you had hardware mixing. As I did until a couple years ago. :P)
07:05:12 <fizzie> I also would've liked the network audio thing a couple of years ago, and I wouldn't necessarily stuff that into ALSA, but that's a bit specialized use-case.
07:10:32 -!- cheater99 has quit (Read error: Operation timed out).
07:13:55 -!- Slereah has quit (Ping timeout: 265 seconds).
07:15:11 -!- cheater99 has joined.
07:16:28 -!- Slereah has joined.
07:39:08 -!- augur has quit (Remote host closed the connection).
07:40:25 <fizzie> Also: last night I had a dream, where Gregor banned me and fungot from the channel, because he wanted to run something called OpenFungot; I think it was some sort of fungot variant that anyone could edit with a browser. (Although wouldn't that be called hackungot or something?) First #esoteric dream, I think, at least out of those I recall.
07:40:26 <fungot> fizzie: why isn't this working? please tell me.
07:40:50 <fizzie> fungot: Don't ask me, ask Gregor; he's the one whose idea it was!
07:40:52 <fungot> fizzie: get a perl one lying around on your build machine, which involves hacking the command processor full scheme? you're presenting a seemingly unfounded argument and then does everythign else on the hill or a new version
07:50:15 -!- augur has joined.
07:51:16 <coppro> fact: I love arpeggios
07:51:21 -!- augur has quit (Remote host closed the connection).
07:51:26 -!- augur has joined.
07:53:12 <fizzie> It's the Jxy effect in Impulse Tracker.
07:53:39 <fizzie> (Sorry, I forgot the "fact:" prefix.)
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:28 -!- cheater99 has quit (Ping timeout: 260 seconds).
08:18:04 -!- GreaseMonkey has quit (Quit: New quit message. Entering 2006 in style.).
08:20:34 -!- Sgeo_ has joined.
08:21:33 -!- Sgeo has quit (Ping timeout: 240 seconds).
08:33:09 -!- Phantom_Hoover has joined.
09:33:48 -!- fruitbag` has joined.
09:35:33 <Phantom_Hoover> fruitbag`!
09:36:34 <fizzie> Huntom_Phaever!
09:36:46 -!- MigoMipo has joined.
09:39:40 <Sgeo_> Obviously, fizzie is Lumenos
09:49:53 -!- olsner has joined.
09:53:12 -!- Phantom_Hoover has quit (Quit: Leaving).
09:53:27 -!- Phantom_Hoover has joined.
09:53:39 <Phantom_Hoover> fizzie is Lumenos!
09:53:44 <Phantom_Hoover> It all makes sense!
09:54:30 <olsner> what's lumenos?
09:54:37 <fizzie> Also, dark matter is actually peanut butter!
09:54:49 <fizzie> (It makes approximately as much sense.)
09:55:45 <Phantom_Hoover> fizzie, my god!
09:57:49 <olsner> my god, it's full of peanut butter!
09:58:30 <fizzie> olsner: You have a weird sort of god.
09:59:17 -!- augur has quit (Remote host closed the connection).
09:59:32 -!- augur has joined.
09:59:34 <Phantom_Hoover> fizzie, 2001?
10:00:02 <fizzie> Phantom_Hoover: Yes, yes, but I find it more amusing to interpret it as a peanut-buttery god.
10:04:20 -!- GreaseMonkey has joined.
10:31:38 -!- augur has quit (Quit: Leaving...).
10:31:43 -!- augur has joined.
10:38:19 <Sgeo_> "Next, Melissa would have to ask you, "Can I have a direct connection to the Internet?" At this point only the most naive user would fail to realize that this email message, no matter how strong the claim that it came from a friend, is up to no good purpose. You would say "No!""
10:38:22 <Sgeo_> AHAHAHAHAHAHAHA
10:38:38 <Sgeo_> http://wiki.erights.org/wiki/Walnut/Complete#Melissa
10:43:08 <Phantom_Hoover> So their security system is to drive you insane with things asking for permissions, causing you to instinctively click "yes" every time a dialogue pops up?
10:43:37 <Phantom_Hoover> As such: "Can I have your bank account details?" "YESJUSTSHUTUP"
10:48:18 * Sgeo_ ponders making his computer unbootintowindowsable during certain times
10:49:08 <Phantom_Hoover> Sgeo_, s/certain/all/
10:52:02 <Sgeo_> Bye
10:57:07 -!- Sgeo_ has quit (Ping timeout: 265 seconds).
11:15:08 -!- GreaseMonkey has quit (Quit: New quit message. Entering 2006 in style.).
11:15:20 <Phantom_Hoover> Ligature!
11:16:22 -!- Wamanuz has joined.
11:24:00 <fizzie> A metal band used to attach a reed to the mouthpiece of a clarinet or saxophone?
11:33:37 <Phantom_Hoover> That is indeed what a Phantom_Hoover is.
11:38:32 <fizzie> †7. The state of being bound; suspension of the intellectual or physical powers (see quots.). Obs. 1727-41 CHAMBERS Cycl., Ligature, among mystic divines, signifies a total suspension of the superior faculties, or intellectual powers of the soul... This passive state of these contemplative people they call their ligature. Ligature, is also used for a state of impotency, in respect to venery, caused by some charm, or witchcraft.
11:38:59 <fizzie> OED is the most useful thing ever for willful misunderstandings.
11:39:28 <Phantom_Hoover> Qufiffle.
11:40:47 <fizzie> Although that "dictionary of euphemisms" I got from a random bookstore visit is also useful. Except that half the entries map to a penis.
11:42:41 <fizzie> Also a review describes that book as "unputdownable", which is quite a word.
11:55:37 -!- pikhq has quit (*.net *.split).
11:58:16 -!- pikhq has joined.
12:31:52 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
12:39:18 -!- Phantom_Hoover has joined.
12:42:04 -!- tombom has joined.
12:57:23 <Phantom_Hoover> How is the bitness of a processor even decided?
12:58:06 <Phantom_Hoover> Is it the size of the GPRs? The length of the types operated on by the instructions? The size of the addresses?
12:59:09 <fizzie> Size of the GPRs, usually. It's a bit vague.
12:59:37 <Phantom_Hoover> Indeed...
12:59:42 <fizzie> 6502, for example, is usually considered an 8-bit CPU, since the instructions operate on 8-bit data (regs and memory), even though addresses are 16 bits.
13:00:05 <Phantom_Hoover> Well, the 8086 had 20-bit addresses, but was a 16-bit processor.
13:00:56 <Phantom_Hoover> How is "GPR" defined in this context?
13:01:16 <fizzie> That's also a bit vague. The sort of registers that are usually involved in arithmetic-related opcodes?
13:01:36 -!- ais523 has joined.
13:01:59 <fizzie> I'm not sure what Z80 is; the general-purpose regs are 8-bit (A, B, C, D, E, H, L), but the instruction set also has some (but not as many as 8-bit) 16-bit arithmetic opcodes that treat the registers as pairs BC, DE, HL. And the memory-indexing registers IX and IY are 16-bit only (unless you count undocumented opcodes), as are addresses.
13:02:09 <Phantom_Hoover> fizzie, so does that include x86-32's 96-bit FP registers and 128-bit SSE registers?
13:02:35 <fizzie> I don't think those count as general-purposey enough.
13:02:41 <Phantom_Hoover> Although you can't really use either for normal arithmetic.
13:03:00 <fizzie> Wikipedia categorizes Z80 as "an 8-bit microprocessor", still.
13:03:16 <fizzie> A majority of the instruction set operates on 8-bit data, maybe that's what counts there.
13:04:17 <Phantom_Hoover> Probably, yes.
13:05:03 -!- Sgeo has joined.
13:05:50 <fizzie> Another random Wikipedia bit: "A CPU can be classified on the basis of the data it can access in a single operation. An 8-bit processor can access 8 bits of data in a single operation, as opposed to a 16-bit processor, which can access 16 bits of data in a single operation."
13:06:49 <ais523> just when you thought the SCO situation couldn't get any more fun: they've just applied to the bankruptcy court for permission to hire a firm to help them with their tax returns, because they no longer have any employees who understand how to do it and they still haven't paid taxes for 2008 yet
13:07:04 <Phantom_Hoover> Well then, x86 with SSE is a 128-bit architecture.
13:07:06 <fizzie> That's a bit vague too, and you could start arguing the Z80 as a 16-bit CPU on that basis.
13:09:27 <Phantom_Hoover> The "arithmetic operations" definition is probably the best I've heard so far.
13:10:20 <fizzie> Another definition-that-is-not-a-definition: ask N people (where N is sufficiently large) what the "bitness" of a particular CPU is, then pick the majority opinion.
13:11:45 <Phantom_Hoover> Well, the SSE and FP registers on x86 cannot be used with integers the same size of the register.
13:11:53 <Phantom_Hoover> s/of/as/
13:12:21 <Phantom_Hoover> So you can only use 32- or 64-bit ints with a single instruction. I think.
13:12:45 <fizzie> On the other hand, the 80-bit FPU regs do contain 80 value bits. But maybe floating-point doesn't count.
13:12:57 <fizzie> (It's 80, not 96.)
13:13:00 <Sgeo> Would E style promises work out any better than the usual sort of promises?
13:13:01 <Phantom_Hoover> fizzie, is it 80? Oops.
13:13:30 <Phantom_Hoover> Anyway, that's what I was getting at. You can't add the 80-bit integer in ST0 to the 80-bit integer in ST1.
13:13:38 <fizzie> The "long double" type is sometimes 96 bits, for alignmenty reasons, but the actual format is 80 bits.
13:14:46 <Phantom_Hoover> And the SSE registers contain vectors of various types, so you can't add the whole register to another in a single instruction.
13:15:52 <fizzie> Right; though I think even x86-32's SSE supports 64-bit integers in the registers, so you could start to argue that x86-32 is a 64-bit CPU there.
13:16:08 <Phantom_Hoover> fizzie, good point.
13:16:51 <Phantom_Hoover> OTOH SSE is an optional extension in x86-32, but I think it's part of x86-64.
13:16:58 <fizzie> It is, yes.
13:17:54 -!- oerjan has joined.
13:18:24 <fizzie> The older optional extension, MMX (which uses the 80-bit FPU regs as 64-bit SIMD regs) only supports sizes up to (two elements of) 32 bits, I think.
13:26:03 <Phantom_Hoover> There must be something wrong with this definition...
13:27:03 <fizzie> What is your exact definition right now?
13:27:59 <Phantom_Hoover> "The size of the integers in the arithmetic operations."
13:29:32 <Phantom_Hoover> With something about the minimum necessary for the specification, to get around the x86-32 SSE thing.
13:31:38 <fizzie> There's also the 16-bit Z80 thing, but only if you want to put Z80 into the 8-bit camp. (I guess most people would put it there, though.)
13:32:09 <Phantom_Hoover> How does the Z80 do 16-bit stuff
13:32:14 <Phantom_Hoover> s/$/?/
13:32:42 <Phantom_Hoover> Ah, concatenating 8-bit registers.
13:34:40 <fizzie> Yes. And there are no 16-bit bitshifts or rotates, for example. But there's add, adc, sbc, inc and dec for the 16-bit pairs.
13:34:56 <Phantom_Hoover> No multiplication?
13:35:07 <fizzie> It doesn't have 8-bit multiplication either.
13:35:15 <Phantom_Hoover> Really?
13:35:28 <fizzie> "Don't you know how much a multiplier costs? We're not made out of money!"
13:35:29 <fizzie> Really.
13:35:48 <ais523> wow, security update for w3m
13:36:03 <ais523> apparently you could fool its https authentication by putting literal NULs in the certificate
13:36:09 <Phantom_Hoover> ais523, yeah, noticed that.
13:36:41 <Phantom_Hoover> fizzie, so it was ridiculously slow at anything approaching mathematics?
13:36:59 <fizzie> No slower than its competitors, which didn't do hardware multiplication either.
13:37:22 <Phantom_Hoover> How much does a multiplier cost?
13:37:41 <ais523> Phantom_Hoover: the issue is that a fast multiplier takes up a lot of chip space
13:38:05 <ais523> if you want a one-cycle 32-bit multiplier, say, you can do it but it'll take up as much space as a few kilobits of memory
13:38:22 <Phantom_Hoover> Ah.
13:38:28 <ais523> if you're happy to spend 32 cycles to multiply your 32 bits, it can be done much more efficiently
13:38:36 <Phantom_Hoover> But an 8 bit multiplier?
13:38:49 <ais523> but at that sort of speed, you may as well just do it in software
13:38:50 <ais523> 8 bits isn't /so/ bad, but it's still bad
13:39:31 <fizzie> The 8086 MUL instruction, for example, takes 70..118 cycles according to this here manual. (And IDIV takes 101..165.)
13:40:29 <ais523> that seems plausible
13:40:54 <ais523> especially if it's being done in microcode rather than hardware
13:41:07 <fizzie> It seems to be, yes.
13:41:40 <Phantom_Hoover> Multiplication is a matter of shifts and ands, isn't it?
13:43:46 -!- Phantom_Hoover has quit (Quit: Leaving).
13:44:13 <fizzie> A hit-and-run question.
13:44:44 -!- Phantom_Hoover_ has joined.
13:44:57 <ais523> Phantom_Hoover_: shifts, ands, and addition
13:45:06 <Phantom_Hoover_> Yes, of course
13:45:15 <ais523> the addition is the hard part
13:45:51 <ais523> because if you just string all the additions together in the obvious way, it takes ages for the carries to propagate
13:46:46 <fizzie> To quote: "Older multiplier architectures employed a shifter and accumulator to sum each partial product, often one partial product per cycle, trading off speed for die area. Modern multiplier architectures use the Baugh–Wooley algorithm, Wallace trees, or Dadda multipliers to add the partial products together in a single cycle. The performance of the Wallace tree implementation is sometimes improved by modified Booth encoding one of the two multiplicands, wh
13:46:46 <fizzie> ich reduces the number of partial products that must be summed."
13:46:58 <fizzie> (It's always a bad sign when things start to get named after people.)
13:48:32 <oerjan> Fizzie's law
13:48:53 * oerjan cackles evilly
13:49:22 <fizzie> Aaaanyway, back to the original issue, something I was going to add: Z80 also does 16-bit memory loads and stores to/from the register pairs, and the stack ops (push, pop) only work with 16-bit quantities.
13:50:19 <Phantom_Hoover_> In which case the register pairs are rather similar to the 8086 having AX split into AH and AL, yes?
13:50:46 <fizzie> Well, in a sense. But 8086 can do just about everything to AX, including bitwise stuff.
13:51:17 <Phantom_Hoover_> True, but the 8086 had a MUL instruction, so that hardly counts.
13:51:39 <Phantom_Hoover_> We're defining "arithmetic operations" as plus and minus, it would appear.
13:52:11 <fizzie> Right, well, in that sense Z80 would be a badly limited sort of 16-bit CPU.
13:53:02 <Phantom_Hoover_> 16/8-bit hybrid?
13:53:15 <fizzie> It's not a very uniform place. The 8-bit accumulator A isn't part of any register pair, and the HL register actually isn't strictly speaking a pair, because you can't access H or L directly; the 8-bit register-accessing opcodes only do A, F, B, C, D, E. And sometimes you can use AF as a pair too. (F is the flag register.)
13:53:17 -!- Phantom_Hoover_ has changed nick to Phantom_Hoover.
13:54:27 <fizzie> Hmm, no, actually scratch that about HL; H and L were separately accessible just well.
13:55:24 -!- Wamanuz has quit (Read error: Connection reset by peer).
13:55:48 <fizzie> It was just the IX and IY registers that were indivisible. (And actually you could undocumentedly stick the IX/IY prefix bytes to many instructions that would normally access H and L, to access their bytes separately too. I seem to recall most assemblers called those register halves IXH/IXL/IYH/IYL.)
13:55:49 -!- Wamanuz has joined.
13:57:46 <fizzie> There's a bit of a funny thing in that most things that take a 8-bit register operand use a three-bit register field in the opcode; seven of the possible values map to A, B, C, D, E, H and L, but the one that'd "naturally" be F instead does indirection and fetches the byte pointed by HL.
13:58:48 <Phantom_Hoover> Well, that kind of thing tends to be weird.
13:59:10 <Phantom_Hoover> I mean, x86 does truly terrible things for ESP indirection.
14:01:07 <fizzie> There's also the RLD instruction, which rotates nybbles; the four low bits of A go to the low nybble of the byte pointed by HL; that byte itself shifts left by 4 bits; and the out-falling 4 bits go to low bits of A. The four highest bits are not touched. (There's also the opposite-direction RRD.)
14:01:25 <fizzie> I wouldn't be surprised if it was some sort of BCD-motivated thing.
14:01:28 <Phantom_Hoover> Deeply weird.
14:01:48 <fizzie> (There's also the X86 DAA included, though I think with another name.)
14:01:54 <Phantom_Hoover> x86 has obsolete and underused BCD instructions. I feel sorry for them.
14:02:13 <fizzie> Decimal adjust accumulator! What a great name.
14:04:26 <Phantom_Hoover> SCASB?
14:04:33 <Phantom_Hoover> Scan stream byte?
14:04:39 <Phantom_Hoover> LODSB?
14:04:59 <fizzie> Incidentally, x86 DAA is invalid in 64-bit mode; its friends might also be.
14:05:12 <Phantom_Hoover> MOVGE?
14:05:25 <Phantom_Hoover> Move if greater than or equal to?
14:05:32 <Phantom_Hoover> fizzie, poor things.
14:05:37 <fizzie> Doesn't the S in scasb/lodsb stand for "string"?
14:05:49 <Phantom_Hoover> Same difference.
14:06:33 <fizzie> And the conditional moves are nice, though it's not like some architectures where you can add condition codes to absolutely any instruction.
14:06:56 <Phantom_Hoover> Which arcitectures?
14:07:06 <Phantom_Hoover> s/arcitectures/architectures/
14:07:40 <fizzie> ARM in non-Thumb mode, IIRC.
14:07:57 <fizzie> With some exceptions that use the condition code field for encoding extra stuff.
14:09:33 <fizzie> And Thumb has a "if-then" instruction; "ITxxxx cc", where cc is any condition code, and xxxx is an arbitrary sequence of T/F (for true/false), and it executes the four next opcodes conditionally if the T/F matches the value of the condition. But you don't have to use this manually; you can just put condition codes into any instruction, and the assembler will add IT's as necessary.
14:10:03 <Phantom_Hoover> Neat.
14:12:23 <fizzie> Oh, and FirePath does conditional SIMD; if you do a "cmphib p0, r1, r2", it compares eight bytes of r1 against the eight bytes of r2, and sets each bit of p0 to the result of the comparison; then you can do "p0.movb r2, r1" which will move only those bytes for which the comparison was true.
14:15:04 <fizzie> I've done very little of ARM asm, but I do recall doing a conditional RET once.
14:21:06 <fizzie> Except that hmm, maybe it wasn't ARM? Because ARM's "call" is in fact "bl", branch-with-link, which jumps somewhere and puts the return address into the link register; so a ret is just "bx lr", a unconditional branch to the link register. I distinctly recall a "RETcc" opcode in something, but it's not x86.
14:21:59 <Phantom_Hoover> fizzie, if it stores the return address in a register, what happens when the callee wants to call something?
14:22:25 <fizzie> The usual procedure prologue pushes the link register into stack, I think.
14:24:18 <fizzie> Except if you're a leaf function, in which case you omit that bit.
14:26:17 <fizzie> Or if you're a function that only does a tail call, in which case you also don't need to store lr, and can do that tail call with just a non-linking branch.
14:33:28 <fizzie> Also, if you stick lr on stack at the top of the function, you can return by loading it directly to pc; lr and pc are just special names for two general-purpose registers.
14:33:30 <fizzie> So you can do a "stmdb sp!, {r4, r5, r6, lr}" to save the return address and r4..r6 (which are callee-saved), and then exit the function with a single "ldmia sp!, {r4, r5, r6, pc}".
14:34:58 <fizzie> (Or "push {r4, r5, r6, lr}" and "pop {r4, r5, r6, pc}", which are aliases for that, but I wanted to get the exclamation marks there, I think they're funny.)
14:40:16 -!- Phantom_Hoover_ has joined.
14:41:37 -!- oerjan has quit (Quit: Later).
14:42:12 <fizzie> Did you miss my nifty ARM monologue?
14:42:51 <Phantom_Hoover_> No.
14:43:05 <Phantom_Hoover_> Well, I got to funny exclamation marks at least.
14:43:34 <fizzie> Okay, that's good then.
14:44:20 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
14:47:31 <Phantom_Hoover_> fruitbag`, ARM is being discussed.
14:57:56 <fizzie> Phantom_Hoover_: Here's the sort of frames gcc does: http://sprunge.us/YIbI (ignore the path to gcc, I'm in the progress of organizing files)
14:59:23 <fizzie> For "tail", it's just a single branch; for a leaf function, it's the code (add r0, r0, #42) and a "bx lr"; for a full function, it uses the stack, though a bit differently for some reason.
15:01:04 <Phantom_Hoover_> So you have an ARM computer?
15:01:16 -!- freshmeat has joined.
15:01:23 <freshmeat> Hello?
15:01:37 <fizzie> Phantom_Hoover_: I have that Nintendo DS, it's an ARM thing. (The "ds" in the path was referring to that.)
15:01:49 <freshmeat> What region of memory does the BF pointer point to initially?
15:02:39 <Phantom_Hoover_> freshmeat, wherever.
15:02:51 <Phantom_Hoover_> It's a uniform, zeroed tape.
15:02:56 <Phantom_Hoover_> *unbounded
15:02:57 <freshmeat> Alright, so this is what I do to transfer contents...
15:03:12 <freshmeat> [->+<]
15:03:15 <freshmeat> Right?
15:03:24 <fizzie> I guess BF isn't very well standardized; it's not always an unbounded tape, it might be a loopy tape too. (Zeroed it does tend to be.)
15:03:29 <Phantom_Hoover_> Well, it's a destructive transfer, but yes.
15:03:40 -!- Flonk has joined.
15:03:43 <Phantom_Hoover_> fizzie, zeroing is almost always assumed.
15:04:16 -!- Phantom_Hoover_ has changed nick to Phantom_Hoover.
15:04:38 <freshmeat> Guys, may I ask something? Don't be offended...
15:05:00 <fizzie> If the tape isn't unbounded, the pointer will usually point at the "beginning" of it, in the sense of < moving towards the start. Though if it wraps it's a bit arbitrary, because how could you tell where it points?
15:06:12 <freshmeat> So, we are at the source cell, and as it is decremented to zero, we move to the next cell for each decrement and increment its contents by one, then move back.
15:06:23 <freshmeat> Is my statement correct?
15:06:34 <freshmeat> [->+<]
15:06:48 <fizzie> Yes, that sounds like an accurate description.
15:07:13 <freshmeat> Alright, so that's cutting. What about copying?
15:07:24 <fizzie> You need to use a spare cell for that.
15:07:42 <fizzie> [->+>+<<] adds the value of the starting cell to the next and the one after that.
15:08:04 <fizzie> Then you can move the cell at >> back to the original place with a [-<<+>>] if you want.
15:08:06 <freshmeat> Fascinating stuff
15:08:11 <freshmeat> Guys, do you know what I feel like doing?
15:08:28 <freshmeat> A BF compiler for the 6502
15:09:43 <fizzie> >[-]>[-]<<[->+>+<<]>>[-<<+>>]<< is I think a reasonably general "p[1] = p[0]; p[2] = 0;", where p[0] is the starting cell, p[1] one step to right, and so on.
15:10:06 <fizzie> Except if you're running on a bignum brainfuck and have a negative number there somewhere.
15:10:39 <fizzie> 6502's so popular, you'd think there is one already. But who knows.
15:12:16 <fizzie> There's one interpreter, but maybe no compilers yet. Are you going to write it in BF?
15:12:30 <freshmeat> 6502 assembly
15:12:47 <Phantom_Hoover> freshmeat, to raw machine code or to assembly?
15:13:08 <freshmeat> raw machine code
15:14:43 <freshmeat> What would be an elegant way to swap the contents of two memory cells
15:15:18 <fizzie> The equivalent of "tmp = a; a = b; b = tmp;", most likely; that can use a destructive sort of = already.
15:16:08 <fizzie> [->>+<<]>[-<+>]>[-<<+>>] with maybe a zeroing there if you're not sure the spare cell is already zero.
15:17:06 <fizzie> On the topic of brainfuck implementations, let's mention awib again. It's a brainfuck/C/bash polyglot -- most of it brainfuck -- which compiles brainfuck to Linux/i386 ELF files, or C/Ruby/Go source.
15:17:15 <freshmeat> Any thoughts here on writing an assembler in BF?
15:17:35 <freshmeat> A 6502 assembler entirely in BF
15:17:49 <freshmeat> Or, more simply, a general binary search algorithm in BF
15:18:41 <fizzie> (Away for now, must relocate self to another place.)
15:20:10 -!- FireFly|n900 has joined.
15:20:35 <Phantom_Hoover> freshmeat, it would be extraordinarily difficult, but certainly possible.
15:24:59 -!- Wamanuz2 has joined.
15:28:12 -!- Wamanuz has quit (Ping timeout: 240 seconds).
15:28:46 -!- sebbu has joined.
15:34:07 -!- cpressey has joined.
15:42:04 -!- relet has joined.
15:47:54 <Gregor> fizzie: I don't even have ops :P
15:48:11 <Gregor> fizzie: So I couldn't ban you to run OpenFungot
15:48:15 <Gregor> fizzie: Thanks for the idea though.
15:48:20 <Gregor> MUAHAHAHAHA
15:48:36 <Phantom_Hoover> Gregor, huh?
15:49:09 <Gregor> Do yer own log-trawling :P
15:49:18 <cpressey> I can guess
15:50:53 <Phantom_Hoover> fungot, don't worry, we'll protect you.
15:50:53 <fungot> Phantom_Hoover: the latter. in the language that could consistently win both speed and size. :)
16:01:05 <Phantom_Hoover> Hang on, I thought fizzie was an op...
16:08:22 -!- FireFly|n900 has quit (Ping timeout: 252 seconds).
16:10:51 -!- ais523 has quit (Remote host closed the connection).
16:11:13 -!- ais523 has joined.
16:14:26 <fizzie> Phantom_Hoover: Yeee-es... it didn't seem relevant in the dream.
16:15:52 <Phantom_Hoover> Dreams is weird.
16:21:44 -!- derdon has joined.
16:24:26 <Phantom_Hoover> Agh, I hate software that requires a nominal charge.
16:32:15 -!- FireFly|n900 has joined.
16:37:03 -!- freshmeat has quit (Ping timeout: 264 seconds).
16:37:31 -!- FireFly|n900 has quit (Ping timeout: 252 seconds).
16:40:32 -!- freshmeat has joined.
16:59:33 -!- MigoMipo_ has joined.
17:00:00 <ais523> wow, the US Senate just passed "The ______Act of____."
17:00:07 <ais523> because they forgot to fill in the name, and nobody noticed
17:02:08 <cpressey> Right ON.
17:03:04 -!- MigoMipo has quit (Ping timeout: 240 seconds).
17:05:35 <ais523> <Slashdot> As for what's in the bill, well that appears to be as mysterious as the name. It was officially announced as a bill to tax bonuses to execs who received TARP money. But then someone simply deleted the entire bill and replaced it with text about aviation security. And then it was deleted again, and replaced with something having to do with education.
17:13:44 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
17:14:35 -!- FireFly|n900 has joined.
17:24:49 -!- FireFly|n900 has quit (Ping timeout: 252 seconds).
17:33:04 -!- freshmeat has quit (Ping timeout: 246 seconds).
17:34:19 -!- fruitbag` has quit (Ping timeout: 276 seconds).
17:34:20 -!- tombom has quit (Quit: Leaving).
17:37:32 -!- fruitbag` has joined.
17:37:47 -!- fruitbag` has quit (Client Quit).
17:39:53 -!- cheater99 has joined.
17:44:26 <pikhq> ais523: *groan*
17:44:39 -!- MigoMipo_ has quit (Remote host closed the connection).
17:45:10 -!- MigoMipo_ has joined.
17:52:28 <cpressey> Duck typing: It looks like a duck, it walks like a duck, so it is actually a goose, we think -- at any rate, it is quite fowl.
17:53:53 -!- Phantom_Hoover has joined.
17:56:57 -!- calamari- has joined.
17:58:40 -!- calamari- has quit (Client Quit).
18:03:00 -!- FireFly|n900 has joined.
18:21:58 <Phantom_Hoover> Has anyone else here heard of Introversion Software?
18:23:55 <fizzie> I remember that DEFCON game of theirs -- if this is the same thing. Not that I played it or anything, just looked at it.
18:24:46 <fizzie> Oh, and Uplink was also theirs?
18:25:07 <fizzie> And Darwinia, it seems.
18:25:27 <Phantom_Hoover> Uplink, Darwinia and Defcon, yeah.
18:26:17 <fizzie> I know of all three, and played a bit with Uplink, but that's about it.
18:28:37 -!- FireFly|n900 has quit (Ping timeout: 252 seconds).
18:41:31 <Sgeo> I've played with the demo of Uplink before
18:41:35 <Sgeo> I love the music
18:42:11 -!- ais523 has quit (Read error: Connection reset by peer).
18:42:45 -!- ais523 has joined.
18:44:51 -!- augur has quit (Remote host closed the connection).
18:45:11 -!- augur has joined.
18:46:36 -!- FireFly|n900 has joined.
18:48:59 -!- deschutron has joined.
19:09:21 -!- augur has quit (Remote host closed the connection).
19:09:26 -!- augur has joined.
19:15:01 <cpressey> Tuples suck.
19:15:24 <Phantom_Hoover> cpressey, in Haskell?
19:15:44 <cpressey> In programming in general. In mathematics -- I'll turn a blind eye.
19:16:06 <Phantom_Hoover> cpressey, "tuple" means completely different things in different languages.
19:16:13 <cpressey> Oh, not *completely*.
19:16:34 -!- kar8nga has joined.
19:16:37 -!- kar8nga has quit (Read error: Connection reset by peer).
19:16:39 <Phantom_Hoover> Well, they can have more than one thing in them; that's more or less where it stops.
19:17:19 <cpressey> The things in them don't have names. Tuples with the same number of things in them are considered the same type.
19:17:30 <Phantom_Hoover> cpressey, not in Haskell.
19:17:41 <Phantom_Hoover> (Int, Int) /= (Char, Char)
19:18:02 <cpressey> Fine, same number *and type* of things in them. (Int, Int) = (Int, Int).
19:18:22 <Phantom_Hoover> cpressey, what else would make *sense*?
19:18:38 <cpressey> Records
19:18:50 <Phantom_Hoover> cpressey, fine for some things, bad for others.
19:19:41 <cpressey> Yes well I'll just take your word for that.
19:19:43 -!- cpressey has quit (Quit: Leaving.).
19:23:22 <Phantom_Hoover> Well, that was weird.
19:24:00 <deschutron> yeah
19:24:07 <deschutron> for the record, I like tuples, in maths at least
19:24:23 <Phantom_Hoover> Hey, deschutron!
19:24:31 <deschutron> hey phantom hoover
19:24:52 <Phantom_Hoover> I still don't get his point about tuples in programming, though.
19:24:52 <deschutron> i finished my thesis in june
19:25:19 <deschutron> the type checking seems wrong for what he's trying to do i guess
19:25:32 <Phantom_Hoover> Particularly as tuples in Haskell and tuples in Python are utterly, utterly different.
19:25:33 <deschutron> i haven't used Haskell
19:26:13 <Phantom_Hoover> Well, if he's having type checking problems in GHC I pity him.
19:26:27 <Phantom_Hoover> !haskell return 3
19:26:58 <EgoBot> 3
19:27:02 <deschutron> what's GHC?
19:27:27 <Phantom_Hoover> deschutron, primary Haskell compiler.
19:27:33 <deschutron> Glasgow Haskell Compiler
19:27:47 <deschutron> i just checked on Wikipedia
19:27:47 <Phantom_Hoover> It has very annoying type errors.
19:29:17 <deschutron> i see
19:29:31 <Phantom_Hoover> In any case, using records instead of tuples in Haskell is... really stupid.
19:33:11 <deschutron> my first guess is maybe he'll sleep on it
19:33:24 <deschutron> i don't know what timezone he's in though
19:33:29 <Phantom_Hoover> Seems improbable, since it's mid-afternoon for him at the latest
19:33:36 <deschutron> oh
19:33:56 <deschutron> well, he might hack at it for eight hours and then sleep on it
19:34:08 <Phantom_Hoover> On the other hand, people here have very weird sleep schedules, so...
19:34:34 <deschutron> hmm yeah
19:35:09 <deschutron> about the idea of appropriating a linux kernel for a custom OS, i found a lead today
19:35:32 <deschutron> I installed Archlinux on my computer, and put the boot directory on its own partition as recommended
19:35:41 <Phantom_Hoover> And?
19:36:04 <Phantom_Hoover> I poked around my initrd, but it was a bit complex.
19:36:12 <deschutron> and then made an empty partition containing nothing but the files the kernel requires and a custom init program
19:36:28 <deschutron> and booted the custom partition with the boot partition
19:36:30 <deschutron> and it worked
19:36:36 <Phantom_Hoover> Neat.
19:37:03 <deschutron> I figure, all we need is the boot folder from an existing linux distribution
19:37:47 <Phantom_Hoover> i.e. /boot?
19:37:50 <deschutron> yes
19:39:26 <deschutron> i noticed in the Grub entry for Archlinux, the drive to use as the root directory for Linux is passed as an argument to the kernel
19:42:34 <Phantom_Hoover> I assume your boot partition contains a kernel image and a ramdisk image.
19:46:48 <deschutron> It does.
19:47:27 <deschutron> I didn't put it together. It is part of Archlinux.
19:49:47 <deschutron> I just saw your Silly Emplosions idea on the Esolangs wiki.
19:49:52 <Phantom_Hoover> Me?
19:50:00 <deschutron> yes
19:50:13 * Phantom_Hoover doesn't remember that
19:50:23 <deschutron> http://esolangs.org/wiki/Silly_Emplosions
19:50:40 <deschutron> wait a minute
19:50:52 <fizzie> That looks like a zzo38 idea.
19:50:56 <fizzie> The best kind of idea!
19:51:01 <Phantom_Hoover> As it indeed is.
19:51:27 <deschutron> Not Phantom Hoover's, my mistake
19:52:01 <deschutron> Anyway, the idea of variables that expire after a time delay looks interesting
19:52:14 <Phantom_Hoover> I don't think I've ever invented a language.
19:52:34 <Phantom_Hoover> I had a half-baked idea involving neural networks once, but that never went anywhere.
19:52:41 -!- MigoMipo_ has quit (Read error: Connection reset by peer).
19:53:09 -!- MigoMipo has joined.
19:53:38 <deschutron> What was your neural networks idea?
19:54:09 <Phantom_Hoover> deschutron, something along the lines of program specifies a fitness metric, compiler trains a network to that metric.
19:54:40 <fizzie> That sounds more like a generic neural-network tool than a programming language.
19:54:41 <deschutron> i see
19:54:45 -!- cpressey has joined.
19:55:18 <deschutron> the choice of evolutionary algorithm used would make a big difference
19:55:22 <Phantom_Hoover> fizzie, I suppose. But I planned to shoehorn it into an esolang.
19:55:33 <deschutron> i think
19:56:00 -!- cpressey has quit (Client Quit).
19:56:21 <Phantom_Hoover> deschutron, yes. I started reading literature on the subject, but I got bored and real life got in the way.
19:57:41 <deschutron> oh yeah
19:57:45 -!- oklopol has joined.
19:57:55 <oklopol> hello everyone my name is oklopol
19:58:02 <deschutron> that's sounds like the way in this community
19:58:06 <Phantom_Hoover> oklopol, I DON'T BELIEVE YOU
19:58:16 <Phantom_Hoover> deschutron, sad but true.
19:58:30 <fizzie> hello oklopol my name is not oklopol
19:58:41 <Phantom_Hoover> Everything is being done for fun, so when it gets boring we tend to stop.
19:58:42 <fizzie> (This is a special occasion; I left out the punctuation.)
19:58:43 <oklopol> fizzie: hello fizzie what is your name then
19:59:00 <fizzie> oklopol: they call me fizzie *beep*
19:59:17 <deschutron> i think it tends to move ahead, but slowly
19:59:20 <fizzie> I don't know, for some reason I imagine those things out loud in the "robot voice".
19:59:27 <oklopol> fizzie: after your smiley face the other day no one is gonna notice a missing zero dimensional object
19:59:33 -!- tombom has joined.
19:59:45 <oklopol> what's the way in this community
19:59:58 <Phantom_Hoover> oklopol, starting on stuff, then getting bored and stopping.
20:00:09 <oklopol> just checking
20:00:22 <deschutron> people get really into something one day, work on it a bit, and then return to their lives
20:00:35 <deschutron> and the thing is left alone for months
20:00:46 <oklopol> so i wasn't here have you read the newest P!=NP proof yet
20:01:03 <deschutron> no
20:01:03 <oklopol> i hear this time it's for real!
20:01:29 <Phantom_Hoover> Oh, yeah, it's a bit boring at the start but once it gets going it's unputdownable!
20:01:37 <oklopol> in 2012, the solution will be perfected, and the universe will reset
20:02:51 <oklopol> and god will be all like wow that was fast, took like a billion years for the sludgemonkeys in the last universe
20:03:31 <deschutron> yeah, unlike the sludgemonkeys, we did it in polynomial time
20:03:57 <oklopol> :DD
20:03:58 <Phantom_Hoover> How can you work out P=NP in polynomial time?
20:04:03 <Phantom_Hoover> There's no input size.
20:04:49 <oklopol> good point
20:04:52 <oklopol> i didn't realize that
20:04:57 <deschutron> haha
20:05:03 <fizzie> I wouldn't let that get in the way of a good joke.
20:05:21 <deschutron> there is an input size...
20:05:31 <deschutron> it's the size of the P and NP sets
20:06:04 <oklopol> yeah obviously god runs the test for all sizes, for a given species
20:06:16 <deschutron> we just have to count through all the decision problems in P and compare them against the ones in NP
20:06:49 <Phantom_Hoover> But they're infinite...
20:06:51 <deschutron> the biggest problem is deciding which to compare first.
20:06:59 <oklopol> what do you mean?
20:07:02 <Phantom_Hoover> And anyway, the end will be with the Reimann Hypothesis.
20:07:10 <deschutron> That's where the sludgemonkeys got it wrong.
20:07:47 <oklopol> ironically, the phantom hoovers are the current record holder.
20:08:25 <Phantom_Hoover> Well, yeah. We're superturing, you know.
20:12:02 -!- AnMaster has joined.
20:21:09 -!- augur has quit (Remote host closed the connection).
20:21:21 -!- augur has joined.
20:24:13 -!- deschutron has left (?).
20:27:09 -!- cheater99 has quit (Ping timeout: 245 seconds).
20:33:20 -!- cheater99 has joined.
20:40:17 -!- oerjan has joined.
20:40:25 -!- augur has quit (Remote host closed the connection).
20:40:31 -!- augur has joined.
20:40:47 -!- jcp has quit (Ping timeout: 260 seconds).
20:43:59 <oerjan> <ais523> wow, the US Senate just passed "The ______Act of____." <-- awesome
20:45:21 <oerjan> <cpressey> In programming in general. In mathematics -- I'll turn a blind eye.
20:45:39 <Phantom_Hoover> I didn't get it either.
20:45:46 <oerjan> <cpressey> Tuples suck.
20:45:56 <oerjan> *^v
20:46:12 <Phantom_Hoover> He then advocated using records instead.
20:46:33 <oerjan> there's actually a point in that recent P=NP proof where it does something with tuples, that may actually be a fatal flaw in the proof
20:46:45 <oerjan> or so i've read
20:46:50 <oerjan> er, *P != NP
20:47:15 <oerjan> it's not the only thing the experts are pouncing on, though
20:48:07 -!- augur has quit (Remote host closed the connection).
20:48:13 -!- augur has joined.
20:48:27 -!- jcp has joined.
20:49:53 <oerjan> <Phantom_Hoover> !haskell return 3
20:49:57 <oerjan> hm...
20:50:08 <oklopol> what's this about tuples problems?
20:50:08 <oerjan> !haskell return 3 :: IO Integer
20:50:09 <EgoBot> 3
20:50:13 <Phantom_Hoover> Yeah, I forgot that GHCi casts to IO.
20:50:34 <Phantom_Hoover> Well s/casts/does that :: thing/
20:50:37 <oklopol> !haskell 3
20:50:37 <oerjan> thought so, it's in the IO monad and ghci is set (it's an option i think) to print the result of IO actions
20:50:39 <EgoBot> 3
20:51:03 <oerjan> oklopol: which tuples problems?
20:51:11 <oklopol> "<oerjan> there's actually a point ..."
20:51:19 <oklopol> why are tuples fatal
20:51:24 <oklopol> and why are blind eyes turned
20:51:47 <Phantom_Hoover> oklopol, cpressey was complaining about tuples in programming.
20:51:55 <oklopol> oh so not related?
20:52:26 <Phantom_Hoover> oklopol, no.
20:52:29 -!- sshc has quit (Ping timeout: 252 seconds).
20:52:54 -!- sshc has joined.
20:52:58 <oerjan> well he also said something about blind eye in mathematics so i thought i'd just point out that tuples can be problematic there too :D
20:53:02 <oklopol> i checked the wp page for the highlights of the proof, but the only word i understood was FO
20:53:18 <Phantom_Hoover> oerjan, I still have no idea what he was going on about.
20:53:20 <ais523> is "FO" even a word?
20:53:30 <oklopol> it's an abbrec
20:53:30 <Phantom_Hoover> Or why he hates tuples but not lists and arrays.
20:53:32 <pikhq> Is now.
20:53:32 <oerjan> oklopol: in my very vague understanding, apparently the proof depends on the solutions having exponentially or so many clusters in the graph of possibilities, but when you pass to tuples you accidentally ruin that property
20:53:32 <oklopol> *v
20:53:48 <oerjan> ais523: first order iirc
20:53:54 <oklopol> yeah first order
20:53:55 <ais523> that's two words
20:54:23 <Phantom_Hoover> He also said he preferred records to tuples
20:54:26 <oklopol> also "something that only quantifies over scalars" is multiple words
20:54:27 <oerjan> ais523: it's a very low complexity class, the languages definable by first order logic statements
20:55:19 <oerjan> however if you add things to it you can get more, and a least fix point (LFP) operation apparently allows you to define all languages in P
20:55:28 <oklopol> on pretty much any universes, it's equivalent to "threshold counting"
20:55:29 <oklopol> taht is
20:55:30 <oklopol> *that is
20:55:47 <oklopol> you have some fixed size "ball" (with the reachability metric given by your relations)
20:55:56 <oklopol> and a fixed threshold
20:56:27 <oerjan> oklopol: um i though FO was equivalent to AC not TC, although i'm very vague on these things that i've only very recently heard about
20:56:28 <oklopol> and given a model, you calculate the number of different balls, each only up to the threshold, and based on that you decide whether the model is OK
20:56:37 <oklopol> what's AC?
20:56:46 <oklopol> i learned about this stuff like last week
20:56:47 <oklopol> :P
20:57:04 <oerjan> circuits with unbounded fanin OR and AND, as well as NOT
20:57:16 <oklopol> i haven't seen the proofs yet, because the only place i know where they are is a book i only have in german
20:57:23 <pikhq> Wow. There's 1.1 billion US dollar coins, hardly any of them in circulation... All because Congress commissioned dollar coins, didn't stop the printing of dollar bills, and people won't use dollar coins.
20:57:33 <oerjan> hm maybe AC^0, or AC^1, the indices are about the depth of the circuit
20:57:35 <oklopol> i've been told you can read math in any language, but sofar i haven't had much luck
20:58:21 <pikhq> This makes me feel that I need to ask the bank for dollar coins on a regular basis.
20:58:44 <oklopol> i don't really know AC, although i have heard about that kind of circuits
20:58:48 <oerjan> Phantom_Hoover: lists and arrays usually have only one type of thing in them, and it makes some sense to refer to them only by number index
20:59:04 <oklopol> i don't know what that means exactly, though, like how does the circuit depend on input size
20:59:15 <Phantom_Hoover> oerjan, Python tuples?
21:00:42 <oerjan> Phantom_Hoover: haskell is like that. python probably confuses everything by being dynamically typed so you can use tuples almost as immutable lists?
21:01:07 <Phantom_Hoover> oerjan, tuples *are* immutable lists in Python.
21:01:17 <Phantom_Hoover> There is no other difference.
21:01:25 <oerjan> oklopol: polynomial size of the circuit in input size is usual. the depth is then log^n where n is the index you put on things
21:01:35 <oklopol> oerjan: no there's a crucial difference, the type checking functions give you a different string for tuples and lists.
21:02:48 <oerjan> oklopol: i guess your threshold counting is something different than TC (which is what you get if add unbounded fanin _threshold_ functions as your basic gates)
21:03:27 <oerjan> oklopol: that's not crucial to what cpressey was discussing, i think. both tuples and lists allow arbitrary typed _contents_ in python
21:04:49 -!- FireFly|n900 has quit (Ping timeout: 252 seconds).
21:05:04 <oklopol> i was being joking
21:05:06 <oklopol> err
21:05:13 <oerjan> and then there is uniformity, which is when you put restrictions on how hard the circuits are to construct (say, can be constructed by a LOGSPACE TM)
21:05:19 <oklopol> yeah i don't know what thresholds imply for circuits
21:05:28 <oklopol> i didn't read about this in complexity theory context
21:05:44 <oklopol> but in logic context
21:05:51 <oklopol> but gotta go ->
21:05:56 <oerjan> it means you can tell whether >= k of the input bits are 1
21:06:06 <oklopol> i know the definition, not what it implies
21:06:13 <oklopol> but, ->
21:07:11 -!- augur has quit (Remote host closed the connection).
21:07:18 -!- augur has joined.
21:08:06 <oerjan> <Phantom_Hoover> In any case, using records instead of tuples in Haskell is... really stupid.
21:08:46 <oerjan> not at all, it gives additional type safety, and gives you names to hint what's _supposed_ to be in them (well, ideally)
21:09:59 <oerjan> of course the downside is verbosity
21:15:06 <fizzie> oerjan: You can fight that by using only single-letter identifiers anywhere.
21:15:35 <fizzie> It'll be obvious what the q, z, t and p fields are from the name of the record (R).
21:15:37 <oerjan> thus ruining half my first point :D
21:16:00 <oerjan> (i guess that's your joke)
21:16:10 <fizzie> Yes, if you can call it that.
21:19:24 <Phantom_Hoover> oerjan, defining a record for every tuple used is NaZi-level type safety.
21:20:08 <oerjan> sure if you only use it once...
21:21:01 <Phantom_Hoover> That's why I said "instead", i.e. doing just what I described.
21:25:59 <Phantom_Hoover> I still don't see why tuples *suck*.
21:29:22 <oerjan> i guess you'll have to wait for cpressey to return for that :)
21:30:52 <oklopol> well see what if one of your functions wants to return one more thing than the others
21:30:57 <oklopol> if you're using tuples
21:31:00 <oklopol> then you're fucked
21:31:14 <oklopol> but if you use lists then all is good
21:32:23 <oerjan> ah but if one of your functions wants to return one thing of a different type than the others, then it's the reverse
21:32:54 <oerjan> (and if both, you need another data type anyhow)
21:33:52 -!- cheater109 has joined.
21:35:08 <oklopol> yeah but see you can use additional cells of lists to move secret data around, you know like inheritance, the lower level functions only know about the first two cells, and you can use the third one for your evil purposes. how great is that?!?
21:35:17 <oklopol> with tuples you'd have to actually add another field
21:35:25 <oklopol> and then there's all that bureaucracy
21:35:44 <Phantom_Hoover> This seems like what monads are for.
21:35:46 <oklopol> you can't just add another field like that, but you can always silently return more data
21:36:55 <oerjan> oklopol: i think ocaml has records that allow such things, but the haskell community could never agree on which improved record system to use
21:37:43 -!- cheater99 has quit (Ping timeout: 276 seconds).
21:38:07 <oklopol> i was actually joking because what i was describing was a rather horrible thing to do
21:38:18 <oklopol> well
21:38:28 <oklopol> assuming you do it in an insane way, like i was thinking
21:38:37 <oklopol> like
21:38:45 <oklopol> there are many functions that use the basic data type
21:38:53 <oklopol> and they all have their secret data transmission schemes
21:39:11 <oklopol> everyone has their own protocol for using the secret fields
21:39:35 <oklopol> and people randomize a number between 0 and 65535 to see which field they should use, so there are no collisions
21:41:02 <oerjan> oklopol: well by "such things" i meant passing fields that the receiver does not need to know about unless they use it
21:42:26 <oklopol> right
21:42:44 <oerjan> i guess that's pretty central to ocaml allow object-oriented programming
21:42:50 -!- Flonk_ has joined.
21:43:04 <oerjan> although my memory of ocaml's finer type features is very vague
21:43:13 <oerjan> *allowing
21:44:43 -!- Flonk has quit (Ping timeout: 246 seconds).
21:44:48 -!- Flonk_ has changed nick to Flonk.
21:46:01 -!- benguestdegilim has joined.
21:46:07 -!- benguestdegilim has left (?).
21:55:36 -!- augur has quit (Remote host closed the connection).
21:55:42 -!- augur has joined.
21:59:13 <Phantom_Hoover> fungot,
21:59:13 <fungot> Phantom_Hoover: fnord, ( and i do a large system compiled as a static analysis of aliasing.
22:05:15 <Phantom_Hoover> ^style
22:05:15 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher ic irc* jargon lovecraft nethack pa speeches ss wp youtube
22:05:38 <Phantom_Hoover> ^style c64
22:05:38 <fungot> Selected style: c64 (C64 programming material)
22:05:45 <Phantom_Hoover> fungot, well?
22:05:46 <fungot> Phantom_Hoover: purpose: restore default system and basic. this interrupt can occur when using a pal system 02 frequency of oscillator i with a byte associated with them. it is the cassette byffer when being written or read.
22:06:01 <Phantom_Hoover> "cassette byffer"
22:06:16 <Phantom_Hoover> That is on my list of words to use again.
22:11:22 <oerjan> the latest comments on the godel's letter blog indicate that the P != NP proof may have been withdrawn by the author :(
22:11:31 <ais523> due to being incorrect?
22:11:45 <Phantom_Hoover> YAY!
22:11:55 * Phantom_Hoover wants P=NP.
22:11:58 <oerjan> presumably, it's not clear but someone said his homepage no longer mentions it
22:12:15 <oerjan> (although some links still work)
22:16:30 <Warrigal> You know, it would be neat if, instead of having a negation sign, we had a ten's complement sign.
22:17:06 <Warrigal> So instead of writing -3, you'd write ‡7; instead of -256, you'd write ‡744; and so on.
22:18:55 <Phantom_Hoover> Warrigal, that's not really ten's complement.
22:19:04 <Warrigal> No?
22:19:19 <Warrigal> I'm pretty sure it's ten's complement.
22:19:20 * oerjan has this manual adding/subtraction device stored away, with a stylus to move the digits, that works something like that
22:19:35 <Phantom_Hoover> Ten's complement would probably be ~x+9, if two's complement is anything to go by.
22:20:34 <Warrigal> Nope. Ten's complement is the complement plus one.
22:21:57 <Phantom_Hoover> So one's complement?
22:22:16 <oerjan> similar to these http://www.calculi.nl/subpages.php?pageid=24138
22:22:23 <Warrigal> Well, the term "ones' complement" technically only applies to binary, but yeah. That plus one.
22:22:30 <oerjan> (i don't think the exact model is there)
22:22:57 <ais523> nine's complement plus one
22:25:51 <Phantom_Hoover> God, everything looks classy in this font.
22:26:07 <oerjan> actually it might be one of those german Addiators
22:29:27 <oerjan> here's a big picture of a different model http://www.science.uva.nl/museum/produx.html
22:31:19 <oerjan> i think of ten's complement because that's essentially what happened if you tried to subtract more than you had, you would be left with an unsettled borrow indicator and the rest of the numbers would be like that
22:31:41 <oerjan> (with such a device)
22:32:58 -!- derdon has quit (Ping timeout: 276 seconds).
22:34:29 <oerjan> iirc each slide has each digit twice, once in black and once in red, and if you got a red one you were supposed to drag it all the way up or down and turn it into a carry/borrowing
22:35:24 <oerjan> (there was addition on one side of the device and subtraction on the other)
22:39:31 -!- Flonk has changed nick to knolF.
22:40:04 <oerjan> actually carry/borrowing is always up. then you slide your stylus across the bend to the carry/borrowing at the left
22:41:13 <oerjan> it's quite intuitive really, although it only does addition/subtraction
22:42:16 -!- GreaseMonkey has joined.
22:42:26 -!- cheater109 has quit (Read error: Operation timed out).
22:45:12 <Mathnerd314> so I was talking to dbot lately, and one of the things he said was "1,2 + 4 = 5,7".
22:45:35 <Mathnerd314> I can't conceive of an esolang where this is valid code/results
22:46:25 <Sgeo> Sounds vaguely J-like
22:46:33 <Sgeo> Except that it's readable
22:46:50 <coppro> Mathnerd314: why not?
22:46:55 <Phantom_Hoover> Mathnerd314, + is overloaded to call map?
22:47:09 <Phantom_Hoover> !haskell [1,2,3] >>= (+1)
22:47:24 <Sgeo> Or the language is smart enough to know to use map in these circumstances?
22:47:45 <Phantom_Hoover> !haskell [1,2,3] >>= return . (+1)
22:47:47 <EgoBot> [2,3,4]
22:48:08 <Mathnerd314> problem is, it's not map
22:48:18 <Mathnerd314> more like accumulate
22:48:33 <Phantom_Hoover> Hmm, like fold, but it keeps the intermediates.
22:49:04 * Mathnerd314 hoogle's
22:49:15 <Mathnerd314> Haskell calls it scanl
22:49:40 <Phantom_Hoover> So 1,2,3 + 1 = 2,4,7?
22:50:13 <Phantom_Hoover> !haskell :i scanl
22:50:15 <EgoBot> scanl :: (a -> b -> a) -> a -> [b] -> [a] -- Defined in GHC.List
22:50:25 <Mathnerd314> !haskell scanl (+) 4 [1,2]
22:50:27 <EgoBot> [4,5,7]
22:50:39 <Mathnerd314> that's at least the right numbers
22:51:04 <oklopol> "1,2 + 4 = 5,7" <<< i don't get it
22:51:15 <oklopol> is it a typo?
22:51:26 <Mathnerd314> oklopol: it's a puzzle: design a language where this is true
22:51:34 <oklopol> j uses a map just like that
22:51:37 <oerjan> Phantom_Hoover: x >>= return . f = fmap f x (or liftM f x)
22:51:43 <oklopol> except different syntax, and 2+4 is 6 in j
22:51:49 <Phantom_Hoover> oerjan, GO AWAY
22:51:59 <oklopol> oh okay
22:52:06 <oklopol> accumulate, so not a typo
22:52:07 <oerjan> Phantom_Hoover: BOO!
22:52:11 <Phantom_Hoover> It mightn't be an instance of Functor!
22:52:20 <oerjan> Phantom_Hoover: therefore liftM
22:52:29 <Phantom_Hoover> oerjan, SHUT UP
22:52:32 * Phantom_Hoover sobs
22:52:53 * Phantom_Hoover sticks crayons up his nose
22:53:40 <oerjan> *MWAHAHAHA*
22:54:02 <oklopol> +\ or something similar will actually sum the prefiCes of a list in j, but i don't know if a l +\ 4 will sum 4 to those prefices
22:54:18 <Phantom_Hoover> oerjan, hang on, fmap can work without bind, obviously.
22:54:41 * Sgeo can't believe he didn't realize the 2+4 thing >.>
22:54:45 <oerjan> Phantom_Hoover: naturally, that's why Functor is a different typeclass than Monad
22:54:50 <oklopol> if someone has j then try
22:55:00 <oklopol> Sgeo: i can't believe i didn't realize it sums prefixes
22:55:17 -!- cpressey has joined.
22:55:29 -!- MizardX has quit (Read error: Connection reset by peer).
22:55:53 <cpressey> identify parr0t
22:55:58 <Phantom_Hoover> It is very similar to foldl, actually.
22:56:00 <cpressey> Well, f!()^&()@^
22:56:07 <Phantom_Hoover> !haskell :t foldl
22:56:07 -!- cpressey has left (?).
22:56:10 <EgoBot> foldl :: (a -> b -> a) -> a -> [b] -> a
22:56:31 -!- MizardX has joined.
22:56:35 <Mathnerd314> Phantom_Hoover: it's scanl
22:56:38 <Phantom_Hoover> !haskell foldl (+) 4 -> [1,2]
22:56:40 -!- cpressey has joined.
22:56:43 <Mathnerd314> !haskell :t scanl
22:56:45 <EgoBot> scanl :: (a -> b -> a) -> a -> [b] -> [a]
22:56:51 <Mathnerd314> !haskell scanl (+) 4 [1,2]
22:56:53 <EgoBot> [4,5,7]
22:56:57 <Phantom_Hoover> Mathnerd314, oops.
22:57:03 -!- MigoMipo has quit (Read error: Connection reset by peer).
22:57:34 <Phantom_Hoover> Mathnerd314, on the other hand, that has a superfluous item at the end.
22:57:45 <Mathnerd314> beginning
22:57:56 <Mathnerd314> !haskell drop $ scanl (+) 4 [1,2]
22:58:19 <Phantom_Hoover> !haskell :t drop
22:58:21 <EgoBot> drop :: Int -> [a] -> [a]
22:58:49 -!- cpressey has changed nick to cpressey_.
22:58:49 -!- knolF has changed nick to Flonk.
22:58:57 <Mathnerd314> !haskell tail $ scanl (+) 4 [1,2]
22:58:59 <EgoBot> [5,7]
22:59:13 <Mathnerd314> Phantom_Hoover: ^ always mix up those two...
22:59:14 <Phantom_Hoover> Well, exceptLast xs = drop (length xs -1) xs
22:59:29 <Phantom_Hoover> Mathnerd314, that's not how tail works, is it?
22:59:36 <Phantom_Hoover> !haskell tail [1,2,3]
22:59:37 <EgoBot> [2,3]
22:59:44 -!- cpressey_ has quit (Client Quit).
23:00:50 <Phantom_Hoover> !haskell drop =<< subtract 1 . length $ scanl (+) 4 [1,2]
23:01:22 <Phantom_Hoover> !haskell (drop =<< subtract 1 . length) $ scanl (+) 4 [1,2]
23:01:33 -!- cpressey has joined.
23:02:21 <Mathnerd314> lambdabot is 10x better...
23:02:23 <Phantom_Hoover> =<< is a parse error, apparently.
23:02:48 <Mathnerd314> probably didn't import Control.Monad
23:02:57 <Phantom_Hoover> Just tried that.
23:04:31 <Phantom_Hoover> !haskell import Control.Monad; drop =<< subtract 1 . length $ scanl (+) 4 [1,2]
23:04:33 <oerjan> !haskell init [1,2,3]
23:04:36 <EgoBot> [1,2]
23:04:39 -!- CakeProphet has joined.
23:05:07 <oerjan> Phantom_Hoover: cannot use import with ghci modus, you need a main
23:05:39 <Phantom_Hoover> !haskell init $ scanl (+) 4 [1,2
23:05:41 <Phantom_Hoover> !haskell init $ scanl (+) 4 [1,2]
23:05:43 <EgoBot> [4,5]
23:05:55 <oerjan> although that import was redundant away
23:06:04 <Phantom_Hoover> !haskell scanl (+) 4 [1,2]
23:06:06 <EgoBot> [4,5,7]
23:06:25 <Phantom_Hoover> Wait, it's been the *first* one we wanted to drop all alone
23:06:33 * Phantom_Hoover takes the crayon out of his nose
23:06:55 <ais523> !haskell tail $ scanl (+) 4 [1,2]
23:06:56 <oerjan> !haskell :t (=<<)
23:06:58 <EgoBot> (=<<) :: (Monad m) => (a -> m b) -> m a -> m b
23:06:58 <EgoBot> [5,7]
23:08:23 <oerjan> also init works on infinite lists too, calculating length ruins that (as well as general laziness)
23:09:24 <Phantom_Hoover> fungot,
23:09:24 <fungot> Phantom_Hoover: a secondary address of character memory occupies the first number, and can be extended by nesting them ( having one function call. if one is found in the
23:09:35 <Phantom_Hoover> oerjan, how can it work on infinite lists?
23:09:56 <oerjan> well since there's no last element, it just returns the list itself, conceptually
23:10:10 <Phantom_Hoover> ...
23:10:29 <oerjan> (although it probably cannot share in practice)
23:11:20 <oerjan> !haskell take 3 . init $ 1:2:3:4:undefined
23:11:21 <EgoBot> [1,2,3]
23:11:49 -!- relet has quit (Quit: Leaving.).
23:11:55 <oerjan> laziness almost _demands_ that it works on infinite lists too
23:12:51 <oerjan> basically init (x:y:rest) = x : init (y:rest)
23:13:25 <Phantom_Hoover> Clever.
23:13:48 <cpressey> !haskell take 3 (init [1..])
23:13:50 <EgoBot> [1,2,3]
23:16:19 <cpressey> !haskell let r x = init (r x) in r [1..]
23:16:23 <EgoBot> *** Exception: stack overflow
23:16:45 <cpressey> !haskell init []
23:16:49 <EgoBot> *** Exception: Prelude.init: empty list
23:17:40 <oerjan> r x = init (r x) is just r x = let y = init y in y except without the actual sharing
23:18:05 <oerjan> in particular it never gets around to looking at x at all
23:18:16 <Phantom_Hoover> cpressey, incidentally, what was your thing about monads?
23:18:27 <Phantom_Hoover> s/monads/tuples/
23:18:30 <cpressey> My "thing"?
23:18:33 <Phantom_Hoover> Sorry...
23:20:08 <Phantom_Hoover> cpressey, why do you think tuples suck?
23:20:10 -!- ais523 has quit (Remote host closed the connection).
23:20:13 <cpressey> Because I can think of so few cases where something that identifies its contents with names wouldn't be better.
23:21:45 <Phantom_Hoover> cpressey, well, zip?
23:23:00 -!- CakeProphet has quit (Ping timeout: 265 seconds).
23:24:27 -!- CakeProphet has joined.
23:24:57 <cpressey> Phantom_Hoover: Is that supposed to be a counterexample?
23:25:16 <Phantom_Hoover> cpressey, using a custom type for zip seems... excessive.
23:25:33 <cpressey> zipmap (\x y -> ...) [1, 2, 3] [4, 5, 6]
23:26:28 <oerjan> aka zipWith
23:26:28 <cpressey> Sure
23:26:29 <cpressey> although I can't forgive them the break in name orthogonality for that
23:26:30 <cpressey> mapWith :)
23:30:15 <Phantom_Hoover> !haskell :i (,)
23:30:17 <EgoBot> data (,) a b = (,) a b -- Defined in Data.Tuple
23:31:26 <oerjan> that's a fake one
23:32:14 <oerjan> (as in, not actually legal data syntax)
23:32:45 <oerjan> !haskell :i []
23:32:47 <EgoBot> data [] a = [] | a : [a] -- Defined in GHC.Base
23:33:01 <oerjan> that too
23:34:39 <oklopol> o
23:34:40 <oklopol> o
23:35:45 <cpressey> That tooo?
23:35:49 <cpressey> toooo
23:38:04 <Phantom_Hoover> cpressey, well, [1,2,3] is just syntactic sugar for 1:2:3:[]
23:39:05 <cpressey> Yes, I am aware of that.
23:39:37 <cpressey> "That toooo?" was re oklopol.
23:39:47 <Phantom_Hoover> Hang on, types are first class objects in Python...
23:40:02 * Phantom_Hoover wonders if you can do dependent types with that.
23:40:40 <oklopol> in python everything is just a big heap of shit you can do whatever you want to
23:40:41 <cpressey> Sure, you *could*, if you felt like writing a proof-checker that could operate on Python programs.
23:40:58 <oklopol> just like c except completely different
23:41:21 <oklopol> and dependent types can do it
23:41:33 <oklopol> also haskell
23:42:28 -!- Gregor-P has joined.
23:42:29 <Phantom_Hoover> Well, it'd definitely be esoteric...
23:42:52 <Gregor-P> Anybody got a vaguely interesting program in dc?
23:43:10 <oklopol> 0
23:43:15 <Phantom_Hoover> Gregor-P, someone had a program that printed pi in hex.
23:43:33 -!- cheater99 has joined.
23:44:13 <Phantom_Hoover> Printing pi in hex is much easier than in decimal, though.
23:45:18 <Gregor-P> I suppose this program doesn't terminate...
23:45:23 <Phantom_Hoover> No.
23:45:35 <Phantom_Hoover> Well, until you run out of space for the bigints.
23:46:24 <cpressey> Gregor-P: Why do you ask?
23:46:32 <cpressey> Gregor-P: WHY MUST YOU ASK?
23:46:42 <Gregor-P> cpressey: IT'S A SECRET
23:46:45 <Phantom_Hoover> cpressey, because dc is the standard Unix esolang?
23:47:22 <cpressey> Can someone please clean the molten lead off the gymnasium floor? kthx
23:48:08 <Phantom_Hoover> fungot, do it.
23:48:22 <Phantom_Hoover> f..f..fungot?
23:48:26 <Phantom_Hoover> FUNGOOOOOOT!
23:48:50 <Phantom_Hoover> Don't you love me any more, fungot?
23:49:21 <Sgeo> Ted Stevens died?
23:50:09 <Phantom_Hoover> NOOOOOOOOOOOO
23:50:17 <Phantom_Hoover> NOT TED STEVENS!
23:50:56 * Phantom_Hoover looks up who Ted Stevens was
23:51:12 <cpressey> Mr. Unix Socket Programming?
23:51:36 <cpressey> No, a senator for Alaska?
23:51:56 <Phantom_Hoover> Stupid Alaska, North-West-Eastmost state.
23:52:08 <cpressey> The socket Stevens is a Richard, it seems.
23:52:28 <Sgeo> The series of tubes guy
23:52:34 <cpressey> Oh! Yeah him
23:52:41 <Phantom_Hoover> NOOOOOOOOOOOOOOOOOOOOOOo
23:52:52 <Phantom_Hoover> So, farewell
23:52:54 <Phantom_Hoover> then
23:52:57 <Phantom_Hoover> Ted Stevens
23:53:06 <Phantom_Hoover> "A series of tubes"
23:53:08 <Phantom_Hoover> That was
23:53:13 <Phantom_Hoover> Your catchphrase
23:53:16 <Phantom_Hoover> But now
23:53:19 <Phantom_Hoover> You
23:53:21 <Phantom_Hoover> are
23:53:52 <Phantom_Hoover> on a big truck
23:54:10 <Phantom_Hoover> — E.J. Thribb (17½)
23:54:16 <oerjan> flushed down the tube
23:54:27 <Phantom_Hoover> oerjan, better.
23:58:09 * Phantom_Hoover is crap at Thribbing
23:59:19 <Sgeo> Thribbing?
23:59:54 <Phantom_Hoover> Sgeo, I suppose you don't get the editor's esteemable organ in the US.
←2010-08-09 2010-08-10 2010-08-11→ ↑2010 ↑all