<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.8 on Mon, 14 Jun 2004 05:01:26 GMT -->
<rss version="2.0" xmlns:icbm="http://postneo.com/icbm/">
	<channel>
		<title>mcgyver5: Java</title>
		<link>http://radio.weblogs.com/0108008/categories/java/</link>
		<description>&quot;Objects&quot; is just fancy for &quot;array&quot; but with, like, some extra things you have to know.</description>
		<copyright>Copyright 2004 mcgyver5</copyright>
		<lastBuildDate>Mon, 14 Jun 2004 05:01:26 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.0.8</generator>
		<managingEditor>tim@phpreports.com</managingEditor>
		<webMaster>tim@phpreports.com</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>2</hour>
			<hour>3</hour>
			<hour>1</hour>
			<hour>4</hour>
			<hour>5</hour>
			<hour>6</hour>
			<hour>0</hour>
			<hour>12</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<description>question: when I write an inernet enabled java program for my PC, my firewall (zone alarm) asks me if it is OK for javaw.exe to access the internet. How do I tell my firewall that I want that particular java program to access the internet but perhaps not other programs running under the java virtual machine?</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/06/13.html#a922</guid>
			<pubDate>Mon, 14 Jun 2004 04:16:53 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=922&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F06%2F13.html%23a922</comments>
			</item>
		<item>
			<title>calling final methods from constructor</title>
			<description>&quot;&lt;STRONG&gt;The only safe methods to call inside a constructor are those that are final in the base class&lt;/STRONG&gt; &quot; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;There are cases where an instance&amp;nbsp;method can be called before the constructor.&amp;nbsp; This gives odd results.&amp;nbsp; For example the following code:&lt;/P&gt;&lt;PRE&gt;public class SpecialFish extends Fish{&lt;/PRE&gt;&lt;PRE&gt; public String species = &quot;Walleye&quot;;&lt;/PRE&gt;&lt;PRE&gt; void printSpecies(){&lt;/PRE&gt;&lt;PRE&gt; System.out.println(&quot;the species is: &quot;+species);&lt;/PRE&gt;&lt;PRE&gt; } &lt;/PRE&gt;&lt;PRE&gt;public static void main(String[] args) {&lt;/PRE&gt;&lt;PRE&gt; SpecialFish sf = new SpecialFish();&lt;/PRE&gt;&lt;PRE&gt; sf.printSpecies();&lt;/PRE&gt;&lt;PRE&gt; } &lt;/PRE&gt;&lt;PRE&gt;} &lt;/PRE&gt;&lt;PRE&gt;class Fish {&lt;/PRE&gt;&lt;PRE&gt; String defaultSpecies = &quot;Carp&quot;;&lt;/PRE&gt;&lt;PRE&gt; public Fish() {&lt;/PRE&gt;&lt;PRE&gt; printSpecies();&lt;/PRE&gt;&lt;PRE&gt; } &lt;/PRE&gt;&lt;PRE&gt; void printSpecies(){&lt;/PRE&gt;&lt;PRE&gt;   System.out.println(&quot;This is the species: &quot;+defaultSpecies);&lt;/PRE&gt;&lt;PRE&gt; } &lt;/PRE&gt;&lt;PRE&gt;} &lt;/PRE&gt;
&lt;P&gt;You might expect the above to print &quot;Carp&quot; and then &quot;Walleye&quot;,&amp;nbsp; but it prints &quot;null&quot; and then &quot;Walleye&quot;&lt;/P&gt;
&lt;P&gt;The reason for this is that by default, Java waits until run-time to decide what object it is working on.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Making a method final is&amp;nbsp;the way to ensure that it is bound at compile time instead of run time.&amp;nbsp; Final is telling java that this method cannot be overridden.&lt;/P&gt;
&lt;P&gt;Without making the printSpecies() method final, java has no clue if Fish or Special Fish will be using it, so it waits until run-time and then prepares&amp;nbsp;(constructs)&amp;nbsp;the base class so that it is ready to morph into any class, base or derived, that it might need to be.&amp;nbsp; In other words, it executes in the following order:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;the base-class constructors are called 
&lt;LI&gt;member initializers are called in the order of declaration 
&lt;LI&gt;the body of the derived class is called&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;So, the base-class constructor is called and inside that constructor you have a call to the printSpecies method.&amp;nbsp; Being a SpecialFish, the overridden printSpecies method gets called before the SpecialFish is even a twinkle in it&apos;s daddy&apos;s eye.&amp;nbsp; It&apos;s like asking a kid to take the SAT seconds before he is conceived.&lt;/P&gt;
&lt;P&gt;So, the rule is, don&apos;t call a method that could be overriden from inside the constructor.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/05/21.html#a905</guid>
			<pubDate>Sat, 22 May 2004 04:41:34 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=905&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F05%2F21.html%23a905</comments>
			</item>
		<item>
			<description>While every&amp;nbsp;article about application development&amp;nbsp;impresses upon us the importance of separating&amp;nbsp;the data, logic and presentation layers, &amp;nbsp;MS Excel gleefully mixes the three. While this gets sneers from most developers, it is precisely the reason that so many people use it and love it and get themselves into all kinds of trouble with it... and then ask me to help. So I was very excited to get my copy of &lt;A href=&quot;http://www.amazon.com/exec/obidos/tg/detail/-/059600625X/002-3844654-9917619?v=glance&quot;&gt;Excel Hacks&lt;/A&gt; today. Among other things, it has a lot of tips for separating the data from the formulas and the data from the presentation, making a complex Excel spreadsheet more maintainable.&amp;nbsp; Other things I was glad to see: 
&lt;UL&gt;
&lt;LI&gt;Chapter devoted to the SpreadsheetML, or the xml/xslt format used to describe spreadsheets. This facilitates generating spreadsheets using PHP and Java and other technologies that have nothing to do with Excel 
&lt;LI&gt;Lots of hints for overcoming limits imposed by Excel: For example, override the number of undos allowed and override the limit to criteria for conditional formatting of cells. 
&lt;LI&gt;Lots of easy to understand VBA code 
&lt;LI&gt;Ways to recover data from corrupt workbooks 
&lt;LI&gt;Long chapter on charts with some neato ideas for custom charts. I get asked a lot of questions about Excel charts and I never really learned more than basic charting skills. 
&lt;LI&gt;And a question I have tried to solve several times, never getting a graceful solution: How to fill in empty cells with values 
&lt;LI&gt;Solutions to pivot tables&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I am working my way through each of the 100 hacks and in almost every one, I am saying to myself, &quot;Gee, I didn&apos;t know excel could do that&quot;&amp;nbsp; In summary, the O&apos;Reilly hacks series has produced some excellent books and this one is one of the best.&amp;nbsp; It is clear, concise, error free, and doesn&apos;t assume you have the most recent version of Excel.&amp;nbsp; It is full of nuggets such as the fact that Excel purposely doesn&apos;t recognize that the year 1900 was a leap year (&lt;A href=&quot;http://support.microsoft.com/default.aspx?scid=kb;EN=US;q181370&quot;&gt;link&lt;/A&gt;&amp;nbsp;blames it all on Lotus!).&amp;nbsp; Who knows, you might encounter that some day.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/04/27.html#a873</guid>
			<pubDate>Tue, 27 Apr 2004 15:56:46 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=873&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F04%2F27.html%23a873</comments>
			</item>
		<item>
			<description>I wanted to remove a range of items from a list using the List.subList method. I tried the following: &lt;PRE&gt;&lt;CODE&gt;	&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; al is defined previously as ArrayList al = new ArrayList();
        List l = al.subList(20,50);
        al.removeAll(l);
&lt;/CODE&gt;
&lt;/PRE&gt;
&lt;P&gt;That got me the java.util.ConcurrentModificationException &lt;/P&gt;
&lt;P&gt;The documentation says that a subList is dependent on the List that it is sublisting from. So, while a sublist is open, it is manipulating the parent list and seems to have a lock on it.&amp;nbsp;&amp;nbsp; Instead, you can create a brand new ArrayList and fill it with the subList, thus freeing up the sublist so that a future call can modify the original List: &lt;CODE&gt;&lt;/P&gt;&lt;PRE&gt;	ArrayList sl = new ArrayList(al.subList(10,40));
    	al.removeAll(sl);
		&lt;/PRE&gt;
&lt;P&gt;&lt;/CODE&gt;So why does&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;CODE&gt;List = myList.subList(10,30);&lt;/CODE&gt; &lt;/P&gt;
&lt;P&gt;get you a different animal than &lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;ArrayList temp = new ArrayList(myList.subList(10,30)); &lt;/CODE&gt;?? &lt;/P&gt;
&lt;P&gt;because in the first snippet, I haven&apos;t instantiated a new object, I just created a &lt;U&gt;reference&lt;/U&gt; to an existing object.&amp;nbsp;&amp;nbsp;&amp;nbsp;In the second snippet, I created a brand new&amp;nbsp;object.&amp;nbsp;&amp;nbsp;That&apos;s what the word &quot;new&quot; gets me.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/04/06.html#a844</guid>
			<pubDate>Tue, 06 Apr 2004 23:06:45 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=844&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F04%2F06.html%23a844</comments>
			</item>
		<item>
			<description>IntelliJ IDEA If you use IntelliJ 4.0 to check out projects from CVS make sure you click the &quot;Change keyword substitution&quot; to binary button in the CVS checkout procedure. Failure to do this could cause your project to fail to compile since the jar files will be corrupt.</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/29.html#a828</guid>
			<pubDate>Mon, 29 Mar 2004 20:03:37 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=828&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F29.html%23a828</comments>
			</item>
		<item>
			<description>&lt;P&gt;IntelliJ IDEA, the Java development tool that I am liking more and more, uses log4J to build a log file that is stored as : USER_HOME\.IntelliJIdea\system\log\idea.log &lt;/P&gt;
&lt;P&gt;(On my windows installation, USER_HOME is C:\Documents and Settings\timcguir ) &lt;/P&gt;
&lt;P&gt;This file has lots of information about the internal workings of IDEA and has error messages that explained to me why the IDEA GUI Builder wasn&apos;t working like I expected.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/29.html#a827</guid>
			<pubDate>Mon, 29 Mar 2004 16:19:57 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=827&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F29.html%23a827</comments>
			</item>
		<item>
			<title>Static</title>
			<description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1 exerting force by reason of weight alone without motion&lt;/P&gt;
&lt;P&gt;2 showing little change&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;An early frustration in learning Java is the error:&amp;nbsp;&amp;nbsp; non-static method foo( ) cannot be referenced from a static context 
&lt;LI&gt;Perhaps you are trying to call a simple method of your class from the main() method.&amp;nbsp; The main method is a static context.&amp;nbsp; The quick solution is to instatiate your object with MyObject mo = new MyObject right inside your main method.&amp;nbsp; now you have an instance of MyObject&amp;nbsp;&amp;nbsp; 
&lt;LI&gt;A static variable or method&amp;nbsp;is going to persist across all the objects instantiated. 
&lt;LI&gt;Static means that you lose the use of the &lt;EM&gt;&apos;this&apos;&lt;/EM&gt; keyword because the use of &lt;EM&gt;&apos;this&apos;&lt;/EM&gt; implies that you have an instantiation of an object. 
&lt;LI&gt;Static means that it doesn&apos;t depend on the instantiation of an instance of the object. It still exists and can be called from an instance of the object, but it can also be called without creating the object. 
&lt;LI&gt;The main() method is static because you have to call it to start a java program. That is, you call it before any objects are instantiated. 
&lt;LI&gt;Consider the following class:&amp;nbsp; &lt;PRE&gt;public class AddMe{
	
	static int num = 100
	
	static int add(int i){
		int sum = i+2;
		return sum;
	}
}
&lt;/PRE&gt;
&lt;LI&gt;When I want to access the variable num, I can just say, &lt;CODE&gt;myNum = AddMe.num&lt;/CODE&gt; and get the number 100. 
&lt;LI&gt;I can also instantiate &lt;CODE&gt;AddMe am = new AddMe() &lt;/CODE&gt;and then call &lt;CODE&gt;myNum = am.num&lt;/CODE&gt; with the same effect. 
&lt;LI&gt;Same with the add method. &lt;CODE&gt;myNum = AddMe.add(2)&lt;/CODE&gt; sets myNum to 4 and so does &lt;CODE&gt;myNum = am.add(2)&lt;/CODE&gt; 
&lt;LI&gt;During my one week java class from Sun, I completed an exercise by using all static methods. I could then call the methods just like I made function calls in PHP or VB. My solution was used as an example of bending Java to act like a procedural language. Which, in case you need to be told, was frowned upon. It avoids all the Object Oriented concepts of Java. You don&apos;t even ever need to instantiate a class! &lt;/LI&gt;&lt;/UL&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/17.html#a813</guid>
			<pubDate>Wed, 17 Mar 2004 23:55:17 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=813&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F17.html%23a813</comments>
			</item>
		<item>
			<description>My Findings on HashMaps: 
&lt;OL&gt;
&lt;LI&gt;A Map is one type of Collection in Java. Collections are used to hold a bunch of objects. Different Collections let you look up your objects in different ways. 
&lt;LI&gt;The special thing about Maps is that the way you look up your objects in a Map is with another object. 
&lt;LI&gt;A Map is like an associative array in PHP. It is a container for key - value pairs. 
&lt;LI&gt;To get values out of a Map, you iterate through the Map&apos;s keys&amp;nbsp;and use the get() method to get&amp;nbsp;the value associated with that key&amp;nbsp;back out. 
&lt;LI&gt;Map is the interface, Hashmap or TreeMap is the implementation of that interface, just like ArrayList is an implementation of List. So, to make a new HashMap, you would say Map myHashMap = new HashMap(); 
&lt;LI&gt;A HashMap uses the hashCode() method available to all Java objects to take the hashCode of your object so that it can quickly find it when you want it. 
&lt;LI&gt;with a HashMap, your objects will not be sorted the way you expect &lt;/LI&gt;
&lt;LI&gt;with a TreeMap, the objects are sorted in a way that makes sense.&lt;/LI&gt;&lt;/OL&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/16.html#a807</guid>
			<pubDate>Tue, 16 Mar 2004 17:20:32 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=807</comments>
			</item>
		<item>
			<title>JavaScript Disable Links</title>
			<description>&lt;P&gt;Here is the javascript function I used to disable the link that people often click more than once:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;CODE&gt;function disable_links(){&lt;/CODE&gt;&lt;CODE&gt;&amp;nbsp;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; this function disables all the links on the page&amp;nbsp;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp; for(var i=0; i &amp;lt; document.links.length;i++) &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;CODE&gt;&amp;nbsp; { &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.links[i].onclick=function () { return false; }&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.links[i].title = &quot;The exam has been submitted. Please wait for results page&quot;; &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp; } &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&amp;nbsp; return true; &lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;} &lt;/CODE&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/15.html#a805</guid>
			<pubDate>Mon, 15 Mar 2004 17:52:50 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=805&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F15.html%23a805</comments>
			</item>
		<item>
			<description>&lt;P&gt;For two weeks I had this really frustrating problem: &lt;/P&gt;
&lt;P&gt;When users submitted the online fisheries exam, sometimes they would get an error page while the results would be emailed with no problems. I kept testing it and never got the error. I wondered if the database was crapping out because of too many open connections, I wondered about browsers caching error pages. &lt;/P&gt;
&lt;P&gt;Then I watched someone submit the exam. They were like, &quot;it sometimes takes several clicks before it submits&quot;..... click click click. It is second nature to me not to submit a form more than once, no matter how long it takes the server to process the form.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;So, when testing, click all the buttons more than once, because it&apos;s a sure bet your users will. &lt;/P&gt;
&lt;P&gt;In any case, there should be some code that handles this problem, but I didn&apos;t write the thing, I just inherited it.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/15.html#a802</guid>
			<pubDate>Mon, 15 Mar 2004 14:39:39 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=802&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F15.html%23a802</comments>
			</item>
		<item>
			<description>The Apache Software Federation now has &lt;A href=&quot;http://www.planetapache.org/&quot;&gt;Planet Apache&lt;/A&gt;, a set of web logs for their members.&amp;nbsp; (From &lt;A href=&quot;http://www.cadenhead.org/workbench/categories/javaTips/&quot;&gt;Rogers Cadenhead&lt;/A&gt;)</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/13.html#a798</guid>
			<pubDate>Sat, 13 Mar 2004 13:41:23 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=798&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F13.html%23a798</comments>
			</item>
		<item>
			<title>ArrayLists</title>
			<link>http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html</link>
			<description>&lt;P&gt;I had the hardest time using an ArrayList.&amp;nbsp; I had an ArrayList full of Fish objects and getting them out with ArrayList.get() and wanting to do some Fish type operations such as printing out data about the Fish and&amp;nbsp;comparing it to another Fish.&lt;/P&gt;
&lt;P&gt;To get&amp;nbsp;the&amp;nbsp;third&amp;nbsp;Fish out of the ArrayList it is in, I tried &lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;currentFish = myArrayList.get(2);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The trick is that ArrayLists (and other containers) store all objects as Objects instead of as Fish or Dogs or Cats or Cars or Strings.&amp;nbsp;&amp;nbsp; This behavior happens for all types of java &lt;A href=&quot;http://java.sun.com/docs/books/tutorial/collections/index.html&quot;&gt;Collections&lt;/A&gt;.&amp;nbsp; So when you call an object back out of an ArrayList, you have to cast it back into whatever object it is supposed to be&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Courier, Monospace&quot;&gt;currentFish = (Fish)myArrayList.get(2);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=&quot;Times New Roman,Times,Serif&quot;&gt;Further confusion happens because every object has toString() over-ridden and automatically available so that when you&amp;nbsp;think you are getting a string back from an&amp;nbsp;ArrayList and want to print it out, it&amp;nbsp;works fine.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;I even had it print out the results of getClass() on the Object I was retrieving from myArrayList and even that told me it was a Fish!&amp;nbsp; But still, it was being treated like an Object until the cast.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/13.html#a797</guid>
			<pubDate>Sat, 13 Mar 2004 12:57:53 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=797</comments>
			</item>
		<item>
			<description>Added notes on &lt;A href=&quot;http://radio.weblogs.com/0108008/stories/2004/03/11/notesAboutIntellijIdea40GuiBuilder.html&quot;&gt;using IntelliJ IDEA GUI builder&lt;/A&gt;.</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/11.html#a796</guid>
			<pubDate>Thu, 11 Mar 2004 19:50:36 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=796&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F11.html%23a796</comments>
			</item>
		<item>
			<description>&lt;P&gt;To he who wrote the java programs I have to maintain: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;I curse your name&amp;nbsp;10 times&amp;nbsp;daily. &lt;/LI&gt;
&lt;LI&gt;I&amp;nbsp;curse you for having different stuff checked in to version control than is actually in production. &lt;/LI&gt;
&lt;LI&gt;I&amp;nbsp;curse you for inventing your own stupid inscrutable templating system. &lt;/LI&gt;
&lt;LI&gt;I&amp;nbsp;curse you for not leaving any comments in your code. &lt;/LI&gt;
&lt;LI&gt;I&amp;nbsp;curse you for leaving some parts of your application calling a test database and others calling a production database. &lt;/LI&gt;
&lt;LI&gt;I&amp;nbsp;curse you for naming methods f2, f3, f4, f5, f6, f7, f8, f9 etc but also for having a method named fl which in my editor is indistinguishable from f1&lt;/LI&gt;
&lt;LI&gt;I&amp;nbsp;curse you for the&amp;nbsp;critical&amp;nbsp;javascript functions called blah and blah2. &lt;/LI&gt;
&lt;LI&gt;I&amp;nbsp;curse you for leaving me a java class with 3000 lines. &lt;/LI&gt;
&lt;LI&gt;I&amp;nbsp;curse you for naming things ShowBean and MenuBean when they aren&apos;t really beans at all.&lt;/LI&gt;&lt;/UL&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/03/02.html#a787</guid>
			<pubDate>Wed, 03 Mar 2004 00:39:06 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=787&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F02.html%23a787</comments>
			</item>
		<item>
			<title>IntelliJ Rulez</title>
			<link>http://www.jetbrains.com/idea/</link>
			<description>&lt;P&gt;I bonded with IntelliJ IDEA tonight.&amp;nbsp; I really started to feel like I was holding the hammer the right way for the first time.&lt;/P&gt;
&lt;P&gt;BANG!&amp;nbsp; automatic try-catch blocks&lt;/P&gt;
&lt;P&gt;BANG!&amp;nbsp; rename one method and tell it to update your entire project&lt;/P&gt;
&lt;P&gt;BANG!&amp;nbsp;alt-insert to populate all your getters and setters for a bean&lt;/P&gt;
&lt;P&gt;BANG! automatically generate import statements&lt;/P&gt;
&lt;P&gt;BANG! ANT compiles your files and puts them in the right place&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/02/24.html#a777</guid>
			<pubDate>Wed, 25 Feb 2004 04:36:52 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=777&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F02%2F24.html%23a777</comments>
			</item>
		<item>
			<title>Ant Build Script</title>
			<description>My ANT build script was skipping over a directories named &quot;javascript&quot;. I have a line in the makewar section of the build script that excludes filenames that fit the pattern **/*java*/**, in order to leave source files out of the war. Once I changed that line to **/*.java*/**, it worked.</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2004/02/23.html#a775</guid>
			<pubDate>Mon, 23 Feb 2004 15:13:01 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=775&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F02%2F23.html%23a775</comments>
			</item>
		<item>
			<title>Software Requirements Part I</title>
			<description>&lt;P&gt;The DNR Project Requirements Group meets for the first time today.&amp;nbsp; The assigment for the first meeting was to read part one of &quot;Software Requirements&quot; by Karl Weigers, a requirements guru.&amp;nbsp; Published by Microsoft Press.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The metrics should give pause to any developer.&amp;nbsp; The costs of not doing requirements well are staggering.&amp;nbsp; On average, rework consumes 30&amp;nbsp; - 50 percent of total costs and&lt;FONT color=maroon&gt; &lt;/FONT&gt;&lt;FONT color=red&gt;&lt;EM&gt;requirement errors account for 70 to 85 percent of reasons for rework&lt;/EM&gt;&lt;/FONT&gt; 
&lt;LI&gt;The first chapter gives the top reasons for requirements errors.&amp;nbsp; The one that jumped out at me was &quot;CREEP&quot; 
&lt;LI&gt;The author suggests using testing to constantly verify requirements.&amp;nbsp; This can be verbal.&amp;nbsp; You have a meeting with the customer and walk through what the software will do.&amp;nbsp; It can also involve a rigorous verification process where a team of people look at your requirements documents and try to find errors. 
&lt;LI&gt;After reading this, I know I want to create a project glossary so we can have a reference for all the crazy terms fisheries biologists throw around. 
&lt;LI&gt;Establish a baseline document that the customer agrees to.&amp;nbsp; This document serves to connect cost estimates, time estimates, requirements, basis for acceptance of completed project and a jumping off point for change management.&amp;nbsp; The first thing to strive towards is&amp;nbsp;a baseline for each of the following documents: 
&lt;OL&gt;
&lt;LI&gt;Vision and Scope statement&amp;nbsp; &quot;why are we building this?&quot; 
&lt;LI&gt;Use Case Document&amp;nbsp; &quot;Customers can make reservations&quot; 
&lt;LI&gt;Software Requirements Specification&amp;nbsp; &quot;The system shall send the customer an email verification of the reservation&quot;&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;The book suggests creating user interface and technical prototypes, even a preliminary implementation.&amp;nbsp; This seems to fly in the face of all the cautions in the book, &quot;dont start coding until requirements are done&quot;&amp;nbsp; I question this. 
&lt;LI&gt;Version control on the requirements documents.&amp;nbsp; Book suggests using a requirements management tool.&amp;nbsp; Our analyst has a home grown one that he has developed over his career and it seems effective. 
&lt;LI&gt;hold facilitated elicitation workshops.&amp;nbsp; **Shudder**&amp;nbsp; We have tried several of these.&amp;nbsp; Without the other stuff in place, they didn&apos;t bring us to where we needed to be.&amp;nbsp; We didn&apos;t create usable requirements documents out of them and to do it again now may bring accusations that we are going over the same ground again.&amp;nbsp; 
&lt;LI&gt;Don&apos;t use sign off as a weapon.&amp;nbsp; Sign off means the customer has agreed to your estimates and requirements.&amp;nbsp; I guess this means don&apos;t wave the requirements in your customer&apos;s face and scream, &quot;You already bought it, sucker!!!&quot;&amp;nbsp; Use it instead as a basis for change management 
&lt;LI&gt;This section of the book leaves me wondering how estimates of time and money are connected to requirements.&amp;nbsp; It says &quot;Developers are in the best position to estimate costs&quot;&amp;nbsp; and then the next sentence says &quot;many developers are not skilled estimators&quot;&amp;nbsp; so, how do we do it? 
&lt;LI&gt;The book has a nice &quot;bill of rights for software customers&quot; followed by a &quot;bill of responsibilities for software customers&quot;&amp;nbsp; &quot;Make timely decisions&quot; is one of these... 
&lt;LI&gt;Finally, it has a list of good requirements characteristics.&amp;nbsp; &quot;Avoid lumping requirements into long narrative paragraphs.&amp;nbsp; &quot;&amp;nbsp; bullets, bullets bullets.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2003/11/04.html#a672</guid>
			<pubDate>Tue, 04 Nov 2003 13:31:43 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=672&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F11%2F04.html%23a672</comments>
			</item>
		<item>
			<title>Places Menu for Texpad</title>
			<description>&lt;P&gt;One of the things has frustrated me&amp;nbsp;with texpad (and most other editors)&amp;nbsp;is open or &quot;save as&quot; routines. It seems like the &quot;open&quot; or&amp;nbsp;&quot;save as&quot; dialog boxes are always pointed at a directory one mile away from the one I need.&amp;nbsp; So I spend about one hour per day clicking up and down a directory tree to find my files.&amp;nbsp; If I am saving .java and .jsp files on several different servers and on my own box, this ads up to a lot of navigation.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The work around I found today is that if you download and install the free tool&amp;nbsp;&lt;A href=&quot;http://www.annoyances.org/exec/show/tweakui&quot;&gt;Power Toys for Windows XP&lt;/A&gt; and go to Common Dialogs &amp;gt;&amp;gt;&amp;gt; custom places bar and type in the 5 folders&amp;nbsp; you navigate to most often, these will appear as clickable folder buttons&amp;nbsp;down the left side of the &quot;save as&quot; and &quot;open&quot; dialog boxes in textpad.&amp;nbsp; Then, no more navigating!&amp;nbsp; Wooo Hoooo!&amp;nbsp; Haven&apos;t tried this on WIN2K yet.&lt;/P&gt;
&lt;P&gt;In MS Office products, you can add your own &quot;Places&quot; to these dialog boxes, but the&amp;nbsp;&quot;places&quot;&amp;nbsp;for MS Office are not the same as the &quot;places&quot; for this &quot;Custom Places Bar&quot;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2003/08/06.html#a552</guid>
			<pubDate>Wed, 06 Aug 2003 19:31:17 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=552&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F08%2F06.html%23a552</comments>
			</item>
		<item>
			<description>Article on O&apos;Reilly&apos;s onJava on &lt;A href=&quot;http://www.onjava.com/lpt/a/3648&quot;&gt;generating richer hyperlinks&lt;/A&gt; with custom tags.&amp;nbsp; Good reading for someone who has the basics of JSP and wants a good exercise to take them to the next level...</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2003/05/07.html#a433</guid>
			<pubDate>Wed, 07 May 2003 16:02:00 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=433&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F05%2F07.html%23a433</comments>
			</item>
		<item>
			<description>And, in eclipse, how can I set up simple macros.&amp;nbsp; For example, I want a keystroke to add the code System.out.println(); and have my cursor end up between the parenthesis</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2003/04/08.html#a399</guid>
			<pubDate>Tue, 08 Apr 2003 23:57:53 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=399&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F08.html%23a399</comments>
			</item>
		<item>
			<description>&lt;P&gt;Also in eclipse, how do I run a java program with command line arguments?&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=black&gt;Easy.&amp;nbsp; Click the little dropdown arrow next to the icon of the little man running.&amp;nbsp; Select Run... and it will bring you to a tabbed dialog where if you go to the arguments tab (would you like to buy an argument??) you can enter the arguments like you would on the command line.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2003/04/08.html#a398</guid>
			<pubDate>Tue, 08 Apr 2003 23:56:05 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=398&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F08.html%23a398</comments>
			</item>
		<item>
			<description>I wonder if Eclipse can append to the program output that appears in the console instead of clearing the console each time I run a program?&amp;nbsp; I can see previous outputs from a dropdown list on the console title bar, but what if I want to see the various results all piled on top of one another in the same window?</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2003/04/08.html#a397</guid>
			<pubDate>Tue, 08 Apr 2003 21:20:48 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=397&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F08.html%23a397</comments>
			</item>
		<item>
			<description>&lt;P&gt;I downloaded &lt;A href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/A&gt; after reading about it in many places including &lt;A href=&quot;http://developers.slashdot.org/article.pl?sid=03/03/28/2254257&amp;amp;mode=thread&amp;amp;tid=108&quot;&gt;slashdot&lt;/A&gt;&amp;nbsp;and &lt;A href=&quot;http://www.linux-mag.com/&quot;&gt;linux magazine&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;It looks very nice so far.&amp;nbsp; It is exacly what I need for where I am in java development right now.&amp;nbsp; Reminds me of missing semicolons before I compile, but doesn&apos;t generate code automatically.&amp;nbsp; ANT and JUNIT are integrated and there is a &lt;A href=&quot;http://phpeclipse.sourceforge.net/&quot;&gt;PHP plug-in&lt;/A&gt; that I have yet to try.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2003/04/07.html#a393</guid>
			<pubDate>Mon, 07 Apr 2003 20:37:50 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=393&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F04%2F07.html%23a393</comments>
			</item>
		<item>
			<description>&lt;P&gt;Twin Cities Java users group - Presentation on Jawin,&amp;nbsp; a way to access Win32 Com objects through Java.&lt;/P&gt;
&lt;P&gt;Too&amp;nbsp;many software presentations make everything seem so easy.&amp;nbsp; The presenter flys effortlessly through the examples, making&amp;nbsp;flawless&amp;nbsp;coding and configuration changes and&amp;nbsp; never gets a compile&amp;nbsp;error..&amp;nbsp; The audience walks away with the feeling that they can go home and do the same thing&amp;nbsp;themselves in no time.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Well, this wasn&apos;t one of those presentations....&lt;/P&gt;
&lt;P&gt;I appreciated this presentation because it gave a good indication of how much trouble an average person like me would have working with Jawin.&amp;nbsp; The presenter was&amp;nbsp;getting lots of error messages&amp;nbsp;in front of a room full of Java programmers and couldn&apos;t complete his example successfully.&amp;nbsp; This was actually more informative than a really slick presentation.&amp;nbsp; We&amp;nbsp;got to see what kind of stuff&amp;nbsp;goes wrong.&amp;nbsp; To his credit, the presenter tried a few things &quot;without a safety net&quot;&amp;nbsp; He actually got curious about how&amp;nbsp;a&amp;nbsp;Powerpoint Macro would convert into Java and went ahead and tried it.&amp;nbsp; 15 minutes later he was still getting debugging hints from the audience and pecking around looking for the&amp;nbsp;= key.&amp;nbsp; He was obviously a very skilled programmer and to see him having such trouble effectively warned me away.&amp;nbsp; He prefaced the second part of his presentation by saying, &quot;getting this next stuff to work&amp;nbsp;is really complex and challenging&quot;.&amp;nbsp; That really put me away.&amp;nbsp; It was like watching a magician accidently&amp;nbsp;burn his eyebrows off and then announce that he was going to try something really dangerous.&amp;nbsp; To use JUnit with Jawin, you need to install Microsoft Visual C++ on top of everything else.&amp;nbsp; &amp;nbsp; &lt;/P&gt;
&lt;P&gt;I am really glad he came out, but&amp;nbsp;the presenter should have prepared more, he should have been on time, and he should have dressed better.&amp;nbsp; He sat at his computer and read the headlines of his slides.&amp;nbsp; At one point a huge black box with&amp;nbsp;appeared on the overhead screen and we sat there in silence as&amp;nbsp;chuckled about the Austin Powers clip he was watching on his laptop.&amp;nbsp; I have seen&amp;nbsp;too many ppt presentations go awry&amp;nbsp;to not&amp;nbsp;test the equipment before trying something like that.&lt;/P&gt;
&lt;P&gt;I noticed with interest that after he ran ant on his project, he had to move the resulting jar file by hand to another directory.&amp;nbsp; Rehan has been looking for a way to get ant to move the jar file(s) it builds to the directory of choice.&amp;nbsp; Any Ideas????&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2003/03/20.html#a365</guid>
			<pubDate>Thu, 20 Mar 2003 05:07:40 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=365&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F03%2F20.html%23a365</comments>
			</item>
		<item>
			<description>&lt;P&gt;Rehan&amp;nbsp;discovered a&amp;nbsp;bug in Java Swing.&amp;nbsp; When using tabbed frames, you need to insert an&amp;nbsp;extra pane before embedding any more ingredients into a single tab.&amp;nbsp; This has been documented:&amp;nbsp; &lt;A href=&quot;http://forum.java.sun.com/thread.jsp?forum=257&amp;amp;thread=118264&quot;&gt;Link to Forum discussion on this&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;But, if you try to set any type of layout on this interior pane, you will experience problems with&amp;nbsp;shrinkage&amp;nbsp;&amp;nbsp;of the various controls.&amp;nbsp; They shrink like frightened turtles are unusable and hideous. The controls come back when the window is enlarged by clicking and dragging, and then shrink again when the window is reduced to its original size.&amp;nbsp; To avoid this, he is getting by without setting any layout.&amp;nbsp; This could hold someone back, however, if they&amp;nbsp;needed to do a layout on this pane.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/java/2003/03/12.html#a346</guid>
			<pubDate>Wed, 12 Mar 2003 17:18:23 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=346</comments>
			</item>
		</channel>
	</rss>
