<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>thenerdnomad.com</title>
	<atom:link href="http://thenerdnomad.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://thenerdnomad.com</link>
	<description></description>
	<lastBuildDate>Tue, 08 Nov 2011 17:05:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>openAM OSX Crashadoshish!</title>
		<link>http://thenerdnomad.com/?p=255</link>
		<comments>http://thenerdnomad.com/?p=255#comments</comments>
		<pubDate>Tue, 08 Nov 2011 17:04:56 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Backbase]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=255</guid>
		<description><![CDATA[I just spent a large portion of the morning attempting to get openAM working in my environment only to be blocked at every pass due to a Null Pointer Exception. Aparently the issue stems from OpenSSOLogger. So some guy. On a forum. Had the same issue and fixed it for me. https://bugster.forgerock.org/jira/browse/OPENAM-587 YAY!]]></description>
			<content:encoded><![CDATA[<p>I just spent a large portion of the morning attempting to get openAM working in my environment only to be blocked at every pass due to a Null Pointer Exception. Aparently the issue stems from OpenSSOLogger.<br />
So some guy.<br />
On a forum.<br />
Had the same issue and fixed it for me. </p>
<p>https://bugster.forgerock.org/jira/browse/OPENAM-587</p>
<p>YAY!</p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=255</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQueryUI Theme Roller</title>
		<link>http://thenerdnomad.com/?p=244</link>
		<comments>http://thenerdnomad.com/?p=244#comments</comments>
		<pubDate>Tue, 05 Apr 2011 15:54:54 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=244</guid>
		<description><![CDATA[Anyone who has used the jQueryUI Theme Roller Bookmarklet in the past was in for a hell of a surprise when they upgraded to the latest version of firefox. Seems there is a browser check in the bookmarklet code that prevented our favorite little tool from starting. But have no fear motor babies! Yours truely [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who has used the jQueryUI Theme Roller Bookmarklet in the past was in for a hell of a surprise when they upgraded to the latest version of firefox. Seems there is a browser check in the bookmarklet code that prevented our favorite little tool from starting. But have no fear motor babies! Yours truely here has the solution to all your theming woes!</p>
<p>The first step to getting this bad boy up and running again is to simply host the damn thing yourself. If you got you a website that you can access, simply copy the following javascript (this is what the bookmarklet sends back mind you) and host it on your domain.</p>
<p><code><br />
javascript: (function() {<br />
    if (window.jquitr) {<br />
        jquitr.addThemeRoller();<br />
    } else {<br />
        jquitr = {};<br />
        jquitr.s = document.createElement('script');<br />
        jquitr.s.src = 'http://jqueryui.com/themeroller/developertool/developertool.js.php';<br />
        document.getElementsByTagName('head')[0].appendChild(jquitr.s);<br />
    }<br />
})();<br />
</code></p>
<p>Now what this here is gonna do is bypass that nasty lil&#8217; browser check that is currently in the first &#8220;if&#8221; statement. But once you get that done, you&#8217;re going to find that while the bookmarklet comes back to life for you, it&#8217;s still not going to work as it should. You&#8217;ll probably get a nasty console error that says something about &#8221; [href*=theme.php.css] &#8221; not being a valid statement. BLECH! No worries though. The guys over at jQuery simply forgot to put some things in quotes. that being the case, your next step is to change the line that refers to the &#8221; developertool.js.php &#8221; source to again, your own personal URL. You want to serve up your own version of that file equipped with a small edit.</p>
<p>The source for the developertool.js.php file (with the required edits) can be found <a href="http://thenerdnomad.com/wp-content/uploads/2011/04/developertool.js">here</a> (you&#8217;re welcome!). </p>
<p>Copy and paste that into your website and make it accessible. Then direct the line reading:</p>
<p><code><br />
jquitr.s.src = 'http://jqueryui.com/themeroller/developertool/developertool.js.php';<br />
</code></p>
<p>to the source of your URL. </p>
<p>Guess what? </p>
<p>You&#8217;re done now!</p>
<p>YAY!</p>
<p>Enjoy your bookmarklet again!</p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=244</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Web Project&#8230; from a general project.</title>
		<link>http://thenerdnomad.com/?p=230</link>
		<comments>http://thenerdnomad.com/?p=230#comments</comments>
		<pubDate>Wed, 02 Mar 2011 10:32:25 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=230</guid>
		<description><![CDATA[I don&#8217;t know why, but I find myself having to do this a lot. I checkout some code from SVN but the developer who set up the repository doesn&#8217;t use eclipse. He&#8217;s smart and just deploys his code to a general Tomcat instance and doesn&#8217;t have to worry about all that extra IDE hoopla. I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://thenerdnomad.com/wp-content/uploads/2011/03/Eclipse.png" rel="lightbox[230]"><img src="http://thenerdnomad.com/wp-content/uploads/2011/03/Eclipse.png" alt="" title="Eclipse" width="171" height="91" class="alignleft size-full wp-image-231" /></a>I don&#8217;t know why, but I find myself having to do this a lot. </p>
<p>I checkout some code from SVN but the developer who set up the repository doesn&#8217;t use eclipse. He&#8217;s smart and just deploys his code to a general Tomcat instance and doesn&#8217;t have to worry about all that extra IDE hoopla. </p>
<p>I&#8217;m dumb.</p>
<p>I have problems setting up my Tomcat servers and so I let Eclipse handle deployments and things for me. Plus I can&#8217;t code Java for shit and when I need to I rely very heavily on Eclipses ability to provide contextual hints on what the hell I am actually doing.</p>
<p>So when I checkout this code, I need it to be a Dynamic Web Project so that I can get all the flavors of fun I already mentioned. Here&#8217;s an article on how I actually do it:</p>
<p><a href="http://eclipse.dzone.com/tips/converting-java-project-dynami">Converting-java-project-dynamic web project!!<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=230</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This always gets me&#8230;</title>
		<link>http://thenerdnomad.com/?p=226</link>
		<comments>http://thenerdnomad.com/?p=226#comments</comments>
		<pubDate>Wed, 02 Feb 2011 20:03:24 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=226</guid>
		<description><![CDATA[When attempting to add a new tomcat server in Eclipse after having previously deleted it from the workspace, I am presented with the following error: Unable to select a server of the specific type. The solution is as follows: In order to solve the problem you need to close eclipse go to ~/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings remove the [...]]]></description>
			<content:encoded><![CDATA[<p>When attempting to add a new tomcat server in Eclipse after having previously deleted it from the workspace, I am presented with the following error:</p>
<p>Unable to select a server of the specific type.</p>
<p>The solution is as follows:</p>
<p>In order to solve the problem you need to close eclipse go to ~/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings remove the files org.eclipse.wst.server.core.prefs and org.eclipse.jst.server.tomcat.core.prefs solve the problem with the permissions of the policy files or the personal instance of tomcat6 * start eclipse</p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=226</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAXy Form Challenge</title>
		<link>http://thenerdnomad.com/?p=212</link>
		<comments>http://thenerdnomad.com/?p=212#comments</comments>
		<pubDate>Mon, 30 Aug 2010 16:20:17 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=212</guid>
		<description><![CDATA[Below is a link to a little coding challenge presented to me by a recruiter. These are always fun to do as they force me outside of my Backbase bubble.]]></description>
			<content:encoded><![CDATA[<p>Below is a link to a little coding challenge presented to me by a recruiter.<br />
These are always fun to do as they force me outside of my Backbase bubble.</p>
<p><iframe src="http://thenerdnomad.com/Experiments/AjaxyForm/funForm.html" style="height:700px;width:100%;"/></p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=212</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shadows, unmanaged gadgets, and drama…</title>
		<link>http://thenerdnomad.com/?p=156</link>
		<comments>http://thenerdnomad.com/?p=156#comments</comments>
		<pubDate>Wed, 07 Jul 2010 20:48:42 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Backbase]]></category>
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=156</guid>
		<description><![CDATA[Shadows, Portal, Unmanaged, Gadget]]></description>
			<content:encoded><![CDATA[<p><a href="http://thenerdnomad.com/wp-content/uploads/2010/07/shadow.jpeg" rel="lightbox[156]"><img src="http://thenerdnomad.com/wp-content/uploads/2010/07/shadow-300x240.jpg" alt="" title="shadow" width="300" height="240" class="alignleft size-medium wp-image-157" /></a><br />
This was a fun one to identify&#8230;<br />
I have a  use case where I need to add an &#8220;un-managed&#8221; gadget to my portal instance. For those of you not in &#8220;the know&#8221; an un-managed gadget is one that exists within the confines of you pages &#8220;script tag&#8221;, but outside of the portal itself. It will still only appear when the associated tab is selected, however the placement of the gadget is not confined to it&#8217;s respective container. </p>
<p>The little bug here is that the gadget doesn&#8217;t know what it&#8217;s settings are until the container is selected, and all the settings for said container and the gadgets that lie therein are loaded into the portal. Among the settings that are not loaded in on time are your styling settings. I tend to turn off a gadgets chrome through use of a special settings group or gadget setting that states the classname of &#8220;p-gadget-nochrome&#8221; is to be applied. Under the aforementioned condition this does not happen until the associated container is loaded. </p>
<p>Now, due to the way that shadows are rendered in the portals CSS, a shadow &#8220;layer&#8221; is added to the DOM that takes up the entire screen. This all inclusive
<div> also prevents user interaction with the portal. Meaning that you cannot get the chance to even load the portal container to set the gadgets settings accordingly. </p>
<p><b>The Solution</b></p>
<p>Simple&#8230;  Just add the classname &#8220;p-gadget-nochrome&#8221; to the unmanaged gadgets containing tag &#8220;
<div>, <span>, etc&#8221;.</p>
<p>OK all done. Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=156</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“Oh No”</title>
		<link>http://thenerdnomad.com/?p=126</link>
		<comments>http://thenerdnomad.com/?p=126#comments</comments>
		<pubDate>Wed, 30 Jun 2010 21:31:29 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Disk Warrior]]></category>
		<category><![CDATA[Hard Drive]]></category>
		<category><![CDATA[HD]]></category>
		<category><![CDATA[Macbook Pro]]></category>
		<category><![CDATA[Recovery]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=126</guid>
		<description><![CDATA[Did you fry your Macbook Pro's hard drive? 
Moron.
Well here's a little tidbit on how to get your system back together.]]></description>
			<content:encoded><![CDATA[<p><a href="http://thenerdnomad.com/wp-content/uploads/2010/06/hard-drive-flames1.jpeg" rel="lightbox[126]"><img class="alignleft size-full wp-image-130" title="hard-drive-flames" src="http://thenerdnomad.com/wp-content/uploads/2010/06/hard-drive-flames1.jpeg" alt="" width="300" height="300" /></a>Last week I almost lost my laptop.</p>
<p>Well, the physical laptop was at all times safe, however I crashed my hard drive to the point where it was unable to boot to the OS. Truth be told the fault for this was entirely my own. The endeavor began with my quest to upgrade the installed memory on the system from the factory provided 4 Gigs, to a much more beefy 8 Gigs. This upgrade was necessitated through my need to run not one, but various virtual machines at the same time. During the installation of said RAM I made the mistake of doing a hard shutdown after the system failed to enter the OS. This was what resulted in the fried hard drive. Luckily macs can be placed in hard drive &#8220;mode&#8221; which essentially turned my laptop into one big firewire drive.</p>
<p>Now with a friend boot sector, this didn&#8217;t really give me much to work with. The laptop (now essentially an external HD with a screen), wouldn&#8217;t mount and thereby was unable to provide me any real information as to the cause of the disaster. Seeing as to how ALL my data (work files, personal files, music, etc.) was on this one machine I was a little concerned. I feel I do a good job keeping the majority of sensitive information &#8220;in the cloud&#8221;. My photos are all on flickr, the majority of my iTunes Library is backed up to my desktop back in Rhode Island, and all my important code for work is backed up to the Unfuddle SVN repository. But rebuilding everything would be a bit of a pain.<br />
Enter <a title="Disk Warrior" href="http://www.alsoft.com/diskwarrior/" target="_blank">Disk Warrior</a><br />
A clever little product. Disk Warrior has magic inside it that allows it to rebuild fraked hard drives back to their previously stable state. For a mere $100.00 and 2 hours of my life I was able to rebuild my previously &#8220;bricked&#8221; mac and continue on my merry path of production. My music was still blaring, pictures still incriminating, and work still&#8230; well, <span style="font-style: italic;">there</span>. I tell this story simply to precursor the next post which will deal with my new found love of <span style="font-weight: bold;">Time Machine</span> and the process I am using to clean out my Macbook&#8217;s little 350 Gig HD.</p>
<p>Steps to fix my Hard Drive:<br />
<span style="font-weight: bold;">Step 1: Get another Mac and a firewire cable<br />
</span><br />
Your first step towards rebuilding your previously fried laptop HD is to get a donor Mac with which to fix it. The donor will run DiskWarrior and allow it to rebuild the mess you have now found yourself in.</p>
<p>Now go buy <a title="Disk Warrior" href="http://www.alsoft.com/diskwarrior/" target="_blank"><span style="font-weight: bold;">Disk Warrior</span></a>.</p>
<p>No I mean it.</p>
<p>Buy it now.</p>
<p>Bought it?</p>
<p>Good. Now install it onto your &#8220;donor&#8221; machine. Next you need a firewire cable. If you are using a pair of Macbook Pro&#8217;s (of the aluminum unibody flavor) you will need a 9 pin to 9 pin. Plug the firewire into both machines so they are connected.<br />
<span style="font-weight: bold;">Step 2: Put your &#8220;fraked&#8221; Mac in &#8220;target disk&#8221; mode</span></p>
<p>This is done by first turning the &#8220;fraked&#8221; mac off. It is probably already off seeing as to in it&#8217;s current state it is little more than a paper weight. This is done by holding the &#8220;T&#8221; key down after you turn it on and hear the &#8220;BONG&#8221; of start-up. You should now see the firewire insignia floating on your gray screen.</p>
<p><span style="font-weight: bold;">Step 3: Run Disk Warrior</span></p>
<p>Ok, now the easy part. Your &#8220;fraked&#8221; mac should now be mounted on the donor machine. You will see it appear as an external hard drive on the desktop. Now all you gotta do is load up Disk Warrior, and follow the onscreen prompts.</p>
<p>That&#8217;s it.</p>
<p>Is you computer back?</p>
<p>Good I thought so.</p>
<p>Make checks payable to &#8220;Jonathan Wright&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=126</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Needs me some custom buttons…</title>
		<link>http://thenerdnomad.com/?p=81</link>
		<comments>http://thenerdnomad.com/?p=81#comments</comments>
		<pubDate>Mon, 21 Jun 2010 23:31:02 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Backbase]]></category>
		<category><![CDATA[thumbnail:profile.png]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=81</guid>
		<description><![CDATA[Adding custom buttons to the BB Portal Chrome seems like it would be straightforward... but it's not documented anywhere yet. The following article will show how you too can add custom buttons to your gadgets chrome!]]></description>
			<content:encoded><![CDATA[<p><a href="http://thenerdnomad.com/wp-content/uploads/2010/06/Screen-shot-2010-06-21-at-4.28.59-PM.png" rel="lightbox[81]"><img src="http://thenerdnomad.com/wp-content/uploads/2010/06/Screen-shot-2010-06-21-at-4.28.59-PM.png" alt="" title="Gadget Chrome Icon (custom)" width="271" height="48" class="alignleft size-full wp-image-87" /></a></p>
<p>Portal is a fun beast.</p>
<p>I mean for all it&#8217;s awesomeness, there are still a few seemingly simple tasks that can prove a tad&#8230;.&#8221;interesting&#8221; to accomplish. This morning I was greeted to an email request from a client asking how one would go about applying a custom icon to the &#8220;chrome&#8221; of a portal gadget. As it stands, our gadgets are equipped with several interactive icons for controlling it&#8217;s state (minimize, maximize, refresh, close, edit preferences, and restore). Adding yet another button to that list HAS to be straightforward no? Turns out while it wasn&#8217;t terribly intrusive, it is  one of those tasks that has not yet made it into the BB Portal documentation. The following article will outline the steps taken in making the &#8220;custom button&#8221; requirement a reality.</p>
<p>Before we begin you should understand is that the developers over in Amsterdam have taken great pains to ensure that almost every aspect of the BB portal is as open and flexible as possible. Given the extent of what you can actually DO with portal, the documentation of these efforts requires almost as much manpower as their actual development; an area that we have so far been unable to devote the required small army of writers to. Therefore it is up to us&#8230; the few, the proud, the geeky, to assist one another in our respective efforts. So onto the fun stuff.</p>
<p>So here&#8217;s what you need to <strong>REALLY</strong> know. For starters there are <strong>2</strong> use cases that can crop up. The first entails equipping your gadgets with a new GLOBAL icon (ie. one that can be applied to any gadget regardless of type). By design these &#8220;core&#8221; gadget icons are hardcoded into the gadget and portal definitions.</p>
<p>It all starts with the portal setting titled &#8220;gadgetWindowButtons&#8221;. This portal setting is a comma delimitated string of name/value pairs that indicates what buttons even exist for the portal gadget chrome. Out of the box this setting is written as follows:</p>
<p>unload;Close,maximize;Maximize,restore;Restore,minimize;Minimize,showPreferences;Edit preferences,hidePreferences;Close preferences,refresh;Refresh</p>
<p>This string is dynamically parsed and used to add our icons to the gadget chrome in the reverse order in which they are written here. This means that the Refresh icon is the leftmost icon, and the close icon is the rightmost. For the sake of our experiment we will add our new icon &#8220;notify&#8221; right after the &#8220;preferences&#8221; icon.</p>
<p>unload;Close,maximize;Maximize,restore;Restore,minimize;Minimize,notify;Notification On,no-notify;Notification Off,showPreferences;Edit preferences,hidePreferences;Close preferences,refresh;Refresh</p>
<p>You should now go into the portal admin page, and hit up the &#8220;Setting Groups&#8221; page and edit the &#8220;portal_settings&#8221; settings group as this will undoubtedly be the portal settings group you are using. Once inside you should add the &#8220;gadgetWindowButtons&#8221; setting as it is not by default available!</p>
<p>You should know that the first value in the name/value pairs refers to the CSS classname of the icon, and the detailed value of the &#8220;buttonClick&#8221; even that is fired when the user clicks on the icon. The &#8220;value&#8221; of the name/value pairing refers to the tooltip text content presented to the user when she hovers OVER the icon. Also notice that BOTH states for the icon are defined here, since there will be a notification on AND a notification off icon for the gadget.</p>
<p>&#8220;Wait&#8230; what is this &#8216;buttonClick&#8217; event nonsense that you just mentioned?&#8221;. Well grasshopper, the inner workings of the gadget code ensure that each button icon that is added fires a &#8220;buttonClicked&#8221; event. This you will note is NOT a standard DOM level event. It is instead a custom event that is only recognizable by the portal itself. When this event is created, a &#8220;details&#8221; object is appended to the &#8220;event&#8221; object that gets triggered. This details object is a string indicating what icon was clicked.</p>
<p>Now comes the fun part. That is creating the function that is triggered by that event. Here is where we need to dip into the file &#8220;portal.customize.xml&#8221;. This file SHOULD exist under WebContent/demo/bindings. If you don&#8217;t have this file, look in the portal_demo WAR file that came with your installation, it lives there.</p>
<p>The purpose of portal.customize.xml is to do just that, CUSTOMIZE the portal by extending it&#8217;s various components. Now the details of how this is done are a weee bit outside the scope of this article, and as such I suggest that you get yourself familiar with the Backbase Frameworks documentation to understand the structure of BB components. A quick look at this code shows an XML node titled  with a name atttribute of &#8220;gadgetWindow&#8221; this is what we care about. It is within this block that we will extend our gadget window to correctly handle our newly created icon.</p>
<pre class="xml">
<span class="xmlTag">&lt;d:element name=<span class="xmlString">&quot;gadgetWindow&quot;</span> extends=<span class="xmlString">&quot;p:gadgetWindow&quot;</span>&gt;</span>
			<span class="xmlTag"><span class="xmlComment">&lt;!-- Store your button styling here --&gt;</span></span>
			<span class="xmlTag">&lt;d:resource type=<span class="xmlString">&quot;text/css&quot;</span>&gt;</span>
				&lt;![CDATA[
					.p-gadget-button-notify{
						background-image:url(<span class="xmlString">&quot;../../demo/themes/default/media/gadgetWindow-buttons.png&quot;</span>);
						background-position:<span class="xmlNumber">-80</span>px 0;
					}
				]]&gt;
			<span class="xmlTag">&lt;/d:resource&gt;</span>
			<span class="xmlTag"><span class="xmlComment">&lt;!-- The method to be called when your button is pressed --&gt;</span></span>
			<span class="xmlTag">&lt;d:method name=<span class="xmlString">&quot;alertMe&quot;</span>&gt;</span>
				<span class="xmlTag">&lt;d:body type=<span class="xmlString">&quot;application/javascript&quot;</span>&gt;</span>
					&lt;![CDATA[
						console.log(&#038;<span class="xmlNumber">#03</span>9;Alerted&#038;<span class="xmlNumber">#03</span>9;);
					]]&gt;
				<span class="xmlTag">&lt;/d:body&gt;</span>
			<span class="xmlTag">&lt;/d:method&gt;</span>
			<span class="xmlTag"><span class="xmlComment">&lt;!-- Add your button event handler here. --&gt;</span></span>
			<span class="xmlTag">&lt;d:handler event=<span class="xmlString">&quot;buttonClick&quot;</span> type=<span class="xmlString">&quot;application/javascript&quot;</span>&gt;</span>
				&lt;![CDATA[
					switch (event.detail) {
						case <span class="xmlString">&quot;notify&quot;</span>:
						    this.alertMe();
						    break;
						default:
					}
				]]&gt;
			<span class="xmlTag">&lt;/d:handler&gt;</span>
			<span class="xmlTag">&lt;d:handler event=<span class="xmlString">&quot;beforeload&quot;</span> type=<span class="xmlString">&quot;application/javascript&quot;</span>&gt;</span>
				&lt;![CDATA[
					if (!this.getSetting(<span class="xmlString">&quot;notify&quot;</span>, <span class="xmlString">&quot;boolean&quot;</span>)) { ((bb.selector.query(this.viewNode, <span class="xmlString">&quot;.p-gadget-button-notify&quot;</span>) ||<span class="xmlNumber"> 0)</span>.style ||<span class="xmlNumber"> 0)</span>.display = <span class="xmlString">&quot;none&quot;</span>;
					}
				]]&gt;
			<span class="xmlTag">&lt;/d:handler&gt;</span>
			<span class="xmlTag">&lt;d:handler event=<span class="xmlString">&quot;beforeunload&quot;</span> type=<span class="xmlString">&quot;application/javascript&quot;</span>&gt;</span><span class="xmlText"></span>&lt;![CDATA[
				if (!this.confirmed &amp;&amp; this != demo.dialog) {
					var that=this;
					demo.showDialog(&#038;<span class="xmlNumber">#03</span>9;Close Gadget&#038;<span class="xmlNumber">#03</span>9;, demo.dialogs.closeGadget, function() {
						that.confirmed = true;
						that.unload();
					});
					event.preventDefault();
				}
			]]&gt;<span class="xmlText"></span><span class="xmlTag">&lt;/d:handler&gt;</span>
		<span class="xmlTag">&lt;/d:element&gt;</span>
</pre>
<p>So here are the important parts. First, there is a resource tag of type &#8220;text/css&#8221;. This little diddy is where you place the styling for your newly created button. Mind you you need to add 2 classes for each icon, the first is default state, the second is the hover state. The names for those CSS classes are &#8220;.p-gadget-button-[BUTTON NAME]&#8221; and &#8220;.p-gadget-button-[BUTTON NAME]-hover&#8221;. </p>
<p><bold>NOTE: The location of CSS sprites in the url or src fields is in relation to the portal.customize.xml file, not the root of the application!</bold></p>
<p>Next up is the method tag. This is the function that will be called when you actually press the gadget button. It&#8217;s name should match that of your button although as you will soon see it does not have to. Within this method, you have complete access to the gadget whose button has been pressed, meaning that you can alter your gadget and it&#8217;s contents in any way that you see fit. </p>
<p>The final required component you will see is the &#8220;buttonClick&#8221; event handler. Here we have a switch statement that is triggered on the &#8220;event.detail&#8221; object. Simply add your gadget button name as a case and then fire the method that you want triggered when the button is pressed (see why the name of the method didn&#8217;t really matter?).  And there you have it.. all done. You should now see your lil gadget and be happy. </p>
<p>But what about that lil &#8220;beforeload&#8221; event handler? Ooooooo your an observant one! Well my friend, we may want to give the portal administrator the ability to hide this newly created button on certain gadgets so that they don&#8217;t ALL have the ability to &#8220;notify&#8221; the user that their button has been pressed (although I couldn&#8217;t possible see why not!). Once added, the user can create a gadget setting group with a setting whose name is the same as that of our little gadget chrome button, and a boolean value to indicate whether that gadget shows the chrome button or not. </p>
<p>I hope this helps everyone. It took me about an hour to muddle through the BB portal code and identify how all this stuff fit together, so hopefully it saves you the same amount of time. Till the next post&#8230;. be good and happy coding.</p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=81</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Music Wednesday!!</title>
		<link>http://thenerdnomad.com/?p=55</link>
		<comments>http://thenerdnomad.com/?p=55#comments</comments>
		<pubDate>Wed, 24 Jun 2009 17:54:24 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=55</guid>
		<description><![CDATA[New Music Wednesday! 
Want some new music? Think you can tollerate my tastes? 
Click HERE!]]></description>
			<content:encoded><![CDATA[<p>OK everyone, I am now adding stuff to the blog that extends outside of the boring technical snoozefest you&#8217;re used to. Something close to my heart, music!  There&#8217;s nothing better than coming across a new tune, looking up the artists history, and finding a world of new stuff to listen to. This week I&#8217;m introducing 6 songs that have acquired heavy rotation in iTunes.</p>
<p><strong>Mr. Hudson &amp; The Library</strong></p>
<p>OK I don&#8217;t know much about these guys. I came across Mr. Hudson while listening to a Kanye Mix-Tape that featured his vocals on a song whose name I can&#8217;t remember. Anywho, this song in particular really stuck out to me. I&#8217;m a sucker for some solo piano or guitar and this melody is just really empassionate.</p>
<p><code></code></p>
<p><strong>The Chalets</strong></p>
<p>I downloaded a colleagues  hard drive and this song was on it. While on &#8220;repeat&#8221; iTunes hit it and the beat caught me before my fingers could get to the &#8220;next track&#8221; hotkey. Give em a listen, I think they rock out pretty nicely.</p>
<p><code></code></p>
<p><strong>Passion Pit</strong></p>
<p>Last entry in the &#8220;alternative&#8221; classification. I  came across these guys as a suggestion from John Mayer per his blog. Yes I read John Mayer&#8217;s blog. He&#8217;s documenting the creation of his next album and I am amped to hear how the track go from concept to reality. Anywho, this is a great summer tune and I think you may enjoy it.</p>
<p><code></code></p>
<p><strong>Asher Roth</strong></p>
<p>First up on the hip-hop / R&amp;B section (we should just be honest and call it the &#8220;Black Music&#8221; section) Asher Roth. Native philly cat, more known for the &#8220;I love college&#8221; song. Give the guys album a listen. It&#8217;s a little collegy, filled with garage band beats and raw precussion samples. But the tunes are funny an this one in particular (lions roar) will get you moving dat ass!</p>
<p><code></code></p>
<p><strong>Teairra Mari</strong></p>
<p>I realize that this is a stupidly spelled first name. But this beat is sick. Getting tired of writing here so bear (bare, baer?) with me as I wrap this post up&#8230;</p>
<p><code></code></p>
<p><strong>Ginuwine</strong></p>
<p>Another stupidly spelt name. Ginuwine&#8217;s back with a new disc that I am really feeling. Strangely enough, without knowing that this album was being released that day, I started Tuesday morning listening to one of my favorite &#8220;Grown Man&#8221; track &#8220;There it is&#8221;. I love songs that basically say &#8220;I&#8217;m a grown man, I paid for this, This mine!&#8221;. This track here &#8220;Show Off&#8221; is bumping stoopid hard. I can&#8217;t wait to get back to the states and blast it out the car stereo speakers! You&#8217;ll understand after you listen to it. And for the single ladies out there, this has ANTHEM written all over it.</p>
<p><code></code></p>
<p>Ok, there it is folks. Your first new music Wednesday. Hopefully someone will release something worth talking about for next week!</p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=55</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple solutions to annoying problems…</title>
		<link>http://thenerdnomad.com/?p=46</link>
		<comments>http://thenerdnomad.com/?p=46#comments</comments>
		<pubDate>Mon, 22 Jun 2009 17:06:00 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Java 1.6]]></category>
		<category><![CDATA[JRE 1.6]]></category>
		<category><![CDATA[Tomcat 6]]></category>

		<guid isPermaLink="false">http://thenerdnomad.com/?p=46</guid>
		<description><![CDATA[Issue: Getting Tomcat 6 to run on JRE 1.6 Solution: Google-ing this issue brings up a whole host of tedious and complex threads that go in depth about why this doesn&#8217;t usually work. Me, I don&#8217;t really care WHY it doesn&#8217;t work, but rather how I can get my machine to make it work. The [...]]]></description>
			<content:encoded><![CDATA[<p>Issue: Getting Tomcat 6 to run on JRE 1.6</p>
<p>Solution: Google-ing this issue brings up a whole host of tedious and complex threads that go in depth about why this doesn&#8217;t usually work. Me, I don&#8217;t really care WHY it doesn&#8217;t work, but rather how I can get my machine to make it work. The solution is to locate the file:</p>
<p>msvcr71.dll</p>
<p>some posts have this file labeled as</p>
<p>msvcr711.dll</p>
<p>whatever, either should be fine. This file is located in you java 1.6 installation.</p>
<p>C:\Program Files\Java\jre6\bin</p>
<p>or if you installed the entire jdk</p>
<p>C:\Program Files\Java\jdk1.6.0_14\bin</p>
<p>OK, take this file and copy it into your tomcat instance. For me this was:</p>
<p>C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin</p>
<p>Basically wherever you can find the executable Tomcat6w.exe.</p>
<p>That&#8217;s it. No more searching. No more trying to decipher what all these smarty pants are trying to say. It&#8217;s just that easy!</p>
]]></content:encoded>
			<wfw:commentRss>http://thenerdnomad.com/?feed=rss2&#038;p=46</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

