--- Log opened Tue Nov 10 00:00:45 2009 |
00:01 | | You're now known as TheWatcher[T-2] |
00:06 | < ToxicFrog> | LaTeX indicts all existing word processors in guilt that even death cannot repay. |
00:07 | < McMartin> | LaTeX is not a word processor. |
00:07 | < ToxicFrog> | Precisely. |
00:10 | | You're now known as TheWatcher[zZzZ] |
00:14 | < McMartin> | No, I mean, that's like saying "Photoshop indicts all existing web browsers in guilt that even death cannot repay." |
00:17 | < ToxicFrog> | They both exist to the solve the same problem, though. |
00:17 | < ToxicFrog> | They just have totally different approaches. |
00:17 | < ToxicFrog> | I have spent years creating papers of various kinds in several different word processors, and it's always been a pain in the ass and I've never really been happy with the results. |
00:18 | < ToxicFrog> | Over the past few days I put together a requirements specification document in LaTeX way more painlessly and it also looks far better than anything I've created with a word processor. |
00:19 | < gnolam> | Not really, no. Word processors exist to replace typewriters. To be able to easily edit text on the fly. |
00:20 | < gnolam> | LaTeX exists to replace regular type/setting/. |
00:29 | < ToxicFrog> | gnolam: text editors replace typewriters. |
00:29 | < ToxicFrog> | word processors are 90% typesetting tools. |
00:31 | < McMartin> | Typewriters perform layout, and if you don't believe this you've never tried to lay out a page with diagrams using one. |
00:32 | | * simon` can never position figures right in LaTeX. they always end up in a pile at the bottom. |
00:33 | < McMartin> | It can get a bit... willful, yes. |
00:33 | < McMartin> | I ran into that with my dissertation, where one figure was a quarter-inch too wide and as a result every figure in the entire 250-page document was relocated to an appendix in the back. |
00:34 | < simon`> | heh :) |
00:35 | < simon`> | I guess your level of latex-fu grows with the size of the documents you write since your need to have it actually work grows in proportion to the size. |
00:35 | < simon`> | I first bothered proper bibliography during my last written exam. |
00:36 | < McMartin> | BibTeX has no credible competition anywhere |
00:37 | < simon`> | really. |
00:38 | < simon`> | \cite{yourtag} and have everything nicely formatted is all I can expect. |
00:38 | < McMartin> | Yeah, and I know of no other system that actually does that and maintains it properly across later edits |
01:09 | | AnnoDomini [farkoff@Nightstar-602e92ab.adsl.tpnet.pl] has quit [[NS] Quit: Tradition may be defined as an extension of the franchise. Tradition means giving votes to the most obscure of all classes, our ancestors. It is the democracy of the dead. Tradition refuses to submit to the small and arrogant oligarchy of those ] |
01:32 | | Attilla [The.Attilla@FBC920.65CFFF.B7E2D0.EBD89A] has quit [Ping timeout: 121 seconds] |
01:47 | | Derakon[AFK] is now known as Derakon |
02:03 | <@Derakon> | I haven't used LaTeX in years... |
02:03 | <@Derakon> | Mostly I used to use it for my Algorithms homework (lots of equations) and for writing lab reports. |
02:05 | <@Derakon> | Hrm. I should do something with the book on chainmaille weaves that I mostly-wrote and then abandoned. |
02:06 | <@Derakon> | (Which is typeset using LaTeX) |
02:23 | < ToxicFrog> | McMartin: typewriters perform _layout_, but so do text editors. I consider _typesetting_ a large superset of this. |
02:24 | < ToxicFrog> | My main line of thinking here is that when I'm using a word processor, my end goal is the same as it is when I'm using LaTeX; however, LaTeX produces better results in less time and with less effort. |
02:24 | < ToxicFrog> | Whereas when I'm using a text editor my end goal is not the same. |
02:35 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?] |
03:50 | | Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
04:50 | | Vornicus is now known as Vornicus-Latens |
06:31 | | Derakon is now known as Derakon[AFK] |
08:16 | | AnnoDomini [farkoff@Nightstar-602e92ab.adsl.tpnet.pl] has joined #code |
08:23 | | Tarinaky [Tarinaky@Nightstar-38f414ef.adsl.virginmedia.net] has joined #code |
08:59 | | Rhamphoryncus [rhamph@Nightstar-a62bd960.abhsia.telus.net] has quit [Client exited] |
09:09 | | You're now known as TheWatcher |
09:43 | | Attilla [The.Attilla@FBC920.65CFFF.9EEB6C.048A40] has joined #code |
09:43 | | mode/#code [+o Attilla] by ChanServ |
10:06 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Operation timed out] |
10:07 | | SmithKurosaki [Smith@Nightstar-683a7925.dsl.teksavvy.com] has quit [Operation timed out] |
10:20 | | SmithKurosaki [Smith@Nightstar-5efa8f67.dsl.teksavvy.com] has joined #code |
10:20 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
10:31 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Operation timed out] |
10:31 | | SmithKurosaki [Smith@Nightstar-5efa8f67.dsl.teksavvy.com] has quit [Operation timed out] |
10:51 | | SmithKurosaki [Smith@Nightstar-270a1069.dsl.teksavvy.com] has joined #code |
10:51 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
11:12 | | AnnoDomini [farkoff@Nightstar-602e92ab.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds] |
11:15 | < simon`> | wow |
11:15 | < simon`> | I was just in my metaheuristics study group |
11:15 | < simon`> | I can now say that both the field of study and this way of meeting and discussing are interesting. |
11:17 | | AnnoDomini [farkoff@Nightstar-9a0feb34.adsl.tpnet.pl] has joined #code |
11:18 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code |
11:48 | | You're now known as TheWatcher[afk] |
12:50 | | Attilla [The.Attilla@FBC920.65CFFF.9EEB6C.048A40] has quit [Ping timeout: 121 seconds] |
12:51 | | Attilla [The.Attilla@FBC920.480E8C.3E679A.E258A8] has joined #code |
12:51 | | mode/#code [+o Attilla] by ChanServ |
13:10 | | Tarinaky [Tarinaky@Nightstar-38f414ef.adsl.virginmedia.net] has quit [Ping timeout: 121 seconds] |
13:21 | | You're now known as TheWatcher |
13:24 | | Tarinaky [Tarinaky@Nightstar-056b4d13.adsl.virginmedia.net] has joined #code |
14:07 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Operation timed out] |
14:08 | | SmithKurosaki [Smith@Nightstar-270a1069.dsl.teksavvy.com] has quit [Operation timed out] |
14:47 | | ilf_atuni [santros_vexan@971820.E3523E.8A17F0.C4EDCD] has joined #code |
14:49 | | * ilf_atuni has a java applet that makes a red ball bounce around the applet's area. He needs to make a blue ball that follows the red ball, which should be easy if he uses the same formula for movement, since the red ball takes the sam epath every time, but I'm trying to figure out how to get it to work. And failing. |
14:49 | | * ilf_atuni is using Java. |
15:01 | < jerith> | Have them both use the same algorithm, but have them offset in time? |
15:02 | < jerith> | What's the algorithm you're using? |
15:21 | < gnolam> | Arrrrrrrrrrgh |
15:21 | | * gnolam stabs OpenGL again and again and again and again and again. |
15:21 | < ilf_atuni> | I'd tell you if I could find where I left the .java file... bleh, damnit, today's just going bad. |
15:21 | < gnolam> | DIE MOTHERFUCKER, DIE! |
15:24 | < ilf_atuni> | bleh, great. I've lost my code. Time to start over from scratch. |
15:33 | < ilf_atuni> | Bleh. And the code in the book dosen't work, and I can't remember what I changed ot make it work. |
15:34 | < ilf_atuni> | http://pastebin.starforge.co.uk/27 but here it is, so far. |
15:35 | | * gnolam slaps ilf_atuni. |
15:36 | < gnolam> | Never use the phrase "doesn't work" to describe a problem. :P |
15:37 | < ilf_atuni> | gnolam: Let it be said that I use the phrase dosen't work to describe everything, evne things that aren't problems. :P Specifically, it says it cannot be cast to java.applet.Applet |
15:38 | | SmithKurosaki [Smith@Nightstar-2f700130.cable.rogers.com] has joined #code |
15:50 | | * ilf_atuni blehs. Friggin thing.\ |
15:56 | < ilf_atuni> | all I want to do is get my friggin' homework doen. >< |
15:57 | < SmithKurosaki> | Yea |
15:57 | < SmithKurosaki> | Same here |
15:58 | | * jerith has given up on day-job work to play with his dicebot for the last hour or so. |
15:58 | < SmithKurosaki> | Heh |
15:59 | | * TheWatcher did likewise about 20 minutes ago - blasted database migration scripts messing with his head, is now dromeding |
16:02 | < jerith> | Database migration was pretty much the reason I threw in the towel as well. :-) |
16:03 | < gnolam> | And all I want to do is get this project completed, but goddamned OpenGL is preventing me from it. |
16:04 | < jerith> | About half the effort I've put into this bot is getting text formatted sanely. |
16:10 | | SmithKurosaki [Smith@Nightstar-2f700130.cable.rogers.com] has quit [Operation timed out] |
16:12 | < ilf_atuni> | Hmm... hah, got it! |
16:12 | | * ilf_atuni just moved the starting location of the blue ball to 'behind' the red one relative to movement, and it worked. Sure, it's probably not what the professor intended, but it works and it fits the parameters of the exercise. |
16:13 | < ilf_atuni> | well, once I figured out how to get it all the work. |
16:25 | | ilf_atuni [santros_vexan@971820.E3523E.8A17F0.C4EDCD] has left #code [] |
16:44 | < MyCatVerbs> | By far the best time to find out that you happen to really, really need a set of unit tests for a particular feature is after have already written some. <3 |
16:44 | < MyCatVerbs> | s/some/plenty enough/ |
16:45 | < Alek> | of course. XD |
16:52 | | SmithKurosaki [Smith@Nightstar-6450f657.dsl.teksavvy.com] has joined #code |
16:57 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
17:00 | | Rhamphoryncus [rhamph@Nightstar-a62bd960.abhsia.telus.net] has joined #code |
17:15 | | Derakon[work] [Derakon@Nightstar-d44d635e.ucsf.edu] has joined #code |
18:38 | | crem [moo@Nightstar-8ca3eea7.adsl.mgts.by] has quit [Client closed the connection] |
18:45 | | crem [moo@Nightstar-8ca3eea7.adsl.mgts.by] has joined #code |
19:43 | | * Derakon[work] compiles a list of variables that are shoved into a completely unrelated module during the course of running an experiment. |
19:44 | < Derakon[work]> | I'm up to 11 so far, including such names as f_mrc_hdr, weAreDoingPalm, _dontSend, and f. |
19:58 | < simon`> | Derakon[work], do you study, or do you write games all day? :D |
19:59 | < Derakon[work]> | Um, neither. |
20:00 | < Derakon[work]> | These days I'm working for a UCSF lab on their microscope software. |
20:37 | | crem_ [moo@Nightstar-8ca3eea7.adsl.mgts.by] has joined #code |
20:38 | | crem [moo@Nightstar-8ca3eea7.adsl.mgts.by] has quit [Ping timeout: 121 seconds] |
20:39 | | * TheWatcher eyes dera |
20:39 | <@TheWatcher> | 'f' |
20:39 | < Derakon[work]> | Yep. |
20:39 | <@TheWatcher> | Please tell me you are joking |
20:39 | < Derakon[work]> | Imagine finding that in the codebase. |
20:40 | < Derakon[work]> | I'm pretty certain it's short for "file", as in, the file the program writes that holds the images taken by the microscope cameras. |
20:41 | <@TheWatcher> | I'm trying not to. It's bad enough seeing single character names for loop variables, but outside that? |
20:41 | | crem_ [moo@Nightstar-8ca3eea7.adsl.mgts.by] has quit [Client closed the connection] |
20:44 | < jerith> | 'f' is a reasonable name for a local variable in a short function where 'file' is a reserved word. |
20:45 | < jerith> | I usually use 'ff' or something in those cases, though, just because I dislike single character identifiers. |
20:46 | | crem [moo@Nightstar-8ca3eea7.adsl.mgts.by] has joined #code |
20:50 | < ToxicFrog> | I use 'fd', or 'fin/fout' |
20:51 | < Namegduf> | I use "f" because "ff" implies it's short for something beginning with or possessing two 'f's and seems confusing |
20:51 | < Namegduf> | If "file" is reserved, that is. |
20:52 | < Namegduf> | But, yeah, in non-short functions... |
20:53 | < jerith> | People who write Python code using two-space indents and TitleCaseFunctionNames need a serious beating about the head and shoulders with PEP 8. |
20:53 | < Namegduf> | And worse, used the way it's using them, as externally accessible |
20:53 | < Namegduf> | Ew. |
20:53 | | * jerith is looking at Google for that. |
20:53 | < jerith> | "Short" functions are fewer than five lines. |
20:54 | < jerith> | "Long" functions are more than ten. |
20:54 | < Namegduf> | I would consider it fine up to about 20. |
20:55 | < Namegduf> | Maybe beyond, really, it just isn't right to be used in a large amount of code and definitely not used intermodule. |
20:55 | < jerith> | Depends on the language. |
20:55 | < jerith> | Approximately double those numbers for Java. |
20:55 | < McMartin> | fin/fout is what I usually ues. |
20:55 | < McMartin> | use |
20:56 | < Derakon[work]> | I generally use "filehandle". ?.? |
20:56 | < Derakon[work]> | Admittedly that doesn't indicate if it's open for reading or writing. |
20:57 | < jerith> | I use infile or outfile (or something more descriptive like config_file) or whatever more often than not. |
20:58 | < Namegduf> | Descriptive is good, yeah. |
21:07 | < McMartin> | Actually, I tend to use "f" for a formal of type FILE *. |
21:07 | < McMartin> | And "fname" if it's const char* or boost::path or what have you. |
21:07 | < Derakon[work]> | Oh, hey, random style question! |
21:07 | < Derakon[work]> | Which do you prefer: "int* foo" or "int *foo"? |
21:08 | < McMartin> | The latter |
21:08 | < Derakon[work]> | (And why?) |
21:08 | < jerith> | The latter. |
21:08 | < McMartin> | Because the former looks like "int* foo, bar, baz" means they're all pointers, and they aren't. |
21:08 | < jerith> | int *foo, *bar; |
21:08 | < Derakon[work]> | Mm. |
21:09 | < jerith> | Also, * is an indirection operator and is right-associative. |
21:09 | < Derakon[work]> | My personal stance on it is that the ability to mix pointer and non-pointer types in the same declaration is a mistake, and that "pointerness" is an inherent property of the type, and so should be aligned with the type instead of the name. |
21:09 | < Derakon[work]> | So I'd do "int* foo; int bar; int baz;" instead. |
21:09 | < jerith> | While it doesn't have that meaning in the declaration, the context is similar. |
21:09 | < McMartin> | In actual practice, I am almost always dealing with pointers as typedefs. |
21:10 | < McMartin> | Which sort of makes it moot. |
21:10 | < McMartin> | Actually, in argument lists I will generally do that. |
21:10 | < jerith> | The only pointer types I deal with regularly (on the rare occasions that I'm writing C) are char*. |
21:10 | < McMartin> | So, in the definition, it'll be f(int *a, int *b) { ... } |
21:11 | < McMartin> | But the declaration will be "f(int*, int*);" |
21:17 | | crem [moo@Nightstar-8ca3eea7.adsl.mgts.by] has quit [Client closed the connection] |
21:17 | < McMartin> | Due to the requirements on their initialization, I do tend to do int&, but int *. |
21:21 | < Namegduf> | I usually do int*; hate that language feature. |
21:21 | < Namegduf> | I don't normally create multiple variables on a line, though. |
21:22 | | crem [moo@Nightstar-8ca3eea7.adsl.mgts.by] has joined #code |
21:25 | < Rhamphoryncus> | Derakon[work]: if I were designing C I would make * in declarations left-associative, so "int* foo;" would be right. However, that's not the case, and using that coding style just leads to confusion about what the language is really doing |
21:26 | < Derakon[work]> | Mm, fair. |
21:29 | < Namegduf> | The latter is logically more sound. |
21:30 | < Namegduf> | I find it looks "odd" because I *do* consider the * part of the type |
21:30 | < Namegduf> | So putting it on the name makes it look like it's being deferenced or something strange. |
21:35 | < Namegduf> | But aside "it looks funny to me", it does make more sense, I guess. |
21:36 | < ToxicFrog> | I avoid this by using 'int * foo' or typedefs~ |
21:37 | < Derakon[work]> | I generally avoid it through using Python~ |
22:00 | < Rhamphoryncus> | Being a pointer *is* part of the type. It's the syntax that's fucked up |
22:01 | < McMartin> | Quite. |
22:14 | | * gnolam cues the Händel. |
22:14 | < gnolam> | HAAAAAALLELUJA, HALLELUJA, HALLELUJA |
22:19 | < gnolam> | I'm finally getting the project to compile over on the System of Doom. :P |
22:19 | < gnolam> | I don't know if it will actually /work/, but... |
22:19 | < Derakon[work]> | Compilation, I find, is generally less than half the battle. But it's still a major accomplishment, so congrats. |
22:22 | < gnolam> | Yeah. I'm a bit skeptical, especially since the computers there managed to be buggy on a simple bump map shader that used, IIRC, 6 uniform words. |
22:22 | < gnolam> | I'm using 173. :P |
22:31 | | * Derakon[work] devises a design that takes advantage of Python's arbitrary parameter lists system to let him make a class that encapsulates arbitrary other classes and includes the encapsulated class's constructor parameters in the encapsulating class's constructor parameters. |
22:31 | < Vornicus-Latens> | Der: :( |
22:31 | < Derakon[work]> | Hm. Well, let me describe the problem space. |
22:32 | < Derakon[work]> | See if you have a better idea. |
22:32 | < Derakon[work]> | Basically, we have a set of different experiment types. |
22:32 | < Derakon[work]> | An "experiment" is a way of collecting images of the slide. |
22:32 | < Derakon[work]> | For example, you might take an image at each of several different Z heights, or you might keep the camera shutter open as you sweep through Z. |
22:33 | < Derakon[work]> | So each of those different types subclasses the Experiment class, which is basically a Python-style virtual class. |
22:33 | < Vornicus-Latens> | ok |
22:33 | < Derakon[work]> | We also have the concept of a multi-site experiment, where you want to run a given experiment type on several different locations on the slide (i.e. you have 20 different areas that you've identified as interesting, and you want to image them all). |
22:34 | < Derakon[work]> | Enter the Multisite Experiment, which encapsulates an Experiment and also includes parameters on the set of sites to visit, how often to visit them, etc. |
22:34 | < Derakon[work]> | ...hm, I guess I could just pass the already-instantiated Experiment subclass to the MultisiteExperiment constructor, instead of having it make it itself. |
22:35 | < Derakon[work]> | Biggest problem there is having to do things like tweak the output filename for each site. |
22:36 | < Derakon[work]> | Since filename is a parameter to the Experiment subclasses' constructor. |
22:36 | < Derakon[work]> | ...I should pastebin this. |
22:37 | < Vornicus-Latens> | You coul give Experiment a globbable string or something... |
22:39 | | Vornicus-Latens is now known as Vornicus |
22:40 | < Derakon[work]> | Something like this: http://paste.ubuntu.com/315444/ |
22:40 | < Derakon[work]> | This glosses over a lot of stuff, of course, and my syntax may be off in the *args stuff, but it should give you an idea of what I'm dealing with here. |
22:42 | < Derakon[work]> | I either need to code a reset() function for a single Experiment instance that gets reused over the lifetime of the MultisiteExperiment, or I need to instantiate a new one for each site in siteList. |
22:50 | < ToxicFrog> | "main: local function definitions are illegal" |
22:50 | < ToxicFrog> | C :argh: |
22:50 | < McMartin> | Derakon: How is that not just a "hey, I get arbitrary parameter lists and duck typing, let's write a generic proxy" |
22:54 | < Derakon[work]> | Define "generic proxy"? |
22:55 | < McMartin> | A proxy is an object that stands in for another object, generally doing something before delegating out to the real, original one (usually). |
22:55 | < McMartin> | Thanks to duck typing, you don't have to dick around with inheritance to throw proxies whereever you want, so why not write one that will eat anything? |
22:55 | < Derakon[work]> | Ah. |
22:55 | < Derakon[work]> | Well, for certain values of "everything" restricted to "subclasses of Experiment", that is in fact what I'm suggesting here. |
22:56 | < Derakon[work]> | The important thing is that these subclasses are guaranteed to implement certain functions so the MultisiteExperiment class can call them. |
22:56 | < Derakon[work]> | But the idea is that you should be able to have a MultisiteExperiment run any type of Experiment at each of the specified sites. |
22:57 | < McMartin> | You could override __call__ and have it work on any method whatsoever~ |
22:57 | < Derakon[work]> | If I only needed Experiment to export a single function, sure. |
22:57 | < Derakon[work]> | I suspect I'll need more; at the very least, some kind of status() function. |
22:58 | < McMartin> | Er, wait, what is that. not __call__ |
22:58 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving] |
22:59 | < McMartin> | The thing that's called when you try to invoke a non-existent method |
23:00 | < Rhamphoryncus> | Derakon[work]: passing already completed objects to MultipleExperiment is a Good Thing(TM). |
23:00 | < Rhamphoryncus> | Derakon[work]: is MultipleExperiment used every time, or just when you want mutliples? |
23:00 | < Derakon[work]> | Rhamphoryncus: that does mean I need to make every experiment be cleanly resettable, though. |
23:00 | < Derakon[work]> | Just when you want multiples. |
23:00 | < Derakon[work]> | It's not uncommon for the biologist to say "Okay, I'm at a good spot, let's image this." |
23:01 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code |
23:01 | < Derakon[work]> | Multisite stuff tends to be for when the biologist wants to observe a particular process which any of a large number of sites might be about to undergo. |
23:01 | < Rhamphoryncus> | You should consider using it even when there's just one. Then you can pull common functionality into it. For instance, it could manage output files |
23:02 | < Derakon[work]> | That doesn't work for side reasons. |
23:02 | < Rhamphoryncus> | bah :) |
23:02 | < Derakon[work]> | Mostly, MultisiteExperiment incurs significant overhead that drops our imaging rate by a factor of 5 or so. |
23:03 | < Derakon[work]> | I might eventually be able to work around that, but I'm not going to base the design I'm working on now on that, since I don't know if it's actually possible. |
23:03 | < ToxicFrog> | "unresolved external symbol __cdecl double round(double)" |
23:03 | < ToxicFrog> | Windows :argh: |
23:04 | < Rhamphoryncus> | Ahh, so MultisiteExperiment isn't just a container. It's a different physical process |
23:05 | < Derakon[work]> | Yeah. |
23:05 | < Rhamphoryncus> | So the next obvious answer: SinglesiteExperiment |
23:05 | < Derakon[work]> | The process of moving from one site to another entails, on the side, blowing away some external state (stored on a different machine) that was used by the previous Experiment run. |
23:06 | < Derakon[work]> | Experiment is implicitly a SinglesiteExperiment. |
23:06 | < Derakon[work]> | Each Experiment is a different way to image a slide. |
23:06 | < Derakon[work]> | So there's ZStackExperiment, ProjectionExperiment, TIRFExperiment, etc. |
23:06 | < Derakon[work]> | I don't want to have to do MultisiteZStackExperiment, MultisiteProjectionExperiment, MultisiteTIRFExperiment, etc. |
23:07 | < Rhamphoryncus> | not what I meant |
23:08 | < Rhamphoryncus> | Always using MultisiteExperiment would let you merge common functionality, but it has too much other consequences too. For the cases you don't want those, use a dummy SinglesiteExperiment container instead of MultisiteExperiment |
23:08 | < Derakon[work]> | What does that buy me over just using an Experiment subclass directly? |
23:10 | | * McMartin successfully runs his first C# module. |
23:10 | < Rhamphoryncus> | cleaner.. just tell them to ask the container about file handling. Don't need different behaviours for single vs multiple |
23:12 | < Derakon[work]> | So the user's interaction with either case will basically look like "Set up Experiment class, hand it off to a container, and tell the container to run". |
23:12 | < Derakon[work]> | But that's just busywork when you're only doing one site; your interaction should instead be "Set up Experiment class, tell it to run." |
23:15 | < Rhamphoryncus> | It really depends on your setup |
23:15 | < Rhamphoryncus> | It may be significantly cleaner to have a container |
23:16 | < Derakon[work]> | Well, I'll give it serious thought as I continue to refine the design. Thanks. :) |
23:16 | < Rhamphoryncus> | :) |
23:17 | < McMartin> | Do bear in mind, though, that an awful lot of Enterprisey things are the way they are to get around C++ and friends's lack of introspection or dynamic typing. |
23:19 | | * McMartin cracks open his copy of Stroustrup |
23:19 | < McMartin> | Oh hey, there round isn't. |
23:20 | < McMartin> | What the Hell, Bjarne |
23:20 | < McMartin> | This is even more awesome because numeric_limits<float>::round_error is totally there. |
23:21 | < McMartin> | But nothing that you can do that could yield that error. |
23:21 | < Derakon[work]> | Hee. |
23:21 | < Rhamphoryncus> | round isn't? |
23:21 | < McMartin> | round() is not part of the C standard until the C99 library which only GCC supports by default. |
23:22 | < McMartin> | MSVS shifted over to C++ almost exclusively a long time ago and never bothered picking up the C99 library as a result. |
23:22 | < McMartin> | This results in some weird gaps, like round() and random(). |
23:22 | < McMartin> | floor() and ceil(), on the other hand, A-OK. |
23:22 | < Rhamphoryncus> | heh |
23:23 | < Derakon[work]> | round(foo) == floor(foo + .5) for positive numbers. |
23:23 | < Rhamphoryncus> | 'course it's easy to implement round using ceil |
23:23 | < Rhamphoryncus> | err wait, misread it |
23:23 | < Rhamphoryncus> | Derakon[work]: not guaranteed though, afaik\ |
23:31 | < Derakon[work]> | ...heh, one of the biologists has mentioned the desire to be able to change multisite experiments' behaviors partway through, possibly on some image-analysis-based trigger. |
23:32 | < Derakon[work]> | So I could have a MetaMultisiteExperiment~ |
23:32 | < Rhamphoryncus> | heh |
23:32 | < Derakon[work]> | (e.g. if the camera sees a blob of at least this much total brightness, that means that a chromosome has started to coalesce, so focus on that site and take images more rapidly) |
23:33 | < Derakon[work]> | Wrappers around wrappers around wrappers! Enterprise, here I come~ |
23:36 | < McMartin> | Next, make a framework that automatically generates wrappers based on an XML specification~ |
23:37 | < Rhamphoryncus> | Derakon[work]: all the more reason to use a SingleSiteExperiment |
23:39 | < Derakon[work]> | Mmm, or just make MultisiteExperiment the only thing users interact with, with the default value of siteList being "the current site only". |
23:53 | | * gnolam hugs modern multicore CPUs. |
23:56 | < gnolam> | It's just awesome being able to encode video and watch a decompressed preview of the output while at the same time compiling and listening to music. :) |
23:57 | < Derakon[work]> | Heh. |
23:57 | < Derakon[work]> | Time was when I couldn't listen to music on my computer without Angband's performance getting severely degraded. |
23:58 | < Namegduf> | gnolam: But you're affecting your optimum compiling performance! |
23:58 | < Namegduf> | gnolam: You need to have it spawn TWICE the number of processes as your CPU cores! |
23:58 | < gnolam> | Just compiling something reasonably large made my previous computer /overheat and crash/. |
--- Log closed Wed Nov 11 00:00:00 2009 |