←2012-07-11 2012-07-12 2012-07-13→ ↑2012 ↑all
00:19:11 <Sgeo> That's disturbing, I had something in common with Rimmer.
00:19:50 <Sgeo> When I was a kid, once played a game and wrote down all the rolls of the dice
00:19:53 <Sgeo> iirc
00:27:21 -!- calamari has quit (Quit: Leaving).
00:37:40 -!- kmc has joined.
01:02:34 <itidus21> smeghead
01:06:52 <oerjan> get the smeg out of the channel with your smegging rude language
01:13:00 <itidus21> ^bf +[>+<+++++++]>-.>++[>+<+++++]>-.>+>+[+++[++>]<<]>..>>+[+>+[<]>->]<.
01:13:01 <fungot> Hello
01:19:49 <tswett> The plural of "irssi" is "irssit", right?
01:26:54 <oerjan> SOUNDS REASONABLE
01:39:05 <itidus21> tswett: sir, i believe we've wandered accidentally into a rogue simulant hunting zone
01:39:49 <tswett> Are you a simulant?
01:40:25 <itidus21> i don't know
01:40:46 <itidus21> @google simulant
01:40:48 <lambdabot> http://dictionary.reference.com/browse/simulant
01:41:39 <oerjan> i'm not a simulant, although i can simulate one if you want
01:51:32 -!- azaq23 has joined.
01:51:35 <shachaf> kmc: I found out that I completely misunderstood CTR mode, and that the thing it actually is is kind of weird.
01:51:44 <kmc> oh yeah?
01:51:46 <Sgeo> tswett, simulant is a Red Dwarf reference
01:52:22 <shachaf> Weird in that it doesn't every use the cipher to decrypt -- it just uses it as a sort of pseudo-random function.
01:52:33 <kmc> yeah
01:52:42 <kmc> it's a way of creating a stream cipher from a block cipher, in a sense
01:52:58 <shachaf> Well, so is e.g. CBC.
01:53:06 <shachaf> But it actually uses the block cipher in both directions.
01:53:37 <shachaf> I had previously thought it was something like encrypt(xor(block, iv + counter), key)
01:53:47 <shachaf> But people pointed out that that's broken.
01:55:19 <kmc> because the data might increment alongside the counter?
01:55:43 <itidus21> i googled it as a random quote though
01:55:46 <shachaf> Well, because if you can encrypt a chosen plaintext with a particular ID, you can compare it to another ciphertext to see if they match.
01:57:30 <itidus21> i am not actually a qualified red dwarf fan
01:58:00 -!- Phantom_Hoover has quit (Remote host closed the connection).
02:03:16 <Sgeo> Just encountered an advantage that Lisp-style macros have over Tcl-style... thingy
02:04:30 <kmc> shachaf: I've decided that when people complain about "ATM machine" and such, I will complain about "all OK"~
02:04:52 <shachaf> kmc: OK isn't an acronym.
02:05:00 <shachaf> Or an initialism, if you're the sort of person who complains about that.
02:05:04 <kmc> that's just, like, your opinion, man
02:05:35 * shachaf has been defeated.
02:06:08 <shachaf> So why do people put a lot of work into making block ciphers and then use them as stream ciphers?
02:08:52 <kmc> perhaps because they want to use stream ciphers, but the things designed as stream ciphers tend to be weak
02:10:02 <itidus21> one may also ask, why is this a popular platform? http://www.theunwired.net/media/news/opera_mini_5_android_teaser_hand.jpg .. why do developers work on several 32" monitors with maya and 3dsmax etc to produce 3d content for such a small device
02:10:31 <kmc> itidus21, never change
02:10:44 <itidus21> and.. maybe someone agrees with me.. and hence: http://www.kickstarter.com/projects/ouya/ouya-a-new-kind-of-video-game-console
02:10:55 <itidus21> Backers
02:10:55 <itidus21> $3,586,881
02:11:02 * kmc knows even less about stream ciphers than he does about block ciphers
02:11:07 -!- Vorpal has quit (Ping timeout: 240 seconds).
02:11:21 <shachaf> kmc: Don't stream ciphers tend to be the thing you actually want?
02:11:24 <shachaf> Hence all these modes.
02:11:52 <itidus21> noone wants to hear the nonsensical ravings of a loudmouth malcontent
02:12:01 <kmc> that's what i mean
02:12:45 <itidus21> when ouya raises $10,000,000 they would know i was right if they listen >:-D
02:13:07 <shachaf> It seems really roundabout to me to put a lot of work into making a block cipher, ignore half of it, and use it to generate a keystream.
02:13:25 -!- copumpkin has joined.
02:13:36 <kmc> i don't think you actually ignore half of the work
02:13:44 <shachaf> Well, yes.
02:13:48 <shachaf> I mean half of the cipher.
02:14:09 <shachaf> The argument seems to be "AES happens to have all the properties we want, and people have put a lot of work into understanding it, so we might as well use that".
02:14:12 <shachaf> Which I guess is reasonable.
02:14:54 <kmc> so what if you use something like a block cipher but lacking a "decrypt" operation
02:15:00 <kmc> i.e. a cryptographic hash function
02:15:52 <shachaf> Right.
02:15:55 * itidus21 realises i don't even know how i got from ATM/OK -> android
02:15:57 <kmc> ciphertext = xor(plaintext, hash(key + counter))
02:16:01 <kmc> is that secure?
02:16:18 <itidus21> ^s/i don't/he doesn't/ s/i got/he got/
02:16:31 <shachaf> It would seem to me to be, given an appropriate behavior of hash().
02:16:45 <shachaf> key + iv + counter, I guess.
02:17:00 <kmc> the iv is a per-session random constant?
02:17:02 <kmc> secret?
02:17:07 <shachaf> Not secret.
02:17:11 <shachaf> This is assuming you use the key more than once.
02:17:14 <kmc> ah right
02:17:23 <kmc> you can also start the counter at a random point, equivalently
02:17:42 <shachaf> I suppose.
02:18:09 <shachaf> Some people suggested that the compression function used in SHA1 is actually a good deal slower than AES.
02:18:48 <itidus21> oh yes.. the parallels between the fact that they "put a lot of work into" hdtv, and gpus, and the fact that gamers ultimately "ignore half of it, and" gravitate towards low end handhelds
02:19:17 <shachaf> itidus21: You've bored right through to the heart of the matter.
02:19:20 <shachaf> You've figured me out.
02:19:25 * shachaf is part of the conspiracy.
02:19:32 <itidus21> you were talking about gaming all along!
02:20:34 <itidus21> ok im satisfied
02:21:56 * itidus21 recounts events
02:22:34 <itidus21> "people have put a lot of work into understanding it, so we might as well use that" so it's the gambler's fallacy that since we have invested this much, we have to stick with it
02:23:06 <kmc> it hurts so much
02:23:14 <itidus21> ok so thats not gamblers fallacy
02:23:23 <kmc> no it is a fallacy of gamblers though
02:23:27 <kmc> i was going to give you the benefit of the doubt
02:23:49 <itidus21> Escalation of commitment i mean
02:24:11 <kmc> i think there is a "sunk costs anti-fallacy" where some people will cry "sunk costs fallacy!" at any attempt to utilize existing resources
02:24:43 <kmc> obviously if you abandon any project in which costs have been sunk, you will get nothing done
02:24:55 <kmc> the question is whether the future payoff from the project exceeds the future costs
02:25:38 <kmc> in the case of using AES as a crypto primitive, the future payoff (highly secure systems) is judged to be worth the future costs (integrating this well-understood, widely implemented thing)
02:26:13 <shachaf> There's no real cost, I suppose, it's just weird.
02:29:12 <shachaf> kmc: So when people say "AES-256 is theoretically broken by a related-key attack", does that also apply to CTR mode?
02:37:22 <kmc> beats me :x
02:48:33 <Sgeo> <ijchain> <stevel> cool lisp is
02:48:44 <Sgeo> Why why why would a Tcl'er joke about Lisp like _that_
02:48:53 <Sgeo> I mean, in that regard, Tcl and Lisp are rather close
02:49:08 <Sgeo> (Well, except for the expr thing for math)
02:55:21 <kmc> also i think it's backwards but
02:55:26 <kmc> people on the internet say dumb shit about lisp
02:55:28 <kmc> film at 11
02:55:56 <oerjan> confusing with forth you are
02:56:16 <quintopia> was yoda a forth program
02:56:20 <quintopia> mer
02:57:18 <oerjan> no forth wasn't invented yet
02:57:22 <oerjan> hth
02:57:37 <quintopia> parallel evolution
03:10:37 <shachaf> From #haskell: data PBT a = Leaf | Branch (PBT (a,a)) deriving (Eq,Ord,Show,Read); let x :: PBT a; x = Branch x
03:10:41 <shachaf> That recursion really bugs me.
03:11:23 <oerjan> nice
03:16:23 -!- pikhq_ has quit (Ping timeout: 245 seconds).
03:16:25 -!- pikhq has joined.
03:31:29 -!- calamari has joined.
03:32:14 -!- azaq23 has quit (Quit: Leaving.).
03:32:39 -!- azaq23 has joined.
03:56:58 -!- TodPunk has quit (Quit: This is me, signing off. Probably rebooting or something.).
04:01:31 -!- pikhq has quit (Ping timeout: 246 seconds).
04:01:32 -!- pikhq_ has joined.
04:01:55 -!- TodPunk has joined.
04:19:21 -!- MoALTz has quit (Quit: Leaving).
04:49:40 <oklopol> olsner: ei muuten todellakaan ole. me voitimme sen reilusti ja neliö.
04:50:35 <ion> I love that expression.
04:51:02 <oklopol> yeah i think i'll use it from now on
04:58:39 <oklopol> some fucking asshole is doing his laundry on my turn again
04:59:44 <oklopol> if i lived here and was sure it's not my gf's roommate, i'd totally like still not do anything about it.
05:04:17 -!- Sgeo_ has joined.
05:05:53 -!- oerjan has quit (Quit: Good night).
05:06:58 -!- Sgeo has quit (Ping timeout: 246 seconds).
05:19:18 -!- kallisti has quit (Ping timeout: 264 seconds).
05:45:27 -!- kallisti has joined.
05:45:28 -!- kallisti has quit (Changing host).
05:45:28 -!- kallisti has joined.
06:03:44 -!- calamari has quit (Quit: Leaving).
06:07:38 -!- oklopol has quit (Ping timeout: 245 seconds).
06:22:44 <itidus21> that's the spirit. mathematician/computer programmers are not the alphamales of the laundry machines.
06:37:12 <Sgeo_> Can elephants juggle more than seven chainsaws?
06:40:07 <itidus21> "juggling elephants" About 62,700 results
06:40:48 <itidus21> "juggling elephants" chainsaws About 709 results
06:40:57 <itidus21> including such gems as:
06:41:09 <itidus21> So, rather than playing this admirable slice of soaring gospel rock against a backdrop of chainsaw-juggling elephants and heavily mauled,
06:41:26 <itidus21> to prove do not exist; abominable snowmen, flying pigs, chainsaw juggling elephants, teapots orbiting celestial bodies, to name but a few.
06:41:57 <itidus21> Maybe they'd bring on juggling elephants or chainsaw-wielding tightrope walkers, because surely such events are the only reason football
06:42:23 <Sgeo_> Try googling the entire question
06:42:51 <itidus21> :O
06:46:07 <itidus21> how long is my life going to be
06:46:56 <Sgeo_> ?
06:47:36 <itidus21> that in addition to all i have suffered, and all i am due to suffer, that i must suffer such things as the tcl war
06:48:47 <fizzie> The Tcl Wars of 1994, such a senseless waste of human life.
06:48:51 <itidus21> perhaps these people should give up science and instead join sports, politics, or religion
06:49:25 <itidus21> <-- more than a little hypocritical
07:28:39 -!- pikhq has joined.
07:32:20 -!- pikhq_ has quit (Ping timeout: 246 seconds).
07:34:57 <itidus21> the tcl war is partially fascism
07:37:13 <mroman> `ウェルカム itidus21
07:37:22 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ウェルカム: not found
07:37:26 <itidus21> i can't see the text >.<
07:37:30 <mroman> pff.
07:37:40 <pikhq> mroman: 「ようこそ」
07:37:54 <pikhq> 「ウェルカム」は変。
07:38:14 <itidus21> "we need everyone to stop using a thing which looks set to became popular on it's own merits, and instead use an unpopular thing favorable to people like richard stallman"
07:39:27 <mroman> pikhq: なるほど
07:42:49 <itidus21> sorry i am playing catch up on rms
07:43:02 <itidus21> it's evidently 18 year old news
07:43:18 <itidus21> oops 8?
07:43:34 <itidus21> no 18 phew
07:43:46 <itidus21> forgot about the years 2001 - 2010
07:44:23 <mroman> nothing happened in these years anyway.
07:44:29 <itidus21> true
07:45:02 <fizzie> Didn't that "never forget" thing happen?
07:45:15 <Sgeo_> What non-Smalltalk language communities have people who like image-based stuff?
07:45:22 <Sgeo_> There's at least two such things for Tcl
07:45:31 <itidus21> fizzie: oh you mean the war on iraq?
07:45:35 <itidus21> yeah that happened :P
07:45:39 <fizzie> What's image-based stuff?
07:45:55 <Sgeo_> As in, single file that contains the entire environment
07:46:01 <fizzie> Oh, that sort of image.
07:46:05 <Sgeo_> ala non-GNU Smalltalk
07:46:27 <fizzie> Well, Forthers do that sort of stuff sometimes, don't they?
07:46:50 <fizzie> At least Gforth does image files, gforth.fi by default.
07:48:59 <itidus21> i notice audio is very popular
07:49:00 <fizzie> And, uh... R?
07:49:21 <itidus21> i guess if i had actually used an instrument ever i might find audio more appealing
07:49:28 <fizzie> Also I vaguely recall some Scheme doing something similar, but I don't have a clue which one it was.
07:50:13 <itidus21> i think that cool people prefer audio over video
07:50:23 <itidus21> but i can't quite explain why
07:50:24 <fizzie> Cool people, and blind people.
07:50:31 <fizzie> (Presumably.)
07:50:36 <itidus21> hmm actually
07:50:49 <itidus21> i suppose it's because a human body, with no other tools
07:50:56 <itidus21> can produce sound and music
07:51:41 <itidus21> but, in order to create visual things, you need objects to arrange... video displays, cameras, pens, pencils, canvases, paper, paint, etc
07:53:13 <mroman> "never forget" thing?
07:53:14 <itidus21> also, that an instrument becomes an extension of the human body in that sense.. doesn't need fuel.. as the way video needs electricity usually.. pens need ink
07:53:19 <mroman> First black president?
07:53:25 <itidus21> mroman: the oil thing
07:53:30 <mroman> Oh.
07:53:33 <itidus21> :P
07:53:34 <fizzie> The seven-eleven.
07:53:36 <fizzie> Or whatever it was.
07:53:39 <mroman> Americans invading Iraq...
07:53:40 <mroman> AGAIN!
07:54:00 <mroman> After they supported the dictator there for so a damn long time.
07:54:08 <itidus21> americans deconstructing and reconstructing iraq
07:54:16 <fizzie> Whenever I put a date on something I stick in the freezer, I'm tempted to write "never forget!" after the date. I've done it a couple of times, too.
07:55:58 <mroman> http://www.youtube.com/watch?v=ZRn0SQsUKuw
07:56:01 <itidus21> im too paranoid to believe the official version of events
07:56:14 <mroman> ^- That's pretty much the picture an average critical european has of america ;)
07:56:20 <fizzie> Doesn't MIT Scheme have some sort of an image file?
07:56:42 <fizzie> "This distribution comes with four different image files, each of which contains different mixes of programs." Yes, something like that.
07:57:17 <fizzie> "A world image, also called a band, is a file that contains a complete Scheme system, perhaps additionally including user application code. Scheme provides a method for saving and restoring world images."
07:57:22 <fizzie> Fancy name.
07:57:42 <fizzie> 'disk-save' puts the band back together.
07:57:58 <itidus21> i don't know why images become so wonderful
07:58:18 <itidus21> it's just vram data being blasted along a vga cable
07:58:31 <fizzie> This is a different sort of image, though.
07:58:34 <fizzie> The non-visual kind.
07:58:39 <itidus21> :o
07:59:20 <itidus21> I see http://english.eastday.com/e/zx/images/01459347.jpg
07:59:35 <itidus21> (that's me understanding non-visual images)
08:02:38 <fizzie> It's more like just stealing the word to denote something else. Like there's disk images, those aren't especially visual either.
08:03:20 <itidus21> conversations with me rarely go anywhere
08:07:13 <itidus21> A PIECE of wood which starred in 60s comic caper The Plank amazed experts when it broke the 1,000 barrier at auction.
08:15:03 <fizzie> This printer smells of popcorn.
08:16:14 <itidus21> i wonder if anyone has ever loaded up the red section of a color ink cartridge with their own blood
08:17:08 <itidus21> and frankly i don't want to know
08:18:59 <fizzie> It might not work terribly well. Though it does sound like a modern way to be all gothy, I suppose.
08:19:29 <pikhq> mroman: And an American view on America: http://www.youtube.com/watch?v=sWS-FoXbjVI
08:20:29 <mroman> Probably: "You wanna help the poor? Are you a socialist? Ary you a socialist? Aryoua SOZIALOSSTHSTHSHS?"
08:20:56 <mroman> (^- american tv interviewer)
08:21:31 <itidus21> i love how they list sushi
08:32:36 -!- nooga has joined.
08:37:10 -!- pikhq_ has joined.
08:37:11 -!- pikhq has quit (Ping timeout: 244 seconds).
08:45:00 <ion> https://www.google.com/search?q=%2210.4000%22+hp+laserjet+event+log+code
08:47:19 -!- asiekierka has joined.
08:50:03 <fizzie> That's a lot of printers.
08:50:32 <fizzie> I vaguely recall there are queries that do something quite similar for networked cameras.
08:50:39 -!- Taneb has joined.
08:50:44 <Taneb> Hello
08:50:51 <Taneb> I can get on IRC at school now, apparently?
08:51:09 <ion> http://www.exploit-db.com/google-dorks/
08:51:22 <Taneb> Blocked for hacking?
08:52:57 <fizzie> ion: You could take all the Google results of your printer thing, get the black cartridge level from the 'device status' page, and then plot a histogram showing the overall distribution of black cartridge levels on HP LaserJet P2055dn printers around the world. I'm sure that's interesting to someone.
08:53:22 <fizzie> E.g. the printer at only has 1% (approx. 27 pages) remaining, someone should do something about that.
08:54:15 <Taneb> Hey, cpressey's alive
08:54:20 <ion> fizzie: Hah
08:54:48 <ion> fizzie: Since that printing operation will change the value, one should do that again. And again.
08:56:57 <fizzie> I was thinking of just, you know, publishing the plot on the web, not printing it out to everyone. :p
09:00:29 <ion> Oh, okay. :-(
09:02:02 -!- Taneb has quit (Quit: lesson).
09:07:52 <soundnfury> nortti: I'm afraid I was asleep when you asked your question last night. The answer is Z80 asm.
09:09:35 <fizzie> Time for daily trivia! The SGI FFT library defines single- and double-precision complex number types (as struct { T re; T im; } with T = float or T = double). The former type is called 'complex', but the latter type has the best possible name: it's called 'zomplex'. (It follows the LAPACK naming scheme with S, D, C and Z mapping to single, double, single complex and double complex types, ...
09:09:41 <fizzie> ... respectively.)
09:09:46 <soundnfury> in other news, http://jttlov.no-ip.org/music/gark/Guil_bis.ogg - William Tell on garkleins, by the power of multitrack recording. Unconscionably high-pitched: you have been warned.
09:10:19 <soundnfury> fizzie: cool. Or, to be more precise, zool.
09:10:32 <fizzie> (zomplex! It still makes me smile.)
09:10:35 -!- azaq23 has quit (Remote host closed the connection).
09:11:28 <fizzie> zomplex f(zomplex z, zomplex w) { /* giggle */ }
09:11:41 <soundnfury> zomg zombie complex numbers! "√-brains"
09:12:37 <ion> soundnfury: Heh, nice.
09:13:03 <soundnfury> and here's some daily trivia for you: the inverted interrobang ⸘ is also known as the "gnaborretni"
09:14:10 <ion> ᵷuɐqoɹɹǝʇuᴉ
09:15:04 <soundnfury> hmm, for me that starts and ends with replacement characters
09:15:18 <soundnfury> so I just see inverted nterroban
09:15:27 <ion> Ask for your money back.
09:15:34 <fizzie> Works here. But my terminal can't show the asterism, ⁂.
09:15:46 <soundnfury> Looks like a mini therefore
09:15:58 * soundnfury likes the compose key
09:16:12 <fizzie> It's like a therefore except with stars in place of plain dots.
09:16:36 <soundnfury> ¢ømpōßê
09:16:54 <ion> I see the asterism, too.
09:16:54 <soundnfury> especially neat is ##->♯ and #b->♭
09:17:06 <ion> soundnfury: Cool, i didn’t know that.
09:17:07 <monqy> ᵷuɐqoɹɹǝʇuᴉ looks like "interrobany" to me
09:17:21 <itidus21> soundnfury: inverted as in upsidedown?
09:17:26 <soundnfury> monqy: when you type ᵷuɐqoɹɹǝʇuᴉ all I see is hunter2
09:17:33 <itidus21> i don't have unicode
09:17:36 <soundnfury> itidus21: as in turned
09:17:38 <ion> monqy: You may want to ask for your money back, too.
09:17:44 <soundnfury> like the spaniards do with ? and !
09:17:49 <soundnfury> ¿Que?
09:17:54 <itidus21> ohh
09:17:55 <itidus21> wow
09:18:04 <itidus21> so you can do that with interrobangs :o
09:18:12 <monqy> it's a g but they goofed it and chopped off the top
09:18:21 <monqy> small turned g I mean
09:18:32 <soundnfury> ion: sadly there doesn't appear to be a compose for the natural sign ☹
09:18:50 <fizzie> Can you turn the ⸮ (irony mark) around?
09:18:53 <itidus21> No es bueno?
09:19:01 <ion> I find funny how Unicode has a white smiling face and a black smiling face, but just a white frowning face.
09:19:14 <soundnfury> aha, a table: http://www.hermit.org/Linux/ComposeKeys.html
09:19:33 <soundnfury> ion: that's because black people aren't allowed to be unhappy (or something)
09:19:53 -!- nortti has quit (Quit: leaving).
09:20:05 <ion> Also: http://www.pixelbeat.org/scripts/ximkeys
09:20:05 -!- nortti has joined.
09:20:24 <soundnfury> ſweet! It has long ſ!
09:20:29 <fizzie> GTK (unless you do something to the input method) has its own hardcoded list of compose sequences that's not as complete as the default X list, nor can you customize it with a ~/.Xcompose. :/
09:20:50 <ion> compoſe
09:21:04 <soundnfury> fizzie: that sucks.
09:21:17 <fizzie> https://help.ubuntu.com/community/GtkComposeTable -- the stupef.
09:21:50 <fizzie> "The Gtk Compose Table was derived from the X compose tables of XFree86 version 4.0 with further modification intended to provide a Gnome standard for all locales. It is likely that in future it will follow more closely the xorg version. Please keep track of GNOME bug 633534 for complete documentation."
09:21:55 <fizzie> Maybe it's better nowadays.
09:21:58 <fizzie> Last I looked was some years back.,
09:22:17 <fizzie> But I don't think you can customize it yet.
09:23:34 <fizzie> There doesn't seem to be an INVERTED REVERSED QUESTION MARK, so you can't do [insert missing character here]Spanish irony⸮ in Unicode either.
09:23:59 <soundnfury> clearly you need to complain to the Consortium!
09:24:37 <soundnfury> #f->♮
09:24:45 <soundnfury> now how is one supposed to guess that?
09:26:05 <soundnfury> also I hate how they went for #q=quarter note instead of #q=quaver (eighth note, #e, they think)
09:28:43 <FireFly> You can change it
09:29:03 <FireFly> Oh. that was mentioned a while ago
09:29:26 <FireFly> Oh, and I was thinking of the plain old XCompose file
09:33:13 <soundnfury> /usr/share/X11/locale/<locale>/Compose
09:33:26 <soundnfury> seems to be the system's master list
09:35:06 <soundnfury> haha, Compose C C C P ☭
09:35:12 <soundnfury> that's hilarious!
09:35:21 <nortti> what does it do?
09:39:15 <nortti> does it produce sicle and hammer?
09:39:23 <soundnfury> yes
09:40:37 -!- Dovregubben has quit (Ping timeout: 240 seconds).
09:41:12 <nortti> awesome
10:02:48 -!- Patashu has joined.
10:05:20 -!- Dovregubben has joined.
10:11:12 -!- Taneb has joined.
10:11:14 <Taneb> Hello
10:11:44 <Taneb> Hackage is down :(
10:12:23 <nortti> hackage?
10:12:32 <Taneb> http://www.isup.me/hackage.haskell.org
10:12:44 <nortti> what is it?
10:13:06 <Taneb> It's a collection of haskell packages on a website, used by Cabal
10:13:10 <nortti> oh
10:13:38 <nortti> are you using mail server to irc?
10:14:05 <Taneb> I... don't think so?
10:14:17 <Taneb> I might be
10:14:21 <nortti> 13:11 -!- Taneb [~Taneb@mail.qehs.net] has joined #esoteric
10:14:26 <Taneb> It sounds like the kind of thing my school would do
10:15:00 <nortti> well actually I have my shell on mail/web server
10:15:10 <Taneb> I'm using a network my school's set up for sixth form students
10:15:17 <Taneb> (16-18)
10:15:28 <nortti> oh
10:16:24 <nortti> soundnfury: how do you do management/garbage cllection in your lisp?
10:17:44 <soundnfury> nortti: the plan is mark-and-sweep
10:18:11 <soundnfury> but I haven't got very far with implementation yet
10:18:59 <soundnfury> so far I've written the compiler (which runs on a 'host' Linux system and compiles program text to a bundle of conses)
10:19:26 <soundnfury> I'm currently working on a C/Linux runtime so I can get the logic sorted out
10:19:32 <soundnfury> then I'll reimplement it into Z80
10:22:26 <fizzie> It could also be a NAT kind of thing, with the single public IP named for the mail server.
10:22:43 <Taneb> Could be
10:28:37 <nortti> http://falkvinge.net/2012/07/12/in-the-uk-you-will-go-to-jail-not-just-for-encryption-but-for-astronomical-noise-too/
10:29:31 <Taneb> Isn't that causing a disturbance and keeping the neighbours awake
10:29:38 <Taneb> "That racket is astronomical!"
10:32:32 <Taneb> bbl
10:32:34 -!- Taneb has quit (Quit: Leaving).
10:42:56 -!- ais523 has joined.
10:48:33 -!- copumpkin has quit (Ping timeout: 250 seconds).
10:49:04 -!- copumpkin has joined.
10:49:38 <itidus21> oh
10:49:51 <itidus21> well honestly
10:50:31 <itidus21> it's best to just drop the pretense that laws are grounded in logic,morals, ethics, or philosophies..
10:50:46 <itidus21> and accept that they emerge as artifacts of social conflict
10:52:50 <nortti> where did you live, again
11:05:51 -!- ais523 has quit.
11:06:04 -!- ais523 has joined.
11:11:56 <itidus21> me? aus
11:12:06 <itidus21> as in, non-european aus
11:12:20 <nortti> ah. ok
11:12:29 <itidus21> heh
11:17:19 -!- ogrom has joined.
11:30:34 -!- coppro has quit (Ping timeout: 260 seconds).
11:38:01 -!- coppro has joined.
11:45:16 -!- copumpkin has quit (Ping timeout: 246 seconds).
11:46:33 -!- copumpkin has joined.
11:54:40 <mroman> Today's fucked up idea:
11:54:48 <mroman> A language based on blink and marque tags.
11:55:04 <nortti> yay. I got js enabled browser to compile
11:55:08 <mroman> Programs can be disguised as crappy webpages.
11:55:11 <nortti> but it is text only
11:57:27 <mroman> <blink><marquee>Buy one free today</marquee></blink><blink>GET READY</blink>
11:58:28 -!- boily has joined.
12:00:01 -!- Taneb has joined.
12:01:31 <mroman> <blink>Hello Taneb</blink>
12:01:36 <Taneb> Hey
12:01:39 -!- Phantom_Hoover has joined.
12:01:42 <Taneb> *Hello
12:02:22 <mroman> Two instruction language that'd be.
12:02:34 <Taneb> Set is one of the few interesting foldables that aren't functors
12:12:56 -!- ogrom has quit (Quit: begone).
12:14:01 -!- Madoka-Kaname has joined.
12:14:04 -!- Madoka-Kaname has left.
12:24:20 -!- ais523 has quit (Ping timeout: 248 seconds).
12:28:46 -!- Taneb has quit (Quit: time for foood).
12:31:10 -!- ais523 has joined.
12:41:00 -!- Taneb has joined.
12:42:41 <Taneb> Hello
12:47:20 -!- neutrino2000 has joined.
12:53:33 <soundnfury> mroman: you could make <blink> be S and <marquee> be K
12:54:15 <soundnfury> and have string application be concatenation
12:56:46 <soundnfury> <blink><marquee>Buy one</marquee>free today</blink><blink>GET READY</blink> would b-reduce to BuytodayfreetodayGET
13:04:53 -!- ais523 has quit (Quit: changing connection, brb in an hour or so).
13:10:32 <itidus21> what is the point i am apt to wonder, of changing a variable from one state to another
13:12:13 <itidus21> i must admit finding some consolation to this question when i randomly stumbled upon martin buber in wikipedia with Ich-Du and Ich-Es
13:12:42 -!- ogrom has joined.
13:15:00 -!- Taneb has quit (Remote host closed the connection).
13:17:16 <mroman> soundnfury: I would consider it to be SKS
13:17:21 <mroman> only counting start tags.
13:22:40 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
13:41:40 -!- pikhq has joined.
13:42:03 -!- pikhq_ has quit (Ping timeout: 265 seconds).
13:46:22 <soundnfury> I suppose, because the arities of S and K are defined.
13:46:35 <soundnfury> so you don't need the end-tags to parenthesise arguments
13:52:49 -!- ogrom has quit (Quit: Left).
13:56:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:02:31 -!- ais523 has joined.
14:04:34 -!- stanley has joined.
14:07:04 -!- boily has quit (Quit: WeeChat 0.3.8).
14:09:10 -!- boily has joined.
14:14:19 -!- copumpkin has joined.
14:28:49 -!- asiekierka has quit (Quit: Wychodzi).
14:47:20 -!- ogrom has joined.
14:55:31 <mroman> soundnfury: Stuff between tags is comments.
14:55:38 <mroman> <blink>I'm a comment</blink>
14:55:44 <mroman> so you can disguise it as a legit website.
14:57:00 <Gregor> The kind of “legit” web site with <blink> tags? ^^´
14:58:13 <mroman> Gregor: Yes.
14:59:06 <mroman> <blink>Buy one free</blink> websites.
15:01:00 <mroman> and other non standard tags.
15:01:01 <mroman> like
15:01:04 <mroman> spacer
15:01:06 <mroman> image
15:01:10 <mroman> and bgsound of course
15:04:05 <Gregor> <embed src="something_horrible_by_britney_spears.mid" loop="true" />
15:07:29 <soundnfury> it could be worse
15:07:32 <soundnfury> it could be <font>
15:08:47 <fizzie> <img src="under_construction.gif">
15:08:57 <fizzie> It's one of those animated road sign ones.
15:09:20 -!- calamari has joined.
15:09:36 <fizzie> <img src="rotating_skull.gif"> too.
15:09:38 <Lumpio-> Oh yes
15:09:45 <soundnfury> Actually, for a typography nut and kerning obsessive, I'm surprisingly relaxed about Comic Sans
15:09:49 <Lumpio-> I was looking for an animated "under construction" gif but google image search found none .__.
15:09:55 <soundnfury> it's Helvetica I hate
15:09:58 <Lumpio-> I want the one with the lemmings
15:10:13 <Lumpio-> Also <IMG SRC="animated_fire.gif">
15:11:40 <soundnfury> although Real Men use monospace. And then kern it anyway https://github.com/ec429/monokern
15:12:16 <Lumpio-> Why is there a bell.wav file in there
15:12:17 <Gregor> soundnfury: The web page for that site... is unreadable.
15:12:18 <Lumpio-> Do I even want to know
15:12:32 -!- Taneb has joined.
15:12:33 <mroman> http://mroman.ch/legit.html
15:12:35 <mroman> ^- Like that.
15:13:17 <soundnfury> Gregor: d'you mean github, or the linked jttlov.no-ip.org?
15:13:24 <soundnfury> if the former, not my fault
15:13:28 <Gregor> soundnfury: The linked one.
15:13:33 <Gregor> soundnfury: The colors, man. The COLORS.
15:13:49 <Taneb> Hello
15:13:53 <Gregor> Why dark blue on black? WHYYY?
15:14:05 <soundnfury> Lumpio-: because I haven't yet learned how to make X trigger a _proper_ terminal bell, so I'm using aplay :shameface:
15:14:21 <mroman> hm.
15:14:26 <Lumpio-> D:
15:14:26 <soundnfury> Gregor: If you mean the *colours*, it's light blue, not dark blue, text, ffs
15:14:29 <Lumpio-> It's YOU
15:14:52 <Gregor> soundnfury: That is not light blue. It is, at best, lukewarm blue. It is bad.
15:15:18 <soundnfury> Gregor: I choose to not care
15:15:23 <Gregor> *shrugs*
15:15:28 <soundnfury> *shrugs also*
15:17:01 <mroman> I need a rotating gif.
15:20:30 <mroman> a... much better.
15:49:58 <calamari> Lumpio-: http://www.squidoo.com/under-construction-gif
15:51:41 <Lumpio-> oh dear @comments
15:52:54 -!- ais523 has quit (Read error: Connection reset by peer).
15:53:03 -!- ais523 has joined.
15:53:51 -!- calamari has left ("Leaving").
15:58:17 -!- Vorpal has joined.
17:05:20 -!- Taneb has quit (Quit: Leaving).
17:14:33 <nooga> i'm confused by leg/peg
17:15:05 <nortti> why?
17:15:08 <nooga> i don't know when semantic actions are performed when rules use quantifiers
17:15:09 <nooga> like
17:15:38 <nooga> x = y ('|' y)*
17:16:54 <nooga> how am I supposed to build binary syntax tree from that
17:22:10 <nooga> huh?
17:29:41 <fizzie> Maybe you should just rewrite it to use recursion instead.
17:30:07 <fizzie> (I don't know anything about peglegs.)
17:30:24 -!- AnotherTest has joined.
17:32:30 <nooga> fizzie: I could... I just wanted to try the leg way
17:36:38 <AnotherTest> are there any esolangs where only symbols (not keywords) are used (similar to APL)
17:39:04 <Gregor> ... Brainfuck.
17:39:54 <Gregor> (And dozens of others)
17:41:32 <AnotherTest> Gregor: Sorry, should have been more specific. I meant a large set of symbols
17:42:12 <AnotherTest> that would include unicode symbols such as ∊, ∘, × or ↓
17:43:51 <AnotherTest> so I think I should have said "are there any esolangs where mainly non-ASCII symbols (not keywords) are used (similar to APL)"
17:46:17 -!- Taneb has joined.
17:46:18 <Taneb> Hello
17:48:56 <nooga> AnotherTest: SADOL
17:49:20 <nooga> umm
17:49:23 <nooga> no, not really
17:50:19 <AnotherTest> nooga: well it uses quite a lot of symbols but I think they are all ASCII(?)
17:50:27 <nooga> yup
17:50:36 <nooga> i didn't read the whole question
17:51:59 <nooga> now
17:52:12 <nooga> i need to fight with undocumented peg leg
17:54:02 -!- ogrom has quit (Quit: Left).
18:01:53 <soundnfury> AnotherTest: I don't think there's any point writing such an esolang, because APL's already esoteric ;)
18:03:34 <AnotherTest> soundnfury: Perhaps that's true indeed ;)
18:03:56 <Taneb> tswett, did anything come of your brackets idea?
18:04:31 <AnotherTest> soundfury: well I don't think it was intention
18:05:44 <olsner> I think APL is one of those languages where opinion differs on whether it fits in the "esoteric" category, since it was made and used for real purposes
18:06:02 <Taneb> It has been made esoteric by context?
18:06:28 <Taneb> A programming language written in Linear B would be pretty esoteric nowadays, regardless of its origin
18:06:37 <olsner> oh, this is scary: http://en.wikipedia.org/wiki/APL_(programming_language)#Extensions
18:06:48 <olsner> OOP, .NET, *ActiveX*, XML-array conversion primitives, all in APL :S
18:11:26 -!- calamari has joined.
18:11:33 -!- calamari has left.
18:20:19 <nooga> what
18:20:21 <nooga> ast.c:47:31: error: C does not support default arguments
18:20:25 <nooga> -- clang
18:22:23 <fizzie> Well, isn't that just true?
18:24:40 <tswett> Taneb: nope, not really.
18:25:01 <AnotherTest> fizzie: as far as I know C does support them (well normally)
18:25:12 <fizzie> AnotherTest: C++ does; C certainly doesn't.
18:25:32 <Gregor> Yeah, C doesn't support default arguments.
18:25:35 <fizzie> If by "default arguments" you mean the usual int foo(int x = 0) {...} kind of things.
18:25:35 <shachaf> Which is good because they're the devil.
18:25:37 <Gregor> I have no idea where you'd get the notion that it does.
18:25:49 <fizzie> Gregor: By compiling all your C code with a C++ compiler? :p
18:25:58 <Gregor> *vomit*
18:26:04 <AnotherTest> Really? Well probably I'm always using C++
18:26:06 <fizzie> The C++ FAQ advocates that. :p
18:26:19 <Gregor> The C++ FAQ advocates a lot of bad ideas.
18:26:28 <Gregor> For instance: using C++.
18:26:38 <AnotherTest> Gregor: I like C++.
18:26:45 <shachaf> Gregor: The C++ FAQ advocates that?
18:26:52 <Gregor> AnotherTest: Well there's no accounting for taste *shrugs*
18:27:24 <AnotherTest> Gregor: I have some good reasons (well I think they are good). But I can see why people dislike the language too.
18:27:24 <fizzie> "BTW there is another way to handle this whole thing: compile all your code (even your C-style code) using a C++ compiler. That pretty much eliminates the need to mix C and C++, plus it will cause you to be more careful (and possibly —hopefully!— discover some bugs) in your C-style code. The down-side is that you'll need to update your C-style code in certain ways, basically because the ...
18:27:30 <fizzie> ... C++ compiler is more careful/picky than your C compiler. The point is that the effort required to clean up your C-style code may be less than the effort required to mix C and C++, and as a bonus you get cleaned up C-style code." (C++ FAQ)
18:27:52 <Gregor> lol
18:28:04 <fizzie> See, it'll even make things cleaner.
18:28:23 <Gregor> I have a bit of C tomfoolery I've been using for years, buffer.h.
18:28:27 <Gregor> It /does not compile/ with a C++ compiler.
18:28:32 <Gregor> I use it in virtually every project I write.
18:28:36 <fizzie> You should clean it up so that it does.
18:28:38 <Gregor> I am wholly satisfied with this situation.
18:28:46 <fizzie> You might find bugs.
18:28:51 <AnotherTest> You can't *just* compile C code with C++
18:28:57 <AnotherTest> compilers
18:29:00 <Gregor> *duh*
18:30:41 <Taneb> tswett, :(
18:30:49 <AnotherTest> https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B seems like there is a nice page if you want to make the change
18:31:34 <fizzie> !c int f(int c = 0) { return c; } int main(void) { return f(); }
18:31:35 <EgoBot> Does not compile.
18:31:36 <fizzie> !cxx int f(int c = 0) { return c; } int main(void) { return f(); }
18:31:42 <EgoBot> No output.
18:31:48 -!- pikhq has quit (Ping timeout: 248 seconds).
18:31:50 -!- pikhq_ has joined.
18:31:50 <fizzie> (A skientifik eksperiment.)
18:32:21 <Gregor> AnotherTest: In case it wasn't obvious, I am not only satisfied, but overjoyed to be writing code that does not work with C++ compilers.
18:32:51 <Gregor> !c int main() { int x; printf("%d\n", sizeof(x)); }
18:32:53 <EgoBot> 4
18:32:54 <Gregor> !cxx int main() { int x; printf("%d\n", sizeof(x)); }
18:32:58 <EgoBot> Does not compile.
18:33:02 <Gregor> Bam.
18:33:25 <fizzie> Some time ago we had a discussion where we iterated different ways of making code that compiles on both but does different things. It had all the usual suspects, like character constant type differences etc.
18:33:28 <AnotherTest> Gregor: don't you miss the 1000 lines of error messages caused by a typo in a template name?
18:35:53 <fizzie> I kind of liked http://p.zem.fi/zdga even though it's one of the cheaty ways.
18:36:31 <fizzie> Gregor: Also shame on you for the above; should be %zu or (int)sizeof ...
18:36:57 <Gregor> fizzie: Yes yes it should, but that's not what I was demonstrating. Also your code is horrible and evil and you should feel bad.
18:42:02 <tswett> Gregor: okay, I feel like there's a joke you're making that I'm not getting.
18:42:20 <tswett> You said that buffer.h doesn't compile with a C++ compiler, and implied that it does compile with a C compiler.
18:42:34 <tswett> I'm guessing that buffer.h uses some C tomfoolery that C++ doesn't support. Is that correct?
18:42:45 <Gregor> “Tomfoolery”
18:42:52 <Gregor> I demonstrated exactly the “tomfoolery” above.
18:44:07 <pikhq_> tswett: You actually have to *work* to get C working in C++.
18:44:10 <AnotherTest> C tomfoolery would be the absence of strong type checking? :D
18:44:28 <pikhq_> tswett: Merely implicit casts from void* don't work.
18:44:42 <Gregor> AnotherTest: If you think that C++ has strong type checking, you're an idiot.
18:44:43 <pikhq_> And that comes up whenever you do memory allocation in idiomatic C.
18:45:27 <Deewiant> !cxx int main() { int x; return printf("%zu\n", sizeof x) < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }
18:45:30 <Gregor> It merely lacks the biggest hole in C's weak typing.
18:45:31 <EgoBot> Does not compile.
18:45:43 <pikhq_> Gregor: And not even.
18:45:47 <AnotherTest> Gregor: some statement that is
18:45:56 <pikhq_> void* casts are still perfectly feasible in C++.
18:46:01 <pikhq_> They're just *explicit*.
18:46:26 <AnotherTest> Having explicit casts does not mean you don't have strong type checking
18:46:28 <pikhq_> You simply need to say "Yes, I mean to abuse the weak typing".
18:46:50 <Gregor> <AnotherTest> Having explicit casts does not mean you don't have strong type checking // having explicit or implicit casts which may succeed when the true type is not as specified is by definition lacking strong typing.
18:47:13 <pikhq_> AnotherTest: There's no type checking on the casts is the thing!
18:47:28 <AnotherTest> the programmer just decides to not use strong checking by casting
18:47:33 <Gregor> If you're arguing that C++ without casts is strongly typed, that may (or may not) be the case, but is rather boring.
18:47:46 <Gregor> Also it's not since no array bounds checking *shrugs*
18:47:47 <AnotherTest> but the language still offers it(although it can be chosen not to use it)
18:47:56 <AnotherTest> in C, there is no strong checking by default
18:48:03 <pikhq_> Gregor: C++ still has implicit casts.
18:48:11 <pikhq_> Gregor: Just significantly fewer.
18:48:23 <Gregor> pikhq_: I thought it only had typesafe implicit casts though?
18:48:30 <Gregor> And no implicit pointer casts whatsoever
18:48:34 <Gregor> Erm
18:48:38 <Gregor> Except between related classes of course
18:49:24 <pikhq_> Gregor: Eh, probably. ... Except that the type promotion from float to double might give you unwanted excess precision.
18:49:42 <pikhq_> (mind you, you get the same damned problem just using x87 floats.)
18:49:42 <AnotherTest> Gregor: Bjarne Stroustrup at least claims he added strong checking, does that make him an idiot?
18:49:47 <Gregor> pikhq_: That seems unrelated to type safety, to me.
18:49:54 <pikhq_> Gregor: Meh, probably.
18:50:10 <Gregor> AnotherTest: Big name implied big thing, is big name an idiot?
18:50:21 <fizzie> Gregor: Base *p; Subclass *q = dynamic_cast<Subclass*>(p); will check the type for you during the cast, if you like.
18:50:47 <Gregor> fizzie: At no point did I make the claim that safe casts don't exist >_>
18:50:55 <pikhq_> AnotherTest: Have you played with Haskell before?
18:50:56 <Gregor> Although they do have the ugliest cast syntax conceivable :)
18:51:15 <pikhq_> (or an ML-variant?)
18:51:28 <pikhq_> AnotherTest: *That* is static strong types.
18:51:30 <AnotherTest> pkhq_: I intend on doing so. I regret to say I have not yet really looked into it well.
18:52:20 <AnotherTest> Well C++ has at least *some* static type checking
18:52:31 <Gregor> So does C.
18:52:37 <AnotherTest> s/static/strong static
18:52:57 <AnotherTest> C has less for sure
18:53:13 -!- calamari has joined.
18:53:15 <pikhq_> And both are fairly low on the scale in an absolute sense.
18:53:15 <Gregor> I don't know if it's meaningful for a language to have “some” strong typing.
18:53:43 <AnotherTest> Gregor: it probably is; something is better then nothing in this case I think
18:53:47 <pikhq_> Gregor: Well, you can consider typing to be a continuüm between weak and strong.
18:53:48 <AnotherTest> *than
18:54:07 -!- calamari has left.
18:54:14 <Gregor> pikhq_: I challenge you to find a single English word in which “uu” is a diaeresis.
18:54:19 <pikhq_> If you do this, then C and C++ aren't absolutely at the weak end, but aren't *that* far fron there anyways.
18:54:20 <Gregor> Erm
18:54:23 <Gregor> Sory, is /not/.
18:54:28 <Gregor> X_X
18:54:30 <Gregor> *Sorry
18:55:03 <pikhq_> Gregor: Anything with double-u. Which in historical writing was literally written "uu" or "vv". :)
18:55:11 <Gregor> pikhq_: Pff. Cheating.
18:55:20 <pikhq_> UUhat do you mean, cheating? :P
18:55:40 <pikhq_> Anyways, "muumuu".
18:55:59 <fizzie> "uuhat", or "uû" as it is often written.
18:56:11 <Deewiant> "vacuum", in at least US dialects.
18:56:16 <pikhq_> Good point.
18:56:19 <fizzie> Uû do you mean it's not written like that?
18:56:26 <Gregor> Deewiant: Good'n!
18:56:27 <pikhq_> "Vacuum" is definitely not a diaeresis in US English.
18:56:31 <Gregor> pikhq_: I accept your diaeresis.
18:56:36 <pikhq_> Gregor: \o/
18:56:37 <myndzi> |
18:56:37 <myndzi> /´\
18:56:38 <Gregor> (Mark)
18:56:55 <Gregor> C++ removes one gap in C's typing (others too, maybe?), and adds a new type hierarchy which is itself, without explicit casts, strongly typed. To me, arguing that it's “more” strongly typed based solely on the grounds that its completely new additions are themselves “more” strongly typed seems odd, particularly since we came to this discussion via compiling C code in C++, so would not be writing idiomatic C++ anyway.
18:57:19 <pikhq_> And would be having to move away from idiomatic C to do that as well.
18:57:29 -!- edwardk has joined.
18:57:51 <pikhq_> (using implicit void* casts is *very* idiomatic C)
18:58:24 <AnotherTest> Gregor: adding a strong type check for any language feature could be seen as an addition to the language (is one), so I'm not sure if your point is valid
18:59:35 <pikhq_> AnotherTest: Eh, you're still dealing with a language where char* can alias any other pointer. :)
18:59:50 <Gregor> And no array bounds checking, and ALL POINTERS ARE ARRAYS.
19:00:04 <AnotherTest> But as to porting C to C++: It's probably not worth it
19:00:05 <Gregor> SomeObjectType *foo = new SomeObjectType; foo[-1].lol
19:00:24 <AnotherTest> std::vector
19:00:26 <AnotherTest> yay!
19:00:37 <AnotherTest> std::string
19:00:38 <AnotherTest> yay!
19:00:42 <pikhq_> NULL[foo].lol
19:01:03 <Gregor> pikhq_: I /think/ that would need a cast as NULL is the wrong type ;)
19:01:22 <pikhq_> Gregor: Kay, fine. ((uintptr_t)NULL)[foo]
19:01:29 <AnotherTest> You can always circumvent static checks(delete nullptr; all day long)
19:01:31 <Gregor> Mucho better.
19:01:41 <AnotherTest> Well maybe not always, but most of the time
19:01:55 <pikhq_> Or just 0[foo].
19:02:15 <Gregor> AnotherTest: If you'd like to play the “define all holes as circumvention” game, we can do that just as easily with C.
19:02:43 <pikhq_> And you'd still be dealing in a language where a char* aliases all pointers.
19:02:49 <pikhq_> Well, can alias.
19:03:12 <AnotherTest> Gregor: my_function(1, 2, 3); /* but wants 4 args */
19:03:42 <AnotherTest> I wouldn't call that circumvention, it's just human error not found by the compiler
19:03:51 <Gregor> AnotherTest: That's illegal with a complete prototype in C, and legal with varargs in either.
19:04:15 <pikhq_> (*(void(*)(int,int,int))myfunction)(1,2,3); // Suck it.
19:04:32 <nortti> :P
19:04:48 <Gregor> No, I'm seriously trying to figure out wtf AnotherTest is trying to demonstrate here... JavaScript has that flaw, C does not.
19:04:51 <fizzie> Regarding std::vector, I think it's kinda funny that C++ goes and makes "void f(const char* const* p); ... char **q; f(q);" legal, but then when you feel your conscience and want to make that a vector, it's no longer possible, since std::vector<char *> certainly can't go to a function expecting const std::vector<const char *>.
19:05:30 <Sgeo_> pikhq_, are there any good reason for Tcl arrays to not be first-class?
19:05:34 <Taneb> edwardk, the sudden change in comonad seemed very sudden
19:05:43 <pikhq_> fizzie: Yeah. Templates are weird.
19:06:01 <pikhq_> Sgeo_: Yes: Tcl "arrays" are nothing more than variables with a certain class of names.
19:06:14 <pikhq_> Sgeo_: They just happen to have a more convenient implementation behind the scenes.
19:06:55 <pikhq_> Sgeo_: In *principle*, Tcl could be implemented without them actually existing. The array proc would just have to do more work.
19:07:35 <pikhq_> Sgeo_: Also, beware that they're poorly named.
19:07:37 <Sgeo_> pikhq_, but why have these non-first-class things with no built-in first-class alternative until 8.5?
19:07:50 <pikhq_> Sgeo_: Tcl arrays are hash tables.
19:08:12 <pikhq_> Erm, hash maps.
19:08:58 <pikhq_> Sgeo_: Because they're not even there at all. That they're hash maps rather than just variables of name in the form foo(bar) is an implementation detail.
19:10:14 <Sgeo_> pikhq_, what did people do before 8.5 in places where someone would use a dictionary?
19:10:37 <AnotherTest> Gregor: http://ideone.com/d7Dv3
19:11:20 <pikhq_> Use variables of form foo(bar)?
19:11:31 <pikhq_> Sgeo_: Also, keep in mind, strictly speaking dicts don't exist either.
19:11:56 <pikhq_> Sgeo_: That they are hash tables rather than strings of a particular form is an implementation detail.
19:11:57 -!- oerjan has joined.
19:12:24 <Gregor> AnotherTest: "That's illegal WITH A COMPLETE PROTOTYPE in C". The particular example you gave (expects 4) doesn't fit your rather unlikely pattern at all.
19:13:10 <AnotherTest> Gregor: many code has been written like that I believe
19:13:15 <pikhq_> Sgeo_: Everything in Tcl is a string. Some commands happen to treat strings in a particular way. The Tcl implementation stores strings in a format more convenient for those commands as an implementation detail.
19:13:45 -!- calamari has joined.
19:13:45 <AnotherTest> and writing void as arguments doesn't seem logic
19:13:50 -!- calamari has left.
19:13:57 <AnotherTest> (maybe because the creator of C++ invented that)
19:14:08 <pikhq_> Sgeo_: Even friggin' *numbers* aren't really first-class in Tcl. They're just strings containing digits.
19:14:34 -!- AnotherTest has quit (Quit: Leaving.).
19:14:39 <Sgeo_> That's all well and good, but I can
19:14:47 <Sgeo_> I can't pass an array to a proc the way I can pass a dict
19:14:56 <Gregor> AnotherTest: The example you showed only has issues because a zero-argument function written as "()" in C is, for historical/hysterical reasons, variadic. It ONLY causes an issue if: 1) You are actually calling incorrectly-written zero-parameter functions this way, which is not a type safety issue, 2) you have written your prototypes incorrectly, or 3) you are calling functions without prototypes, which is a warning by default in every modern C compiler.
19:15:08 -!- augur_ has quit (Read error: Connection reset by peer).
19:15:10 <pikhq_> Sgeo_: [array get foo]
19:15:24 -!- augur has joined.
19:15:42 <Gregor> The (2) case is only harmful in the case where you've written your prototypes as variadic even though your functions take multiple arguments, which is enormously unlikely.
19:15:43 <edwardk> Taneb: sorry bout that. you mean the major version jump?
19:15:49 <Taneb> Yeah
19:15:58 <Taneb> I'm not complaining, it just seemed to come out of nowhere?
19:16:32 <pikhq_> Sgeo_: Or, pass the name of the array and the proc peeks up the stack using upvar.
19:16:41 <Taneb> brb
19:16:52 <Sgeo_> pikhq_, are arrays and dicts identical in terms of their string ..... I don't want to say "representation", although that word works for arrays
19:16:52 <Gregor> AnotherTest: However, I am inclined to agree with you that this is a second C hole that C++ plugged. This sort of “implicit” variadicity should never have existed.
19:16:55 <Gregor> Oh, he's gone ...
19:17:02 <pikhq_> Sgeo_: It is "string representation".
19:17:12 <pikhq_> Sgeo_: And, yes, they are the same string representation.
19:18:42 <Sgeo_> pikhq_, do you have opinions of the various OO libraries?
19:18:48 <Sgeo_> I read a blog post praising Snit
19:18:51 <pikhq_> Kinda like Snit.
19:19:02 <Sgeo_> Apparently Tcl 8.6's OO is based on XOTcl
19:19:26 <pikhq_> Yeah, but you're probably going to pretend it doesn't exist.
19:19:30 <Sgeo_> ?
19:19:47 <pikhq_> Tcl 8.6 OO is intended for use as a more efficient backend of the various OO libraries.
19:19:54 <Sgeo_> Ah
19:19:57 <pikhq_> It is Pain to use straight.
19:20:29 <Sgeo_> Why would it be a pain to use straight if it's XOTcl-inspired? Missing a few XOTcl features, but is XOTcl a pain?
19:22:21 <pikhq_> Think "using Gobjects straight"-ish.
19:22:56 -!- augur has quit (Read error: Connection reset by peer).
19:23:24 -!- augur has joined.
19:23:41 <Sgeo_> Never touched GObjects
19:24:39 <Sgeo_> Is something like this morally acceptable, or is there a better command:
19:24:51 <Sgeo_> dict create {*}{a 5 b 6 d 7}
19:25:09 <Sgeo_> Say, if the dictionary will have a lot of items and I want to space things out on multiple lines
19:26:18 <pikhq_> Couldn't you just do set foo {a 5 b 7 d 7} ?
19:27:41 <Sgeo_> Are there any efficiency reasons not to?
19:28:11 <pikhq_> Uh, not really. Behind the scenes it'll get converted to a dict internally as soon as you use it as one.
19:28:22 <pikhq_> Making it essentially the same cost as that dict create call.
19:28:37 <Sgeo_> Ah\
19:28:47 <Taneb> Back
19:32:08 <Sgeo_> pikhq_, why does the Tcl community love Metakit so much, and why aren't there Metakit bindings into languages other than Python Tcl and I forget the third?
19:33:26 <pikhq_> Sgeo_: It's friggin' handy being able to stick a Tcl app into a single binary.
19:33:53 <Sgeo_> SQLite couldn't have been used for the purpose?
19:34:11 <pikhq_> I suppose it could have been.
19:34:18 -!- calamari has joined.
19:34:47 <Sgeo_> I think the Tcl app in a single binary thing is one of the things drawing me to Tcl actually
19:35:22 <pikhq_> Also means you get to be bitter at Java in a bit...
19:35:31 <Sgeo_> ?
19:36:25 <pikhq_> For a while, Sun was promoting Tcl as a write-once run-everywhere language.
19:36:28 <pikhq_> They dropped it for Java.
19:36:52 -!- nooga has quit (Ping timeout: 248 seconds).
19:37:02 <Sgeo_> Ah
19:37:54 <Gregor> Hm, modern Fythe has no binary format, for no good reason.
19:38:16 <Gregor> Is it cheating for a binary format to involve zlib?
19:38:40 <olsner> why would it be cheating?
19:39:00 <Gregor> Because it's a way to hide the fact that my binary format is a text format ^_<
19:39:12 <pikhq_> Because it's actually work to implement DEFLATE? :P
19:39:36 <olsner> xor with 64 or 96 and it will look like binary gobbledygook, probably
19:39:47 <Gregor> lol
19:40:01 <Gregor> The only sensible portable format for Fythe is s-expressions.
19:40:17 <pikhq_> Speaking of, *god dammit why is my CRC32 off*.
19:40:33 <olsner> I was hoping for "The only sensible portable format for Fythe is gobbledygook"
19:40:40 <Gregor> lol
19:40:45 <Sgeo_> "Tcllib has an approximatley yearly release schedule. Version 1.10 has been released September 12, 2007."
19:41:22 <pikhq_> http://sprunge.us/SCTK Everything works except that sometimes the CRC-32 is wrong.
19:41:35 <pikhq_> *But only sometimes*.
19:41:35 <pikhq_> :(
19:41:40 <Gregor> Actually, with a system like Fythe, what I really need is a portable “VM image” format.
19:43:23 <tswett> So, it occurs to me that I need to send doubles over a network.
19:43:48 <tswett> Now, before we start, a file written in C can perfectly well link with C++ libraries, right?
19:44:05 <olsner> of course, but will it work? you can never know
19:44:09 <calamari> xor each character with the result of the last character after it was xor'ed?
19:44:13 <tswett> Right, right.
19:44:34 <pikhq_> tswett: Yes, just have appropriate use of extern "C" in the header files..
19:45:03 <tswett> Oh, good. Let me just rewrite all hundred or so header files to use that.
19:45:05 <tswett> Okay, done.
19:45:12 <olsner> I haven't figured out if you're supposed to be able to rely on that (is anything about combining C and C++ actually defined by the standard?), but in practice it's fine
19:45:23 <olsner> ... provided you have extern "C" where appropriate
19:45:27 <tswett> olsner: what else would extern "C" be for?
19:45:30 <pikhq_> olsner: Yes, extern "C" is part of the spec.
19:45:41 <olsner> tswett: invoking undefined behavior or something?
19:45:51 <tswett> Besides, isn't pretty much every programming language ever supposed to interact with C?
19:45:52 <pikhq_> It's functionally a light-weight FFI.
19:46:47 <tswett> Anyway, sending doubles over a network. Can I just cast a double* to a void* and read eight bytes?
19:47:24 <Sgeo_> Would Snit need to exist if there was one Tcl OO system from the start?
19:47:33 <olsner> you can definitely read sizeof(double) bytes, but I don't know how strictly defined the internal representation of double is
19:47:42 <Sgeo_> Because one of the key ideas seems to be treating any object from any object system as an object
19:48:03 <Sgeo_> If there was one Tcl OO system, there wouldn't be competing systems to treat identically
19:48:04 <tswett> I hope that "double" never means anything other than a double-precision floating-point.
19:48:54 <tswett> I mean, if I treat a double as bytes on one system, and then treat those same bytes as a double on a *different* system, am I guaranteed to have the same double each time, or not?
19:50:57 <olsner> http://stackoverflow.com/questions/2701529/recording-reading-c-doubles-in-the-ieee-754-interchange-format suggests you cannot assume that
19:57:07 -!- nooga has joined.
19:57:25 <Vorpal> why does lightly touching a "dead" pixel on a TFT sometimes fix the issue? I had a red subpixel stuck in the on-state today, and touching it gently (through a microfibre cloth) fixed the issue. Wikipedia mentions that it can sometimes fix the issue but doesn't give any explanation why that is.
19:57:25 <lambdabot> Vorpal: You have 1 new message. '/msg lambdabot @messages' to read it.
19:57:32 <Vorpal> @messages
19:57:32 <lambdabot> nortti said 1d 5h 30m 51s ago: in case you missed these two 17:21 < nortti> Vorpal: complete distro userland rebuild (including strace) takes around 3 minutes on my 700MHz Pentium III 17:24 < nortti>
19:57:32 <lambdabot> Vorpal: also one reason why I am using sash is because it provides most of the functionality missing from toybox (like cp :P)
19:58:58 <Vorpal> nortti, speaking of cp, that is like one thing that annoyed me on Android. I had to install busybox using cat to copy it from the sdcard
19:59:10 <nortti> :P
19:59:26 <nortti> yeah. why is implementing cp so hard?
20:00:08 <Vorpal> (which is not actually an sdcard, just a very weird fuse mapping of a directory in the internal flash memory that mangles permissions to look behave kind of like vfat.
20:00:22 <Vorpal> s/look//
20:00:37 <Vorpal> (note to self: proof read /after/ editing)
20:01:35 <Vorpal> speaking of that, why is the MTP behaviour in ubuntu so erratic.
20:01:56 <Vorpal> it worked for a while out of box, and now it doesn't.
20:04:44 -!- edwardk has quit (Ping timeout: 248 seconds).
20:06:50 -!- pikhq_ has quit (Ping timeout: 246 seconds).
20:06:55 -!- pikhq has joined.
20:08:03 <pikhq> tswett: You are *not* guaranteed that at all.
20:08:19 <pikhq> tswett: A "double" can be any sort of floating point number.
20:08:34 <pikhq> As can a float or a long double.
20:09:56 <pikhq> tswett: Besides which, you couldn't assume that *even if* you knew doubles where always IEEE 754 double-precision floats.
20:10:01 <pikhq> tswett: Endianness!
20:11:18 <pikhq> To be portable you either need to deal in the string representation, or encode into the interchange format manually.
20:12:24 <Vorpal> pikhq, C?
20:12:31 <pikhq> Vorpal: Yes.
20:12:34 <Vorpal> if so iirc there are some defines from C99 and onwards
20:12:41 <Vorpal> that tell you if it is IEEE or not
20:13:33 <pikhq> Vorpal: Yes, you can tell *if* it's IEEE floats or not. You still have to handle endianness.
20:13:39 <Vorpal> pikhq, autoconf
20:13:44 <Vorpal> (or similar)
20:13:53 -!- myndzi has quit (Ping timeout: 245 seconds).
20:14:17 <pikhq> Vorpal: Wrong answer!
20:14:25 <Vorpal> pikhq, oh?
20:14:49 <pikhq> Vorpal: It feels very stupid and wrong to go #if BIG_ENDIAN swap_bytes(); #endif
20:15:07 <Vorpal> don't forget #elsif defined(PDP_ENDIAN)
20:15:31 <pikhq> When what you're actually *doing* is just serialization to a known format.
20:15:46 <pikhq> If your code *cares* about the system's endianness you're doing it wrong.
20:16:38 <Vorpal> pikhq, anyway you could just do #ifdef BIG_EDIAN\n#define htond ...
20:16:57 <Vorpal> since htonl/htons and so on are essentially that, only defined by the system
20:17:42 <pikhq> Vorpal: Or you could be sane and just do char *serialised_foo = {foo, foo >> 8, foo >> 16, foo >> 24}
20:17:43 <olsner> Vorpal: knowing about endianness is wrong
20:18:06 -!- myndzi has joined.
20:18:06 <pikhq> (note: only works if foo is unsigned.)
20:18:19 <olsner> writing portable formats in the sane way will not require having any clue what format you're starting with
20:18:22 <Vorpal> olsner, well, the system doesn't provide a hton*/ntoh* set of calls for floating point, which would be really useful
20:18:22 <pikhq> (and uint32_t)
20:18:43 <Vorpal> <pikhq> Vorpal: Or you could be sane and just do char *serialised_foo = {foo, foo >> 8, foo >> 16, foo >> 24} <-- foo was a floating point no?
20:18:53 <Vorpal> hm
20:19:02 <Vorpal> you serialise a floating point to a fixed point number?
20:19:18 <Vorpal> oh wait
20:19:31 <Vorpal> what does >> do on a double?
20:19:46 -!- pikhq_ has joined.
20:19:59 <Sgeo_> pikhq, is it fair to say that it's impossible to have an object capability system in Tcl because any unique object could be brute-forced?
20:20:13 -!- edwardk has joined.
20:20:15 <pikhq_> Sgeo_: Seems so.
20:20:16 <olsner> Vorpal: I think you shouldn't do that
20:20:26 <Vorpal> olsner, you mean what pikhq_ suggested?
20:20:33 <Sgeo_> pikhq_, that's kind of sad
20:20:39 <Vorpal> olsner, or what I suggested?
20:20:45 <pikhq_> Vorpal: I was suggesting that on a uint32_t.
20:20:47 <olsner> Vorpal: do >> on a double
20:20:56 <Vorpal> pikhq_, doesn't solve it if you have a double
20:21:03 <Sgeo_> Although I am more alarmed by the impossibility of code-walking
20:21:05 <pikhq_> Vorpal: The correct serialization on a double is more complex.
20:21:16 <Vorpal> pikhq_, I thought that was the topic though
20:21:21 <olsner> Vorpal: solutions for uint32_t are not generally applicable on doubles
20:21:32 <Vorpal> pikhq_, anyway for uint32_t you just use htonl/ntohl
20:21:35 <pikhq_> If you want it in IEEE 754 exchange format, you will need to actually compute what the double is in that format.
20:21:57 <Vorpal> uint32_t ntohl(uint32_t netlong);
20:22:04 <pikhq_> Vorpal: *No you don't*, you pretend those stupid god-damned functions don't exist, byte-swapping is *the wrong solution*.
20:22:04 <Vorpal> according to my man page
20:22:22 <pikhq_> Vorpal: What you do is serialize things in the format you want.
20:22:24 <pikhq_> And that's all.
20:22:28 <Vorpal> pikhq_, so how do you work with *nix sockets?
20:22:35 -!- pikhq has quit (Ping timeout: 246 seconds).
20:22:37 <Vorpal> iirc several of those calls require those functions
20:22:52 <pikhq_> Vorpal: You call it a god-damned retarded API, and deal.
20:22:53 <Sgeo_> pikhq_, is there a reason tcllib has two different OO libraries?
20:22:59 <Vorpal> right
20:23:01 <olsner> just pretend that htonl are not endian-related but are "silly things you call to work with unix sockets"
20:23:08 <pikhq_> Vorpal: Otherwise, you serialize things in the format you want.
20:23:21 -!- stanley has quit (Read error: Operation timed out).
20:24:22 <pikhq_> Sgeo_: If it's a pure Tcl library, it can go in Tcllib. There's not much vetting for redundancy.
20:24:43 <Vorpal> why exactly are those functions silly though? Silly to use with the socket API yes (would be more sensible if it used native endian and converted internally). But not silly in general
20:25:44 <pikhq_> Vorpal: Because they're up there with casting pointers to and from int in correctness.
20:26:05 <Sgeo_> It occurs to me that Tequila would be a very very good thing for use in implementing Network Headache
20:26:16 <pikhq_> Vorpal: You are not trying to convert from host byte order to network byte order, you are merely serializing data.
20:26:26 <Vorpal> pikhq_, there is a difference though, POSIX specifies hton*/ntoh*, but casting pointers is very clearly undefined.
20:26:30 <pikhq_> Vorpal: So god-damned serialize the data.
20:26:54 <Sgeo_> pikhq_, I'm now wondering if I should implement Network Headache
20:27:00 <Vorpal> but sure, you have a point in that serialising data is a different task
20:27:08 -!- stanley has joined.
20:27:08 -!- stanley has quit (Changing host).
20:27:08 -!- stanley has joined.
20:27:14 <Vorpal> Sgeo_, new esolang?
20:27:25 <Sgeo_> Vorpal, old one
20:27:26 <Sgeo_> http://esolangs.org/wiki/Network_Headache
20:27:28 <Vorpal> ah
20:27:39 <Sgeo_> ....oh, hmm
20:28:14 <pikhq_> Especially because hton*/ntoh* only helps you in the case when you're trying to bludgeon uint32_ts and uint16_ts into big-endian format anyways.
20:28:19 <Sgeo_> Well, there's already an implementiation in Pythonm
20:28:34 <pikhq_> i.e. they don't even solve the problem.
20:29:01 <Vorpal> that would require always connected. Reminds me of certain forms of DRM
20:29:13 <Vorpal> (the page that Sgeo_ linked that is)
20:29:17 <olsner> I think a lot of programmers share the incorrect view on this (byteswapping and endian-#ifdeffing vs serialization), I wonder if there's a succinct description somewhere on why they're doing it wrong
20:29:33 <Vorpal> pikhq_, btw for serialising, what about singed integers?
20:29:56 <Vorpal> you could have issues there (2-complement, 1-complement, sign bit)
20:30:02 <pikhq_> Vorpal: *Clearly* you'll need to write them out in the format you want.
20:30:16 <olsner> sing them backwards until they have been unsung
20:30:30 <pikhq_> Vorpal: If you want 2s complement, you'll need to stick the absolute value in an unsigned number, bitwise not, and add 1.
20:30:40 <Vorpal> pikhq_, and using text files is even worse. What if you move the file to an EBCDIC machine (from an ASCII machine)
20:30:45 <pikhq_> It's either that or assume you're dealing with numbers of known representation.
20:31:07 <pikhq_> Vorpal: Nah, assume UTF-8. Anything else is broken in profound ways.
20:31:44 <olsner> isn't the conversion to unsigned defined to work the same way as "reinterpreting the bits as 2's complement" would?
20:31:45 <Vorpal> pikhq_, the reality however is that one of the most popular operating systems use UTF-16. Which is indeed broken (BOM urgh)
20:31:51 <pikhq_> olsner: Is it?
20:31:56 <Vorpal> in fact the most popular OS
20:32:16 <olsner> iirc, it's "add 2^n until the value is in range of the unsigned type"
20:32:23 <pikhq_> Vorpal: Yes, Windows is a maximally broken platform.
20:32:23 <olsner> where n is the number of bits in the type
20:32:50 <pikhq_> Vorpal: You cannot write compliant C that handles all filenames on the platform currently.
20:33:01 <pikhq_> olsner: Okay, then.
20:33:15 <pikhq_> So, just cast to unsigned and you've got it in 2's complement.
20:33:28 <Vorpal> indeed
20:33:36 <olsner> I remember thinking "oh, how clever of them to avoid invoking 2's complement in this definition"
20:33:39 <pikhq_> Well, that makes *that* easier.
20:34:02 <Vorpal> pikhq_, actually couldn't you use the posix layer on windows
20:34:17 <Vorpal> I wonder what that does wrt UTF-8/UTF-16
20:34:26 <olsner> probably something completely broken
20:34:46 -!- pikhq has joined.
20:34:48 <olsner> perhaps it converts to ASCII replacing all characters above 0x7f with ?
20:37:21 <pikhq> Vorpal: I'm pretty sure that just hands you the UTF-8 file names.
20:37:36 <pikhq> Vorpal: Windows filesystems post-LFN deal in Unicode natively.
20:37:42 <Vorpal> hm
20:37:48 <nortti> LFN?
20:37:52 -!- pikhq_ has quit (Ping timeout: 252 seconds).
20:37:52 <pikhq> Long file names.
20:39:23 <pikhq> That legacy encodings are the *only* supported encodings for char strings on Win32 is just a stupid, stupid design decision that they *work* to maintain.
20:40:24 <Vorpal> how does NTFS store strings internally?
20:40:31 <Vorpal> of the filenames I mean
20:40:31 <pikhq> Pretty sure UTF-16.
20:40:46 <pikhq> Just like FAT LFNs.
20:40:51 <Vorpal> hm
20:41:20 -!- rapido has joined.
20:44:10 <Vorpal> pikhq, when you think about it, UTF8 is pretty crazy too
20:44:20 <rapido> anyone fond of prolog unification?
20:44:35 <pikhq> Vorpal: How so?
20:44:53 <rapido> unification is more generic than pattern matching
20:44:55 <pikhq> Vorpal: Keeping in mind that all Unicode transformation formats are inherently variable-width.
20:45:21 <Vorpal> pikhq, it is basically a compression scheme for UCS4, specialized to favour western texts
20:45:38 <Vorpal> using UCS4 and gzip/deflate/etc where needed would make more sense
20:45:54 <pikhq> Well, yes. Except that that's not the design goal.
20:46:25 <pikhq> The design goal is not to break everything which assumes a string is composed of series of bytes.
20:47:08 <pikhq> Making it so that Unicode 'just works' on nearly everything.
20:47:18 <Vorpal> indeed. Backward compatibility often (not always!) result in crazy and/or bad designs though
20:47:20 <pikhq> Except when a *certain* OS vendor actively works to break it.
20:49:19 -!- calamari has left ("Leaving").
20:49:26 -!- nortti_ has joined.
20:49:51 <Vorpal> pikhq, not considering backward compatibility however, UTF-8 (and all other variable-width encodings) are however stupid.
20:50:04 <Vorpal> in fact there is a lot of stupidity in unicode in general from that perspective
20:50:21 <kmc> there are actual unicode-specific compression schemes
20:50:24 <kmc> more complicated than utf-8
20:50:34 <kmc> why do you consider variable width encodings to be stupid?
20:50:42 <kmc> clearly some characters occur more often than others
20:50:51 <kmc> BMP characters occur vastly more often than non-BMP characters
20:51:12 <pikhq> Vorpal: Dude, Unicode could be *much* clearer if we went more variable-width on it.
20:51:22 <pikhq> There's no sense in all the precomposed hangul jamo.
20:52:08 <pikhq> Heck, in principle hanzi could all be a bunch of radicals. (admittedly, this'd make it hard to *render*. But, a couple hundred entries and it'd be Complete.)
20:52:38 <Vorpal> <kmc> clearly some characters occur more often than others <-- varies between languages
20:52:46 <Vorpal> sure, some are rare in all languages
20:53:07 <pikhq> But getting rid of the precomposed hangul jamo would be quite beneficial and an easy change.
20:53:19 <pikhq> (given that a system already has to deal with jamo composition)
20:53:36 <kmc> Vorpal: everything outside the BMP is extremely rare in all extant languages
20:53:41 <Vorpal> but as long as we make the minimum size 8 bits we will have to favour some languages
20:53:57 <Vorpal> kmc, sure, but all of BMP doesn't fit in a byte
20:54:00 <kmc> yeah
20:54:07 <kmc> so what
20:54:45 <pikhq> Vorpal: But the 7 bit range of Unicode is profoundly common in real-world data. Even in languages that don't use them at all.
20:55:03 <pikhq> (courtesy of nearly all text exchange formats being English-based)
20:55:34 <Vorpal> also it wasn't those bits of stupidity I was referring to in specific for the crazy bits of unicode. I was thinking about stuff like double-width letters having separate code points, or the blackboard bold math chars
20:55:40 <Vorpal> both of those are formatting
20:55:51 <Vorpal> which doesn't really belong in unicode
20:56:06 <pikhq> Yes, those are kinda ludicrous.
20:56:20 <pikhq> There for backwards-compat reasons.
20:56:32 <Vorpal> and the zero width space? I guess there must be some use case for it, but I can't think of one.
20:56:49 <pikhq> It's necessary for some languages.
20:56:57 <Vorpal> in what way?
20:57:20 <pikhq> Oh, sorry, that's zero-width non-joiner...
20:58:03 <pikhq> Vorpal: Basically to indicate that a ligature is inappropriate.
20:58:10 -!- rapido has quit (Quit: rapido).
20:58:13 <Vorpal> you can't see a zero width space when written on paper (which all current scripts were intended for, or papyrus, or clay tablets and so on), so how could it change anything semantically
20:58:43 <Vorpal> pikhq, isn't zero width space separate from zero-width non-joiner though?
20:58:49 <pikhq> Yes, they are.
20:58:56 <pikhq> The zero-width non-joiner is semantics.
20:58:59 <Vorpal> so what is the point of the zero width space
20:59:24 <pikhq> The zero-width space is... Typesetting?
20:59:34 <Vorpal> which should indeed not be part of unicode.
20:59:38 <pikhq> Yeah, doesn't really belong in Unicode.
20:59:49 <pikhq> Unless we're going to expand the scope of it profoundly.
20:59:54 <pikhq> (which I'd call ludicrous
20:59:55 <pikhq> )
21:00:26 <Vorpal> exactly
21:01:03 <Vorpal> also the code point numbering is kind of weird. I seem to remember there are several separate blocks with math related symbols
21:01:12 <Vorpal> why
21:01:55 -!- Taneb has quit (Quit: Leaving).
21:02:26 <Vorpal> apart from ASCII, is there anything else that the unicode codepoints are actually compatible with?
21:02:39 <olsner> latin1?
21:02:56 <Vorpal> olsner, doesn't åäö map differently between latin1 and unicode iirc?
21:03:01 <fizzie> No.
21:03:03 <Vorpal> or is that just with UTF-8?
21:03:20 <fizzie> The second block is directly ISO-8859-1.
21:03:29 <fizzie> Their UTF-8 expansions are two-byte, of course.
21:03:30 <pikhq> UTF-8 encodes them differently, but the low 8 bits of Unicode are ISO-8859-1.
21:03:30 <olsner> obviously, utf-8 will result in different sequences of bytes, but the numbering of the codepoints match latin-1
21:03:39 <Gregor> The Unicode CODEPOINTS are latin1 compatible, but there is no useful Unicode ENCODING that is.
21:03:43 <olsner> everyone the same thing at once!
21:03:47 <Gregor> YES
21:04:07 <Vorpal> pikhq, ah
21:04:18 <fizzie> Zero-width no-break space (i.e. the same character as the BOM) has the excuse of having same semantics as zero-width word joiner but existing before that was added; the zero-width space (that is used for marking word break opportunities in scripts with no visible word spacing) is quite typographical, though.
21:04:39 <Vorpal> Gregor, there is always UCS1 ;)
21:04:39 <pikhq> You can convert ISO-8859-1 to UTF-16 just by adding NULL. :)
21:04:48 <pikhq> Vorpal: Good one. :)
21:04:52 <Gregor> Vorpal: “useful”
21:05:27 <Vorpal> Gregor, it is highly useful. It offers perfect interoperability with a large group of legacy systems!
21:05:38 <fizzie> You can also (obviously) convert back from UTF-16 to ISO-8859-1 by dropping every other byte, and barfing if the dropped byte's not zero.
21:05:44 <nortti_> UCS1?
21:06:08 <pikhq> nortti_: 1-byte encoding of Unicode.
21:06:16 <nortti_> really?
21:06:18 -!- nothing has joined.
21:06:19 <olsner> nortti_: don't listen to Vorpal :)
21:06:27 <pikhq> nortti_: Formed by analogy with UCS-2 and UCS-4.
21:06:34 <fizzie> And UCS-16.
21:06:43 -!- nothing has changed nick to Guest33002.
21:06:51 <nortti_> `welcome Guest33002
21:06:54 <fizzie> It has the advantage where one codepoint fits neatly in a SSE register.
21:06:55 <Vorpal> fizzie, that would be one crazy encoding
21:06:59 <HackEgo> Guest33002: 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. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
21:06:59 * Guest33002 waves
21:07:18 * Guest33002 will need to remember how to use IRC -- It's been a little while.
21:07:20 <olsner> UCS-16 allows a full GUID per character
21:07:23 <Gregor> UCS-0.5. 4 bits per codepoint. Need letters? TOO BAD.
21:07:30 <nortti_> :P
21:07:36 <kmc> what about baudot
21:07:51 <Vorpal> fizzie, UCS32 would work well with AVX
21:08:14 <nortti_> kmc: it was 5bit
21:08:20 <fizzie> Vorpal: Yes, though people might accidentally confuse UCS-16 and UCS-32 with UCS-2 and UCS-4, assuming that the numbers are referring to bits.
21:08:46 <Vorpal> fizzie, and then there is the small matter of it covering a superset of unicode
21:09:11 <olsner> UTF-2
21:09:13 <olsner> should be possible
21:09:18 <fizzie> Vorpal: Also, UCS-4096 has the advantage that each codepoint handily matches the page size of many architectures, so you can deal with them in memory easily.
21:09:40 <nortti_> :P
21:09:49 <Gregor> olsner: Almost, it wouldn't really be “UTF” though, in that it wouldn't fit the patterns of the other.
21:09:50 <ion> :-D
21:09:59 <olsner> Vorpal: like with UCS-4, there is no problem if the encoding has plenty of extra space
21:10:02 <Vorpal> anyway one issue with any variaible-width encoding is that strlen() is O(n)
21:10:05 <Gregor> olsner: But yeah, it should be possible to have a per-bit “there are more bits” bit.
21:10:37 <olsner> Vorpal: and strlen is normally O(1)?
21:10:41 <fizzie> UTF-7 is quite different from UTF-8 anyway.
21:10:54 <ion> `addquote <fizzie> Also, UCS-4096 has the advantage that each codepoint handily matches the page size of many architectures, so you can deal with them in memory easily.
21:10:58 <HackEgo> 851) <fizzie> Also, UCS-4096 has the advantage that each codepoint handily matches the page size of many architectures, so you can deal with them in memory easily.
21:11:09 <Vorpal> olsner, not in C no, but many languages store strings as (size,start*)
21:11:31 <Vorpal> I guess you could add a length field to that, but it sounds annoying to implement correctly
21:11:42 <Gregor> Vorpal: Doesn't help indexing anyway.
21:12:00 <Vorpal> Gregor, that too
21:12:06 <fizzie> You can do UTF-8 ropes just fine, though.
21:12:07 -!- Guest33002 has quit (Quit: Page closed).
21:12:27 <olsner> if you're indexing strings of text you're probably doing it wrong anyway
21:13:05 <pikhq> Vorpal: Pssst, strlen() doesn't tell you anything useful except the number of chars taken by a string.
21:13:09 <Vorpal> iirc erlang store strings as a linked list of integers (bignum on demand) with the unicode codepoints. Seems like a reasonable representation in the circumstances
21:13:15 <pikhq> Vorpal: It is literally *useless* if you want to render it.
21:13:20 <pikhq> Vorpal: Even if you are rendering ASCII.
21:13:49 <Vorpal> pikhq, in C indeed. I meant a more general "string length" as is typically found in a high level language that doesn't assume fixed width chars
21:14:02 <Vorpal> pikhq, also string length works fine with a monospace font
21:14:10 <pikhq> It remains useless if you want to render it.
21:14:10 -!- edwardk has quit (Ping timeout: 252 seconds).
21:14:13 <Vorpal> (assuming no crazy double width letters)
21:14:16 <Vorpal> (or similar)
21:14:32 <pikhq> "Assuming it's trivial, it's trivial!"
21:14:45 <Vorpal> indeed!
21:15:28 <Vorpal> pikhq, anyway character count is useful for other purposes.
21:15:35 <pikhq> Like?
21:16:07 <Vorpal> pikhq, I had pieces of homework that had a max letter count. More often they had max word count sure, but I have seen both.
21:16:47 <pikhq> Hey, look, it's a niche use!
21:16:48 <olsner> you used strlen to measure the size of your homework?
21:17:09 <Vorpal> pikhq, and there are many comment fields on web pages and similar that limit how many letters you can type. Twitter is an obvious example, though there are a lot more
21:17:12 <pikhq> ... That you probably have to iterate through anyways, unless you consider space and punctuation to be "letters".
21:17:34 <Vorpal> olsner, no, I obviously used the char count function in whatever editor I was using
21:17:42 <olsner> iirc twitter counts codepoints
21:17:48 -!- edwardk has joined.
21:17:59 <Vorpal> olsner, indeed, which means C strlen() would be bloody useless!
21:18:10 <pikhq> olsner: Nah, integers encoded with the UTF-8 encoding algorithm.
21:18:22 <olsner> Vorpal: indeed, so why did you bring it up?
21:18:34 <pikhq> Vorpal: Anyways, what you're advocating is premature optimization. You're trying to optimize a use-case that *doesn't matter*.
21:19:27 <pikhq> Hardly anything actually cares how many individual glyphs there are, so it doesn't matter to try to give you a 1-to-1 mapping between glyphs and encoding units.
21:19:27 <olsner> hmm, that's nice, did twitter forget to check the range of the utf-8 data you send them?
21:19:29 -!- edwardk has quit (Read error: Connection reset by peer).
21:19:33 <Vorpal> pikhq, no what I'm advocating is using UCS4 internally because such a representation is simpler to work with. Less complex code than when dealing with variable-width encodings.
21:19:33 <pikhq> olsner: Yup!
21:19:51 <pikhq> Vorpal: Except that UCS-4 is a variable-width encoding.
21:20:13 <Vorpal> pikhq, hm? Isn't it just 4-byte per code point?
21:20:17 <pikhq> Vorpal: A glyph is composed of 1 or more code points.
21:20:26 <Vorpal> s/-/ /;s/byte/bytes/
21:20:40 <Vorpal> pikhq, hm true
21:20:42 <olsner> fixed-size code points will not save you from the variable-width glyphs
21:20:58 <olsner> or any of the other 3.7 million problems in text processing
21:21:21 <pikhq> And besides which, there is no sensible way you could *actually use* knowledge of being single-width.
21:22:20 <pikhq> If you just start indexing and munging strings, you're going to either be *parsing* it, in which case this doesn't matter at all, or you're doing some algorithm that doesn't care that you're passing it semantically meaningful text, or you're just fucking shit up.
21:22:26 <Vorpal> pikhq, it would make indexing into the string a lot simpler (though multi-codepoint stuff breaks that indeed)
21:22:41 <olsner> if you're indexing strings of text you're probably doing it wrong anyway
21:22:44 <pikhq> Except *you can't meaningfully index into the string*.
21:23:12 -!- edwardk has joined.
21:23:25 <Vorpal> pikhq, for any specific reason apart from the multi-codepoint glyphs?
21:23:32 <Vorpal> which does indeed mess the whole thing up
21:23:44 <pikhq> Vorpal: Let's index "Vorpal"[2]. What meaning does this operation have?
21:23:49 <pikhq> None.
21:23:53 <pikhq> Congrats, you got an o.
21:24:02 <pikhq> Erm, an r.
21:24:33 <pikhq> Now, what are you doing if you're doing this?
21:24:40 <olsner> could be an o if there were shenanigans involved, but I think the example was about the case where there isn't even anything weird in there
21:24:41 <Vorpal> pikhq, a user selecting the third letter of a nick displayed on screen in the IRC client network settings?
21:24:53 <Vorpal> (for copying perhaps)
21:24:59 <pikhq> Vorpal: Oh, look, you're dealing in rendering.
21:25:07 <Vorpal> good point
21:25:11 <pikhq> Congrats, the actual codepoint representation doesn't matter.
21:25:24 <olsner> selecting by mouse? then you're selecting glyphs rendered in a font, etc
21:26:24 <pikhq> Basically the only way having a single-width encoding helps you is if you also make the assumption that you're dealing in monospace text.
21:26:25 <Vorpal> olsner, who said mouse? There are plenty of different ways to select. Shift-arrow key for example. Or touch screen.
21:26:35 <olsner> selecting by keyboard? you'd be iterating glyphs according to some rule about what a glyph is (though a stupid implementation could just let you select code points ignoring everything fiddly)
21:26:49 <pikhq> Which *isn't generally valid*.
21:28:06 <Vorpal> pikhq, on my screen atm the only text that isn't monospace belongs to the gnome 2 panels at the top and the bottom
21:28:13 <Vorpal> oh and the title bar
21:28:38 <pikhq> And your terminal borks horribly on non-Western text, no doubt. :)
21:29:01 <fizzie> I'd type a + combining diaeresis just to get some two-codepoint single-glyph content in there, but don't quite know how on this Windows thing.
21:29:22 <Vorpal> pikhq, gnome-terminal with Dejavu Sans Mono. No idea how that will behave in such cases.
21:29:40 <pikhq> Vorpal: "Strangely".
21:29:44 <olsner> it might very well turn out to not actually be monospace
21:29:53 <pikhq> There's no sensible monospace rendering of a large number of languages.
21:29:55 <Lumpio-> I don't have problems on xfce's terminal
21:30:00 <Vorpal> pikhq, for some stuff certainly.
21:30:03 <Lumpio-> Which is probably the same as gnome-terminal
21:30:19 <pikhq> Vorpal: Like Arabic script.
21:30:23 <Vorpal> Lumpio-, pretty similar yeah. I use xfce on my desktop
21:30:32 <Lumpio-> I mean it's both gnome-vte AFAIK
21:30:35 <Lumpio-> Or whatever it was called
21:30:51 <Lumpio-> And I have no problems with Japanese text on Irssi or bash.
21:30:54 <Lumpio-> Or vim for that matter
21:31:05 <pikhq> Text rendering is hard. Anything that people think makes it easier is just them breaking shit.
21:31:11 <Vorpal> I assume it will break on those horrible wide chars thingy, which IMO should not even exist in unicode (as I mentioned earlier)
21:31:21 <Lumpio-> Badly implemented fancy ncurses-esque UIs can break with funny characters though.
21:31:35 <pikhq> Vorpal: Actually, terminals handle wide chars.
21:31:40 <Lumpio-> How are wide chars horrible
21:31:52 <pikhq> Vorpal: They generally make the weird assumption that chars come in single and double width.
21:32:01 <Lumpio-> i bet half the people here can’t see this
21:32:07 <Lumpio-> with their retro terminals
21:32:23 <Vorpal> pikhq, heh
21:32:23 <pikhq> Vorpal: In legacy CJK encodings, a "single width" character was 1 byte, and a "double width" one was 2 bytes.
21:32:44 <Lumpio-> Which encodings exactly
21:32:54 <Lumpio-> I'm pretty sure byte width had nothing to do with visual width even in the old encodings
21:32:57 <fizzie> `WELCOME Vorpal
21:33:07 <Lumpio-> oh dear
21:33:08 <Vorpal> ouch
21:33:08 <pikhq> Lumpio-: Did on DOS. :)
21:33:11 <Lumpio-> Serioously?
21:33:14 <olsner> fizzie: what *is* that?
21:33:23 <Lumpio-> olsner: a welcome message?
21:33:24 <fizzie> olsner: Double-wide welcome.
21:33:33 <Lumpio-> pikhq: ok, can't say I ever used such ancient tech with CJK languages
21:34:04 <olsner> but in which encoding? I just get mojibake
21:34:10 <olsner> ¼®ï¼§ï¼µï¼¡ï¼§ï¼¥ã€€ï¼€ï¼¥ï¼³ï¼©ï¼§ï¼®ã€€ï¼¡ï¼®ï¼€ã€€ï¼€ï¼¥ï¼°ï¼¬ï¼¯ï¼¹ï¼­ï¼¥ï¼®ï¼´ï¼ã€€ï¼¦ï¼¯ï¼²ã€€ï¼­ï¼¯ï¼²ï¼¥ã€€ï¼©ï¼®ï¼¦ï¼¯ï¼²ï¼­ï¼¡ï¼´ï¼©ï¼¯ï¼®ï¼Œã€€ï¼£ï¼¨ï¼¥ï¼£ï¼«ã€€ï¼¯ï¼µï¼´ã€€ï¼¯ï¼µï¼²ã€€ï¼·ï¼©ï¼«
21:34:13 <olsner> I: HTTP://ESOLANGï¼
21:34:13 <fizzie> UTF-8, I presume.
21:34:15 <pikhq> olsner: UTF-8.
21:34:15 <Vorpal> I can see it fine. I'm pretty sure gtk is doing the "oops, lets get the letter from a different font" thing though
21:34:21 <pikhq> olsner: Your IRC client is broken.
21:34:26 <Vorpal> because the double width stuff looks like a bitmap font
21:34:35 -!- myndzi has quit (Remote host closed the connection).
21:34:46 <Gregor> I don't know if there's any font where double-width doesn't look like utter shit :)
21:34:50 <Vorpal> no antialias and still pretty readable
21:35:29 <Lumpio-> Well, double width latin looks weird by definition because there's just too much space.
21:35:37 <Vorpal> the double width R top is one pixel higher than the top of the O
21:35:42 <olsner> meh, but freenode is set to UTF-8 for me, so it should work?
21:35:47 <Vorpal> so "OUR" looks really strange
21:35:59 <Vorpal> like a type writer that put the R slightly higher
21:36:16 <olsner> is the bot prefixing something to prevent botloops, that confuses my client?
21:36:19 <Vorpal> hm looks like only R is affected like that, no other letter
21:36:34 <Vorpal> olsner, did it work when I pasted it?
21:36:54 <olsner> Vorpal: "OUR"? yes, that worked
21:37:00 <Vorpal> olsner, hm okay
21:37:09 <fizzie> olsner: It's a GregorBot, so it should be prefixing zero-width something, but that too in UTF-8.
21:37:11 <Vorpal> either your client or hackego must be broken then
21:37:23 <fizzie> That said, I'm only assuming it's UTF-8. But it works for me.
21:37:58 <Vorpal> `ls
21:38:00 <HackEgo> bin \ canary \ foo \ karma \ lib \ paste \ quotes \ share \ wisdom
21:38:04 <Vorpal> `ls quotes
21:38:07 <HackEgo> quotes
21:38:16 <fizzie> `cat bin/WELCOME
21:38:19 <Vorpal> ah
21:38:19 <HackEgo> ​#!/bin/sh \ WELCOME "$@" | perl -CS -Mutf8 -pwe 'y/!-~/!-~/; y/ / /'
21:38:25 <Vorpal> `file bin/WELCOME
21:38:29 <HackEgo> bin/WELCOME: POSIX shell script text executable
21:38:29 <Vorpal> oh
21:38:30 <Vorpal> right
21:38:32 <Vorpal> that won't help
21:38:46 <olsner> hmm, I do see the zero-width something as a missing-character box when I read the logs from http://codu.org/logs/_esoteric/
21:38:56 <Vorpal> `run bin/WELCOME | file -
21:39:00 <HackEgo> ​/dev/stdin: UTF-8 Unicode text
21:39:03 <Vorpal> yeah
21:39:04 <Vorpal> UTF-8
21:39:09 <Vorpal> (probably)
21:39:22 <fizzie> Based on the code, it certainly seems so.
21:39:31 <Vorpal> olsner, no CTCP VERSION reply?
21:40:19 <fizzie> `cat bin/No
21:40:22 <HackEgo> ​#!/bin/sh
21:40:24 <fizzie> What's that about?
21:40:34 <olsner> `No
21:40:37 <HackEgo> No output.
21:40:43 <olsner> `No output.
21:40:46 <HackEgo> No output.
21:40:47 <fizzie> Oh, of course.
21:40:51 <nortti_> fizzie: confusing you
21:41:26 <olsner> Vorpal: XChat
21:41:35 <Vorpal> olsner, hm /charset iirc?
21:41:41 <Vorpal> what does it display
21:41:44 <Vorpal> UTF-8?
21:42:01 <Vorpal> iirc xchat can get confused between network settings and what actually happens
21:42:36 <olsner> Vorpal: UTF-8 indeed
21:42:54 <Vorpal> olsner, any bouncer?
21:43:06 <olsner> not that I know of, what's that?
21:43:36 <Vorpal> like znc or such. You run it on a sever and connect to it. It keeps the connection and logging and so on going in the background for you
21:43:52 <Vorpal> and can display a replay of the last n lines when you connect the irc client
21:48:12 <nortti_> do you need bouncer for something?
21:52:01 <Vorpal> hm?
22:15:39 -!- ais523 has quit.
22:15:51 -!- ais523 has joined.
22:21:45 -!- nortti_ has quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )).
22:23:59 -!- boily has quit (Quit: WeeChat 0.3.8).
22:27:19 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:27:34 -!- edwardk has quit (Quit: Computer has gone to sleep.).
22:47:26 -!- copumpkin has joined.
23:07:46 -!- pikhq has quit (Ping timeout: 246 seconds).
23:07:46 -!- pikhq_ has joined.
23:11:49 -!- FireFly has quit (Ping timeout: 248 seconds).
23:20:26 -!- FireFly has joined.
23:38:57 <oerjan> to whoever is interested, icfp programming contest starts tomorrow
23:40:04 <kmc> intercontinental fallopian probes
23:40:26 <oerjan> @wn fallopian
23:40:27 <lambdabot> No match for "fallopian".
23:40:38 <oerjan> MAKING UP TERMS, HMMM?
23:40:52 <kmc> http://en.wikipedia.org/wiki/Fallopian_tube
23:41:09 <shachaf> oerjan: It turns out that I'll be free during it.
23:41:15 <shachaf> But I'm not sure whether I'll do it...
23:47:12 -!- madbr has joined.
23:47:56 -!- pikhq has joined.
23:48:09 -!- pikhq_ has quit (Ping timeout: 265 seconds).
←2012-07-11 2012-07-12 2012-07-13→ ↑2012 ↑all