<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.novell.com/communities" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>SUSE Linux Enterprise Cool Solutions</title>
 <link>http://www.novell.com/communities/coolsolutions/slemag</link>
 <description>Area where SUSE Linux Enterprise users gather.</description>
 <language>en</language>
<item>
 <title>IT TechTalk at BrainShare 2010</title>
 <link>http://www.novell.com/communities/node/9326/it-techtalk-brainshare-2010</link>
 <description> &lt;p&gt;One of the most popular and attended events at BrainShare is back! IT Tech Talk (formerly known as &quot;Meet the Experts&quot;) will take place Wednesday night from 6:30 - 9:30 p.m. As always, you&#039;ll be able to mingle with our product engineers giving you an opportunity to discuss current and future product features and technologies. Heavy hors d&#039;oeuvres and an open bar will be available.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions&quot; class=&quot;og_links&quot;&gt;Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9326/it-techtalk-brainshare-2010#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <pubDate>Mon, 23 Nov 2009 13:29:13 -0700</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9326 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Install and Upgrade with EVMS Partitioned Server</title>
 <link>http://www.novell.com/communities/node/9308/install-and-upgrade-evms-partitioned-server</link>
 <description> &lt;h3&gt;Creating EVMS partitions on a clean disk machine:&lt;/h3&gt;
&lt;ol class=&quot;spread&quot;&gt;
&lt;li&gt;Click &lt;b&gt;Partitioning&lt;/b&gt; on the Installation Settings screen and select &lt;b&gt;Create EVMS Based Proposal&lt;/b&gt; and click &lt;b&gt;Next&lt;/b&gt;.
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-1.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-1_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-1.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;It creates a &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/514&quot;&gt;&lt;acronym title=&quot;The partition mounted on the /boot directory that contains the operating system kernel, as well as files used during the boot process. The boot partition can be (but does not have to be) the same as the system partition. Both a primary partition and a logical drive in an extended partition can be used as a boot partition.&quot;&gt;boot partition&lt;/acronym&gt;&lt;/a&gt; and lvm container with EVMS volumes on the second partition.
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-2.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-2_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-2.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Creating EVMS partitions on top of existing partitions:&lt;/h3&gt;
&lt;p&gt;If the &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/2314&quot;&gt;&lt;acronym title=&quot;A powerful computer running software that supplies network clients with services, such as file, print, communication, or application services. Examples of servers include1. Routing servers, which connect nodes and networks of similar architectures2. Gateway servers, which connect nodes and networks of different architectures by performing protocol conversions3. Terminal servers, print servers, disk servers, and file servers, which provide an interface between compatible peripheral devices on a local area network&quot;&gt;server&lt;/acronym&gt;&lt;/a&gt; has the partitions created already with a previous installation, delete the old partitions and create the EVMS partitions new.&lt;/p&gt;
&lt;p&gt;Follow the steps below to clean up the disk and create the partitions.&lt;/p&gt;
&lt;ol class=&quot;spread&quot;&gt;
&lt;li&gt;Choose &lt;b&gt;Create Custom Partition Setup&lt;/b&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-3.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-3_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-3.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Then select &lt;b&gt;disk&lt;/b&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-4.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-4_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-4.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Press the button &lt;b&gt;Use entire &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/1440&quot;&gt;&lt;acronym title=&quot;A high-capacity storage medium consisting of a stack of magnetic disks that hold information in concentric areas called cylinders. This device can be connected to a network or in your own computer. Internal hard disks use channel 0; external hard disks use channels 1 through 4.Also called fixed disk.&quot;&gt;hard disk&lt;/acronym&gt;&lt;/a&gt;&lt;/b&gt; and choose the &lt;b&gt;Create EVMS Based Proposal&lt;/b&gt; option.
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-5.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-5_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-5.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;It goes back to the Installation Settings screen with the EVMS partitions created.&lt;br /&gt;
	It then deletes the existing partitions and creates a new boot partition and lvm container with EVMS volumes.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-6.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-6_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-6.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Upgrading a single hard disk server with the EVMS partition:&lt;/h3&gt;
&lt;ol class=&quot;spread&quot;&gt;
&lt;li&gt;Install OES 2 SP1 with EVMS Partitioning to create NSS pools and Volumes.&lt;/li&gt;
&lt;li&gt;Down the server and upgrade to OES 2 SP2. During System for Update screen, while mounting the partitions, it shows a window saying the /dev/evms/sda1 could not be mounted.&lt;/li&gt;
&lt;li&gt;Select the button &quot;&lt;b&gt;Specify Mount options&lt;/b&gt;&quot;.
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-7.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-7_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-7.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;By default the path under Device will be /dev/evms/sda1.
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-8.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-8_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-8.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Edit the Device to remove evms i.e /dev/evms/sda1 to /dev/sda1, then click OK.
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-9.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-9_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-9.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Start the Update on the EVMS Partitioned server.
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;clear-block&quot;&gt;
&lt;div class=&quot;thumbnail&quot;&gt;
&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-10.jpg&quot;&gt;&lt;img src=&quot;http://www.novell.com/communities/files/u6477/9308-10_0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/communities/files/u6477/9308-10.jpg&quot;&gt;Click to view&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions&quot; class=&quot;og_links&quot;&gt;Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9308/install-and-upgrade-evms-partitioned-server#comments</comments>
 <category domain="http://www.novell.com/communities/coolsolutions/oes">Open Enterprise Server</category>
 <category domain="http://www.novell.com/communities/topic/upgrade">Upgrade</category>
 <category domain="http://www.novell.com/communities/topic/upgrading-oes-linux">Upgrading to OES</category>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <pubDate>Fri, 20 Nov 2009 13:55:02 -0700</pubDate>
 <dc:creator>sakila</dc:creator>
 <guid isPermaLink="false">9308 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Deep Dive at BrainShare 2010</title>
 <link>http://www.novell.com/communities/node/9297/deep-dive-brainshare-2010</link>
 <description> &lt;p&gt;This year Novell is enhancing and expanding two of the most popular attractions at BrainShare - the Installation and Migration Depot and Novell Advanced Technical Training (ATT). Diving Deep is all about helping you take advantage of more in-depth, hands-on technical training opportunities that can have an immediate impact on how you do your job. Swim on over to this new Connection Magazine article to read more: &lt;a href=&quot;http://bit.ly/bsdeepdive&quot; title=&quot;http://bit.ly/bsdeepdive&quot;&gt;http://bit.ly/bsdeepdive&lt;/a&gt;&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/zenworks&quot; class=&quot;og_links&quot;&gt;ZENworks Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9297/deep-dive-brainshare-2010#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <pubDate>Tue, 17 Nov 2009 14:22:03 -0700</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9297 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Session Voting Begins Today!</title>
 <link>http://www.novell.com/communities/node/9288/session-voting-begins-today</link>
 <description> &lt;p&gt;The time has come to begin voting on the session proposals for BrainShare 2010 in Salt Lake City. Voting will be open from now until December 4th, 2009 (5:00 PM MST). Please take the time to review the proposed sessions and vote for the sessions you believe will be of most value to you and the other conference attendees. &lt;/p&gt;
&lt;p&gt;To access session voting go to &lt;a href=&quot;http://bit.ly/bssessionvoting&quot; title=&quot;http://bit.ly/bssessionvoting&quot;&gt;http://bit.ly/bssessionvoting&lt;/a&gt; and create an account, if you do not already have one created. Please take the time to vote on each session as your votes will help to determine the sessions that will be presented at BrainShare 2010.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/zenworks&quot; class=&quot;og_links&quot;&gt;ZENworks Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9288/session-voting-begins-today#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <pubDate>Mon, 16 Nov 2009 11:15:58 -0700</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9288 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>ECMAScript/JavaScript Development Without a Web Browser</title>
 <link>http://www.novell.com/communities/node/9252/ecmascriptjavascript-development-without-web-browser</link>
 <description> &lt;p&gt;Have you ever been coding &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/1591&quot;&gt;&lt;acronym title=&quot;An object-oriented programming language developed by Sun Microsystems, Inc. to create executable content (ie, self-running applications) that can be easily distributed through networks like the Internet. Developers use Java to create special programs called applets that can be incorporated in web pages to make them interactive. A Java-enabled web browser is required to interpret and run the Java applets.&quot;&gt;Java&lt;/acronym&gt;&lt;/a&gt; and suddenly wanted to do something using loosely-typed variables or worked out an issue with a little less Java-ness?  Have you ever wanted to take advantage of the familiarity people have with some languages (ECMAScript/JavaScript) while still using something that is not a web &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/517&quot;&gt;&lt;acronym title=&quot;1. Software used to explore or navigate. For example, a Web browser (such as Firefox or Internet Explorer) allows a user to access pages on the World Wide Web; a NetWare Administrator browser window allows a user to access the eDirectory tree. Web browsers with a particular encryption capability called Secure Socket Layer (SSL) are sometimes called SSL browsers.2. In the Common Desktop Environment (CDE) Application Builder, a window that provides a symbolic, hierarchical view of a module in a user interface. The browser shows parent-child relationships and groups. It can also be used to find objects in complex modules and to edit a user interface.&quot;&gt;browser&lt;/acronym&gt;&lt;/a&gt; as an environment?  Have you ever wanted to debug your JavaScript without refreshing a web page and your &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/1063&quot;&gt;&lt;acronym title=&quot;1. (verb) To hold data in a temporary storage area, such as in RAM. The data can be accessed more quickly from RAM than from the hard disk.2. (noun) A quickly accessible area of RAM or a directory or a disk that stores frequently used information.3. (noun) On the Web, refers to the area where the browser stores downloaded graphics on the user&#039;s computer. That way, when the user has to reload the graphics, the browser retrieves it from the computer faster than ite would reloading the graphics from the Internet.&quot;&gt;cache&lt;/acronym&gt;&lt;/a&gt; that just won&#039;t seem to ever refresh properly for you?  This and more will be covered today with practical examples in both the Novell Identity Manager (IDM) and Novell Sentinel applications plus any other Java-based applications that you may have around your own environment.&lt;/p&gt;
&lt;p&gt;I think it may be prudent to review briefly what everything we&#039;ll be discussing really is.  For example, the title mentions ECMAScript and JavaScript together almost as if they are the same thing; that is actually a nice little coincidence as they are the same thing.  ECMAScript is the proper name for the language standard as approved by (you guessed it) ECMA but JavaScript is the common name of the language that we all know and love.  JavaScript has the word &#039;Java&#039; in it but another common clarification is that JavaScript is not, in any way, directly related to Java.  It is not meant to be a way to script Java and has no ties to the Java language with regard to data types, interpreters, etc.  That it is very similar to Java syntactically is completely unrelated to its name; it is as much similar to C++, PHP or other C-ish languages.  So as a recap ECMAScript is JavaScript and neither is related to the language and binaries from Sun known as &#039;Java&#039;.  &lt;/p&gt;
&lt;p&gt;Another notable term used throughout this document will be &#039;Rhino&#039; which does not refer to the large mammal with horns on its head but rather to the Mozilla project which makes a JavaScript interpreter available within a Java environment.  At some point later I&#039;ll also mention &lt;a href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt;, the open source Integrated Development Environment (&lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/1494&quot;&gt;&lt;acronym title=&quot;1. Integrated Drive Electronics: A hard disk interface (such as ESDI or SCSI) that has replaced the ST-506. The controller hardware is placed on the drive itself for improved performance.2. Integrated Development Environment: A part of Borland&#039;s Turbo C++ compiler.3. Interactive Development Environments, Inc.&quot;&gt;IDE&lt;/acronym&gt;&lt;/a&gt;) originally from IBM.  Finally the &#039;Aptana&#039; plugins for Eclipse make the IDE a bit more friendly.  They are not required for anything specifically to work but they are recommended when doing Sentinel SDK development which is largely based on JavaScript.  All of these tools and technologies are (in some form or another) free for use and most if not all are also open source.&lt;/p&gt;
&lt;p&gt;I&#039;m using a few examples from other sites I found online in preparing this which you may want to review for second opinions and clarifications on the topics covered herein.  I&#039;ll try to mention them as I borrow from them but they include &lt;a href=&quot;http://www.w3schools.com/js&quot;&gt;W3Schools&lt;/a&gt;, &lt;a href=&quot;http://gwydir.demon.co.uk/jo/javascript/&quot;&gt;Jo Edkins&#039; JavaScript tutorial&lt;/a&gt;, and the &lt;a href=&quot;http://www.mozilla.org/rhino/&quot;&gt;Rhino project&lt;/a&gt; page.  Later as we get into IDM and Sentinel-specific tasks we&#039;ll be doing things that may reference the &lt;a href=&quot;http://developer.novell.com/wiki/index.php?title=Develop_to_Sentinel&quot;&gt;Sentinel SDK&lt;/a&gt; specifically.&lt;/p&gt;
&lt;p&gt;In the introduction I mentioned a few reasons for going into browser-less JavaScript.  Despite my disclaimer earlier that JavaScript and Java are not related (that is true: they are not) they can be used together thanks to the project known as Rhino.  Rhino comes in the form of a JAR file which can be added to a Java application&#039;s classpath statement.  Once there then the ability to run JavaScript code within Java (with some limitations) is present and makes up the rest of this document.  There are some notable differences between JavaScript in a browser and JavaScript within Rhino that will be obvious to anybody who has used JavaScript before.  &lt;/p&gt;
&lt;p&gt;First, there is no Document Object Model (DOM) with which to interact.  For example, &#039;document.write(&quot;stuff&quot;);&#039; completely fails because there is (by default) no &#039;document&#039; object.  Other little debugging tricks like using &#039;alert&#039; also fail.  On the good side, though, there is the ability to run JavaScript interactively which can be nice for quick development and immediate feedback on simple problems with syntax or other runtime issues (invalid objects, methods, etc.).  Instead of adding an alert statement a developer can simply use the print() method and put the data to be printed in there and see it without refreshing a browser or saving a file.  I also mentioned the possibility of using what is essentially becoming a commodity programming language; everybody who has done basic web development has come across JavaScript and likely written a little bit.  The syntax is familiar and examples of ways to do many things are plentiful.  JavaScript is at the heart of AJAX and large frameworks such as the Google Web Toolkit (GWT).  Needing to hire a ten-year-veteran of a proprietary programming language is not necessary for simple development work.&lt;/p&gt;
&lt;p&gt;Let&#039;s dive right in.  I&#039;ve debated putting the JavaScript stuff before/after the Rhino stuff and have decided to put JavaScript first as that is what this is primarily about.  If you want to get the Rhino side of things setup it is trivial and will be covered below so jump down, get that, then come back to walk through everything on your own computer as you read it.  I will be separating out code examples so it should be easy to read this then setup the environment, and just run code like crazy later on.  First the basics of JavaScript are similar to other programming languages you may have used.  There are operators similar to those you have probably used before, variables, conditionals, loops, and JavaScript is also object-oriented.  Unlike Java and some other languages the variables can change data types or be treated as different data types very easily.  In the case of the Rhino implementation of JavaScript any classes available to the Java environment running Rhino are also available within JavaScript as will be shown later.&lt;/p&gt;
&lt;p&gt;Variable declaration takes place with a string representing the variable which is made up of alphanumeric characters plus underscores (A-Za-z0-9_) and variables must start with a non-numeric from what I&#039;ve found.  Unlike some other languages like &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/2048&quot;&gt;&lt;acronym title=&quot;Practical Extraction and Report LanguageA general-purpose scripting language for creating scripts on the Web, popular because of its ease of use and availability on a wide range of platforms. Perl 5 supports regular expressions, run-time libraries, exception handling, data structures, and object-oriented features.&quot;&gt;Perl&lt;/acronym&gt;&lt;/a&gt; or PHP there is no character preceding a variable to mark it as a variable.  A variable has a scope that can be either limited by using the &#039;var&#039; keyword or it can be a globally-scoped variable by simply declaring and instantiating the variable without the &#039;var&#039; keyword.  Declaring a variable just means telling the interpreter that the variable exists; initializing the variable means not only telling the interpreter that the variable exists but that it should also have a value which is then set into the variable.  Declaring a scoped variable of &#039;myusername&#039; and initializing it to have the value &#039;ab&#039; all in one command would look like the following:&lt;/p&gt;
&lt;pre&gt;var myUserName = &#039;ab&#039;;   //Declare &#039;myUserName&#039; and set it to the string value &#039;ab&#039;.

&lt;/pre&gt;&lt;pre&gt;var myAge = 30;    //Declare the &#039;myAge&#039; variable and initialize it to the numeric value 30.

&lt;/pre&gt;&lt;pre&gt;var isCool = true;    //Declare and initialize isCool to the boolean value true.

&lt;/pre&gt;&lt;p&gt;Note in the examples above that the first one included single-quotes around the value &#039;ab&#039; while the second did not have quotes around numerics.  Like many languages quotation marks should be used around strings but are not needed for numeric or boolean data types.  Something else potentially of note is the use of comments at the end of the line.  Like in Java, C and other languages single-line comments start with two slashes (sometimes known redundantly as forward-slashes) and comment out the line from the point of the two slashes until the next line starts.  Multi-line variables are also similar to C where they start with /* and end with */ and everything in between is a comment.  Also note the use of whitespace.  Between keywords and variables (&#039;var&#039; and &#039;myUserName&#039;) whitespace must exist, but around the equal sign and between the semicolon and the comments the whitespace is optional and just there for readability.  This bring up another point: newlines are not there to end a line or a statement in most cases as semicolons do that.  In the example above newlines were needed to end the comments but otherwise the three variable initializations could look like the following and have exactly the same outcome:&lt;/p&gt;
&lt;pre&gt;var myUserName=&#039;ab&#039;;var myAge=30;var isCool=true;

&lt;/pre&gt;&lt;p&gt;Moving along it is possible to declare but not initialize a variable by simply using the &#039;var&#039; keyword with the variable name (or names) and then a semicolon to end the line.  The three variables above could be declared in the following way though they would all be null:&lt;/p&gt;
&lt;pre&gt;var myUserName, myAge, isCool;    //Declare but do not initialize explicitly.

&lt;/pre&gt;&lt;p&gt;In many languages declaring a variable without initializing it sets the value to a null value or a similar default and JavaScript is no exception to that convention.  Because I was taught to always initialize variables when declaring them (to keep from getting frustrated when using languages that do not automatically initialize variables for you, such as C++) all of the examples here will declare and initialize variables and I encourage that behavior as it is a good practice overall.&lt;/p&gt;
&lt;p&gt;So we have variables, let&#039;s do a little bit with them (I recommend having them set for these examples as it is more fun than using uninitialized variables).  First, let&#039;s do the basic printing stuff:&lt;/p&gt;
&lt;pre&gt;print(&#039;Hello World!&#039;);   //Basic Hello World program... a one-line in JavaScript; doing this in a browser would simply replace the &#039;print&#039; section with &#039;alert&#039;.
print(myUserName);  //Print whatever is currently in the myUserName variable.  Notice there are no quotes around the characters that make up the variable.
print(myAge);        //Print &#039;30&#039; to the screen.
print(myUserName + &#039; &#039; + myAge);    //Print &#039;ab 30&#039; by concatenating myUserName&#039;s value with a single space and then with myAge&#039;s value.
print(&#039;It is a true statement that &#039; + myUserName + &#039;, who is age &#039; + myAge + &#039;, has an isCool variable set to &#039; + isCool + &#039;.&#039;);

&lt;/pre&gt;&lt;p&gt;Okay we have beat these variables and printing commands to death and it all seems to work.  Let&#039;s play with operators besides the assignment operator (also known as the equals sign).  So far we have just set variables to a value and that is it.  It is time to change the values.  You have already seen that &#039;+&#039; can join strings (concatenate) together but it is also available for arithmetic when numeric types are used exclusively:&lt;/p&gt;
&lt;pre&gt;myAge = myAge + 3;   //myAge should now be 33 if it was 30 before
myAge += 3;    //Functionally equivalent to the line above, but shorter.  myAge is now 36.
myAge /= 12;   //Divide myAge by twelve and set the result back into myAge... should be 3 now.
myAge *= 12;   //Multiply myAge by twelve and set the result back into myAge... should be 36 again.
--myAge;   //Decrement the value of myAge by one and set it then returning the value (35);
myAge--;   //Return the value of myAge and THEN decrement it by one so the NEXT time myAge is called it will show the value of 34.
myAge++;   //Increment the value of myAge after returning the current value (34).
++myAge;   //Increment the value of myAge and return the value (36);
myAge = 0XFF;   //Set myAge equal to 0XFF which is a hexadecimal representation of the decimal number we all know and love as 255;
myAge = 3.00e2;   //Use scientific notation to set myAge to 300.

&lt;/pre&gt;&lt;p&gt;Most of these examples apply to just about any programming language you can find so let&#039;s move over to Arrays.  An array is a set of multiple values all available via a single variable name.  The different values are accessed individually by using an index or an offset from the variable name itself.  For example the zeroth offset [0] from &#039;myFavoriteThings&#039; will be &#039;pianos&#039; while the first offset [1] will be books.  See below for the code examples:&lt;/p&gt;
&lt;pre&gt;var myFavoriteThings = [&#039;piano&#039;, &#039;book&#039;];   //Initialize the myFavoriteThings array with two values.
var myFavoriteThings = new Array(&#039;piano&#039;, &#039;book&#039;);    //Functionally equivalent to the previous initialization of the array.
print(myFavoriteThings[0]);   //Print &#039;piano&#039;
print(myFavoriteThings[1]);   //Print &#039;book&#039;
print(myFavoriteThings[2]);   //Print &#039;undefined&#039; since this index does not reference anything that is as of yet defined in the array.

&lt;/pre&gt;&lt;p&gt;Something nice about a few of these languages is that Arrays are defined as &#039;sparse&#039; arrays meaning that they only allocate memory for elements which have data in them.  For example you could define an array with ninety-nine slots (places, indexes, offsets, whatever) for strings but only those indexes which were populated would actually take up space.  The arrays in JavaScript (and other languages too) are also variable in size allowing you to add or remove elements on the fly without redefining the array&#039;s size in a static way which is very nice.&lt;/p&gt;
&lt;p&gt;Another note that always makes me happy is that JavaScript arrays are naturally &#039;associative&#039; arrays which means that the index does not always need to be just a simple integer but can be a &#039;key&#039; which then has a &#039;value&#039; referred-to by the key.  Initializing an associative array is a little different but still simple to understand; notice the use of the braces around the key/value pairs instead of brackets around the values alone:&lt;/p&gt;
&lt;pre&gt;var myFavoriteThings = {&#039;instrument&#039;:&#039;piano&#039;, &#039;media&#039;:&#039;book&#039;};
print(myFavoriteThings[&#039;instrument&#039;]);   //Prints &#039;piano&#039;.
print(myFavoriteThings[&#039;media&#039;]);   //Prints &#039;books&#039;.

&lt;/pre&gt;&lt;p&gt;The initialization sets up the associative array (Perl programmers will recognize the term &#039;hash&#039; meaning the same thing) of myFavoriteThings with a key of &#039;instrument&#039; which refers to the value &#039;piano&#039; and the key &#039;media&#039; which refers to the value &#039;book&#039;.  Just to mention a quick example about multi-dimensional arrays JavaScript supports these as well and the syntax just nests what we have already learned to provide the functionality.  This gets confusing for beginners so touching on this is probably all I&#039;ll do:&lt;/p&gt;
&lt;pre&gt;var myPets = {&#039;cats&#039;:[&#039;rosco&#039;, &#039;tiger&#039;], &#039;horses&#039;:[&#039;mikey&#039;, &#039;shasta&#039;]};    //Initialize the myPets associative array with a &#039;cats&#039; key referring to an array of names of cats, and a &#039;horses&#039; key referring to an array of names of horses.
print(myPets[&#039;cats&#039;][0]);    //Prints &#039;rosco&#039;;
print(myPets[&#039;horses&#039;][1]);     //Prints &#039;shasta&#039;;

&lt;/pre&gt;&lt;p&gt;With the basics of variables, arrays, and operators under our belt we can start doing fun things like conditionals and loops.  The basic conditional executes code based on conditions that are checked.  For example writing code to tease somebody for being &quot;old&quot; is trivial:&lt;/p&gt;
&lt;pre&gt;if(myAge &amp;gt; 29) {    //Check for the variable &#039;myAge&#039; being greater-than the numeric value 29.
  print(&#039;Oh boy you sure are old....&#039;);    //Print a message
} else if (myAge &amp;gt; 25) {
  print(&#039;The joys of middle age... hopefully you are no longer dumb and acting like it but are still not too old either.&#039;);    //If the previous if statements haven&#039;t matched try this one.
} else {    //If the previous if statements did not match then the &#039;else&#039; branch is used instead, assuming an else branch exists that is....
  print(&#039;Whippersnapper!  Get off my lawn.&#039;);
}

&lt;/pre&gt;&lt;p&gt;For a lot of possibilities for a single &#039;if&#039; statement sometimes a &#039;switch&#039; or &#039;case&#039; statement is advantageous.&lt;/p&gt;
&lt;pre&gt;myResponse = &#039;optimistic&#039;;
switch(myResponse) {
  case &#039;pessimistic&#039;:
    //do something here for pessimistic responses
    break;   //skip to the end
  case &#039;optimistic&#039;:
    //do something here for optimistic responses
    break;   //skip to the end
  default:
    //Do whatever you want here for those times the previous cases were not met.
    break;
}

&lt;/pre&gt;&lt;p&gt;After conditionals are understood loops seem like a good place to venture next.  We&#039;ll go over the &#039;for&#039; and &#039;while&#039; loops briefly.  The &#039;for&#039; loop starts out and typically sets an initial value for a counter/iterator, then sets a condition for how long the loop should run, and finally ends with a statement about how to increment the counter or iterator.  All of the code within the braces is then run as long as the condition within the definition of the &#039;for&#039; loop is true:&lt;/p&gt;
&lt;pre&gt;//Setup ctr0 to the value 0 and loop while ctr0 is less-than 10 incrementing it by one (++ctr0) at the start of each iteration.
var factorial = 1;
for(var ctr0 = 0; ctr0 &amp;lt; 10; ++ctr0) {
  print(ctr0);    //Print the current version of the ctr0 variable
  if(ctr0 != 0) {
    factorial *= ctr0;
  }
}
print(factorial);

&lt;/pre&gt;&lt;p&gt;The loop above combines a loop and a conditional as well.  It initializes ctr0 to 0 and then loops while that variable is less-than 10, incrementing it by one every iteration.  Inside the loop it prints the value of ctr0 and also, if the ctr0 value is not equal to 0, multiples it by the current &#039;factorial&#039; variable (which was originally initialized to 1) and after the entire loop is completed prints out the factorial.  This functionally is a little script that, with a lot of extra stuff, gives us the value for 9! or nine factorial (the product of all integers from one to nine) or 362880.  Another kind of loop is the while loop which leaves control of counters or iterators to you and just loops while the user-defined condition at the beginning is true:&lt;/p&gt;
&lt;pre&gt;//Another factorial generator, though this one stops when the product reaches a certain value rather than when the factors reach a certain value.
var ctr0 = 1;
var factorial = 1;
while(factorial &amp;lt; 320000) {
  factorial *= ctr0;
  ++ctr0;
}
print(factorial);

&lt;/pre&gt;&lt;p&gt;Another type of loop that is very handy  is one that loops through values of an object.  Remember those arrays?  What if you wanted to print everything in an array?  Turns out that is also quite easy:&lt;/p&gt;
&lt;pre&gt;//Print all of the pet types.
for(var onePet in myPets) {
  print(onePet);
}

&lt;/pre&gt;&lt;p&gt;Note that if you still have the multi-dimensional array setup from above this only prints the keys for the first array and does not go into the nested arrays or other data structures.  This is typically useful as you could easily get into those now by nesting another loop within the first loop that went through all of the values for any object found during this loop&#039;s iteration.&lt;/p&gt;
&lt;pre&gt;//Print all of the pet types and then the pets.
for(var firstElement in myPets) {    //Loop through all of the types of pets as those are the keys for the myPets associative array (hash).
  print(firstElement);   //Print this type of pet.
  for(var secondElement in myPets[firstElement]) {    //Loop through the keys of the nested arrays of the top arrays to get the names of the type of pet through which we are currently looping.
    print(&#039;  &#039; + myPets[firstElement][secondElement]);    //Print a couple spaces and then the name of the current pet.
  }
}

&lt;/pre&gt;&lt;p&gt;So with very little code we can get a list of everything within nested associative arrays.&lt;/p&gt;
&lt;p&gt;After about ten minutes of programming (if that) you will probably find that you do the same things over and over.  For example you probably print a lot, you may want to handle data types or objects in certain ways, or whatever.  In programming exists a concept of functions or methods which take parameters (typically) and return a value or some output after doing a specific bit of processing on the available data.  This is useful as it encourages data reuse so you are not writing the same ten lines of code thousands of times in a program or script and then having to modify all of those thousands of instances the second you determine that you have a glitch in your logic or a change to what your code does because of new requirements.  Creating a method (function) in JavaScript is easy and it acts a lot like a variable.  A method has a keyword (&#039;function&#039;) followed by a name (myFunction) and then data which are used within the method.  In the case of the method the code is also executed when the method is called but otherwise methods are very similar to variables:&lt;/p&gt;
&lt;pre&gt;//Define a method named addTwoNums which, when sent two values, adds them together and returns the result.
function addTwoNums(num0, num1) {
  return num0 + num1;
}

&lt;/pre&gt;&lt;p&gt;The sample method above could be called like the following, which I expect would end up printing the value 25 to the screen:&lt;/p&gt;
&lt;pre&gt;print(addTwoNums(18, 7));   //Print the sum of 18 and 7 to the screen.
print(addTwoNums(12345, 678910));   //Print the sum of &#039;12345&#039; and &#039;678910&#039; which is 691255.
print(addTwoNums(myUserName + &#039; has isCool set to &#039;, isCool));   //Concatenates because of loose interpretation of data types in JavaScript and the overloaded &#039;+&#039; operator which also concatenates data.

&lt;/pre&gt;&lt;p&gt;Another benefit of using methods/functions is you can describe complicated code in a simple fashion.  As an example it is easier to name a method something about returning a random integer from zero to four billion and change than it is to figure out what the code does sometimes:&lt;/p&gt;
&lt;pre&gt;//Method to get a random integer from zero to 2^32.
function getRandomInteger() {
  return (Math.floor((Math.random()*(Math.pow(2, 32)))));
}

print(getRandomInteger());

&lt;/pre&gt;&lt;p&gt;Finally this is a nice introduction to objects.  In the previous example I made three calls to something called &#039;Math&#039; which is a math object in JavaScript that is just waiting to be used for fun things that otherwise are not always fun to code.  Specifically I used Math.floor() (round to the next integer below the value passed into the method), Math.random() (returns a decimal number between zero and one) and Math.pow() which is used for getting the results of one number taken to some power (two to the third power, for example, is eight).  The Math object also returns results for things like pi (3.14159...) and other numbers that are fairly constant in the universe.  It includes ways to calculate the sine, cosine, and other geometric things.  Objects, in the software sense, are instances of certain classes and therefore take on the attributes and methods of those classes.  The Math object exists to provide calculated results to the programmer as shown in the previous example.  In JavaScript it is possible to create classes for your own purposes.  A common class example is the &#039;Person&#039; class.  Instance variables often include things like eye color, first name, government identification number, e-mail address, etc.  Instantiating an object named &#039;johnSmith&#039; of the Person class could then have the variables set with data specific to John Smith.  Benefits of doing so mean the ability to contain all of the attributes related to a single object all in one place instead of trying to maintain different arrays of the data for the object.&lt;/p&gt;
&lt;p&gt;One thing that is interesting about variables in JavaScript is that you do not need to declare them as a specific object type (class) all of the time for them to be treated like a certain class.  As an example any old string variable can immediately use the methods of the String class.  Consider the following example where a simple string is created out of thin air but then the method toUpperCase() is usable to return the string all in upper case and the length attribute is usable to return the length of the string::&lt;/p&gt;
&lt;pre&gt;var myUserName = &#039;ab&#039;;    //Initialize the variable.
print(myUserName.toUpperCase() + &#039; is &#039; + myUserName.length + &#039; characters long.&#039;);    //Print a sentence showing the string all in upper case and the length of the string.

&lt;/pre&gt;&lt;p&gt;Other methods of the String class including the indexOf() method which returns the offset of a given substring.  The match() method also lets the programmer test if the string matches a given pattern known as a &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/3350&quot;&gt;&lt;acronym title=&quot;A regular expression (regex) is a way of describing a string of text using metacharacters or wildcard symbols.&quot;&gt;regular expression&lt;/acronym&gt;&lt;/a&gt;.  Some examples follow:&lt;/p&gt;
&lt;pre&gt;print(&#039;b&#039; is found in the myUserName variable at index &#039; + myUserName.indexOf(&#039;b&#039;));    //Print a sentence along with the offset of the &#039;b&#039; character.
print(&#039;&quot;b&quot; will be replaced by &quot; qwerty&quot; as a result of this example&#039;);
print(myUserName.replace(&#039;b&#039;, &#039; qwerty&#039;));   //Replace &#039;b&#039; with &#039; qwerty&#039; and print the resulting &#039;a qwerty&#039; but do not set myUserName to this new value.

&lt;/pre&gt;&lt;p&gt;As another example of a built-in object we have the Date object which, as you probably guessed, deals with date and time functions.  With this we can get the current time as it is set in different timezones around the world, in different formats (two and four-digit years for example), and other different ways.  A date object can be set to the current date (and is by default) but can also be set to another arbitrary point in time.  By comparing a Date object initialized before an operation and then after the operation is completed the time taken to perform the operation can be ascertained.  As an example I&#039;ll create a Date object, count for a while, then create another Date object, and compare them to see the number of milliseconds between them:&lt;/p&gt;
&lt;pre&gt;var ctr0 = 0;
var myDate0 = new Date();      //Create an object to help timing a counter from zero to some number specified in the for loop.
for(ctr0 = 0; ctr0 &amp;lt; 1000000; ++ctr0) { }
var myDate1 = new Date();      //Create an object at the completion of the counting operation.
print(&#039;Counting took &#039; + (myDate1 - myDate0) + &#039; milliseconds.&#039;);   //Print the time taken in milliseconds.

&lt;/pre&gt;&lt;p&gt;The resulting text on my laptop was &#039;Counting took 139 milliseconds.&#039;  Some other basic calls to the Date object will show month, day, hear, hours, day of the year, seconds since 1970-01-01, etc.  One really neat property of JavaScript objects is the ability to convert them back to the source which created them.  For example the following examples show the code to create the myDate0 and myDate1 objects above:&lt;/p&gt;
&lt;pre&gt;print(myDate0.toSource());    //Show the source of the myDate0 object.
print(myDate1.toSource());    //Show the source of the myDate1 object.
print(Date().toSource());    //Show the source of a new Date object as it would be created right now.&lt;/pre&gt;&lt;p&gt;The result of the three commands above (for me right now) follows:&lt;/p&gt;
&lt;pre&gt;(new Date(1257391274428))
(new Date(1257391274567))
(new String(&quot;Wed Nov 04 2009 20:31:03 GMT-0700 (MST)&quot;))

&lt;/pre&gt;&lt;p&gt;One value here is that an object could be saved out to a string and read in by another script or a later incarnation of the same script.  It also aids in learning about the objects&#039; creation as well as seeing how the objects are currently setup.  Also remember all of those Daylight Savings Time perils that crop up every year or so, or maybe every few months?  Creating a Date object that is powered by Java and therefore knows everything Java knows (as updated by tzupdater) is trivial and seeing what the time is per that Java invocation does not require coding anything in pure Java then compiling and running.  Just create a date object and see what the time is relative to GMT, or see how the date object looks in its source to see if the current time is inside the range of dates for daylight savings time (MDT for Mountain Daylight Time) or outside that range (MST for Mountain Standard Time).  As any old Java implementation can be used to load the Rhino environment in which we do all of this current stuff checking one Java implementation and then another is trivial.&lt;/p&gt;
&lt;p&gt;So now we have a basic overview of the JavaScript language it is probably a good idea to talk about how to do this outside a browser finally.  It&#039;s time to show off the Rhino environment in which all of these examples are currently running.  In order to get Rhino working on your system one simply needs a Java runtime installed (chances are one is already there, but if not get one from &lt;a href=&quot;http://java.sun.com/&quot; title=&quot;http://java.sun.com/&quot;&gt;http://java.sun.com/&lt;/a&gt; or your system&#039;s favorite installation source) and then the JAR file from the Rhino project that provides the desired functionality.  With Java (including the &#039;java&#039; executable in your user&#039;s PATH) and the JAR in place the following command should get things going for you.&lt;/p&gt;
&lt;pre&gt;java -jar /path/to/js.jar
Rhino 1.7 release 2 2009 03 22
js&amp;gt;

&lt;/pre&gt;&lt;p&gt;As you can see the prompt is now changed; here we can type or paste input and have it executed in realtime.  As an example of both the input and the output:&lt;/p&gt;
&lt;pre&gt;js&amp;gt; var ctr0 = 0;
js&amp;gt; var myDate0 = new Date();      //Create an object to help timing a counter from zero to some number specified in the for loop.
js&amp;gt; for(ctr0 = 0; ctr0 &amp;lt; 1000000; ++ctr0) { }
js&amp;gt; var myDate1 = new Date();      //Create an object at the completion of the counting operation.
js&amp;gt; print(&#039;Counting took &#039; + (myDate1 - myDate0) + &#039; milliseconds.&#039;);   //Print the time taken in milliseconds.
Counting took 823 milliseconds.

&lt;/pre&gt;&lt;p&gt;To get start call the help() method which should help provide some built-in commands that will help over time.  I have called it in the example below to give some idea of the output and options available by default besides what was covered above:&lt;/p&gt;
&lt;pre&gt;js&amp;gt; help()

Command                Description
=======                ===========
help()                 Display usage and help messages.
defineClass(className) Define an extension using the Java class
                       named with the string argument.
                       Uses ScriptableObject.defineClass().
load([&quot;foo.js&quot;, ...])  Load JavaScript source files named by
                       string arguments.
loadClass(className)   Load a class named by a string argument.
                       The class must be a script compiled to a
                       class file.
print([expr ...])      Evaluate and print expressions.
quit()                 Quit the shell.
version([number])      Get or set the JavaScript version number.
gc()                   Runs the garbage collector.
spawn(arg)             Evaluate function or script name on a new thread
sync(function)         Creates a synchronized version of the function,
                       where the synchronization object is &quot;this&quot;
readFile(fileName [, encoding])
                       Returns the content of the file as a string.
                       Encoding of the string can be optionally specified.
readUrl(url [, encoding])
                       Similar to readFile, reads the contents of the url.
runCommand(name ...)   Runs a specified shell command. Additional arguments are
                       passed to the command
seal(args ...)         Seals the supplied objects
toint32(arg)           Converts the argument into a 32-bit integer
serialize(obj, fileName)
                      Serializes an object and saves it to a file
deserialize(fileName)  Reconstructs a serialized object
environment            Returns the current environment object
history                Displays the shell command history

&lt;/pre&gt;&lt;p&gt;Some of the these you should know already, such as print().  Another that will stand out to Java aficionados is gc() which lets you call the Garbage Collector to force memory to be cleaned up.  quit() is also useful; you MUST have the () (parentheses) at the end of all of these including quit() in order to invoke the method or else you will simply get the definition (code) of the method back which isn&#039;t that help when trying to close your JS environment.  Also included is readURL which goes out and reads the URL given to it and returns whatever it finds there to your screen which could include remote JS code, &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/3186&quot;&gt;&lt;acronym title=&quot;Extensible Markup Language&quot;&gt;XML&lt;/acronym&gt;&lt;/a&gt; for parsing, or anything else like that.  The following command, for example, pulls Google&#039;s homepage &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/1482&quot;&gt;&lt;acronym title=&quot;HyperText Markup LanguageThe markup language used to create pages on the World Wide Web. Because HTML uses ASCII text character combinations to code or tag various options, it can be used on a variety of platforms. HTML coding can be used to format text, create lists, insert multimedia, create forms for collecting user input, and create links to other Web locations.HTML is a language for describing page layout in electronic documents such as Web pages, help files, and e-mail messages. HTML can be used in e-mail and news posts to insert images and apply text treatments.&quot;&gt;HTML&lt;/acronym&gt;&lt;/a&gt; into the googleHTML variable:&lt;/p&gt;
&lt;pre&gt;var googleHTML = readUrl(&#039;http://www.google.com/&#039;);

&lt;/pre&gt;&lt;p&gt;The load() method will also read in local files as JS code so you can include functions from other files to keep your files modular and flexible.  Also recall that this entire environment is running within Java so we still have access to any classes available via Java as long as the JRE can call them and they are defined within JS.  Making other classes available is simply a matter of modifying the calling JRE&#039;s classpath statement to include the paths to relevant classes.  The &#039;java&#039; command accepts the &#039;-cp&#039; parameter followed by a colon-delimited list of paths to classes.  Once that is done the JS environment must still be told to make those packages available in one way or another.  The following are examples that should work assuming that the necessary JAR files are present for the non-native Java classes:&lt;/p&gt;
&lt;pre&gt;importPackage(java.lang);   //Import the java.lang package so classes within this package are available.

&lt;/pre&gt;&lt;pre&gt;importPackage(Packages.com.novell.xml.util);    //Import the com.novell.xml.util package; notice Packages must lead the actual package when the package itself is not a part of the java.* hierarchy of packages.

&lt;/pre&gt;&lt;p&gt;Once these are executed the following commands also work taking advantage of native Java within the JavaScript:&lt;/p&gt;
&lt;pre&gt;var mylong0 = java.lang.Long.parseLong(binstring, 2);
var base64c = new Packages.com.novell.xml.util.Base64Codec();

&lt;/pre&gt;&lt;p&gt;With that the wide world of Java is instantly available in a scripting fashion.  Notice that &#039;mylong0&#039; and &#039;base64c&#039; are declared as one type or another in JavaScript though they refer to specific objects of certain classes in Java.  As you have probably noticed the second command in either of the two preceding code blocks are using a class that comes from Novell.  The reason for this is that these are part of the Novell Identity Manager set of classes.  Originally when I was told how to use Rhino it was in the context of IDM which supports ECMASCript along with the more traditional DirXML/IDM &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/3000&quot;&gt;&lt;acronym title=&quot;In ZENworks Desktop Management, ZENworks Handheld Management, and ZENworks Server Management, a set of rules that define how workstations, handheld devices, and servers can be configured and controlled, including application availability and access, file access, and the appearance and contents of individual desktops. Policies are contained within policy packages, where they are also administered and customized.&quot;&gt;policy&lt;/acronym&gt;&lt;/a&gt; and XSLT.  A quick little shell script pulls in all of IDM&#039;s basic classes and launches the Rhino shell in one quick step.  That script&#039;s code follows:&lt;/p&gt;
&lt;pre&gt;&amp;lt;code interpreter=&#039;/bin/bash&#039; scriptfile=&#039;~/bin/dxrhino&#039;&amp;gt;
#Script from development to load in the IDM environment for rhino testing.  Requires
#rlwrap as well.  Takes one value (JavaScript I believe) as a parameter.
PATH=/opt/novell/eDirectory/lib/nds-modules/jre/bin:$PATH

CP=
for i in /opt/novell/eDirectory/lib/dirxml/classes/*.jar
do
    CP=$CP:$i
done
rlwrap java -cp $CP com.novell.soa.script.mozilla.javascript.tools.shell.Main &quot;$@&quot;
&amp;lt;/code&amp;gt;

&lt;/pre&gt;&lt;p&gt;Notice that the PATH and CP variables are set to include a root-based installation of eDirectory&#039;s IDM engine classes.  These can be modified to suit your needs.  The most-important part is that a valid Java environment is used (which PATH helps with above) and that the JAR files are included (as loaded in via CP above).  One other note is that rlwrap is included on that line where Java is called; among possible other things this lets the up-arrow key work properly to move back to previous commands entered in Rhino.  If this is not there it is likely that you will experience garbage characters at the JS prompt when trying to use the up arrow to go to previous commands.  rlwrap is trivial to add to the system even if it is from source so I would add it to any system that will be used even remotely.  My compiled build shows version 0.30 in case that helps.&lt;/p&gt;
&lt;p&gt;In a later article I&#039;ll be discussing some in-depth uses of this technology both within the Novell Identity Manager and Novell Sentinel-based products along with other little scripts that can now be easily created using JS and Java.  If you have not done so by this point set up what has been discussed and see what potential uses apply to your own environment.  The environment is painless to setup and works reliably thanks to Java.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/workgroup&quot; class=&quot;og_links&quot;&gt;Workgroup Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9252/ecmascriptjavascript-development-without-web-browser#comments</comments>
 <category domain="http://www.novell.com/communities/content-type/appnote">AppNote</category>
 <category domain="http://www.novell.com/communities/taxonomy/term/6">DirXML</category>
 <category domain="http://www.novell.com/communities/coolsolutions/nim">Identity Manager</category>
 <category domain="http://www.novell.com/communities/product/linux">Linux</category>
 <category domain="http://www.novell.com/communities/coolsolutions/oes">Open Enterprise Server</category>
 <category domain="http://www.novell.com/communities/product/opensuse">openSUSE</category>
 <category domain="http://www.novell.com/communities/product/sentinel">Sentinel</category>
 <category domain="http://www.novell.com/communities/taxonomy/term/79">SUSE Linux Enterprise</category>
 <category domain="http://www.novell.com/communities/coolsolutions/sled">SUSE Linux Enterprise Desktop</category>
 <category domain="http://www.novell.com/communities/product/suse+linux+enterprise+server">SUSE Linux Enterprise Server</category>
 <category domain="http://www.novell.com/communities/topic/administration">Administration</category>
 <category domain="http://www.novell.com/communities/topic/command-line">Command Line</category>
 <category domain="http://www.novell.com/communities/taxonomy/term/29">Developer</category>
 <category domain="http://www.novell.com/communities/topic/developer+tools">Developer Tools</category>
 <category domain="http://www.novell.com/communities/taxonomy/term/69">Identity &amp;amp; Security Management</category>
 <category domain="http://www.novell.com/communities/topic/identity+management">Identity Management</category>
 <category domain="http://www.novell.com/communities/topic/java">Java</category>
 <category domain="http://www.novell.com/communities/topic/linux">Linux</category>
 <category domain="http://www.novell.com/communities/topic/open-source">Open Source</category>
 <category domain="http://www.novell.com/communities/topic/scripting">Scripting</category>
 <category domain="http://www.novell.com/communities/topic/tips+administrators">Tips for Administrators</category>
 <category domain="http://www.novell.com/communities/taxonomy/term/46">Troubleshooting</category>
 <category domain="http://www.novell.com/communities/topic/unix">UNIX</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/partners/ism" xmlns="http://drupal.org/project/og">Identity and Security</group>
 <group domain="http://www.novell.com/communities/partners/datacenter" xmlns="http://drupal.org/project/og">Data Center</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <pubDate>Thu, 12 Nov 2009 16:10:32 -0700</pubDate>
 <dc:creator>aburgemeister</dc:creator>
 <guid isPermaLink="false">9252 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>GroupLink is Offering a Great BrainShare Promotion</title>
 <link>http://www.novell.com/communities/node/9275/grouplink-offering-great-brainshare-promotion</link>
 <description> &lt;p&gt;GroupLink has created a great promotion to help get you to BrainShare. The details of the promotion are listed on Novell Cool Solutions (&lt;a href=&quot;http://www.grouplink.net/redir.asp?id=2009111101&quot; title=&quot;http://www.grouplink.net/redir.asp?id=2009111101&quot;&gt;http://www.grouplink.net/redir.asp?id=2009111101&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The first 30 people who purchase GroupLink&#039;s everything HelpDesk, before the end of this year, and mention this e-mail will receive a free BrainShare pass! This offer is for new customers only. Minimum purchase of 3 user licenses, cannot be combined with other offers.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/zenworks&quot; class=&quot;og_links&quot;&gt;ZENworks Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9275/grouplink-offering-great-brainshare-promotion#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <pubDate>Thu, 12 Nov 2009 10:33:59 -0700</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9275 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Share Your Favorite BrainShare Memory and You Could Win an HP 2140 Mini Notebook!</title>
 <link>http://www.novell.com/communities/node/9274/share-your-favorite-brainshare-memory-and-you-could-win-hp-2140-mini-notebook</link>
 <description> &lt;p&gt;Share your favorite BrainShare memory and you&#039;ll be entered in a drawing for a chance to win an HP 2140 Mini Notebook! All you need to do is post it on this moderated forum (&lt;a href=&quot;http://tinyurl.com/yljt8kz&quot; title=&quot;http://tinyurl.com/yljt8kz&quot;&gt;http://tinyurl.com/yljt8kz&lt;/a&gt;) by November 30, 2009. We will announce one lucky BrainShare fanatic on December 2nd!&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/zenworks&quot; class=&quot;og_links&quot;&gt;ZENworks Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9274/share-your-favorite-brainshare-memory-and-you-could-win-hp-2140-mini-notebook#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <pubDate>Thu, 12 Nov 2009 10:26:17 -0700</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9274 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>How to Add Additional Perl Modules to Your Linux Installation</title>
 <link>http://www.novell.com/communities/node/9222/how-add-additional-perl-modules-your-linux-installation</link>
 <description> &lt;p&gt;Depending on whether you&#039;re using openSUSE, SUSE Linux Enterprise Desktop, SUSE Linux Enterprise Server or Open Enterprise Server and which version you&#039;re using you may be lucky and find that you can easily add the required &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/2048&quot;&gt;&lt;acronym title=&quot;Practical Extraction and Report LanguageA general-purpose scripting language for creating scripts on the Web, popular because of its ease of use and availability on a wide range of platforms. Perl 5 supports regular expressions, run-time libraries, exception handling, data structures, and object-oriented features.&quot;&gt;Perl&lt;/acronym&gt;&lt;/a&gt; module via &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/3338&quot;&gt;&lt;acronym title=&quot;Yet another Setup ToolThe SUSE Linux administration tool for installing and configuring a system.&quot;&gt;YaST&lt;/acronym&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here packages are named perl-&amp;lt;module&amp;gt; where double colons (::) are replaced by a minus (-) so for example the Net::&lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/2354&quot;&gt;&lt;acronym title=&quot;Simple Network Management ProtocolA TCP/IP protocol used for communicating between a network management console (SNMP Manager) and the devices the console manages. The protocol allows the SNMP Manager to gather information about the configuration and status of the TCP/IP protocol stacks of network nodes.&quot;&gt;SNMP&lt;/acronym&gt;&lt;/a&gt; module can be added by installing the perl-Net-SNMP package.&lt;/p&gt;
&lt;p&gt;However the majority of Perl modules are not available through YaST so have to be added another way.  Fortunately Perl on Linux provides a way of automating the manual process.&lt;/p&gt;
&lt;p&gt;As root run&lt;/p&gt;
&lt;pre&gt;# perl -MCPAN -e &#039;shell&#039;

&lt;/pre&gt;&lt;p&gt;If it&#039;s the first time this has been done you need to answer some questions - you can either choose to autoconfigure these or run through manually and choose defaults.  If you get prompted for a CPAN mirror &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/2554&quot;&gt;&lt;acronym title=&quot;Uniform Resource LocatorThe addressing system used in the World Wide Web and other Internet resources. The URL contains information about the method of access (http://, for example), the name of the host and domain (such as www.suse.de) to be accessed, and the path of any file or document (such as /company/index.html) to be accessed. The complete URL of this example is http://www.suse.de/company/index.html.&quot;&gt;URL&lt;/acronym&gt;&lt;/a&gt; use something suitable from &lt;a href=&quot;http://search.cpan.org/mirror&quot;&gt;http://search.cpan.org/mirror&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once done you can then install the additional modules - case is important!&lt;/p&gt;
&lt;p&gt;For example, to install the Net::&lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/3099&quot;&gt;&lt;acronym title=&quot;Simple Mail Transfer ProtocolThe standard TCP/IP protocol used on Internet email. The protocol defines the message format and the message transfer agent (MTA) that stores and forwards the mail. SMTP is the most common way of transporting mail messages from your computer to the server.&quot;&gt;SMTP&lt;/acronym&gt;&lt;/a&gt; module do&lt;/p&gt;
&lt;pre&gt;cpan[#]&amp;gt; install Net::SMTP

&lt;/pre&gt;&lt;p&gt;at the end of which, if this is the first time using the shell, it will probably note that there&#039;s a newer CPAN so then&lt;/p&gt;
&lt;pre&gt;cpan[#]&amp;gt; install CPAN

&lt;/pre&gt;&lt;p&gt;which may take a while!&lt;/p&gt;
&lt;p&gt;Afterwards it will prompt you to reload CPAN so&lt;/p&gt;
&lt;pre&gt;cpan[#]&amp;gt; reload CPAN

&lt;/pre&gt;&lt;p&gt;To exit&lt;/p&gt;
&lt;pre&gt;cpan[#]&amp;gt; quit

&lt;/pre&gt; &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/node/2946/opensuse&quot; class=&quot;og_links&quot;&gt;openSUSE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9222/how-add-additional-perl-modules-your-linux-installation#comments</comments>
 <category domain="http://www.novell.com/communities/coolsolutions/oes">Open Enterprise Server</category>
 <category domain="http://www.novell.com/communities/product/opensuse">openSUSE</category>
 <category domain="http://www.novell.com/communities/taxonomy/term/79">SUSE Linux Enterprise</category>
 <category domain="http://www.novell.com/communities/coolsolutions/sled">SUSE Linux Enterprise Desktop</category>
 <category domain="http://www.novell.com/communities/product/suse+linux+enterprise+server">SUSE Linux Enterprise Server</category>
 <category domain="http://www.novell.com/communities/content-type/tip">Tip</category>
 <category domain="http://www.novell.com/communities/taxonomy/term/32">Configuration</category>
 <category domain="http://www.novell.com/communities/taxonomy/term/45">Customizing</category>
 <category domain="http://www.novell.com/communities/topic/installation">Installation</category>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/node/2946/opensuse" xmlns="http://drupal.org/project/og">openSUSE</group>
 <pubDate>Tue, 10 Nov 2009 13:18:26 -0700</pubDate>
 <dc:creator>smflood</dc:creator>
 <guid isPermaLink="false">9222 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Call for Participation Ends November 13th</title>
 <link>http://www.novell.com/communities/node/9250/call-participation-ends-november-13th</link>
 <description> &lt;p&gt;BrainShare Call for Participation is opened through Friday, November 13th.  If you have a proposed topic that you believe would be of value to our attendees, please submit it by going to &lt;a href=&quot;http://www.novell.com/brainshare/session_proposals.html&quot; title=&quot;http://www.novell.com/brainshare/session_proposals.html&quot;&gt;http://www.novell.com/brainshare/session_proposals...&lt;/a&gt; and clicking on the &quot;Submit a Session Proposal&quot; link. &lt;/p&gt;
&lt;p&gt;Please note: BrainShare will have a strong emphasis on technical sessions. Preference will be given to the sessions that are more technical in nature and are focused on an intermediate-to-advanced audience. &lt;/p&gt;
&lt;p&gt;We are excited to review your session ideas and are confident that this upcoming event will be the best ever!&lt;/p&gt;
&lt;p&gt;If you have any questions please contact us at &lt;a href=&quot;mailto:news@novellbrainshare.com&quot;&gt;news@novellbrainshare.com&lt;/a&gt;.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions&quot; class=&quot;og_links&quot;&gt;Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9250/call-participation-ends-november-13th#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <pubDate>Mon, 09 Nov 2009 12:01:08 -0700</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9250 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Early Bird Discount: Save $300 on BrainShare</title>
 <link>http://www.novell.com/communities/node/9240/early-bird-discount-save-300-brainshare</link>
 <description> &lt;p&gt;Novell has taken steps to make BrainShare more affordable by dropping the full price of the conference from US$1,895.00 to US$1,695.00. You can save an additional $300 with the &quot;early bird&quot; registration. The &quot;early bird&quot; rate of US$1,395.00 will be available until February 19, 2010. Learn more at &lt;a href=&quot;http://www.novell.com/brainshare&quot; title=&quot;http://www.novell.com/brainshare&quot;&gt;http://www.novell.com/brainshare&lt;/a&gt;&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions&quot; class=&quot;og_links&quot;&gt;Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9240/early-bird-discount-save-300-brainshare#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <pubDate>Fri, 06 Nov 2009 13:31:43 -0700</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9240 at http://www.novell.com/communities</guid>
</item>
</channel>
</rss>
