From dankna at accela.net Sun Nov 7 02:29:22 2004 From: dankna at accela.net (Dan Knapp) Date: Sat, 6 Nov 2004 21:29:22 -0500 Subject: [elephant-devel] Elephant success story Message-ID: I thought a little praise for this project was in order. I'm a teacher by profession, and our school is doing report cards now. And, like many schools, we want a system that keeps bits of text to be re-used in different places, as appropriate... it requires a database. I spent about four days trying to put something together with MS Word's mail merge. I got 90% of the way there, but the things I couldn't make work were important. Each little thing I added broke something else, which then needed hours of debugging. With the deadline bearing down, I took a chance and started again from scratch, using OpenMCL with Elephant, and generating TeX output. It took just one night - about eight hours - to make the whole thing! Then I was able to incrementally add features over the next couple days. It was great being able to just treat database objects like any other object. It lets you do incremental development in true Lisp style. Working with an SQL server allows something similar, but of course with Elephant one keeps all the generality of Lisp. Elephant was also much easier to set up, and I can easily move the database from one machine to another, which turned out to be important. I do wish the :recover option to (open-store) were documented somewhere - I needed it at one point, and didn't see it mentioned anywhere until I looked in the source. But it worked perfectly once I did find it. If you don't document your features, nobody gives you credit for them! So, thanks! Elephant was very useful, and I can think of a couple personal things I'm going to use it for in the near future. Kudos. -- Dan Knapp From ben at medianstrip.net Sun Nov 7 18:17:59 2004 From: ben at medianstrip.net (Ben) Date: Sun, 7 Nov 2004 13:17:59 -0500 (EST) Subject: [elephant-devel] Elephant success story In-Reply-To: References: Message-ID: <20041107130130.E69295@contarex.medianstrip.net> Thanks for the thanks -- it's always nice to hear that one's work is appreciated! Right now the documentation is mostly in the docstrings. I made one pass for the 0.2 release, but it wasn't very verbose. Hopefully in the next majorish release they will get bigger. (I think :recover might be mentioned in the tutorial?) The next release will probably not happing for a month or so at least, as my co-coder is busy at the moment. We hope to fix some MOP issues, and whatever else comes up. In other news, I'm interested in making a web framework based on Araneida and Elephant. It would be nice to have a Seaside-ish web framework, though since CL doesn't have real continuations (especially not serializable ones!) probably this would be best acheived like Wee: http://www.ntecs.de/blog/Blog/WeeFramework.rdoc (as opposed to a CPS transformer.) Interested parties should contact me, I guess. take care, B ps does this mean I get an A on my report card? On Sat, 6 Nov 2004, Dan Knapp wrote: > I thought a little praise for this project was in order. I'm a teacher by > profession, and our school is doing report cards now. And, like many > schools, we want a system that keeps bits of text to be re-used in > different places, as appropriate... it requires a database. > > I spent about four days trying to put something together with MS > Word's mail merge. I got 90% of the way there, but the things I > couldn't make work were important. Each little thing I added > broke something else, which then needed hours of debugging. > > With the deadline bearing down, I took a chance and started again > from scratch, using OpenMCL with Elephant, and generating TeX > output. It took just one night - about eight hours - to make the whole > thing! Then I was able to incrementally add features over the next > couple days. > > It was great being able to just treat database objects like any other > object. It lets you do incremental development in true Lisp style. > Working with an SQL server allows something similar, but of course > with Elephant one keeps all the generality of Lisp. Elephant was also > much easier to set up, and I can easily move the database from one > machine to another, which turned out to be important. > > I do wish the :recover option to (open-store) were documented > somewhere - I needed it at one point, and didn't see it mentioned > anywhere until I looked in the source. But it worked perfectly once > I did find it. If you don't document your features, nobody gives you > credit for them! > > So, thanks! Elephant was very useful, and I can think of a couple > personal things I'm going to use it for in the near future. Kudos. > > -- Dan Knapp > > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel > From ben at medianstrip.net Tue Nov 9 22:34:10 2004 From: ben at medianstrip.net (Ben) Date: Tue, 9 Nov 2004 17:34:10 -0500 (EST) Subject: [elephant-devel] Re: MOP operations in elephant's metaclasses.lisp In-Reply-To: <200411091329.39176.bruno@clisp.org> References: <200411091329.39176.bruno@clisp.org> Message-ID: <20041109173028.P86407@contarex.medianstrip.net> Thanks for the info. We'll keep this in mind for the next release which will fix the MOP issues (hopefully!) If you need elephant for CLISP sooner than that (which should be in a couple of months or so), let us know. take care, B On Tue, 9 Nov 2004, Bruno Haible wrote: > Hi, > > Looking what it would take to port elephant-0.2.1 to GNU CLISP (which has > a fully functional MOP now, i.e. in the next release), I found two portability > problems, both in metaclasses.lisp: > > 1. > (defmethod slot-definition-allocation ((slot-definition persistent-slot-definition)) > :class) > > The MOP does not allow this. (The section "Implementation and User Specialization" > allows extending a GF such as slot-definition-allocation, but here you are > overriding the predefined method.) The right way to force a given property for > a slot-definition instance is an initialize-instance method. For example > > (defmethod initialize-instance :around ((slot persistent-slot-definition) &rest args) > (apply #'call-next-method slot :allocation :class args)) > > 2. > (defmethod compute-effective-slot-definition-initargs ((class persistent-metaclass) slot-definitions) > > The generic function compute-effective-slot-definition-initargs is not specified > by the MOP. But fortunately CLISP has it. > > Bruno > From ben at medianstrip.net Tue Nov 9 22:42:19 2004 From: ben at medianstrip.net (Ben) Date: Tue, 9 Nov 2004 17:42:19 -0500 (EST) Subject: [elephant-devel] Re: elephant and sbcl In-Reply-To: <20041109125357.GA13583@mail.fasl.info> References: <20041109125357.GA13583@mail.fasl.info> Message-ID: <20041109173414.I86407@contarex.medianstrip.net> Elliott -- Thanks for the info. Glad to hear people are using Elephant (and finding it useful!) Christophe told me that the way I do string serialization should continue to work -- with some adjustments. I'm guessing that elephant is dying because it is not correctly computing the number of bytes underlying a string. Probably there are other issues with the new SBCL unicode stuff as well. Another big headache for Unicode strings is going to be key sorting functions. One would like for string keys to be alphabetically stored -- in other words, one probably wants a (C?) function to sort strings. For Unicode this is of course rather difficult. In Lispworks / ACL, since they use UTF-16, I managed to steal some code from IBM's ICU project. Maybe a Lisp solution will be better in the long term -- though this will require good callback support. I've been waiting for the unicode stuff to settle down a bit more before attempting to get it to work. If people want this sooner rather than later, let me know. Of course I'm always willing to accept patches..... So -- it's on my TODO list for the next release. take care, B On Tue, 9 Nov 2004, Elliott Johnson wrote: > Hi Ben, > > I've played with elephant quite a bit. It makes life pretty nice :) > > Last night I coupled 0.2.1 with the latest SBCL (0.8.16.37) and it gave off some pretty > weird type errors that look like they are due to a mix of serialization and the new > unicode branch of SBCL. I showed in #lisp, but I though you might also like to see > what I got. > > Unfortunatly I couldn't get any real backtraces because it tossed me to the max > debugger level. You might find it helpful: http://paste.lisp.org/display/3668 > > HTH! > > -Elliott > From ben at medianstrip.net Sat Nov 13 16:02:27 2004 From: ben at medianstrip.net (Ben) Date: Sat, 13 Nov 2004 11:02:27 -0500 (EST) Subject: [elephant-devel] Sleepycat 4.3 Message-ID: <20041113105050.Y57860@contarex.medianstrip.net> This is mostly a reminder for myself..... But Sleepycat 4.3 has come out, which means real sequences! So the next version of Elephant will need to work with it. However this probably means either 1) losing backwards compatibility with 4.2, or 2) some extra work for me conditionalizing a lot of stuff. Is anyone out there wedded to 4.2? I'd rather have Elephant track the latest and greatest Sleepycat, and I'm a bit lazy and don't want to maintain compatibility with a lot of legacy versions, unless it is important to users. (C'mon, upgrading isn't that hard! And BTW updates of Sleepycat usually come with migration tools.) take care, B From xach at xach.com Sat Nov 13 18:58:33 2004 From: xach at xach.com (Zach Beane) Date: Sat, 13 Nov 2004 13:58:33 -0500 Subject: [elephant-devel] evaluation of initforms Message-ID: <20041113185833.GH28830@xach.com> It looks like adding the persistent-metaclass metaclass makes a defclass form evaluate its initforms at class-definition time. This is problematic for a class like: (defclass user () ((name :initarg :name :initform (error "Required slot"))) (:metaclass persistent-metaclass)) Is there any way to avoid evaluating the initform at class definition time? Zach From ben at medianstrip.net Sat Nov 13 19:33:07 2004 From: ben at medianstrip.net (Ben) Date: Sat, 13 Nov 2004 14:33:07 -0500 (EST) Subject: [elephant-devel] evaluation of initforms In-Reply-To: <20041113185833.GH28830@xach.com> References: <20041113185833.GH28830@xach.com> Message-ID: <20041113141158.Y77862@contarex.medianstrip.net> yes this is a known bug. (i think this is mentioned this in the docs, though not the tutorial.) i don't know how to fix this except to redo the MOP stuff -- e.g. wait until the next release. there is a test case for it already. sorry about that. the :initform (error) idiom can be encapsulated in a macro (though you probably already know that.) take care, B On Sat, 13 Nov 2004, Zach Beane wrote: > It looks like adding the persistent-metaclass metaclass makes a > defclass form evaluate its initforms at class-definition time. This is > problematic for a class like: > > (defclass user () > ((name :initarg :name :initform (error "Required slot"))) > (:metaclass persistent-metaclass)) > > Is there any way to avoid evaluating the initform at class definition > time? > > Zach > > > > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel > From dankna at accela.net Sat Nov 13 22:36:31 2004 From: dankna at accela.net (Dan Knapp) Date: Sat, 13 Nov 2004 17:36:31 -0500 Subject: [elephant-devel] Sleepycat 4.3 In-Reply-To: <20041113105050.Y57860@contarex.medianstrip.net> References: <20041113105050.Y57860@contarex.medianstrip.net> Message-ID: <76FE569C-35C4-11D9-8F62-000A95CBEDB2@accela.net> > Is anyone out there wedded to 4.2? I'd rather have Elephant track the > latest and greatest Sleepycat, and I'm a bit lazy and don't want to > maintain compatibility with a lot of legacy versions, unless it is > important to users. As long as migration is possible, it's no big deal to me, at least... -- Dan Knapp From xach at xach.com Mon Nov 15 16:25:03 2004 From: xach at xach.com (Zach Beane) Date: Mon, 15 Nov 2004 11:25:03 -0500 Subject: [elephant-devel] wedging elephant Message-ID: <20041115162503.GJ28830@xach.com> Through the course of messing around I've managed to wedge elephant a few times. Symptoms include unresponsive lookups (things seem to just hang), slot errors on the store controller, and once, incessant segfaults. I think I caused these in a few different ways, such as interrupting and aborting actions in progress, and not cleanly shutting down the connection. I might have done other things too. So, what are some good ways to prevent wedging? What sorts of behavior should I avoid? What's the worst thing that can happen? Might I lose all my data? Is recovery reliable? Zach From ben at medianstrip.net Tue Nov 16 04:46:47 2004 From: ben at medianstrip.net (Ben) Date: Mon, 15 Nov 2004 23:46:47 -0500 (EST) Subject: [elephant-devel] wedging elephant In-Reply-To: <20041115162503.GJ28830@xach.com> References: <20041115162503.GJ28830@xach.com> Message-ID: <20041115233945.L63045@contarex.medianstrip.net> i've managed to make elephant / sleepycat unresponsive by not properly shutting it down or misusing the connections, or breaking the threading contracts. (aborting transactions for me is usually pretty safe. maybe some lisps interrupt foreign calls and others don't?) i've personally never gotten segfaults. what do you mean by "slot errors on the store controller?" in general when i'm careful to use sleepycat as the docs dictate, it works ok. it's a little hard, especially in an interactive session, to write macros which guarantee correct usage, since typically connections stay open for a long while, so "with-open-file" doesn't make sense. i have personally never run into a situation where recovery didn't work. sleepycat has gotten a "bad reputation" amongst people who i tend to think are less than careful -- e.g. in the movable type community, i think. i think amongst people who care, like DBAs, it's considered reliable. i hope this answers your question. take care, B On Mon, 15 Nov 2004, Zach Beane wrote: > Through the course of messing around I've managed to wedge elephant a > few times. Symptoms include unresponsive lookups (things seem to just > hang), slot errors on the store controller, and once, incessant > segfaults. I think I caused these in a few different ways, such as > interrupting and aborting actions in progress, and not cleanly > shutting down the connection. I might have done other things too. > > So, what are some good ways to prevent wedging? What sorts of behavior > should I avoid? What's the worst thing that can happen? Might I lose > all my data? Is recovery reliable? > > Zach > > > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel > From mega at hotpop.com Thu Nov 18 14:42:32 2004 From: mega at hotpop.com (Gabor Melis) Date: Thu, 18 Nov 2004 15:42:32 +0100 Subject: [elephant-devel] db gc Message-ID: <04Nov18.154346cet.336116@fwall.essnet.se> Hello Currently I am investigating the possibility of replacing a cl-sql backend in a very simple web application after getting more and more dissatisfied with the abstraction level of that solution. I stumbled into elephant and it looks very nice. However, one of my toy tests that adds a lot of instances of a simple persistent clos class to root repeatedly (to the same key) seems to make %ELEPHANT grow and grow. I suspect the slot values don't get "garbage collected" as hinted by a note in: http://common-lisp.net/project/elephant/doc/The-Root.html Is that so? Is there a workaround? Cheers, G?bor Melis PS: One more thing that's been bothering me: is there a reason for add-to-root and get-from-root not following the more conventional/lispy root-value + setf approach? From ben at medianstrip.net Thu Nov 18 19:02:47 2004 From: ben at medianstrip.net (Ben) Date: Thu, 18 Nov 2004 14:02:47 -0500 (EST) Subject: [elephant-devel] db gc In-Reply-To: <04Nov18.154346cet.336116@fwall.essnet.se> References: <04Nov18.154346cet.336116@fwall.essnet.se> Message-ID: <20041118135658.E91422@contarex.medianstrip.net> Writing the GC is long overdue. There are some technical issues with this which have yet to be solved, actually. In the first pass, it will probably require taking the store off-line and running a separate gc program on it -- that shouldn't be too hard. it may be possible to write an online collector but as of yet i don't know how to do it. i expect the gc will come with the next release (in a month or so -- after i'm done teaching this quarter!) you're right, the root should have a setf expander. i was lazy when i was cobbling together those convenience functions. will do for the next release. btrees have a setf expander, i think, and the root is a btree, so if you want you can get the root slot-value from the store directly and use the expanders that way. thanks for your comments. i'm sorry i keep telling people "wait till the next release" but we really are too busy right now to work on this stuff. it WILL happen though, i promise. (if people want to help us, that would be great too!) take care, B On Thu, 18 Nov 2004, Gabor Melis wrote: > Hello > > Currently I am investigating the possibility of replacing a cl-sql backend in > a very simple web application after getting more and more dissatisfied with > the abstraction level of that solution. I stumbled into elephant and it looks > very nice. > > However, one of my toy tests that adds a lot of instances of a simple > persistent clos class to root repeatedly (to the same key) seems to make > %ELEPHANT grow and grow. I suspect the slot values don't get "garbage > collected" as hinted by a note in: > > http://common-lisp.net/project/elephant/doc/The-Root.html > > Is that so? Is there a workaround? > > Cheers, G?bor Melis > > PS: One more thing that's been bothering me: is there a reason for add-to-root > and get-from-root not following the more conventional/lispy root-value + setf > approach? > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel > From mega at hotpop.com Tue Nov 23 10:47:36 2004 From: mega at hotpop.com (Gabor Melis) Date: Tue, 23 Nov 2004 11:47:36 +0100 Subject: [elephant-devel] secondary indeces Message-ID: <04Nov23.114842cet.336250@fwall.essnet.se> Somewhat na?vely I set up a secondary index on a slot on expecting it to behave as in sql, i.e. change automatically when the slot value changes. Well, it didn't. In hindsight, it is really a stretch to expect elephant to that, but it would be very useful, because secondary indeces are often mutable. The way I'd go about it to write an after method for the slot writer that forces an update of the secondary index of the object, but (setf get-value) (value key (bt btree-index)) signals an error. G?bor (use-package :ele) (defclass x () ((key :accessor key :initarg :key) (index :accessor index :initarg :index)) (:metaclass persistent-metaclass)) (defun index-it (secondary-db primary-key x) (declare (ignore secondary-db primary-key)) (values t (index x))) (defparameter *x* (make-instance 'x :key 1 :index "a")) (defparameter *primary* (add-to-root "primary" (make-instance 'indexed-btree))) (defparameter *secondary* (add-to-root "secondary" (add-index *primary* :index-name 'index :key-form 'index-it :populate t))) (defun find-by-key (key) (get-value key *primary*)) (defun find-by-index (index) (get-value index *secondary*)) (setf (get-value 1 *primary*) *x*) (assert (eq *x* (find-by-key 1))) (assert (eq *x* (find-by-index "a"))) (setf (index *x*) "b") ;; These fail: (assert (eq *x* (find-by-index "b"))) (assert (null (find-by-index "a"))) From mega at hotpop.com Tue Nov 23 16:14:52 2004 From: mega at hotpop.com (Gabor Melis) Date: Tue, 23 Nov 2004 17:14:52 +0100 Subject: [elephant-devel] returning multiple values from a with-transactions block Message-ID: <04Nov23.171559cet.336151@fwall.essnet.se> -------------- next part -------------- A non-text attachment was scrubbed... Name: ele-mv.patch Type: text/x-diff Size: 1092 bytes Desc: not available URL: From ben at medianstrip.net Tue Nov 23 17:19:49 2004 From: ben at medianstrip.net (Ben) Date: Tue, 23 Nov 2004 12:19:49 -0500 (EST) Subject: [elephant-devel] returning multiple values from a with-transactions block In-Reply-To: <04Nov23.171559cet.336151@fwall.essnet.se> References: <04Nov23.171559cet.336151@fwall.essnet.se> Message-ID: <20041123121842.K79429@contarex.medianstrip.net> i have to admit some embarassment on my part on this issue. at some point i discovered multiple values were consing in CMUCL, and so i borked this out of the macro. i was planning on making a multiple-values version later. premature optimization, etc. thanks. i'll look into merging this with the next release. B On Tue, 23 Nov 2004, Gabor Melis wrote: > > From ben at medianstrip.net Tue Nov 23 17:29:51 2004 From: ben at medianstrip.net (Ben) Date: Tue, 23 Nov 2004 12:29:51 -0500 (EST) Subject: [elephant-devel] secondary indeces In-Reply-To: <04Nov23.114842cet.336250@fwall.essnet.se> References: <04Nov23.114842cet.336250@fwall.essnet.se> Message-ID: <20041123121954.E79429@contarex.medianstrip.net> i don't know how to handle this in any general fashion, because objects don't know when they are being stored in a btree with a secondary index. it's great you bring up this point, i'll definitely think about how to do it. one might consider registering mutation functions on object insert which would update secondary indices. however it seems nigh impossible to do this right. a persisted object may be loaded without the container btree loaded, in which case elephant has no idea that some (not loaded) secondary index needs to be updated. i will look into this issue. if you want to mutate the secondary index by hand, i think on the store-controller object there are two slots which are handles to the secondary index. one is opened as a secondary index, the other opened as a raw btree. you can update the raw one manually, but be careful! B On Tue, 23 Nov 2004, Gabor Melis wrote: > Somewhat na?vely I set up a secondary index on a slot on expecting it to > behave as in sql, i.e. change automatically when the slot value changes. > Well, it didn't. In hindsight, it is really a stretch to expect elephant to > that, but it would be very useful, because secondary indeces are often > mutable. > > The way I'd go about it to write an after method for the slot writer that > forces an update of the secondary index of the object, but > (setf get-value) (value key (bt btree-index)) signals an error. > > G?bor > > > (use-package :ele) > > (defclass x () > ((key :accessor key :initarg :key) > (index :accessor index :initarg :index)) > (:metaclass persistent-metaclass)) > > (defun index-it (secondary-db primary-key x) > (declare (ignore secondary-db primary-key)) > (values t (index x))) > > (defparameter *x* > (make-instance 'x :key 1 :index "a")) > > (defparameter *primary* > (add-to-root "primary" (make-instance 'indexed-btree))) > > (defparameter *secondary* > (add-to-root "secondary" (add-index *primary* :index-name 'index > :key-form 'index-it > :populate t))) > > (defun find-by-key (key) > (get-value key *primary*)) > > (defun find-by-index (index) > (get-value index *secondary*)) > > (setf (get-value 1 *primary*) *x*) > (assert (eq *x* (find-by-key 1))) > (assert (eq *x* (find-by-index "a"))) > (setf (index *x*) "b") > ;; These fail: > (assert (eq *x* (find-by-index "b"))) > (assert (null (find-by-index "a"))) > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel > From dankna at accela.net Wed Nov 24 04:38:48 2004 From: dankna at accela.net (Dan Knapp) Date: Tue, 23 Nov 2004 23:38:48 -0500 Subject: [elephant-devel] db gc In-Reply-To: <20041118135658.E91422@contarex.medianstrip.net> References: <04Nov18.154346cet.336116@fwall.essnet.se> <20041118135658.E91422@contarex.medianstrip.net> Message-ID: > Writing the GC is long overdue. There are some technical issues with > this which have yet to be solved, actually. In the first pass, it I just happened to be looking around, and found a rather helpful paper on the subject: "Efficient Incremental Garbage Collection for Client-Server Object Database Systems" http://www.acm.org/sigmod/vldb/conf/1995/P042.PDF You shouldn't need a subscription to read this one, I think. I found some other stuff, as well, but this was definitely the most useful. -- Dan Knapp From dankna at accela.net Thu Nov 25 02:19:50 2004 From: dankna at accela.net (Dan Knapp) Date: Wed, 24 Nov 2004 21:19:50 -0500 Subject: [elephant-devel] Elephant success story Message-ID: <7C885536-3E88-11D9-A3F4-000A95CBEDB2@accela.net> I thought a little praise for this project was in order. I'm a teacher by profession, and our school is doing report cards now. And, like many schools, we want a system that keeps bits of text to be re-used in different places, as appropriate... it requires a database. I spent about four days trying to put something together with MS Word's mail merge. I got 90% of the way there, but the things I couldn't make work were important. Each little thing I added broke something else, which then needed hours of debugging. With the deadline bearing down, I took a chance and started again from scratch, using OpenMCL with Elephant, and generating TeX output. It took just one night - about eight hours - to make the whole thing! Then I was able to incrementally add features over the next couple days. It was great being able to just treat database objects like any other object. It lets you do incremental development in true Lisp style. Working with an SQL server allows something similar, but of course with Elephant one keeps all the generality of Lisp. Elephant was also much easier to set up, and I can move the database from one machine to another easily, which turned out to be important. I do wish the :recover option to (open-store) were documented somewhere - I needed it at one point, and didn't see it mentioned anywhere until I looked in the source. But it worked perfectly once I did find it. If you don't document your features, nobody gives you credit for them! So, thanks! Elephant was very useful, and I can think of a couple personal things I'm going to use it for in the near future. Kudos. -- Dan Knapp From dankna at accela.net Thu Nov 25 02:21:53 2004 From: dankna at accela.net (Dan Knapp) Date: Wed, 24 Nov 2004 21:21:53 -0500 Subject: [elephant-devel] Ignore both these messages In-Reply-To: <7C885536-3E88-11D9-A3F4-000A95CBEDB2@accela.net> References: <7C885536-3E88-11D9-A3F4-000A95CBEDB2@accela.net> Message-ID: Yep, I managed to accidentally resend the same exact email - just ignore it. Bah. On Nov 24, 2004, at 9:19 PM, Dan Knapp wrote: > I thought a little praise for this project was in order. I'm a > teacher by > profession, and our school is doing report cards now. And, like many > schools, we want a system that keeps bits of text to be re-used in > different places, as appropriate... it requires a database. > > I spent about four days trying to put something together with MS > Word's mail merge. I got 90% of the way there, but the things I > couldn't make work were important. Each little thing I added > broke something else, which then needed hours of debugging. > > With the deadline bearing down, I took a chance and started again > from scratch, using OpenMCL with Elephant, and generating TeX > output. It took just one night - about eight hours - to make the whole > thing! Then I was able to incrementally add features over the next > couple days. > > It was great being able to just treat database objects like any other > object. It lets you do incremental development in true Lisp style. > Working with an SQL server allows something similar, but of course > with Elephant one keeps all the generality of Lisp. Elephant was also > much easier to set up, and I can move the database from one > machine to another easily, which turned out to be important. > > I do wish the :recover option to (open-store) were documented > somewhere - I needed it at one point, and didn't see it mentioned > anywhere until I looked in the source. But it worked perfectly once > I did find it. If you don't document your features, nobody gives you > credit for them! > > So, thanks! Elephant was very useful, and I can think of a couple > personal things I'm going to use it for in the near future. Kudos. > > -- Dan Knapp > -- Dan Knapp From ml13 at onlinehome.de Mon Nov 29 15:06:23 2004 From: ml13 at onlinehome.de (ml13 at onlinehome.de) Date: Mon, 29 Nov 2004 16:06:23 +0100 Subject: [elephant-devel] lw on darwin Message-ID: <3C0FDFD3-4218-11D9-AB28-00039345C8B0@onlinehome.de> Hi! I'd love to get Elephant working with Lispworks on Darwin.... Is this maybe already planned? There are some obvious changes that I could contribute (what would be the best way to do so??), but I haven't yet managed to compile the whole thing. Are there other people, who are interested in this combination of Lisp Impl and System? Thanks, Peter From ben at medianstrip.net Mon Nov 29 17:13:45 2004 From: ben at medianstrip.net (Ben) Date: Mon, 29 Nov 2004 12:13:45 -0500 (EST) Subject: [elephant-devel] lw on darwin In-Reply-To: <3C0FDFD3-4218-11D9-AB28-00039345C8B0@onlinehome.de> References: <3C0FDFD3-4218-11D9-AB28-00039345C8B0@onlinehome.de> Message-ID: <20041129121130.S35393@contarex.medianstrip.net> The main issue will be porting the MOP work. IIRC the Lispworks MOP is pretty good and so this shouldn't be too hard. there are some subtle differences which can take time to make work. We are planning on revising the MOP stuff for the next release, however. If you can stand to wait, it might be better to do so. Or, if the current release is good enough, you can always work with that -- patches are welcome! take care, B On Mon, 29 Nov 2004 ml13 at onlinehome.de wrote: > Hi! > > I'd love to get Elephant working with Lispworks on Darwin.... Is this maybe > already planned? There are some obvious changes that I could contribute (what > would be the best way to do so??), but I haven't yet managed to compile the > whole thing. > > Are there other people, who are interested in this combination of Lisp Impl > and System? > > Thanks, > > Peter > > > _______________________________________________ > elephant-devel site list > elephant-devel at common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel >