Mike Orr wrote:
> On Sat, Mar 31, 2001 at 09:15:32AM -0500, Chuck Esterbrook wrote:
>
>> Can you try with 0.5? If that breaks for you as well, we're looking at a
>> very rare circumstance, since this hasn't been reported before. If it
>> doesn't break, that means we introduced something in 0.5.1 and need to be
>> more cautious.
>
> Are these
> pages supposed to be anonymous in 0.5.1 and protected in 0.5.1-rc2?
The reason for 0.5.1 was because some of those pages were not protected.
Jay

> As for the "Webware Powered", I envisioned a snake wrapping around a
> globe, maybe with a W in there somewhere. I tried to do something like
> this myself but failed miserably. Just a suggestion to any of you
> graphically inclined folks.
It's unfortunate that Monty Python's a hard theme to craft a logo with. That
aside, I like the snake around the globe idea. Do you favor a friendly
python like mod_python's or a nastier looking one like the mod_snake logo?
How about a python slithering through a spider's web?
or a python coiled around the inside of a transparent blue globe like the one
on:
http://itools.mac.com/WebObjects/iTools.woa?aff=consumer&cty=US&lang=en

On Sat, Mar 31, 2001 at 09:15:32AM -0500, Chuck Esterbrook wrote:
> Can you try with 0.5? If that breaks for you as well, we're looking at a
> very rare circumstance, since this hasn't been reported before. If it
> doesn't break, that means we introduced something in 0.5.1 and need to be
> more cautious.
SecureCountVisits exhibits the same problem (press Login and it hangs,
press Login again and get "warning: unhandled close event" in the server
and "Broken Pipe" in the browser).
The Admin context behaves differently. It does not ask me for a login/password
but goes straight to the pages. However, the "Application Control" page
does ask for a login/password and has the hanging problem. Are these
pages supposed to be anonymous in 0.5.1 and protected in 0.5.1-rc2?
I tried a few of the non-protected examples and they are working.
As before, the CGI adapter (WebKit.cgi) does not have any of these
problems. However, again none of the Admin pages are protected
except "Application Control".
PS. I'm liking these Admin screens now that I can actually see them! :)
--
-Mike (Iron) Orr, iron@... (if mail problems: mso@...)
http://mso.oz.net/ English * Esperanto * Russkiy * Deutsch * Espan~ol

Chuck Esterbrook wrote:
> At 03:41 PM 3/30/2001 -0800, Tavis Rudd wrote:
>
>> And how about these pics for a title at top of the page (I suppose they
>> should really be PNGs not gifs)?
>
>
> I have to admit I am not in love with the pics. I also have a
> professional graphic designer who helped with the slides (which looked
> great) who will help me get the same banner graphic in for the website.
>
> We do need a "Powered by Webware" logo, but something that is in the
> same neighborhood of dimensions as other "Powered by Logos". My pro
> can probably take a shot at that as well, although anyone else is free
> to take a shot.
>
> I'm picky about the graphics, though. Any graphic that goes on there
> has to look pro.
I like the graphics Tavis posted, the "Python Powered Internet Platform"
in particluar. On The webWare logo, it seems to emphasize the "Ware"
too much, though. But I'll wait to see what Chuck's guy comes up with.
As for the "Webware Powered", I envisioned a snake wrapping around a
globe, maybe with a W in there somewhere. I tried to do something like
this myself but failed miserably. Just a suggestion to any of you
graphically inclined folks.
Jay

At 03:41 PM 3/30/2001 -0800, Tavis Rudd wrote:
>What you think of adding something like this under the [About Webware]
>section on the new site?
>--------------------------------------------------
>What does Webware provide?
>- The strengths of server-side Java, without its complexity.
>- The power of server-side Perl, without its syntax.
>- The flexibilty of cgi, without its overhead.
>- The simplicity of PHP, without its limitations.
>- The capababilities of ASP and ColdFusion, without their price-tag.
>---> THE POWER OF THE WEB, WITH THE EASE OF PYTHON
>--------------------------------------------------
I love it.
What about a Zope blurb?
I suppose we could put this as the first set of bullets in the "About"
section. The second set would then be the features and the third set would
be the overall goals.
I would then move the Download instructions to the "More" page.
I'll wait for more reaction from the community.
>And how about these pics for a title at top of the page (I suppose they
>should really be PNGs not gifs)?
I have to admit I am not in love with the pics. I also have a professional
graphic designer who helped with the slides (which looked great) who will
help me get the same banner graphic in for the website.
We do need a "Powered by Webware" logo, but something that is in the same
neighborhood of dimensions as other "Powered by Logos". My pro can probably
take a shot at that as well, although anyone else is free to take a shot.
I'm picky about the graphics, though. Any graphic that goes on there has to
look pro.
-Chuck

The new web page has been made the front page:
http://webware.sourceforge.net/
Thanks to everyone for their help. I will be focusing more on the product
now than the web pages. UserKit and MiddleKit still need lots of work and
people have been clamoring for FormKit.
Not to mention my client needs all this stuff. :-)
-Chuck

What you think of adding something like this under the [About Webware]
section on the new site?
--------------------------------------------------
What does Webware provide?
- The strengths of server-side Java, without its complexity.
- The power of server-side Perl, without its syntax.
- The flexibilty of cgi, without its overhead.
- The simplicity of PHP, without its limitations.
- The capababilities of ASP and ColdFusion, without their price-tag.
---> THE POWER OF THE WEB, WITH THE EASE OF PYTHON
--------------------------------------------------
And how about these pics for a title at top of the page (I suppose they
should really be PNGs not gifs)?
Tavis

In the News section it says:
"This paper, presented at the Python 9 conference, has now been
uploaded to the new Docs section of the web site."
Should that now be 'Papers' rather than 'Docs'?
Hamish Lawson
____________________________________________________________
Do You Yahoo!?
Get your free @yahoo.co.uk address at http://mail.yahoo.co.uk
or your free @yahoo.ie address at http://mail.yahoo.ie

>>>>> "chuck" == Chuck Esterbrook <echuck@...> writes:
>> Ruby does a lot more with mixins than Python afaik.
chuck> I thought Ruby didn't even have multiple inheritance.
Right, it's single inheritance with mixins. Where the mixins aren't
really classes but sort of like modules. I'm fuzzy on the details, but
Ruby's 2nd on my list of languages to learn next.
A friend on IRC just gave me this quote from Ruby book:
Modules are a way of grouping together methods, classes, and
constants. Modules give you two major benefits:
Modules provide a namespace and prevent name clashes.
Modules implement the mixin facility.
From <http://www.rubycentral.com/book/tut_modules.html&gt;.
Kendall
--
There's no such thing as magic, only science and jazz.

I took many of the suggestions and added a new section on reporting bugs. I
added a sidebar to the "More" page.
I'll probably add a sidebar to the "Papers" page later.
This is about as much I'm gonna do for now. If no one reports any serious
bugs, then I'll put this version up later tonight.
http://webware.sourceforge.net/New/
-Chuck

At 10:56 AM 3/30/2001 -0600, Ian Bicking wrote:
>In About Webware:
>"This page hosts Webware for
>Python including the distributions,
>documentation, mailing lists, etc."
>
>This seems redundant -- it's the webware page with "Webware for
>Python" at the top, so of course this stuff will be here.
Agreed.
>It's unclear to me what the distinction is between "Auxiliary docs"
>and "On-line docs" by the names. Maybe auxiliary docs == essays, and
>online docs == webware docs? That would seem clearer to me, with
>Webware docs as the first link.
Agreed.
>the "More about Webware..." page still doesn't seem like a clear
>partitioning. "Upcoming" could be generalized into a TODO page, with
Agreed, but what we have now works fine. I won't be putting too much more
time into organizing the additional material. Given it's very small volume,
I don't think it's an issue: The extra page can be scanned into about 10
seconds. Hammering on it might get us down to 9 seconds...
>"Announcements and Discussions" and "Feedback" could all be put into a
>contact page or something. The "Send Mail" link from Links could be
>replaced by this -- right now it's unclear what you mean by that link,
>and I think to be useful you have to say that bug reports should go to
>webware-discuss, and that you don't have to be subscribed. I know I
>am reluctant to email addresses until I have some idea what the
>appropriate place for my specific inquiry is.
I'll see about adding this. Even if I do, the convenience links for the
mailing lists will remain.
>Lastly, under Exits in Links: People who know what Parnassus is will
>probably know to go there, and (because of the somewhat unfortunate
>name) people who don't know what it is won't figure it out from the
>link. It would be good, I think, to include some explanation of the
>name. (I know it took me a long time using Python before I discovered
>Parnassus, so I think the link is useful) Maybe "Parnassus: Python
>libraries and programs"...?
I can't stick "Python libraries and programs" into that sidebar.
"webware-announce" is as big as I want to get if I can help it.
People will just have to make leap of faith that Parnassus is something
benevolent and interesting (otherwise why would we put it there?). In a
sense, we probably don't need Parnassus at all, but the little Python link
looked lonely. :-)
BTW You won't see my changes yet, I'm still going through suggestions. I'll
announce when I upload version 3.
-Chuck

Hi all,
is there already a bug tracker? If not, here's a minor issue:
In
def userForName(self, name, default=NoDefault)"
it reads:
if default is NoDefault:
raise KeyError, externalId
but should read:
if default is NoDefault:
raise KeyError, name
Best regards
Franz GEIGER

At 10:34 AM 3/30/2001 -0600, Kendall Clark wrote:
> >>>>> "chuck" == Chuck Esterbrook <echuck@...> writes:
>
> chuck> The solution in my mind is a new language that incorporates
> chuck> features of Python, Smalltalk and Self with an eye on
> chuck> mix-ins.
>
>You mean like Ruby? :>
>
>(Well, with no Self-derived features, that I know of.)
Right. You took the response out of my mouth. :-)
>Ruby does a lot more with mixins than Python afaik.
I thought Ruby didn't even have multiple inheritance.
-Chuck

The fonts look a lot better in Netscape 4.7.
Some thoughts on the copy:
In About Webware:
"This page hosts Webware for
Python including the distributions,
documentation, mailing lists, etc."
This seems redundant -- it's the webware page with "Webware for
Python" at the top, so of course this stuff will be here.
In Links:
Webware
Auxiliary docs
On-line docs
SourceForge
It's unclear to me what the distinction is between "Auxiliary docs"
and "On-line docs" by the names. Maybe auxiliary docs == essays, and
online docs == webware docs? That would seem clearer to me, with
Webware docs as the first link.
the "More about Webware..." page still doesn't seem like a clear
partitioning. "Upcoming" could be generalized into a TODO page, with
the summary you have there plus the contents of TODO. Maybe call it
"Future". "Unsolicited Testimonials" could be its own page, perhaps,
or maybe make a page that has a more complete list of features and put
it at the end of that.
"Announcements and Discussions" and "Feedback" could all be put into a
contact page or something. The "Send Mail" link from Links could be
replaced by this -- right now it's unclear what you mean by that link,
and I think to be useful you have to say that bug reports should go to
webware-discuss, and that you don't have to be subscribed. I know I
am reluctant to email addresses until I have some idea what the
appropriate place for my specific inquiry is.
The "Documentation" section is already covered by the menu, I think.
Lastly, under Exits in Links: People who know what Parnassus is will
probably know to go there, and (because of the somewhat unfortunate
name) people who don't know what it is won't figure it out from the
link. It would be good, I think, to include some explanation of the
name. (I know it took me a long time using Python before I discovered
Parnassus, so I think the link is useful) Maybe "Parnassus: Python
libraries and programs"...?
Chuck Esterbrook <echuck@...> wrote:
> I took many suggestion (but not all suggestions).
>
> Please take a quick click to see that you can view this page and that it
> looks "alright".
>
> http://webware.sourceforge.net/New/
>
>
> Thanks,
> -Chuck
>
>
> _______________________________________________
> Webware-discuss mailing list
> Webware-discuss@...
> http://lists.sourceforge.net/lists/listinfo/webware-discuss
>

>>>>> "chuck" == Chuck Esterbrook <echuck@...> writes:
chuck> The solution in my mind is a new language that incorporates
chuck> features of Python, Smalltalk and Self with an eye on
chuck> mix-ins.
You mean like Ruby? :>
(Well, with no Self-derived features, that I know of.)
Ruby does a lot more with mixins than Python afaik.
If I had world enough and time, I'd start porting Webware to Ruby.
Best,
Kendall Clark
--
I am a finite state machine.

Chuck Esterbrook wrote:
> >Did you read the mixout stuff?
>
> Sort of. I didn't grok it completely, but I ran into
> "self.__class__.__bases__[0]" and that sort of code has always failed on me
> either because of inheritance, where you really wanted the base class where
> you are declared, or because [0] just doesn't cut it.
>
> Was my nasty impression of that misplaced?
self.__class__.__bases__[1] is "safe" in this case, assuming no one else mucks with __class__ like we do :-), because wrapit constructs a special class just for this purpose.
If you wanted to be *really* safe, you could add another attribute to point to the wrapped class.
class MixOut:
def _respond(self,transaction):
# do my stuff
self.__wrapped_class._respond(self,transaction)
...
def wrapit( mixout, instance ):
class mixed:
pass
mixed.__bases__=(mixout,instance.__class__)
mixed.__dict__["_%s__wrapped_class" % mixout.__name__] = instance.__class__
instance.__class__ = mixed
return instance
Depending on how often you call wrapit, you might want to cache this special wrapper class, keyed on the wrapped class and the mixout.
class Wrapper:
def __init__(self, mixout ):
self.__wrapper_classes = {}
self.__mixout = mixout
def getWrapperClass(self, class_):
wrapper = self.__wrapper_classes.get(class_,None)
if wrapper is None:
class wrapper:
pass
wrapper.__bases__=(self.__mixout, class_ )
wrapper.__dict__["_%s__wrapped_class" % self.__mixout.__name__] = class_
self.__wrapper_classes[class_]=wrapper
return wrapper
def wrapInstance( self, instance ):
wrapper = self.getWrapperClass(instance.__class__)
instance.__class__=wrapper
return instance
This implementation makes it safe to wrap multiple times.
Exercises:
1. How many reference cycles does this create?
2. Does it matter? When do classes get collected normally?
3. Compare performance with the explicit delegation model.

On Thu, 29 Mar 2001, Chuck Esterbrook wrote:
> At 03:44 AM 3/30/2001 +0000, Tripp Lilley wrote:
> >Yeah. He's making -me- write it, and he just gets to bitch about it. Which
> >I suppose is fair, since our roles are reversed on Webware ;)
>
> Sooo...you admit that you're writing it.
If by "it" you mean "selfish" (.py and .pm), then, yes. If by "it" you
mean "whatever screwey language it is we concoct in the basement", then,
no, I am not "writing it" alone. I will write vast portions of it, yes.
But I will not "write it" in its entirety :)
Remember:
COOL TOOL is
"Chuck's Object-Oriented Language"
and
"Tripp's Object-Oriented Library"
And we're using the COOL TOOL to build the TRUCK (TRipp and chUCK's
operating system), which will run on the ROAD (Really Over-engineered
Abstract Device).
Whee.
--
Joy-Loving * Tripp Lilley * http://stargate.eheart.sg505.net/~tlilley/
------------------------------------------------------------------------------
"Fiber makes you poop." -- From <http://www.pvponline.com/bts_studio.php3&gt;

Hi everyone,
I stumbled upon Webware a few days ago and am incredibly delighted to have
found it. I have been able to jump right in and start using it fairly
easily, much more so than my "Zope experience".
I have been working on a simple rule-based interaction engine for the use in
online dialogue marketing and have been searching for the right environment
to build it in.
So far, I've focused on building the business objects and have really kind
of hacked together the web-based delivery of these dialogues. I'm excited
to give Webware a shot since it solves a lot of the mess that I just didn't
want to deal with as far as session management and template parsing goes.
I'll throw in my 2 cents where I can as I come across interesting problems
or successes as I work on my project over the next 3 months.
Thanks!
Trace
--
Trace S. Ruggles => 512/845.9354 => tracer@...
"Ignite your marketing with interactive precision."
AxiomFire, Inc. => http://www.axiomfire.com

On Thu, 29 Mar 2001, Chuck Esterbrook wrote:
> The solution in my mind is a new language that incorporates features of
> Python, Smalltalk and Self with an eye on mix-ins.
>
> But I ain't got no time for that.
Yeah. He's making -me- write it, and he just gets to bitch about it. Which
I suppose is fair, since our roles are reversed on Webware ;)
<plug>
http://sourceforge.net/projects/selfish/
(Note that the release there is quite crufty, and very much a "post
something to justify my holding the sourceforge account" release :) The
"docs" are in the mailing list archives, and in the archives of the
"self-interest" mailing list at egroups / yahoo.
</plug>
--
Joy-Loving * Tripp Lilley * http://stargate.eheart.sg505.net/~tlilley/
------------------------------------------------------------------------------
"Fiber makes you poop." -- From <http://www.pvponline.com/bts_studio.php3&gt;

On Thu, 29 Mar 2001, Terrel Shumway wrote:
> Agreed. The more you mess with the language implementation guts, the
> less portable and understandable your code becomes. Encapsulate the
> yucky stuff if you do need it.
Man, you -would- have to say this as I stand here, surrounded by the guts
of the Python interpreter and the Framer-D runtime, trying to make sense
of it all and build something that has DWIMity.
Sigh.
Back to the forge.
--
Joy-Loving * Tripp Lilley * http://stargate.eheart.sg505.net/~tlilley/
------------------------------------------------------------------------------
"Fiber makes you poop." -- From <http://www.pvponline.com/bts_studio.php3&gt;

At 09:05 PM 3/29/2001 -0500, Terrel Shumway wrote:
>If you use it as a bastion (facade), there will usually be a clear
>separation between "client" and "implementation", so there should be
>little confusion. I that case, however, I would not use __getattr__. I
>would completely hide the wrapped object and explicitly declare each
>method I wanted to be "visible".
Sounds like the "right thing to do".
> > In any case, if you really want, you can use the fix I describe in an
> > earlier msg, ending in im_func. But that's scary stuff. :-)
>
>Agreed. The more you mess with the language implementation guts, the less
>portable and understandable your code becomes. Encapsulate the yucky
>stuff if you do need it.
Agreed.
>OTOH, isn't that one reason python is so great? because you CAN.
>;-) [compare to introspection in Java: AHHHH!]
Totally agreed. :-)
Although I said this to a friend tonight:
"The more code I write, the more I want to get away from monolithic
classes. Python is just dynamic enough to lure you into a more granular,
mix-in approach, but it wasn't specifically designed with this in mind so
there are a lot of low hanging doorways to bump your head into."
The solution in my mind is a new language that incorporates features of
Python, Smalltalk and Self with an eye on mix-ins.
But I ain't got no time for that.
>Did you read the mixout stuff?
Sort of. I didn't grok it completely, but I ran into
"self.__class__.__bases__[0]" and that sort of code has always failed on me
either because of inheritance, where you really wanted the base class where
you are declared, or because [0] just doesn't cut it.
Was my nasty impression of that misplaced?
-Chuck