<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.8 on Tue, 27 Apr 2004 15:56:51 GMT -->
<rss version="2.0" xmlns:icbm="http://postneo.com/icbm/">
	<channel>
		<title>mcgyver5: Technology</title>
		<link>http://radio.weblogs.com/0108008/categories/technology/</link>
		<description>General Technology Notes:  Diary of a late,late adopter.</description>
		<copyright>Copyright 2004 mcgyver5</copyright>
		<lastBuildDate>Tue, 27 Apr 2004 15:56:51 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>1</hour>
			<hour>3</hour>
			<hour>4</hour>
			<hour>5</hour>
			<hour>0</hour>
			<hour>6</hour>
			<hour>18</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<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/technology/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>
			<title>DNR Trout Stream Easement GIS Layer</title>
			<description>&lt;P&gt;My cube neighbor is creating&amp;nbsp;a database of all the easements owned by the state&amp;nbsp;along trout streams.&amp;nbsp; It&amp;nbsp;will soon be available in GIS format.&amp;nbsp; That is, you can download the data and make pictures like this, which is the new data layed over arial photos.&amp;nbsp; This particular&amp;nbsp;selection&amp;nbsp;is&amp;nbsp;Lower Gavin Brook in Stockton, MN:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src=&quot;http://www.phpsolvent.com/GIS/Lower_Gavin_Brook.jpg&quot;&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2004/04/07.html#a846</guid>
			<pubDate>Wed, 07 Apr 2004 21:23:59 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=846&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F04%2F07.html%23a846</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/technology/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>
			<title>Compacting Radio DataFiles</title>
			<description>&lt;P&gt;&lt;IMG src=&quot;http://radio.weblogs.com/0108008/images/RadioUtilities.gif&quot;&gt;&lt;/P&gt;
&lt;P&gt;I just &lt;A href=&quot;http://radio.userland.com/stories/storyReader$6970&quot;&gt;compacted my data files&lt;/A&gt; in Radio.&amp;nbsp; I noticed that I had all these huge files under the folder RadioUserland/datafiles&amp;nbsp; weblogData.root was 16 Megs.&amp;nbsp; After running compaction that file is just 2 Megs.&amp;nbsp; aggregatorData.root went from 37 Megs to 400 kb&lt;/P&gt;
&lt;P&gt;I also noticed when backing up that problems&amp;nbsp;occur when you have radio open and you try to copy a 37 Meg file that radio is trying to use.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2004/04/04.html#a841</guid>
			<pubDate>Sun, 04 Apr 2004 12:42:40 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=841&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F04%2F04.html%23a841</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/technology/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/technology/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>
			<description>&lt;P&gt;You can put a &lt;A href=&quot;http://www.mozilla.org/projects/netlib/Link_Prefetching_FAQ.html#What_is_link_prefetching &quot;&gt;link tag&lt;/A&gt; on&amp;nbsp;your web page that tells the visiting browser to start downloading another page while it is idle so that your browsing seems faster:&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;lt; link rel=&quot;prefetch&quot; href=&quot;/images/big.jpeg&quot; &amp;gt;&lt;/P&gt;
&lt;P&gt;from &lt;A href=&quot;http://www.decafbad.com/blog/&quot;&gt;0xDECAFBAD&lt;/A&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2004/03/26.html#a820</guid>
			<pubDate>Fri, 26 Mar 2004 21:12:08 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=820&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F26.html%23a820</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/technology/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/technology/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/technology/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/technology/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>
			<title>new radio tools</title>
			<link>http://www.cadenhead.org/workbench/code/workbenchRoot/index.html</link>
			<description>&lt;P&gt;Roger&apos;s Cadenhead, the author of the excellent Radio Userland Kickstart, has released the first version of his &lt;A href=&quot;http://www.cadenhead.org/workbench/code/workbenchRoot/index.html&quot;&gt;workbench.root&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;It has two scripts:&lt;/P&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.cadenhead.org/workbench/code/workbenchRoot/viewCategories.html&quot;&gt;Workbench.viewCategories()&lt;/A&gt;, a script to display category links on your home page template and other pages.&lt;BR&gt;
&lt;LI&gt;&lt;A href=&quot;http://www.cadenhead.org/workbench/code/workbenchRoot/viewPostIndex.html&quot;&gt;Workbench.viewPostIndex()&lt;/A&gt;, a script to display links to your posts in reverse chronological order &lt;/LI&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2004/03/15.html#a801</guid>
			<pubDate>Mon, 15 Mar 2004 13:16:13 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=801&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F03%2F15.html%23a801</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/technology/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/technology/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/technology/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/technology/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>Lustron homes</title>
			<link>http://www.wosu.org/tv/lustron/</link>
			<description>&lt;P&gt;Kate told me the other morning that she saw an interesting show on PBS at like 3:00 am about metal and ceramic prefab&amp;nbsp;homes from the 1940s.&amp;nbsp; I would have thought she was dreaming, but her story&amp;nbsp;did not feature small animals chewing on her, so I knew it was real.&amp;nbsp; It was the &lt;A href=&quot;http://home.earthlink.net/~ronusny/&quot;&gt;Lustron homes story&lt;/A&gt;.&amp;nbsp; The story goes like this:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Housing shortage after WWII 
&lt;LI&gt;Visionary inventor comes up with prefab houses that are cheap and last forever without maintenance.
&lt;LI&gt;People line up to buy them.&amp;nbsp; Thousands are built and sold all over the country. 
&lt;LI&gt;unknown forces conspire against the company.&amp;nbsp;
&lt;LI&gt;Company goes bankrupt.&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;LI&gt;Lustrons live up to their promise.&amp;nbsp; Their owners love them.&amp;nbsp; There are &lt;A href=&quot;http://www.mikedust.com/fascinatum/2002/fascinatum-013002-3.html&quot;&gt;seven of these in Minneapolis&lt;/A&gt;.&lt;/LI&gt;&lt;/OL&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2004/02/10.html#a758</guid>
			<pubDate>Tue, 10 Feb 2004 17:27:06 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=758&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F02%2F10.html%23a758</comments>
			</item>
		<item>
			<description>&lt;P&gt;I like the PHP function &lt;A href=&quot;http://us4.php.net/mysql_insert_id&quot;&gt;mysql_insert_id( )&lt;/A&gt;&amp;nbsp;.&amp;nbsp; I just found out about it.&amp;nbsp; It is good for when you just inserted on one table and you want to insert the autogenerated primary key into another table.&amp;nbsp; Almost serves as the equivalent of an Oracle sequence object, but not quite.&lt;/P&gt;
&lt;P&gt;Works as follows&lt;/P&gt;
&lt;P&gt;[ME]:&amp;nbsp; Damn.&amp;nbsp; I wonder&amp;nbsp;how to find&amp;nbsp;the user ID&amp;nbsp; for the brand new&amp;nbsp;user without doing another query?&lt;/P&gt;
&lt;P&gt;[Narrator from Dukes of Hazzard]:&amp;nbsp; &quot;Well, son just try&amp;nbsp; &lt;CODE&gt;$user_id = mysql_insert_id(); &quot;&lt;/CODE&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2004/01/31.html#a751</guid>
			<pubDate>Sun, 01 Feb 2004 02:01:06 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=751&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2004%2F01%2F31.html%23a751</comments>
			</item>
		<item>
			<description>&lt;P&gt;According to Google, &lt;/P&gt;
&lt;P&gt;B is for B&apos;Tselem &lt;/P&gt;
&lt;P&gt;C is for CNET &lt;/P&gt;
&lt;P&gt;D is for D-Link &lt;/P&gt;
&lt;P&gt;Check out the entire &lt;A href=&quot;http://www.changemedia.org/googlealphabet/ &quot;&gt;google alphabet&lt;/A&gt;: &lt;/P&gt;
&lt;P&gt;from a blogger who turns out to be a Macalester Grad&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2003/12/03.html#a699</guid>
			<pubDate>Thu, 04 Dec 2003 02:06:43 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=699&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F12%2F03.html%23a699</comments>
			</item>
		<item>
			<title>and neither does my wireless network</title>
			<description>I have a &lt;A href=&quot;http://www.trendnet.com&quot;&gt;TRENDnet&lt;/A&gt; wireless USB network adaptor&amp;nbsp; (TEW-USB) and a TRENDnet wireless base station.&amp;nbsp; I know the base station works because my &lt;A href=&quot;http://radio.weblogs.com/0129150&quot;&gt;brother&lt;/A&gt; got connected to it last night.&amp;nbsp; My&amp;nbsp;wireless client&amp;nbsp;does not work, however, and the documentation really is lacking.&amp;nbsp; Can&apos;t find any troubleshooting information on-line or in the PDF that comes with the driver.&amp;nbsp; TRENDnet online support does seem to be responsive, though, so have a &lt;A href=&quot;http://www.trendnet.com/asp/helpdesk/user/details.asp?id=4857&quot;&gt;problem ticket&lt;/A&gt; and&amp;nbsp;I will wait for them to get back to me.&amp;nbsp; Meanwhile, I have another box with pretty lights and a&amp;nbsp;donut shaped electromagnetic radiation field encompassing my house and yard.&amp;nbsp; </description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2003/11/30.html#a696</guid>
			<pubDate>Sun, 30 Nov 2003 16:30:57 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=696&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F11%2F30.html%23a696</comments>
			</item>
		<item>
			<title>Send Notepad Cruising!</title>
			<link>http://codewalkers.com/notepad.php</link>
			<description>&lt;P&gt;Help a guy who has been helping PHP programmers for free for a long while.&amp;nbsp; &lt;A href=&quot;http://notepad.codewalkers.com/&quot;&gt;Notepad&lt;/A&gt; hangs out at &lt;A href=&quot;http://www.codewalkers.com&quot;&gt;www.codewalkers.com&lt;/A&gt; answering people&apos;s questions for free.&amp;nbsp; He wants to go on the &lt;A href=&quot;http://www.phparch.com/cruise/&quot;&gt;PHPCruise&lt;/A&gt; and I daresay he deserves it.&amp;nbsp;&amp;nbsp;Codewalkers has set up a &lt;A href=&quot;http://codewalkers.com/notepad.php&quot;&gt;donation page&lt;/A&gt; for him and they&amp;nbsp;have already raised half of his trip cost.&amp;nbsp; Support the PHP community and thank an active participant!&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2003/11/29.html#a691</guid>
			<pubDate>Sat, 29 Nov 2003 15:54:42 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=691&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F11%2F29.html%23a691</comments>
			</item>
		<item>
			<title>The Underscore Hack</title>
			<link>http://www.pixy.cz/blogg/clanky/cssunderscorehack/</link>
			<description>&lt;P&gt;Well, cool. those crazy Internet Explorer stylesheet problems can be kind of resolved with this hack:&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.pixy.cz/blogg/clanky/cssunderscorehack/&quot;&gt;&lt;a href=&quot;http://www.pixy.cz/blogg/clanky/cssunderscorehack/&quot;&gt;http://www.pixy.cz/blogg/clanky/cssunderscorehack/&lt;/a&gt;&lt;/A&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2003/11/24.html#a690</guid>
			<pubDate>Mon, 24 Nov 2003 23:38:26 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=690&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F11%2F24.html%23a690</comments>
			</item>
		<item>
			<title>November TCWEBDEV Meeting Notes</title>
			<description>&lt;P&gt;&lt;FONT face=Geneva,Arial,Sans-Serif size=2&gt;just geek talk, sweet beautiful&amp;nbsp;geek talk.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The &lt;A href=&quot;http://www.tcwebdev.org&quot;&gt;tcwebdev&lt;/A&gt; meeting last night was all about graphics, discussion led by Justin Heideman.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;One&amp;nbsp;up and coming&amp;nbsp;graphics format&amp;nbsp;is &lt;A href=&quot;http://www.jpeg.org/JPEG2000.html&quot;&gt;jpeg2000&lt;/A&gt;.&amp;nbsp; 
&lt;UL&gt;
&lt;LI&gt;It has a better compression algorithm than regular jpeg and the main advantage is smaller file sizes.&amp;nbsp; 
&lt;LI&gt;Mozilla has a plug-in for it, but IE and photoshop and other programs will not recognize it yet.&amp;nbsp; 
&lt;LI&gt;If you want to open a picture in jpeg2000 format, download the free&amp;nbsp;&lt;A href=&quot;http://www.irfanview.com/main_download_engl.htm&quot;&gt;irfanview software&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Finally learned why Fireworks likes to save images as png files, because saving them as jpeg over and over again increases the loss that the compression brings.&amp;nbsp; PNG24 is lossless, so you don&apos;t have that problem 
&lt;LI&gt;PDF:&amp;nbsp; &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;A&amp;nbsp;reason to buy Adobe Distiller is that it can compress PDFs smaller than other software.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Color&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Suggestion to visit Target stores to take pictures and get good color combination ideas for web sites.&amp;nbsp;
&lt;LI&gt;Or buy a $5.00 color guide book full of pallettes &lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2003/11/07.html#a678</guid>
			<pubDate>Fri, 07 Nov 2003 10:41:00 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=678&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F11%2F07.html%23a678</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/technology/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>A warning to ye...</title>
			<description>&lt;P&gt;I can&apos;t impress upon ye enough:&amp;nbsp; set error_handling to E_ALL (verbose)&amp;nbsp;when developing PHP.&amp;nbsp; You will cut your errors in half.&amp;nbsp; You can do this in three ways:&amp;nbsp; 
&lt;OL&gt;
&lt;LI&gt;uncomment the following line in your php.ini file: error_reporting = E_ALL .&amp;nbsp; This will affect all PHP scripts 
&lt;LI&gt;add the line &lt;CODE&gt;error_reporting = 2047&lt;/CODE&gt; in&amp;nbsp;an .htaccess file.&amp;nbsp; This will affect only php files in or below the directory of the .htaccess file. 
&lt;LI&gt;add a line of code at the start of every php page: &lt;CODE&gt;error_reporting (E_ALL);&lt;/CODE&gt;&amp;nbsp; This will affect only the files that you alter.&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;After you do this you may get a whole page of warnings about undeclared variables.&amp;nbsp; This is a good thing, since it forces you to declare all variables and lets you know when you introduce new ones into the mix by mistake.&amp;nbsp; You will &amp;nbsp;at some point&amp;nbsp;mis-type variable names.&amp;nbsp; Without error reporting turned verbose, PHP accepts these mistakes as real variables:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;&lt;STRONG&gt;$species_code&lt;/STRONG&gt; = &quot;&lt;FONT color=green&gt;WAE&lt;/FONT&gt;&quot;; 
&lt;P&gt;&lt;FONT color=blue&gt;if&lt;/FONT&gt;(&lt;STRONG&gt;$speces_code&lt;/STRONG&gt; == &quot;&lt;FONT color=green&gt;WAE&lt;/FONT&gt;&quot;){ &lt;a href=&quot;//do&quot;&gt;//do&lt;/a&gt; stuff}&lt;/P&gt;&lt;/CODE&gt;
&lt;P&gt;The above code exhibits a bad feature of PHP; that you don&apos;t need to declare variables before using them. I introduced a variable called speces_code to the PHP script and since it is blank it is not equal to &quot;WAE&quot;. It just skipped over this comparison without a blink!
&lt;P&gt;Also, set error reporting to zero when in production so that visitors cannot peer into the inner workings of your code and directory structure when they encounter an error.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108008/categories/technology/2003/10/28.html#a663</guid>
			<pubDate>Tue, 28 Oct 2003 16:47:51 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108008&amp;amp;p=663&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108008%2F2003%2F10%2F28.html%23a663</comments>
			</item>
		</channel>
	</rss>
