| 05:32.11 | *** join/#brlcad elite01 (n=omg@unaffiliated/elite01) | |
| 06:24.26 | *** join/#brlcad PrezKennnedy (i=Matthew@whitecalf.net) | |
| 08:20.48 | *** join/#brlcad clock_ (n=clock@84-72-91-240.dclient.hispeed.ch) | |
| 09:34.44 | *** join/#brlcad Bariton (n=Bary@p5B14FC70.dip.t-dialin.net) | |
| 11:19.44 | *** join/#brlcad mafm (n=mafm@elnet-111.lip.pt) | |
| 11:20.42 | mafm | hai pplz |
| 12:00.43 | AFK-claymore | Mornin! |
| 12:09.46 | claymore | has a titan to play with now... MUWAHAHAHAHAHA. |
| 12:13.59 | *** join/#brlcad Bariton (n=Bary@p5B14FC70.dip.t-dialin.net) | |
| 12:14.21 | *** join/#brlcad Ralith (n=ralith@216.162.199.202) | |
| 12:56.08 | *** join/#brlcad geocalc (n=geocalc@91-171-212-221.rev.libertysurf.net) | |
| 13:41.32 | claymore | brlcad: You in today? |
| 13:43.41 | CIA-24 | BRL-CAD: 03bob1961 * r33106 10/brlcad/trunk/src/conv/bot_dump.c: Print out what's in the result string. |
| 14:47.55 | brlcad | claymore: I take it you see your note |
| 14:48.14 | claymore | From Ed? |
| 14:48.18 | brlcad | yea |
| 14:48.29 | brlcad | or you asking for some other reason? |
| 14:48.35 | claymore | Yea, I was in for a bit on Friday. Took care of all that. |
| 14:49.05 | claymore | General BRLCAD coding questions ;) reading through libged, trying to get a handle on things. |
| 14:49.36 | brlcad | well ask away! :) |
| 14:49.43 | claymore | I have a good class layout for the GS, just need to start getting the specifics worked out now. |
| 14:50.09 | ``Erik_ | the blue pill |
| 14:50.42 | claymore | but, I need to see how deep the rabit hole goes. |
| 14:50.43 | ``Erik_ | if y ou just have the descriptor and want the handle, use fdopen() :D *duck* |
| 14:51.49 | claymore | get his 11 peice set and performs a rimshot... badoom ching. |
| 14:57.10 | ``Erik_ | interesting, http://pastebin.bzflag.bz/d6384593 |
| 15:11.52 | *** join/#brlcad elmom (n=elmom@hoasnet-ff04dd00-187.dhcp.inet.fi) | |
| 15:11.54 | *** join/#brlcad ``Erik_ (i=erik@c-68-54-174-162.hsd1.md.comcast.net) [NETSPLIT VICTIM] | |
| 15:14.15 | louipc | yeah tkhtml3 isn't installing in the brlcad directory |
| 15:32.19 | *** join/#brlcad elite01 (n=omg@unaffiliated/elite01) | |
| 15:35.26 | *** join/#brlcad ``Erik_ (i=erik@c-68-54-174-162.hsd1.md.comcast.net) [NETSPLIT VICTIM] | |
| 16:00.31 | CIA-24 | BRL-CAD: 03bob1961 * r33107 10/brlcad/trunk/ (19 files in 9 dirs): Moved g_qa functionality to libged. Port g_qa to windows. |
| 16:22.58 | clock_ | "you'll have enough sleep in the grave" - brlcad is a tough guy |
| 16:23.08 | clock_ | likes this reckless aggressive creativity |
| 16:28.46 | brlcad | doesn't think it's reckless |
| 16:29.40 | clock_ | Recklessness (psychology), a state of mind in which a persons acts without caring what the consequences may be |
| 16:29.45 | clock_ | Doesn't apply for this case>? |
| 16:35.23 | claymore | brlcad: When it comes to the Geometry Service: What had you invisioned for the in-memory representation of geometry? Using the existing c structs? |
| 16:35.55 | claymore | If so, would the svn store then be full of mini-.g files? |
| 16:35.57 | brlcad | claymore: yes, librt already manages geometry |
| 16:36.43 | brlcad | there's some value wrapping them in objects, but still the actual geometry still being via librt |
| 16:36.47 | claymore | I am trying to find the line between librt and a GeometryManager/CachManager is.... |
| 16:37.06 | claymore | CacheManager even. |
| 16:39.18 | brlcad | yeah, svn store consists of .g files broken out |
| 16:40.00 | claymore | Now, is that also a long term solution? Or would we want a slightly more efficient binary format for the geometry fragments in the svn store? |
| 16:40.58 | brlcad | for now it is, our format is actually really compact and efficient as it is |
| 16:41.30 | brlcad | doesn't get much more streamlined than a straight-up binary serialization of the exact data |
| 16:41.49 | claymore | Right, understood. I was just wondering how much could be gained by slimming down the header/footer for the future bin format... thats all ;) |
| 16:42.28 | brlcad | actually for long-term, there would likely be more benefits by using a more flexible non-binary backend store .. but that's a long ways out and would require a lot of testing |
| 16:42.47 | brlcad | current header/footer is like 100 *bytes* |
| 16:43.14 | claymore | pure wastefulness. tsk tsk. A byte is a byte no matter how small. ;) |
| 16:43.15 | brlcad | add a text attribute on an object and you use up more space than that |
| 16:44.05 | clock_ | PDP had like 9 bit bytes didn't |
| 16:45.23 | claymore | Different question then: Since I am relatively unfamiliar with librt, does librt contain the list/tree of db_internals or is that managed external to librt? |
| 16:47.54 | brlcad | I'm expecting our average "object" size to be around 1k for implicits, 10k for spline breps, and 100k for polygonal breps (includes attribute and revision changeset data) |
| 16:48.38 | brlcad | so the .1k wrapper isn't going to amount to much, less than 99% of the data being stored -- and if it is a problem, it can of course be looked into then |
| 16:54.59 | claymore | Different question then: Since I am relatively unfamiliar with librt, does librt contain the list/tree of db_internals or is that managed external to librt? |
| 16:57.38 | brlcad | no, it provides it -- when you open a .g file, you get back a "database instance" |
| 16:57.44 | claymore | 1k for implicits.... really? Are you talking on average? Seems to me that a sphere would be much smaller than 1k |
| 16:58.14 | brlcad | that dbi gives you a handle on a variety of routines, one being a "directory" that you can lookup |
| 16:58.36 | claymore | thinks. |
| 16:59.16 | claymore | I dunno how well that is going to translate to a the way I am envisioning the 'shared geometry' concepts... |
| 17:00.02 | claymore | .... perhaps the cachemanager will simply be holding an array/list/set of db instances? |
| 17:01.31 | brlcad | hm, it could but I didn't envision the GS talking much to librt directly |
| 17:01.48 | brlcad | almost entirely via libged and (even moreso) the GE |
| 17:02.36 | claymore | My current design is that the GE wraps up all of libged functionality and the GE also contains the GeometryManager |
| 17:03.08 | starseeker | ``Erik: You're specifying your tcl and tk in /usr/local - tkhtml3 is a tcl/tk package, so it's going to try to install in the "correct" place for tcl/tk packages on that system - I'm assuming that's the TEA behavior |
| 17:03.17 | claymore | the GeometryManager is what is doing all the caching and IO of the geomtery, regardless of its source or destination. |
| 17:03.34 | starseeker | as I understand it, that behavior is necessary for package require ... to function correctly |
| 17:03.35 | brlcad | that sounds reasonable |
| 17:04.51 | claymore | brlcad: now, besides the fact that we will be using libged, we will still need a way to store (cache) and correlate the bits of geometry so as to provide multi-user access. So, I am stuck on what data struct the GeometryManager (GeoMan) will be caching... db internals? |
| 17:05.52 | brlcad | Geometry objects -- enter data containers that GE needs to have |
| 17:05.59 | starseeker | growls at his email |
| 17:06.27 | brlcad | those geometry objects utilize db internals |
| 17:07.25 | claymore | starseeker: I think i figured out what was wrong with the way we were doing the email thing. Swing by and I think we can make it work! |
| 17:08.22 | claymore | brlcad: So a GeometryObject will: a) replace everthing a db internal has/can do, or b) have a db internal as an aggregate and just add some extra fields? |
| 17:08.42 | brlcad | some mix of b) and c) |
| 17:08.44 | starseeker | claymore: thanks! on my way |
| 17:09.19 | brlcad | it has a handle on the geometry via librt representation |
| 17:09.41 | brlcad | we might add extra fields, but all I/O should still be going through librt so I'm not sure they'd be extra |
| 17:10.40 | brlcad | two things that are useful to read up on are what's already in rt^3 for the geometry engine that daniel's worked on as well as what is in the jbrlcad module and how it structures object management |
| 17:11.12 | *** join/#brlcad geocalc (n=geocalc@91-171-212-221.rev.libertysurf.net) | |
| 17:11.17 | brlcad | I've not been able to review daniel's latest work in detail, but what I've seen quickly looking has been good |
| 17:11.39 | brlcad | I have read john's jbrlcad layout in detail and *really* like it |
| 17:11.52 | brlcad | it's an outstanding OO organization of librt |
| 17:12.02 | brlcad | just incomplete |
| 17:12.12 | brlcad | and in the wrong language :) |
| 17:18.37 | claymore | brlcad: Okay, I looked at jbrlcad about a year ago, but I need to refresh my memory. I'll look at what daniel has done. |
| 17:19.48 | brlcad | from your perspective, I think the take-home point is just going to be that there's going to be "some" object that represents/links/is geometry and it is that object that you could cache |
| 17:19.58 | claymore | also, we will need a way to keep all the geomitry bits unique, so I was thinking of using a long for the OID... which we would have to piggyback as an attribute for now. |
| 17:20.43 | brlcad | yeah, something like that |
| 17:20.43 | claymore | understood, just trying to find the logical point in which to plan to so I am not re-creating work :/ |
| 17:20.52 | brlcad | though longs aren't probably going to be long enough for a UUID |
| 17:21.26 | brlcad | and UUID's are possibly/probably the way to go -- not that they'd get exposed at the GS level though |
| 17:21.52 | claymore | ... why not at the GS level? |
| 17:22.19 | claymore | oh, when I say long, I am referring to an int64 (sorry) |
| 17:23.55 | claymore | I am thinking that 18,446,744,073,709,551,615 unique peices of geometry should be enough.... don't you? |
| 17:24.32 | brlcad | one of the problems i'm hoping to resolve with the new geometry interfaces is having a unified handle system without having the problems of id->name mappings |
| 17:25.07 | brlcad | the difference between uuid's and urls and what they imply on referencing as a system of content management |
| 17:26.22 | claymore | not sure what you are trying to say besides: each geometry bit needs to be able to be universally and uniquely identified.... |
| 17:26.52 | brlcad | claymore: perhaps, but UUID's are 128-bit -- even less chance for collision and can be used as auto-generated hashes |
| 17:27.16 | brlcad | claymore: yeah, I'm saying that -- but there are ways you can do that |
| 17:27.28 | brlcad | take for example how regions are presently identified |
| 17:27.45 | brlcad | there is an integer that is attached to an object |
| 17:28.14 | claymore | What did you have in mind for the uuid control? Centralized worldwide server? or will the UUID's only be Unique and Universal inside the bounds of the an SVN store? |
| 17:28.16 | brlcad | that integer is then reported by our engine and referenced by the analysis codes to identify objects |
| 17:29.29 | claymore | stares in horror at his use of ingrish. |
| 17:29.31 | brlcad | don't need/want a centralized server for uuid's -- there are plenty of algorithms that allow for distributed ID generation |
| 17:31.31 | brlcad | even if you used purely random generation, the chance for collision is something on the order of 2^122 probability |
| 17:31.39 | claymore | Okay, back to my question of "why wouldn't the uuid be exposed at the GS level?" I don't see how it couldn't be exposed. If we are going to not want any ID<->Name mappings, then aren't we going to use the uuid as the sole means of object Lookup and Identification? |
| 17:31.56 | claymore | those are good odds ;) |
| 17:32.20 | brlcad | pretty damn good odds, and if there is a conflict, you'd probably know about it :) |
| 17:32.26 | brlcad | and you could just ask for another |
| 17:32.54 | brlcad | or you'd be just as likely to never run into the duplicate |
| 17:33.33 | brlcad | right, we'd either have to solely use UUID's as the sole means (when just isn't user friendly) or use the name as the sole means (which I'm much more inclined to sort out) |
| 17:34.27 | brlcad | sorting out a global resource identifier that localizes and can map 1-1 with a UUID on the backend (but only on the backend, e.g. svn-level) |
| 17:34.51 | claymore | Why not have the code use the UUID as the sole means while any User Interactive aspect just calls the MyGeoObject.getName() function and displays the string? |
| 17:35.24 | brlcad | that's entirely possible .. just less than ideal |
| 17:35.35 | brlcad | i mean it's the same problem of region idents now |
| 17:35.40 | brlcad | they were meant to be used that way |
| 17:35.43 | brlcad | but they're not |
| 17:35.59 | claymore | But region id's are not unique.... |
| 17:36.07 | brlcad | they crept into common use through most tools, exposed everywhere through the ui's |
| 17:36.08 | claymore | so, I think thats a different case. |
| 17:36.55 | brlcad | it is a different case, but the fact that there's a non 1-1 mapping is part of the problem |
| 17:37.40 | claymore | In existing BRLCAD databases, the string Name is unique, but the Region ID isn't. I am proposing that each bit of geometry has a UUID as its 'global' identifier and the Name is just an attribute to be accessed whenever needed. |
| 17:37.50 | brlcad | if the 1-1 problem is taken care of, then there's a lot less incentive for ui creeping |
| 17:38.55 | claymore | just to understand: the 1-1 problem is: We can have to things named 'Bolt' but with different UUIDs. |
| 17:39.10 | brlcad | right |
| 17:39.53 | brlcad | and I get what you're suggesting -- that's certainly doable, but it doesn't address the problem and has a lot to be desired for data management |
| 17:40.05 | claymore | Further: From a user perspective, the only way to ditinguish between both 'Bolt's is to look at the UUID... and thats the 'creep' you are speaking of? |
| 17:40.15 | brlcad | all I'm suggesting that'd be different, actually is a name that includes context so that the names are also unique |
| 17:40.41 | brlcad | right, that'd be one way |
| 17:40.48 | brlcad | there are other ways for that uuid to creep in |
| 17:41.28 | brlcad | but then if you can make the "name" actually include context (think URL context or namespace context in code) then you have a 1-1 mapping |
| 17:41.52 | claymore | Hrm, what about this: |
| 17:41.54 | brlcad | and possible don't even need the uuid, but it's a really efficient hash |
| 17:42.53 | claymore | Each and every peice of geometry will exist stand alone, but sorted into categories and subcategories. Think of a large parts wherehouse. |
| 17:44.47 | claymore | THe next werehouse over contains lots of 'parts lists' that refer to the individual parts in the first werehouse |
| 17:45.37 | claymore | so, a 'bolt' isnt a bolt, but rather: '/hardware/faseners/9.16th/3in/aluminum/bolt.g' |
| 17:46.08 | brlcad | that's exactly the url context I was referring to :) |
| 17:46.27 | claymore | well then.... GOOD IDEA ;) |
| 17:46.48 | brlcad | there are still problems to be solved with that, though |
| 17:47.02 | claymore | doesn't like the amount of effort it will take to populate the initial parts werehouse :/ |
| 17:47.02 | brlcad | uniqueness guarantees are a problem, but potentially minimized |
| 17:47.32 | claymore | problems like? |
| 17:50.23 | brlcad | well that works well for stuff that gets organized as such down the road, but for uniqueness you still want to be able to distinguish between my bolt and your bolt |
| 17:51.01 | brlcad | or even at a very basic level -- I make a sphere, you make a sphere -- how can I refer to one vs the other (and potentially still call them both 'sph') |
| 17:52.10 | brlcad | that's where the rest of a URL comes into the picture, there's an implicit username, working host, and port that are part of every url |
| 17:52.16 | claymore | but if each object that is checked into the parts werehouse is issued a UUID, then shouldn't that take care of the 'my /hardware/faseners/9.16th/3in/aluminum/bolt.g' vs 'your /hardware/faseners/9.16th/3in/aluminum/bolt.g' ? |
| 17:53.04 | brlcad | that would, but then it's not 1-1 and you are back to the same problem of having an insufficient context to distinguish objects |
| 17:55.49 | claymore | So, to capture yor thoughts, you are ideally thinking that a GeoObject will have a UUID for speed of lookup AND a UUname for easy human identification? |
| 17:55.51 | brlcad | it's not a huge issue, the problem has been pretty much solved for distributed cms and distributed scm's |
| 17:56.12 | brlcad | yeah, basically |
| 17:57.04 | claymore | Just to re-inforce my understanding.... |
| 17:57.56 | brlcad | even if only a portion of the UUname is displayed most of the time (e.g. "bolt" instead of "cad://loman@fe80::21b:63ff:fe03:3cdf%en1/hardware/faseners/9.16th/3in/aluminum/bolt") |
| 17:59.25 | claymore | Okay, I understand that. But how/where will the svn side look when its all checked in? Where will the username and host be stored? |
| 18:00.25 | claymore | in a /hardware/faseners/9.16th/3in/aluminum/versions.file' ? |
| 18:05.52 | brlcad | that's all TBD, but the UUID could be useful there |
| 18:06.13 | brlcad | e.g. using a non-hierarchical or simple two-level hierarchy instead of having the entire hierarchy on disk as a hierarchy (because it's technically not a hierarchy, it's a graph) |
| 18:07.57 | brlcad | I think that'll be more apparent once we start hooking in the svn libs |
| 18:09.15 | claymore | Hrm, okay. Got time for more Brain picking? |
| 18:10.50 | brlcad | is just coding, been coding non-stop since friday |
| 18:11.16 | brlcad | unfortunately in a non-compile state that entire time, or there would have been dozens of commits .. but just about to start the flow back up :) |
| 18:12.20 | claymore | far be it for me to slow your roll, but I'll keep firing Q's then ;) |
| 18:12.55 | brlcad | sings, "it's a small world" .. http://www.flickr.com/photos/36383814@N00/2989996039/sizes/o/in/pool-930035@N21/ |
| 18:15.37 | claymore | I see two troublemakers.... |
| 18:16.20 | louipc | wow that's trippy |
| 18:16.58 | claymore | actually feels like throwing up now. |
| 18:18.02 | claymore | not enough chicks imo. |
| 18:18.11 | brlcad | indeed |
| 18:18.16 | brlcad | http://www.flickr.com/photos/halostatue/2996087302/sizes/o/in/pool-930035@N21/ |
| 18:18.18 | claymore | wonders when he gets to go to a conference..... |
| 18:18.47 | brlcad | http://www.flickr.com/photos/halostatue/2996023060/sizes/o/in/pool-930035@N21/ |
| 18:20.18 | claymore | well hell, did you all do anything else besides take pictures?! |
| 18:22.01 | claymore | brlcad: where was that held? |
| 18:24.21 | brlcad | at the googleplex |
| 18:24.32 | brlcad | mountain view, CA |
| 18:24.53 | brlcad | there are a bunch of other pictures on flickr from others |
| 18:25.30 | brlcad | http://www.flickr.com/photos/tags/googlesummerofcode/ |
| 18:26.28 | brlcad | there are other better tags, but that's a jumping point |
| 18:28.17 | brlcad | http://www.flickr.com/groups/930035@N21/ |
| 18:29.05 | claymore | Looks like fun. Big of a sausage fest, but still fun :P |
| 18:29.16 | claymore | big = bit. |
| 18:29.35 | brlcad | yeah, huge sausage fest |
| 18:30.39 | brlcad | actually above industry average .. I think it was quoted as around 6% at the summit, but average for OSS is something like 2.5% |
| 18:31.27 | louipc | more guys into open source? |
| 18:31.40 | brlcad | yeah, a lot more |
| 18:31.55 | brlcad | average for CS is in the low teens iirc |
| 18:37.38 | *** join/#brlcad MB3 (i=Matthew@whitecalf.net) | |
| 18:37.42 | claymore | brlcad: Back to the GS: To simplify things, would making the .g file name the same as the object in it be a smart thing to do? aka Bolt.g has /Bolt.s inside it? |
| 18:39.05 | ``Erik_ | *burp* |
| 18:41.37 | brlcad | claymore: hm, why does that matter? :) |
| 18:42.19 | claymore | You're right. If we are going to do it stupid, we're going to do it MY WAY. MUWAHAHAHA. |
| 18:43.03 | claymore | Also, how are we going to represent combinations and regions? Text files? |
| 18:44.01 | brlcad | objects like all others, they way they presently are |
| 18:44.36 | claymore | I ment how in the svn repository? |
| 18:44.44 | brlcad | does too :) |
| 18:45.26 | brlcad | they have most of the same requirements as any other objects |
| 18:45.37 | claymore | so, a region will be its own .g, with no geometry in it? If thats the case, how do we link the Region members to the geometry, via the UUID or the UUName? |
| 18:47.03 | brlcad | it is "geometry", just potentially without an evaluated form (or maybe it does exist) |
| 18:47.56 | brlcad | they way it presently works is via locally scoped (file-scoped) name references -- that would have to change to a UUName |
| 18:48.45 | claymore | Will the current character-rules allow us to use all the characters in the 'url' in an BRL-CAD object name? |
| 18:50.09 | brlcad | oh, there may be some things that need slight changing, but there aren't any at the moment that jump out as being a problem |
| 18:51.30 | claymore | Okay. Now when it comes to the svn 'heirarchy' were you saying that there shouldn't be a heirarchy? I got confused with what you were saying. |
| 18:52.12 | brlcad | they get stored as plan c-strings, so pretty much anything goes at the storage level -- it'd only be places in the processing that might need to be changed |
| 18:52.28 | *** join/#brlcad elite01 (n=omg@unaffiliated/elite01) | |
| 18:52.50 | brlcad | there isn't exactly a geoemtry hierarchy, so representing geometry hierarchically in the revision store is problematic |
| 18:53.28 | brlcad | if we required a filestore that supported hard links of directories, that might be possible, or if we stash some form of soft links it might work |
| 18:53.47 | claymore | soft link? |
| 18:53.54 | brlcad | we talk about it as a hierarchy, but it's really an acyclic graph |
| 18:55.21 | claymore | 'what' is a dag? |
| 18:55.26 | brlcad | soft links are probably the way to go, just because it'll be really cool to check out entire subtree categories of geometry .. but it'll be tricky |
| 18:55.47 | brlcad | hm? |
| 18:56.00 | brlcad | directed acyclic graph .. |
| 18:56.09 | claymore | thinking heirarchially (is that a word?): |
| 18:56.23 | brlcad | http://en.wikipedia.org/wiki/Directed_acyclic_graph |
| 18:56.32 | claymore | I am seeing two top level groups: /parts and /models |
| 18:56.59 | claymore | inside parts are mere organizational subdirectories... as many as are needed. |
| 18:57.16 | claymore | at the bottom level of the /parts 'tree' are the actual .g files. |
| 18:57.29 | claymore | and all the vairous versions of individual .g files. |
| 18:57.37 | brlcad | the line between parts and models is really context-driven |
| 18:57.44 | claymore | exactly. |
| 18:57.59 | mafm | I go home, take care |
| 18:58.56 | brlcad | for one domain, it's one level, for another it's entirely different -- so I'm really not inclined to say "that line is here" in the geometry or even to prescribe an organization -- that can be up to users to a large extent |
| 18:59.26 | claymore | now inside '/models' are all the subdirectorys to organize however the 'company in question' wants to organize it. |
| 18:59.28 | brlcad | from a geometry management perspective, the issues worth tracking are when something goes from being a shape to representing something solid |
| 18:59.48 | brlcad | and whether the geometry is fully-resolved, fully-constrained, etc |
| 19:01.44 | claymore | the problem is, I see a 'chicken or the egg' scenario here. We can't fully abstract the data store methodolgy. There has to be some standards set down. |
| 19:02.19 | brlcad | "We can't fully abstract the data store methodolgy" .. means what? |
| 19:02.29 | brlcad | we're using a fully abstracted data store for the revision control |
| 19:02.56 | brlcad | so by default that would extend to us, we only constrain it on our end via what we support or don't support |
| 19:03.05 | claymore | is thinking... |
| 19:04.48 | claymore | Okay, Understanding that SVN will do whatever we want... |
| 19:05.24 | claymore | and that we intend to store Combination.g's Region.g's and Solid.g's |
| 19:05.46 | claymore | in what ever heirarchy we want. |
| 19:05.48 | brlcad | don't think of them in that regard -- they're just "objects" |
| 19:05.55 | brlcad | we have geometry objects and non-geometry objects |
| 19:06.30 | brlcad | those objects become files (or maybe directories) in the revision store |
| 19:07.14 | brlcad | but yeah, any hierarchy or non-hierarhy we want -- I mean we could store absolutely everything in one massive .g file, all revisions, all data, and that would actually work |
| 19:07.29 | brlcad | it's just unclean and would be ill-constructed (particularly for revision tracking) |
| 19:07.42 | claymore | BrlcadObj is the abstract then. GeoObj isa BrlcadObj, NonGeoObj isa BrlcadObj, Comb isa GeoObj, etc, etc... |
| 19:08.35 | brlcad | s/Brlcad/Database/ I believe is how it's been referred to thusfar |
| 19:08.54 | brlcad | but yeah, sorta |
| 19:09.12 | brlcad | that's where a lot of that is already sorted out (or at least should be sorted out) on the GE side of things |
| 19:09.13 | claymore | ' s/Brlcad/Database/' = ??? |
| 19:09.31 | brlcad | ah, s/// is a substitution pattern :) |
| 19:09.42 | brlcad | substitute this for that |
| 19:10.03 | claymore | you just lost me. |
| 19:10.07 | brlcad | echo "substitute this for that" | sed 's/this/that/' |
| 19:10.12 | brlcad | substitute that for that |
| 19:10.31 | claymore | got that, just failing to see how it applied :/ |
| 19:10.58 | brlcad | common ircism -- means referring to some previous statement, apply the replacement |
| 19:11.20 | ``Erik_ | vi ftw |
| 19:11.30 | claymore | is fixing the train of thought derailment in is head.... one moment please :) |
| 19:11.33 | brlcad | your statement in that case -- they've been referred to as DatabaseObject's |
| 19:12.00 | claymore | who reffered to them as that? |
| 19:12.01 | brlcad | there's little value in using our name over saying what we think it is |
| 19:12.10 | brlcad | librt refers to them as that |
| 19:12.47 | claymore | ah, okay. |
| 19:12.56 | brlcad | jbrlcad does as well, don't recall whether daniel preserved that |
| 19:13.05 | claymore | where is daniels work? |
| 19:13.56 | brlcad | just saying from a nomenclature perspective, really should avoid pronouns in the name where they describe a more general concept |
| 19:14.42 | brlcad | that's a general point of rule for any system really, they usually end up being turds or opaque objects an external viewer |
| 19:14.47 | ``Erik_ | class Thing :: Stuff { |
| 19:14.54 | brlcad | e.g. our few "MUVES" routines in librt.. very turdish |
| 19:15.21 | brlcad | there is an underlying concept that they represent, that should have been used to name them instead of "the way those guys do it" |
| 19:16.57 | brlcad | thinks he should push a tarball before merging his changes |
| 19:17.08 | claymore | okay, back on track: Pertaining to the svn store, if all the combination and region objects contain references to other UUNames (aka fully qualified paths) then is it still a dag? |
| 19:17.28 | claymore | reword: |
| 19:17.39 | claymore | okay, back on track: Pertaining to the svn store, if all the combination and region objects contain references to other objects via UUNames (aka fully qualified paths) then is it still a dag? |
| 19:18.29 | brlcad | yep, it still represents the same thing |
| 19:19.34 | claymore | recap: Svn lookup should be via the UUName but inmemory referencing should be via the UUID for speed? |
| 19:19.56 | brlcad | CSG construction is (usually) inherintly described by a DAG, when can be restructured or displayed as a tree, even a binary tree -- but they're non-unique nodes |
| 19:21.12 | brlcad | probably, but i don't think that's a decision that has to be made now really |
| 19:21.19 | brlcad | just more designing it such that the user never has to see/know that there's a UUID as a constraint |
| 19:22.02 | brlcad | solving local naming (i.e. UUnames) for the usability aspects |
| 19:22.22 | brlcad | and then using UUIDs where it makes sense (for performance or ease of management, etc) |
| 19:24.18 | claymore | where is Daniels GE work? |
| 19:24.29 | brlcad | he checked it in |
| 19:25.06 | claymore | brlcad, rt^3 ? |
| 19:25.11 | brlcad | yes |
| 19:27.26 | claymore | just not used to the layout of directories yet... difficult to see where one aspect starts and the other stops.... |
| 19:28.21 | brlcad | it's not cleaned up yet, it's rather lacking unification |
| 19:29.53 | brlcad | it's common "nibm"itiz .. everyone that's been committing has been ignoring what everyone else does |
| 19:36.50 | claymore | needs caffine..... |
| 19:40.03 | claymore | In relation to the GS: Could you compare/contrast a single proces, multithreaded approach to a multiprocess approach? |
| 19:41.27 | brlcad | for what we're doing, the difference is pretty insignficant (and if either is done well, it becomes even less important) |
| 19:41.59 | brlcad | multiprocess is easier to stab up on *nix platforms, but interprocess communication is a pita |
| 19:42.54 | brlcad | multithreaded is easier to intercommunicate if needed and better for portability, but can quickly get mired in deadlock and obscure bugs |
| 19:47.00 | brlcad | pervasive multithreaded is usually *very* hard to do well and even harder to maintain, high-level parallelism is usually a lot easier to manage over a long haul |
| 19:49.03 | claymore | if you had a choice, whats yoru pick? |
| 19:55.03 | brlcad | high-level parallelism where it's useful, where you have fairly independent tasks |
| 19:56.04 | brlcad | if it's high-level, it doesn't really matter if you use threads or forked processes |
| 19:56.29 | brlcad | e.g. bu_parallel is meant for such a level of parallelism during ray-tracing |
| 19:57.08 | brlcad | the backend implementation uses both threads and procs, depending on the platform, performance, simplicity, etc |
| 20:07.23 | CIA-24 | BRL-CAD: 03bob1961 * r33108 10/brlcad/trunk/src/libtclcad/ged_obj.c: Turn init routines for the older tcl interfaces back on for now. |
| 20:20.58 | claymore | what is the advantage to having both db internal and db external structs? |
| 20:22.37 | CIA-24 | BRL-CAD: 03brlcad * r33109 10/brlcad/trunk/src/libgcv/: ignore generated files/dirs |
| 20:23.55 | brlcad | external is fully serialized, 1-1 mapping with disk data |
| 20:24.30 | brlcad | internal is uncracked just enough to serve as an object directory so you can see what is on disk |
| 20:25.00 | brlcad | big impact on performance |
| 20:25.00 | claymore | so External is a 'bookmark' of sorts? |
| 20:25.15 | brlcad | mm, doesn't sound right |
| 20:25.28 | brlcad | more of an opaque bag of bytes |
| 20:25.43 | claymore | can a dbExternal write to disk? |
| 20:26.05 | brlcad | i don't know what you're looking at |
| 20:26.25 | brlcad | in general for librt, though, a db_external is (exactly) what is written to disk |
| 20:26.46 | claymore | I am correlating jBrlcad with brlcad |
| 20:27.25 | brlcad | it only correlates with (a small portion) of librt, but okay :) |
| 20:27.53 | claymore | So in an OO setting, a DB_external *could* write itself to disk, but in straight C, something writes the the db_external to disk. |
| 20:28.08 | brlcad | right |
| 20:28.34 | brlcad | librt being procedural and data-driven, there are structures and collections of routines that work on those structures and go to/from other structures |
| 20:28.53 | brlcad | so there are a slew of routines that deal with db_externals .. and another set that deal with db_internals |
| 20:30.39 | claymore | I am just wondering, in an OO setting like jBrlcad, wouldn't it make sense to combine db_internals and db_externals? They are very close to being the same.... |
| 20:33.29 | brlcad | they're just as close to being the same on the procedural side |
| 20:33.38 | brlcad | being OO doesn't change that one bit |
| 20:34.31 | claymore | okay.. regardless, wouldn't it simplifiy things a bit? |
| 20:34.54 | brlcad | removing functionality usually does |
| 20:35.24 | claymore | how would merging the two structs remove functionality? |
| 20:36.31 | brlcad | well, let me ask you -- why do you suppose the effort would have been taken to separate them out in the first place? |
| 20:38.05 | claymore | I don't know, thats why I am asking you. They could have been seperate by design from the begining and have just never been refactored due to time required... |
| 20:39.11 | brlcad | nah, v5 databases are the fifth major refactoring of the geometry I/O layer |
| 20:39.44 | brlcad | the performance impact is really substantial, you only unpack exactly what is needed when you need it |
| 20:40.40 | claymore | So, at any given time, there is a db_internal instance and a db_external instance for every object in the db? |
| 20:40.41 | brlcad | the alternate is usually unpacking everything or storing data unserialized |
| 20:41.26 | brlcad | no, internals only if they're actively being used for something |
| 20:42.04 | claymore | ah, now *that* makes sense. thanks ;) |
| 20:42.19 | brlcad | externals are the pointers to the disk records |
| 20:42.52 | brlcad | and can actually be the exact bytes on disk, you could memory map a file, point some pointers to the data, and they'll be valid externals |
| 20:45.34 | claymore | has thought/learned himself into a headache. Time for home. |
| 20:45.37 | claymore | lata |
| 20:45.42 | brlcad | cya! |
| 20:54.18 | starseeker | brlcad: Are you building a release tarball? |
| 20:54.35 | starseeker | doesn't know if he should commit more man1 pages right now... |
| 21:01.50 | ``Erik_ | three hundred forty undecillion two hundred eighty-two decillion three hundred sixty-six nonillion nine hundred twenty octillion nine hundred thirty-eight septillion four hundred sixty-three sextillion four hundred sixty-three quintillion three hundred seventy-four quadrillion six hundred seven trillion four hundred thirty-one billion seven hundred sixty-eight million two hundred eleven thousand four hundred and fifty-six is sufficient, |
| 21:02.17 | starseeker | sufficient what? hard disk space? |
| 21:02.30 | ``Erik_ | unique pieces of geometry |
| 21:02.36 | starseeker | ah |
| 21:05.44 | *** join/#brlcad clock_ (n=clock@77-56-69-135.dclient.hispeed.ch) | |
| 21:16.23 | brlcad | starseeker: trying to |
| 21:16.27 | brlcad | doing testing now |
| 21:18.31 | starseeker | OK - should I hold commits for a bit? |
| 21:19.59 | CIA-24 | BRL-CAD: 03brlcad * r33110 10/brlcad/trunk/src/ (conv/dxf/ libgcv/): more ignores |
| 21:20.34 | brlcad | starseeker: ideally |
| 21:20.36 | CIA-24 | BRL-CAD: 03brlcad * r33111 10/brlcad/trunk/src/proc-db/: ignore metaball product |
| 21:20.41 | starseeker | ok |
| 21:20.45 | starseeker | will do |
| 21:20.47 | brlcad | unless they're cleanup/fixes |
| 21:20.55 | starseeker | did you suck in bob's g_qa changes? |
| 21:21.11 | brlcad | yeah :/ |
| 21:21.15 | brlcad | had to start all over |
| 21:21.41 | starseeker | that should probably be a NEWS item unless you want to back up to the revision before that |
| 21:21.51 | starseeker | apparently he ported it to Windows |
| 21:22.30 | CIA-24 | BRL-CAD: 03brlcad * r33112 10/brlcad/trunk/src/other/tkhtml3/: ignore Makefile |
| 21:22.57 | brlcad | depends if the tests pass |
| 21:45.17 | brlcad | aaand, fail |
| 21:45.23 | brlcad | gqa crashes |
| 21:45.28 | brlcad | fails basic regression test |
| 22:13.36 | *** join/#brlcad Bariton (n=Bary@p5B14FC70.dip.t-dialin.net) | |
| 22:15.40 | brlcad | sighs |
| 22:43.05 | CIA-24 | BRL-CAD: 03brlcad * r33113 10/brlcad/trunk/ (18 files in 9 dirs): revert the g_qa port to windows and addition to g_qa until after this release (revert r33107). it's crashing and infinite looping on at least Mac and Linux (and the regression tests are epic fail). |
| 23:03.54 | ``Erik_ | http://fc47.deviantart.com/fs14/f/2007/005/e/0/The_Simpsonzu_by_spacecoyote.jpg O.o |
| 23:11.44 | ``Erik | do we guarantee acyclicity of the graph? O.o |
| 23:38.05 | CIA-24 | BRL-CAD: 03brlcad * r33114 10/brlcad/trunk/src/librt/wdb.c: wdb_fflush is unnecessary. all db io operations are automatically flushed all the time after every db_write and during db_close. |
| 23:39.34 | ``Erik_ | poo |