From biggers at utsl.com Mon Mar 3 21:27:32 2008 From: biggers at utsl.com (Mark R. Biggers) Date: Mon, 3 Mar 2008 15:27:32 -0500 Subject: [triangle-zpug] ride-share and/or room-share at Plone Symposium East? Message-ID: <18380.24372.143064.89472@dexter.saiph.com> Hi folks, Some one (two?) of you serious Plone CMS or Plone-hackers, may be interested in attending this conference: http://www.openplans.org/projects/plonesymposiumeast2008/project-home http://plone.org/events/regional/plone-symposium-2008 (currently down) http://soar.ois.psu.edu/cgi-bin/WebObjects/SOAR.woa/wa/campusRegister?productId=200708SP017411 * NOTE: registration deadline is 5 March, Wednesday ! * I am going mainly to get some Plone3 hacking time, although the Symposium itself is of interest, of course. I can drive from Yadkinville (about 90 mi west of Chapel Hill), straight up I-77 to I-81 and so forth, to State College, PA. http://maps.google.com/maps?saddr=1032+Laura+Ln,+Yadkinville,+NC+27055&geocode=&dirflg=&daddr=State+College,+PA&f=d&sll=36.136332,-80.64188&sspn=0.010068,0.012574&ie=UTF8&ll=39.393755,-78.068848&spn=4.932047,6.437988&z=7&pw=2 (don't go exactly by the starting-point -- rural addresses are often wrong on Google and other Inet maps) I will stay at a hotel "near" the Nittany Lion Inn, to cut my costs. Sunday will be my first full-day @ Penn State - and I will stay through the Session days. So if you or anyone you know is interested, please let me know. Thank you, ----mark -------- .sig Mark Biggers 919 481-1481 x107 TOT 336 849-0278 home 336 749-7055 cell #trizpug, irc.freenode.net -------- .sig March 2008 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 From cbc at unc.edu Tue Mar 4 20:50:11 2008 From: cbc at unc.edu (Chris Calloway) Date: Tue, 04 Mar 2008 14:50:11 -0500 Subject: [triangle-zpug] Frank Wierzbicki to work on Jython full time for Sun Message-ID: <47CDA7F3.4080001@unc.edu> Frank Wierzbicki, the local Jython lead maintainer who spoke at TriZPUG last fall, has been hired by Sun Microsystems to work on Jython full time: http://www.tbray.org/ongoing/When/200x/2008/03/03/Python-at-Sun http://fwierzbicki.blogspot.com/ Congratulations, Frank, and good luck. Will you still be located in the Triangle area? -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From fwierzbicki at gmail.com Tue Mar 4 22:31:09 2008 From: fwierzbicki at gmail.com (Frank Wierzbicki) Date: Tue, 4 Mar 2008 16:31:09 -0500 Subject: [triangle-zpug] Frank Wierzbicki to work on Jython full time for Sun In-Reply-To: <47CDA7F3.4080001@unc.edu> References: <47CDA7F3.4080001@unc.edu> Message-ID: <4dab5f760803041331p4b149510ke77c9e3a01310746@mail.gmail.com> On Tue, Mar 4, 2008 at 2:50 PM, Chris Calloway wrote: > Frank Wierzbicki, the local Jython lead maintainer who spoke at TriZPUG > last fall, has been hired by Sun Microsystems to work on Jython full time: > > http://www.tbray.org/ongoing/When/200x/2008/03/03/Python-at-Sun > http://fwierzbicki.blogspot.com/ > > Congratulations, Frank, and good luck. Hey Chris, thanks! > Will you still be located in the > Triangle area? I do indeed get to stay here in North Carolina. Sun is a highly distributed and pretty progressive company and has a very positive attitude towards remote employees. -Frank From cbc at unc.edu Wed Mar 5 17:46:00 2008 From: cbc at unc.edu (Chris Calloway) Date: Wed, 05 Mar 2008 11:46:00 -0500 Subject: [triangle-zpug] Local Opportunity Message-ID: <47CECE48.7010306@unc.edu> I'm passing along a request. Please respond directly to the requester, Robert Kraus (krausr at mail.fpg.unc.edu). "I am needing to have a single instance of Plone with a simple modification installed immediately on a Windows box in order to run a pilot application. I am under great pressure to have this up very soon. "I am looking for someone who is able to come to our place of business and manage/oversee the installation (for $$, we will pay). Once installed we have someone who knows the basics of Plone administration and site development to get our initial pilot in place. "I have Plone v3.06 (which installs with python 2.4) up and running. I have carefully gone through the steps to install a mysql-python connector (v2.4) and it appeared successful. I also added the zmysqlda to the products folder as instructed. Still, the Z MySQL Database Connection does not show up in the ZMI Add dropdown. This is where I am stuck. Additionally we need to have the PloneLDAP product installed. "Please me know if you are interested in helping us out here." -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From cbc at unc.edu Thu Mar 6 19:11:08 2008 From: cbc at unc.edu (Chris Calloway) Date: Thu, 06 Mar 2008 13:11:08 -0500 Subject: [triangle-zpug] Audio from this weeks meeting In-Reply-To: <14728249.161251204318049030.JavaMail.root@oryx.dogstar1.com> References: <14728249.161251204318049030.JavaMail.root@oryx.dogstar1.com> Message-ID: <47D033BC.7050804@unc.edu> On 2/29/2008 3:47 PM, Nick Goldwater wrote: > A recording of last weeks meeting can be downloaded from http://src-dst.com/888/ Thanks a lot, Nick!! -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From tbryan at python.net Tue Mar 11 04:33:18 2008 From: tbryan at python.net (T. Bryan) Date: Mon, 10 Mar 2008 23:33:18 -0400 Subject: [triangle-zpug] Python opportunity at RackSpace in San Antonio, TX Message-ID: <200803102333.18999.tbryan@python.net> Hi, all. I've been very busy with non-Python stuff lately, so I haven't even really been lurking. :-( Hopefully, I'll be able to get back out to one of the meeting soon. Anyway, a recruiter contacted me about a position for an "Open Source Developer, Python, Ruby, PHP, Java - Rackspace IT Hosting" in San Antonio, TX. If you or anyone you know is interested, let me know, and I'll forward you the recruiter's information. ---Tom From josh_johnson at unc.edu Tue Mar 11 15:28:42 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Tue, 11 Mar 2008 10:28:42 -0400 Subject: [triangle-zpug] AGX Fixes + ZopeSkel Enhancements Message-ID: <47D6971A.1040101@unc.edu> Hi All, As mentioned at the last meeting, I did some work on AGX a while back. I finally got around to posting my changes to the issue tracker. here's the URL: http://plone.org/products/archgenxml/issues/201 Over the weekend, I did some work on ZopeSkel. Namely, I noticed and finished up the `addcontent atschema` local command so that it populates your interface schema, your AT schema, and creates the bridge attributes in your content class. And now I've just realized that it's a bit broken. Arrgh. Anyway, I should have that fixed by next week, in the meantime, you can check out what I've got so far here: http://plone.org/products/zopeskel/issues/5/ I mentioned I'd send around the link to the process document I was following during my "lightning" talk, here it is: http://www.unc.edu/~jj/plone It's by no means complete, but I've been using it (and constantly updating it) and it's serving me well. It sorely needs a menu, I'm in the process of moving it to XML + XSLT to auto-generate it. Cheers, JJ From cbc at unc.edu Tue Mar 11 16:33:21 2008 From: cbc at unc.edu (Chris Calloway) Date: Tue, 11 Mar 2008 11:33:21 -0400 Subject: [triangle-zpug] AGX Fixes + ZopeSkel Enhancements In-Reply-To: <47D6971A.1040101@unc.edu> References: <47D6971A.1040101@unc.edu> Message-ID: <47D6A641.2080506@unc.edu> On 3/11/2008 10:28 AM, Josh Johnson wrote: > http://plone.org/products/archgenxml/issues/201 > http://plone.org/products/zopeskel/issues/5/ > http://www.unc.edu/~jj/plone You are my hero. -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From cbc at unc.edu Wed Mar 12 14:53:56 2008 From: cbc at unc.edu (Chris Calloway) Date: Wed, 12 Mar 2008 09:53:56 -0400 Subject: [triangle-zpug] Wear Python Message-ID: <47D7E074.10303@unc.edu> If you are not going to PyCon, you can get in on the schwag. The official schwag vendor is online: http://www.wearpython.com/ -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From flyingfred0+trizpug at gmail.com Wed Mar 12 22:39:09 2008 From: flyingfred0+trizpug at gmail.com (Chris Church) Date: Wed, 12 Mar 2008 16:39:09 -0500 Subject: [triangle-zpug] Wear Python In-Reply-To: <47D7E074.10303@unc.edu> References: <47D7E074.10303@unc.edu> Message-ID: <1ea258670803121439k36fd50c9h1d514ea9a3b52e9d@mail.gmail.com> Looks like they're running that site with PHP and osCommerce... blasphemy! (And I'm not just saying that because it's not Python. I customized an osCommerce site for a client once, and ended up not being a big fan afterwards, to say the least.) --Chris On Wed, Mar 12, 2008 at 8:53 AM, Chris Calloway wrote: > If you are not going to PyCon, you can get in on the schwag. The > official schwag vendor is online: > > http://www.wearpython.com/ > > -- > Sincerely, > > Chris Calloway > http://www.secoora.org > office: 332 Chapman Hall phone: (919) 599-3530 > mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 > > > > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug > -------------- next part -------------- An HTML attachment was scrubbed... URL: From cbc at unc.edu Wed Mar 12 23:59:17 2008 From: cbc at unc.edu (Chris Calloway) Date: Wed, 12 Mar 2008 18:59:17 -0400 Subject: [triangle-zpug] Wear Python In-Reply-To: <1ea258670803121439k36fd50c9h1d514ea9a3b52e9d@mail.gmail.com> References: <47D7E074.10303@unc.edu> <1ea258670803121439k36fd50c9h1d514ea9a3b52e9d@mail.gmail.com> Message-ID: <47D86045.2070202@unc.edu> On 3/12/2008 5:39 PM, Chris Church wrote: > Looks like they're running that site with PHP and osCommerce... blasphemy! > > (And I'm not just saying that because it's not Python. I customized an > osCommerce site for a client once, and ended up not being a big fan > afterwards, to say the least.) Even better, they've been working on the site since before last year's PyCon. It's a pre-existing apparel company with some pre-existing outside vendor working on their site. I talked to them about it over the phone several months ago when trying to track down some more Python sport shirts. I don't know how they got the PSF logo business. It would be great if someone at PyCon could talk them into having a go at a real site. Their shirts are very good. I have several. -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From jmack at wm7d.net Fri Mar 14 16:20:37 2008 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Fri, 14 Mar 2008 08:20:37 -0700 (PDT) Subject: [triangle-zpug] static list in python Message-ID: I'm trying to figure out the python equivalent of having a static list in a function. I could have the list global, but I assume that's no more kosher in python than anywhere else. I have found how to make a module static @staticmethod def aStaticMethod(x, y, z): but I don't know if this is the solution or not yet (I don't think I've ever had a static function). I don't need the function to be static, just a variable in the function. One posting said that static variables aren't needed in python, that I should use module level functions, but I haven't found anything helpful on doing that. Any suggestions? Thanks Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From josh_johnson at unc.edu Fri Mar 14 17:03:01 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Fri, 14 Mar 2008 12:03:01 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: References: Message-ID: <47DAA1B5.6020000@unc.edu> I recall two meanings for static in programming. Static can mean a persistent value, like an internal counter in a list (I think that's what you want), but I've also heard the term mean "a class method that is accessed like a library instead of an instance method". The latter is easy, you just put a function in a python script: e.g. in mymodule.py: def myfunction(): pass you can access it by: >>> import mymodule >>> mymodule.myfunction() I'm not sure if python supports the sort of persistent variable I think you want (anybody else know?). If not, you may have to start with a list and have that list be returned by your function and then subsequently passed to it again: >>> def myfunc(l): ... l.append('1') ... return l >>> myl = [] >>> myl = myfunc(myl) >>> myl = myfunc(myl) >>> myl ['1', '1'] JJ Joseph Mack NA3T wrote: > I'm trying to figure out the python equivalent of having a > static list in a function. I could have the list global, but > I assume that's no more kosher in python than anywhere > else. > > I have found how to make a module static > > @staticmethod > def aStaticMethod(x, y, z): > > but I don't know if this is the solution or not yet (I don't > think I've ever had a static function). I don't need the > function to be static, just a variable in the function. > > One posting said that static variables aren't needed in > python, that I should use module level functions, but I > haven't found anything helpful on doing that. > > Any suggestions? > > Thanks Joe > > From jmack at wm7d.net Fri Mar 14 17:22:32 2008 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Fri, 14 Mar 2008 09:22:32 -0700 (PDT) Subject: [triangle-zpug] static list in python In-Reply-To: <47DAA1B5.6020000@unc.edu> References: <47DAA1B5.6020000@unc.edu> Message-ID: On Fri, 14 Mar 2008, Josh Johnson wrote: > I recall two meanings for static in programming. Static can mean a > persistent value, like an internal counter in a list (I think that's > what you want), yes > but I've also heard the term mean "a class method that > is accessed like a library instead of an instance method". sorry, forgot about this (I guess "static" is overloaded). > I'm not sure if python supports the sort of persistent variable I think > you want (anybody else know?). If not, you may have to start with a list > and have that list be returned by your function and then subsequently > passed to it again: This doesn't seem a whole lot different to just having l being global, which is what I'm doing for the moment. Thanks Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From josh_johnson at unc.edu Fri Mar 14 17:39:17 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Fri, 14 Mar 2008 12:39:17 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: References: <47DAA1B5.6020000@unc.edu> Message-ID: <47DAAA35.8060903@unc.edu> I guess a global isn't so bad, it's only really global to your package. There has to be some definitive answer. You might want to pose your question to the python tutor mailing list. JJ Joseph Mack NA3T wrote: > On Fri, 14 Mar 2008, Josh Johnson wrote: > >> I recall two meanings for static in programming. Static can mean a >> persistent value, like an internal counter in a list (I think that's >> what you want), > > yes > >> but I've also heard the term mean "a class method that >> is accessed like a library instead of an instance method". > > sorry, forgot about this (I guess "static" is overloaded). > >> I'm not sure if python supports the sort of persistent variable I think >> you want (anybody else know?). If not, you may have to start with a list >> and have that list be returned by your function and then subsequently >> passed to it again: > > This doesn't seem a whole lot different to just having l being global, > which is what I'm doing for the moment. > > Thanks Joe > From bradoaks at gmail.com Fri Mar 14 18:04:10 2008 From: bradoaks at gmail.com (Brad Oaks) Date: Fri, 14 Mar 2008 13:04:10 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: <47DAAA35.8060903@unc.edu> References: <47DAA1B5.6020000@unc.edu> <47DAAA35.8060903@unc.edu> Message-ID: Thanks Josh, I didn't know about the tutor list. http://mail.python.org/mailman/listinfo/tutor is the url for that list. --bradoaks On Fri, Mar 14, 2008 at 12:39 PM, Josh Johnson wrote: > I guess a global isn't so bad, it's only really global to your package. > There has to be some definitive answer. You might want to pose your > question to the python tutor mailing list. > > > JJ > > Joseph Mack NA3T wrote: > > > On Fri, 14 Mar 2008, Josh Johnson wrote: > > > >> I recall two meanings for static in programming. Static can mean a > >> persistent value, like an internal counter in a list (I think that's > >> what you want), > > > > yes > > > >> but I've also heard the term mean "a class method that > >> is accessed like a library instead of an instance method". > > > > sorry, forgot about this (I guess "static" is overloaded). > > > >> I'm not sure if python supports the sort of persistent variable I think > >> you want (anybody else know?). If not, you may have to start with a list > >> and have that list be returned by your function and then subsequently > >> passed to it again: > > > > This doesn't seem a whole lot different to just having l being global, > > which is what I'm doing for the moment. > > > > Thanks Joe > > > > > > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug > From josh_johnson at unc.edu Fri Mar 14 18:14:01 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Fri, 14 Mar 2008 13:14:01 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: References: <47DAA1B5.6020000@unc.edu> <47DAAA35.8060903@unc.edu> Message-ID: <47DAB259.3040108@unc.edu> Thanks for posting the link, Brad. :) I initially signed up when I was learning, but I keep an eye on the list even as I've gotten better with python... it's a pretty high-volume list, fast response to most questions. There's an emphasis on answering questions regardless of how elementary they may seem. I've leaned a lot through the tribulations of others, helps me "think in python".. so much becomes apparent when 10 people explain a problem from 5 different perspectives :) JJ Brad Oaks wrote: > Thanks Josh, > > I didn't know about the tutor list. > http://mail.python.org/mailman/listinfo/tutor is the url for that list. > > --bradoaks > > On Fri, Mar 14, 2008 at 12:39 PM, Josh Johnson wrote: > >> I guess a global isn't so bad, it's only really global to your package. >> There has to be some definitive answer. You might want to pose your >> question to the python tutor mailing list. >> >> >> JJ >> >> Joseph Mack NA3T wrote: >> >> >>> On Fri, 14 Mar 2008, Josh Johnson wrote: >>> >> > >> >> I recall two meanings for static in programming. Static can mean a >> >> persistent value, like an internal counter in a list (I think that's >> >> what you want), >> > >> > yes >> > >> >> but I've also heard the term mean "a class method that >> >> is accessed like a library instead of an instance method". >> > >> > sorry, forgot about this (I guess "static" is overloaded). >> > >> >> I'm not sure if python supports the sort of persistent variable I think >> >> you want (anybody else know?). If not, you may have to start with a list >> >> and have that list be returned by your function and then subsequently >> >> passed to it again: >> > >> > This doesn't seem a whole lot different to just having l being global, >> > which is what I'm doing for the moment. >> > >> > Thanks Joe >> > >> >> >> >> >> _______________________________________________ >> triangle-zpug mailing list >> triangle-zpug at starship.python.net >> http://starship.python.net/mailman/listinfo/triangle-zpug >> >> From brad.crittenden at gmail.com Fri Mar 14 18:18:21 2008 From: brad.crittenden at gmail.com (Bradley A. Crittenden) Date: Fri, 14 Mar 2008 13:18:21 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: References: Message-ID: <81BAD632-6B1D-4E9D-B9B6-B44F82BC4D23@gmail.com> On Mar 14, 2008, at 11:20 , Joseph Mack NA3T wrote: > I'm trying to figure out the python equivalent of having a > static list in a function. I could have the list global, but > I assume that's no more kosher in python than anywhere > else. > > I have found how to make a module static > > @staticmethod > def aStaticMethod(x, y, z): > > but I don't know if this is the solution or not yet (I don't > think I've ever had a static function). I don't need the > function to be static, just a variable in the function. > > One posting said that static variables aren't needed in > python, that I should use module level functions, but I > haven't found anything helpful on doing that. > > Any suggestions? hi joseph, from your description it sounds like you're using python without taking advantage of any object oriented features. you can do that, but you'll end up scratching your head about how to do 'obvious' things. how about just making a class and setting the list as an instance variable? or it could be a class variable. here's a quick example. 'attendees' is an instance variable while 'count' is a class variable. you'll see the attendee set is unique per instance while the count has a running total. hope this helps and i haven't misunderstood what you're trying to do. --brad >>> class Sprint: ... count = 0 ... def __init__(self): ... self.attendees = set() ... def add(self, name): ... self.attendees.add(name) ... Sprint.count += 1 ... def remove(self, name): ... try: ... self.attendees.remove(name) ... Sprint.count -= 1 ... except KeyError: ... pass ... def show(self): ... print Sprint.count ... for attendee in sorted(self.attendees): ... print attendee >>> s = Sprint() >>> s.add("Chris") >>> s.add("Rob") >>> s.add("Biggers") >>> s.remove('bac') >>> s.show() 3 Biggers Chris Rob >>> s2 = Sprint() >>> s2.add('fred') >>> s2.add('barney') >>> s2.add('mr. spacely') >>> s2.show() 6 barney fred mr. spacely From philip at semanchuk.com Fri Mar 14 18:29:52 2008 From: philip at semanchuk.com (Philip Semanchuk) Date: Fri, 14 Mar 2008 13:29:52 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: <47DAAA35.8060903@unc.edu> References: <47DAA1B5.6020000@unc.edu> <47DAAA35.8060903@unc.edu> Message-ID: On Mar 14, 2008, at 12:39 PM, Josh Johnson wrote: > I guess a global isn't so bad, it's only really global to your > package. I agree; that's the rationalization I use for using globals as statics. =) > There has to be some definitive answer. I don't mean to be argumentative, but I'm not sure there is. Some features clearly defined in other languages become a matter of idiom in Python. Idiom is often a matter of taste, and therefore not definitive. A good example is the use of _foo and __foo as rough analogs to "protected" and "private" in classes. Some people think it is a bad idea, some like it, some (like Yours Truly) don't apply it as consistently as they might. In that example there's no definitive answer despite a lot of discussion on the topic. Just a different perspective. Cheers P > Joseph Mack NA3T wrote: >> On Fri, 14 Mar 2008, Josh Johnson wrote: >> >>> I recall two meanings for static in programming. Static can mean a >>> persistent value, like an internal counter in a list (I think that's >>> what you want), >> >> yes >> >>> but I've also heard the term mean "a class method that >>> is accessed like a library instead of an instance method". >> >> sorry, forgot about this (I guess "static" is overloaded). >> >>> I'm not sure if python supports the sort of persistent variable I >>> think >>> you want (anybody else know?). If not, you may have to start with >>> a list >>> and have that list be returned by your function and then >>> subsequently >>> passed to it again: >> >> This doesn't seem a whole lot different to just having l being >> global, >> which is what I'm doing for the moment. >> >> Thanks Joe >> > > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug From josh_johnson at unc.edu Fri Mar 14 19:05:08 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Fri, 14 Mar 2008 14:05:08 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: References: <47DAA1B5.6020000@unc.edu> <47DAAA35.8060903@unc.edu> Message-ID: <47DABE54.7010305@unc.edu> I agree, but there is the style guide and "convention" which I have a hard time ignoring. I know the language is flexible and programmers are free to do what works best for them, but conventions, if their sane and logical language-wise, are very good things. And most of them aren't really apparent to people who haven't sought them out. I think your example might be a bit flawed, from what I understand there are specific consequences to using underscores in names (I'm looking at the style guide... I don't know from first hand experience). But I know what you mean. Maybe a better example would be the convention that "constants" are named in upper case? It's definitely an idiom (python doesn't have constants in the C sense)... but then again, even though variable naming is a matter of preference, there is a (weekly) established convention. Maybe "definitive" wasn't such a good word? :) I think I meant it in the sense of "complete" as opposed to "canonical" ...."well thought out" instead of "final"... JJ Philip Semanchuk wrote: > On Mar 14, 2008, at 12:39 PM, Josh Johnson wrote: > > >> I guess a global isn't so bad, it's only really global to your >> package. >> > > I agree; that's the rationalization I use for using globals as > statics. =) > > >> There has to be some definitive answer. >> > > I don't mean to be argumentative, but I'm not sure there is. Some > features clearly defined in other languages become a matter of idiom > in Python. Idiom is often a matter of taste, and therefore not > definitive. A good example is the use of _foo and __foo as rough > analogs to "protected" and "private" in classes. Some people think it > is a bad idea, some like it, some (like Yours Truly) don't apply it > as consistently as they might. In that example there's no definitive > answer despite a lot of discussion on the topic. > > Just a different perspective. > > Cheers > P > > > >> Joseph Mack NA3T wrote: >> >>> On Fri, 14 Mar 2008, Josh Johnson wrote: >>> >>> >>>> I recall two meanings for static in programming. Static can mean a >>>> persistent value, like an internal counter in a list (I think that's >>>> what you want), >>>> >>> yes >>> >>> >>>> but I've also heard the term mean "a class method that >>>> is accessed like a library instead of an instance method". >>>> >>> sorry, forgot about this (I guess "static" is overloaded). >>> >>> >>>> I'm not sure if python supports the sort of persistent variable I >>>> think >>>> you want (anybody else know?). If not, you may have to start with >>>> a list >>>> and have that list be returned by your function and then >>>> subsequently >>>> passed to it again: >>>> >>> This doesn't seem a whole lot different to just having l being >>> global, >>> which is what I'm doing for the moment. >>> >>> Thanks Joe >>> >>> >> _______________________________________________ >> triangle-zpug mailing list >> triangle-zpug at starship.python.net >> http://starship.python.net/mailman/listinfo/triangle-zpug >> > > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug > From jmack at wm7d.net Fri Mar 14 19:06:29 2008 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Fri, 14 Mar 2008 11:06:29 -0700 (PDT) Subject: [triangle-zpug] static list in python In-Reply-To: <81BAD632-6B1D-4E9D-B9B6-B44F82BC4D23@gmail.com> References: <81BAD632-6B1D-4E9D-B9B6-B44F82BC4D23@gmail.com> Message-ID: On Fri, 14 Mar 2008, Bradley A. Crittenden wrote: > from your description it sounds like you're using python > without taking advantage of any object oriented features. > you can do that, but you'll end up scratching your head > about how to do 'obvious' things. hmm, I see > how about just making a class and setting the list as an > instance variable? or it could be a class variable. I wish this had showed up in one of my google searches :-( I wanted a static list to keep track of the history of the game nim that I'm using as a coding exercise for an introductory class in programming for 7th graders. This is their first piece of coding after "hello world", "hello world" in a function, conditional evaluation and iteration. I was hoping to keep track of the game history with a function (to show modular programming) rather than spread the state tracking code all over the global namespace. I've had minimal experience with python, and had my own course outline ready (bash, perl, linux install and admin, C, C++) before I declared that I'd do the class. I had expected that they'd be the usual oppressed and compliant kids that the educational system turns out and hadn't expected that they'd have an opinion on what they wanted, so I was more than surprised to have them announce that they wanted python. At that stage I was committed to teaching them something and figured if I couldn't learn python fast enough to keep 2 weeks ahead of a bunch of 7th graders, I should take myself out the back and shoot myself. Chris Calloway mentioned my course earlier on this list. http://www.austintek.com/python_class/ At the moment they aren't writing code blocks more than a couple of lines long. I don't want to start them on classes until they have a lot more coding experience and can code blocks 20-50 lines long without external help. I hadn't expected that python would get this complicated so fast ;-) I thought static would do it for sure - it's worked everywhere else. It's obvious that you don't need static if you have an object. I'll keep your code to do a rewrite sometime later in the course using a game_history object. Thanks Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From josh_johnson at unc.edu Fri Mar 14 19:22:10 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Fri, 14 Mar 2008 14:22:10 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: References: <81BAD632-6B1D-4E9D-B9B6-B44F82BC4D23@gmail.com> Message-ID: <47DAC252.2020500@unc.edu> Reading that, if I were you, I'd go with globals for now :) But remember that everything (seriously, EVERYTHING) about python is object oriented. It's hard to avoid it for long... JJ Joseph Mack NA3T wrote: > On Fri, 14 Mar 2008, Bradley A. Crittenden wrote: > > >> from your description it sounds like you're using python >> without taking advantage of any object oriented features. >> you can do that, but you'll end up scratching your head >> about how to do 'obvious' things. >> > > hmm, I see > > >> how about just making a class and setting the list as an >> instance variable? or it could be a class variable. >> > > I wish this had showed up in one of my google searches :-( > > I wanted a static list to keep track of the history of the > game nim that I'm using as a coding exercise for an > introductory class in programming for 7th graders. This is > their first piece of coding after "hello world", "hello > world" in a function, conditional evaluation and iteration. > I was hoping to keep track of the game history with a > function (to show modular programming) rather than spread > the state tracking code all over the global namespace. > > I've had minimal experience with python, and had my own > course outline ready (bash, perl, linux install and admin, > C, C++) before I declared that I'd do the class. I had > expected that they'd be the usual oppressed and compliant > kids that the educational system turns out and hadn't > expected that they'd have an opinion on what they wanted, so > I was more than surprised to have them announce that they > wanted python. At that stage I was committed to teaching > them something and figured if I couldn't learn python fast > enough to keep 2 weeks ahead of a bunch of 7th graders, I > should take myself out the back and shoot myself. > > Chris Calloway mentioned my course earlier on this list. > > http://www.austintek.com/python_class/ > > At the moment they aren't writing code blocks more than a > couple of lines long. I don't want to start them on classes > until they have a lot more coding experience and can code > blocks 20-50 lines long without external help. I hadn't > expected that python would get this complicated so fast ;-) > I thought static would do it for sure - it's worked > everywhere else. It's obvious that you don't need static if > you have an object. I'll keep your code to do a rewrite > sometime later in the course using a game_history object. > > Thanks Joe > > From philip at semanchuk.com Fri Mar 14 19:51:30 2008 From: philip at semanchuk.com (Philip Semanchuk) Date: Fri, 14 Mar 2008 14:51:30 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: <47DABE54.7010305@unc.edu> References: <47DAA1B5.6020000@unc.edu> <47DAAA35.8060903@unc.edu> <47DABE54.7010305@unc.edu> Message-ID: <154ECEC7-5CFD-4D11-8D90-E950B57FA10C@semanchuk.com> On Mar 14, 2008, at 2:05 PM, Josh Johnson wrote: > I agree, but there is the style guide and "convention" which I have a > hard time ignoring. I know the language is flexible and programmers > are > free to do what works best for them, but conventions, if their sane > and > logical language-wise, are very good things. And most of them aren't > really apparent to people who haven't sought them out. > > I think your example might be a bit flawed, from what I understand > there > are specific consequences to using underscores in names (I'm > looking at > the style guide... I don't know from first hand experience). Good point; a name preceded by a double underscore undergoes name mangling in a class. > But I know what you mean. Maybe a better example would be the > convention > that "constants" are named in upper case? It's definitely an idiom > (python doesn't have constants in the C sense)... but then again, even > though variable naming is a matter of preference, there is a (weekly) > established convention. > > Maybe "definitive" wasn't such a good word? :) I think I meant it > in the > sense of "complete" as opposed to "canonical" ...."well thought out" > instead of "final"... Well I hope such a consensus exists. bye P > Philip Semanchuk wrote: >> On Mar 14, 2008, at 12:39 PM, Josh Johnson wrote: >> >> >>> I guess a global isn't so bad, it's only really global to your >>> package. >>> >> >> I agree; that's the rationalization I use for using globals as >> statics. =) >> >> >>> There has to be some definitive answer. >>> >> >> I don't mean to be argumentative, but I'm not sure there is. Some >> features clearly defined in other languages become a matter of idiom >> in Python. Idiom is often a matter of taste, and therefore not >> definitive. A good example is the use of _foo and __foo as rough >> analogs to "protected" and "private" in classes. Some people think it >> is a bad idea, some like it, some (like Yours Truly) don't apply it >> as consistently as they might. In that example there's no definitive >> answer despite a lot of discussion on the topic. >> >> Just a different perspective. >> >> Cheers >> P >> >> >> >>> Joseph Mack NA3T wrote: >>> >>>> On Fri, 14 Mar 2008, Josh Johnson wrote: >>>> >>>> >>>>> I recall two meanings for static in programming. Static can mean a >>>>> persistent value, like an internal counter in a list (I think >>>>> that's >>>>> what you want), >>>>> >>>> yes >>>> >>>> >>>>> but I've also heard the term mean "a class method that >>>>> is accessed like a library instead of an instance method". >>>>> >>>> sorry, forgot about this (I guess "static" is overloaded). >>>> >>>> >>>>> I'm not sure if python supports the sort of persistent variable I >>>>> think >>>>> you want (anybody else know?). If not, you may have to start with >>>>> a list >>>>> and have that list be returned by your function and then >>>>> subsequently >>>>> passed to it again: >>>>> >>>> This doesn't seem a whole lot different to just having l being >>>> global, >>>> which is what I'm doing for the moment. >>>> >>>> Thanks Joe >>>> >>>> >>> _______________________________________________ >>> triangle-zpug mailing list >>> triangle-zpug at starship.python.net >>> http://starship.python.net/mailman/listinfo/triangle-zpug >>> >> >> >> _______________________________________________ >> triangle-zpug mailing list >> triangle-zpug at starship.python.net >> http://starship.python.net/mailman/listinfo/triangle-zpug >> > > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug From philip at semanchuk.com Fri Mar 14 19:52:41 2008 From: philip at semanchuk.com (Philip Semanchuk) Date: Fri, 14 Mar 2008 14:52:41 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: <47DAC252.2020500@unc.edu> References: <81BAD632-6B1D-4E9D-B9B6-B44F82BC4D23@gmail.com> <47DAC252.2020500@unc.edu> Message-ID: On Mar 14, 2008, at 2:22 PM, Josh Johnson wrote: > Reading that, if I were you, I'd go with globals for now :) > > But remember that everything (seriously, EVERYTHING) about python is > object oriented. It's hard to avoid it for long... I agree with Josh. One way to have functions remember their values across invocations is via generators, but that sounds advanced for the second program after "hello world". bye P > Joseph Mack NA3T wrote: >> On Fri, 14 Mar 2008, Bradley A. Crittenden wrote: >> >> >>> from your description it sounds like you're using python >>> without taking advantage of any object oriented features. >>> you can do that, but you'll end up scratching your head >>> about how to do 'obvious' things. >>> >> >> hmm, I see >> >> >>> how about just making a class and setting the list as an >>> instance variable? or it could be a class variable. >>> >> >> I wish this had showed up in one of my google searches :-( >> >> I wanted a static list to keep track of the history of the >> game nim that I'm using as a coding exercise for an >> introductory class in programming for 7th graders. This is >> their first piece of coding after "hello world", "hello >> world" in a function, conditional evaluation and iteration. >> I was hoping to keep track of the game history with a >> function (to show modular programming) rather than spread >> the state tracking code all over the global namespace. >> >> I've had minimal experience with python, and had my own >> course outline ready (bash, perl, linux install and admin, >> C, C++) before I declared that I'd do the class. I had >> expected that they'd be the usual oppressed and compliant >> kids that the educational system turns out and hadn't >> expected that they'd have an opinion on what they wanted, so >> I was more than surprised to have them announce that they >> wanted python. At that stage I was committed to teaching >> them something and figured if I couldn't learn python fast >> enough to keep 2 weeks ahead of a bunch of 7th graders, I >> should take myself out the back and shoot myself. >> >> Chris Calloway mentioned my course earlier on this list. >> >> http://www.austintek.com/python_class/ >> >> At the moment they aren't writing code blocks more than a >> couple of lines long. I don't want to start them on classes >> until they have a lot more coding experience and can code >> blocks 20-50 lines long without external help. I hadn't >> expected that python would get this complicated so fast ;-) >> I thought static would do it for sure - it's worked >> everywhere else. It's obvious that you don't need static if >> you have an object. I'll keep your code to do a rewrite >> sometime later in the course using a game_history object. >> >> Thanks Joe >> >> > > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug From jim at ibang.com Fri Mar 14 19:58:35 2008 From: jim at ibang.com (Jim Allman) Date: Fri, 14 Mar 2008 14:58:35 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: <47DAC252.2020500@unc.edu> References: <81BAD632-6B1D-4E9D-B9B6-B44F82BC4D23@gmail.com> <47DAC252.2020500@unc.edu> Message-ID: <7D1455EA-51F5-4B3F-816C-7735484B091D@ibang.com> On Mar 14, 2008, at 2:22 PM, Josh Johnson wrote: > But remember that everything (seriously, EVERYTHING) about python is > object oriented. It's hard to avoid it for long... It might help to think of your Python module as a "singleton" (the one-and-only instance of its class), and module variable as its static properties. In your code, this would for all practical purposes feel like a static var of the class. As with static properties, the namespace (path to the module or class) helps to avoid "global soup." Just keep in mind this cautionary tale of "import myModule" vs. "from myModule import myVar": http://www.thescripts.com/forum/thread24318.html =jimA= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Jim Allman Interrobang Digital Media http://www.ibang.com/ (919) 649-5760 From cbc at unc.edu Fri Mar 14 23:44:36 2008 From: cbc at unc.edu (cbc at unc.edu) Date: Fri, 14 Mar 2008 18:44:36 -0400 Subject: [triangle-zpug] static list in python In-Reply-To: References: <47DAA1B5.6020000@unc.edu> <47DAAA35.8060903@unc.edu> Message-ID: <20080314184436.qdtr8zlz40kg088o@webmail7.isis.unc.edu> Quoting Brad Oaks : > Thanks Josh, > > I didn't know about the tutor list. > http://mail.python.org/mailman/listinfo/tutor is the url for that list. http://trizpug.org/up-to-speed/#lists Cheers, Chris From mrevoir at gmail.com Tue Mar 18 14:35:13 2008 From: mrevoir at gmail.com (Mike Revoir) Date: Tue, 18 Mar 2008 09:35:13 -0400 Subject: [triangle-zpug] Plone Jam 3/20/08 Message-ID: Plone Jammers, I apologize for the late notice, but I will be unable to attend and host this week's Plone Jam. Is anyone able to host the Jam in my place? Sorry, and thanks in advance, Mike -------------- next part -------------- An HTML attachment was scrubbed... URL: From cbc at unc.edu Tue Mar 18 18:44:29 2008 From: cbc at unc.edu (Chris Calloway) Date: Tue, 18 Mar 2008 13:44:29 -0400 Subject: [triangle-zpug] Plone Jam 3/20/08 In-Reply-To: References: Message-ID: <47DFFF7D.8060600@unc.edu> On 3/18/2008 9:35 AM, Mike Revoir wrote: > Plone Jammers, > I apologize for the late notice, but I will be unable to attend and host > this week's Plone Jam. Is anyone able to host the Jam in my place? I had it listed at my place. For some reason due to our previous conversations about my hosting it last month, I thought you were wanting that, so I listed it already: http://trizpug.org/Members/cbc/mar-08-jam2 http://trizpug.org/ -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From biggers at utsl.com Tue Mar 18 19:42:31 2008 From: biggers at utsl.com (Mark R. Biggers) Date: Tue, 18 Mar 2008 13:42:31 -0500 Subject: [triangle-zpug] UML + AXG -- Re: Plone Jam 3/20/08 In-Reply-To: <47DFFF7D.8060600@unc.edu> References: <47DFFF7D.8060600@unc.edu> Message-ID: <18400.3351.814031.690332@dexter.saiph.com> My dream of a super Plone Jam or 2: Rob.L, Mike.R and Josh.J take turns, reviewing either an "example" UML model or one of their own, and explain some "tips 'n tricks" about what they have discovered about UML-modeling => ArchGenXML => Plone products. Plone 2 examples would be fine; Plone 3 would be great, too. I did some work recently fixing the AGX example model, to try it out with 1.6.x AXG and Plone3. That might help; however we are all sure to learn something from the UML/AGX super-group ;) Here's hoping flattery will get those Jam-demos, ----mark Chris Calloway writes: > On 3/18/2008 9:35 AM, Mike Revoir wrote: > > Plone Jammers, > > I apologize for the late notice, but I will be unable to attend and host > > this week's Plone Jam. Is anyone able to host the Jam in my place? From rob_lineberger at med.unc.edu Tue Mar 18 20:01:14 2008 From: rob_lineberger at med.unc.edu (Rob Lineberger) Date: Tue, 18 Mar 2008 15:01:14 -0400 Subject: [triangle-zpug] UML + AXG -- Re: Plone Jam 3/20/08 In-Reply-To: <18400.3351.814031.690332@dexter.saiph.com> References: <47DFFF7D.8060600@unc.edu> <18400.3351.814031.690332@dexter.saiph.com> Message-ID: <1205866874.6782.8.camel@phantasy-star> I have the same dream as you, but with something that generates a working Plone 3 product. I can (and in fact, recently did) present a tutorial on 2.5-style UML >> AGX >> Plone. I'd be happy to do the same thing at a Plone Jam now that the kinks have been worked out, but with a "real" UML model. But the Plone community seems pretty set on Zope3 tech, which Josh is much more versed in. In other words, I suspect that model driven development is falling out of favor, for good reasons according to people who know what they are doing. Instead of refining that process, it might make more sense to explore the new way. Or perhaps a hybrid, or a face off... ? Rob On Tue, 2008-03-18 at 13:42 -0500, Mark R. Biggers wrote: > My dream of a super Plone Jam or 2: > > Rob.L, Mike.R and Josh.J take turns, reviewing either an "example" UML model > or one of their own, and explain some "tips 'n tricks" about what they have > discovered about UML-modeling => ArchGenXML => Plone products. Plone 2 > examples would be fine; Plone 3 would be great, too. > > I did some work recently fixing the AGX example model, to try it out with > 1.6.x AXG and Plone3. That might help; however we are all sure to learn > something from the UML/AGX super-group ;) > > Here's hoping flattery will get those Jam-demos, > ----mark > > Chris Calloway writes: > > On 3/18/2008 9:35 AM, Mike Revoir wrote: > > > Plone Jammers, > > > I apologize for the late notice, but I will be unable to attend and host > > > this week's Plone Jam. Is anyone able to host the Jam in my place? > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug From josh_johnson at unc.edu Tue Mar 18 20:02:08 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Tue, 18 Mar 2008 15:02:08 -0400 Subject: [triangle-zpug] UML + AXG -- Re: Plone Jam 3/20/08 In-Reply-To: <18400.3351.814031.690332@dexter.saiph.com> References: <47DFFF7D.8060600@unc.edu> <18400.3351.814031.690332@dexter.saiph.com> Message-ID: <47E011B0.2080108@unc.edu> I'm down with that! Flattery will get you everywhere ;) I'd also like to propose some hard-core ZopeSkel hacking at a future jam... I could use some help from some of you pythonistas as well, paste is very much a python thing first. I've spent more time figuring out how paste works than I spent doing actual work on ZopeSkel. Maybe make it a "mini sprint"... might even be a fun way to blow a Saturday sometime... :) BTW, I can't make it this week either, and I'm totally bummed... anybody interested in hosting an off schedule plone jam late next week for Mark's idea? is that too soon after the meeting? JJ Mark R. Biggers wrote: > My dream of a super Plone Jam or 2: > > Rob.L, Mike.R and Josh.J take turns, reviewing either an "example" UML model > or one of their own, and explain some "tips 'n tricks" about what they have > discovered about UML-modeling => ArchGenXML => Plone products. Plone 2 > examples would be fine; Plone 3 would be great, too. > > I did some work recently fixing the AGX example model, to try it out with > 1.6.x AXG and Plone3. That might help; however we are all sure to learn > something from the UML/AGX super-group ;) > > Here's hoping flattery will get those Jam-demos, > ----mark > > Chris Calloway writes: > > On 3/18/2008 9:35 AM, Mike Revoir wrote: > > > Plone Jammers, > > > I apologize for the late notice, but I will be unable to attend and host > > > this week's Plone Jam. Is anyone able to host the Jam in my place? > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug > From cbc at unc.edu Tue Mar 18 21:05:55 2008 From: cbc at unc.edu (Chris Calloway) Date: Tue, 18 Mar 2008 16:05:55 -0400 Subject: [triangle-zpug] UML + AXG -- Re: Plone Jam 3/20/08 In-Reply-To: <1205866874.6782.8.camel@phantasy-star> References: <47DFFF7D.8060600@unc.edu> <18400.3351.814031.690332@dexter.saiph.com> <1205866874.6782.8.camel@phantasy-star> Message-ID: <47E020A3.3020601@unc.edu> On 3/18/2008 3:01 PM, Rob Lineberger wrote: > In other words, I suspect that model driven development is falling out > of favor, for good reasons according to people who know what they are > doing. I think it's doing quite well and now called zope.schema. -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From josh_johnson at unc.edu Tue Mar 18 21:31:29 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Tue, 18 Mar 2008 16:31:29 -0400 Subject: [triangle-zpug] UML + AXG -- Re: Plone Jam 3/20/08 In-Reply-To: <1205866874.6782.8.camel@phantasy-star> References: <47DFFF7D.8060600@unc.edu> <18400.3351.814031.690332@dexter.saiph.com> <1205866874.6782.8.camel@phantasy-star> Message-ID: <47E026A1.7010304@unc.edu> I don't know if I'd go so far as to say that model driven development is falling out of favor (least in my case), it's more like model-driven _code generation_ is turning out to be a real pipe dream. To put it differently: I still think I'm in love with UML, I just don't want to have code babies with it. I think it's also important to mention that "model driven" can mean a lot of different things. A zope3 interface can "say" all the same things a UML model does, just in code instead of pictures, so it's still "modeling" (as far as I'm concerned anyway). :) JJ Rob Lineberger wrote: > I have the same dream as you, but with something that generates a > working Plone 3 product. > > I can (and in fact, recently did) present a tutorial on 2.5-style UML >> > AGX >> Plone. I'd be happy to do the same thing at a Plone Jam now that > the kinks have been worked out, but with a "real" UML model. But the > Plone community seems pretty set on Zope3 tech, which Josh is much more > versed in. > > In other words, I suspect that model driven development is falling out > of favor, for good reasons according to people who know what they are > doing. Instead of refining that process, it might make more sense to > explore the new way. > > Or perhaps a hybrid, or a face off... ? > > Rob > > > On Tue, 2008-03-18 at 13:42 -0500, Mark R. Biggers wrote: > >> My dream of a super Plone Jam or 2: >> >> Rob.L, Mike.R and Josh.J take turns, reviewing either an "example" UML model >> or one of their own, and explain some "tips 'n tricks" about what they have >> discovered about UML-modeling => ArchGenXML => Plone products. Plone 2 >> examples would be fine; Plone 3 would be great, too. >> >> I did some work recently fixing the AGX example model, to try it out with >> 1.6.x AXG and Plone3. That might help; however we are all sure to learn >> something from the UML/AGX super-group ;) >> >> Here's hoping flattery will get those Jam-demos, >> ----mark >> >> Chris Calloway writes: >> > On 3/18/2008 9:35 AM, Mike Revoir wrote: >> > > Plone Jammers, >> > > I apologize for the late notice, but I will be unable to attend and host >> > > this week's Plone Jam. Is anyone able to host the Jam in my place? >> >> _______________________________________________ >> triangle-zpug mailing list >> triangle-zpug at starship.python.net >> http://starship.python.net/mailman/listinfo/triangle-zpug >> > > > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug > From biggers at utsl.com Wed Mar 19 13:58:45 2008 From: biggers at utsl.com (Mark R. Biggers) Date: Wed, 19 Mar 2008 07:58:45 -0500 Subject: [triangle-zpug] UML + AXG -- Re: Plone Jam 3/20/08 In-Reply-To: <47E026A1.7010304@unc.edu> References: <47DFFF7D.8060600@unc.edu> <18400.3351.814031.690332@dexter.saiph.com> <1205866874.6782.8.camel@phantasy-star> <47E026A1.7010304@unc.edu> Message-ID: <18401.3589.838891.758211@dexter.saiph.com> Hi folks, Josh Johnson writes: > I don't know if I'd go so far as to say that model driven development is > falling out of favor (least in my case), it's more like model-driven > _code generation_ is turning out to be a real pipe dream. > > To put it differently: I still think I'm in love with UML, I just don't > want to have code babies with it. > > Rob Lineberger wrote: > > I have the same dream as you, but with something that generates a > > working Plone 3 product. > > > > I can (and in fact, recently did) present a tutorial on 2.5-style UML >> > > AGX >> Plone. I'd be happy to do the same thing at a Plone Jam now that > > the kinks have been worked out, but with a "real" UML model. But the > > Plone community seems pretty set on Zope3 tech, which Josh is much more > > versed in. > > > > In other words, I suspect that model driven development is falling out > > of favor, for good reasons according to people who know what they are > > doing. Instead of refining that process, it might make more sense to > > explore the new way. We "discussed" this possible issue over IRC #weblion, during the PloSympEast. Joel Burton, in particular, thinks that there *must* be a story for ArgoUML + ArchGenXML going forward. There's too many folks using AGX right now (with their fav. UML UI) for Plone2, and will expect that they can go forward with their models on Plone3. For my part, without AGX, I don't know how I could have been "bootstrapped" into doing real Plone2 development! Having the unit-test stubs; some workable "skeleton" of archetypes-classes from the model; and having a product that can install or unit-test "out of the box" is a *huge win*. And I like the fact that the UML model-representation is reflected in the code, and can be (manually) "round-tripped" with the code changes. AGX hasn't overcome the need to stare at Plone code (e.g. unit-tests) or use IPython or WingIDE to "get" all the APIs, but I can't overemphasize how much help Argo+AGX has been. Also, I think the combo has actually attracted and help keep new (possibly quite experienced otherwise) developers learning Plone & Zope. Hence, my great interest in Josh's fixes for AGX, and any signs that AGX 1.6.x or 2.0 will be a serious lever for doing Plone3 products development. ("paster" is fine as far it goes; I don't have a problem with it per se.) My 2 cents, thank you, ----mark From josh_johnson at unc.edu Wed Mar 19 17:01:56 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Wed, 19 Mar 2008 12:01:56 -0400 Subject: [triangle-zpug] UML + AXG -- Re: Plone Jam 3/20/08 In-Reply-To: <18401.3589.838891.758211@dexter.saiph.com> References: <47DFFF7D.8060600@unc.edu> <18400.3351.814031.690332@dexter.saiph.com> <1205866874.6782.8.camel@phantasy-star> <47E026A1.7010304@unc.edu> <18401.3589.838891.758211@dexter.saiph.com> Message-ID: <47E138F4.20700@unc.edu> I have my quams about cramming everything into the UML model (which I'd be happy to elaborate on), but my biggest beef with AGX is it didn't/doesn't work (at least for me). :) It's not robust enough, it's not developed enough, it's not documented enough.. and worse, it does stuff for it's own sake instead of what makes sense (e.g. the broken installation code, the way it uses config.py, etc). It's getting a lot better, but it's still not quite "right". That's very hard for me to say. I've seen the code first hand and I think AGX is very well written, a tremendous accomplishment, and a huge asset to the Plone community at large. I think what Joel has done, using it as a platform for Plone education, is very remarkable. That being said, I'm suspicious of anything that takes away knowledge from you. AGX does too much for you, and without much explanation. The code it generates is based on the personal experience of "what works" by the people who wrote it (at least that's how it looks), and it doesn't coincide directly with any documentation I've seen. It's great when it works, but if it doesn't, either because you want to do something that AGX hasn't implemented, or Plone has changed in ways that AGX hasn't kept up with, you're stuck tacking things on and working around AGX's limitations, with the risk of having your working code whacked the next time you regenerate. Or worse, you stop regenerating and keeping your model up to date. That's assuming you know how to do it on your own. Relying on a code generator like AGX too heavily keeps you from having to understand what you're doing... until it's too late, AGX messes up, and you're forced to dive in (that was my problem, just exacerbated by the fact that the code it was generating wasn't documented). I like the direction ZopeSkel is going because it sets a good precedent. We've got Martin Aspeli's book to explain what ZopeSkel is doing. Martin mentioned that he actually changed Plone's code so that he could explain it's concepts better during the writing of his book. That's huge. ZopeSkel's core theme is: run it once, then tweak the code as needed. Run it again to add chunks of boiler plate as needed, then tweak some more. That's great, because as you develop for new versions of Plone, or start using features that ZopeSkel doesn't handle (and probably shouldn't handle, like setting up event listeners), you're free to implement them in the way that works best for your situation, not forced to do it a specific way for the sake of the script. It's handling the annoying boiler plate code, even educating you on how things should be done (assuming the paster template is well documented), but you can always deviate. Better, it forces you to understand what it's doing. Since it's based on a solid foundation of documentation (Martin's book), it's easy to find the resources you need to accomplish that understanding. And ultimately, that understanding helps enable you to fix it if it breaks. In working on my process document, I've run into that many times, and didn't have to scratch my head trying to figure out what I did wrong or what my tool did that wasn't kosher. Now, I think that that philosophy can be applied to future AGX development. I can see AGX becoming more respectful to UML, and more flexible. I can even see it being more easily extensible, where templates can be added easily for new stereotypes (maybe even on a per-project basis), new plone idioms, shortcuts, etc. I can see AGX's documentation being concise and comprehensive, so that I can rely on the explanation of a tagged value to actually do what the docs say, and more importantly, I can predict what code will be generated given specific circumstances, and know _why_. I hope that makes sense (I hate being so verbose :P), JJ Mark R. Biggers wrote: > Hi folks, > > Josh Johnson writes: > > I don't know if I'd go so far as to say that model driven development is > > falling out of favor (least in my case), it's more like model-driven > > _code generation_ is turning out to be a real pipe dream. > > > > To put it differently: I still think I'm in love with UML, I just don't > > want to have code babies with it. > > > > Rob Lineberger wrote: > > > I have the same dream as you, but with something that generates a > > > working Plone 3 product. > > > > > > I can (and in fact, recently did) present a tutorial on 2.5-style UML >> > > > AGX >> Plone. I'd be happy to do the same thing at a Plone Jam now that > > > the kinks have been worked out, but with a "real" UML model. But the > > > Plone community seems pretty set on Zope3 tech, which Josh is much more > > > versed in. > > > > > > In other words, I suspect that model driven development is falling out > > > of favor, for good reasons according to people who know what they are > > > doing. Instead of refining that process, it might make more sense to > > > explore the new way. > > We "discussed" this possible issue over IRC #weblion, during the > PloSympEast. Joel Burton, in particular, thinks that there *must* be a > story for ArgoUML + ArchGenXML going forward. There's too many folks using > AGX right now (with their fav. UML UI) for Plone2, and will expect that they > can go forward with their models on Plone3. > > For my part, without AGX, I don't know how I could have been "bootstrapped" > into doing real Plone2 development! Having the unit-test stubs; some > workable "skeleton" of archetypes-classes from the model; and having a > product that can install or unit-test "out of the box" is a *huge win*. And > I like the fact that the UML model-representation is reflected in the code, > and can be (manually) "round-tripped" with the code changes. > > AGX hasn't overcome the need to stare at Plone code (e.g. unit-tests) or use > IPython or WingIDE to "get" all the APIs, but I can't overemphasize how much > help Argo+AGX has been. Also, I think the combo has actually attracted and > help keep new (possibly quite experienced otherwise) developers learning > Plone & Zope. > > Hence, my great interest in Josh's fixes for AGX, and any signs that AGX > 1.6.x or 2.0 will be a serious lever for doing Plone3 products development. > > ("paster" is fine as far it goes; I don't have a problem with it per se.) > > My 2 cents, thank you, > ----mark > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug > From cbc at unc.edu Mon Mar 24 15:55:42 2008 From: cbc at unc.edu (Chris Calloway) Date: Mon, 24 Mar 2008 10:55:42 -0400 Subject: [triangle-zpug] Meeting location change for tomorrow Message-ID: <47E7C0EE.701@unc.edu> There has been a room change for tomorrow's TriZPUG meeting. The location is 328 Phillips Hall, the place where we normally meet, and the location of our first two Plone Boot Camps. The meeting notice is here: http://trizpug.org/Members/cbc/mar-08-mtg The directions are here: http://trizpug.org/Members/cbc/unc-logistics This meeting will be hosted by Josh Johnson in my absence. Josh, you might want to post your cell number in case anyone is lost trying to find the meeting room. Lee Nelson of Research Engineer and Lab Manager of the Constructued Facilities Lab at NCSU will speak about his use of Python in structural engineering simulations. I'm hoping Chris Church will also talk about PyCon, as I will not be able to be at the meeting this month. PyCon was quite great this year. ChiPy was a good host. The video is being rapidly assembled this year as a couple of people are very gung-ho about getting that done fast. My favorite talks at PyCon this year were on topics getting under the hood of Python. The talk on listobject.c was completely awesome. Also great were talks on weak references, the import statement, Grok, Zope 3, Repoze, and Supervisor. There was a PyCon exhibit hall this year. I collected enough schwag into a goodie bag to tide us over with door prizes for a number of meetings. A good discovery was that we are vastly under-utilizing O'Reilly's User Group program. Essentially, TriZPUG can get you any book you are willing to review. -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From josh_johnson at unc.edu Mon Mar 24 16:26:59 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Mon, 24 Mar 2008 11:26:59 -0400 Subject: [triangle-zpug] Meeting location change for tomorrow In-Reply-To: <47E7C0EE.701@unc.edu> References: <47E7C0EE.701@unc.edu> Message-ID: <47E7C843.2010802@unc.edu> I don't have a cell phone. So if you're lost, ah... sucks to be you? ;) I got lost one time trying to get to 328 Phillips, and managed to find my way. Just remember, once you go into the building, KEEP LEFT. The stairwell is on the left of the main entrance, and the classroom is in the corner on the left once you get to the 3rd floor. The numbers on the doors didn't seem to make sense, so I don't trust 'em. Also, make sure you're not a week early like I was at the time :P JJ Chris Calloway wrote: > There has been a room change for tomorrow's TriZPUG meeting. > > The location is 328 Phillips Hall, the place where we normally meet, and > the location of our first two Plone Boot Camps. > > The meeting notice is here: > > http://trizpug.org/Members/cbc/mar-08-mtg > > The directions are here: > > http://trizpug.org/Members/cbc/unc-logistics > > This meeting will be hosted by Josh Johnson in my absence. Josh, you > might want to post your cell number in case anyone is lost trying to > find the meeting room. > > Lee Nelson of Research Engineer and Lab Manager of the Constructued > Facilities Lab at NCSU will speak about his use of Python in structural > engineering simulations. I'm hoping Chris Church will also talk about > PyCon, as I will not be able to be at the meeting this month. > > PyCon was quite great this year. ChiPy was a good host. The video is > being rapidly assembled this year as a couple of people are very gung-ho > about getting that done fast. > > My favorite talks at PyCon this year were on topics getting under the > hood of Python. The talk on listobject.c was completely awesome. Also > great were talks on weak references, the import statement, Grok, Zope 3, > Repoze, and Supervisor. > > There was a PyCon exhibit hall this year. I collected enough schwag into > a goodie bag to tide us over with door prizes for a number of meetings. > A good discovery was that we are vastly under-utilizing O'Reilly's User > Group program. Essentially, TriZPUG can get you any book you are willing > to review. > > From josh_johnson at unc.edu Mon Mar 24 20:29:51 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Mon, 24 Mar 2008 15:29:51 -0400 Subject: [triangle-zpug] Plone Symposium Videos Online Message-ID: <47E8012F.5070204@unc.edu> http://plone.tv/conferences/plone-symposium-east-2008 I heard they're still working on PyCon... JJ From jmack at wm7d.net Tue Mar 25 16:23:56 2008 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Tue, 25 Mar 2008 08:23:56 -0700 (PDT) Subject: [triangle-zpug] why is this using a lot of memory? Message-ID: intervals=10000000 #some large number height=0 for x in range(0, intervals): height+=x (I get the same result whether running interactive or from a file with the above code) For a sufficiently large value of "intervals" the program exits immediately with a MemoryError. For slightly smaller values, the program takes up most of the memory of the machine. I would have thought that you'd only be allocating a couple of variables. What am I missing? Am I allocating an "intervals" number of something, rather than a single variable with a large value? thanks Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From david at handysoftware.com Tue Mar 25 16:48:29 2008 From: david at handysoftware.com (David Handy) Date: Tue, 25 Mar 2008 11:48:29 -0400 Subject: [triangle-zpug] why is this using a lot of memory? In-Reply-To: References: Message-ID: <20080325154829.GB14694@arno2> On Tue, Mar 25, 2008 at 08:23:56AM -0700, Joseph Mack NA3T wrote: > intervals=10000000 #some large number > height=0 > for x in range(0, intervals): > height+=x range() constructs a list in memory, populating the entire thing with each successive integer. Try xrange() instead, that's what you want. David H -- David Handy Computer Programming is Fun! Beginning Computer Programming with Python http://www.handysoftware.com/cpif/ From philip at semanchuk.com Tue Mar 25 16:52:36 2008 From: philip at semanchuk.com (Philip Semanchuk) Date: Tue, 25 Mar 2008 11:52:36 -0400 Subject: [triangle-zpug] why is this using a lot of memory? In-Reply-To: References: Message-ID: <27DF0DE5-2047-41B3-B741-5E61717F3FA7@semanchuk.com> On Mar 25, 2008, at 11:23 AM, Joseph Mack NA3T wrote: > intervals=10000000 #some large number > height=0 > for x in range(0, intervals): > height+=x > > (I get the same result whether running interactive or from a > file with the above code) > > For a sufficiently large value of "intervals" the program > exits immediately with a MemoryError. For slightly smaller > values, the program takes up most of the memory of the > machine. I would have thought that you'd only be allocating > a couple of variables. What am I missing? Am I allocating an > "intervals" number of something, rather than a single > variable with a large value? range() builds a list of numbers in memory, so you're creating a list with 10000000 elements. Check out the function xrange() instead. Cheers Philip From jcd at sdf.lonestar.org Tue Mar 25 16:33:32 2008 From: jcd at sdf.lonestar.org (J. Cliff Dyer) Date: Tue, 25 Mar 2008 11:33:32 -0400 Subject: [triangle-zpug] why is this using a lot of memory? In-Reply-To: References: Message-ID: <1206459212.3940.0.camel@aalcdl07.lib.unc.edu> range(x,y) creates a list of all the numbers between x and y. For sufficiently large y (and decently small x), you will run out of memory. Try xrange(x,y), which creates an iterator, which yields each number in turn. Cheers, Cliff On Tue, 2008-03-25 at 08:23 -0700, Joseph Mack NA3T wrote: > intervals=10000000 #some large number > height=0 > for x in range(0, intervals): > height+=x > > (I get the same result whether running interactive or from a > file with the above code) > > For a sufficiently large value of "intervals" the program > exits immediately with a MemoryError. For slightly smaller > values, the program takes up most of the memory of the > machine. I would have thought that you'd only be allocating > a couple of variables. What am I missing? Am I allocating an > "intervals" number of something, rather than a single > variable with a large value? > > thanks Joe > From flyingfred0+trizpug at gmail.com Tue Mar 25 16:57:54 2008 From: flyingfred0+trizpug at gmail.com (Chris Church) Date: Tue, 25 Mar 2008 11:57:54 -0400 Subject: [triangle-zpug] why is this using a lot of memory? In-Reply-To: References: Message-ID: <1ea258670803250857pf0256b6ufd0f5a994264a47e@mail.gmail.com> Using range() creates a list containing 10,000,000 integers, which is why it requires most of your memory. You probably want to use xrange() instead, which creates an iterator that gives you one integer at a time from your range. On Tue, Mar 25, 2008 at 11:23 AM, Joseph Mack NA3T wrote: > intervals=10000000 #some large number > height=0 > for x in range(0, intervals): > height+=x > > (I get the same result whether running interactive or from a > file with the above code) > > For a sufficiently large value of "intervals" the program > exits immediately with a MemoryError. For slightly smaller > values, the program takes up most of the memory of the > machine. I would have thought that you'd only be allocating > a couple of variables. What am I missing? Am I allocating an > "intervals" number of something, rather than a single > variable with a large value? > > thanks Joe > > -- > Joseph Mack NA3T EME(B,D), FM05lw North Carolina > jmack (at) wm7d (dot) net - azimuthal equidistant map > generator at http://www.wm7d.net/azproj.shtml > Homepage http://www.austintek.com/ It's GNU/Linux! > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jmack at wm7d.net Tue Mar 25 16:59:49 2008 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Tue, 25 Mar 2008 08:59:49 -0700 (PDT) Subject: [triangle-zpug] why is this using a lot of memory? In-Reply-To: <27DF0DE5-2047-41B3-B741-5E61717F3FA7@semanchuk.com> References: <27DF0DE5-2047-41B3-B741-5E61717F3FA7@semanchuk.com> Message-ID: On Tue, 25 Mar 2008, Philip Semanchuk wrote: > range() builds a list of numbers in memory, just figured this out myself. It's working fine in a while loop for the moment. > so you're creating a list with > 10000000 elements. Check out the function xrange() instead. thanks both of you. Will go lookup xrange() Thanks Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From brad.crittenden at gmail.com Tue Mar 25 16:55:40 2008 From: brad.crittenden at gmail.com (Bradley A. Crittenden) Date: Tue, 25 Mar 2008 11:55:40 -0400 Subject: [triangle-zpug] why is this using a lot of memory? In-Reply-To: References: Message-ID: <98937943-4C1F-49A9-A6FA-4DD3A1851D1F@gmail.com> On Mar 25, 2008, at 11:23 , Joseph Mack NA3T wrote: > intervals=10000000 #some large number > height=0 > for x in range(0, intervals): > height+=x > Joe, Try changing 'range' to 'xrange'. The former returns the entire list while the latter is an iterator, therefore it doesn't consume much memory. --Brad > (I get the same result whether running interactive or from a > file with the above code) > > For a sufficiently large value of "intervals" the program > exits immediately with a MemoryError. For slightly smaller > values, the program takes up most of the memory of the > machine. I would have thought that you'd only be allocating > a couple of variables. What am I missing? Am I allocating an > "intervals" number of something, rather than a single > variable with a large value? > > thanks Joe > > -- > Joseph Mack NA3T EME(B,D), FM05lw North Carolina > jmack (at) wm7d (dot) net - azimuthal equidistant map > generator at http://www.wm7d.net/azproj.shtml > Homepage http://www.austintek.com/ It's GNU/Linux! > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug From cbc at unc.edu Tue Mar 25 19:39:29 2008 From: cbc at unc.edu (Chris Calloway) Date: Tue, 25 Mar 2008 14:39:29 -0400 Subject: [triangle-zpug] why is this using a lot of memory? In-Reply-To: References: <27DF0DE5-2047-41B3-B741-5E61717F3FA7@semanchuk.com> Message-ID: <47E946E1.4010708@unc.edu> On 3/25/2008 11:59 AM, Joseph Mack NA3T wrote: > thanks both of you. Will go lookup xrange() In addition to the memory-conserving xrange, you don't need the loop. This will do the same thing: >>> sum(xrange(10000000)) 49999995000000L >>> I thought this was slow. So I tried doing this with scipy.weave.inline. See: http://incm.cnrs-mrs.fr/LaurentPerrinet/ScientificPython#head-4f78ccfcc91b87436966e15a294263dbcd400a7e for a pretty similar example. But ironically it was much slower, as the C++ took so long to compile on the fly. Plus, you need memory, as you need to pass a populated numpy array to the C++ instead of a Python iterator. Python wins! I had no problem with the original example, I guess because I have enough memory. Man, some days I waste a lot of time on brain teasers. -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From jmack at wm7d.net Tue Mar 25 20:43:15 2008 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Tue, 25 Mar 2008 12:43:15 -0700 (PDT) Subject: [triangle-zpug] why is this using a lot of memory? In-Reply-To: <47E946E1.4010708@unc.edu> References: <27DF0DE5-2047-41B3-B741-5E61717F3FA7@semanchuk.com> <47E946E1.4010708@unc.edu> Message-ID: On Tue, 25 Mar 2008, Chris Calloway wrote: > In addition to the memory-conserving xrange, you don't need the loop. > This will do the same thing: > > >>> sum(xrange(10000000)) > 49999995000000L sure. The code I sent was the problem reduced to its minimum. I needed some line in the loop, any line would have done. Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From cbc at unc.edu Tue Mar 25 20:49:34 2008 From: cbc at unc.edu (Chris Calloway) Date: Tue, 25 Mar 2008 15:49:34 -0400 Subject: [triangle-zpug] Tonight's meeting Message-ID: <47E9574E.6030607@unc.edu> TriZPUGlians, At tonight's meeting, and continuing on this list, please discuss: 1) Efficacy of moving our meeting night *back* to fourth Wednesday. For the rest of the year, Tuesday nights are going to be difficult for me and a few other politically active TriZPUG members. We met on fourth Wednesdays for many years and moved to fourth Tuesday at a request of a member who no longer has that constraint. 2) Which O'Reilly books you'd like me to request for us through our user group program with O'Reilly. Especially if you will commit to writing a book review. Doesn't have to be a Python book ('Head Rush Ajax' comes to mind). But of course, as a Python user group, I would expect a preference for Python books, even though O'Reilly hasn't been especially active in the Python book category for a couple of years. However, PyAtl's Noah Gift is blogging about Python at O'Reilly's OnLamp: http://www.oreillynet.com/pub/au/3039 . If you want to write a Python book, our user group program can hook you up. Noah has a Python sysadmining book coming out soon. -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From mrevoir at gmail.com Wed Mar 26 17:43:27 2008 From: mrevoir at gmail.com (Mike Revoir) Date: Wed, 26 Mar 2008 12:43:27 -0400 Subject: [triangle-zpug] Tonight's meeting In-Reply-To: <47E9574E.6030607@unc.edu> References: <47E9574E.6030607@unc.edu> Message-ID: On Tue, Mar 25, 2008 at 3:49 PM, Chris Calloway wrote: At tonight's meeting, and continuing on this list, please discuss: > > 1) Efficacy of moving our meeting night *back* to fourth Wednesday. For > the rest of the year, Tuesday nights are going to be difficult for me > and a few other politically active TriZPUG members. We met on fourth > Wednesdays for many years and moved to fourth Tuesday at a request of a > member who no longer has that constraint. > I wasn't able to attend last night's meeting as my son was sick, but would a night other than Wednesday be possible? I know that no night is perfect for everyone, but Wednesday is the one night that I cannot attend. If Wednesday works best for everyone else, then please don't stick with Tuesday's just for me. Thanks, Mike -------------- next part -------------- An HTML attachment was scrubbed... URL: From cbc at unc.edu Wed Mar 26 18:37:27 2008 From: cbc at unc.edu (Chris Calloway) Date: Wed, 26 Mar 2008 13:37:27 -0400 Subject: [triangle-zpug] Tonight's meeting In-Reply-To: References: <47E9574E.6030607@unc.edu> Message-ID: <47EA89D7.9000905@unc.edu> On 3/26/2008 12:43 PM, Mike Revoir wrote: > I wasn't able to attend last night's meeting as my son was sick, but would a > night other than Wednesday be possible? I know that no night is perfect for > everyone, but Wednesday is the one night that I cannot attend. If Wednesday > works best for everyone else, then please don't stick with Tuesday's just > for me. As you are host of our largest attended meetings, I think your opinion matters most. How bad are Thursdays? Who would object to fourth Thursdays? Also, I'd like to apologize to Lee Nelson and Josh Johnson for the low turnout last night. Especially with Lee driving to Chapel Hill to present. If the people at UNC at not going to show up, I'd be in favor of only having meetings at Duke and Capstrat, where people do show up. The only reason we started having meeting rotate to UNC every third month was to accommodate the UNC folks who said they would be more likely to attend meetings at UNC. -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From josh_johnson at unc.edu Wed Mar 26 18:38:26 2008 From: josh_johnson at unc.edu (Josh Johnson) Date: Wed, 26 Mar 2008 13:38:26 -0400 Subject: [triangle-zpug] Last Night Recap Message-ID: <47EA8A12.6080603@unc.edu> Since nobody showed up, or everybody got lost using my completely wrong directions, except me and Lee, I figured I'd give ya'll a quick rundown on Lee's presentation. I tried to get VLC broadcasting to work, and I got close, but nobody on the IRC channel could view it (and I managed to crash a mac in the process :)) 1. Structural Engineering is RAD :) 2. Lee's use of Data Turbine was inspiring (http://rbnb.creare.com/rbnb/index.html). Very cool tech! 3. COM sucks, but it's a beautiful thing, for sure... (He's using COM in python to talk to data acquisition software) I'm sure Lee can fill in some of the finer details. We all need to prod Lee to put his slides up online somewhere. He's got some embedded video (very cool embedded video of tests in progress), so it's not as easy as just saving it to HTML, but he should really do it, it was a great presentation... that you all missed, and should be kicking yourselves over. ;) We didn't talk about meeting days. Personally, I have trouble with Wednesdays only because I occasionally (once every 4 or 6 weeks) play Texas Hold'em with some friends of mine on Wednesday nights (not a big deal). JJ From mrevoir at gmail.com Thu Mar 27 04:17:32 2008 From: mrevoir at gmail.com (Mike Revoir) Date: Wed, 26 Mar 2008 23:17:32 -0400 Subject: [triangle-zpug] Tonight's meeting In-Reply-To: <47EA89D7.9000905@unc.edu> References: <47E9574E.6030607@unc.edu> <47EA89D7.9000905@unc.edu> Message-ID: On Wed, Mar 26, 2008 at 1:37 PM, Chris Calloway wrote: How bad are Thursdays? Who would object to fourth Thursdays? > Thursday's are fine with me. Mike -------------- next part -------------- An HTML attachment was scrubbed... URL: From robert at geigers.net Thu Mar 27 14:49:27 2008 From: robert at geigers.net (Robert Geiger) Date: Thu, 27 Mar 2008 08:49:27 -0500 Subject: [triangle-zpug] UML + AXG -- Re: Plone Jam 3/20/08 In-Reply-To: <18401.3589.838891.758211@dexter.saiph.com> References: <47DFFF7D.8060600@unc.edu> <18400.3351.814031.690332@dexter.saiph.com> <1205866874.6782.8.camel@phantasy-star> <47E026A1.7010304@unc.edu> <18401.3589.838891.758211@dexter.saiph.com> Message-ID: <47EBA5E7.2040106@geigers.net> Guys, Regarding Design and Tools.... I've been working with a group of 30 analysts documenting the re-design (BPR) of an entire state agency (VA DMV). I've been mentoring and coaching them using ICONIX Process and they've been working with over a hundred users documenting use cases. We ran a sub-project off the use cases for processing Grant processing. We took the use cases, did Robustness diagrams on them, GENERATED Sequence diagrams, mapped the message conversations between the objects and GENERATED the shell classes AND the test case classes (one test per controller). The coders took the shells and filled in the methods and knit it together per the sequence diagrams et al, which let them know exactly what they were supposed to be doing! The developers were PART of the technical design process from Robustness onward. Working with the users and analysts, the developers could understand the USER's scenarios very clearly and were delighted to be part of this kind of effort. They had never done anything like it before! Needless to say, these kind of user driven design and development efforts are a RAGING SUCCESS when you use the methodology, as was this particular one. As to the tools, I've checked out Argo and other free and $ tools. Most are not quite robust enough yet to support the entire ICONIX process. We used Enterprise Architect which, given it's capabilities for the price, is a HUGE bargain. It supports PYTHON and generates code from template driven scripts that can be modified to generate any kind of code. If they were modified to generate Zope/Plone code, it would be an end-to-end solution for user/developer collaborative design from use case through coding for Zope/Plone. Either this, or maybe the free tools can add a couple features in the right place...doesn't matter to me! I'd love to come by and talk about the possibilities at the next meeting. Anybody want to hear more? Thanks, and best regards to you all! Robert Geiger Http://robert.geigers.net 919.271.7132 Mark R. Biggers wrote: > Hi folks, > > Josh Johnson writes: > > I don't know if I'd go so far as to say that model driven development is > > falling out of favor (least in my case), it's more like model-driven > > _code generation_ is turning out to be a real pipe dream. > > > > To put it differently: I still think I'm in love with UML, I just don't > > want to have code babies with it. > > > > Rob Lineberger wrote: > > > I have the same dream as you, but with something that generates a > > > working Plone 3 product. > > > > > > I can (and in fact, recently did) present a tutorial on 2.5-style UML >> > > > AGX >> Plone. I'd be happy to do the same thing at a Plone Jam now that > > > the kinks have been worked out, but with a "real" UML model. But the > > > Plone community seems pretty set on Zope3 tech, which Josh is much more > > > versed in. > > > > > > In other words, I suspect that model driven development is falling out > > > of favor, for good reasons according to people who know what they are > > > doing. Instead of refining that process, it might make more sense to > > > explore the new way. > > We "discussed" this possible issue over IRC #weblion, during the > PloSympEast. Joel Burton, in particular, thinks that there *must* be a > story for ArgoUML + ArchGenXML going forward. There's too many folks using > AGX right now (with their fav. UML UI) for Plone2, and will expect that they > can go forward with their models on Plone3. > > For my part, without AGX, I don't know how I could have been "bootstrapped" > into doing real Plone2 development! Having the unit-test stubs; some > workable "skeleton" of archetypes-classes from the model; and having a > product that can install or unit-test "out of the box" is a *huge win*. And > I like the fact that the UML model-representation is reflected in the code, > and can be (manually) "round-tripped" with the code changes. > > AGX hasn't overcome the need to stare at Plone code (e.g. unit-tests) or use > IPython or WingIDE to "get" all the APIs, but I can't overemphasize how much > help Argo+AGX has been. Also, I think the combo has actually attracted and > help keep new (possibly quite experienced otherwise) developers learning > Plone & Zope. > > Hence, my great interest in Josh's fixes for AGX, and any signs that AGX > 1.6.x or 2.0 will be a serious lever for doing Plone3 products development. > > ("paster" is fine as far it goes; I don't have a problem with it per se.) > > My 2 cents, thank you, > ----mark > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug > -- Robert Geiger 919.271.7132 Mobile 888.691.5888 Fax http://robert.geigers.net Have a great day! -------------- next part -------------- A non-text attachment was scrubbed... Name: robert.vcf Type: text/x-vcard Size: 219 bytes Desc: not available URL: From cbc at unc.edu Fri Mar 28 16:48:01 2008 From: cbc at unc.edu (Chris Calloway) Date: Fri, 28 Mar 2008 11:48:01 -0400 Subject: [triangle-zpug] Plone Symposium Videos Online In-Reply-To: <47E8012F.5070204@unc.edu> References: <47E8012F.5070204@unc.edu> Message-ID: <47ED1331.2080605@unc.edu> On 3/24/2008 3:29 PM, Josh Johnson wrote: > I heard they're still working on PyCon... The PyCon vids are slowly making the rounds through a rather confusing committee Chris Church and I joined. The raw vids before editing are starting to show up here: http://www.youtube.com/results?search_query=pycon08 -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From jmack at wm7d.net Sun Mar 30 03:42:01 2008 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Sat, 29 Mar 2008 18:42:01 -0700 (PDT) Subject: [triangle-zpug] can't find font problem Message-ID: I have a font which I can find with the full pathname #-----code starts here from math import sqrt import os, sys from PIL import Image, ImageDraw, ImageFont print sys.path #fonts #THIS LINE WORKS #label_font=ImageFont.load("/usr/lib/python2.4/site-packages/PIL/courR18.pil") #THIS LINE FAILS label_font=ImageFont.load("PIL/courR18.pil") #-------code ends here I get an error with any variation of the font filename where I left python handle the python path, including just the bare filename. Here's python path from the code ['/src/da/python_class/class_code', '/usr/lib/python24.zip', '/usr/lib/python2.4', '/usr/lib/python2.4/plat-linux2', '/usr/lib/python2.4/lib-tk', '/usr/lib/python2.4/lib-dynload', '/usr/lib/python2.4/site-packages', '/usr/lib/python2.4/site-packages/PIL'] the error is Traceback (most recent call last): File "./pi_numerical_integration_diagram.py", line 55, in ? label_font = ImageFont.load("PIL/courR18.pil") File "/usr/lib/python2.4/site-packages/PIL/ImageFont.py", line 180, in load f._load_pilfont(filename) File "/usr/lib/python2.4/site-packages/PIL/ImageFont.py", line 67, in _load_pilfont file = open(filename, "rb") IOError: [Errno 2] No such file or directory: 'PIL/courR18.pil' I've got code that runs, but I'd like to get my python path working. What am I doing wrong? Thanks Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From david at handysoftware.com Sun Mar 30 05:51:19 2008 From: david at handysoftware.com (David Handy) Date: Sat, 29 Mar 2008 23:51:19 -0400 Subject: [triangle-zpug] can't find font problem In-Reply-To: References: Message-ID: <20080330035119.GA16666@arno2> The Python path is only used for finding Python modules and packages, and then only by the "import" statement. For opening regular files, you have to specify a full pathname or a path relative to the current directory. In this case, it looks you are trying to load the font file out of the PIL package directory. You can find the directory of a Python package like this: >>> import PIL >>> PIL.__file__ '/usr/lib/python2.4/site-packages/PIL/__init__.pyc' >>> import os >>> os.path.dirname(PIL.__file__) '/usr/lib/python2.4/site-packages/PIL' So I suppose you could do something like this in your code: label_font=ImageFont.load(os.path.dirname(PIL.__file__) + "/courR18.pil") By the way, I just now looked in the PIL directory on my computer and didn't see any .pil files there; I assume you put courR18.pil in that directory yourself? Hope this helps - David H On Sat, Mar 29, 2008 at 06:42:01PM -0700, Joseph Mack NA3T wrote: > I have a font which I can find with the full pathname > > #-----code starts here > from math import sqrt > import os, sys > from PIL import Image, ImageDraw, ImageFont > > > print sys.path > #fonts > #THIS LINE WORKS > #label_font=ImageFont.load("/usr/lib/python2.4/site-packages/PIL/courR18.pil") > #THIS LINE FAILS > label_font=ImageFont.load("PIL/courR18.pil") > #-------code ends here > > > I get an error with any variation of the font filename where > I left python handle the python path, including just the > bare filename. > > Here's python path from the code > > ['/src/da/python_class/class_code', > '/usr/lib/python24.zip', > '/usr/lib/python2.4', > '/usr/lib/python2.4/plat-linux2', > '/usr/lib/python2.4/lib-tk', > '/usr/lib/python2.4/lib-dynload', > '/usr/lib/python2.4/site-packages', > '/usr/lib/python2.4/site-packages/PIL'] > > the error is > > Traceback (most recent call last): > File "./pi_numerical_integration_diagram.py", line 55, in ? > label_font = ImageFont.load("PIL/courR18.pil") > File "/usr/lib/python2.4/site-packages/PIL/ImageFont.py", > line 180, in load > f._load_pilfont(filename) > File "/usr/lib/python2.4/site-packages/PIL/ImageFont.py", > line 67, in _load_pilfont > file = open(filename, "rb") > IOError: [Errno 2] No such file or directory: > 'PIL/courR18.pil' > > > I've got code that runs, but I'd like to get my python > path working. What am I doing wrong? > > Thanks Joe > > -- > Joseph Mack NA3T EME(B,D), FM05lw North Carolina > jmack (at) wm7d (dot) net - azimuthal equidistant map > generator at http://www.wm7d.net/azproj.shtml > Homepage http://www.austintek.com/ It's GNU/Linux! > > _______________________________________________ > triangle-zpug mailing list > triangle-zpug at starship.python.net > http://starship.python.net/mailman/listinfo/triangle-zpug > -- David Handy Computer Programming is Fun! Beginning Computer Programming with Python http://www.handysoftware.com/cpif/ From jmack at wm7d.net Sun Mar 30 15:21:35 2008 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Sun, 30 Mar 2008 06:21:35 -0700 (PDT) Subject: [triangle-zpug] can't find font problem In-Reply-To: <20080330035119.GA16666@arno2> References: <20080330035119.GA16666@arno2> Message-ID: On Sat, 29 Mar 2008, David Handy wrote: > The Python path is only used for finding Python modules and packages, and > then only by the "import" statement. For opening regular files, you have to > specify a full pathname or a path relative to the current directory. OK. Thanks > In this case, it looks you are trying to load the font file out of the PIL > package directory. You can find the directory of a Python package like this: > >>>> import PIL >>>> PIL.__file__ > '/usr/lib/python2.4/site-packages/PIL/__init__.pyc' >>>> import os >>>> os.path.dirname(PIL.__file__) > '/usr/lib/python2.4/site-packages/PIL' > > So I suppose you could do something like this in your code: > > label_font=ImageFont.load(os.path.dirname(PIL.__file__) + "/courR18.pil") thanks. There's demo code out there eg http://www.pythonware.com/library/pil/handbook/imagefont.htm http://www.livibetter.com/blog/2006/11/24/making-pil-font-for-python-image-library/ (look for "arial.pil") that finds the font without doing anything special. I thought that maybe there was some font path or python path that allowed python to find the file without me having to do anything. > By the way, I just now looked in the PIL directory on my > computer and didn't see any .pil files there; I assume you > put courR18.pil in that directory yourself? I moved the files from directory to directory, hoping they'd be picked up by the load command. Their current location is just where they are now. If there's a canonical location, I'd be happy to move them there. Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From david at handysoftware.com Mon Mar 31 03:57:54 2008 From: david at handysoftware.com (David Handy) Date: Sun, 30 Mar 2008 21:57:54 -0400 Subject: [triangle-zpug] can't find font problem In-Reply-To: References: <20080330035119.GA16666@arno2> Message-ID: <20080331015754.GA26195@arno2> On Sun, Mar 30, 2008 at 06:21:35AM -0700, Joseph Mack NA3T wrote: > There's demo code out there eg > > http://www.pythonware.com/library/pil/handbook/imagefont.htm > > http://www.livibetter.com/blog/2006/11/24/making-pil-font-for-python-image-library/ > > (look for "arial.pil") > > that finds the font without doing anything special. I > thought that maybe there was some font path or python path > that allowed python to find the file without me having to do > anything. In these examples, they are loading "arial.pil" from the current working directory, whatever that happens to be at the time the script is run. That is not production-quality code, it was simplified for demo purposes. > I moved the files from directory to directory, hoping they'd > be picked up by the load command. Their current location is > just where they are now. If there's a canonical location, > I'd be happy to move them there. Typically, I put font files with my application. Any Python application more complicated than a single .py file I usually put into a Python package directory (a directory with an __init__.py file, see http://docs.python.org/tut/node8.html#SECTION008400000000000000000). I throw the fonts and other static data files in the same package directory as the .py files, and then use the technique I described in my previous email to locate the package directory, and load files relative to that directory. Example file layout: ApplicationHome/ myapp.bat: python startapp.py myapp.sh: #!/bin/sh python startup.py startapp.py: import myapp.mainmodule myapp.mainmodule.main() myapp/ __init__.py mainmodule.py: def main(): ... *.py *.pil *.gif *.dat etc. I don't know if this is "canonical", but I've seen a lot of Python applications deployed this way. Using this technique, it is pretty easy to make your applications cross-platform compatible. Just zip up ApplicationHome and you've got something you can take to another machine and run. David H -- David Handy Computer Programming is Fun! Beginning Computer Programming with Python http://www.handysoftware.com/cpif/ From jmack at wm7d.net Mon Mar 31 14:19:26 2008 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Mon, 31 Mar 2008 05:19:26 -0700 (PDT) Subject: [triangle-zpug] can't find font problem In-Reply-To: <20080331015754.GA26195@arno2> References: <20080330035119.GA16666@arno2> <20080331015754.GA26195@arno2> Message-ID: On Sun, 30 Mar 2008, David Handy wrote: > In these examples, they are loading "arial.pil" from the current working > directory, whatever that happens to be at the time the script is run. That > is not production-quality code, it was simplified for demo purposes. I see. I'd assumed it was production-quality :-( > Typically, I put font files with my application. OK. good to know. I'd assumed there'd be a font directory under python path somewhere. (I had a wierd error from freefont a while ago, which took ages to track down. It was due to a bunch of fonts in /usr/lib/fonts, which is where ghostscript used to look for them. I had to remove that directory for the error to go away. There's nothing in the freefont/freetype documentation about looking outside its own font directories or in google to handle the error. Why can't everyone agree on a single directory for fonts for heaven's sake, or if they're going to use a different directory, to ignore the places everyone else puts their fonts. mutter, mutter) > Any Python application more complicated than a single .py > file I usually put into a Python package directory (a > directory with an __init__.py file, see > http://docs.python.org/tut/node8.html#SECTION008400000000000000000). got it. > I throw the fonts and other static data files in the same > package directory as the .py files, and then use the > technique I described in my previous email to locate the > package directory, and load files relative to that > directory. will get on to it. > I don't know if this is "canonical", but I've seen a lot > of Python applications deployed this way. Using this > technique, it is pretty easy to make your applications > cross-platform compatible. Just zip up ApplicationHome and > you've got something you can take to another machine and > run. Thanks. If the code looks normal to a python person that's near enough to canonical for me. Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From cbc at unc.edu Mon Mar 31 17:58:45 2008 From: cbc at unc.edu (Chris Calloway) Date: Mon, 31 Mar 2008 11:58:45 -0400 Subject: [triangle-zpug] can't find font problem In-Reply-To: References: <20080330035119.GA16666@arno2> <20080331015754.GA26195@arno2> Message-ID: <47F10A35.2030703@unc.edu> On 3/31/2008 8:19 AM, Joseph Mack NA3T wrote: > I see. I'd assumed it was production-quality :-( heh. demo code is probably never production quality. it is for demo. production quality requires details of your production environment. demo code almost always assumes you run from the demo path and have all you need in the demo path. david is right about the current path. relative paths will be relative to your current path. you can get and set that with os.getcwd and os.chdir. the current path is usually where you started python. > OK. good to know. I'd assumed there'd be a font directory > under python path somewhere. the python path is for code. python uses your os for font management. > (I had a wierd error from freefont a while ago, which took > ages to track down. It was due to a bunch of fonts in > /usr/lib/fonts, which is where ghostscript used to look for > them. I had to remove that directory for the error to go > away. There's nothing in the freefont/freetype documentation > about looking outside its own font directories or in google > to handle the error. Why can't everyone agree on a single > directory for fonts for heaven's sake, or if they're going > to use a different directory, to ignore the places everyone > else puts their fonts. mutter, mutter) that's what chkfontpath and fontconfig are for. >> I don't know if this is "canonical", but I've seen a lot >> of Python applications deployed this way. Using this >> technique, it is pretty easy to make your applications >> cross-platform compatible. Just zip up ApplicationHome and >> you've got something you can take to another machine and >> run. Canonical is as David said and then create a setup.py and use either the sdist option to create a source distribution or the bdist_egg option to create an egg. Both are zipped and ready for distribution/deployment. http://trizpug.org/Members/cbc/distutils-online/ http://trizpug.org/Members/cbc/python-eggs-online/ -- Sincerely, Chris Calloway http://www.secoora.org office: 332 Chapman Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From saelim at email.unc.edu Mon Mar 31 20:18:39 2008 From: saelim at email.unc.edu (Billy Saelim) Date: Mon, 31 Mar 2008 14:18:39 -0400 Subject: [triangle-zpug] Looking for ways to generate rich text format Message-ID: <47F12AFF.5000802@email.unc.edu> Hi, I am new to Python and wonder if there is anything other than PyRTF that could generate RTF. Please let me know if you have any recommendation. Thanks in advance. Billy -------------- next part -------------- A non-text attachment was scrubbed... Name: saelim.vcf Type: text/x-vcard Size: 334 bytes Desc: not available URL: