code logs -> 2011 -> Fri, 28 Oct 2011< code.20111027.log - code.20111029.log >
--- Log opened Fri Oct 28 00:00:47 2011
00:35 celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has joined #code
00:40 Omega is now known as Alek
00:41
< sshine>
the intro course at DIKU (Copenhagen, Denmark) is in Standard ML.
00:42
< sshine>
the second programming course is in Java.
00:42
< TheWatcher>
Back when I was an undergrad, manchester did SML, MIPS assembler, and C in parallel.
00:42
< sshine>
TheWatcher, as intro? :)
00:42
< TheWatcher>
Yep
00:43
< TheWatcher>
Now they do Java.
00:43
< McMartin>
That's an odd combination unless you're also teaching compilers
00:43 * McMartin tends to think you should start at one level of abstraction and move down
00:43
< TheWatcher>
(oh, and teach-yourself-PHP-disasterously)
00:43
< sshine>
haha
00:43
< TheWatcher>
(but that's a tautology, really)
00:43
< McMartin>
(Is there non... right)
00:43
< kwsn>
you have reinvented php better
00:43 You're now known as TheWatcher[T-2]
00:43
< kwsn>
but that's still no justification
00:43
< McMartin>
BUT THAT IS STILL NO EXCUSE
00:44
< celticminstrel>
Who has reinvented PHP better?
00:44
< sshine>
I like Javascript: The Good Parts... maybe there's a PHP: The Good Parts pamphlet.
00:44
< kwsn>
celticminstrel: http://colinm.org/language_checklist.html
00:44
< celticminstrel>
(I like JavaScript actually. It's kinda a bit Pythony.)
00:44
< Alek>
Monty Pythony?
00:44
< sshine>
celticminstrel, I don't see the resemblance.
00:45 Derakon[AFK] is now known as Derakon
00:45
< McMartin>
sshine: JS:TGP is insane
00:45 You're now known as TheWatcher[zZzZ]
00:45
< sshine>
celticminstrel, except that they can both do funky, dynamic things with "classes" and are multiparadigm.
00:45
< sshine>
McMartin, in what way?
00:45
< McMartin>
"JavaScript, of course, doesn't have a currying operator but we can fix that by modifying Function.prototype"
00:45
< McMartin>
He considers "the language has keywords" to be one of "the awful parts"
00:46
< McMartin>
Along with "IEEE 754 compliance"
00:47
< sshine>
I don't recall the bad parts. I just liked being given a sufficient subset of a confusing language.
00:48
< celticminstrel>
sshine: It's not a big resemblance.
00:48
< celticminstrel>
But there are some similarities.
00:53 * Derakon eyes that checklist, amuseds at the "has/lacks" for all the really flamewar-capable stuff, like significant whitespace and strong typing.
00:53
< celticminstrel>
...I don't understand how that checklist is supposed to work.
00:54
<@Derakon>
Someone suggests something, you respond with the checklist with appropriate items checked off.
00:55
<@Derakon>
E.g. http://subterrane.com/files/spamsolution.html
00:58
<@Derakon>
"Taking the wider ecosystem into account, I would like to note that...[ ]You have reinvented [Lisp|Javascript|Java|C++|PHP] but worse; [ ]You have reinvented PHP but better, but that's still no justification; [ ]You have reinvented Brainfuck but non-ironically."
00:58
<@Derakon>
Didn't McM mention that Brainfuck was originally non-ironic?
00:58
< ToxicFrog>
Yes.
00:58
< ToxicFrog>
Also, my favorite part of that checklist is still:
00:58
< ToxicFrog>
[ ] Your type system is unsound [ ] Your language cannot be unambiguously parsed
00:58
< ToxicFrog>
[ ] a proof of same is attached
00:58
< ToxicFrog>
[ ] invoking this proof crashes the compiler
00:59
< celticminstrel>
"spooky action at a distance"?
00:59
<@Derakon>
Quantum entanglement.
01:00
< celticminstrel>
Right, but how does that fit in this context?
01:00 * Vornicus-Latens invented a language once.
01:00
< ToxicFrog>
Hmm. premake looks pretty sweet.
01:00<~Vornicus-Latens> Its primary feature was that all "keywords" were symbolic: if was "??"
01:01 * celticminstrel wants to invent a language, even if it's only for fun and no-one ever uses it.
01:01
< ToxicFrog>
Vornicus-Latens: every time I invent a language it ends up with the conclusion that I've invented a subset of (lua|lisp|forth) for a specific purpose, and I might as well reuse an existing implementation of same instead~
01:01<~Vornicus-Latens> heh
01:01
< Alek>
lol
01:01
< ToxicFrog>
...ok, sometimes I've reinvented part of bash or cpp as well.
01:01
< Alek>
or it's just a renaming of another existing language.
01:01
< Alek>
see: brainfuck.
01:02
< Alek>
also wasn't there a chzbrgr version of C?
01:02<~Vornicus-Latens> other than that it was Fucking Boring
01:02<~Vornicus-Latens> and Fucking Unreadable
01:02
<@Derakon>
There was a Cheezburger language, period.
01:02
< ToxicFrog>
There was lolcode, but that's not chzbrgr C, it's an interpreted language.
01:03
< ToxicFrog>
although it does take some inspiration from C.
01:03
< ToxicFrog>
(can haz stdio)
01:03
< celticminstrel>
"AI-complete"?
01:03
<@Derakon>
Hard.
01:03
< celticminstrel>
I did re-invent Befunge once.
01:03
< ToxicFrog>
celticminstrel: "implementing this is equivalent to implementing a true AI"
01:03
< celticminstrel>
And wrote an interpreter in Python.
01:04
< ToxicFrog>
"I look forward to your multiple Nobel prizes and/or the overthrow of humanity as a result of this project"
01:04 Derakon [Derakon@Nightstar-f68d7eb4.ca.comcast.net] has left #code []
01:04 Derakon [Derakon@Nightstar-f68d7eb4.ca.comcast.net] has joined #code
01:04
< Derakon>
Whoops.
01:04
< celticminstrel>
No idea why I didn't just write a Befunge interpreter instead. <_<
01:04 * McMartin hands celticminstrel a copy of SpaceChem
01:05
< celticminstrel>
Sure, that'd be nice. ;)
01:05
< McMartin>
Also, "spooky action at a distance" - usually used to mock aspect-oriented features
01:05
< celticminstrel>
Ahhh.
01:05
< McMartin>
Also applies with full force to languages with virtual functions
01:05
< McMartin>
Arguably also with pointer aliasing. >_>
01:05
< Derakon>
How about COME FROM~?
01:06
< McMartin>
COME FROM is the original aspect oriented proposal.
01:06
< celticminstrel>
Pointer aliasing?
01:06
< McMartin>
[*]
01:06
< McMartin>
int foo(int *a, int *b) { *a = 3; *b = 5; return *a; }
01:06
< McMartin>
Returns 3, unless a and b are aliased - that is, that they point to the same location. Then it returns 5.
01:07
< McMartin>
In the general case, deciding whether or not a and b are aliased is an undecidable problem.
01:07
< celticminstrel>
Uh, can't you just check if(a == b)?
01:07
< McMartin>
At compile time?
01:07
< celticminstrel>
Oh.
01:07
< McMartin>
That's the halting problem.
01:08
< McMartin>
(Damn near everything turns out to be the halting problem, in fact; this is not a useful critique~)
01:08
< McMartin>
(The key phrase there is *deciding*)
01:08
< McMartin>
(Coming up with equivalence classes such that if a == b then they are in the same equivalence class is *quite* decidable.)
01:09
< McMartin>
(It's also so general that it is typically utterly useless for global optimization.)
01:09
< McMartin>
(But not always!)
01:10
< McMartin>
At any rate, you can make a claim that the *b = 5 is "spooky action at a distance" there, since something in a completely separate and possibly as-yet-unwritten part of the code affects the return value.
01:10
< McMartin>
Also, time to fill in that footnote
01:11
< McMartin>
[* LISP included some constructs named, IIRC, 'around' as part of its object system. This was functionally equivalent to COME FROM but was much better structured and seriously intended. AspectJ is basically a reimplementation of this fraction of the Common LISP Object System.)
02:16 gnolam [lenin@Nightstar-202a5047.priv.bahnhof.se] has quit [[NS] Quit: Z?]
02:53 Kindamoody[zZz] is now known as Kindamoody
03:23
< sshine>
meh!
03:23
< sshine>
this exercise is provocating me!
03:25
< sshine>
"3: Write a grep(Word) that returns a list of songs containing Word."
03:26
< sshine>
my grep uses a few seconds.
03:26
< sshine>
"4: Write a reverse index from words to lists of songs that contain them."
03:27
< sshine>
there are 5000 words in the test set. i.e. 5000*k. ;-)
03:28<~Vornicus-Latens> by words, you mean actual words, right? So f'rinstance "Spoiler Alert" Would show up with "alert" and not "ale"?
03:29<~Vornicus-Latens> (Or are we doing full wild string search a la winamp?
03:34<~Vornicus-Latens> note that doing 4 makes 3 trivial
03:37
< sshine>
Vornicus-Latens, yeah, full words.
03:37
< sshine>
actually, doing a reverse index of 5000 words and 27000 songs in 2 hours isn't that bad, right?
03:38<~Vornicus-Latens> Um
03:38
< Alek>
don't you mean "provoking"?
03:38
< McMartin>
This should take no longer than the time spent loading in the file containing the song list
03:38
< sshine>
Alek, yes. ;-)
03:39
< McMartin>
s/no longer/no perception of longer/
03:39
< sshine>
right.
03:39
< McMartin>
Run time should be wildly I/O bound.
03:39 Serah [Z@Nightstar-5aa18eaf.balk.dk] has joined #code
03:39
< sshine>
I think the overhead might be list traversal.
03:39
< sshine>
(besides message passing)
03:39<~Vornicus-Latens> Yeah, no, this is io bound.
03:40
< McMartin>
You're doing something *seriously* screwy here if it's taking you 2 hours.
03:41<~Vornicus-Latens> Full index for winamp-style searching is O(nl^2) where l is the length of the longest word, and n is the number of words.
03:41 Stalker [Z@Nightstar-5aa18eaf.balk.dk] has quit [Ping timeout: 121 seconds]
03:41
< celticminstrel>
Why winamp-style?
03:41
< sshine>
Vornicus-Latens, thanks for that info!
03:41
< celticminstrel>
The name, not the concept.
03:42
< sshine>
celticminstrel, I suppose the assumption is that many people know how searching in winamp works.
03:42<~Vornicus-Latens> celticminstrel: Because winamp is a program that a lot of people are familiar with, and it has good search semantics, including live filtering.
03:42
< celticminstrel>
Whereas I have no clue. <_<
03:42
< celticminstrel>
Ah, I see.
03:43<~Vornicus-Latens> (in winamp, you can put in words or word fragments separated by spaces and it will find all the songs with those fragments in them)
03:45
< Phox>
Quite handy, especially considering my playlist is somewhere above 10,000 songs
03:46<~Vornicus-Latens> (it is also Fucking Fast.)
03:47<~Vornicus-Latens> (which says Index)
03:48
< Phox>
Yeah. I think that may be why it's so slow to load the playlist.
03:49
< Phox>
I don't know too much about indexing schemes, but they're usually incremental, no?
03:49<~Vornicus-Latens> no, the index doesn't take long to build, except that you need rather a bit of ram for it sometimes.
03:50<~Vornicus-Latens> In winamp's case I don't think it stores any metadata outside the mp3s, so all that shit it gets, well, it has to open a file and parse tags for each song.
03:53
< celticminstrel>
That's an annoying thing about iTunes; it seems to store some of its metadata in a different place, but when it finds metadata in the actual files, it overrides anything else (meaning you can't change it from within iTunes).
03:54<~Vornicus-Latens> I never had that problem.
03:55<~Vornicus-Latens> anyway, the kitchen and a variety of cleaning supplies call.
03:58
< sshine>
McMartin, I'm extrapolating. a grep takes 3 seconds.
03:59
< McMartin>
That is all kinds of way the fuck too long.
03:59
< sshine>
yeah.
03:59
< celticminstrel>
If you mean in iTunes, you probably never had any files with metadata in them.
03:59
< celticminstrel>
Either that or it was finally fixed.
03:59
< sshine>
I'll try with a regular list fold rather than this framework and see if it'll take significantly less.
04:01<~Vornicus-Latens> http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm ANd make sure you're doing your per-item search the right way, if you're not indexing
04:02
< McMartin>
Vornicus-Latens: Even with complete re-search 3 seconds is way the fuck too long.
04:03<~Vornicus-Latens> btw what language
04:07
< sshine>
hmm... apparently lists:foldl(..., ..., a_27k_list) takes three seconds in itself.
04:08
< McMartin>
That's... genuinely surprising.
04:08
< sshine>
I'll post that.
04:08
< sshine>
parsing the file takes much less time.
04:08
< sshine>
sorry... it takes just about less than a second.
04:08
< McMartin>
In Haskell I can do an Accumulate in less than half a second
04:09
< sshine>
the folding itself takes about .5-1 second.
04:10
< McMartin>
OK, that's more in line with what I'd expect.
04:10
< McMartin>
But if this is a split on full words, this would seem to be doing it wrong
04:11
< sshine>
the function that parses each track during that fold constructs a list for each track, and those lists can be hundred of tuples long.
04:12
< sshine>
s/(?<=hundred)/s/
04:12
< sshine>
okay, so now I know where the time is spent.
04:13
< sshine>
I just need to cut down on all the list making and fold on the binary patterns directly.
04:13
< McMartin>
... heh
04:14
< McMartin>
After evaluating it once, Haskell is all "Oh, I already evaluated that" and thereafter doing the fold is instantaneous
04:14
< sshine>
heh
04:18
< McMartin>
Man.
04:18
< McMartin>
Programming concepts I miss when I don't get to have them: "else" clauses in try or for statements.
04:18<~Vornicus-Latens> What language is this?
04:19
< McMartin>
C++, at the moment.
04:19<~Vornicus-Latens> Ah.
04:19
< McMartin>
I think only Python does "for" "else"
04:19<~Vornicus-Latens> I mean, sshine
04:19<~Vornicus-Latens> Yeah, for/else is great.
04:19<~Vornicus-Latens> Never used try/else though
04:20
< celticminstrel>
try/else is useful; for/else is a touch confusing.
04:20
< McMartin>
for/else is what happens when someone used to functional programming needs to write an iteration...
04:20
< McMartin>
... and needs his base case.
04:20
< celticminstrel>
...wait, what does try/else do again?
04:20
< McMartin>
The else clause is executed, outside of the try block, if no exception was thrown in the try block.
04:20
< celticminstrel>
Ah right.
04:21
< Lingerance>
<McMartin> I think only Python does "for" "else" <-- PHP has had it since at least 4
04:21
< celticminstrel>
For a second I was thinking it was if any exception was thrown.
04:21
< McMartin>
For for/else, the else clause is executed if you did not leave via "break"
04:21
< celticminstrel>
Lingerance: I dunno if that counts; isn't PHP like a parasitic language that tries to add everything new as it becomes popular?
04:22
< Lingerance>
Uhh, PHP 4 is ancient...
04:22
< celticminstrel>
Yeah, that interpretation of for/else seems a bit odd.
04:22<~Vornicus-Latens> the "except" part is for if an exception is thrown, and if an exception is thrown that doesn't match any of the except clauses, it just throws it further up the chain)
04:22
< celticminstrel>
And you can have "except" with no argument to catch any exception, right?
04:22
< celticminstrel>
With no type at least.
04:23
< McMartin>
Python is older than PHP.
04:24
< Derakon>
CM: yes.
04:27
< sshine>
Vornicus-Latens, the language I use for my Map-Reduce framework is Erlang.
04:28 cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code
04:28
< sshine>
celticminstrel, many languages add everything new as it becomes popular. PHP manages to do it in particularly stupid and ugly ways.
04:28
< celticminstrel>
Heh.
04:30
< sshine>
I'm waiting for PHP to get lambda expressions and they decide to do it TCL-style (anonymous functions are really functions with obscure names), or something like that.
04:30
< Lingerance>
PHP has anon functions
04:30
< sshine>
no, I take that back. I'm just going to wait and see how they do it and let them surprise me.
04:30
< Lingerance>
Since 5.3 IIRC.
04:31
< sshine>
oh!
04:31
< Lingerance>
You have to manually tell PHP what variables it can grab from the local scope and let the function use though.
04:31
< celticminstrel>
TCL assigns random obscure names to anonymous functions?
04:32
< sshine>
celticminstrel, TCL doesn't have them, but that's the way some implementations do it.
04:32
< celticminstrel>
Uh, what do you mean?
04:33
< sshine>
celticminstrel, TCL doesn't have anonymous procedures, but you can implement them in the language.
04:33
< sshine>
celticminstrel, TCL is like the string-variant of LISP.
04:33 * McMartin notes in passing that JS totally took a buncha stuff from scheme.
04:34
< sshine>
"everything is a list... unless it's a string, or a number, or something else."
04:34
< sshine>
except a number behaves like a string in most cases. *shrug* old languages.
04:34
< McMartin>
Old languages are strongly typed >_>
04:53 Serah [Z@Nightstar-5aa18eaf.balk.dk] has quit [Ping timeout: 121 seconds]
05:20 Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has joined #code
05:22 Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has joined #code
05:24 cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has quit [[NS] Quit: Well, most things get better when I kick them!]
05:53 kwsn [kwsn@Nightstar-635d16fc.org] has quit [Ping timeout: 121 seconds]
06:03 kwsn [kwsn@Nightstar-635d16fc.org] has joined #code
06:31 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has joined #code
06:35 Derakon is now known as Derakon[AFK]
06:55 celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!]
08:00 Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has quit [Ping timeout: 121 seconds]
08:03 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has quit [Ping timeout: 121 seconds]
08:36 Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has joined #code
09:07 You're now known as TheWatcher
09:08 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has joined #code
09:45 Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has quit [Ping timeout: 121 seconds]
10:04 AnnoDomini [annodomini@FFB3F3.4C5BE8.2014E2.DC0864] has joined #code
11:22 Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has quit [Ping timeout: 121 seconds]
11:24 Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has joined #code
12:08 Kindamoody is now known as Kindamoody|out
12:17 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has quit [[NS] Quit: ]
12:55 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has joined #code
13:23 gnolam [lenin@Nightstar-202a5047.priv.bahnhof.se] has joined #code
14:38 AnnoDomini [annodomini@FFB3F3.4C5BE8.2014E2.DC0864] has quit [[NS] Quit: Away!]
15:12 celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has joined #code
16:01 AnnoDomini [annodomini@60F158.737D66.CA1918.CC7562] has joined #code
16:20 AnnoDomini [annodomini@60F158.737D66.CA1918.CC7562] has quit [[NS] Quit: leaving]
16:27 Stalker [Z@Nightstar-5aa18eaf.balk.dk] has joined #code
17:36 cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code
17:40 Kindamoody|out is now known as Kindamoody
17:51 celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has quit [Connection closed]
18:45 Omega [omegaboot@Nightstar-10752b3e.il.comcast.net] has joined #code
18:45 cpux|2 [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code
18:45 Netsplit *.net <-> *.split quits: cpux, Alek, Namegduf, Kindamoody, gnolam, Rhamphoryncus, Tarinaky_, kwsn, @kazrikna, Stalker, (+6 more, use /NETSPLIT to show all of them)
18:46 Netsplit over, joins: @jerith, @Reiver, Stalker, gnolam, froztbyt1, Derakon[AFK], kwsn, @kazrikna, Lingerance, Rhamphoryncus (+5 more)
18:48 cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has quit [Ping timeout: 121 seconds]
19:00 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has quit [Ping timeout: 121 seconds]
19:05 cpux|2 is now known as cpux[MST3K]
19:11 Netsplit *.net <-> *.split quits: Lingerance, Derakon[AFK], Phox, @Reiver, froztbyt1, kwsn, @kazrikna, Tarinaky_, @jerith, gnolam, (+4 more, use /NETSPLIT to show all of them)
19:11 froztbyte [froztbyte@Nightstar-dc394964.za.net] has joined #code
19:11 Netsplit over, joins: Lingerance
19:11 Netsplit over, joins: jerith, Reiver, kazrikna
19:11 Kindamoody|out [Kindamoody@Nightstar-5507a6b5.tbcn.telia.com] has joined #code
19:11 Netsplit over, joins: Stalker, gnolam, Derakon[AFK], Rhamphoryncus, Phox, Namegduf, Tarinaky_
19:11 ServerMode/#code [+ooo kazrikna jerith Reiver] by *.Nightstar.Net
19:11 459AAA8RO [rhamph@Nightstar-14eb6405.abhsia.telus.net] has joined #code
19:12 Kindamoody|out is now known as Kindamoody
19:14 Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has quit [Ping timeout: 121 seconds]
19:16 kwsn [kwsn@Nightstar-635d16fc.org] has joined #code
19:35 Omega is now known as Alek
19:40 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code
19:43 Kindamoody is now known as Kindamoody[zZz]
20:23 Serah [Z@Nightstar-5aa18eaf.balk.dk] has joined #code
20:24 Stalker [Z@Nightstar-5aa18eaf.balk.dk] has quit [Ping timeout: 121 seconds]
20:56
< kwsn>
every company has that one dept taht's full of screwballs
20:56
< kwsn>
ours seems to be the test engineers
21:01 Serah [Z@Nightstar-5aa18eaf.balk.dk] has quit [[NS] Quit: Into the hole again, we hurried along our way, into a once-glorious garden now seeped in dark decay.]
21:09 cpux[MST3K] is now known as cpux
21:13
<@jerith>
Ours is the Cape Town dev team. Of which I am proudly a member.
21:14
< kwsn>
oh?
21:14
<@jerith>
We're the crazy ones.
21:15
< kwsn>
how so?
21:15
<@jerith>
We wander off and change the world.
21:15
<@jerith>
And we do things like arrive at the Monday ops meeting in ninja gear.
21:23 459AAA8RO is now known as Rhamphoryncus
21:29
<@jerith>
https://twitter.com/DEVOPS_BORAT/status/130003069500010496
21:31
< TheWatcher>
snrk
21:33
< TheWatcher>
(is the horrendous English on there deliberate, or is whoever updates it really that bad. (nb: I work with students, I can't tell anymore))
21:35
<@jerith>
It's Devops Borat. The English is deliberately bad.
21:37
< TheWatcher>
Thank goodness >.>
21:37
<@jerith>
DevOps Borat
21:37
<@jerith>
@DEVOPS_BORAT Kazakhstan
21:37
<@jerith>
Cultural Learnings of DevOps for Make Benefit Glorious Teams of Devs and Ops.
21:37
<@jerith>
See also: http://www.imdb.com/title/tt0443453/
21:41
<@jerith>
http://twitter.com/DEVOPS_BORAT/status/129268121902120960
21:41
< TheWatcher>
Hee
21:43
< McMartin>
Quite possibly my least favorite metaphor.
21:44
< McMartin>
"Ninja" should be reserved for programs that cover their tracks well or interoperate extremely transparently as shims.
21:44
<@jerith>
We had a code ninja at my previous workplace.
21:45
< McMartin>
Did he silently modify code in the dead of night, assassinating the build before anyone knew what had happened?
21:45
<@jerith>
We'd ask him when something was going to be released, and he'd reveal that it had actually been running in productio nfor the past three weeks.
21:45
< McMartin>
Ha ha
21:45
< McMartin>
OK, that is an acceptable use
21:45
<@jerith>
This was a regular occurrance.
21:46
< McMartin>
This implies that the features were either very subtle, or not good enough >_>
21:46
<@jerith>
(To be fair to him, he was working on our hosting setup. We didn't have the infrastructure to test widely outside of production.)
21:47
< McMartin>
(Aha. So is this something where you kind of have panic switches and reverse panic switches, for use during off-hours to see how it works out?)
21:47 Derakon [chriswei@Nightstar-f68d7eb4.ca.comcast.net] has joined #code
21:47
<@jerith>
And the features are things like "can handle hosting for several million websites without falling over".
21:47 * Derakon winces as he quietly pretends to not listen to the heated argument behind him.
21:47 * McMartin suggests shoryukens
21:48
< Derakon>
I don't think that those are an accepted data processing tool.
21:48
< McMartin>
Nonsense!
21:48
< McMartin>
The flowchart never lies!
21:48
<@jerith>
(Mostly, he turned stuff on for a subset of the hosting cluster. As confidence grew, he switched more machines over until it was deployed everywhere.)
21:48
< Derakon>
Heh.
21:48
< McMartin>
("Have we learned anything?" -- YES --> "Really?" -- NO --> "START")
21:49
< McMartin>
jerith: That sounds eminently sensible. One would also need that if one were big enough that no lab is big enough to truly model production beyond smoke tests.
21:49
<@jerith>
Yup.
21:49
< McMartin>
And yeah, that would qualify as "very subtle" here, unless it had been deployed for three weeks and still fell over under the target load.
21:49
<@jerith>
We pretty much did that at EC2 as well, although we had sizeable test infrastructure there.
21:50
<@jerith>
I kept trying to get out of selling domains and lying about financial data and start working with him on the hosting side, but never quite managed it.
21:51 * TheWatcher finishes his second Mediawiki skin, is now probably officially certifiable.
21:52 * Derakon hands TW an official Certificate of Certification, confirming that he is officially certifiable.
21:52 * jerith hands TheWatcher a "Professional Mediawiki Skinner" certificate.
21:55 Stalker [Z@2C3C9C.B2A300.F245DE.859909] has joined #code
22:03 * Derakon eyes http://derakon.dyndns.org/~chriswei/temp2/plot.png
22:04
< Derakon>
The aesthetics here need some work, clearly...
22:08
< gnolam>
http://slashdot.org/story/11/10/27/213231/is-perl-better-than-a-randomly-generat ed-programming-language
22:11
< Derakon>
I linked that yesterday. It pissed TW off.
22:14
< Rhamphoryncus>
The premise sounds really good
22:15
< Rhamphoryncus>
Not the testing of perl. We all know it sucks, anecdotally. The point is you can design tests for language features
22:18
< McMartin>
Whoops
22:18 * McMartin notices he's been testing half his code on the wrong branch
22:18
< McMartin>
... and it worked
22:18
< McMartin>
This is disquieting
22:19 * Derakon discovers that he can't implement a feature nobody wants because the data it depends on has an unknown format and the guy who wrote the program that generates that data doesn't remember the meaning behind that format.
22:19
< Derakon>
Hooray!
22:19
< Derakon>
(s/nobody/nobody but my boss/)
22:21
< gnolam>
The stereo thingy?
22:21
< Derakon>
No, that's done and buried.
22:22
< Derakon>
This is providing a plot of how a given postprocessing procedure has modified your data.
22:22
< Derakon>
My boss has a continual issue with "People are Doing It Wrong, we need to modify our software to force them to Do It Right."
22:22
< Derakon>
Which includes forcing them to look at plots they don't care about.
22:23
< Derakon>
(Except I'm taking "forcing" to mean "I'll provide a button that will display the plot if you care.")
22:23 * jerith is instinctively hostile to that mode of thinking.
22:23
< Derakon>
You can lead a horse to water, but you can't make him drink unless you shove his head beneath the surface!
22:24
<@jerith>
Because I'm atypical enough that the "right" way often doesn't apply to me.
22:24
<@jerith>
Take the argument I had with a doctor about malaria meds today.
22:25
<@jerith>
She wants me to have the weekly one, because I don't have to take a pill every day.
22:25
<@jerith>
I want the daily one, because I can take a pill every day reliably, but will /never/ remember to take the weekly one.
22:26
<@jerith>
(Also, the daily one has listed side effects that I can handle, whereas the weekly one's side effects tend more toward the psychiatrics than the gastric.)
22:31 * McMartin is a little unsure about the reasoning behind the photo for http://arstechnica.com/business/news/2011/10/tor-project-patches-critical-flaw-i n-its-anonymizing-network.ars
22:34 * TheWatcher eyes, can't believe there isn't an established MW extension for rollovers for images, guesses he's going to have to make one, then
22:35
< Derakon>
McM: I guess the broken leg is the flaw and the cast is the patch?
22:35
< TheWatcher>
... yes, I'm a little hazy on the reasoning there, too
22:38
< McMartin>
"We couldn't come up with anything, so YAY PUPPIES" works, I guess
22:59
< McMartin>
Heh. "It's a torrier, obv"
23:00
< TheWatcher>
23:00
< ToxicFrog>
23:07 celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has joined #code
23:10 * McMartin asked the question in several channels - that was the best answer he got.
23:12 Derakon [chriswei@Nightstar-f68d7eb4.ca.comcast.net] has quit [[NS] Quit: leaving]
23:23 You're now known as TheWatcher[T-2]
23:26 You're now known as TheWatcher[zZzZ]
23:30 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has joined #code
--- Log closed Sat Oct 29 00:00:01 2011
code logs -> 2011 -> Fri, 28 Oct 2011< code.20111027.log - code.20111029.log >

[ Latest log file ]