<?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>Mischiefblog</title>
	<atom:link href="http://www.mischiefblog.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.mischiefblog.com</link>
	<description>I WATN 2 MAEK GAEM!</description>
	<lastBuildDate>Mon, 14 Jun 2010 18:48:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Four out of the box ideas for work</title>
		<link>http://www.mischiefblog.com/?p=898</link>
		<comments>http://www.mischiefblog.com/?p=898#comments</comments>
		<pubDate>Mon, 14 Jun 2010 18:48:58 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=898</guid>
		<description><![CDATA[1. Use improv the illustrate process descriptions. You&#8217;ll be able to see and understand the process in a different way and can help identify errors and bottlenecks before going too deep into design. 
2. Hire an artist to capture requirements and planning meetings. Artists interpret and capture meaning, unlike photographs. 
3. Put a big HDTV [...]]]></description>
			<content:encoded><![CDATA[<p>1. Use improv the illustrate process descriptions. You&#8217;ll be able to see and understand the process in a different way and can help identify errors and bottlenecks before going too deep into design. </p>
<p>2. Hire an artist to capture requirements and planning meetings. Artists interpret and capture meaning, unlike photographs. </p>
<p>3. Put a big HDTV in the team space for planning, tracking, and visualizing burndown, etc. </p>
<p>4. Extreme interviewing:  bring in multiple candidates and make them work together. See if they have good kindergarten skills and if they will have the right team motivation and instincts to work with your current team. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=898</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plug-in architectures in Java</title>
		<link>http://www.mischiefblog.com/?p=886</link>
		<comments>http://www.mischiefblog.com/?p=886#comments</comments>
		<pubDate>Mon, 15 Mar 2010 00:56:29 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=886</guid>
		<description><![CDATA[An off-hand discussion at work (&#8220;This application is being used by more groups now . . . wouldn&#8217;t it be cool to make it so they can develop independently?&#8221;) led to me looking into Java classloaders this weekend.  Here&#8217;s the core for an application that&#8217;s treated like a bus in that it looks to [...]]]></description>
			<content:encoded><![CDATA[<p>An off-hand discussion at work (&#8220;This application is being used by more groups now . . . wouldn&#8217;t it be cool to make it so they can develop independently?&#8221;) led to me looking into Java classloaders this weekend.  Here&#8217;s the core for an application that&#8217;s treated like a bus in that it looks to see what&#8217;s plugged into it and provides communications (context) to each plug-in.<br />
<span id="more-886"></span><br />
<code><br />
<!-- = Java Sourcecode to HTML automatically converted code = --><!-- =   Java2Html Converter 5.0 [2006-03-04] by Markus Gebhard  markus@jave.de   = --><!-- =     Further information: http://www.java2html.de     = -->
<div align="left" class="java">
<table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
<tr>
  <!-- start source code --></p>
<td nowrap="nowrap" valign="top" align="left">
    <code><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">audit</font><font color="#000000">()&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;get&nbsp;the&nbsp;plugin&nbsp;JARs</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">File&nbsp;basedir&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">File</font><font color="#000000">(</font><font color="#000000">System.getProperty</font><font color="#000000">(</font><font color="#2a00ff">&#34;user.dir&#34;</font><font color="#000000">)&nbsp;</font><font color="#000000">+&nbsp;File.separator&nbsp;+&nbsp;</font><font color="#2a00ff">&#34;dynamic&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">System.err.println</font><font color="#000000">(</font><font color="#2a00ff">&#34;Searching&nbsp;&#34;&nbsp;</font><font color="#000000">+&nbsp;basedir&nbsp;+&nbsp;</font><font color="#2a00ff">&#34;&nbsp;for&nbsp;pluggable&nbsp;JARs&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">basedir.isDirectory</font><font color="#000000">()&nbsp;</font><font color="#000000">&amp;&amp;&nbsp;basedir.canRead</font><font color="#000000">())&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;get&nbsp;a&nbsp;list&nbsp;of&nbsp;jar&nbsp;files</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">String&nbsp;</font><font color="#000000">[]&nbsp;</font><font color="#000000">jars&nbsp;=&nbsp;basedir.list</font><font color="#000000">(</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">FilenameFilter</font><font color="#000000">()&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;</b></font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">accept</font><font color="#000000">(</font><font color="#000000">File&nbsp;file,&nbsp;String&nbsp;s</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">s.endsWith</font><font color="#000000">(</font><font color="#2a00ff">&#34;.jar&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">})</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">URL&nbsp;</font><font color="#000000">[]&nbsp;</font><font color="#000000">urlJars&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">URL</font><font color="#000000">[</font><font color="#000000">jars.length</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">List&lt;String&gt;&nbsp;initializers&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">ArrayList&lt;String&gt;</font><font color="#000000">(</font><font color="#000000">jars.length</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">i&nbsp;=&nbsp;</font><font color="#990000">0</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>for&nbsp;</b></font><font color="#000000">(</font><font color="#000000">String&nbsp;jar&nbsp;:&nbsp;jars</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">String&nbsp;jarpath&nbsp;=&nbsp;basedir.getAbsolutePath</font><font color="#000000">()&nbsp;</font><font color="#000000">+&nbsp;File.separator&nbsp;+&nbsp;jar;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;get&nbsp;the&nbsp;plug-in&nbsp;entry&nbsp;point&nbsp;from&nbsp;the&nbsp;jar</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">File&nbsp;jarfile&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">File</font><font color="#000000">(</font><font color="#000000">jarpath</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">jarfile.canRead</font><font color="#000000">())&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;read&nbsp;the&nbsp;pluggable&nbsp;manifest</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">JarFile&nbsp;jf&nbsp;=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>try&nbsp;</b></font><font color="#000000">{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">jf&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">JarFile</font><font color="#000000">(</font><font color="#000000">jarpath</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">JarEntry&nbsp;entry&nbsp;=&nbsp;jf.getJarEntry</font><font color="#000000">(</font><font color="#2a00ff">&#34;pluggable.txt&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">entry&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;manifest&nbsp;file&nbsp;found</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">BufferedInputStream&nbsp;bis&nbsp;=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">String&nbsp;plugin&nbsp;=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>try&nbsp;</b></font><font color="#000000">{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">bis&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">BufferedInputStream</font><font color="#000000">(</font><font color="#000000">jf.getInputStream</font><font color="#000000">(</font><font color="#000000">jf.getEntry</font><font color="#000000">(</font><font color="#2a00ff">&#34;pluggable.txt&#34;</font><font color="#000000">)))</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;todo&nbsp;should&nbsp;make&nbsp;sure&nbsp;bytes&nbsp;are&nbsp;available...</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>byte&nbsp;</b></font><font color="#000000">[]&nbsp;</font><font color="#000000">inBuf&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#7f0055"><b>byte</b></font><font color="#000000">[</font><font color="#990000">1024</font><font color="#000000">]</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;should&nbsp;be&nbsp;short:&nbsp;&nbsp;one&nbsp;line,&nbsp;pointing&nbsp;to&nbsp;a&nbsp;single&nbsp;class</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">bis.read</font><font color="#000000">(</font><font color="#000000">inBuf</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;todo&nbsp;validate&nbsp;plug-in&nbsp;class</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">plugin&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">String</font><font color="#000000">(</font><font color="#000000">inBuf</font><font color="#000000">)</font><font color="#000000">.trim</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">plugin.length</font><font color="#000000">()&nbsp;</font><font color="#000000">&lt;&nbsp;</font><font color="#990000">1</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">System.err.println</font><font color="#000000">(</font><font color="#2a00ff">&#34;Plug-in&nbsp;class&nbsp;name&nbsp;not&nbsp;found&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">plugin&nbsp;=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>else&nbsp;if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">initializers.contains</font><font color="#000000">(</font><font color="#000000">plugin</font><font color="#000000">))&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">System.err.println</font><font color="#000000">(</font><font color="#2a00ff">&#34;Duplicate&nbsp;plug-in&nbsp;class&nbsp;name&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">plugin&nbsp;=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">IOException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;couldn't&nbsp;open&nbsp;plug-in&nbsp;manifest</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">e.printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>finally&nbsp;</b></font><font color="#000000">{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">bis&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>try&nbsp;</b></font><font color="#000000">{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">bis.close</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">IOException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;do&nbsp;nothing</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;only&nbsp;use&nbsp;the&nbsp;jar&nbsp;if&nbsp;the&nbsp;plug-in&nbsp;has&nbsp;a&nbsp;manifest&nbsp;class</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">plugin&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>try&nbsp;</b></font><font color="#000000">{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">urlJars</font><font color="#000000">[</font><font color="#000000">i++</font><font color="#000000">]&nbsp;</font><font color="#000000">=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">URL</font><font color="#000000">(</font><font color="#2a00ff">&#34;file:///&#34;&nbsp;</font><font color="#000000">+&nbsp;jarpath</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initializers.add</font><font color="#000000">(</font><font color="#000000">plugin</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">MalformedURLException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">e.printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">IOException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;couldn't&nbsp;open&nbsp;jar&nbsp;file</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">e.printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>finally&nbsp;</b></font><font color="#000000">{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">jf&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>try&nbsp;</b></font><font color="#000000">{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">jf.close</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">IOException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;do&nbsp;nothing</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;load&nbsp;the&nbsp;pluggables</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">ClassLoader&nbsp;loader&nbsp;=&nbsp;URLClassLoader.newInstance</font><font color="#000000">(</font><font color="#000000">urlJars</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;load&nbsp;each&nbsp;pluggable&nbsp;initializer</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>for&nbsp;</b></font><font color="#000000">(</font><font color="#000000">String&nbsp;pluggableClass&nbsp;:&nbsp;initializers</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>try&nbsp;</b></font><font color="#000000">{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;load&nbsp;the&nbsp;pluggable&nbsp;class</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">Class&nbsp;clz&nbsp;=&nbsp;loader.loadClass</font><font color="#000000">(</font><font color="#000000">pluggableClass</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">Pluggable&nbsp;pluggable&nbsp;=&nbsp;</font><font color="#000000">(</font><font color="#000000">Pluggable</font><font color="#000000">)</font><font color="#000000">clz.newInstance</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;initialize&nbsp;the&nbsp;plug-in</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">Method&nbsp;method&nbsp;=&nbsp;clz.getMethod</font><font color="#000000">(</font><font color="#2a00ff">&#34;initializePlugin&#34;</font><font color="#000000">,&nbsp;PluggableContext.</font><font color="#7f0055"><b>class</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">method.invoke</font><font color="#000000">(</font><font color="#000000">pluggable,&nbsp;context</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">ClassNotFoundException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">e.printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">NoSuchMethodException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">e.printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">InstantiationException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">e.printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">IllegalAccessException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">e.printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>catch&nbsp;</b></font><font color="#000000">(</font><font color="#000000">InvocationTargetException&nbsp;e</font><font color="#000000">)&nbsp;{</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">e.printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font></code></p>
</td>
<p>  <!-- end source code --><br />
   </tr>
<p>  <!-- start Java2Html link --></p>
<tr>
<td align="right">
<small><br />
<a href="http://www.java2html.de" target="_blank">Java2html</a><br />
</small>
    </td>
</tr>
<p>  <!-- end Java2Html link --><br />
</table>
</div>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=886</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be your low Gearscore tank tonight</title>
		<link>http://www.mischiefblog.com/?p=883</link>
		<comments>http://www.mischiefblog.com/?p=883#comments</comments>
		<pubDate>Mon, 15 Feb 2010 06:22:18 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=883</guid>
		<description><![CDATA[I just got done running my second Heroic on Kadee, my much neglected Paladin:  Violet Hold and Halls of Stone.  Blizzard isn&#8217;t do a great job doing gearscore matching, though:

Thanks to the group that stuck with me through it.  I didn&#8217;t die, but I can&#8217;t say the same for the other melee [...]]]></description>
			<content:encoded><![CDATA[<p>I just got done running my second Heroic on Kadee, my much neglected Paladin:  Violet Hold and Halls of Stone.  Blizzard isn&#8217;t do a great job doing gearscore matching, though:</p>
<p><a href="http://www.mischiefblog.com/uploads/2010/02/low_gearscore.png"><img src="http://www.mischiefblog.com/uploads/2010/02/low_gearscore.png" alt="" title="low_gearscore" width="453" height="700" class="aligncenter size-full wp-image-884" /></a></p>
<p>Thanks to the group that stuck with me through it.  I didn&#8217;t die, but I can&#8217;t say the same for the other melee DPS in the group.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=883</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Halls of Reflection (Heroic) tax</title>
		<link>http://www.mischiefblog.com/?p=879</link>
		<comments>http://www.mischiefblog.com/?p=879#comments</comments>
		<pubDate>Mon, 28 Dec 2009 04:54:41 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=879</guid>
		<description><![CDATA[After my, what, 30th wipe in Halls of Reflection Heroic, this time to a tank that wouldn&#8217;t pull waves back to the group but kept trying to fight on the altar, finally keeping Falric out of my healing range after I was feared in the opposite direction, I&#8217;m convinced Halls of Reflection is actually a [...]]]></description>
			<content:encoded><![CDATA[<p>After my, what, 30th wipe in Halls of Reflection Heroic, this time to a tank that wouldn&#8217;t pull waves back to the group but kept trying to fight on the altar, finally keeping Falric out of my healing range after I was feared in the opposite direction, I&#8217;m convinced Halls of Reflection is actually a gold tax on people using the random group tool.</p>
<p>I&#8217;ve run it <a href="http://www.pugchecker.com/index.php?name=Foulpaw&#038;server=Kirin+Tor-US" target="_blank">successfully</a> despite a lot of bad <abbr title="Pick Up Group">pug</abbr>s but I much prefer doing it with a guild group.  Becky saw how bad it was on normal mode today when she ran it with one of her Hunters.  By comparison, Forge of Souls and Pit of Saron are cakewalks.</p>
<p>Maybe it&#8217;s because Halls of Reflection is a healing test, or maybe it&#8217;s because most pugs can&#8217;t seem to assist.  When I ran it earlier today on Normal mode, I made sure everyone knew to assist off the main tank (a mediocre Death Knight, but it&#8217;s tough to be a good DK tank).  At the least, a successful HoR group can pull 3k DPS per character, minus the healer and maybe the tank &#8212; any less and I&#8217;m out of mana or dead before I can keep the group&#8217;s health up.  I feel like HoR was really built around the Holy Priest, even more so than the Tribunal encounter in Halls of Stone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=879</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oculus with four dragons, dismounted healer</title>
		<link>http://www.mischiefblog.com/?p=876</link>
		<comments>http://www.mischiefblog.com/?p=876#comments</comments>
		<pubDate>Sun, 27 Dec 2009 20:00:22 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=876</guid>
		<description><![CDATA[So we ran heroic Oculus with a dismounted healer (me) today.  It was unintentional:  I got knocked down early and landed on Treasure Island safely, where I healed myself up and started healing the other drakes.  It was much easier to keep the rest of the group up as a T9 Tree [...]]]></description>
			<content:encoded><![CDATA[<p>So we ran heroic Oculus with a dismounted healer (me) today.  It was unintentional:  I got knocked down early and landed on Treasure Island safely, where I healed myself up and started healing the other drakes.  It was much easier to keep the rest of the group up as a T9 Tree than it was on a green drake.  We won with only one other player getting dismounted.</p>
<p><i>Edit:</i> My second Oculus of the day disbanded before I could pick up a drake.  I replaced a healer who quit after a wipe on Eregos:  people are still convinced this is <i>hard</i>, which just goes to show they never tried it before 3.3 nerfed him.  Amber Void, Emerald Void, and Ruby Void are much more attainable now than they were a month ago. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=876</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The inevitable decline in HPS</title>
		<link>http://www.mischiefblog.com/?p=874</link>
		<comments>http://www.mischiefblog.com/?p=874#comments</comments>
		<pubDate>Sat, 26 Dec 2009 23:05:46 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=874</guid>
		<description><![CDATA[I&#8217;ve been running a lot of random heroics (10-15 a day on weekends &#8212; I&#8217;m putting together two sets of T9+) and have noticed that as the other players gear up, my HPS has done down faster than my Healing Spellpower has gone up.
In my last run, for instance, I got 1744.7 HPS for a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been running a <i>lot</i> of random heroics (10-15 a day on weekends &#8212; I&#8217;m putting together two sets of T9+) and have noticed that as the other players gear up, my <abbr title="Heals Per Second">HPS has done down faster than my Healing Spellpower has gone up.</p>
<p>In my last run, for instance, I got 1744.7 HPS for a total of 1,485,319 points of healing on a Halls of Lightning run.  Two weeks ago, my HPS would have been closer to 2200 and I would have had to heal nearly 2 million points.  At the same time, my overhealing has slightly declined (I&#8217;m better about only renewing HOTs when needed), and accounted for more potential healing than healing performed.  Blame the Warlock or blame the HOts, the fact is that other players require less healing as they gear into Tier 9.</p>
<table>
<tr>
<th>Role</th>
<th>DPS</th>
<th>Healing Taken</th>
<th>Gear Score</th>
</tr>
<tr>
<td>Tank (Warrior)</td>
<td>1485.4</td>
<td>923,697</td>
<td>4473</td>
</tr>
<tr>
<td>DPS (Ret Pally)</td>
<td>2712.2</td>
<td>320,807</td>
<td>4850</td>
</tr>
<tr>
<td>DPS (Destro Warlock)</td>
<td>2479.7</td>
<td>265,365</td>
<td>4803</td>
</tr>
<tr>
<td>DPS (Enh Shaman)</td>
<td>3031.3</td>
<td>157,341</td>
<td>4850</td>
</tr>
<tr>
<td>Healer (Resto Druid)</td>
<td></td>
<td>125,574</td>
<td>4629</td>
</tr>
</table>
<p>At this time, I only start finding my maximum HPS on raids where the entire group takes damage as once.</p>
<p>Examining the heal values themselves helps to show how overhealing occurs (ignoring crits):</p>
<ul>
<li>Rejuvenation:  2001 per tick</li>
<li>Regrowth:  4600 hit, 1095 per tick</li>
<li>Lifebloom:  843 tick average, 1487 max tick; 2529 hit average, 8830 hit maximum</li>
<li>Nourish:  6409 average</li>
<li>Living Seed:  2598 average</li>
<li>Wild Growth:  770 average per tick</li>
<li>Glyph of Rejuvenation:  1175 average per tick</li>
</ul>
<p>So as my healing spellpower has gone up from 2000 to 2500, my HPS has gone down from 2200 to 1700 because other players are better geared.</abbr></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=874</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>G13 WoW UI layout</title>
		<link>http://www.mischiefblog.com/?p=870</link>
		<comments>http://www.mischiefblog.com/?p=870#comments</comments>
		<pubDate>Sat, 26 Dec 2009 05:42:13 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=870</guid>
		<description><![CDATA[Here&#8217;s my updated UI for World of Warcraft.

Buttons are laid out to match the Logitech G13 &#8212; the exact choice for each button is still being tweaked, but it&#8217;s pretty close to done.  Main chat and Grid are next to each other to watch player health, discussion, and DBM warnings in the chat log.
Tanking [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s my updated UI for World of Warcraft.</p>
<p><a href="http://www.mischiefblog.com/uploads/2009/12/WoWScrnShot_122509_204418.jpg"><img src="http://www.mischiefblog.com/uploads/2009/12/WoWScrnShot_122509_204418-300x187.jpg" alt="" title="Pit of Saron (Heroic)" width="300" height="187" class="aligncenter size-medium wp-image-871" /></a></p>
<p>Buttons are laid out to match the Logitech G13 &#8212; the exact choice for each button is still being tweaked, but it&#8217;s pretty close to done.  Main chat and Grid are next to each other to watch player health, discussion, and DBM warnings in the chat log.</p>
<p>Tanking is done using the same UI with different buttons (replacing the set by virtue of the extra bar groups with multiple talent specs).</p>
<p><span id="more-870"></span><br />
Addons:
<ul>
<li>Recount</li>
<li>Bartender4 (no reason not to use Dominos)</li>
<li>IceHud</li>
<li>Mik&#8217;s Scrolling Battle Text</li>
<li>Buffalo 3</li>
<li>Grid</li>
<li>Clique</li>
<li>Omen</li>
<li>Atlas</li>
<li>AtlasLoot Enhanced</li>
<li>CT Expense History</li>
<li>CT Mail Mod</li>
<li>CT Map Mod</li>
<li>Bagnon</li>
<li>Auctioneer Suite</li>
<li>oRA2</li>
<li>Deadly Boss Mods</li>
<li>Obituary</li>
<li>RatingBuster</li>
<li>Gearscore</li>
<li>Acki&#8217;s Recipe List</li>
<li>Lil&#8217; Sparky&#8217;s Workshop</li>
<li>GuildGreet</li>
<li>Viewport</li>
</ul>
<p>I haven&#8217;t bothered to deactivate the Blizzard target and group yet.  The group window marks the assigned tank in Random PUG mode.</p>
<p>I also use a macro to relocate and resize the Objectives window.<br />
<code><br />
/run WatchFrame:ClearAllPoints()WatchFrame:SetPoint("TOPLEFT", "UIParent", "TOPLEFT", 1100,-250)WatchFrame:SetHeight(475)WatchFrame.ClearAllPoints = function() end WatchFrame.SetPoint = function() end WatchFrame.SetAllPoints = function() end<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=870</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WoW patch 3.3&#8217;s impact</title>
		<link>http://www.mischiefblog.com/?p=865</link>
		<comments>http://www.mischiefblog.com/?p=865#comments</comments>
		<pubDate>Tue, 08 Dec 2009 15:09:16 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=865</guid>
		<description><![CDATA[In World of Warcraft, I&#8217;m playing one of two roles lately:  tank and healer.  Patch 3.3 has been released and here are the big impacts on those roles:

Classes: General

Area-of-Effect Damage Caps: We’ve redesigned the way area damage is capped when hitting many targets. Instead of a hard cap on total damage done, the [...]]]></description>
			<content:encoded><![CDATA[<p>In World of Warcraft, I&#8217;m playing one of two roles lately:  tank and healer.  Patch 3.3 has been released and here are the big impacts on those roles:</p>
<blockquote><p>
Classes: General</p>
<ul>
<li>Area-of-Effect Damage Caps: We’ve redesigned the way area damage is capped when hitting many targets. Instead of a hard cap on total damage done, the game now caps the total damage done at a value equal to the damage the spell would do if it hit 10 targets. In other words, if a spell does 1000 damage to each target, it would hit up to 10 targets for 1000 each, but with more than 10 targets, each target would take 1000 damage divided by the number of targets. 20 targets would be hit for 500 damage each in that example.</li>
</ul>
</blockquote>
<p><span id="more-865"></span><br />
This potentially hurts my bear, especially when doing Sholazar dailies.  The mobs have relative low hit points (~6000) but I may not be able to swipe down all 22 Wolvar quickly enough.  This won&#8217;t impact Icecrown/Argent Tournament dailies as I&#8217;m typically only hitting seven or eight scourge at a time.  This will mean low level instance runs need to be handled a little more carefully (no pulling the entire Scarlet Cathedral).</p>
<blockquote><p>
Druids</p>
<ul>
<li>Prowl: This ability no longer has multiple ranks and penalizes movement speed by 30%.</li>
<li>Rebirth: The cooldown on this spell has been lowered from 20 minutes down to 10 minutes. Cannot be used in Arenas.</li>
<li>Rejuvenation: The base duration on all ranks of this spell is now 15 seconds.</li>
<li>Tranquility: The cooldown on this spell has been reduced to 8 minutes, down from 10 minutes.</li>
<li>Talents
<ul>
<li>Balance
<ul>
<li>Eclipse: This effect will not activate again within 15 seconds of either type of Eclipse effect firing, in addition to the existing 30-second cooldown for each type of Eclipse. In addition, Eclipse now grants a 40% critical strike chance to Starfire and 40% increased damage to Wrath, up from 30%.</li>
<li>Force of Nature: Health on the treants has been increased.</li>
</ul>
</li>
<li>Feral Combat
<ul>
<li>Predatory Strikes: The Predatory Swiftness buff from this talent now has an 8-second duration.</li>
</ul>
</li>
<li>Restoration
<ul>
<li>Gift of the Earthmother: Redesigned. This talent now increases spell haste by 2/4/6/8/10% and reduces the base global cooldown of Lifebloom by 2/4/6/8/10% instead of its previous effects.</li>
</ul>
</li>
</ul>
</li>
<li>Pets
<ul>
<li>Avoidance (passive): Now reduces the damage your pets take from area-of-effect damage by 90%, but no longer applies to area-of-effect damage caused by other players.</li>
</ul>
</li>
</ul>
</blockquote>
<p>The Prowl change has no impact at level 80.  Since I&#8217;m not Moonkin spec, Eclipse changes and the treant health buffs don&#8217;t directly impact me but I think it will help other raiding druids.</p>
<p>Predatory Strikes isn&#8217;t a direct nerf to me like it would be to talented PvPer.  Declaring the duration at eight seconds clarifies the buff duration.</p>
<p>The Rejuvenation change won&#8217;t really impact how I heal:  I would usually really Rejuvenation before it expires on the tank.  The Rebirth change is huge for me and my parties and should make encounters like Ony25 or ToC10 easier &#8212; I&#8217;ll end up losing a DPS on about a quarter of the runs (or a tank on raids) and getting Rebirths in faster will make those encounters a lot easier.</p>
<p>I&#8217;m more likely to use Tranquility than before:  now, it&#8217;s only used for encounters I know will stress Wild Growth.  I&#8217;m much more likely to pop it on any AOE boss now, not just the ones that were tougher AOEs.  Honestly, I can count the times I&#8217;ve needed to use Tranquility on one hand (usually in OS25).</p>
<p>Gift of the Earthmother means I will concentrate a little more on Haste when gearing or gemming.  I&#8217;m constantly using Lifebloom in conjunction with Rejuvenation when running heroics or to keep the tanks topped off on raids, so reducing the cooldown is a little better, although I&#8217;d really like to see a reduction in mana cost &#8212; I&#8217;m not running around in Tier 7.  On heroics, when I&#8217;m with a good tank and the group isn&#8217;t taking heavy damage, mana isn&#8217;t usually a problem but on some encounters (ToC 10, for instance) I can blow through my whole bar.  I&#8217;m more likely, with the lower cooldown, to apply Lifebloom to more than just raid tanks.</p>
<p>Finally, I&#8217;ve been looking forward to the dungeon finder.  This has the potential to let me complete Heroic Dailies on weekdays (I log in around 8pm PST) and being able to teleport directly to the instance will save a <i>ton</i> of time, and I like that it supports returning to town to repair or buy reagents.  I&#8217;m <i>not</i> happy about losing the Heroic Daily and Dungeon Daily quests, but understand the new system replaces them.  I&#8217;ll need to make sure that I always have bag space free to hold onto daily random rewards (yes, this can be a problem at times).</p>
<p>Oh happy day:  Looking for Group channel is back by default. <img src='http://www.mischiefblog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I&#8217;m curious about the rewards for weekly raids.  I can be assured my guild will be running those every weekend.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=865</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Signature of a Java service</title>
		<link>http://www.mischiefblog.com/?p=861</link>
		<comments>http://www.mischiefblog.com/?p=861#comments</comments>
		<pubDate>Wed, 28 Oct 2009 15:37:52 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=861</guid>
		<description><![CDATA[I&#8217;ve dealt with Java services at Amazon too long when I can spot one by the CPU/memory signature.
This is pretty typical of a long-running service garbage collecting with old generation objects.  Note the CPU utilization as the VM removes old generation objects and subsequent drop in memory utilization.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve dealt with Java services at Amazon too long when I can spot one by the CPU/memory signature.<br />
<div id="attachment_862" class="wp-caption aligncenter" style="width: 446px"><img src="http://www.mischiefblog.com/uploads/2009/10/java_service.png" alt="The classic signature of a long-running Java service" title="Java service CPU/memory signature" width="436" height="233" class="size-full wp-image-862" /><p class="wp-caption-text">The classic signature of a long-running Java service</p></div><br />
This is pretty typical of a long-running service garbage collecting with old generation objects.  Note the CPU utilization as the VM removes old generation objects and subsequent drop in memory utilization.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=861</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Radar Revisited</title>
		<link>http://www.mischiefblog.com/?p=857</link>
		<comments>http://www.mischiefblog.com/?p=857#comments</comments>
		<pubDate>Wed, 14 Oct 2009 07:08:20 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.mischiefblog.com/?p=857</guid>
		<description><![CDATA[I&#8217;ve been snatching 30 and 60 minute blocks of time in the evenings and on the weekends to get back to work on my Radar test in Python with PyGame from nearly four years ago.  PyGame 1.9.1 installed easily on my Windows box and OS X laptop and integrated well with Python 3.1 (on [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been snatching 30 and 60 minute blocks of time in the evenings and on the weekends to get back to work on my <a href="http://www.mischiefblog.com/?p=230" target="_blank">Radar</a> test in Python with PyGame from nearly four years ago.  <a href="http://pygame.org/download.shtml" target="_blank">PyGame 1.9.1</a> installed easily on my Windows box and OS X laptop and integrated well with Python 3.1 (on Windows) and <a href="http://www.stackless.com/" target="_blank">Stackless Python</a> 2.6 (on OS X).  The only significant changes to be made in the code between Python 2 and Python 3 had to do with <a href="http://docs.python.org/dev/3.0/whatsnew/2.6.html#pep-3110" target="_blank">exception handling</a>.<br />
<span id="more-857"></span><br />
So, what&#8217;s new and different in this version?
<ul>
<li>I lost my version of Radar that supported chat, so I had to rewrite it from scratch.  This version only supports standard layout US keyboards (the shift-modifiers are hard-coded) and I haven&#8217;t tweaked the fonts, set up an input box, or limited the input string to make things look nicer.</li>
<li>I likewise lost the code to add names and chat messages above the arrow sprites, so I rewrote that.  This version should be more correct than the one from 2005.</li>
<li>I&#8217;m using the standard Python logger (based on log4j) instead of a custom logging class.</li>
<li>I&#8217;m using a Singleton logger instance for all the arrow sprites.</li>
</ul>
<p>The arrow sprite logic has gotten complicated enough that I need to develop good unit tests for it.  I&#8217;ve been developing with rapid integration tests, but I believe I&#8217;ve hit the point with the sprite where significant changes could break the correct behavior it&#8217;s exhibiting now.  A good suite of unit tests against the sprite will help with later refactoring and will also provide a base for testing sprites in other projects.  Unit tests should be written before I approach anything as complicated as, say, collision detection (which PyGame handles nicely now) or basic AI or pathfinding.</p>
<p><a href="http://www.moviepartners.com/blog/2009/03/20/making-py2exe-play-nice-with-pygame/" target="_blank">I&#8217;ve looked into</a> using <a href="http://www.py2exe.org/" target="_blank">py2exe</a> to package the application as a Windows executable.  It looks like, with a few hours of testing and pruning, it&#8217;ll work well and still produce a relatively small executable.</p>
<p>I&#8217;m considering using <a href="http://incubator.apache.org/thrift/" target="_blank">Thrift</a> to automate generation and interpretation of the client-server messages.  I&#8217;m willing to pay a little more in bandwidth and processing time rather than spending time writing custom binary packing and unpacking code for messages.  Thrift should let me abstract the process a little more, and I&#8217;m very curious to see how well it works for me in practice.</p>
<p>Finally, I&#8217;ll implement the server.  With the minimal prediction in place on the arrow sprites, I&#8217;m very curious to see how well the client runs and how much rubberbanding will take place.</p>
<p>Komodo Edit is still working well for me, although I wonder if the Komodo IDE would help to speed up my develop-test iteration cycle.</p>
<p>Grab the <a href="uploads/Radar2.zip">Radar2.zip</a> file here.  Install Python 3.1 and Pygame 1.9.1 for 3.1, add Python to your path, and test the program with <code>python Main.py</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mischiefblog.com/?feed=rss2&amp;p=857</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
