<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
{font-family:"Comic Sans MS";
panose-1:3 15 7 2 3 3 2 2 2 4;}
@font-face
{font-family:Ubuntu;
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Courier New \;color\:\#1F497D";
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Comic Sans MS \;color\:purple";
panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";
color:black;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman","serif";
color:black;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";
color:black;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Balloon Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";
color:black;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;
color:black;}
span.EmailStyle20
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-priority:99;
mso-style-link:"Balloon Text";
font-family:"Tahoma","sans-serif";
color:black;}
span.EmailStyle23
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#993366;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Christopher, Alan, Josh:<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>OK…this is important enough to me that I wanted to include Alan Kennedy and Josh Juneau into your response. Christopher, many thanks for your effort to upgrade Kepler 2.2 to Jython 2.5.2. However, I’d like to have a little more <b><u>due diligence discussion</u></b> before putting it to rest.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>I’m also pasting below Alan Kennedy’s response to my earlier query to address the Jython 2.2 to 2.5.2 incompatibilities.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>My interpretation of Alan’s response containing the term <b><u>“documentation”</u></b> seems to imply less of a problem and more of an explanation. <b><u>Alan?</u></b><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>From this perspective, as a Kepler w/Jython 2.5.2 user, I certainly need to understand what seemed to be deemed an issue in being able to upgrade to Jython 2.5.2 due to the backward incompatibility (particularly as it related to <b>PyJavaInstance</b>), to you being able to fairly easily upgrade after all. Why did you not run into an issue with <b>PyJavaInstance</b> in Jython 2.5.2? <b><u>Are we missing some functionality that users need to be aware of?</u></b><o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><u><span style='font-family:"Calibri","sans-serif";color:#993366'>Back to my original intent of Eclipse IDE-based development of actors in Kepler/Ptolemy using Jython.</span></u><span style='font-family:"Calibri","sans-serif";color:#993366'> In a purely technical context, I am more comfortable using Jython than I am Java. Based upon my questions to the Jython User’s Group, I suspect that Alan and Josh are rolling their eyes at this comment! </span><span style='font-family:Wingdings;color:#993366'>J</span><span style='font-family:"Calibri","sans-serif";color:#993366'> This is my primary motivation behind wanting to standardize on developing Python actors in Jython for Kepler. My company, Nimbis Services, is also standardizing on the Jython Django web framework, and we’re thinking very hard about when we will begin a full evaluation of Scala (a JVM functional programming language). <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>I am thinking that all I need to do is to take the Ptolemy PythonActor source code and take a look at the Java code for that actor and recode the actor in Jython (Let’s call this new actor JythonActor) from within Eclipse. I’d like a suggestion from Josh or Alan regarding architecturally how they would address the following issue:<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Using a Jython package, or function call, or interface (probably not applicable in Jython), have the newly coded JythonActor call the externally developed “functional core” of the Python script that would effectively “customize” the PythonActor according to the Jython script’s behavior. This way I would only develop my Jython script packages and then integrate these into the newly coded JythonActor through say a port parameter. Better yet, how about some sort of XML import solution that would identify the Jython code that “decorates” the JythonActor’s functionality. I need a good suggestion on how to do this elegantly such that it looks like someone with serious programming skills thought it through and not kluge code from a chip designer.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>At present, the PythonActor solution is not integrated into the full functional Eclipse-based JVM flow due to the Java implementation. I have become far too reliant upon debugging my Jython code through the Eclipse IDE and the interpretive nature of Jython to not have this working flawlessly.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Please let me know what each you think of my JythonActor approach.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Alan, Josh…Christopher is particularly interested in addressing Jython licensing issues. I get the gist of what he is after here, but I have simply not been part of any of this, so I have to defer to kind attention on this subject.<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'>Kind regards, Marc<o:p></o:p></span></p><div class=MsoNormal align=center style='text-align:center'><span style='font-family:"Calibri","sans-serif";color:#993366'><hr size=2 width="100%" align=center></span></div><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>[J. Marc]<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>> OK…please connect me with one of the Jython 2.2 to 2.5 developers. I <o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>> will then work with them to determine how we could most effectively <o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>> migrate Kepler 2.2 from Jython 2.2 to Jython 2.5.2.<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>> I will be working with one of the Kepler/Ptolemy II developers on this <o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>> migration.<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>This issue with PyJavaInstance when upgrading from 2.2 to 2.5 seems to be a common enough issue that it requires documentation.<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>I'm not going to get to it immediately myself, so I've created an issue on the issue tracker for it, if anyone feels like taking that up.<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>http://bugs.jython.org/issue1814<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>Regards,<o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'><o:p> </o:p></span></b></p><p class=MsoNormal><b><span style='font-family:"Courier New";color:#002060'>Alan.<o:p></o:p></span></b></p><div class=MsoNormal align=center style='text-align:center'><span style='font-family:"Calibri","sans-serif";color:#993366'><hr size=2 width="100%" align=center></span></div><div><p class=MsoNormal><u><span style='font-size:14.0pt;font-family:"Calibri","sans-serif";color:#993366'>J. Marc Edwards, Lead Architect</span></u><span style='font-size:14.0pt;font-family:"Calibri","sans-serif";color:#993366'><o:p></o:p></span></p><p class=MsoNormal><i><span style='font-family:"Calibri","sans-serif";color:#002060'>Semiconductor Design Portals<o:p></o:p></span></i></p><p class=MsoNormal><b><span style='font-size:14.0pt;font-family:"Calibri","sans-serif";color:#993366'>Nimbis Services, Inc.<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-family:"Courier New";color:#993366'>Cell - (919) 345-1021<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:#993366'>Fax - (919) 882-8602<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New";color:#993366'>Skype - (919) 747-3775<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#C00000'>jmarcedwards@gmail.com<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#C00000'>marc.edwards@nimbisservices.com<o:p></o:p></span></p></div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#993366'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> Christopher Brooks [mailto:cxh@eecs.berkeley.edu] <br><b>Sent:</b> Saturday, November 05, 2011 2:59 PM<br><b>To:</b> marc.edwards@nimbisservices.com<br><b>Cc:</b> J. Marc Edwards; kepler-users@kepler-project.org<br><b>Subject:</b> Re: [kepler-users] Python execution within the Kepler Python actor...<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hi Marc,<br>I updated Jython to 2.5.2, it was not that hard, updating the license files took the most time.<br><br>I have a few of misgivings about Jython that might be good lessons for Ptolemy and Kepler:<br><br>* Sadly, ptII/lib/jython.jar went from about 1Mb to 10Mb. Does this mean that Jython-2.5.2 is 10 times better than Jython-2.2.1?<br>If jython is supposed to be a scripting language, then why is it so large?<br>This seems to be a common trend where nice small languages get more and more features.<br> As an aside about Perl, see <br> Is Perl Better Than a Randomly Generated Programming Language? at<br> <a href="http://developers.slashdot.org/story/11/10/27/213231/is-perl-better-than-a-randomly-generated-programming-language">http://developers.slashdot.org/story/11/10/27/213231/is-perl-better-than-a-randomly-generated-programming-language</a><br><br>For comparison purposes, Ptolemy's ptsupport.jar is 3.5Mb and a standalone Ptolemy demo including the GUI is 6.5Mb in jars.<br><br>Lesson: we need to keep an eye on code bloat and be able to deploy small run times.<br><br>* Another issue with Jython-2.5.2 is that because they removed org.python.core.PyJavaInstance some time after Jython-2.2.1, they should have released Jython-2.5.2 as Jython-3.x. Most projects bump up the major version number when there are incompatibilities.<br><br>Lesson: Ptolemy bumps up the major version number with each ~yearly release. Ptolemy has backward compatibility filters. We do sometimes remove old code, but only with major versions.<br><br>* The Jython license situation is a mess.<br><a href="http://www.jython.org/license.html">http://www.jython.org/license.html</a> lists these licenses<br>- The Python Software Foundation License Version 2, which according to Wikipedia is a BSD-style license<br>- The Jython-2.0 and 2.1 license, which is similar to a BSD-style license<br>- The JPython 1.1.x license, which is similar to BSD-style license<br><br>The software ships with these licenses in the LICENSE.txt file.<br><br>However, LICENSE_CPython.txt and LICENSE_Apache.txt are included. There is no mention as to what code actually uses those licenses.<br>LICENSE_CPython.txt includes four copyrights: <br> - Python Software Foundation License Version 2<br> - BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0<br> - CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1<br> - CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2<br>The last three look similar to BSD, but have various requirements.<br><br>I'll submit a bug report to Jython to get them to update their site.<br><br>Lesson: I'm not sure how Ptolemy and Kepler can avoid a similar complexity issue. I've been working on updating our license file and<br>we have a way to determine what licenses are used by a particular configuration.<br><a href="http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII8.0/copyright.htm">http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII8.0/copyright.htm</a> <br>lists 7 licenses used by Ptiny, a small configuration of Ptolemy II. One of those 7 is the Jython-2.2.1 license, which is similar to the Jython-2.5.2 license.<br>The Kepler configuration of Ptolemy II uses 15 licenses in the Ptolemy II code.<br><br>_Christopher<br><br>On 11/5/11 9:15 AM, J. Marc Edwards wrote: <o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'>Christopher:</span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'>I suspect that I can simply code an entire actor extending the respective classes directly in Jython.</span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'>That is what I am thinking. Please let me know what you think of this strategy.</span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'>Of course, while I do this, I want to migrate a Kepler development tree to use Jython 2.5.2, which I will need your assistance in completing.</span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'>Let’s talk on the phone on Monday.</span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'>Regards, Marc</span><o:p></o:p></p><div><p class=MsoNormal><u><span style='font-size:14.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>J. Marc Edwards, Lead Architect</span></u><o:p></o:p></p><p class=MsoNormal><i><span style='font-family:"Calibri","sans-serif";color:#002060'>Semiconductor Design Portals</span></i><o:p></o:p></p><p class=MsoNormal><b><span style='font-size:14.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Nimbis Services, Inc.</span></b><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Courier New ;color:#1F497D","serif"'>Cell - (919) 345-1021</span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Courier New ;color:#1F497D","serif"'>Fax - (919) 882-8602</span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Courier New ;color:#1F497D","serif"'>Skype - (919) 747-3775</span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#C00000'><a href="mailto:jmarcedwards@gmail.com">jmarcedwards@gmail.com</a></span><o:p></o:p></p><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#C00000'><a href="mailto:marc.edwards@nimbisservices.com">marc.edwards@nimbisservices.com</a></span><o:p></o:p></p></div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext'> Christopher Brooks [<a href="mailto:cxh@eecs.berkeley.edu">mailto:cxh@eecs.berkeley.edu</a>] <br><b>Sent:</b> Friday, November 04, 2011 9:00 PM<br><b>To:</b> <a href="mailto:marc.edwards@nimbisservices.com">marc.edwards@nimbisservices.com</a><br><b>Cc:</b> <a href="mailto:kepler-users@kepler-project.org">kepler-users@kepler-project.org</a><br><b>Subject:</b> Re: [kepler-users] Python execution within the Kepler Python actor...</span><o:p></o:p></p></div></div><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>Hi Marc,<br><br>On 11/4/11 2:09 PM, J. Marc Edwards wrote: <o:p></o:p></p><p class=MsoNormal>I need a little help in integrating my Jython/Python code into the Python actor.<br><br>When I double-click on the Python actor in the PythonDialogExample, a window with the Python code appears. I can of course edit the code from within this window. However, I want to perform my code development and editing from within my Eclipse environment from my Kepler development build.<o:p></o:p></p><p class=MsoNormal>I don't know that much about Python, but I believe that you could use the Python import facility to find imports.<br>I just added text to the Kepler Jython page about this, see:<br><a href="https://kepler-project.org/developers/reference/python-and-kepler#how-jython-finds-imports">https://kepler-project.org/developers/reference/python-and-kepler#how-jython-finds-imports</a><br><br>Note that I found a few other references on the web, included what appears to be people who are using the full version of Python (not Jython) with Kepler.<br><br><br><o:p></o:p></p><p class=MsoNormal>When I "open the actor", the beginning of the file has some Javadoc as well as what appear to be some unmatched XML elements (<p>), along with some matching XML element tags (</pre>) (does this correspond to some pre-fire method?).<o:p></o:p></p><p class=MsoNormal>When you open the actor, you are seeing the Java code that implements the PythonActor. The <p> tags are html tags used in the javadoc comments of the Java file. All of the instances of the PythonActor share the same Java code, but may have different Python code.<br><br><br><o:p></o:p></p><p class=MsoNormal>After this all of the Java code for the actor follows with the standard initialize(), stop(), stopFire(), preinitialize(), terminate(), etc, methods.<br><br>I do see in the Java code where there is a PythonScript method that accepts a CompositeEntity where a script template is provided where I am supposing a long Python string in the script.setExpression is defined.<br><br>However, what I would like to do is simply include my Jython module within my Kepler build and debug my Jython code in connection with my overall workflow.<br><br>Can someone tell me how to go about achieving this objective?<o:p></o:p></p><p class=MsoNormal>It looks like Jython uses sys.path to find imports. I included a Ptolemy II model that opens in the devel version of Kepler that lists the contents of sys.path. For further information about sys.path, see<br><br><a href="http://jythonpodcast.hostjava.net/jythonbook/en/1.0/ModulesPackages.html">http://jythonpodcast.hostjava.net/jythonbook/en/1.0/ModulesPackages.html</a><br><br>_Christopher<br><br><br><o:p></o:p></p><p class=MsoNormal><br>Thanks, Marc<o:p></o:p></p><div><p class=MsoNormal>-- <br><br><br><o:p></o:p></p><p><span style='font-size:13.0pt;font-family:"Comic Sans MS ;color:purple","serif"'>J. Marc Edwards</span><span style='font-family:"Comic Sans MS"'><br>Lead Architect - Semiconductor Design Portals</span><br><span style='font-size:13.5pt;font-family:"Arial","sans-serif";color:#3333FF'>Nimbis Services, Inc.</span><br><span style='font-family:"Courier New"'>Skype: (919) 747-3775<br>Cell: (919) 345-1021<br>Fax: (919) 882-8602</span><br><span style='font-family:"Ubuntu","serif"'><a href="mailto:marc.edwards@nimbisservices.com">marc.edwards@nimbisservices.com</a><br><a href="http://www.nimbisservices.com">www.nimbisservices.com</a></span><o:p></o:p></p></div><p class=MsoNormal><br><br><br><br><o:p></o:p></p><pre>_______________________________________________<o:p></o:p></pre><pre>Kepler-users mailing list<o:p></o:p></pre><pre><a href="mailto:Kepler-users@kepler-project.org">Kepler-users@kepler-project.org</a><o:p></o:p></pre><pre><a href="http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users">http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users</a><o:p></o:p></pre><p class=MsoNormal><br><br><br><o:p></o:p></p><pre>-- <o:p></o:p></pre><pre>Christopher Brooks, PMP University of California<o:p></o:p></pre><pre>CHESS Executive Director US Mail: 337 Cory Hall<o:p></o:p></pre><pre>Programmer/Analyst CHESS/Ptolemy/Trust Berkeley, CA 94720-1774<o:p></o:p></pre><pre>ph: 510.643.9841 (Office: 545Q Cory)<o:p></o:p></pre><pre>home: (F-Tu) 707.665.0131 cell: 707.332.0670 <o:p></o:p></pre><p class=MsoNormal><br><br><o:p></o:p></p><pre>-- <o:p></o:p></pre><pre>Christopher Brooks, PMP University of California<o:p></o:p></pre><pre>CHESS Executive Director US Mail: 337 Cory Hall<o:p></o:p></pre><pre>Programmer/Analyst CHESS/Ptolemy/Trust Berkeley, CA 94720-1774<o:p></o:p></pre><pre>ph: 510.643.9841 (Office: 545Q Cory)<o:p></o:p></pre><pre>home: (F-Tu) 707.665.0131 cell: 707.332.0670 <o:p></o:p></pre></div></body></html>