00:00:04 <ais523> ¬ is in EBCDIC but not ASCII
00:00:12 <ais523> it always confused me why that was there, until I found out
00:00:41 <ais523> estoppel: wouldn't the fn be for changing between the main and subsidiary functions of the F-keys?
00:01:02 <ais523> bsmntbombdood: what language is it in?
00:01:18 <ais523> if you like, I'll debug by translating it into a different language, and also to a program that does something entirely different
00:01:20 -!- BeholdMyGlory has quit (Remote closed the connection).
00:01:25 <estoppel> rewrite it in scheme. then we'll talk!
00:01:29 <ais523> in fact, here's a less buggy version: ,[.[-],]
00:01:48 <ais523> to use ehird's favoured EOF statement whilst still preserving one of the other two options
00:02:08 <ais523> pity it probably does something different, and is in the wrong language
00:02:18 <ais523> bsmntbombdood: yes, as mentioned above
00:02:25 <ais523> EOF = 0, EOF = -1, EOF = no change are the three most common options
00:03:02 <ais523> and although you can't distinguish between them with 100% certainty, assuming random input and a program that reads all its input before doing any output you can distinguish between them with any non-100% certainty you like
00:03:28 <ais523> that's like saying something isn't really suited for Haskell
00:03:28 <estoppel> ais523: it's comex's morse program
00:03:31 <estoppel> you can't really do that in Scheme :P
00:03:32 <ais523> or that it is really suited for INTERCAL
00:05:09 <estoppel> what's that number game called again?
00:05:20 <ais523> there are two games with that name, though
00:05:41 <comex> ais523: what game?
00:06:00 <ais523> comex: the game starts with three numbres
00:06:02 * Sgeo downloads Cobalt
00:06:05 <ais523> players take it in turns to reduce a number
00:06:08 <estoppel> you can reduce one by any amount each turn
00:06:15 <ais523> as in, you can reduce any of them by any amount, but only one number at a time
00:06:17 <estoppel> the person who removes the last loses
00:06:20 <ais523> if you say 0 0 0, you lose, and you can't go negative
00:06:40 <comex> so it's pearls before swine
00:06:51 <ais523> I've never heard that name before
00:06:58 <ais523> but it's relatively well known
00:07:03 <estoppel> * Pearls Before Swine (game), a puzzle/logic game using the Nim format
00:07:05 <ais523> I'm pretty good at it, but oerjan is just as good as I am
00:07:19 <ais523> estoppel: you just looked it up on Wikipedia?
00:07:40 * Sgeo listens to kerlo's tune
00:07:44 <AnMaster> <ais523> anyway, what self-respecting typist can do without ¬? <-- where?
00:07:44 <estoppel> anyway I am going to intuitively progressively optimize a nim solver. or something.
00:08:18 <comex> protip: brute force is pretty good
00:08:38 <ais523> AnMaster: it's shift-` on this keyboard
00:08:48 <ais523> I think they left it off most of the non-UK ones, though, they have no sense of style
00:08:58 <kerlo> I should expand my tune.
00:09:13 <AnMaster> ais523, on this keyboard shift-' is `. That is ' as in the dead key creating é
00:09:29 <ais523> what if you hold both shift keys? </joke>
00:09:33 <ais523> here, ` is to the left of 1
00:09:57 * ais523 makes a mental note to mark jokes when AnMaster's in here, and to a lesser extent ehird because he never gets metahumour
00:10:17 <AnMaster> also I got the both shift key joke
00:10:45 <Sgeo> Dear Windows: Please never block things again. Love, Sgeo
00:10:55 <AnMaster> http://en.wikipedia.org/wiki/Keyboard_layout#Swedish.2FFinnish
00:11:03 <ais523> Sgeo: what's it blocking?
00:11:12 <Sgeo> The files from OpenCobalt
00:11:31 <kerlo> I should also find a MID editor that is capable of playing MIDs.
00:11:43 <ais523> kerlo: here on Linux I use Rosegarden
00:11:52 <ais523> although it needs Timidity or something like that to be able to do the actual playing
00:12:25 <ais523> when I was back on Windows I used Magix Notation, but that's a for-pay commercial app, although a very cheap one
00:12:34 <ais523> AnMaster: insert's above backspace on my laptop
00:12:43 <ais523> above is a good place when to the right of backspace wouldn't fit on the laptop
00:12:45 <AnMaster> ais523, I hate non-full size keyboard
00:12:54 <AnMaster> they are harder to type on too
00:13:58 <AnMaster> I need full size to be able to type properly
00:14:10 <AnMaster> and keys that properly go down
00:14:11 <ais523> full size as in full number of keys, or full size as in not scaled down?
00:14:22 <ais523> my laptop keys go down properly and are the normal size, there just aren't as many of them
00:14:42 <AnMaster> ais523, I mean like the clicky keyboards
00:14:50 <ais523> http://science.slashdot.org/article.pl?sid=09/03/08/2155216&from=rss Slashdot have started talking about Wolfram Alpha
00:14:56 <ais523> let's see what snarky jokes they make of it
00:15:59 <estoppel> ais523: what about infinite column nim
00:16:00 <ais523> not a particularly useful game, really...
00:16:14 <ais523> and infinite column would only be fun if only finitely many were nonzero
00:16:23 <ais523> in which case it's equivalent to finite column nim
00:16:39 <ais523> otherwise the game would necessarily take infinite time
00:17:24 <ais523> estoppel: that's a won position for you
00:17:29 <ais523> and you can probably win from it
00:17:59 <ais523> the strategy with two columns is not very difficult
00:18:18 <ais523> make them equal, then copy your opponent until you have a chance to set it to 0 1
00:20:50 <ais523> <C++ FQA>Here's how it works. Publishing stuff makes sense. Face to face conversations and e-mail conversations make sense. Conversations in the form of articles replying to other articles make sense some of the time. Comment thread conversations are futile. Special case: Usenet conversations are futile. If they are moderated, they are futile and (almost) polite.
00:21:51 <estoppel> Brute force Nim: Select a column number and decrement number, optimizing the number of times you win when playing against yourself
00:21:51 <oerjan> what a stupid piece of crap
00:22:06 <estoppel> Now let's see if that finishes before the universe overs.
00:25:12 <estoppel> grumble, why doesn't (f '(1 2 3) '(4 5 6)) -> ((1 4) (1 5) (1 6) (2 4) (2 5) (2 6) (3 4) (3 5) (3 6)) come with Scheme?
00:26:11 <estoppel> why do so many people ask that...
00:26:38 <ais523> AnMaster: do you know the rules?
00:26:53 <ais523> estoppel: clearly you need to mix Scheme with Mathematica's standard library
00:26:59 <ais523> AnMaster: it's what my Enigma puzzle was modelling
00:27:15 <ais523> you have three (or more) numbers, which are nonnegative integers
00:27:19 <ais523> players take turns reducing a number
00:27:23 <ais523> you can reduce a number as far as you like
00:27:26 <ais523> but only one number on your turn
00:27:30 <ais523> if you reduce them all to 0, you lose
00:29:03 <Sgeo> Are there any free Mathematica-like tools?
00:29:28 <estoppel> 'Nim has been mathematically solved for any number of initial heaps and objects; that is, there is an easily-calculated way to determine which player will win and what winning moves are open to that player.'
00:29:35 <estoppel> oh, so even though it's solved there's absolutely no skill element at all?
00:30:28 <ais523> the solution is absolutely beautiful, though
00:30:33 <ais523> estoppel: what about it?
00:31:03 <ais523> estoppel: what, "Beam04"?
00:31:08 <ais523> there's Enignimm which is level 12
00:31:10 <estoppel> it's meant to be called Enignimm
00:31:13 <ais523> but that's the other nim
00:31:24 <AnMaster> ais523, ehird: http://omploader.org/vMWNraw
00:31:40 <estoppel> I don't care about your keyboards
00:31:47 <estoppel> why should I be interested...?
00:31:48 <AnMaster> ais523, I find the black one extremely hard to use
00:33:58 <AnMaster> estoppel, why should I care about the keyboard you considered getting?
00:34:20 <estoppel> you shouldn't, I was remarking after you talked about the compact keyboard
00:34:31 <estoppel> your showing of your keyboards had no relevance beyond the tenuous 'keyboard' conversation tract
00:35:02 <AnMaster> you are just saying that because it was me that talked about it
00:35:33 <estoppel> yes, I am in a world conspiracy to say as many bad things about you as possible, even if they're true
00:35:36 <oerjan> ais523: what _is_ this other nim you keep mentioning?
00:36:03 <ais523> oerjan: like ordinary nim, but with only one number, and you can only reduce it by at most 3 at a time
00:36:16 <ais523> it is very very horrible, and any competent mathematician can solve it in their head in about 10 seconds
00:36:32 <ais523> one of my acquaintances uses it to win bets against drunk people
00:36:50 <oerjan> now if you have several heaps like that, it gets a bit more interesting
00:37:14 <ais523> do you know about Sprague-Grundy analysis?
00:37:24 <oerjan> although as i recall, it's simpler than ordinary nim because some heap sizes are equivalent
00:37:25 <ais523> it's basically a method of solving games by proving them equivalent to regular nim
00:37:44 <ais523> and the limited-nim game is equivalent to regular nim with heaps no bigger than 2
00:37:58 <ais523> except that the last-player-loses vs. last-player-wins thing messes up the analysis
00:38:00 <estoppel> ugh, my combinations function is really ugly
00:38:48 <ais523> Sprague-Grundy only really works properly if 0 0 0 is a win, and that's not the way nim's normally played
00:41:22 <estoppel> > (combinations '(a b) '(c d))
00:41:37 <ais523> what does \m/ mean, anyway?
00:41:48 <ais523> and what does that mean?
00:42:07 <estoppel> where , = finger | last , = thumb | \ = raised finger
00:42:20 <ais523> I mean, what does a metal hand indicate, apart from the literal definition?
00:43:00 <estoppel> hmm, it's vulgar in mediterranean countries
00:44:05 <estoppel> http://pastie.org/private/zreddamkpevzsxtxjz4w
00:44:32 <ais523> I remember writing that function in OCaml
00:44:49 <ais523> and it was purely functional, and didn't look at all like that
00:46:32 <estoppel> you're welcome to supply a better algorithm :P
00:46:54 <estoppel> yay, I have to define my own func (upto 5) -> (0 1 2 3 4)
00:48:29 <estoppel> since my second argument depends on the value of the first
00:55:34 -!- ais523 has quit (Remote closed the connection).
01:04:07 <kerlo> Huh, I apparently have Timidity already.
01:04:58 <oerjan> now you just need Paranoia, Despair and Panic
01:06:08 <kerlo> I prefer Apprehension to Paranoia and Dread to Despair. I'm waiting for Neurosis to reach version 1.0 so I can replace Panic with it.
01:07:21 <oerjan> i would recommend Psychosis, although it is not quite stable
01:07:39 <AnMaster> kerlo, are you talking about software?
01:07:51 <AnMaster> Timidity and (cd)Paranoia exists...
01:07:57 <kerlo> AnMaster: no, just pretending.
01:08:07 <kerlo> Except when I mentioned Timidity.
01:08:32 <AnMaster> (bouncer still connected though
01:20:03 <fizzie> ehird: Here's one "combinations", which isn't very pretty either, but at least it isn't all for-each set!y: http://pastie.org/private/ar5balcakbcw9mkmpq2a
01:20:28 * estoppel considers buying one of the nice new mac pros with the nehalem processors
01:26:35 <Sgeo> Where's the abomination against using rafb.net in the topic?
01:27:16 -!- estoppel has changed nick to ehird.
01:38:33 <fizzie> Oh, right, the topic-lock anyway.
01:38:51 -!- ChanServ has set channel mode: -t.
02:02:20 -!- oerjan has quit ("Good night").
02:10:48 -!- psygnisfive has quit (Remote closed the connection).
02:51:20 -!- Dewi has quit (Read error: 101 (Network is unreachable)).
02:51:24 <Sgeo> kerlo's a lojban person
03:00:49 -!- psygnisfive has joined.
03:08:04 <lament> instead of learning lojban, why not just stick a rusty fork in your eye?
03:34:23 -!- psygnisfive has quit (Remote closed the connection).
04:20:32 <kerlo> lament: because sticking a rusty fork in my eye wouldn't teach me anything.
04:21:30 -!- Dewi has joined.
04:31:48 -!- GreaseMonkey has joined.
04:33:00 <Robdgreat> it might teach you the importance of staying current with your tetanus shots
04:33:20 <lament> kerlo: it will teach you a lot.
05:17:08 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
07:35:54 -!- asiekierk has joined.
07:36:14 <asiekierk> and my auto-topic-change script is still working
07:36:58 <Azstal> Nice weather outside, isn't it?
07:37:35 <asiekierk> Well, quite, if not for that it's 7:35 AM
07:38:13 <asiekierk> You know, the one with divulgations, apples and words
07:39:03 <asiekierk> If you change it, onoz we're doomed
07:39:11 <asiekierk> [[or someone kicks me, cuz i don't have autorejoin]]
07:39:22 <asiekierk> I hopefully made it so it ignores me
07:39:30 <asiekierk> so there's no "I change topic and it changes topic"
07:42:20 <asiekierk> Good morning, and welcome to #esoteric.
07:44:32 <asiekierk> Should i broadcast my desktop again
07:44:33 -!- lament has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | <asiekierk> NO-ONE CHANGE THE TOPIC.
07:45:17 -!- asiekierk has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | <asiekierk> NO-ONE CHANGE THE TOPIC (except me or when i'm off).
07:45:30 -!- asiekierk has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | <asiekierk> NO-ONE CHANGE THE TOPIC (except me or when i'm off, then you can).
07:45:39 <oklopol> http://pastie.org/private/qb2tg9bvpnsv2rw2q0ljgg <<< wtf is this, why do i have broken c in my browser?
07:46:44 <oklopol> ehird: http://pastie.org/private/qb2tg9bvpnsv2rw2q0ljgg This may or may not work, YMMV. <<< doesn't look like it will, not that i know the context
07:47:10 <GreaseMonkey> if you drink too much, it becomes quite a mess
07:47:36 <oklopol> should've guessed it was from here
07:47:56 <oklopol> i haven't tried drinking and coding much yet
07:48:05 <oklopol> i've decided to learn that at some point tho
07:48:49 <oklopol> should probably get out of the wc and head to uni
07:50:42 <oklopol> okay, i'm taking this baby with me, so going offline.
07:50:48 <oklopol> for some undefined meaning of baby
07:51:39 <GreaseMonkey> "they need to way instate mother> who murder thier babbys."
07:59:59 -!- clog has quit (ended).
08:03:11 -!- clog has joined.
08:03:19 <asiekierk> Why doesn't teh internetz work for m---wait, it does
08:09:20 -!- oklopol has quit (Read error: 110 (Connection timed out)).
08:20:50 -!- tombom has joined.
08:26:10 <fizzie> Uh... why does this firefox, when I try to middle-mouse-paste in oklopol's ehird-quote-URL, pop up a dialog saying: "ASSERT: *** Search: _installLocation: engine has no file!" and then a 11-item stack-trace.
08:26:33 <fizzie> Okay, same for entering any URL in the location bar.
08:27:13 <fizzie> I have a hunch they've sneakily been updating the browser installation on these workstations, and now it's a needs-a-restart confused.
08:48:09 -!- jix has joined.
09:04:39 -!- Slereah_ has joined.
09:11:36 -!- asiekierk has quit (Read error: 110 (Connection timed out)).
09:16:18 -!- Slereah has quit (Read error: 110 (Connection timed out)).
09:21:02 -!- jix has quit ("...").
10:11:59 -!- asiekierk has joined.
10:12:12 <asiekierk> I think I just made a Videocrypt encoder/decoder
10:12:21 <asiekierk> I would need a Videocrypt decoder supporting a seed
10:15:39 <asiekierk> But interline correlation (the VirtualDub VC decoder) works, albeit the same as with 99% of other VC decryptions
10:19:30 -!- GreaseMonkey has quit ("Client Excited").
10:46:09 <asiekierk> Checkerboard+Videocrypt+Interline Decoding=Cafe Wall
12:18:48 -!- Jophish has joined.
12:31:21 -!- oklopol has joined.
12:51:56 <asiekierk> modifying AsieCrypt to be more unique
14:05:44 -!- ais523 has joined.
14:13:28 -!- ais523_ has joined.
14:13:40 -!- ais523 has quit (Nick collision from services.).
14:13:44 -!- ais523_ has changed nick to ais523.
15:06:23 -!- jix has joined.
15:15:24 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client").
15:15:59 -!- Dewi has quit (Read error: 60 (Operation timed out)).
15:24:57 -!- ehird has left (?).
15:25:01 -!- ehird has joined.
15:31:00 -!- MigoMipo has joined.
15:34:14 -!- ehird has left (?).
15:34:16 -!- ehird has joined.
15:34:28 <ehird> Uh, you are there right?
15:34:59 -!- BeholdMyGlory has joined.
16:16:30 -!- impomatic has joined.
16:17:21 <impomatic> Ehird: I've ordered one of those Arduino microcontrollers.
16:17:37 <ehird> Let us know how it goes!
16:17:47 <impomatic> If I don't enjoy programming it, I know who to blame :-P
16:18:47 <impomatic> I'm just trying to learn how to program it before it arrives
16:33:01 -!- MigoMipo has changed nick to ZigoZipo.
16:35:58 -!- ZireFly has joined.
16:36:16 * ehird zwats ZigoZipo ----ZZZZ
16:36:49 <ZireFly> ZigoZipo = MigoMipo wanted me to change my nick to something that begins with a Z
16:37:34 <ehird> ===> how is babby formed?
16:37:36 <ehird> In basic English usage, an infant is defined as a human child at the youngest stage of life, specifically before they can walk and generally before the age of one (see also child and adolescent).
16:37:39 <ehird> The term "infant" derives from the Latin word in-fans, meaning "unable to speak." There is no exact definition for infancy. "Infant" is also a legal term with the meaning of minor; that is, any child under the age of legal adulthood.
16:37:45 <ehird> — http://start.csail.mit.edu/
16:39:16 -!- ZigoZipo has left (?).
16:40:18 -!- MigoMipo has joined.
16:42:06 -!- ZireFly has changed nick to FireFly.
16:44:37 -!- Hiato has joined.
16:56:50 -!- Hiato has quit ("Leaving.").
16:57:59 -!- Hiato has joined.
17:00:25 -!- BeholdMyGlory has quit (Remote closed the connection).
17:00:50 -!- BeholdMyGlory has joined.
17:01:50 -!- KingOfKarlsruhe has joined.
17:05:34 -!- Dewi has joined.
18:04:26 -!- ais523 has joined.
18:09:43 <oklopol> ehird: god that thing sucks.
18:09:46 -!- jix_ has joined.
18:19:29 -!- BeholdMyGlory has quit (Remote closed the connection).
18:20:23 <ehird> [[to compose a bunch of procedures that each take 20 arguments
18:20:23 <ehird> and return 20 results. ]]
18:20:27 <ehird> "so don't do that"
18:20:32 <ehird> hey, why'rn't I estoppel?
18:20:35 -!- ehird has changed nick to estoppel.
18:23:35 <ais523> anyway, my intensive module today nearly made my head explode
18:23:44 <ais523> I have problems even trying to think of it, so I'll translate into programming terms
18:23:47 -!- jix has quit (Read error: 110 (Connection timed out)).
18:23:51 <ais523> as a sort of extended metaphor
18:24:01 <ais523> imagine you have a nice, clean, and well-understood interpreted programming language
18:24:07 <ais523> I was going to choose Python as an example
18:24:20 <ais523> but unfortunately it's whitespace-sensitive and that ruins the example, so I'll use Ruby instead
18:24:29 <ais523> now, Ruby's not all that fast compared to some programming languages
18:24:41 <ais523> and people have written slow Ruby programs for things that didn't need to work fast, and they've been fine
18:24:59 <ais523> now, suppose you want to write in Ruby, it's the only language you can use
18:25:03 <ais523> but you need to write fast
18:25:11 <ais523> so you optimise your Ruby to run quickly
18:25:20 <ais523> and you find that your program errors every now and then
18:25:29 <ais523> and it turns out that the interp's getting confused by whitespace
18:25:32 <ais523> it does more or less the right thing
18:25:39 <ais523> but if it tries to process the whitespace too quickly
18:25:49 <ais523> it misinterprets it as Whitespace and the Whitespace gets mixed in with the regular program
18:25:55 <ais523> estoppel: it gets better, I haven't finished yet
18:26:20 <ais523> now, this isn't really much of a problem for you, as you're an esoprogrammer
18:26:32 <ais523> in fact, you find you can make your code even better by exploiting the Whitespace code to do useful things
18:26:46 <ais523> and in fact for very fast programs you want to write huge parts of it entirely in Whitespace
18:27:05 <estoppel> ok, what was the ACTUAL thing about
18:27:09 <ais523> (you consider this normal, interps are bound to malfunction a bit if you run them too fast due to not being perfect)
18:27:24 <ais523> but you find that with the whitespace running even faster, if you have exactly the right sequence
18:27:34 <ais523> you run commands that redefine syntax, or logic, or whatever
18:27:51 <ais523> so you're changing the syntax of Whitespace dynamically, and making ANDs into ORs, or whatever
18:28:01 <ais523> the head-explode moment was when I realised this also affected the Ruby it was embedded around
18:28:19 <ais523> making ands into ors, and other things that made no sense in Ruby
18:28:37 <ais523> (and as a result, your programs now only run at one exact speed, if you run them slightly faster or slower they fail)
18:29:32 <estoppel> ok, what was the ACTUAL thing about
18:29:46 <ais523> estoppel: microwave-frequency electronics
18:29:54 <ais523> think of ordinary electronics as the ruby
18:30:04 <ais523> and wires which shouldn't be doing anything but being wires as the whitespaec
18:30:18 <estoppel> My mother, attempting to use an old one button Mac mouse: "But, which button do I press?"
18:30:27 <ais523> the left one, obviously
18:42:41 -!- impomatic has quit ("mov.i #1,1").
18:44:47 <asiekierk> Oh god, now I'm going to wait forever for my Asiecrypt Encoder to finish encoding a 2-and-a-half-minute-YouTube-movie
18:45:02 <ais523> what does it encode it into?
18:46:09 <asiekierk> or VideoCrypt+color swap every other line+replace random parts of 2 lines 120*25 (or 240*25) times
18:46:23 <asiekierk> actually, the color swap is the longest
18:46:38 <ais523> why are you doing this, anyway?
18:46:51 <ais523> it sounds rather like security by obscurity
18:47:16 <estoppel> oh asiekierk, you are the living proof of poe's law.
18:47:58 <estoppel> http://rationalwiki.com/wiki/Poe's_Law
18:48:09 <ais523> estoppel: that's a link, can you explain in English?
18:48:09 <estoppel> s/fundamentalism/ridiculous programming tasks/
18:48:19 <estoppel> ais523: no, I do not exist to support your allergy to the web
18:48:38 <ais523> estoppel: then don't expect me to understand what you're saying, if you're unwilling to explain
18:48:40 <estoppel> you'll be pleased to know that the target of the link is english embedded in HTML
18:48:40 <asiekierk> and they DO look like a jumbled mess
18:48:52 <estoppel> also, you're the one asking the question, it's your wish to find out, not mine
18:49:25 <asiekierk> Well, the Asiecrypt Encoder is also (accidentally) a Videocrypt encoder
18:49:34 <asiekierk> and a Videocrypt decoder too (if you know the seed)
18:50:07 <ais523> estoppel: I'm only asking because I don't understand what you said...
18:50:17 <ais523> and isn't the usual purpose of communication to, you know, convey information?
18:50:17 <estoppel> I gave you a link to information on it, http://rationalwiki.com/wiki/Poe's_Law
18:50:26 <estoppel> it's not my problem that you refuse to follow links to get information
18:51:21 <estoppel> the web is a web of information.
18:51:51 <ais523> not nowadays, nowadays it's mostly a web of porn, spam, and adverts
18:52:07 <estoppel> if I linked you to one of them, I assure you I would note as such.
18:52:47 <ais523> well, most websites have adverts nowadays
18:53:02 <ais523> lots of people talk about how things like adblock are a bad idea because they deprive the sites of advertising revenue
18:53:04 <asiekierk> Is there an use for the low-speed version of Asiecrypt (all enabled) except premium content NBTV?
18:53:13 <estoppel> a business model based on advertising is shit.
18:53:19 <ais523> and it strikes me that not visiting them is an even better way to deprive them of advertising revenue
18:53:54 <estoppel> then you miss out on their content
18:54:00 <estoppel> loss for you, no great shakes to anyone else
18:54:23 <ais523> estoppel: why doesn't everyone act as I do? The Web would become so much better more or less overnight
18:54:36 <estoppel> Because some of us don't mind advertisements.
18:54:47 <estoppel> And a vast majority of internet users see porn as a plus.,
18:54:50 <ais523> neither do I, actually, I just mentally ignore them if adblock doesn't catch them
18:55:08 <ais523> and porn is fine if you're looking for it, but tends not to be particularly informative
18:55:09 <estoppel> So all that is left is spam. Everything has spam. Apart from Gopher.
18:55:16 <estoppel> And that's why I personally linked it.
18:55:22 <estoppel> So that you know I was linking to relevant information.
18:55:30 <asiekierk> only 900 more, then joining and Youtubing
18:58:40 <asiekierk> ...Deewiant, you know that 1234 was one of my Seeds
19:00:04 <asiekierk> I must find out what the hell of an algorithm do I use cuz I don't remember :(
19:01:13 <asiekierk> seems I did something irreversible and now i'm screwed
19:01:39 <ais523> asiekierk: don't you have the original?
19:01:49 <asiekierk> but i must find out what is irreversible
19:02:47 <asiekierk> So it must be a problem with my batch procedure-a-thon
19:05:33 <ais523> asiekierk: I still fail to see the advantage of what you're doing in the first place
19:07:39 <asiekierk> I can batch encode AND batch decode
19:07:49 <asiekierk> but i can't batch encode AND decode
19:07:54 <asiekierk> so something's terribly wrong with my algorithms
19:08:58 <ais523> yay, it's the common engineering problem: A, B, and C each work, A and B work together, B and C work together, but the combined A+B+C system fails for no apparent reason
19:09:39 <asiekierk> cuz it's A, B, C and D. A and B work, C and D work, but any other combinations fail
19:09:39 <Deewiant> A+B, C+D, and A+D in this case
19:09:50 <asiekierk> any other combinations in this case :P
19:10:07 <Deewiant> Well the only other one is B+C
19:10:14 <ais523> I assumed you could encode files individually, then batch-decode the lot, from what you suggested
19:10:24 <ais523> I must have misparsed what you were talking about
19:10:37 <ais523> I also assumed you meant you could batch-encode then individually decode
19:10:42 <asiekierk> The only thing is that I seem to have the same algorithms not cooperating with each other
19:11:05 <asiekierk> after lineswap, it resets the seed
19:11:10 -!- jix_ has quit ("...").
19:11:34 <asiekierk> And i'm going to add a feature while I'm at it
19:13:33 <asiekierk> it's too painful and not really paying out
19:21:52 <estoppel> http://donsbot.wordpress.com/2009/03/09/evolving-faster-haskell-programs/
19:22:08 <estoppel> AnMaster would like that, for C
19:25:08 -!- asiekierk has changed nick to asie[away].
19:26:41 <ais523> estoppel: is that going to be a new permanent nick for you?
19:27:27 <ais523> it's a good real word for a nick
19:28:52 <estoppel> Yes, it sounds like it means something deep.
19:29:16 <Deewiant> Unless you know what it means :-P
19:29:25 <ais523> well, it's still a relatively interesting thing if you know what it means
19:29:43 <ais523> basically, if you convince someone you don't plan to sue them, or act as if you won't
19:29:53 <ais523> then if you do sue them you're unlikely to get very much in damages
19:30:29 <estoppel> B Nomic is saner than common law
19:37:15 <ais523> hmm... it seems that e4 vs. d4 can inspire a Holy War on chess channels
19:39:08 <lament> ais523: strange that it would
19:39:15 <lament> it should be pretty easy to resolve
19:39:20 <Deewiant> lament: You must be a d4 player
19:39:22 <ais523> it's like emacs vs. vi
19:39:26 <lament> ais523: by setting up a match
19:39:34 <ais523> lament: what, one match?
19:39:38 <Deewiant> d4 players vs e4 players, one game?
19:39:41 <ais523> although a worldwide e4 vs. d4 match might be good
19:39:49 <ais523> organised via one of the big chess websites
19:40:45 <Deewiant> Was it Kasparov that that one collaborative Internet match was played against?
19:40:50 <lament> ais523: but what exactly are they arguing about, then
19:40:58 <ais523> which is better, obviously
19:41:12 <ais523> someone in there's claiming that white playing d4 is effectively giving black an advantage, it's that bad
19:41:16 <Deewiant> More likely to lead to victory?
19:41:20 <ais523> and I'm trying to come to the defence of d4
19:41:27 <ais523> and yes, that's a typical definition of better in chess
19:42:13 <Deewiant> I.e. of all the possible games that can be played from that point on, more lead to a white win or draw than to a black win
19:44:17 <lament> can't you just look at a database of existing professional games?
19:55:59 -!- KingOfKarlsruhe has quit (Remote closed the connection).
19:59:28 <estoppel> > (define (halt-and-catch-fire)
19:59:38 <estoppel> The preferred error-signalling procedure for all purposes.
19:59:40 <ais523> why is that in an infinite loop?
19:59:58 <estoppel> ais523: in case the interpreter neglects to signal the division by zero and continues execution.
20:00:00 <Deewiant> Because most machines don't catch fire from just dividing by zero, in my experience
20:00:29 <estoppel> it's the program catching fire, not the system :D
20:00:56 <ais523> I've been on systems which could be set on fire in software
20:01:06 <ais523> in theory, at least, in practice there normally wasn't enough current flowing
20:01:09 <ais523> estoppel: microcontrollers
20:01:19 <Deewiant> Desktop machines can be set on fire in software
20:01:25 <estoppel> actually, (/ 1 0) doesn't have to error in Scheme.
20:01:49 <estoppel> (scheme-report-environment -1) is specified to fail, though.
20:01:50 <Deewiant> Oh, I assumed you intended it to not error
20:02:03 <ais523> it doesn't error in most langs, nowadays, at least if interpreted as floating point division
20:02:13 <ais523> oh, except C, (/ 1 0) errors pretty badly in C
20:02:15 <estoppel> (scheme-report-environment -1))
20:02:16 <ais523> due to not being valid syntax
20:02:19 <estoppel> > (wrong "Division by elephant")
20:02:21 <estoppel> ** ERROR ** Division by elephant
20:02:23 <estoppel> Error: no such Scheme report environment
20:02:46 <Deewiant> ais523: Are there languages in which it would error out when interpreted as a floating point division?
20:03:16 <ais523> C programs are certainly allowed to send signals on FP division by zero, just generally don't
20:03:18 <estoppel> > (wrong "no such Scheme report environment")
20:03:18 <estoppel> ** ERROR ** no such Scheme report environment
20:03:20 <estoppel> Error: no such Scheme report environment
20:04:19 <ais523> does Scheme have exceptions?
20:04:24 <ais523> or do you simulate them by hand using call/cc?
20:04:30 <estoppel> No. (R6RS isn't scheme, so I'll disregard it.)
20:04:44 <estoppel> You can simulate them; many implementations provide an isomorphic mechanism.
20:04:50 <estoppel> They're not very Scheme, though.
20:04:56 <ais523> I know, simulating exceptions is pretty easy when you have c
20:05:06 <estoppel> http://srfi.schemers.org/srfi-34/srfi-34.html
20:05:11 <estoppel> "Exception Handling for Programs".
20:05:45 <estoppel> Conditions, more elegant than Exceptions since, iirc, the handlers aren't call/cc'ed, just called:
20:05:48 <estoppel> http://srfi.schemers.org/srfi-35/srfi-35.html
20:05:50 <estoppel> http://srfi.schemers.org/srfi-36/srfi-36.html
20:06:10 <estoppel> Scheme48 uses SRFI-36 conditions to signal parse errors
20:06:31 <ais523> although tbh a jmp_buf stack is enough for handling exceptions, you don't need anything nearly as advanced as call/cc
20:06:37 <ais523> why the slash, anyway?
20:07:03 <ais523> not "per"? not "over"?
20:07:16 <estoppel> It's short for call-with-current-continuation, because it calls the provided procedure with the current continuation.
20:07:21 <estoppel> BTW, call/cc is a non-standard abbreviation, only call-with-current-continuation is specified by R5RS.
20:07:28 <estoppel> You can do (define call/cc call-with-current-continuation), ofc.
20:08:33 <estoppel> ais523: As a sidenote, yes, the opposite of call-with-current-continuation exists ("Run this procedure with this other procedure as its continuation")
20:08:50 <estoppel> (call-with-values f k) runs (f) with k as the continuation.
20:09:03 <estoppel> (call-with-values (lambda () (values 1 2 3)) +) ;=> 6
20:09:48 <estoppel> It was intended just to handle the N-return-values (instead of just 1) system added in R5RS, as you can see, but it works perfectly fine as call-with-this-continuation.
20:12:16 -!- oerjan has joined.
20:17:14 -!- asie[away] has changed nick to asiekierk.
20:17:29 -!- asiekierk has set topic: Divulgations are apples for your words, and here are the logs: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | <asiekierk> NO-ONE CHANGE THE TOPIC (except me or when i'm off, then you can).
20:18:29 -!- estoppel has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D.
20:19:00 -!- asiekierk has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | DON'T CHANGE THE TOPIC WHILE ASIEKIERKA IS ON.
20:19:01 -!- oerjan has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | <oerjan> Darn estoppel beat me.
20:19:08 <estoppel> Yes, I don't give a shit about your irritating I-own-the-topic-and-it-is-my-personal-playground-of-hilarity stuff that you have carried out for months and months.
20:19:10 -!- estoppel has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D.
20:19:34 <estoppel> oerjan: He's done it ever since he first entered here, as far as I can tell.
20:19:36 -!- ais523 has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | asiekierka owns the topic, not asiekeierk.
20:19:42 -!- estoppel has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D.
20:19:44 -!- Slereah_ has set topic: Topic now property of Slereah | http://tunes.org/~nef/logs/esoteric/?C=N;O=D.
20:19:48 -!- asiekierk has left (?).
20:19:55 -!- asiekierk has joined.
20:19:56 <oerjan> is that why +t was on recently?
20:20:06 <estoppel> fizzie set it because asiekierk was being irritating.
20:20:07 -!- estoppel has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D.
20:20:50 <estoppel> Au contraire, you are proof we need it.
20:20:53 <lament> what's the problem with the topic?
20:21:05 <estoppel> lament: asiekierk thinks he owns it and keeps spamming it with pointless rubbish whenever we change it.
20:21:14 <estoppel> Recommended solution: temporary +t. It worked yesterday.
20:21:18 <lament> asiekierk: Turn your script off
20:21:48 -!- ais523 has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | http://127.0.0.1/../../etc/passwd.
20:22:03 -!- asiekierk has quit.
20:22:08 <estoppel> ais523: omg it has your passwords in
20:22:28 -!- asiekierk has joined.
20:22:36 <ais523> estoppel: really? it's a 404 for me
20:22:47 <estoppel> Does "turning your script off" imply "now I'll do it manually", asiekierk?
20:22:50 <estoppel> I have a terrible feeling it does.
20:22:50 <asiekierk> Now try to change the topic so I can know whether or not the script problem is fixed
20:22:53 <lament> asiekierk: i still don't get it, what happens when we change the topic?
20:22:57 <lament> what does the script do?
20:22:58 <estoppel> lament: he puts it back because he owns it
20:23:04 -!- ais523 has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | http://127.0.0.1:8080/../../etc/passwd.
20:23:04 <asiekierk> Aww. You always need to change the topic... :(
20:24:16 <estoppel> You mean you have a new topic changing script?
20:24:25 <asiekierk> I mean I have a stupid reply on topic change script
20:24:35 <asiekierk> <asiekierk> Aww. You always need to change the topic... :(
20:24:45 <estoppel> Wonderful, let's see if I can flood your client off the network.
20:24:52 <ais523> hmm... I just had a brilliant idea
20:24:52 <asiekierk> Aww. You never let me change the topic and always do it yourself... :(
20:24:54 -!- estoppel has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D.
20:24:54 <asiekierk> Aww. You never let me change the topic and always do it yourself... :(
20:25:12 <asiekierk> Aww. You never let me change the topic and always do it yourself... :(
20:25:13 <asiekierk> Wow... I don't need to restart mIRC!
20:25:22 -!- estoppel has left (?).
20:25:25 <ais523> it doesn't work with Google, though, let me find a less well-organised website
20:25:28 <Slereah_> It is the severe internet here
20:25:45 -!- estoppel has joined.
20:26:23 -!- asiekierk has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | <asiekierk> That's right, i DO look like an idiot!.
20:26:32 <ais523> yay, it works apart from the date
20:26:37 <asiekierk> Aww. You never let me change the topic and always do it yourself... :(
20:26:42 <estoppel> asiekierk, asiekierk. I'm afraid it's rather more severe than that.
20:26:56 -!- asiekierk has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | <asiekierk> That's right, i AM an idiot!.
20:26:57 <lament> asiekierk: you realize that with a script like that you'd get banned from a bunch of channels.
20:27:20 <ais523> estoppel: http://pastebin.ca/1356726
20:27:26 <estoppel> You removed a script and replaced it with an equally irritating one.
20:27:28 <ais523> replace the time with the current time, and send it to port 80 on esolangs.org
20:27:33 <ais523> I've written an HTTP Kimian quine
20:27:40 <asiekierk> Now try, I think I disabled the script
20:28:10 <ais523> I wanted to do it with Google, but their error page is too complex
20:28:32 <ais523> but I thought "I know, I'll write an HTTP Kimian quine"
20:28:44 -!- asiekierk has changed nick to asie[away].
20:29:19 <ais523> someone other than estoppel: care about my quine
20:29:21 -!- estoppel has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | If there is an asiekierka in the building, please evacuate all brains. Thanks!.
20:29:48 <estoppel> ais523: ** Memory exhausted trying to allocate 6 billion objects
20:30:22 <ais523> a bit more than 6 billion nowadays, isn't it?
20:30:26 <ais523> besides, that was anycast not broadcast
20:30:35 <estoppel> Prologiverse doesn't know that.
20:30:43 <estoppel> "The human population on Earth is greater than 6.7 billion, as of February, 2009"
20:31:00 <estoppel> "As of 2008, humans are listed as a species of least concern for extinction by the International Union for Conservation of Nature."
20:31:20 <ais523> you could always try asking wolfram alpha
20:31:32 <ais523> although the input box is currently just an image of an input box, so it won't be very useful
20:31:41 <estoppel> ais523: ask it for me, since you clearly have access :P
20:31:48 <oerjan> just imagine the answer, duh
20:31:49 <ais523> also, an image of a text box? do they have any idea how unportable that is/
20:32:01 <estoppel> considering the box is completely styled...
20:32:09 <ais523> exactly, even more unportable
20:32:17 <ais523> how will something like that work in w3m
20:32:31 <ais523> images work just fine in w3m
20:32:37 <estoppel> oh, right, framebuffer thingy.
20:32:40 <ais523> although admittedly they aren't embedded in the page
20:32:59 <ais523> not framebuffer, it spawns an external image viewer program if you follow a link to one or choose the option to view one
20:33:59 <estoppel> also, ais523, do you have any ideas on how to utilize 12gb of ram
20:34:20 <ais523> allocating 6 billion objects?
20:34:32 <ais523> actually seeing what Vista is like in a reasonable length of time?
20:34:44 <ais523> memory-caching the whole of Wikipedia apart from the images?
20:35:04 <estoppel> wow, I really could do that last one
20:35:05 <ais523> splitting it into 12000 VMs each of which has a megabyte of memory, each running DOS?
20:35:19 <estoppel> i mean, it wouldn't even slow anything down much
20:35:32 <ais523> no, obviously a memory cache would speed it up
20:35:50 <Deewiant> Ahh, gotta love functions where the type signature takes up more lines than the definition
20:36:00 -!- kar8nga has joined.
20:36:16 <ais523> Deewiant: I think they should create a Haskell-like like language which deduces the definition from the type signature, rather than the other way round
20:36:33 <Deewiant> ais523: What if it's ambiguous?
20:36:44 <ais523> oh, it usually will be
20:37:03 <ais523> at the moment I'm wondering about "do the simplest thing that could possibly work", plus monads
20:37:07 <estoppel> /msg lambdabot @djinn signature
20:37:22 -!- asie[away] has set topic: Divulgations are apples for your words: http://tunes.org/~nef/logs/esoteric/?C=N;O=D | If there is an asiekierka in the building, please evacuate all intelligence. Thanks!.
20:37:31 <Azstal> It can't do a lot of things though, yeah
20:37:40 <Deewiant> Can't handle recursive data types
20:37:47 <Deewiant> Which is its most vexing limitation
20:38:00 <ais523> <C++ IAQ> The idea to overload "bitwise exclusive or" to mean "power" is just stupid. I wonder where they get these ideas. It's as if someone decided to overload "bitwise left shift" to mean "print to file".
20:38:36 <Deewiant> ais523: Surely that's not from the IAQ?
20:38:56 <ais523> it's easy to get those muddled
20:39:05 <ais523> besides, the IAQ is for C
20:39:25 <ais523> the FQA is trying to be simultaneously useful and sarcastic, whereas the IAQ is just a joke
20:41:15 <fizzie> Could you stop with the topic stuff? And what does this script thing do?
20:45:17 <estoppel> "Maximum operating altitude: 10,000 feet "
20:46:05 <estoppel> "Storage temperature: -40° to 116° F (-40° to 47° C) "
20:46:13 <estoppel> Aww but I was gonna cryogenically preserve my mac...
20:46:26 <estoppel> To be with me when I wake up in 30,000AD.
20:47:18 -!- calamari has joined.
20:47:29 <Deewiant> I've put a GPU in a freezer a couple of times, to cool it down
20:48:02 <estoppel> That's like almost as heavy as me.
20:48:22 <ais523> you weigh a lot more than that, I hope
20:48:38 <estoppel> But I'm ridiculously light, something like 30kg.
20:49:54 -!- atrapado has joined.
20:52:53 <estoppel> Maybe I could make an in-memory markov chain of wikipedia with those 12gb.
20:53:02 <estoppel> Because fungot isn't quite fast enough!
20:53:03 <fungot> estoppel: psykotic every pixel is sacred. just me, or i managed to get nothing? how about making a language?
20:53:10 <ais523> estoppel: what, the whole wikipedia?
20:53:25 <ais523> besides, how did you end up with 12GB anyway
20:53:38 <estoppel> "Having 12GB" is a boxed future value.
20:53:50 <estoppel> I'm justifying my dirty capitalist tendencies, see.
20:53:55 <ais523> get yourself 56GB, then install qmail
20:54:04 <ais523> without setting resource limits
20:54:17 <estoppel> the mobo only supports up to 32GB I think
20:55:47 <estoppel> Also, having your backup drive the same size as your main drive is a bit silly, isn't it.
20:56:06 <ais523> why, should it be bigger or smaller?
20:56:29 <estoppel> Smaller, so you can use your drive and have more than one backup at a time.
20:56:37 <estoppel> Of course, nobody actually uses up all their drive.
20:57:17 <ais523> I've got close on a couple of computers which were basically full anyway
20:57:28 <ais523> on the one that ran Windows 3.1, I was saving things on floppies to save hard disk space
20:57:37 <estoppel> Right, but we're talking 1TB here.
20:57:49 <estoppel> I have a ton of crap I don't need on here and only 120GB used
20:58:03 <ais523> well, find your terabyte's worth of floppies, and use your hard drive to back them up
20:58:47 -!- olsner has joined.
20:58:53 <estoppel> ais523: also, I don't think having ~1000 floppies is _that_ odd...
20:59:02 <ais523> well, I only had 40 or so
20:59:13 <ais523> besides, a TB of floppies is more like 500000
20:59:33 <ais523> floppies store 2 MB unformatted
20:59:40 <ais523> 1.44 MB with the typical DOS/Windows format
20:59:53 <ais523> although Linux floppy disk formats store up to about 1.7 MB, nobody uses them
21:00:00 <ais523> because nobody uses floppy disks nowadays
21:03:19 -!- Hiato has quit (Connection timed out).
21:05:32 -!- FireFly has quit ("Later").
21:05:38 -!- asie[away] has quit (Read error: 110 (Connection timed out)).
21:06:11 <pikhq> Except for those random Linux-on-a-floppy distros...
21:06:29 <ais523> but they're hardly formatted with the Linux-specific formats
21:06:35 <ais523> as that would be a chicken-and-egg problem
21:06:50 <ais523> making them bootable would probably be tricky, if at all possible
21:06:55 <pikhq> dd and rawrite can write such disk images just fine.
21:07:14 <pikhq> And the BIOS can load the boot sector quite fine.
21:07:55 * pikhq made a Linux-on-a-floppy distro out of boredom a bit before starting on Brainfuck
21:07:56 <ais523> the problem is that the boot sector isn't separated from the others the way it usually is
21:09:00 <pikhq> Granted, the boot sector in question is the first 512 bytes of a pre-2.6 Linux kernel... Still, the BIOS can handle the 1.7MB floppies without any trouble.
21:09:26 <estoppel> Boot sectors can just be 'jmp somewherewithmoreroom', no?
21:10:10 <pikhq> When the boot sector is run, the only things in memory are the boot sector itself and the BIOS.
21:10:21 <pikhq> And the BIOS is only in memory because it's ROM.
21:10:41 <estoppel> Well, okay, then, "readrestoffloppydisk, jmp somewherewithmoreroom"
21:11:14 <pikhq> Generally "read some bytes from the floppy disk, jmp rightafterthebootsector".
21:11:53 <ais523> pikhq: but rightafterthebootsector is in the "wrong" place on a Linux-formatted disk
21:12:41 <pikhq> ais523: The Linux boot sector, IIRC, starts running the floppy disk manually rather quickly.
21:12:43 <ais523> anyway, I invented a sorting algorithm a couple of nights ago that I haven't come across before
21:12:47 <ais523> but may have been invented independently
21:12:59 <ais523> it involves insertion sort, but into a deterministic skiplist rather than an array
21:13:17 <ais523> I think it's always n log n, but slower than mergesort in terms of number of comparisons despite being the same order
21:13:35 <pikhq> Something like, right after loading the very first track...
21:14:17 <pikhq> (the first track is still in the same place; Linux gets more space out of those floppies by packing the tracks in closer)
21:14:28 <oerjan> "deterministic skiplist"?
21:14:33 <ais523> the second track is in a different place
21:14:48 <ais523> oerjan: skiplists normally use some form of randomisation to do their skippy pointers
21:14:59 <ais523> it's possible to do it deterministically with the same computational order
21:15:06 <ais523> although slower whilst maintaining the same order
21:15:47 <oerjan> well i don't know skiplists, but insertion sort into a balanced tree is n log n afair
21:16:18 <ais523> balanced trees and skiplists are kind-of similar
21:16:22 <ais523> but how can you not know skiplists?
21:16:45 <Deewiant> Easily; I only encountered them a few months ago, I think, but I've known of trees for years
21:17:26 <estoppel> [[ There are no guarantees in any Scheme standard for broken Scheme code
21:17:26 <estoppel> to "break properly" in any sense of the word. (This is one reason why
21:17:27 <estoppel> I, as a working programmer, do not use Scheme anymore.) ]]
21:17:31 <oerjan> i don't actually have _that_ much CS education
21:17:48 <ais523> estoppel: that sort of programmer goes on to invent langs like OCaml
21:17:59 <oerjan> just one semester with data structures, 19 years ago or so
21:18:18 <oerjan> (two semesters with various)
21:18:24 <lament> when you program for a living, things like breaking correctly are pretty important
21:18:53 <ais523> oerjan: you don't need education
21:19:03 <ais523> although admittedly skiplists are clever enough to be unlikely to be invented by accident
21:19:08 <estoppel> lament: but that doesn't even make sense
21:19:24 <lament> well, take microsoft silverlight
21:19:27 <pikhq> oerjan: You have a math education, and informal knowledge of computers. That alone is enough to do quite well in CS...
21:19:29 <estoppel> and a standard trying to regulate handling things that don't meet its specification of a document/program is preposterous
21:19:39 <pikhq> s/computers/computer programming/
21:19:40 <lament> sometimes when you feed it incorrect stuff, it simply shows a blank page
21:19:53 <lament> no thrown exception, no nothing, no indication of where the error may be.
21:19:53 <estoppel> it's all implementation issues
21:20:01 <estoppel> a standard mandating this would be idiotic
21:20:15 <pikhq> ais523: I also don't know skiplists.
21:20:25 <pikhq> Granted, I'm a freshman CS student, so...
21:20:40 <ais523> estoppel: it reminds me of people getting annoyed that non-ANSI-compliant implementations of C-like languages were breaking the C standard by defining STDC
21:21:07 <ais523> there is something very wrong with that logic
21:23:05 <ais523> <C++ FQA> FAQ: You can't, and you usually shouldn't.
21:23:16 <ais523> Deewiant: it's wrong on at least two levels
21:23:31 <ais523> as for explaining exactly what's wrong, I'm tired and don't feel like going through the arguments
21:23:36 <ais523> maybe someone else will
21:30:49 <Deewiant> 1 files changed, 441 insertions(+), 208 deletions(-)
21:33:04 -!- FireyFly has joined.
21:33:54 * ais523 catches oerjan in a butterfly net -----\XXXXX/
21:34:15 <ais523> I have decided that the salient feature of the butterfly net is that it is unexpected
21:34:28 <oerjan> and here i was being nice and not swatting FireyFly ;´(
21:34:42 <ais523> don't worry, it's a loving careful butterfly net
21:34:59 <comex> so, I'm going to try to use acovea to optimize the morse code thing
21:35:10 <comex> http://www.coyotegulch.com/products/acovea/
21:35:18 <comex> not that it will probably have much effect
21:35:59 <oerjan> ais523: i just read http://www.reddit.com/r/programming/comments/838pv/evolving_faster_haskell_programs/ which uses it
21:36:53 <comex> oerjan: guess where I found it
21:37:05 <oerjan> comex: i already did :D
21:41:20 * comex is trying to paste between one vim and another vim
21:41:34 <comex> yes, I should open the files in the same vim but what if I don't want to
21:41:38 <comex> konsole doesn't let me copy it :x
21:42:04 <ais523> and control-shift-c / control-shift-v are usual GUI copy/paste for console programs
21:47:17 <comex> yeah, it didn't work properly
21:47:40 -!- KingOfKarlsruhe has joined.
21:47:40 <ais523> set paste's a good trick to know in vim, it stops it trying to be too clever when pasting stuff in
21:48:13 <comex> ais523: is it possible for me to have vim share stuff between two instances?
21:48:22 <comex> or otherwise work with multiple files, say, across screens
21:48:36 <ais523> vim generally isn't very good with multiple-process stuff
21:48:52 <ais523> in fact, that's what persuaded its main maintainer to switch to using Emacs
21:49:08 <comex> http://vim.wikia.com/wiki/Copy_and_paste_between_Vim_instances <-- ack that's ugly
21:49:09 <ais523> for the specific case you mention, though, I wouldn't be surprised if there was a way
21:50:05 <fizzie> There's that clientserver thing, which can then be scripted. But it only works with a $DISPLAY.
21:50:22 <fizzie> (Since it communicates via X messages.)
21:51:18 <ais523> comex: the * register seems to be mentioned too
21:51:27 <ais523> as shared between vim instances, and presumably everything else
21:51:51 -!- BeholdMyGlory has joined.
21:52:13 <comex> whenever I type "~ it beeps
21:52:19 <ais523> ok, that's interesting
21:52:24 <oklopol> ais523: anyway, I invented a sorting algorithm a couple of nights ago that I haven't come across before <<< i don't know if this has a name, but, as oerjan hinted, the idea is well-known, basically you can do that with any data structure that is a function from indices to values, and can supply you with predecessors and inserting-in-the-middle both in O(log n) time.
21:52:25 <ais523> why "~ in particular? what's that meant to do?
21:52:41 <ais523> oklopol: yep, i was trying to work out what the advantages and disadvantages were
21:52:57 <ais523> the advantage, I think, is that you get good computational orders for almost all common operations
21:53:12 <ais523> insert, insert-sorted, delete, append, nth are all O(log n)
21:53:14 <oklopol> i met skiplists in high school, and considered them trivial, but didn't hear their name; have heard about them many times since, and never bothered to check how they work, but now that you said something about it being weird oerjan didn't know it
21:53:29 <oklopol> but, as already mentioned, i did know them
21:53:50 <comex> my vim doesn't have x11, wtf
21:53:53 <ais523> I like balanced skiplists, even if they're slower
21:54:00 <ais523> comex: well, obviously, you need gvim
21:54:08 <ais523> although IMO, gvim's an oxymoron waiting to happen
21:54:13 <ais523> as it misses the main point behind vim
21:54:34 <oklopol> data structures tend to be a bit too easy to visualize to be all that stimulating
21:54:42 <ais523> oklopol: solved Nim yet, by the way?
21:54:51 -!- MigoMipo has left (?).
21:54:56 <comex> ais523: I don't want gvim, I want a terminal
21:55:02 <ais523> if you can manage it for yourself, and I see no reason why you shouldn't, and you spot the pattern, prepared to be stunned
21:55:06 <ais523> comex: an X11 terminal?
21:55:22 * ais523 tries to visualise a vim specifically designed for xterm/konsole/whatever
21:55:22 <comex> but I want vim with +X11
21:55:25 <comex> which debian apparently doesn't have
21:55:39 -!- kar8nga has quit (Read error: 145 (Connection timed out)).
21:55:53 <comex> % apt-get source vim
21:56:09 <ais523> sudo apt-get build-dep vim
21:56:20 <ais523> that step will save you a lot of trouble
21:56:25 <ais523> oh, and build-essential if you don't have it already
21:56:39 <fizzie> (The Debian package with that name, that is.)
21:59:13 <fizzie> Might of course be more than you need; it does enable +perl, +python, +ruby and +tcl while it's at it.
21:59:14 <oklopol> ais523: sadly, no. i did fix the error, but i didn't really have time to look into it today, i dedicated this day for doing absolutely nothing, because i'm a bit concerned about my mental health because of all this exam flood :P
21:59:31 <oklopol> not that i'm having any issues really, i just feel like i should
21:59:35 <ais523> that's a great thing to dedicate a day for
21:59:49 <comex> yeah, what you said
21:59:51 <Deewiant> It's a separate package on occasion
21:59:58 <comex> now that I have gvim installed,
22:00:03 <comex> I can just run vim and get console but +X!!
22:01:01 <fizzie> Deewiant: It's called vim-gtk on Debian, but there's a "gvim" virtual-package for it, implemented by the various GUIfied versions of vim; vim-lesstif, vim-gtk, vim-gnome.
22:01:27 <ais523> Debian go to a lot of trouble to make the package manager Do The Right Thing
22:01:33 <comex> I don't want to use gvim because
22:01:34 <ais523> even though the result normally ends up rather confusing
22:01:44 <comex> I'll get used to the gui
22:01:52 <comex> which is (1) slower and (2) not going to work over ssh
22:02:15 <ais523> although I use non-GUI vim more often than GUI vim
22:02:21 <ais523> working over ssh is vi's killer feature, really
22:02:50 <ais523> although a vi feature not a vim feature, most computers have neither vim nor emacs installed, but most ssh-intoable computers have vi
22:02:51 <Deewiant> I have all the menus and scrollbars and whatnot disabled, apart from the tab bar
22:02:59 <fizzie> Yes, but all GUI-enabled Vim binaries can run in a terminal. If you install vim-gtk (for example) you just get gvim and vim symlinks into the vim.gtk binary.
22:03:31 <comex> ais523: the computers I generally want to ssh into all have vim
22:03:48 <ais523> does normish have vim?
22:03:50 <comex> fizzie: yes, I noticed that above :u
22:04:11 <comex> ais523: well, it would be cool if I could get vim to open files remotely like kate
22:04:22 <fizzie> Yes, and I mentioned vim-gtk before Deewiant, yet you're all "what you said".
22:04:43 <comex> fizzie: I wasn't paying attention but rather busy compiling vim
22:04:46 <comex> before I realized I didn't need to
22:05:02 <comex> ais523: in many circumstances (slow connection!!) editing remotely is a bad idea
22:05:07 <ais523> hmm.. apparently normish does have vim
22:05:20 <ais523> emacs has TRAMP to open files remotely, I'm not sure if there's a vi equivalent
22:05:35 <comex> http://ubuntu-tutorials.com/2007/08/31/vim-tip-of-the-week-august-31-2007-remote-editing/
22:05:40 <ais523> although the real reason not to edit remotely is because estoppel tends to reboot the system you're editing on at the time
22:08:12 <comex> I wish there was a cross-app way to do that :/
22:08:23 <comex> there's FUSE, kioslaves, and vim has its own thing
22:08:31 <comex> where the fuck is a standard when you need it
22:08:48 <ais523> KDE has a standard way of its own, that's standard among KDE apps
22:08:51 <ais523> that's how Kate manages it
22:10:37 <comex> % vim scp://firstname.lastname@example.org/send_slr
22:10:43 <fizzie> There's also gnomevfs for that.
22:10:50 <fizzie> All Gnome apps do it with it.
22:11:09 <oklopol> is there like a book or something i could read so i'd understand even half of what you guys talk about?
22:11:36 <ais523> playing around with a Linux-based or UNIX-based system should teach it to you pretty quickly
22:11:38 <comex> would be cool if I could just use standard unix commands remotely
22:11:58 <ais523> or is it without the newline
22:12:04 <ais523> but that's the vim way
22:12:12 <ais523> why reimplement everything your shell can already do?
22:12:15 <comex> FUSE is a nice hack but has some problems such as
22:12:20 <comex> I didn't mean from vim
22:12:25 <oklopol> ais523: well ubuntu taught me nothing at least
22:12:27 <fizzie> And Vim's version is actually rather based on external commands; it handles dav with cadaver, ftp with ftp, http with "curl -o"/"wget -q -O"/"fetch -o", scp with "scp -q" and so on.
22:12:33 <comex> such as no programs expecting a very slow filesystem
22:12:40 <ais523> oklopol: well, it's designed to not have to use the console
22:12:48 <oklopol> i used the console all the time
22:12:52 <comex> fizzie: great, that's just what I want. what I don't want is having to copy temporary files manually
22:12:55 <ais523> so how did you not come across things like vi
22:13:07 <comex> I've used nano up to now :u
22:13:12 <oklopol> that's the 30% i do understand :P
22:13:12 <ais523> so why don't you understand half of what we talk about?
22:13:24 <estoppel> 21:12 ais523: why reimplement everything your shell can already do?
22:13:25 <ais523> probably a one-sentence explanation would be enough
22:13:34 <oklopol> well dunno, i wasn't being very exact.
22:13:36 <ais523> estoppel: what, reimplementing things?
22:13:45 <ais523> I thought its whole point was to defer to pre-existing programs, or is that vi?
22:13:46 <comex> http://www.wana.at/vimshell/
22:14:17 <fizzie> vimshell is a patch to Vim sources, though.
22:14:21 <estoppel> I mean, I actually use ed sometimes.
22:14:22 <ais523> estoppel: presumably vi syntax highlighting would work by piping the program through an external syntax highlighter, then before save piping it through something to strip out the ansi colour code?
22:14:32 <ais523> estoppel: I use sed for editing on occasion
22:14:34 <comex> though I don't need that unless I want to edit and shell at the same time
22:14:44 <fizzie> I've done pretty much "shell in a vim window" with vim and the perl-scripting add-on, to run MATLAB/Octave in a vim window so I don't need MATLAB's horrible GUI.
22:14:45 <estoppel> ais523: The correct way is to realise that buffer display does not have to be what you edit
22:14:56 <estoppel> and have two layers: the screen display, and the buffer display, and a function mapping between the two
22:15:00 <ais523> by the way, can anyone here think of a way to combine yo dawg with I herd you liek mudkips?
22:15:04 <ais523> they seem to work perfectly together
22:15:05 <estoppel> Thus, the screen display is piped through a highliter, but the buffer display is the file
22:15:15 <ais523> Yo dawg, I herd you liek mudkips so...
22:15:23 <ais523> I'm just not sure how to finish the sentence
22:15:24 <estoppel> ais523: "Yo dawg, I herd u liek mudkips, so I put a mudkip in your mudkip so you can breed while you... update your pokedex."
22:15:32 <comex> ais523: I hereby submit "complete that sentence" as an Enigma puzzle
22:15:42 <ais523> comex: you need to submit an answer too
22:15:42 <oerjan> ais523: hm i have a vague impression i've seen something like that on reddit
22:15:47 <ais523> in fact, the correct answer
22:15:59 <Deewiant> oerjan: Or on xkcd? http://xkcd.com/550/
22:16:27 <estoppel> s/that //;s/$/ most of the time/
22:16:39 <oerjan> no something closer to what ais523 said
22:16:45 <Deewiant> http://www.flickr.com/photos/brownpau/2459879511/
22:17:09 <Deewiant> http://www.reddit.com/r/funny/comments/7qyc6/a_brilliantly_subtle_yo_dawg/c075d8z
22:17:20 <estoppel> i hate the one in the title of that submission
22:17:25 <estoppel> the one in the comments had no text
22:18:20 <estoppel> http://i42.tinypic.com/29w1h1e.jpg
22:19:10 <ais523> I didn't realise that yo dawg and I accidentally the whole internet were current at the same time
22:19:24 <oerjan> Deewiant: ok but i hadn't seen that one
22:19:42 <estoppel> ais523: it's i accidentally the noun
22:19:49 <oklopol> isn't the accidentally thing from like the 60's
22:20:04 <comex> http://www.steike.com/code/useless/zip-file-quine/'
22:20:38 <ais523> the whole internet seems to fit it pretty well
22:20:39 <oerjan> the internet no longer a noun! film at 11
22:22:14 <oklopol> okay i didn't like the new xkcd, but probably you've just brainwashed me
22:22:27 * oerjan still thinks steike.com is funny as "steike" means something like "darn" in his dialect
22:23:46 * oerjan swiftly removes oklopol's brain and drops it in the laundry
22:24:21 * ais523 switfly retrieves oklopol's brain and puts it in a museum
22:24:34 <oerjan> Deewiant: hitto is the finnish equivalent?
22:25:54 <Deewiant> I think 'hemmetti' would be closer but there's no hemmetti.com
22:28:46 * oerjan swats ais523's switfly -----###
22:29:39 <comex> http://www.youtube.com/watch?v=8mq_96Entks
22:31:40 <calamari> has there already been a language where the current instruction set depends on the previous instructions executed (or possibly listed in the source code) up to that point?
22:32:37 <calamari> isn't the instruction set always the same?
22:32:37 * oerjan picks up an e from the floor
22:34:03 <oerjan> oklopol: apply now and you can be an oklopole!
22:34:15 <estoppel> calamari: the instruction executed is cyphered
22:34:36 <calamari> right but theset of available instuctions remains constant
22:34:40 <oerjan> oh wait you have no brain at the moment
22:35:48 * oerjan paints the e pink and drops it off at the museum beside oklopol's brain
22:36:00 <oklopol> the museum of what exactly?
22:36:14 <oerjan> now you can try to TAKE OVER THE WORLD
22:36:16 <ais523> oklopol: brilliant brains that need preserving but were somehow dropped in the laundry
22:36:18 <calamari> as far as I know, it's just a matter of figuring out the encoding, but you could always execute each instruction at each set.. right?
22:37:06 <calamari> but if there were multiple sets of instructions, perhaps not all complete, that were chosen deterministically based somehow on the past.. it might be kinda interesting
22:37:09 <oklopol> ais523: is that a big museum?
22:37:42 <calamari> if done properly the code would be easy to read but hard to write
22:38:05 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
22:38:07 -!- oklopol has joined.
22:39:08 * oerjan sneaks the pink e and the brain out of the museum and return them to oklopol
22:40:20 -!- oklopol has changed nick to oklopole.
22:40:36 * oerjan hangs up a lampshade for better light /====\
22:41:24 <comex> calamari: and perhaps also depending on data
22:41:31 <calamari> now that I think on it more, it'd have to be based on execution, because otherwise you could write macros
22:41:35 <oerjan> that your space key is broken
22:41:38 <oklopole> i want to study gene biology, physics and psychology
22:41:49 <ais523> oklopole + psychology?
22:41:57 <ais523> you aren't mad, but you'll drive other people mad that way
22:42:02 <ais523> or sane, if you so prefer, but mad's more fun
22:44:02 <oklopole> i probably wouldn't enjoy actually studying psychology at uni, it seems somewhat trivial, but i would love to know what exactly psychology knows
22:44:15 <estoppel> psychology is um... mostly bullshit.
22:44:18 <oklopole> the other two are just actually interesting
22:44:39 <oklopole> estoppel: yeah, i doubt it is, although i agree.
22:45:05 <lament> oklopole: if you find a good textbook, tell me!
22:45:15 <lament> i too would like to know psychology
22:45:40 <lament> unfortunately i think the way to do that is to subscribe to their journals and read their shitty papers, i certainly don't want to do that
22:45:53 <lament> but a nice up-to-date textbook would be nice
22:46:06 <oklopole> a friend of mine started studying psychology now that he's doing his phd and doesn't have much cs courses, got me a bit interested too
22:47:05 <comex> http://qoid.us/screenshots/morse.png <-- why does gvim have such a god-awful default coor scheme
22:47:07 <oklopole> yeah raeding papers probably wouldn't be worth it, especially as i'm pretty sure psychology at least gets a lot of bullshit, even though i doubt the actual subject is characterized by it.
22:47:29 <estoppel> comex: that's for a black background
22:47:38 <estoppel> you have to :set background=white or something
22:47:39 <comex> estoppel: it's gvim
22:48:27 <comex> maybe it's just my eyes
22:48:46 <comex> even bg=light had some too-bright colors imo
22:49:04 <comex> ^ other reason not to use remote vim
22:58:46 <fizzie> At some point I tried to use gvim because it can do more colours; then I just downloaded inkpot.vim to utilize the rxvt-unicode 88-color mode (and the screen/xterm 256-color mode) properly.
22:59:21 <fizzie> I guess many people might not like those colours either, but I'm odd like that; they look something like http://zem.fi/~fis/termcolors.png
23:11:01 -!- tombom has quit (No route to host).
23:14:32 -!- jix has joined.
23:25:24 -!- ais523 has changed nick to ais523__.
23:25:37 -!- ais523__ has changed nick to ais523.
23:25:54 * oerjan watches the ais523 time anomaly
23:30:15 <Deewiant> What does it mean to have a gigabit ethernet controller with a 10/100 megabit physical layer device?
23:31:22 <Deewiant> I mean, doesn't that mean that it can still only transfer at most 100 Mbit/s through the port?
23:31:37 <Deewiant> In which case what's the point of having a gigabit controller?
23:31:43 <Robdgreat> I say bottle, you say neck! Bottle!
23:32:13 <Robdgreat> wow, it's getting close to time for me to gtfo
23:33:19 <oerjan> that sounds like bad timing
23:33:40 <oerjan> since you just started talking
23:36:16 -!- kerlobot has joined.
23:36:58 <kerlo> If at first you don't succeed...
23:38:15 <ais523> ok, so it isn't running Lisp
23:38:20 <Robdgreat> oerjan: I meant with regards to work
23:38:34 <kerlo> I recommend Church numerals, or whatever you call those things these days.
23:38:59 <oerjan> House of Worship numerals?
23:39:31 <kerlo> Thereby showing that I don't remember how this thing works.
23:39:40 -!- atrapado has quit ("Abandonando").
23:40:11 <oerjan> %eval (lambda (lambda lambda) (lambda lambda)) (lambda lambda lambda)
23:40:24 <kerlo> You need more parentheses.
23:40:39 <oerjan> %eval ((lambda (lambda lambda) (lambda lambda)) (lambda lambda lambda))
23:40:39 <kerlobot> ((lambda (lambda lambda) (lambda lambda)) (lambda lambda lambda))
23:40:53 <kerlo> %eval ((lambda (lambda) (lambda lambda)) (lambda (lambda) (lambda lambda)))
23:40:53 <kerlobot> ((lambda (lambda) (lambda lambda)) (lambda (lambda) (lambda lambda)))
23:41:07 <ais523> %eval ((lambda (x) (x x)) (lambda (x) (x x)))
23:41:08 <kerlobot> ((lambda (x) (x x)) (lambda (x) (x x)))
23:41:15 <kerlo> Oh, it's not called lambda.
23:41:17 <ais523> kerlobot doesn't seem to evaluate anything
23:41:36 <ais523> %eval ((l (x) (x x)) (l (y) (y y)))
23:41:37 <kerlobot> ((IT IS LOOP SORRY) (l (y) (y y)))
23:41:41 <kerlo> %eval ((l (l) (l l)) (l (l) (l l)))
23:41:41 <kerlobot> ((IT IS LOOP SORRY) (l (l) (l l)))
23:42:00 <ais523> ugh, that reminds me of Mathematica error messages
23:42:13 <ais523> they just get embedded into the expression instead of a result and it keeps on evaluating
23:42:43 <kerlo> %temp (l (2) (l (f x) (f (f x))))
23:42:57 <kerlo> %temp ((l (2) (l (f x) (f (f x)))) input)
23:43:42 <ais523> (2 2) should be 4 in Church numerals
23:44:20 <kerlo> %temp ((l (2) input) (l (f x) (f (f x))))
23:44:31 <kerlobot> ([l (f x) (f (f x))] ((l (f x) (f (f x))) (l ((l (f x) (f (f x))) x) ((l (f x) (f (f x))) ((l (f x) (f (f x))) x)))))
23:44:56 <kerlo> Want me to curry it?
23:45:18 <kerlo> %temp ((l (2) input) (l (f) (l (x) (f (f x)))))
23:45:36 <kerlo> %eval (((2 2) f) x)
23:45:37 <kerlobot> ((l (((l (f) (l (f) (f (f f)))) f)) (((l (f) (l (f) (f (f f)))) f) (((l (f) (l (f) (f (f f)))) f) ((l (f) (l (f) (f (f f)))) f)))) x)
23:45:53 <kerlo> %eval (((2 2) F) X)
23:45:54 <kerlobot> ((X (X X)) ((((l (f) (l (X) (f (f X)))) X) X) (((l (f) (l (X) (f (f X)))) X) X)))
23:46:14 <kerlo> Still, what the heck is it doing?
23:46:41 -!- kerlobot has quit (Remote closed the connection).
23:48:32 * kerlo attempts to run it on Normish, but just gets a bunch of "that file doesn't exist"
23:49:09 <kerlo> -bash: ./sillylisp: No such file or directory
23:49:23 <kerlo> The thing is, though, ./sillylisp exists.
23:49:34 <estoppel> Run it under 32-bit emulation.
23:49:59 <ais523> I assume it's chmodded executable
23:50:12 <ais523> what does "file ./sillylisp" do?
23:50:19 <estoppel> ais523: no, it is 64 bit v s 32 bit
23:50:24 <estoppel> I know because I've had the 100% same problem on a slicehost
23:50:31 <kerlo> sillylisp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), not stripped
23:50:37 <ais523> why are you trying to port binaries between linux systems anyway?
23:50:38 <kerlo> So yeah, that's the problem, I guess.
23:50:47 <kerlo> ais523: because I can't compile it on the target machine.
23:50:56 <ais523> what about crosscompiling?
23:51:04 <kerlo> I don't know how to do that.
23:51:31 <ais523> crosscompilation is great fun, although not everything's set up to support it
23:51:34 <kerlo> Huh. "linux32: ./sillylisp: No such file or directory"
23:51:36 <ais523> that reminds me, I must finish gcc-bf some time
23:54:42 <ais523> <C++ FQA> (a CPlusPlusProgrammer has all the fields of a Programmer, plus a couple of new, orthogonal members, such as headAgainstTheWallBangingFrequency).
23:59:14 <ais523> <C++ FQA> Here's a proposal for the next C++ standard: let's define two keywords, __0 and __1. With a token sequence composed of these two keywords, we can express anything (actually, one keyword is enough, but that's just too verbose).