<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.8 on Sat, 29 Jan 2005 20:36:21 GMT -->
<rss version="2.0">
	<channel>
		<title>Larry Sherrill: Java and Object Orientation</title>
		<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/</link>
		<description>Discusses tools, principles, and patterns relating to Java and Object Orientation.</description>
		<language>en-us</language>
		<copyright>Copyright 2005 Larry Sherrill</copyright>
		<lastBuildDate>Sat, 29 Jan 2005 20:36:21 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.0.8</generator>
		<managingEditor>larrypsherrill@yahoo.com</managingEditor>
		<webMaster>larrypsherrill@yahoo.com</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>23</hour>
			<hour>0</hour>
			<hour>1</hour>
			<hour>2</hour>
			<hour>3</hour>
			<hour>4</hour>
			<hour>14</hour>
			<hour>9</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2005/01/29.html#a36</link>
			<description>&lt;P&gt;During my rant on 11/11/2004, in which I was venting my frustration with web development, I made the following statement: &quot;Struts, JSF, tapestry, velocity, JSP are all Band-Aids for a broken paradigm.&quot; I should not have included Tapestry in that list. I assumed incorrectly that it was just another framework. It is not. If you are jaded on web development, you need to try Tapestry. It makes web development fun again. I especially like the fact that it works with HTML developers, not against them. I also should not have included Velocity in my rant, as I have not worked with. I cannot say anything pro or con about it. I stand by my statements about Struts, JSF, and JSP. I do not enjoy building web apps using an alphabet soup of technologies.&lt;/P&gt;
&lt;P&gt;Visit &lt;A href=&quot;http://jakarta.apache.org/tapestry&quot;&gt;Tapesty&lt;/A&gt;!&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2005/01/29.html#a36</guid>
			<pubDate>Sat, 29 Jan 2005 20:36:21 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/12/26.html#a35</link>
			<description>&lt;P&gt;&lt;A href=&quot;http://home.comcast.net/~larry.sherrill/&quot;&gt;CiLite&lt;/A&gt; is a continuous integration tool for Java projects. It is simple to set up and use. It uses a short Groovy script and a Quartz scheduler to periodically invoke an ant target in your build.xml. The result of the Ant invocation is mailed using Ant&apos;s inherent mail logger. Install Groovy, point to an Ant target in your build.xml, define your mail.properties (using the sample project as a model), and you&apos;re finished. Continuous integration does not need to be prohibitively complicated.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/12/26.html#a35</guid>
			<pubDate>Sun, 26 Dec 2004 19:52:56 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/12/26.html#a34</link>
			<description>&lt;FONT size=2&gt;
&lt;P&gt;A spectre is haunting Microsoft -- the spectre of Open Source.&lt;/P&gt;
&lt;P&gt;Software developers of all countries, unite!&lt;/P&gt;&lt;/FONT&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/12/26.html#a34</guid>
			<pubDate>Sun, 26 Dec 2004 19:40:38 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/11/11.html#a33</link>
			<description>&lt;FONT size=2&gt;
&lt;P&gt;Rant 1. I want information and device fusion (IDF). I want my television to show me who is at the front door. I want my stereo to read my email to me. I want my milk carton&apos;s RFID tag to tell my refrigerator which then alerts me when my milk has spoiled. I want to use my browser to see if my car&apos;s oil is dirty. I want to see/control my house while I&apos;m on vacation. I want to control my TV by selecting a program from yahoo&apos;s TV guide. I want my bedroom lights to flash if my back door is accidentally left unlocked at 1 AM. I want to receive a text message if my basement is flooding. Reading a manual, trying to determine is bit 35 should be a one or zero (or the modern day equivalent: configuring of windows or linux) won&apos;t make it. I want to do these things without the pain of typical computer software configuration. Currently, everything I&apos;ve mentioned above could be done. But not without manuals, custom programming, wires, hair-pulling, and hours of configuration pain. When will the computer industry evolve beyond requiring us to read manuals? It will require standards and it will require something beyond HTML. It will require us to expect more from a computer than either Windows or Linux currently provides. These things should be as simple as plugging in a light and turning on a switch.&lt;/P&gt;
&lt;P&gt;This morning I bought Mozart&amp;#146;s Sonata in C from ITunes over the internet, and played it on my stereo using Apple&amp;#146;s Airport Extension. This is fusion. (Thanks, John)&lt;/P&gt;
&lt;P&gt;This morning I used my browser to check on my bank balance. I also received an email alert that yesterday five purchases were made with my credit card. This is fusion.&lt;/P&gt;
&lt;P&gt;This morning I received a text message that the billing system at work was healthy as of 5:15 AM. This is fusion.&lt;/P&gt;
&lt;P&gt;This morning I used &lt;A href=&quot;http://www.bloglines.com/&quot;&gt;Bloglines&lt;/A&gt; to review 30 different blogs in a couple of minutes. This is fusion.&lt;/P&gt;
&lt;P&gt;I want all my important information to be fused with all the devices I want. Bank balances, credit card alerts, home lighting, car engine statistics, spoiled milk warnings. And I want it with the ease of plugging in a lamp. I think we&amp;#146;ve hit a plateua in the computer industry and the current state of configuration bit-twiddling and HTML development pain won&amp;#146;t get us there. That is the subject of Rant 2.&lt;/P&gt;
&lt;P&gt;Rant 2. In my opinion, HTML caused the internet bubble to burst. It is holding back the IDF (see above) revolution. Here is the scenario in the mid 90&amp;#146;s: sell venture capitalists on a web idea, develop a prototype, get some beta customers, add more features, get some real customers, add more features. The HTML development starts to bog down in a sea of complexity and alphabet soup: HTML, CSS, javascript, JSP, ASP, PHP,&amp;nbsp;EJB, &amp;#133; Maintenance costs rise, developing the application on a page-based HTML slows to a crawl. Customers begin to leave, CEOs start to panic and increase worker hours. Developers burn out and produce even less. Companies go out of business. Recession hits.&lt;/P&gt;
&lt;P&gt;Using Spring has awakened me to the realization that if something is painful (e.g., EJB) then it probably should be retired. Developing web apps is painful. Struts, JSF, tapestry, velocity, JSP are all Band-Aids for a broken paradigm. If you&amp;#146;re a developer, how many MVC frameworks have you learned trying to look for the magic solution? Compare this with the simplicity of developing a swing app in one language (Java) using a powerful refactoring browser such as Eclipse or IntelliJ. Maybe the solution is that the web should be a sea of services and the client decides on the rendering (although SOAP is currently a typically painful configuration process). Similar to the RSS readers but with interactivity and alert-setting. RSS news readers take semantic information and present it however they like. Perhaps we need Service Browsers or IDF browsers (see rant 1) with easy alert-setting capability. Just brainstorming here. Just as Spring has to potential to render EJBs obsolete, I think the that industry is ready for a new paradigm that renders the current HTML development cycle obsolete. Don&amp;#146;t get me wrong. Browsers and HTML provide a great level of convenience and power. But it could be so much more if development were simpler. The goal is not to myopically browse HTML sites, the goal is the fuse the information we need with our relevant devices (PCs, stereos, TVs, cell phones, PDAs).&lt;/P&gt;
&lt;P&gt;We need to break out of our current HTML-centric development paralysis; raise our expectations; and imagine and invent a richer/easier fusion of information and devices.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/11/11.html#a33</guid>
			<pubDate>Thu, 11 Nov 2004 23:16:50 GMT</pubDate>
			</item>
		<item>
			<link>http://www.springframework.org</link>
			<description>&lt;P&gt;I&apos;ve encountered several&amp;nbsp;milestones in the past five years that have changed the way I work. The first and most important milestone was becoming test-infected via junits.&lt;/P&gt;
&lt;P&gt;The second milesone was finding jboss, which made using EJBs moderately tolerable and affordable. I was ready to abandon EJBs (maybe that still would not have been a bad&amp;nbsp;decision). EJBs have always been an exercise in configuration minutia: endless fat books on J2ee, deployment descriptors, application.xml, ejb-jar.xml, ejb refs, et cetera ad nauseum. It does not feel like the simplest thing that could possibly work.&lt;/P&gt;
&lt;P&gt;I think I have now stumbled across another milestone: the &lt;A href=&quot;http://www.springframework.org/&quot;&gt;Spring Framework&lt;/A&gt;. This will definitely change and simplify the way I build applications. It is a framework designed to make j2ee easier--in many cases eliminating the need for EJBs altogether. I&apos;ve only start scratching the surface but I already learned how to greatly simplify jdbc coding by using the org.springframework.jdbc.object package and by using declarative transaction management provided by Spring&apos;s AOP capabilities.&lt;/P&gt;
&lt;P&gt;Several speakers at the recent Rocky Mountain Software Symposium stated that EJB 3.0 is being heavily influenced by the ideas in Spring (and other inversion of control containers) as well as Hibernate. EJB 3.0 will use annotated POJOs and POJIs (plain old Java interfaces). &lt;/P&gt;
&lt;P&gt;One of the motivations for Spring is to improve testability of j2ee applications. Perhaps, stated another way, test-driven development--which can mutate design when done correctly--is exposing the current design of EJB for the mess that it is. Here is&amp;nbsp;why Spring apps are more testable: 1) POJOs are easily testable outside of the j2ee container. 2) Spring&amp;nbsp;encourages the&amp;nbsp;use POJOs and POJIs. 3) Spring knows about your POJOs but they don&apos;t know about Spring. 4) Dependency injection provided by Spring makes it easy to mock or stub major portions of your code.&lt;/P&gt;
&lt;P&gt;I just heard of Spring a few weeks ago. How did I miss this? I had trouble understanding what it was for at first. I wanted to like it, but I didn&apos;t know why. :&amp;gt; &amp;nbsp;A few case studies or usage scenarios on the Spring website would help.&lt;/P&gt;
&lt;P&gt;Just got back from the Tattered Cover in Cherry Creek. I found Rod Johnson&apos;s book &lt;A href=&quot;http://www.amazon.com/exec/obidos/tg/detail/-/0764543857/qid=1085973448/sr=8-2/ref=pd_ka_2/103-7830040-3508601?v=glance&amp;amp;s=books&amp;amp;n=507846&quot;&gt;Expert One-on-One J2EE Design and Development&lt;/A&gt; which introduced the concepts and sample code that became Spring. Yes, it&apos;s another fat book on j2ee but this one is very different.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/05/30.html#a32</guid>
			<pubDate>Mon, 31 May 2004 04:51:13 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/03/01.html#a30</link>
			<description>I&apos;ve written a &lt;A href=&quot;http://radio.weblogs.com/0120174/gems/wastewater-agility.pdf&quot;&gt;white paper&lt;/A&gt; for my current job with the City and County of Denver that describes the agile practices that we are following and/or working towards.&amp;nbsp;We are trying to evangelize the city.</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/03/01.html#a30</guid>
			<pubDate>Tue, 02 Mar 2004 03:05:18 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/02/29.html#a29</link>
			<description>&lt;P&gt;A couple of nice quotes from Ward Cunnigham regarding test driven development (made in the Yahoo agile-testing forum under the topic &lt;U&gt;Testing and &quot;smooth pace&lt;/U&gt;&quot; on 2/29/2004):&lt;/P&gt;
&lt;P&gt;&quot;TDD makes for a slow and plodding week, so much so that by Friday you are amazed to be done.&quot;&lt;/P&gt;
&lt;P&gt;&quot;Javadoc is a perfect example of something that must be kept in sync. If you&apos;ve written a lot of javadoc for a function, you&apos;re not likely to push responsibilities into or out of it even if things will code out better if you do. Its ironic that so much effort is devoted to javadoc in the name of downstream maintainability when just making the program half the size does so much more.&quot;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/02/29.html#a29</guid>
			<pubDate>Mon, 01 Mar 2004 05:16:52 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/02/17.html#a26</link>
			<description>&lt;P&gt;I&apos;ve been working in a&amp;nbsp;four-person war room for four months now and I have a couple of random thoughts.&lt;/P&gt;
&lt;P&gt;First, setting weekly iteration goals is very productive because it keeps the team highly focused. However, there is a potential trap. A team that uses weekly goal setting can get caught in a pattern of doing as much as they can possibly squeeze in, which after a period of time, becomes an unsustainable march. The team becomes haggard and new ideas stop flowing.&amp;nbsp;My current manager encourages research time, but unfortunately, we developers have forgotten to listen to him and incorporate free research time into our weekly goal setting.&amp;nbsp;The solution is to schedule or set aside R&amp;amp;D time in the weekly goals. Projects need the accidental discoveries that result from unstructured, chaotic&amp;nbsp;research.&lt;/P&gt;
&lt;P&gt;My second random thought is based on the second law of thermodynamics: developers, left undisturbed, will gravitate to one section of the code and stay there permanently. Also known as stove-piping, code-ownership, and going dark. Resisting this natural law of programming requires a constant counter pressure to break developers out of their comfort zones and into different areas. XP counters this by pairing. Other agile projects that are not pairing need to&amp;nbsp;have an equivalent&amp;nbsp;strategy to deal with this.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2004/02/17.html#a26</guid>
			<pubDate>Wed, 18 Feb 2004 05:04:45 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/12/09.html#a25</link>
			<description>&lt;P&gt;This week I have been experimenting with an acceptance testing technique I call semi-automatic testing. Although automated junit testing is essential for unit testing, customers need to see more than a green light for acceptance tests. For customers to accept it, they need to use it. &lt;/P&gt;
&lt;P&gt;For semi-automatic testing, I create test cases using MS-Word and embed hyperlinks in the document&amp;nbsp;to exercise JSPs (utilizing dbtags) running in JBoss as a web app (e.g., mytesthelper.war). These JSPs alter database state to setup the test data as necessary.&amp;nbsp;Testers exercise the target application during the tests, but they also use the embedded hyperlinks to setup external data at key steps in the test. The tester will have a paper copy of the test for note taking and recording pass/fail status, but&amp;nbsp;the Word document will also be on the screen so that the tester can click on the hyperlinks. &lt;/P&gt;
&lt;P&gt;Here is a trivial example representing a Word document. The underlines are the hyperlinks to be invoked by the tester using ctrl-click. &lt;/P&gt;
&lt;P&gt;Test Case: Make a payment&lt;BR&gt;1. &lt;U&gt;Intialize database&lt;/U&gt;&lt;BR&gt;2. &lt;U&gt;Make an account&lt;/U&gt;&lt;BR&gt;3. Go to url &lt;U&gt;&lt;a href=&quot;http://someplace/mywebapp&quot;&gt;http://someplace/mywebapp&lt;/a&gt;&lt;/U&gt;&lt;BR&gt;4. Login using &quot;user&quot; and &quot;password&quot;. Verify that ...&lt;BR&gt;5. Click &lt;B&gt;View Balance&lt;/B&gt;. Verify that the balance is 100.00&lt;BR&gt;6. &lt;U&gt;Make a payment&lt;/U&gt;&lt;BR&gt;7. Click &lt;B&gt;View Balance&lt;/B&gt;, Verify that the balance is 0.00&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;We develop the tests in conjunction with the customers when we can. At other times, we take our best guess, develop the tests without the customer, and then use it as a starting point for discussion when the customer returns. We may use an Instructional Designer with QC experience to help develop the tests and make them into&amp;nbsp;a more polished training tool. We intend to use these test cases for customer testing/training, requirements clarification, new hire training, and for regression testing. One of the benefits of using Word is that a tester/trainee can easily print out all the test cases to review them as a whole. The current application is small so I don&apos;t know if it will scale up to a larger project. For now, however, it is simple and good enough. &lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/12/09.html#a25</guid>
			<pubDate>Wed, 10 Dec 2003 05:20:04 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/10/01.html#a24</link>
			<description>&lt;FONT size=2&gt;
&lt;P&gt;A few years ago, I read a book entitled &lt;A href=&quot;http://www.amazon.com/exec/obidos/ASIN/0201342782/qid%3D1065017827/sr%3D11-1/ref%3Dsr%5F11%5F1/102-0863930-0916105&quot;&gt;Constructing the User Interface with Statecharts&lt;/A&gt; by Ian Horrocks. Using those ideas, I occasionally use state charts as disposable artifacts on large projects to nail down a confusing user interface problem. Each screen becomes a state and the user actions are the events. The diagrams end up looking like the diagram of a regular expression state chart, which is appropriate, because the user actions form a language. You can glance at a state chart and visually identify confusing aspects of the user language, which will translate into user confusion. On a large project, it makes no sense to try to document the entire system with state charts. However, on a small, haiku-like, J2ME application (note to self: don&amp;#146;t ever say haiku-like again), the entire state chart can be drawn on one page with room to spare. State charts are very good at precisely specifying an application because of their formality.&lt;/P&gt;&lt;/FONT&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/10/01.html#a24</guid>
			<pubDate>Wed, 01 Oct 2003 22:23:19 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/09/30.html#a23</link>
			<description>&lt;FONT size=2&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;A href=&quot;http://antenna.sourceforge.net/&quot;&gt;&lt;FONT size=2&gt;Antenna &lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;is a set of custom ant tasks that compile, pre-verify, and package a J2ME application. It can also invoke an emulator in which to run your J2ME application. Therefore, with a double-click of an ant task in an IntelliJ window, you can do the entire build cycle and bring up a cell phone emulator with your application running in it. Nokia has a very good pdf file &lt;/FONT&gt;&lt;A href=&quot;http://ncsp.forum.nokia.com/downloads/nokia/documents/Using_Ant_and_Antenna_MIDP_v1_0.pdf&quot;&gt;&lt;FONT size=2&gt;(Using Ant and Antenna MIDP v1.0)&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; describing the use of antenna. This document has a more complete example than the docs from antenna and will help you get successfully started with antenna.&amp;nbsp;The KToolBar from Sun and Nokia&amp;#146;s equivalent environment are fine for playing around with; but if you want to develop in a serious and unencumbered IntelliJ/Ant fashion, then you need ant tasks as opposed to endlessly clicking around in GUI tools.&lt;/P&gt;
&lt;P&gt;Nokia appears to be very serious about wooing Java developers. Registering with them to download their developer kits was hassle free. There are a lot of good documents to help J2ME developers. Here is an &lt;/FONT&gt;&lt;A href=&quot;http://ncsp.forum.nokia.com/content/?b=content&amp;amp;cid=17&amp;amp;f=rss10&quot;&gt;&lt;FONT size=2&gt;RSS &lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;feed of their top 10 Java developer downloads. They also have several different emulators available for download.&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/FONT&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/09/30.html#a23</guid>
			<pubDate>Wed, 01 Oct 2003 02:07:54 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/09/20.html#a22</link>
			<description>&lt;FONT size=2&gt;
&lt;P&gt;Went to the Tattered Cover tonight and gravitated to the Computer section. I was looking for something on CruiseControl so I took a look at Kent Beck&amp;#146;s &lt;A href=&quot;http://www.amazon.com/exec/obidos/tg/detail/-/0321146530/qid=1064115691/sr=8-1/ref=sr_8_1/104-6947437-9119165?v=glance&amp;amp;s=books&amp;amp;n=507846&quot;&gt;Test-Driven Development&lt;/A&gt;. I got sidetracked when a subsection in Chapter 26 entitled in &quot;Cheap desk, Nice chair&quot; caught my eye. In it Kent says:&lt;/P&gt;
&lt;P&gt;&quot;What physical setup should you use for TDD? Get a really nice chair, skimping on the rest of the furniture if necessary.&quot;...&quot;My solution is to use cheap, ugly folding tables for my computers, but buy the best chairs I can find.&quot;&lt;/P&gt;
&lt;P&gt;I guess Agile Development will have arrived when the Tattered Cover has a shelf for War Room design in the Interior Design section.&lt;/P&gt;&lt;/FONT&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/09/20.html#a22</guid>
			<pubDate>Sun, 21 Sep 2003 04:47:28 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/09/20.html#a21</link>
			<description>&lt;FONT size=2&gt;
&lt;P&gt;I&amp;#146;m going to be starting a new job on Nov 1, 2003. My new boss has kindly invited me to meet with his team for a discussion of how to design the new war room. In the spirit of agile projects, which reject expensive UML tools in favor of cheap whiteboards, I favor cheap 3 by 6-foot tables for each developer versus expensive monster desks. This gives each developer 18 square feet of workspace. Also, using a table instead of a desk let&amp;#146;s two or three developers gather around a monitor without their knees hitting desk drawers. The tables should be away from the walls so that whiteboards can be easily accessed for impromptu UML sessions and GUI sketching. The tables could be in two rows, facing each other, so that developers can look up and talk without twisting. The chairs should be where the money goes&amp;#151; comfortable ergonomic chairs with good wheels so that developers can easily roll over to their neighbor&amp;#146;s station.&lt;/P&gt;
&lt;P&gt;The thing I&amp;#146;m excited about is the fact that we are having this meeting at all. In the end, my preferences will be just one set of ideas thrown in the pot. This is a good metaphor for how software should be developed: group design, the team is the architect. The design of the war room will be the team&amp;#146;s design, not the design of a chief architect on high. Especially for smaller teams, I don&amp;#146;t believe in the concept of the chief architect anymore. In the process of creating software, it&amp;nbsp;is too difficult for one person to think of everything.&amp;nbsp;A project suffers when it is the product of one person&amp;#146;s myopic point-of-view.&lt;/P&gt;
&lt;P&gt;In my experience, a manager who not only understands what it means for a software team to be agile but also knows how to actively promote agility is very rare. I&amp;#146;m looking forward to being in such an environment.&lt;/P&gt;&lt;/FONT&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/09/20.html#a21</guid>
			<pubDate>Sat, 20 Sep 2003 20:50:31 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/09/17.html#a20</link>
			<description>&lt;A href=&quot;http://www.bloglines.com/&quot;&gt;BlogLines&lt;/A&gt; is a web-based rss new aggregator. Unlike other news aggregators, this one runs on the BlogLines server; therefore, you can access it from anywhere using a browser. It keeps track of what you&apos;ve read, allows you to bookmark favorite articles, and has a notification system in the form of a tiny browser window that let&apos;s you know when there is a new article. It&apos;s clean, simple, professional, and free. It is a good example of how a web-based, server-side solution can replace the need for client-side software.</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/09/17.html#a20</guid>
			<pubDate>Thu, 18 Sep 2003 04:13:49 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/07/06.html#a19</link>
			<description>I am still working on a n-machine cache system.&amp;nbsp;Each&amp;nbsp;machine&amp;nbsp;holds a subset of the domain (a.k.a., domain prime) and can answer queries requiring a complex object graph (we expect 2 million queries a day soon). I am using a JBoss cluster for&amp;nbsp;the query machines. The problem is that the client does not know&amp;nbsp;which query boxes are running, so I configure the InitialContext of the client using cluster identity rather than machine identity. Therefore, any server in the cluster that is currently running can answer the query. This brings me to my point: JBoss clustering is based on &lt;A href=&quot;http://www.javagroups.com/&quot;&gt;javagroups&lt;/A&gt;. This is an extremely cool and apparently rock-solid api that implements group functionality based on multicasting&amp;nbsp;and a configurable protocol stack. One of the included sample apps extends a HashMap with a DistributableHashMap. Think&amp;nbsp;transparently-distributed local memory. When an element is put into the HashMap of one VM, it shows up magically on all the other VM&apos;s HashMaps that belong to the group. JavaGroups knows when new members join or leave the group. To better understand JBoss clustering, take a look at JavaGroups. JBoss points out that JavaGroups could be swapped out for another implmentation, but for me, studying JavaGroups made the JBoss clustering stuff click.</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/07/06.html#a19</guid>
			<pubDate>Sun, 06 Jul 2003 16:19:26 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/05/31.html#a16</link>
			<description>&lt;P&gt;&lt;A href=&quot;http://www.dobbse.net/&quot;&gt;Eric Dobbs&lt;/A&gt; introduced me to &lt;A href=&quot;http://www.easymock.org/&quot;&gt;easymock&lt;/A&gt; a couple of weeks ago. This java library lets you incorporate mock object testing into junits. I&amp;#146;ve been looking for a good place to try it out and settled on a JMS-based distributed caching system that I&amp;#146;m writing for my current employer.&lt;/P&gt;
&lt;P&gt;The old way to junit the onMessage method of a MessageListener requires a running JMS server, an InitialContext, a connection, a session, and a call to session.createObjectMessage to create an ObjectMessage. You then set the payload on the ObjectMessage and invoke onMessage, passing in the ObjectMessage as the parameter.&lt;/P&gt;
&lt;P&gt;But with easymock, you simply create a mockObjectMessage, specify the payload object to be returned when message.getObject is called, and then invoke onMessage, passing in the mockObjectMessage as the parameter. No JMS server, no initial context, no session, and no connection are required. The result of this approach is a unit test that requires much less infrastructure.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/05/31.html#a16</guid>
			<pubDate>Sat, 31 May 2003 23:06:19 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/05/11.html#a14</link>
			<description>Eric M. Burke and Brian M. Coyner have written a short article entitled &lt;A href=&quot;http://www.onjava.com/pub/a/onjava/2003/04/02/javaxpckbk.html&quot;&gt;&lt;I&gt;Top 12 Reasons to Write Unit Tests&lt;/I&gt;.&lt;/A&gt; I especially like that they mention that it makes development faster and that it improves the design. 
&lt;P&gt;For me,&amp;nbsp;design is improved because by the time the classes are released, they have had at least one user--the developer. I typically fiddle with the API by exercising&amp;nbsp;it via unit tests&amp;nbsp;until it feels right--trying to&amp;nbsp;balance&amp;nbsp;it from the perspective of&amp;nbsp;programmer usability, good OO design, and good-enough criteria.&lt;/P&gt;
&lt;P&gt;Unit tests make development faster, because, to use a military metaphor, once you have taken ground, you never give it up, you always move forward.&lt;/P&gt;
&lt;H2&gt;&lt;/H2&gt;</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/05/11.html#a14</guid>
			<pubDate>Mon, 12 May 2003 02:19:59 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/05/02.html#a11</link>
			<description>Just read chapter 20 of Agile Software Development by R. Martin. It explains all the metrics in the JDepend package. Don&apos;t know who inspired whom in terms of the tool versus book development, but the moral of the story is: download jdepend and read chapter 20 hand-in-hand. Your package dependencies will become more sane.</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/05/02.html#a11</guid>
			<pubDate>Fri, 02 May 2003 17:43:25 GMT</pubDate>
			</item>
		<item>
			<link>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/03/07.html#a7</link>
			<description>Just found a great tool called &lt;a href=&quot;http://www.clarkware.com/software/JDepend.html&quot;&gt;JDepend&lt;/A&gt; by Mike Clark at
Clarkware Consulting, Inc. It analyses package dependencies. It reports efferent dependencies (this package dependsOn other packages) and afferent dependencies (other packages dependsOn this package). It also reports cyclic dependencies, which can be broken by using the dependency inversion principle (DIP).</description>
			<guid>http://radio.weblogs.com/0120174/categories/javaAndObjectOrientation/2003/03/07.html#a7</guid>
			<pubDate>Fri, 07 Mar 2003 13:16:01 GMT</pubDate>
			</item>
		</channel>
	</rss>
