code logs -> 2011 -> Wed, 16 Nov 2011< code.20111115.log - code.20111117.log >
--- Log opened Wed Nov 16 00:00:47 2011
00:10 You're now known as TheWatcher[T-2]
00:20 You're now known as TheWatcher[zZzZ]
01:10
< AD[Shell]>
gnolam: The email talk was fun.
01:12
< gnolam>
Yep. I understand if people TL;DW it, but it sucked me in within a couple of minutes.
01:12
< gnolam>
"RFC 1341: A Tragedy in Multiple Parts"
01:15
<@Namegduf>
XD
01:17 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has quit [Ping timeout: 121 seconds]
01:20
< gnolam>
(One of many amusing slide titles in that talk)
01:25 * AD[Shell] goes sleep.
01:36 Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has joined #code
01:44 Red_Queen [Z@2C3C9C.B2A300.F245DE.859909] has joined #code
01:44 Stalker [Z@2C3C9C.B2A300.F245DE.859909] has quit [Client closed the connection]
01:45 cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code
01:51
<@McMartin>
...
01:51 * McMartin eyes himself
01:51
<@McMartin>
"I'm bored. I wonder if there are lexer and parser generators for Scheme"
01:58<~Vornicus> McM, you are a strange being.
02:02
<@Derakon>
Is he Many Fingers?
02:09<~Vornicus> Not quite that strange.
02:21 gnolam [quassel@Nightstar-202a5047.priv.bahnhof.se] has quit [[NS] Quit: Z?]
02:29 Kindamoody[zZz] is now known as Kindamoody
03:01
< Rhamphoryncus>
McMartin: bored enough to debate the nuances of continuations with me?
03:05
<@McMartin>
I'm multitasking, but I can try.
03:07 kazrikna [kazrikna@A2420A75:F41E11E6:88049228:B8D4A76D] has quit [Ping timeout: 121 seconds]
03:08 Derakon is now known as Derakon[AFK]
03:09 kazrikna [kazrikna@Nightstar-843a343b.arkaic.com] has joined #code
03:29 Derakon[AFK] is now known as Derakon
03:30
< Rhamphoryncus>
Other programming channel I'm in finally perked up on the subject :)
03:31
< Rhamphoryncus>
right now I just need to figure out the signature for functions and continuations, as opposed to actually declaring a function
03:33
<@McMartin>
You'll have to back up a bit. What are you doing with continuations?
03:36
< Rhamphoryncus>
Heh sorry. Designing my own programming language. I'm using escape continuations to provide multiple return paths from a function, as an alternative to exceptions.
03:36
<@McMartin>
OK, so, an escape continuation is one that respects stack discipline and thus can only be used once, more or less?
03:36
< Rhamphoryncus>
yup
03:37
<@McMartin>
Is your language primarily imperative or functional? That is, is "prepare an escape" a statement or an expression?
03:37
< Rhamphoryncus>
imperative
03:38
< Rhamphoryncus>
My background is mostly C and Python
03:38 * McMartin nods
03:38
<@McMartin>
Hm.
03:38
<@McMartin>
So, this could go several ways.
03:38
<@McMartin>
This is primarily for alternate return types, right?
03:38
<@McMartin>
Is the idea that if you make an alternate return, it goes somewhere else, or that it returns a special value?
03:38
< Rhamphoryncus>
In practice it'll look similar to an exception handler. Here:
03:38
< Rhamphoryncus>
On Tue, Nov 15, 2011 at 20:10, Lotus Petal <templeofthelotuseater@hotmail.com> wrote:
03:38
< Rhamphoryncus>
> That is crazy! No one noticed?
03:38
< Rhamphoryncus>
>
03:38
< Rhamphoryncus>
> What brought on the anxiety?
03:38
< Rhamphoryncus>
> -----Original Message-----
03:39
< Rhamphoryncus>
> From: Adam Olsen <rhamph@gmail.com>
03:39
< Rhamphoryncus>
> Date: Wed, 16 Nov 2011 02:53:04
03:39
< Rhamphoryncus>
> To: <templeofthelotuseater@hotmail.com>
03:39
< Rhamphoryncus>
> Subject: Re: Hi ;)
03:39
< Rhamphoryncus>
>
03:39
< Rhamphoryncus>
> Nope. Self-diagnosed aspergers at 17 (soon followed by proper
03:39
< Rhamphoryncus>
> diagnosis, so I could get on AISH.) Anxiety and depression I've only
03:39
< Rhamphoryncus>
> been getting treated for for under a year.
03:39
< Rhamphoryncus>
>
03:39
< Rhamphoryncus>
gah, wtf
03:39
< Rhamphoryncus>
nope, select and middle-click is broken x_x
03:39
<@McMartin>
OK, clear your buffer, let's try again
03:39
<@McMartin>
Is the idea that if you make an alternate return, it goes somewhere else, or that it returns a special value?
03:39
< Rhamphoryncus>
x := my_leaf_or_branch
03:39
< Rhamphoryncus>
x.dispatch()
03:39
< Rhamphoryncus>
unless Leaf(leaf y): ...
03:39
< Rhamphoryncus>
unless Branch(branch y): ...
03:40
<@McMartin>
OK.
03:40
<@McMartin>
Is your C good enough to know setjmp/lngjmp?
03:40
< Rhamphoryncus>
oh, and that should be leaf &y, branch &y instead. It's a borrowed reference, actually the same object as x. Not that it matters here
03:40
< Rhamphoryncus>
yup
03:41
<@McMartin>
OK
03:41
< Rhamphoryncus>
And good enough to never use them ;)
03:41
<@McMartin>
A pity, because those are quite close to continuations~
03:41
< Rhamphoryncus>
Yeah
03:42
<@McMartin>
x.dispatch() is basically token = setjmp(); switch (token) { 0: x(); break; leaf_code: ...; branch_code: ... }
03:42
< Rhamphoryncus>
I may actually use them to implement this language, when aborting system calls, but that's another matter
03:42
< Rhamphoryncus>
kinda yeah
03:42
<@McMartin>
In Scheme, if you're using call/cc for escape, you use (call/cc f) in the middle of an expression
03:42
<@McMartin>
That calls f with a callable argument we can call "throw"
03:43 * Rhamphoryncus nods
03:43
<@McMartin>
If f evaluates to something, the call/cc returns that something.
03:43
<@McMartin>
But if you evaluate (throw 'x) it returns x instead.
03:43
<@McMartin>
So it's a super-return.
03:43 * Rhamphoryncus nods
03:44
<@McMartin>
If you do exceptions with it, you have it evaluate normally to, say, a pair of ('success . val), and exceptionally to ('exception-name . details)
03:44
<@McMartin>
The latter being what you pass as the argument to throw
03:44
< Rhamphoryncus>
So as a return you could use a tuple for multiple values, whereas I'm making it more like a function call and accepting multiple named arguments
03:44
<@McMartin>
(don't call it throw; throw and catch are usually macros for exactly this ~)
03:44
<@McMartin>
Generally you use lexical scoping in Scheme to get aroudn that.
03:44
<@McMartin>
*around that
03:45
<@McMartin>
(define (f a b c) (call/cc (lambda (throw) (if (= c 0) (throw ('divide-by-zero)) (cons 'success (/ (+ a b) c))))))
03:47
< Rhamphoryncus>
My brain won't parse that ;)
03:48
< Rhamphoryncus>
doesn't matter though
03:48
<@McMartin>
The key part is that the lambda being call/cc'd gets to refer to the arguments a, b, and c
03:48
<@McMartin>
So basically Scheme, like honey badger, doesn't give a shit that call/cc only works on functions of one argument which is a continuation, itself of one argument
03:48
<@McMartin>
It can just run in a closure that has the arguments.
03:49
< Rhamphoryncus>
Doesn't that just get arguments in to f, not out through the continuation?
03:49
<@McMartin>
The continuation, when called, kicks you *back into f*
03:50
<@McMartin>
The lambda is defined inside of f, and thus gets access to f's environment - that's how closures roll.
03:50 cpux|2 [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code
03:50 cpux|2 [cpux@Nightstar-c5874a39.dyn.optonline.net] has quit [[NS] Quit: KVIrc 4.0.4 Insomnia http://www.kvirc.net/]
03:50
< Rhamphoryncus>
err, we're confused then. The lambda is the inner function? How do you get values out of the lambda? That's what I'm asking
03:51
<@McMartin>
Well, one of two ways
03:51
<@McMartin>
Either you return it...
03:51
<@McMartin>
in this case, a pair (success . 12) or whatnot...
03:51 SmithKurosaki [smith@Nightstar-e26015c4.home1.cgocable.net] has joined #code
03:51
<@McMartin>
Or because you called the continuation function, which we named "throw" in that.
03:51
<@McMartin>
Let me first make sure this thing actually works, idly~
03:52
<@McMartin>
A slight mistake
03:52
<@McMartin>
(define (f a b c) (call/cc (lambda (throw) (if (= c 0) (throw '(divide-by-zero)) (cons 'success (/ (+ a b) c))))))
03:53
<@McMartin>
Let's break this down
03:53
<@McMartin>
(define (f a b c)
03:53
<@McMartin>
This is a function of three arguments.
03:53
<@McMartin>
Named f
03:53
<@McMartin>
(call/cc
03:53
<@McMartin>
All f does is make a call/cc call; whatever call/cc ends up returning, f returns.
03:54
<@McMartin>
The function that call/cc is calling takes one argument, which can be named whatever we want. I named it throw, but that might more heat than light; let's call it "cont" instead.
03:54
<@McMartin>
(lambda (cont)
03:54
<@McMartin>
(if (= c 0)
03:54
<@McMartin>
(cont '(divide-by-zero))
03:55
<@McMartin>
(cons 'success (/ (+ a b) c))
03:55
<@McMartin>
)
03:55
<@McMartin>
)
03:55
<@McMartin>
)
03:55
<@McMartin>
If c isn't zero, it computes this thing (with cons) that involves dividing by c.
03:56
<@McMartin>
That is the value of the function in that case, and since it's what the function returns, it's what call/cc returns, and so it's what f returns.
03:56
<@McMartin>
With me so far?
03:56
< Rhamphoryncus>
alright
03:57
<@McMartin>
If c *is* zero, it invokes the continuation, which works more or less just like lngjmp; it's a super-goto that replaces the whole call stack with the one right were you were taking the return value of call/cc
03:57
<@McMartin>
So by calling (cont '(divide-by-zero)), that is, with the constant list "(divide-by-zero)", you make call/cc return immediately with that constant list as the return value - with is then what f returns.
03:58
< Rhamphoryncus>
so the call/cc expression returns either the normal success value or the divide-by-zero
03:58
<@McMartin>
Now here, that's kind of pointless, becuase you could just *evaluate to* '(divide-by-zero) instead of bothering with a continuation at all.
03:58
<@McMartin>
Right
03:58
<@McMartin>
There's two more steps of complexity before this discussion is done, but step by step we go.
03:58
<@McMartin>
Is all this OK so far?
03:58
< Rhamphoryncus>
yup
03:58
<@McMartin>
OK
03:59
<@McMartin>
In Scheme, (if condition then-value else-value) isn't a statement; it's functionally identical to condition ? true-value : else value in C.
03:59
<@McMartin>
So now we can put the continuation call *in the middle of the expression, like so:
03:59
<@McMartin>
(cons 'success (/ (+ a b) (if (= c 0) (cont '(divide-by-zero)) c)
03:59
<@McMartin>
Now, it's in the middle of computing (a + b / c)
04:00
<@McMartin>
At the point it hits the denominator for divide, it checks the value of c, and just uses it if it's not zero
04:00
<@McMartin>
But if it *is* zero, it calls the continuation, which *aborts the divide entirely*, jumping you right back up to that point where call/cc was made.
04:00
<@McMartin>
This would be true no matter how far down the call stack you were, even though here it's just one.
04:01
< Rhamphoryncus>
yeah
04:01
<@McMartin>
Still with me?
04:01
< Rhamphoryncus>
comparable to a multi-level break (but more general of course)
04:01
<@McMartin>
Yeah, I'm not going to get into what happens when you can call these things multiple times.
04:01
<@McMartin>
With escape continuations, making the call to the continuation takes you out of the scope *of* the continuation.
04:02
<@McMartin>
You can't set it to a global variable and then call it *again* in your language - this is the thing you're trying to get away from, with setjmp/longjmp.
04:02 * Rhamphoryncus nods
04:02
<@McMartin>
(In Scheme, this is A-OK and occasionally even a good idea, but then they aren't escape continuations anymore)
04:03
<@McMartin>
A more fun case for Scheme is one where you put it in a utility function. You know about map?
04:03
< Rhamphoryncus>
yeah
04:03
<@McMartin>
You've mentioned python; it stole it from Lisp, so.
04:03
<@McMartin>
OK, so, here's our next trick.
04:03
< Rhamphoryncus>
prefer listcomps, but whatever
04:03
<@McMartin>
Yeah, scheme doesn't have those, so
04:04
<@McMartin>
We're going to take a list and take the reciprocal of each element, if this is possible. If it's not possible for any element, instead of returning the list, we return false (or #f, as Scheme would have it)
04:04
<@McMartin>
(define (reciplist l) (call/cc
04:05
<@McMartin>
(lambda (ret) (map (lambda (x) (if (= x 0) (ret #f) (/ 1 x))) l)
04:05
<@McMartin>
))
04:05
<@McMartin>
Now, the internal lambda calls map on the list, which calls the internal lambda on each element
04:06
<@McMartin>
That lambda, if it finds a zero, calls the continuation, which then cuts the call stack all they back up to reciplist (call/cc returns #f).
04:06
<@McMartin>
If that doesn't happen, then call/cc returns the value of map, which is a list of numbers.
04:06
< Rhamphoryncus>
yeah
04:07
<@McMartin>
So that's the other way of doing escape continuations I know of, besides the setjmp/longjmp approach.
04:07
< Rhamphoryncus>
It's interesting to see some of the specifics, rather than just the general concepts
04:07
<@McMartin>
Since it drops you into the middle of a computation - there's nothing stopping you from putting (call/cc ...) in the middle of adding a list of numbers - it may not fit well with structured exceptions.
04:08
< Rhamphoryncus>
Of course I *have* to do it differently ;)
04:08
<@McMartin>
Rhamphoryncus: I literally only got this call/cc stuff two days ago.
04:08
< Rhamphoryncus>
lol
04:08
<@McMartin>
(There was this incredibly bizarre sequence that uses multiply-invoke continuations to do automatic backtracking that I finally worked out)
04:09
<@McMartin>
(It uses independently existing call stacks to handle backtracking state while they all assign a global variable that is a callable function)
04:09
<@McMartin>
(It is hilarious madness)
04:09
< Rhamphoryncus>
Yeah.. I don't think I need to learn that today ;)
04:09
< SmithKurosaki>
Ahoy!
04:09
<@McMartin>
You are explicitly designing your language to make this impossible~
04:09
< Rhamphoryncus>
yup
04:09
<@McMartin>
Hi SK
04:10
< SmithKurosaki>
How has everyone over here been?
04:10
< Rhamphoryncus>
I've been good. You?
04:10
<@McMartin>
Learning secrets beyond the ken of mandkind
04:10
<@McMartin>
*mankind
04:10
< SmithKurosaki>
Damn
04:10
<@McMartin>
The call/cc thing over the past five or six pages is one of the standard Deep Mysteries
04:11<~Vornicus> I've always preferred the formation "beyond mortal ken"
04:11
<@McMartin>
Sadly, some of them have been recently proven mortal
04:11
< SmithKurosaki>
Question: know of any reason NS would forget I was registered?
04:12<~Vornicus> If you don't log in for like a month it does that.
04:12
< Rhamphoryncus>
So, despite all that background my actual task is rather mundane: deciding on syntax for first class function signatures
04:14
< SmithKurosaki>
Oh lame
04:14
< SmithKurosaki>
THanks for info at least
04:15
<@McMartin>
Rham: I'd go with function(type, type):type as the easiest to parse unambiguously
04:16
< SmithKurosaki>
Huzzah, re-regged
04:16
< Rhamphoryncus>
This is the example I came up with a couple hours ago: def foo() -> Integral return, (int, float) & foo
04:16
< Rhamphoryncus>
okay, I used foo twice there x_x
04:17
< Rhamphoryncus>
def foo() -> Integral return, (int, float) & bar
04:17
< Rhamphoryncus>
The idea is that the default return is just a special case of the continuations the function accepts, so it's on the list
04:18
<@McMartin>
What's the & for?
04:18
< Rhamphoryncus>
borrowed reference
04:18
<@McMartin>
OK, so
04:18
< Rhamphoryncus>
So (int, float) is a function signature, & makes it borrowed, and bar is the name
04:20
< Rhamphoryncus>
the (int, float) part makes me squick because it *looks* ambiguous. I don't know if I could technically parse it, I don't think I care.
04:22 Kindamoody is now known as Kindamoody|breakfast
04:24
< Rhamphoryncus>
Do you see my problem?
04:26
< SmithKurosaki>
So, I wish to embark on the path of relearning C at the very least
04:26
< Rhamphoryncus>
SmithKurosaki: my sympathies
04:27
< SmithKurosaki>
I only got 2 years of it in university, along with a semester of java and some side lessons on lua. I wish to brush up and expand to maybe open up some job opportunitiews
04:29
< Rhamphoryncus>
I could rant about C for hours. Even answer useful questions.
04:31
< SmithKurosaki>
I don't have any particular use in mind, I just want to be able to use it again
04:32
< SmithKurosaki>
I supposed I could purpose it for proj euler again, but I also think I was doing those in lua before
04:33
< Rhamphoryncus>
write an IRC bot. It's traditional ;)
04:34
< Rhamphoryncus>
.. come to think of it, I never really FINISHED writing an IRC bot. Dissatisfaction with the language has ultimately led into.. designing my own
04:34<~Vornicus> I wrote an IRC dicebot once
04:34
< Rhamphoryncus>
(ditto writing a httpd)
04:34<~Vornicus> And a programming language of sorts to go with it
04:35
< kazrikna>
heh. I still have that on my system too.
04:35
< Rhamphoryncus>
I wrote a dicebot plugin for supybot. Still run it on sorcerynet
04:35
< Rhamphoryncus>
it.. has users.. o.O
04:35<~Vornicus> Schlockian is a horror
04:35<~Vornicus> As is appropriate coming from me, but it took the ternary operator to its logical conclusion.
04:36
< Tamber>
the 'dwim' operator?
04:36<~Vornicus> Hah
04:36
< Rhamphoryncus>
Hum. Writing an IRC bot also lead to designing an alternative to IRC, to fix some of the underlying design flaws (like the spanning tree)
04:36
< kazrikna>
NOD.
04:36
< kazrikna>
ugh. darn caps lock.
04:36
< SmithKurosaki>
I need to get TF to remind me how to do my lua hilight plugin
04:36
< Tamber>
Rhamphoryncus: mesh network? :p
04:36 Red_Queen [Z@2C3C9C.B2A300.F245DE.859909] has quit [Ping timeout: 121 seconds]
04:36
< Rhamphoryncus>
Tamber: something like that
04:37
< SmithKurosaki>
I've never written a bot before
04:37
< Tamber>
Funny, seems to be a common thought for improvements, that.
04:37<~Vornicus> But here's the euclidean algorithm in it: b>0@s=a%b;a=b;b=s.a`
04:37
< Tamber>
Vornicus, ... that's... impressive.
04:37<~Vornicus> It was designed to be a Terse Motherfucker
04:37
< Tamber>
And it succeeds.
04:38 * kazrikna ponders starting it up.
04:38
< SmithKurosaki>
wtf?
04:38
< SmithKurosaki>
Also, Tamber, you don't play eve, do you?
04:38
< Tamber>
I do not, no.
04:38
< Rhamphoryncus>
Oooh heh, maaaany years back I was screwing around with mIRC scripting. I wanted a command to create a separate server connection, found a "connect" command, but it was actually raw TCP (not IRC), so in the process of getting it working I unwittingly wrote an IRC client in mIRC
04:38
< Tamber>
...XD
04:38
< SmithKurosaki>
Ok. (There was a rather space-famous player named T'Amber, hence the question
04:39<~Vornicus> The code itself Failed Compatibility when python introduced booleans
04:39 Yosuke [yosuke@Nightstar-2077ca9c.arkaic.com] has joined #code
04:39
< kazrikna>
!pice 1d5
04:39
< Yosuke>
Dice Rolled For kazrikna: 1d5 (1d5: 1 = 1) = 1
04:39
<@Derakon>
Pice?
04:39<~Vornicus> !pice 1D5
04:39
< Yosuke>
Dice Rolled For Vornicus: 1D5 = 3
04:39<~Vornicus> pice, because it had to compete with other dicebots who would also respond to !dice
04:39
< kazrikna>
There was another !dice bot in the channel it was in. :)
04:40
<@Derakon>
Ah.
04:40
< kazrikna>
and it used to be called "Precis"
04:40
< SmithKurosaki>
!pice 4d12
04:40
< Yosuke>
Dice Rolled For SmithKurosaki: 4d12 (4d12: 11 8 9 3 = 31) = 31
04:40
< SmithKurosaki>
Huzzah!
04:40<~Vornicus> But yeah, I managed to get a surprising amount working. The lexer is a 200ish character regex.
04:41
< SmithKurosaki>
I kind of wouldn't mind writing one that can talk back either, but I think that's more a python thing
04:41
< Rhamphoryncus>
If I wrote a bot that talked back it'd turn into a full blown neural network experiment x_x
04:42
< SmithKurosaki>
But I think step one is getting back into euler so I can remind self of basics
04:42
< SmithKurosaki>
Heh
04:42
<@Derakon>
Rhamph: are you familiar with Bucket, the #xkcd bot?
04:42
< Rhamphoryncus>
nope
04:42
<@Derakon>
It's pretty impressive.
04:42
<@Derakon>
Check out http://www.xkcdb.com/ and you should get some idea of its capabilities.
04:43
<@Derakon>
But basically it's a combination trivia store ("Bucket: <personname> is a punk") and free-association bot.
04:43 Kindamoody|breakfast is now known as Kindamoody
04:43
< SmithKurosaki>
o.0 xkcd bot?
04:43
<@Derakon>
Plus a bunch of pattern-based reactions, e.g. rare three-word combinations may get "<combination> would be a good name for a band".
04:43
< Rhamphoryncus>
heh
04:43
< SmithKurosaki>
Heh
04:43
<@Derakon>
Or phrases that include words starting with "ex" are repeated with an 's' strategically inserted.
04:44
< SmithKurosaki>
hee
04:44
< Rhamphoryncus>
http://www.xkcdb.com/?8505
04:45
<@Derakon>
Yeah, there's a bunch of responses for people saying "..." too.
04:46
< SmithKurosaki>
Anyways, I shall return tomorrow, I require sleep
04:46
< Rhamphoryncus>
ahh, hardcoded list, eh?
04:46
< Rhamphoryncus>
Well, amusing, but not really AI-awesome
04:46
<@Derakon>
Night, SK.
04:46
<@Derakon>
Rhamph: a lot of it's hardcoded, yeah.
04:47
< Rhamphoryncus>
I'd want to use a ginormous neural network (couple billion dollars worth), lots of experimental image/shape/concept processing, and access to google's youtube, wikipedia, book, and general web databases. Let it leaaaarn
04:48
<@Derakon>
That's...not an IRC bot.
04:48<~Vornicus> We met that, sort of.
04:48
<@Derakon>
That's an attempt to solve the Turing problem the hard way.
04:48
<@Derakon>
s/problem/test/
04:48<~Vornicus> I, for one, welcome our new computer overlords.
04:49
< Rhamphoryncus>
That's not solving the turing problem. That's teraforming the planet because you don't like the colour your house is painted.
04:50
< Rhamphoryncus>
And I bet someone will do it eventually :P
05:02 Stalker [Z@2C3C9C.B2A300.F245DE.859909] has joined #code
05:47 Kindamoody is now known as Kindamoody|out
05:59 Derakon is now known as Derakon[AFK]
06:09 SmithKurosaki [smith@Nightstar-e26015c4.home1.cgocable.net] has quit [Ping timeout: 121 seconds]
06:09 ErikMesoy|sleep is now known as ErikMesoy
06:10
< Tamber>
Rhamphoryncus, Sure, sounds like a fun weekend project. ;)
06:10
< Rhamphoryncus>
hehe
06:23 Stalker [Z@2C3C9C.B2A300.F245DE.859909] has quit [Ping timeout: 121 seconds]
06:47 * McMartin ponders writing a lexer in Scheme.
06:47
<@McMartin>
I could totally use call/cc for this, to do "try X and then escape if it worked" for all Xs in sequence.
07:25 Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has joined #code
07:37 Yosuke [yosuke@Nightstar-2077ca9c.arkaic.com] has quit [Connection closed]
07:41 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!]
07:48 You're now known as TheWatcher
08:06 Vornotron [vorn@ServerAdministrator.Nightstar.Net] has joined #code
08:07 Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
08:21
< Rhamphoryncus>
augh, spacechem hurts my brain
08:26
< Rhamphoryncus>
tasking myself with combining an optimal mix of neon (10) and hydrogen (1) into plutonium (94). In a single reactor. The syncs on that would be *painful*, if even possible
08:28
<@McMartin>
One might even say it's giving you a case of exploding head syndrome
08:28
< Rhamphoryncus>
:P
08:28
<@McMartin>
It is possible to entirely automate the sequence.
08:28
<@McMartin>
It is also possible to nearly entirely automate it
08:28
< Rhamphoryncus>
I'm missing the trick then
08:28
<@McMartin>
Or you can hand-craft your plutonium proton by proton, like I did. =P
08:28
<@McMartin>
Also, man
08:29
<@McMartin>
I am so very much missing Haskell's gigantically powerful prelude.
08:29
< Rhamphoryncus>
That'd require 94 hydrogen. How do you get it to stop at 94?
08:29
<@McMartin>
Did you not catch the "hand-craft" part =P
08:29
<@McMartin>
I had a switch; basically, my fusion reactor said "increase the atomic number of this atom until I tell you to stop"
08:30
<@McMartin>
This is total sleaze, and you should probably try something cleverer~
08:30
< Rhamphoryncus>
ahh right, the controls are hidden from the map
08:30
< Rhamphoryncus>
I was blindly assuming they weren't available
08:31
<@McMartin>
Every defense mission has manual override switches. It's a key aspect of all defense missions.
08:31
< Rhamphoryncus>
yeah
08:33
< Rhamphoryncus>
Sounds like my best bet
08:47 * McMartin gets most of a lexer working in Scheme
08:47
<@McMartin>
This code is horrible -_-
08:51
< Rhamphoryncus>
oh damn. Can't fuse a hydrogen with nothing to have it transfer over :P
08:52
< Rhamphoryncus>
that breaks my timing belt, heh
09:02
<@TheWatcher>
Ah, spacechem
09:02 gnolam [lenin@Nightstar-202a5047.priv.bahnhof.se] has joined #code
09:02
<@TheWatcher>
Amazes me how a game that, on the surface, appears so simple, but is actually so maddeningly difficult, yet addictive...
09:03
< Rhamphoryncus>
indeed
09:03
< Rhamphoryncus>
All the difficulty being imparted by the limited resources
09:08
< gnolam>
?
09:11 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has joined #code
09:12
< Rhamphoryncus>
gnolam: spacechem
10:12 Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has quit [Ping timeout: 121 seconds]
11:05
< gnolam>
Reposted from JustBob: http://img401.imageshack.us/img401/5615/engineering.jpg
11:05
< Tamber>
hehehehe
11:08
< gnolam>
Oh dear. It's documentation time.
11:08
< gnolam>
STOP! MANUAL TIME!
11:27
< AD[Shell]>
Haha.
11:39 kwsn [kwsn@Nightstar-635d16fc.org] has quit [Ping timeout: 121 seconds]
11:40 kwsn [kwsn@Nightstar-635d16fc.org] has joined #code
12:37 Kindamoody|out is now known as Kindamoody
12:48 celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has joined #code
12:50 Kindamoody is now known as Kindamoody|out
15:04 Stalker [Z@Nightstar-3602cf5a.cust.comxnet.dk] has joined #code
15:19 Kindamoody|out is now known as Kindamoody
16:20
< gnolam>
https://twitter.com/mikko/statuses/136090183857745920
16:28 Kindamoody is now known as Kindamoody|afk
16:35 Rhamphoryncus [rhamph@Nightstar-14eb6405.abhsia.telus.net] has quit [Client exited]
16:48 Kindamoody|afk is now known as Kindamoody
17:03
<@TheWatcher>
Dear Opera: when I tell you to fucking reload the stylesheet file, I mean reload the stylesheet file. I do not mean "always use the cached version". I thought we had got past this problem.
17:15
< kwsn>
hehe
17:40 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has quit [Ping timeout: 121 seconds]
18:12 Kindamoody is now known as Kindamoody[zZz]
18:44 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [[NS] Quit: ]
18:53 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
18:54 Syloqs_AFH is now known as Syloqs-AFH
19:53 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
19:58 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
19:59 Syloqs_AFH is now known as Syloqs-AFH
19:59
< ErikMesoy>
What the bleep. I got a spare monitor from my father. It has no - repeat no - x800 setting. It can do x600 and x720 and x768 and x864 and x900 and x960 and x1600 and a host of others besides (with various horizontal dimensions too), but not 800 pixels vertical.
20:00
< kwsn>
haha
20:05
< ErikMesoy>
And curiously, plugging in the extra monitor makes my laptop think that the laptop screen's possible resolutions have changed.
20:10
< ErikMesoy>
The new monitor is also an egoistic retard, it insists on being the primary device.
20:11
< ErikMesoy>
Setting the laptop screen as primary device results in the laptop screen going black and the spare monitor screen showing "This is the primary device." with the classic dialog box "Do you wish to keep these settings? Restoring in 15... 14..."
20:17
< gnolam>
The first is perfectly natural - if the laptop's set to clone the display.
20:18
< gnolam>
The second and third... well, do you have one of those external display/projector buttons?
20:19
< ErikMesoy>
Not on the laptop. There's a button with an arcane rune on the external monitor that might be it.
20:19
< ErikMesoy>
Nope, that button brings up config menu.
20:21
< ErikMesoy>
Oh, now I see. The reason the laptop thinks that the laptop screen's configurability has changed is that screens [1] and [2] sometimes have the same name. The laptop is thinking it has two copies of the external monitor and none of the laptop monitor.
20:23
< ErikMesoy>
Rargh. What the hell. Well, my available screen real estate has expanded so I'm going to stop complaining for a bit.
21:14 RichardBarrell [richard@Nightstar-3b2c2db2.bethere.co.uk] has joined #code
21:31 Derakon [chriswei@Nightstar-f68d7eb4.ca.comcast.net] has joined #code
21:31
< Derakon>
So we have a positively ancient computer that's only around because it has ISA slots, one of which is needed to talk to a correspondingly ancient-but-vital piece of hardware that's tightly integrated into the rest of the microscope.
21:32
< Derakon>
The computer's slowly dying, so we found a supplier who makes modern computers that nonetheless have ISA slots.
21:32
< Derakon>
We got one, installed Windows 2000 on it, and set to work installing drivers...only to discover that the company that made that ancient ISA card, naturally enough, doesn't support it any more (they prefer the USB version, which is incompatible with our hardware).
21:33
< Derakon>
After some wrangling, they sent us what they have...which is a third-party program for talking to lineouts, and some source code.
21:34
< Derakon>
At this point, I'm seriously wondering about the feasibility of finding the relevant files on the old computer and copying them into the new one, because figuring out how to compile this by hand does not strike me as an enjoyable task.
21:36
< Derakon>
No clever insights?
21:40
<@jerith>
How hard would it be to update the hardware that's incompatible with the USB version of the whatsit?
21:43
< Derakon>
We'd have to rip apart a central part of the microscope and replace it with new equipment.
21:43
< Derakon>
A Major Project, in other words.
21:44
< Derakon>
(Also I seriously doubt my boss would go for it)
21:44
<@jerith>
What's the nature of the incompatability, if I may ask?
21:47
< Derakon>
The device in question is a "stage" -- it's what we mount the sample on, and it moves the sample with respect to the viewpoint.
21:47
< Derakon>
...oh, the incompatibility? I don't know exactly; they basically upped to the next version of the device, which entailed hardware changes on both ends.
21:47
< Derakon>
(That is, both on the computer -- which went from ISA to USB, and on the stage itself)
21:48
< Derakon>
Presumably at bare minimum the connection between the computer and the stage has been changed from serial to USB.
21:48
<@jerith>
You get serial-to-usb thingies. They're generally pretty decent.
21:49
<@jerith>
The parallel-to-usb ones are problematic, because you don't have the tight timing control over the USB link.
21:52
< Derakon>
You're assuming that the physical connection is all that has changed.
21:52
< Derakon>
Our gear is over a decade old now.
21:57
<@jerith>
I'm muttering about some of the things I know about in the absense of sufficient data to mutter about what your problems are. :-P
22:00
< Derakon>
Heh, fair enough.
22:02
< ToxicFrog>
Derakon: does the old computer still have readable drives? Better yet, does it boot? Then recovering the software from that shouldn't be too hard.
22:02
< ToxicFrog>
That said, it may well be a win98 driver or something that 2k won't even load, if it's that old.
22:03
< Derakon>
The old computer is actually still functional.
22:03
< Derakon>
It's just decrepit.
22:03
< Derakon>
And it's running Win2k.
22:03
< Derakon>
So yes, copying the appropriate files off of it is a definite possibility.
22:03
< Derakon>
I've sent an email to our contact with the company asking if he knows which files would need to be copied.
22:06
< Derakon>
(Basically, this is the oldest and, by far, the least-reliable of the systems in the microscope, so we finally after about six months of wrangling convinced our boss to upgrade the computer...but not anything the computer talks to because that would be a gigantic task)
22:19
< RichardBarrell>
Take a disk image from the old computer onto the new one? i.e. run Win98 on the nice new non-flaky hardware.
22:19
< RichardBarrell>
Keep the entire Win98 installation, warts and all.
22:24
< Derakon>
There is no Win98 installation. It's Win2k, on both old and new.
22:25
< Derakon>
Also, I thought dd'ing old images onto new hardware wouldn't work because of e.g. differing hardware IDs.
22:27 ErikMesoy is now known as ErikMesoy|sleep
22:28
< ToxicFrog>
Depends on the specific hardware and the version of windows, but in general no, it won't work
22:28
< ToxicFrog>
(although it is often possible to do it, then boot a recovery disc and fix it enough that it boots)
22:29
< Derakon>
That still sounds pretty dodgy. All else being equal I'd rather have a clean setup from a clean install instead of carrying over all the baggage from the decade-old computer.
22:30 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
22:33
< ToxicFrog>
Yeah, it's more for "we don't have a way of recreating this system from scratch" kind of situations
22:36 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
22:38 Syloqs_AFH is now known as Syloqs-AFH
22:46 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
22:51 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
22:52
< RichardBarrell>
Derakon: I don't suppose that the original driver installer might be lying around on the old hard disk? Look for a .inf file outside of c:\winnt?
22:53 Syloqs_AFH is now known as Syloqs-AFH
--- Log closed Wed Nov 16 23:00:05 2011
--- Log opened Wed Nov 16 23:00:16 2011
23:00 TheWatcher [chris@Nightstar-3762b576.co.uk] has joined #code
23:00 Irssi: #code: Total of 30 nicks [10 ops, 0 halfops, 0 voices, 20 normal]
23:01 Irssi: Join to #code was synced in 49 secs
23:13 Attilla [Obsolete@Nightstar-f29f718d.cable.virginmedia.com] has joined #code
23:15
< AD[Shell]>
http://www.dermstore.com/extend_DermStore_356.htm
23:15
< AD[Shell]>
Scroll down a little bit. :P
23:34 You're now known as TheWatcher[T-2]
23:36 You're now known as TheWatcher[zZzZ]
23:48
< Derakon>
I should probably stop typoing "Windows 200" instead of "Windows 2000".
23:54 AD[Shell] [abudhabi@9D46A2.088371.A474A5.6EEC27] has quit [Ping timeout: 121 seconds]
23:55
< RichardBarrell>
I wonder how likely the universe is to punch me in the face for pretending that read(2) takes and returns intptr_t instead of size_t?
23:55
< RichardBarrell>
Er, not size_t, it's that it returns ssize_t.
--- Log closed Thu Nov 17 00:00:04 2011
code logs -> 2011 -> Wed, 16 Nov 2011< code.20111115.log - code.20111117.log >

[ Latest log file ]