code logs -> 2009 -> Mon, 23 Nov 2009< code.20091122.log - code.20091124.log >
--- Log opened Mon Nov 23 00:00:52 2009
00:16 You're now known as TheWatcher[T-2]
00:22 You're now known as TheWatcher[zZzZ]
00:30 AbuDhabi [annodomini@Nightstar-cba3ab52.adsl.tpnet.pl] has quit [[NS] Quit: Egads.]
00:49 Derakon[AFK] is now known as Derakon
01:27 Attilla [The.Attilla@FBC920.58502B.59021B.52988F] has quit [Connection reset by peer]
01:32 Tarinaky [Tarinaky@Nightstar-102bd586.adsl.virginmedia.net] has quit [Connection closed]
01:32 Tarinaky [Tarinaky@Nightstar-102bd586.adsl.virginmedia.net] has joined #code
01:44 * gnolam stabs all Linux WMS.
01:44
< gnolam>
*WMs.
01:45
< Namegduf>
* Compile wibbles and absorbs the blade like jelly
01:45
< Namegduf>
*Compiz
02:01
<@Vornicus>
Why am I making so many stupid mistakes today/
02:07
<@Derakon>
Oh, sorry, I dialed your IQ down to save energy. Lemme just ramp that back up again...
02:07
<@Derakon>
*bweeeeeeem*
02:08
<@Vornicus>
heh
02:18 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Connection reset by peer]
02:25 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
02:26 Syloqs_AFH is now known as Syloqs-AFH
03:01
<@Vornicus>
Okay. Javascript calculator thingy made. Now all I need to do is set up the interface nicely and it'd be actually useful.
03:16 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?]
03:42 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Connection reset by peer]
03:45
<@Derakon>
Hm. I just found a website that appears to be using Lua to do CGI.
03:45
<@Derakon>
Judging from http://rephial.org/release
03:49 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
03:50 Syloqs_AFH is now known as Syloqs-AFH
04:32 DirePinkhair is now known as ASCIISkull
04:57 Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving]
05:01 Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code
05:01 mode/#code [+o Vornicus] by Reiver
05:19 simon` [simon@FEE8B2.936B30.5A6437.EA7E8B] has quit [Ping timeout: 121 seconds]
05:21 simon` [simon@FEE8B2.936B30.5A6437.EA7E8B] has joined #code
05:27 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code
06:03 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Connection reset by peer]
06:42 Rhamphoryncus [rhamph@Nightstar-a62bd960.abhsia.telus.net] has joined #code
06:51
<@McMartin>
Today's computer science lesson; when the answer you are looking for is around 250 trillion, a linear search starting from 1 is not the way to find this result.
06:51
<@McMartin>
Even if you let it run overnight.
06:51
<@Derakon>
Heh.
06:51
<@Derakon>
Depends on how long it takes to check each value~
06:51
<@McMartin>
That was O(log(n)).
06:52
<@Derakon>
If you wanted the answer in an hour, you'd just have to process 69 billion values per second.
06:59 Derakon is now known as Derakon[AFK]
07:32 AnnoDomini [annodomini@Nightstar-cba3ab52.adsl.tpnet.pl] has joined #code
07:32 mode/#code [+o AnnoDomini] by Reiver
08:05 Vornicus is now known as Vornicus-Latens
08:26<~Reiver> Could it be binary searched?
08:41
<@McMartin>
Unnecessary; this was a PE problem and one can use Cunning Tricks to lower the search space to a few thousand.
08:53<~Reiver> I was actually pondering the binary search as a method *for* lowering the search space, but yeah
08:53 * Reiver actually ponders: Is that a valid sneaky trick? Having a binary search that doubles on its way up till it overshoots the target, then searches the space back down?
08:54
<@McMartin>
That's not really a "binary search" per se, since you're supposed to start in the middle
08:54
<@McMartin>
However, this one was not that convenient, as it was "find the Xth number with property Y".
08:54<~Reiver> Yeah, I was trying to think what you'd call it when you did exponential increments from the start to determine where the middle should /be/
08:54
<@McMartin>
So I needed to get *all* numbers less than O(WTF) with property Y.
08:55<~Reiver> aha, yeah
08:55<~Reiver> Still, my question stands; if not as a solution then as an interesting question of its own.
08:55 You're now known as TheWatcher
08:55
<@McMartin>
It seems like a technique, since once you overshoot, it and the last thing you tried are your new bounds.
08:56
<@McMartin>
Then you can binary-search in those bounds.
08:56<~Reiver> That is, so you go 1 2 4 8 16 etc, all the way up to your "1024? Too small. 2048? Too small. 4096? Ding! Too big, commense search between 2048 and 4096."
08:56<~Reiver> Yeah, bingo
08:57<~Reiver> Basically I was trying to think of a reasonably efficient method of 'searching' for a value that you can't back-calculate, which could be arbitarily large or small.
08:58<~Reiver> It strikes me as somewhat inefficient, as with very large values your search space is huge; but at the same time if you're using log(n) to hunt through it, is that a detriment?
08:59 * McMartin is now developing an attack plan for http://projecteuler.net/index.php?section=problems&id=118
08:59<~Reiver> The only other way I can think of making it better would be to use a set increment, but again you're left with having to pick the right number to iterate with. Too big and you waste resources, too small and you're as bad as a linear search to start with.
09:00 * Reiver stares at that.
09:00 * Reiver resolves to learn a programming language to the point where he can solve that one day. The day he starts cracking open problems like that is the day he can actually feel confident in gunning for the jobs he hopes to do. >_>
09:01
<@McMartin>
There are 117 problems before it on the list, and the earliest ones ar really quite simple >_>
09:02
<@AnnoDomini>
117 problems, but a bitch ain't one? :P
09:02<~Reiver> Do they help put you in the mindset to solve later ones?
09:02
<@McMartin>
Some of them do
09:02
<@McMartin>
Most of these actually involve exotic number theory, though.
09:03<~Reiver> hrn
09:03
<@McMartin>
Which was fun!
09:03<~Reiver> Do the algorthms you come up with in solving them help you think sideways for Cunningly Efficient Algorathms later?
09:03
<@McMartin>
But the first few aren't so deadly abou tit.
09:04
<@McMartin>
I had to talk things over at length with Vorn for some of them, though, and I also had to do a good deal of reading about odd corners of numbe theory on MathWorld et al.
09:29 Rhamphoryncus [rhamph@Nightstar-a62bd960.abhsia.telus.net] has quit [Client exited]
09:31 Attilla [The.Attilla@FBC920.58502B.59021B.52988F] has joined #code
09:32 mode/#code [+o Attilla] by Reiver
10:07 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Connection closed]
10:25 * McMartin solves #118, but it took 31 minutes for the program to run. There are probably better ways to do it.
10:38 * TheWatcher readsup vaguely
10:39
< TheWatcher>
Reiver: I note that, in general, the best and (often) easiest way to learn a programming language to the point where you can solve something like that is to use the programming language to solve it.
10:39
< TheWatcher>
At least IME anyway.
11:21 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code
12:59 AbuDhabi [annodomini@Nightstar-6abea117.adsl.tpnet.pl] has joined #code
13:01 AnnoDomini [annodomini@Nightstar-cba3ab52.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds]
16:05 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
16:06 Syloqs_AFH is now known as Syloqs-AFH
16:42 MyCatVerbs [mycatverbs@Nightstar-492e7e67.co.uk] has quit [Ping timeout: 121 seconds]
16:44 MyCatVerbs [mycatverbs@Nightstar-492e7e67.co.uk] has joined #code
16:44 mode/#code [+o MyCatVerbs] by Reiver
16:53
< AbuDhabi>
"Translation from Polish into Polish is not supported." --Google Translate
16:56
< gnolam>
Heh.
16:59 * AbuDhabi tries to understand how to determine the damping of a filter in the pass band.
16:59
< AbuDhabi>
Given all parameters of the filter needed to design it in SciLab.
17:01 Rhamphoryncus [rhamph@Nightstar-a62bd960.abhsia.telus.net] has joined #code
17:02
< AbuDhabi>
I'm not sure how to approach the problem, since damping varies according to frequency (and this ain't a perfect filter we're talking about).
17:16 * AbuDhabi THINKS that might be the maximum damping in the pass band, which can be determined from the parameters.
17:18
< AbuDhabi>
Now I have to hunt down a conversion equation for decibels.
17:22
< AbuDhabi>
We're using '20*log10(a/a0)' for our graphs. How would I get 'a' back?
17:24 You're now known as TheWatcher[afk]
17:26 Tarinaky [Tarinaky@Nightstar-102bd586.adsl.virginmedia.net] has quit [Ping timeout: 121 seconds]
17:31
< gnolam>
Whee! Weather effects implemented. I think it actually fulfills all the spec's basic requirements now.
17:31
< gnolam>
http://www.lysator.liu.se/~gnolam/temp/ocean_2009-11-23_calm_rain.png
17:33
< gnolam>
AbuDhabi: Get 'a' back?
17:38
< AbuDhabi>
gnolam: I want a means to obtain a from the above formula. I forget how you revers logarithms.
17:38
< AbuDhabi>
+e
17:38
<@jerith>
exp()
17:39
<@jerith>
Or just raising powers.
17:40 Tarinaky [Tarinaky@Nightstar-8eec395e.adsl.virginmedia.net] has joined #code
17:43
< AbuDhabi>
So if y=20*log10(a/a0) then a=a0*(10^(y/20)).
17:43
< AbuDhabi>
Yes?
17:44 * jerith nods.
17:44
< AbuDhabi>
Thanks.
18:01 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has joined #code
18:02
< Derakon[work]>
Okay, I must be making a mistake with threading here...
18:02
< Derakon[work]>
http://paste.ubuntu.com/326279/
18:02
< Derakon[work]>
If I put any logging in after calling...either acquire() or start(), I didn't check which...the program just hangs.
18:03
< Derakon[work]>
For example, a log line on line 21 causes a hang.
18:03
<@jerith>
seb == self?
18:03
< Derakon[work]>
No, seb is a separate module.
18:03
<@jerith>
Ah.
18:03
< Derakon[work]>
Eventually I hope to excise it from the codebase entirely.
18:03
< Derakon[work]>
But that'd be premature at this stage.
18:05
<@jerith>
What's in seb.log?
18:06 * AbuDhabi ponders the applicability of s/Khan/Sebastian.
18:06
< Derakon[work]>
It's an instance of Python's logging Logger class.
18:06
< Derakon[work]>
s/logging//
18:08
<@jerith>
I can't think of anything that would do that.
18:08
<@jerith>
Unless you have a logger that tries to grab the lock or something, which would be *utterly* insane.
18:08
< Derakon[work]>
Jerith: me neither. :\
18:09
< Derakon[work]>
Well, Python does have a global interpreter lock, but AIUI it should also be making certain that said lock gets released and acquired by different threads properly.
18:09
<@jerith>
The GIL is transparent unless you screw with it in C code.
18:10
< Derakon[work]>
Right.
18:10
<@jerith>
Where by "transparent", I mean "you can't easily break stuff with it".
18:10
<@jerith>
But it does serialise pretty much everything.
18:13
< Derakon[work]>
Other things I've done that make it hang: removing lines 7 and 12 from the paste.
18:13
< Derakon[work]>
I don't understand that one at all.
18:26
< Rhamphoryncus>
Derakon[work]: err, in your paste you're creating the lock within the thread that's supposed to wait on it?
18:27
< Derakon[work]>
I don't think I am...
18:27
< Rhamphoryncus>
if not hasattr(seb, 'currentExperimentLock'):
18:27
< Rhamphoryncus>
seb.currentExperimentLock = threading.Lock()
18:28
< Derakon[work]>
Oh, wait, yes, I am in this case.
18:28
< Derakon[work]>
The theory was that if someone tried to start a second experiment while the first was still running, then they'll execute lines 9-12 instead.
18:29
< Rhamphoryncus>
Only if you wait until the first one reaches that point. Otherwise you've got a race
18:30
< Derakon[work]>
I guess the lock should be made at startup time then, huh?
18:30
< Rhamphoryncus>
yes
18:30
< Derakon[work]>
Still, that doesn't explain my hang, since I'm not trying to run two experiments simultaneously here...
18:30
< Rhamphoryncus>
Have I mentioned I hate subclassing Thread and overriding .run()? Just make a function that pass in as Thread(target=myfunc)
18:30
< Rhamphoryncus>
yeah
18:30
< Derakon[work]>
Yeah, I'm doing that.
18:31
< Derakon[work]>
self.runtimeThread = threading.Thread(target = self)
18:31
< Derakon[work]>
And then I implement self.__call__.
18:31
< Rhamphoryncus>
.. why not self.mymethod?
18:32
< Derakon[work]>
...good question.
18:33
< Derakon[work]>
This is the kind of thing I do when I don't get code reviews from other people. ?.?
18:33
< Rhamphoryncus>
Any chance importing is involved? ie being called as a side effect of an import, or a thread doing an import?
18:34 You're now known as TheWatcher
18:34
< Derakon[work]>
Hmm...all the imports in this file are at the top of the file, and the file itself only defines a class...but I know the rest of the codebase is riddled with imports in functions and other stuff like that.
18:35
< Derakon[work]>
So e.g. if I call sebD.doSomething(), that might well do an import.
18:35
< Rhamphoryncus>
Yeah, there's a good chance that'll fuck something up
18:35
< Derakon[work]>
Yay. :(
18:35
< Derakon[work]>
Imports don't interact cleanly with the GIL?
18:35
< Rhamphoryncus>
Python's importing has its own lock. In trivial cases this works fine, letting only one thread do importing at a time
18:36
< Rhamphoryncus>
However, if one thread is importing, then spawns a thread and attempts to join it, and that thread also tries an import.. deadlock
18:37
< Derakon[work]>
Hrm...well, the parent thread shouldn't be doing any importing while the child thread runs.
18:38
< Derakon[work]>
All it's supposed to do is sleep and occasionally update the UI...though I note that self.updateUI() doesn't seem to ever be getting called in practice.
18:38
< Rhamphoryncus>
I don't *think* it needs the lock if it's already in sys.modules.. should verify
18:38 * Rhamphoryncus realizes your sleep is 0.5, not 5
18:39
< Derakon[work]>
Yeah, every half-second it's supposed to timeout, update the UI, and then start waiting again.
18:39
< Derakon[work]>
...oh, wait!
18:40
< Rhamphoryncus>
Is gdb available?
18:40
< Derakon[work]>
I need to call isAlive() after the join() times out.
18:40
< Derakon[work]>
Whups.
18:40
< Rhamphoryncus>
.. heh
18:40 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
18:40
< Derakon[work]>
As for gdb, um, it's a Windows machine. It might have cygwin installed, though.
18:40
< Rhamphoryncus>
Probably want an extra call to self.updateUI() too, after the exception handler
18:41
< Rhamphoryncus>
eh you probably just fixed the whole bug :)
18:41
< Derakon[work]>
Heh. We'll see. I'll BBIAB.
18:41
< Rhamphoryncus>
But gdb would (at least on linux) let you figure out which threads are waiting on which. Note however, it may not be easy to figure out which thread holds a lock. There's tricks ;)
18:44
< Derakon[work]>
Hrmph...no, that didn't do it.
18:44
< Derakon[work]>
Changed the loop logic to:
18:45
< Derakon[work]>
while self.runtimeThread.isAlive():
18:45
< Derakon[work]>
self.runtimeThread.join(.5)
18:45
< Derakon[work]>
self.updateUI()
18:45
< Derakon[work]>
And I get the hang.
18:45
< Rhamphoryncus>
Try adding prints?
18:47
< Derakon[work]>
I put one right after isAlive; no print.
18:47
< Derakon[work]>
Though, I just thought to check the logfiles (which normally get mirrored to a text box while the program runs).
18:47
< Rhamphoryncus>
.. add more before that then. On every line even
18:47
< Derakon[work]>
The UI is hanging, but the logfiles did get updated; a log line I put at the top of updateUI got printed.
18:48
< Rhamphoryncus>
what?
18:48
< Rhamphoryncus>
That implies the console is hanging too? You sure it's not a stale log?
18:48
< Derakon[work]>
self.updateUI()'s first action is "seb.log.info("updateUI called")". That shows up in the logs. It doesn't show up in the text box that mirrors STDOUT while the program runs, though.
18:48
< Derakon[work]>
It's not a stale log.
18:49
< Derakon[work]>
And it's not going to the console; Sebastian's doing some weird redirections with STDOUT and STDERR.
18:49
< Rhamphoryncus>
.. don't mirror stdout. I want REAL stdout. Or if that's awkward, and if stderr isn't fucked with, go directly to stderr
18:49
< Rhamphoryncus>
... smack them
18:49
< Derakon[work]>
I wish I could.
18:50
< Rhamphoryncus>
Or just temporarily break it. Whatever
18:51
< Rhamphoryncus>
Have I mentioned that logging has both importing and its own lock?
18:51
< Derakon[work]>
You hadn't, no.
18:52
< Derakon[work]>
Can two threads trying to log at the same time make a deadlock?
18:52
< Rhamphoryncus>
Shouldn't.
18:52
< Derakon[work]>
I wouldn't have thought so.
18:53
< Rhamphoryncus>
It's the very first call that will do the import, so that's the potential issue
18:54
< Derakon[work]>
Okay, lemme go poke at things some more...
18:54
< Rhamphoryncus>
huh. logging has a NTEventHandler class. Goes to the OS event log
19:02
< Derakon[work]>
Okay, the last logline I get from the calling thread is right before calling join().
19:02
< Derakon[work]>
The only logline I get from the called thread is the first one; after that, I get nothing else.
19:03
< Derakon[work]>
Here's the as-yet-not-renamed __call__ function: http://paste.ubuntu.com/326307/
19:03
< Derakon[work]>
I get the "Starting experiment" logline, but neither the "Sending profile..." logline nor the "Error while running experiment" logline.
19:07 Finale [c0cb88fe@Nightstar-14e5d099.mibbit.com] has joined #code
19:10 Tarinaky [Tarinaky@Nightstar-8eec395e.adsl.virginmedia.net] has quit [Ping timeout: 121 seconds]
19:25 Tarinaky [Tarinaky@Nightstar-56faf541.adsl.virginmedia.net] has joined #code
19:27
< AbuDhabi>
How nerdy is it to do dice roll probability graphs in SciLab?
19:27
< Finale>
one of us one of us
19:32
< dmlandrum>
How nerdy is it to buy a hardware sampler from 1999 from eBay because I can't find a software sampler that I like?
19:32
< AbuDhabi>
That sounds audiophillic.
19:33
< dmlandrum>
Not really. Modern softsamplers have much better specs.
19:33
< dmlandrum>
But they cost more than the hardware stuff does, and it ties you to a platform, and a particular class of software hosts.
19:34
< dmlandrum>
A nice hardware sampler doesn't give a shit what software I'm running on the computer, or the OS, or anything.
19:35
< dmlandrum>
And no bleeding challenge-response or other copy protection crap.
19:39
< AbuDhabi>
I wonder if you can run Windows 3.1 on DOSBox.
19:40
< gnolam>
You can with some builds at least.
20:13
< AbuDhabi>
Hmm. I'm trying to come up with an algorithm that makes a graph of probability values for a sum of X dice being rolled meeting or exceeding a value.
20:14
< AbuDhabi>
I'm having problems implementing the summing part iteratively - I want something like 1+1+1, 1+1+2, 1+1+3, 1+1+4, etc.
20:15
< AbuDhabi>
For a variable amount of dice.
20:17
< Derakon[work]>
That's a standard permute() function.
20:18 * AbuDhabi looks it up.
20:18
< Derakon[work]>
E.g. all permutations of 2d6+1d10 would be permute(range(1, 6), range(1, 6), range(1, 10)).
20:20
< AbuDhabi>
It's rather difficult to understand. The helpfile entry on it is minimalistic.
20:21
< Derakon[work]>
Oh, sorry.
20:21
< Derakon[work]>
I wasn't intending to refer to a standard function or something.
20:21
< Derakon[work]>
And...thinking about it, this isn't exactly a standard permutation anyway.
20:21
< Derakon[work]>
It's more "choose one from each of these three lists".
20:23
< AbuDhabi>
Well, uh. Is it even possible to do what I described, without fiddling with recursion or something?
20:23
< Derakon[work]>
Recursion's really the way to go here.
20:24
< Derakon[work]>
def foo(dice): firstDie = dice[0]; for each value in firstDie: append value to all results from foo(restOfDice)
20:24
< AbuDhabi>
I'm not sure how to do that in SciLab.
20:25
< Derakon[work]>
Well, then you have an opportunity to learn something. :)
20:26
< AbuDhabi>
The near lack of any topics with 'recur' in them in the helpfile is not a hopeful sign.
20:26
< Derakon[work]>
http://hkumath.hku.hk/~nkt/Scilab/IntroToScilab.html#RECURSIVE
20:26
< Derakon[work]>
Looks just like any other recursion I've ever seen.
20:29
< AbuDhabi>
I think I'll tackle this another day.
20:30
< Finale>
lazy
20:30
< AbuDhabi>
Come to think of it, it might be much easier just using a - shut up, Alek - normal distribution or something for the graphs.
20:41 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has quit [[NS] Quit: Leaving]
21:03 ASCIISkull is now known as Pinkhair
21:22 SmithKurosaki [Smith@Nightstar-6450f657.dsl.teksavvy.com] has quit [Connection closed]
21:22 SmithKurosaki [Smith@Nightstar-6450f657.dsl.teksavvy.com] has joined #code
21:25 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has joined #code
21:25 * Derakon[work] blarghs.
21:25
< Derakon[work]>
This must be a deadlock of some kind, but for the life of me I can't figure out what.
21:26
< Derakon[work]>
I found a flag that will turn on some extra debugging output whenever a threading module function is called...of course, it's only enabled in debug builds of Python, which I haven't managed to successfully produce yet.
21:26
< Rhamphoryncus>
AbuDhabi: there's a program called troll which can do a lot of shit with dice probabilities
21:26
< Derakon[work]>
As far as I can tell both the main thread and the experiment thread are hanging with their next line being a logging line...yet both consistently manage to produce one line of logging after the experiment thread is started.
21:27
< Rhamphoryncus>
hrm. Actually, it's a website I think
21:28
< Rhamphoryncus>
Derakon[work]: do your own logging directly to a file. No locking, no stdout redirection
21:28
< Derakon[work]>
Tried that, file was empty. Not sure why.
21:28
< Derakon[work]>
...oh, wait, now I know why.
21:28
< Derakon[work]>
Forgot the gorram newlines.
21:29
< Rhamphoryncus>
Might default to flushing on newlines.. yay C
21:29
< Rhamphoryncus>
hrm. I'd have used the fd directly, but that's a unix API :/
21:58
< dmlandrum>
Man, CompSci is ripe with some of the best jokes ever. It's too bad so few people get them.
21:59
< dmlandrum>
I could get some serious mileage out of a phrase like "flushing on newlines."
21:59 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has quit [[NS] Quit: Leaving]
22:02
< gnolam>
A byte walks into a bar, sighs, and orders a beer. The bartender asks him "Hey, what's the matter?"
22:02
< gnolam>
"Parity error," the byte replies.
22:02
< gnolam>
"Ah," says the bartender, "I thought you looked a bit off."
22:03
< AbuDhabi>
Groan.
22:04 * Finale throws a quarter at gnolam.
22:04
< Finale>
here, have two bits.
22:05
< AbuDhabi>
Troll is rather useful. I got what I wanted, anyway, even if it wasn't as pretty as I wanted it.
22:10
< simon`>
also, troll has a web interface these days
22:10
< AbuDhabi>
That's what I used.
22:13
< simon`>
cool
22:13
< simon`>
I think it'll become more popular now that users don't need a Standard ML compiler to make it work. :)
22:28 Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has joined #code
22:28
< Derakon[work]>
Got the "write to a file directly" logging to work.
22:29
< Derakon[work]>
It's annoying having to manually call flush() after every write() though.
22:29
< Derakon[work]>
This gets me a bit more output; the experiment thread makes it to this line before hanging: "return [X.cam[c].setexp(ms) for c in cc]"
22:30
< Derakon[work]>
(The caller thread, meanwhile, is now merrily able to call updateUI as much as it likes)
22:30
< Derakon[work]>
I spent awhile looking for a function "setexp" in the codebase before I ran into the line "setexp = setExposureTime".
22:30
< Derakon[work]>
When I meet Sebastian, he had damned well better only have one finger on each hand, because nothing else excuses crap like this.
22:31
< Derakon[work]>
Anyway, that appears to be a remote object call, so now I'm wondering if Pyro is threadsafe.
22:32
< Derakon[work]>
Hmph. Pyro's docs claim multithreaded support.
23:10
< gnolam>
If it has its own threading helper library, I hope it's called "Nomex".
23:11 AbuDhabi [annodomini@Nightstar-6abea117.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds]
23:12
< Derakon[work]>
Hrm?
23:13
<@Vornicus-Latens>
Nomex is fire-retardant material
23:13
<@Vornicus-Latens>
They use it to make firefighter's uniforms.
23:13
< Derakon[work]>
Ah.
23:15 Vornicus-Latens is now known as Vornicus
--- Log closed Tue Nov 24 00:00:06 2009
code logs -> 2009 -> Mon, 23 Nov 2009< code.20091122.log - code.20091124.log >