--- 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 |