<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8600547691084851203</id><updated>2011-04-21T13:35:15.468-07:00</updated><category term='OpenEJB1.0'/><category term='IBM'/><category term='WSAD'/><category term='Documentation'/><category term='IntelliJ'/><category term='RAD'/><category term='Crucible'/><category term='Refactoring'/><category term='software engineering'/><category term='Testing'/><title type='text'>Intelligent? Software Engineering</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-2580871237561447038</id><published>2006-11-14T07:52:00.000-08:00</published><updated>2006-11-14T07:56:18.020-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSAD'/><title type='text'>WSAD and Maven - playing together</title><content type='html'>Ok, from what I could determine the latest (and now no longer supported IBM's WSAD) is akin to a 2.1.3 Eclipse build (just for those people still tied to this IDE). To integrate Maven with WSAD, follow these steps:&lt;br /&gt;&lt;br /&gt;WSAD (requires a project to have a Maven project file, ie. project.xml)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Select Window / Preferences&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Select Java -&gt; Classpath Variables&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; Select 'New'; type MAVEN_REPO for name; and location of the Maven repository for path (specific to the view of each developer)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Go to the project's location; checkout the .classpath and .project files type maven eclipse (this will generate the accurate classpaths according to the Maven project.xml descriptor).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;'Refresh' your project space; you will notice that under Properties -&gt; Java Build Path that all libraries have been updated with the Maven repository (and not hardcoded)&lt;/li&gt;&lt;/ul&gt;No more hardcoded libraries and one can check in the .classpath, and .project files for a seamless, defined, development environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-2580871237561447038?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/2580871237561447038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=2580871237561447038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/2580871237561447038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/2580871237561447038'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/11/wsad-and-maven-playing-together.html' title='WSAD and Maven - playing together'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-3772961236334124235</id><published>2006-11-01T03:50:00.000-08:00</published><updated>2006-11-01T04:09:33.886-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><title type='text'>Writing tests in development</title><content type='html'>I recall on a number of previous projects that there was always some confusion around the type of tests that were written in development; that is, unit tests, integration tests, component tests, system tests, etc.. Of interest, then, I recently read this article from &lt;a href="http://www-128.ibm.com/developerworks/java/library/j-cq10316/index.html?ca=drs-"&gt;IBM  developer works&lt;/a&gt; (a truly interesting RSS feed for those in Java software engineering). &lt;br /&gt;&lt;br /&gt;Basically, it states that tests need to be categorised into:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;unit tests: single-class driven tests; isolating a piece of functionality (hopefully only one public interface per class!)&lt;/li&gt;&lt;li&gt;component tests: multiple-class driven tests; often including core pieces of logic and functionality&lt;br /&gt;&lt;/li&gt;&lt;li&gt;system tests: end-to-end testing; high-level, arbitrary logic executed; does the application work?&lt;/li&gt;&lt;/ol&gt;Importantly, it defines that &lt;span style="font-weight: bold;"&gt;the time taken for each category will increase significantly&lt;/span&gt; and therefore there should be multiple build / test loops with their own individual reports. So the unit testing which is used everyday is not corrupted by the component testing (e.g. driven by test defects)  or system testing (e.g. driven by releases).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-3772961236334124235?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/3772961236334124235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=3772961236334124235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/3772961236334124235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/3772961236334124235'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/11/writing-tests-in-development.html' title='Writing tests in development'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-7954657155681854295</id><published>2006-10-21T06:20:00.000-07:00</published><updated>2006-10-29T06:24:21.317-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Refactoring'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Documentation'/><title type='text'>3 mantras of modern day software development</title><content type='html'>Ok, I have been an avid reader of 43 folders for a while now. This week, however, they published a 3-part article on '&lt;a href="http://www.43folders.com/2006/10/18/robert-peake-part-two/"&gt;getting things done - software development&lt;/a&gt;' - and I thought that I would reiterate these mantras, how to apply with modern-day tools and discuss what happens if they are not applied.&lt;br /&gt;&lt;br /&gt;So what are the 3 mantras: test, refactor, document! Ok, a caveat to these mantras, this should only be followed if you want to maintain (and improve) an application for more than a year, but if you don't want to do this, what sort of business case do you have?!&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;TEST: despite overwhelming industry material over the last few years about the advantages of unit testing, there still seem to be a significant number of projects that do not enforce unit testing. The advantages are clear, unit testing enhances design (e.g. that there should be only one public API per class), enhances quality (e.g. combined with a coverage tool, all branches of logic are run, and verified in terms of expected behaviour), and most importantly this provides a baseline for the application's operation and maintenance. So, with a complete set of unit tests (i.e. coverage greater than 90%), &lt;span style="font-weight: bold;"&gt;any change to the underlying code base can be made by anyone &lt;/span&gt;because if the existing functionality is compromised a unit test will break. Therefore, immediately new developers are able to confidently make changes to the application, regardless of the size or complexity. In Java, one needs to look no further than JUnit, TestNG, etc..&lt;br /&gt;&lt;/li&gt;&lt;li&gt;REFACTOR: refactoring is the ability for developers to change, rework, and enhance any exisiting code from an application that is required. Why? well this enables applications to be modernised and for existing, or more importantly future flaws to be corrected and countered. Not every line of code is written at the same quality as every other line of code (due to poor requirements, inexperience, poor implementation, etc.), with refactoring (as long as it is controlled) then the application's code base is continually being refined and in conjunction with unit tests, provides a robust, modifiable approach to maintaining application longetivity. A prerequisite for refactoring a featured IDE - and &lt;a href="http://www.jetbrains.com/intellij"&gt;IntelliJ 6.0&lt;/a&gt; cannot be beaten in this regard.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;DOCUMENTATION: probaly the most controversial; I used to think that unit tests alone could document an application, but in order to capture the brainstorming, design sessions, implementation decisions made in developing an application than some form of documentation is needed. I am a firm believer that all documentation related to an application: namely arhcitecture, requirements, design sessions, implementation, and maintenance should be held in a wiki with the condition that it has Google-like search features. To this end, &lt;a href="http://www.atlassian.com/confluence"&gt;Confluence&lt;/a&gt; must be the only option, and I see it as almost standard to any software development.&lt;/li&gt;&lt;/ol&gt;Without these approaches, I would foresee significant difficulty in maintaining any application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-7954657155681854295?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/7954657155681854295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=7954657155681854295' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/7954657155681854295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/7954657155681854295'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/10/3-mantras-of-modern-day-software.html' title='3 mantras of modern day software development'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-3490780970226039357</id><published>2006-10-17T22:41:00.000-07:00</published><updated>2006-10-21T06:58:24.252-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><title type='text'>Design and development</title><content type='html'>Just recently read an &lt;a href="http://www.wired.com/news/columns/cultofmac/0,71956-0.html?tw=rss.index"&gt;article in Wired as to how the iPod was developed&lt;/a&gt;; one byline in particular caught my attention:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Apple's designers spend 10 percent of their time doing traditional industrial design: coming up with ideas, drawing, making models, brainstorming, and they spend 90 percent of their time working with manufacturing, figuring out how to implement their ideas."&lt;/blockquote&gt;&lt;br /&gt;No argument could have been described more aptly as to relationship between solution architecture and development. That is, design is important, it is critical that it is conducted at the beginning, but in the end, it is in the implementation that &lt;span style="font-weight: bold;"&gt;real&lt;/span&gt; issues arise. It is the 'figuring' out how to deal with these issues and implement the design where the focus of architects and team leads should be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-3490780970226039357?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/3490780970226039357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=3490780970226039357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/3490780970226039357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/3490780970226039357'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/10/development.html' title='Design and development'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-5057841315583518476</id><published>2006-10-08T10:43:00.000-07:00</published><updated>2006-10-08T10:46:06.388-07:00</updated><title type='text'>Software development is easy</title><content type='html'>Ok, I have decided to create a presentation (and indeed a white paper, if I truly become inspired) describing why enterprise software development is easy, and what companies should be expecting from software vendors in terms of quality. Expect draft - &lt;span style="font-style: italic;"&gt;beta&lt;/span&gt; soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-5057841315583518476?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/5057841315583518476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=5057841315583518476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/5057841315583518476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/5057841315583518476'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/10/software-development-is-easy.html' title='Software development is easy'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-701310765785874220</id><published>2006-10-06T05:41:00.000-07:00</published><updated>2006-10-06T05:50:20.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Crucible'/><title type='text'>Crucible - code reviewing tool</title><content type='html'>I was recently reading an excellent article on the development of a 'coding factory'; in this article it referenced &lt;a href="http://www.cenqua.com/crucible/"&gt;Crucible &lt;/a&gt;as a code review tool. I registered for EAP and downloaded version 0.7.&lt;br /&gt;&lt;br /&gt;I was very impressed with this tool (despite its inability to support IBM Clearcase as a SCM). Crucible is a code-reviewing servelt / web tool which hooks into the project's SCM. Once hooked in, all code can be reviewed and comments inlined. The main advantage of this is that it allows code reviews to be done &lt;span style="font-weight: bold;"&gt;continuously&lt;/span&gt;. Much like pairing and the obvious advantages in quality with which this provides, Crucible allows for other developer's to touch and review the code leave comments that relate to particular lines / patterns. A workflow is automatically generated allowing the comments on the code to be looked at, and if necessary refactored into the code. I can see that the main advantage of this would be onshore / offshore development as it would allow online review and feedback loops to be aligned to the project / iteration lifecycle. Secondary to this, it is a great way for more senior developers to break new starters / graduates out of poor coding styles , or even as a means to stage gate code going to test / production.&lt;br /&gt;&lt;br /&gt;Now if only I could work on a project that used subversion or cvs to test this out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-701310765785874220?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/701310765785874220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=701310765785874220' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/701310765785874220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/701310765785874220'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/10/crucible-code-reviewing-tool.html' title='Crucible - code reviewing tool'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-6333865025133151059</id><published>2006-10-03T03:56:00.000-07:00</published><updated>2006-10-03T03:59:27.447-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IntelliJ'/><title type='text'>IntelliJ 6.0 released and a tip!</title><content type='html'>Yes, having used IntelliJ for the past 5 years now, I was pleased to see IntelliJ 6.0 released, although since I am not on Java 5 project - I can't test many of its juicier features. Nonetheless, it appears the best version ever.&lt;br /&gt;&lt;br /&gt;And if you are getting some performance issues for IntelliJ on Windows when &lt;alt-tab&gt; into IntelliJ:&lt;br /&gt;&lt;br /&gt;&lt;/alt-tab&gt;&lt;ol&gt;&lt;li&gt;&lt;alt-tab&gt;go to Settings -&gt; General -&gt; toggle Synchronize files on frame activation;&lt;/alt-tab&gt;&lt;/li&gt;&lt;li&gt;set JDK (for running IntelliJ) to version 6 Mustang; by setting IDEA_HOME and overriding 'idea.no.jdk.check=true' in the idea.properties file&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-6333865025133151059?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/6333865025133151059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=6333865025133151059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/6333865025133151059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/6333865025133151059'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/10/intellij-60-released-and-tip.html' title='IntelliJ 6.0 released and a tip!'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-1076715812725537597</id><published>2006-09-13T04:45:00.000-07:00</published><updated>2006-09-13T08:02:12.265-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='RAD'/><category scheme='http://www.blogger.com/atom/ns#' term='WSAD'/><title type='text'>RAD - 'the evil WSAD legacy' strikes back</title><content type='html'>Ok, interestingly I read that I&lt;a href="http://www-03.ibm.com/developerworks/blogs/page/woolf?entry=wsad_5_1_support_ends"&gt;BM will not support WSAD from September 30th, 2006&lt;/a&gt;; so inevitably that means the big corporates will migrate to RAD (IBM's Rational Application Developer) over the next year.&lt;br /&gt;&lt;br /&gt;The experience I have had with RAD is minimal. Of interest, I did, however, try and import a legacy J2EE project which was being developed and maintained with WSAD. RAD was unable to do this. &lt;br /&gt;&lt;br /&gt;Let me clarify this - RAD was able to import all the source, ejb folders and the J2EE project was able to compile. The RMIC deployment however was significantly flawed. The only theories I have at the moment are:&lt;br /&gt;&lt;br /&gt;(1) WSAD embeds IBM-centric descriptors in the configuration of EJBs (in particular entity beans) that are not fully supported in RAD&lt;br /&gt;(2) the RMIC deployment tool between WSAD and RAD is not the same (requires some feature to deply RMIC code like WSAD)&lt;br /&gt;(3) more stringent validation occurs in the RMIC deployment of RAD over WSAD&lt;br /&gt;(4) updates to libraries (e.g. database drivers) causes errors in the OR mappings&lt;br /&gt;&lt;br /&gt;Unfortunately, for the J2EE legacy project I am working on, this means that WSAD is no longer supported and RAD cannot support it! And indeed the error messages that RAD has produced have been highly ineffectual.&lt;br /&gt;&lt;br /&gt;So IntelliJ? well that would be a great! but like any high-quality IDE it does not allow cyclic dependencies. So what now?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-1076715812725537597?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/1076715812725537597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=1076715812725537597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/1076715812725537597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/1076715812725537597'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/09/rad-evil-wsad-legacy-strikes-back.html' title='RAD - &apos;the evil WSAD legacy&apos; strikes back'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-4102027553826518730</id><published>2006-09-12T06:22:00.000-07:00</published><updated>2006-09-12T06:24:25.291-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IntelliJ'/><title type='text'>IntelliJ live templates</title><content type='html'>I know, I know a lot of other people have done this; but I am continually working in IntelliJ and keep losing the live templates I write, so whenever, I need one, I will just update this post.&lt;br /&gt;&lt;br /&gt;JUnit test&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void test$METHOD_TO_TEST$() throws Exception {&lt;br /&gt;    $END$&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;JUnit test (fail condition)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void test$METHOD_TO_TEST$() throws Exception {&lt;br /&gt;    try {&lt;br /&gt;        $FAIL_CONDITION$&lt;br /&gt;        fail();&lt;br /&gt;    }&lt;br /&gt;    catch ($EXCEPTION$ $EXCEPTION_ABBREVIATION$)&lt;br /&gt;    { }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-4102027553826518730?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/4102027553826518730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=4102027553826518730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/4102027553826518730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/4102027553826518730'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/09/intellij-live-templates.html' title='IntelliJ live templates'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-7328403178543386968</id><published>2006-09-12T03:49:00.000-07:00</published><updated>2006-09-12T03:55:06.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='WSAD'/><title type='text'>J2EE development and the 'evil WSAD legacy'</title><content type='html'>Around 2 years ago, I read a blog from a prominent software engineer in Melbourne (Jon Eaves) who posted about the &lt;a href="http://www.eaves.org/blog-archive/000081.html"&gt;'evils' of Websphere Application Developer&lt;/a&gt; - having never used it, I read with curiosity and this reaffirmed my own development management of the team I was running at the time, in using: IntelliJ for an IDE, Maven for an independent test/build/development management system, and predefined, one-per-developer based IBM Webpshere Application Server (to which developers deployed to).&lt;br /&gt;&lt;br /&gt;2 years forward (and as mentioned before, working on a legacy J2EE project) - I am using IBM's Eclipse2.0-based WSAD and a 1 hour + ANT development management system. After using it for a week, there are several key characteristics of WSAD which seem to engender poor code and development practises:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In-built pseudo 'test' Websphere Application Server; what is the rationale in deploying to a IDE-based server? if everything deploys what has this &lt;span style="font-style: italic;"&gt;actually proven&lt;/span&gt;? it has not been deployed on a Websphere Application Server and does not mitigate any of the risk associated with this. If anything, it promotes point-and0click testing and runtime debugging to be used as a substitute for unit testing. A better idea would be to have WSAD / RAD, etc. to have an extensible / callable  EJB container that could be invoked off a unit testing framework such as JUnit, TestNG such that unit tests of legacy EJB2.0 code actually be tested. Assumptions regarding the full application deployment could then be verified on developer instances of WAS (and with integration tests).&lt;/li&gt;&lt;li&gt;Non-standards based directory structure; if WSAD / RAD is going to provide Wizards to set up a new project - then conform to the industry standards in terms of directory structure, or at least allow any directory structure to be used. Currently, WSAD imposes a directory structure.&lt;/li&gt;&lt;li&gt;Non-standards based artifact generation. Upon seeing the monolithic ANT development management process, I thought, I would be easy able to refactor the constituent jars, wars, and ejbs of the project. Unfortunately, this is not possible because IBM introduces its own bindings in the ejb-jar.xml such that it does not even conform to the schema - nonetheless it is able to be deployed on WSAD, WAS. Now only through WSAD (or by calling WAS libraries) is a deployment possible - complete vendor lock-in!&lt;/li&gt;&lt;li&gt;Loose intra / inter project error checking - WSAD allows projects to have cyclic dependencies - when is this ever a maintainable approach? Error checking within a project is also poor (somewhat an artifact of Eclipse2.0).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Extremely poor IDE responsiveness / performance on projects with multiple modules.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The 'evil WSAD legacy' results :- J2EE projects that are WSAD-bound (i.e. not able to develop / develop in any other IDE), poorly defined, poorly error-checked, and poorly tested. Of course, this is somewhat dependent on the developers that worked on the project in the first place - but with WSAD's loose industry compliance - it is difficult to see how any significant J2EE project will be maintainable in the long run if it has been developed, and continues to be devloped on WSAD.&lt;br /&gt;&lt;br /&gt;So what do all the projects that have been run on WSAD do in the next 2-3 years when dealing with this legacy unmaintanenable code ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-7328403178543386968?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/7328403178543386968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=7328403178543386968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/7328403178543386968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/7328403178543386968'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/09/j2ee-development-and-evil-wsad-legacy.html' title='J2EE development and the &apos;evil WSAD legacy&apos;'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-8726996907095210673</id><published>2006-09-06T08:43:00.000-07:00</published><updated>2006-09-07T04:05:31.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenEJB1.0'/><title type='text'>OpenEJB 1.0</title><content type='html'>I am currently working on a legacy J2EE project, which requires some rework to its EJB  2.0 implementation (e.g. session beans, entity beans). To do this, I investigated OpenEJB 1.0 - this open source library aims to establish a J2EE container inside  a unit test. The aim of this is to facilitate the unit testing of EJBs. A thorough investigation revealed that OpenEJB 1.0 should only be used for lightweight &lt;span style="font-weight: bold; font-style: italic;"&gt;session bean based only EJB&lt;/span&gt; &lt;span style="font-style: italic; font-weight: bold;"&gt;implementations&lt;/span&gt;.&lt;span style="font-style: italic;"&gt; &lt;/span&gt;I was able to successfully unit test session bean interfaces on session beans which did not call any other EJBs, or if so, only other session beans (e.g. session beans following the command pattern). Here are the steps I followed to unit test the session beans:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;copy the OpenEJB default 'logging.conf' and 'openejb.conf' to a properties directory in your project's unit test classpath; ensure that your log4j (through log4j.properties) configuration is outputting to the console (as the logging of OpenEJB is very useful at runtime to find JNDI references)&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;configure OpenEJB in the constructor of the test case&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:arial;"&gt;public SBBeanTest(String testcaseName) throws Exception {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;   super(testcaseName);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;   System.setProperty&lt;br /&gt;(Context.INITIAL_CONTEXT_FACTORY, "org.openejb.client.LocalInitialContextFactory");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;   System.setProperty("openejb.configuration", "conf/openejb.conf");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;   context = new InitialContext(System.getProperties());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;configure the 'openejb.conf' xml file such that it is pointing to the base directory where the META-INF directory and ejb.xml of the session beans resides; specify the full path, if necessary (including drive, etc.)&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;openejb&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;Container id="Default Stateless Container" ctype="STATELESS" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;Deployments dir="\src\java" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;/openejb&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;add a 'openejb-jar.xml' xml file to the META-INF directory where the ejb-jar.xml is located; this provides a mapping between the bean names (in the ejb.xml) and the JNDI names with which you are providing&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;i style="font-family: arial;"&gt;ejb-jar.xml&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;ejb-jar&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;  &amp;lt;enterprise-beans&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;      &amp;lt;session&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          &amp;lt;ejb-name&amp;gt;SB&amp;lt;/ejb-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          &amp;lt;home&gt;foo.bar.SBHome&amp;lt;/home&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          &amp;lt;remote&amp;gt;foo.bar.SBRemote&amp;lt;/remote&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          &amp;lt;ejb-class&amp;lt;foo.bar.SB&amp;lt;/ejb-class&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          &amp;lt;session-type&amp;gt;Stateless&amp;lt;/session-type&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          &amp;lt;transaction-type&amp;gt;Container&amp;lt;/transaction-type&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;      &amp;lt;/session&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;  &amp;lt;/enterprise-beans&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;/ejb-jar&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:78%;"&gt;&lt;i style="font-family: arial;"&gt;openejb-jar.xml&lt;/i&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;openejb-jar&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;  &amp;lt;ejb-deployment ejb-name="SB"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;                  deployment-id="ejb/foo/bar/SBHome"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;                  container-id="Default Stateless Container"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;/openejb-jar&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;test that the session bean has been successfully looked up with OpenEJB&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:arial;"&gt;public void testSBNotNull() throws Exception {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;      Object ebObject = context.lookup("ejb/foo/bar/SBHome");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;      SBHome sessionbeanHome = (SBHome)&lt;br /&gt;PortableRemoteObject.narrow(ebObject, SBPHome.class);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;      SB sessionbean = sbHome.create();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;      assertNotNull(sessionbean);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;if configured correctly then the JUnit test will pass, with similar logger.debug output to this below&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:arial;"&gt;********************************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;OpenEJB http://www.openejb.org&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Startup: 30/08/06 10:39&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Copyright 1999-2004 (C) OpenEJB Project, All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Version: 1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Build date: 20060226&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Build time: 1701&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;********************************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;WARN :  No ApplicationServer was specified!  The container system will only be accessible&lt;br /&gt;by same-vm clients via the IntraVm Server.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:  Instantiating assembler class org.openejb.alt.assembler.classic.Assembler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;WARN :  Cannot find the configuration file [null], Trying conf/openejb.conf instead.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:  Containers        : 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:  Type        Container ID&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:     ENTITY      Default BMP Container&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:     ENTITY      Default CMP Container&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:     STATEFUL    Default Stateful Container&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:     STATELESS   Default Stateless Container&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:  Deployments       : 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:  OpenEJB.startup  - Type        Deployment ID&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:  OpenEJB.startup  - STATELESS ejb/foo/bar/SBHome&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:  SecurityService   : org.openejb.ri.sp.PseudoSecurityService&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DEBUG:  TransactionManager: org.openejb.core.TransactionManagerWrapper&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;INFO :  OpenEJB ready.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;And there you have it - session beans unit tested!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-8726996907095210673?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/8726996907095210673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=8726996907095210673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/8726996907095210673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/8726996907095210673'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/09/openejb-10.html' title='OpenEJB 1.0'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-8562694615210924657</id><published>2006-07-24T01:49:00.000-07:00</published><updated>2006-09-10T01:49:07.016-07:00</updated><title type='text'>Senior Java Developer, UBS</title><content type='html'>I have started working at UBS, Opfikon, Zurich, Switzerland. I have been significantly impressed with the IT department I have been assigned to, for a number of reasons:&lt;br /&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt; &lt;a href="http://www.flickr.com/photos/markyjones/190284389/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/75/190284389_e2311025ef.jpg" class="flickr-photo" alt="" width="400" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/markyjones/190284389/"&gt;Europstrasse 2&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/markyjones/"&gt;markyjones&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;    &lt;p class="flickr-yourcomment"&gt; &lt;br /&gt;&lt;br /&gt;(1) openness to new approaches / ideas! with a new project in scope, there has been open discussion about the technologies to implement, design patterns to use, etc.&lt;br /&gt;(2) egoless developers who are involved in design, and architects who develop! a strong core set of senior developers who are professional, adept and continuous learners; most technical issues have been dealt with a fair amount of common sense&lt;br /&gt;(3) good collaboration; use of online chat is pervasive; so instead of meetings, online chat, with multiple people is encouraged - this works suprisingly well especially when dealing with teams offshore (e.g. India)&lt;br /&gt;(4) a license for IntelliJ v.51 and v6 - hello world!&lt;br /&gt;(5) ability to stream the TDF to one of my 2 monitors; too good&lt;br /&gt;&lt;br /&gt;Will try and post a better photo in some time ;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-8562694615210924657?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/8562694615210924657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=8562694615210924657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/8562694615210924657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/8562694615210924657'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/09/photo-sharing.html' title='Senior Java Developer, UBS'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600547691084851203.post-2768184216806694460</id><published>2006-07-03T08:21:00.000-07:00</published><updated>2006-09-06T08:27:48.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software engineering'/><title type='text'>Contributing ...</title><content type='html'>Well, I have started a software engineering blog that I will use for contributing to the software engineering industry of which I currently work in. I constantly use other people's blogs and the technical notes that they put in them. This is what I aim to do in this blog and hopefully I will progress and refine my own software engineering skills.&lt;br /&gt;&lt;br /&gt;This is not my first attempt, but now having been able to maintain my &lt;a href="http://blueskygreenfields.blogspot.com/"&gt;personal blog&lt;/a&gt; for a couple of months, I am confident that my work, my readings, and my own research will produce a blog entry or two. So here we go (again)! &lt;a href="javascript:void(0)" onclick="return false;" tabindex="7"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600547691084851203-2768184216806694460?l=intelligentsoftwareengineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://intelligentsoftwareengineering.blogspot.com/feeds/2768184216806694460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600547691084851203&amp;postID=2768184216806694460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/2768184216806694460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600547691084851203/posts/default/2768184216806694460'/><link rel='alternate' type='text/html' href='http://intelligentsoftwareengineering.blogspot.com/2006/09/contributing.html' title='Contributing ...'/><author><name>Mark Jones</name><uri>http://www.blogger.com/profile/11020697827092926867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/123/328878748_a10941f569.jpg?v=0'/></author><thr:total>0</thr:total></entry></feed>
