<?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-7495506233675799856</id><updated>2011-09-26T13:38:19.703-04:00</updated><category term='heroku cedar stack java postgresql example'/><category term='freemind mindjet mind mapping'/><category term='Boosting XP Performance'/><category term='cloud salesforce database best practices'/><category term='jdk 7 netbeans ide beta java closures functional programming'/><category term='example'/><title type='text'>The I.T. Alchemy Lab</title><subtitle type='html'>&lt;b&gt;IT&lt;/b&gt;: &lt;i&gt;Information Technologies&lt;/i&gt;
&lt;br&gt;&lt;b&gt;Alchemy&lt;/b&gt;: &lt;i&gt;Alchemy is a technique used to transform one material into another (referred to as a transmutation).&lt;/i&gt;
&lt;br&gt;
&lt;b&gt;Lab&lt;/b&gt;: &lt;i&gt;A location where practical learning and demonstration take place in science, language, and other subjects.&lt;/i&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-1537613529752156859</id><published>2011-09-26T13:38:00.002-04:00</published><updated>2011-09-26T13:38:20.225-04:00</updated><title type='text'>Intellitxt Overload</title><content type='html'>It seems to me that every time technology finds a way to squash one annoying web "utility" another one shows up that is worse than the one before. &amp;nbsp;It's good to see that the development community learns from the past, but lets get real, Intellitxt is about the most intrusive, annoying flavor of javascript anyone can handle.&lt;div&gt;What is Intellitxt, it's a Frankenstein from Vibrant Media. I am sure you have seen then many times, the little green, double underlined words you find on almost every page. You can't even copy and paste text any more without something popping up on your screen. They are the proverbial "kill 1 weed, 2 grow back".&lt;/div&gt;&lt;div&gt;It seems that IE7+, Opera and Firefox all have means of leveling the web-surfing playing field. However, Chrome, in all its innovation overlooked this one. I have tried a number of&amp;nbsp;extensions to rid my browsing day from these sneaky technology traps. However, all failed to date!&lt;/div&gt;&lt;div&gt;I am on a mission to either find an extension that works ... or write my own. &amp;nbsp;I have a real issue with someone else telling me what to look at while I am trying to do a bit of research of read and article. &amp;nbsp;Hopefully soon, I can update this post with a viable solution.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My crusade begins now!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-1537613529752156859?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/1537613529752156859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=1537613529752156859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1537613529752156859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1537613529752156859'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2011/09/intellitxt-overload.html' title='Intellitxt Overload'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-7335289029952095931</id><published>2011-08-23T21:15:00.001-04:00</published><updated>2011-08-23T21:38:50.273-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='heroku cedar stack java postgresql example'/><title type='text'>Heroku PostgreSQL on the Cedar (java) stack</title><content type='html'>Found a few articles the other day on the web where you could use the cedar stack to deploy java apps [&lt;a href="http://blog.nofail.de/2011/06/migrating-an-existing-app-to-heroku-celadon-cedar-stack/"&gt;cedar stack reference&lt;/a&gt;]. &amp;nbsp;Found it interesting, reached out to my dev's (who are Heroku masters) and ask for their help to teach the old dog some new tricks. &amp;nbsp;I managed to get it all up and running. Then when I wanted to connect to the PostgreSQL database I could only find ruby examples. &amp;nbsp; I hacked on it for a while and finally managed to get the solution up and running. &amp;nbsp;If you want the source code, you can visit my public git site and pull it down or visit my Heroku cedar stack for a demo.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Heroku instance&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="http://gentle-frost-641.herokuapp.com/"&gt;http://gentle-frost-641.herokuapp.com/&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Github public project&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="https://github.com/stevegeejr/herokuCedarStackDBConnection"&gt;https://github.com/stevegeejr/herokuCedarStackDBConnection&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Once you have your Github and Heroku account, upload your ssl keys, download the software from github and execute the following to deploy the application.&lt;br /&gt;&amp;gt; git init&lt;br /&gt;&amp;gt; git add .&lt;br /&gt;&amp;gt; git commit -m "initial import"&lt;br /&gt;&amp;gt; heroku create --stack cedar&lt;br /&gt;&amp;gt; git push heroku master&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Now, if you get some wierd ssl error, that is due to ssl issue, you're in for a fun ride. It is recoverable, but it can be a very nasty headache. I have found that on windows I have to reset my key weekly - on Linux, "one and done". &amp;nbsp;Here are some sites I used to help me figure these hurdles out:&amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Github&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://help.github.com/win-set-up-git/"&gt;Github setup and key generation (windows)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://book.git-scm.com/2_installing_git.html"&gt;Github setup (linux)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To import your SSL Cert into github:&lt;br /&gt;after you create you key, open ~/.ssh/id_rsa.pub, copy the full text&lt;br /&gt;now, login to github, in the top right select "Account Settings", then "SSH Public Keys", "Add another public key" ... give it a name and paste the contents of&amp;nbsp;~/.ssh/id_rsa.pub&lt;br /&gt;Save .. done.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Heroku&lt;/b&gt;&lt;br /&gt;&lt;a href="http://flux88.com/2009/06/getting-started-with-heroku-on-windows/"&gt;install Heroku on windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://thasulinux.wordpress.com/2011/01/29/heroku/"&gt;install Heroku on Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;adding the keys to heroku, very easy:&lt;br /&gt;heroku keys:add&lt;br /&gt;done ...&lt;br /&gt;&lt;br /&gt;Good luck!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-7335289029952095931?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/7335289029952095931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=7335289029952095931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/7335289029952095931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/7335289029952095931'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2011/08/heroku-postgresql-on-cedar-java-stack.html' title='Heroku PostgreSQL on the Cedar (java) stack'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-5772389574421700503</id><published>2011-05-26T07:18:00.000-04:00</published><updated>2011-05-26T07:18:19.659-04:00</updated><title type='text'>Firefox 4 at a glance</title><content type='html'>Installed Firefox 4 last night and spent a bit of time playing with it. By no means is this an in-depth review .. but a first glance from a power-user.  Wikipedia reports it was released on March 22, 2011. URL: http://www.mozilla.com/en-US/firefox/fx/&lt;br /&gt;&lt;br /&gt;first glance review:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Options/Preference bar: "borrowed" from Opera&lt;/li&gt;&lt;li&gt;tabs and tab grouping: nothing revolutionary. Pretty much the expected tabs, tab grouping, pinning, moving ... all the stuff you already see in Chrome&lt;/li&gt;&lt;li&gt;Search-bar: same as chrome&lt;/li&gt;&lt;li&gt;URL text-box searching: always good to have, especially for chrome users who are accustomed to using it&lt;/li&gt;&lt;li&gt;Add-Interface:definitely an improvement and receives my best improvement. Grouping all of the add-ons with interfaces in one location that is easy to find and review is a benefit. It's great to see your debugging, messages and feeds nicely grouped together&lt;/li&gt;&lt;li&gt;navigation buttons: I like, click and hold to see both forward and backward&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;With my humble assessment set aside, the browser is very fast and much more lightweight than the old clunker used to be. I actually stopped using Firefox (for Chrome) originally because it took so long to start. No longer the case.  Click - start - surf ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So far, for the time being, I am moving back to Firefox to get a little strong review of it's new features/capabilities.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-5772389574421700503?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/5772389574421700503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=5772389574421700503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/5772389574421700503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/5772389574421700503'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2011/05/firefox-4-at-glance.html' title='Firefox 4 at a glance'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-1868357681597871910</id><published>2011-04-28T09:39:00.003-04:00</published><updated>2011-04-28T10:07:56.293-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud salesforce database best practices'/><title type='text'>The Cloud and the Database</title><content type='html'>As we travel further and further down the "cloud" path, new opportunities seem to present themselves on an almost daily basis. &amp;nbsp;There is a lot of good blog's in the wind, but for today I'll stick to the database side of things.&lt;br /&gt;The other day, a request came in asking if our standard developers could be given access to do bulk-uploads via the windows tool (we use SFDC as one of our cloud applications). &amp;nbsp;This was an interesting question since in the past any and all updates were done by our operations team. The full SLDC was expected to be in place and the change would go in the next scheduled maintenance window - which would be weeks away for us. &amp;nbsp;However, this is the cloud and shouldn't we be able to make a change on the fly - or at least after business hours without any expected impact. &amp;nbsp;I think this is what our business partners expect, and partially believe is what "agile" gives you: the ability to make dynamic updates on a very short cycle. &amp;nbsp;I agree to the definition of agile, but not to how it is&amp;nbsp;interpreted. &lt;br /&gt;That is only one of the issues that caused me a bit of headache. &amp;nbsp;As I explained to the development team that they were probably not going to be given the rights to update the database via the bulk-loader, I received a very sad response: &amp;nbsp;"we are loading data into Salesforce, not into Oracle". &amp;nbsp;Of course this spawned a long drawn out email that explains how the cloud works and some updates to our lexicon.&lt;br /&gt;So here I am, trying to figure out how to detail new policies and procedures to deal with the database in the cloud. &amp;nbsp;I have a couple of&amp;nbsp;obstacles&amp;nbsp;that I still need to address before I think&amp;nbsp;anything&amp;nbsp;can be done. &amp;nbsp; The first being informing/training for everyone on how "cloud" based platforms work. &amp;nbsp;I (wrongly) made the assumption that everyone understood it the way I did. &amp;nbsp;Secondly, I need to find some best policies/practices&amp;nbsp;and help drive some enterprise standards for deploying and managing change in the cloud. &amp;nbsp;I have found a few books and wikis that give some guidance, but nothing yet that provides all the answers I am looking for.&lt;br /&gt;As I consume more information and begin developing my own plan, I will keep the updates coming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-1868357681597871910?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/1868357681597871910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=1868357681597871910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1868357681597871910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1868357681597871910'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2011/04/cloud-and-database.html' title='The Cloud and the Database'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-8719672334430069230</id><published>2011-04-21T08:36:00.000-04:00</published><updated>2011-04-21T08:36:43.923-04:00</updated><title type='text'>Personal Security</title><content type='html'>I'm sure by now everyone in the world has seen the Apple security issue that was released last night. &amp;nbsp;Couple of articles for those that aren't in the loop: &amp;nbsp;&lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.foxnews.com%2Fscitech%2F2011%2F04%2F20%2Fapple-iphone-users-beware-location-tracking%2F&amp;amp;h=c0957"&gt;Fox News&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.guardian.co.uk%2Ftechnology%2F2011%2Fapr%2F20%2Fiphone-tracking-prompts-privacy-fears&amp;amp;h=c0957"&gt;The Guardian&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm a technology junkie, not a device junkie. However, my wife and kids are device junkies and they have &amp;nbsp;iPhones and iPads. &amp;nbsp;I'm not jumping on the rant band wagon, I have a point here: &amp;nbsp;On Monday, my youngest daughter went for a bike ride with her sister and best friend, during their journey's her phone fell out of her pocket. &amp;nbsp;Typically, this is just something that happens to little kids, no worries. Now, let's add in this new privacy "feature" that Apple decided to add to a device without my knowledge.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Ud3U19iCfi8/TbAfbEULuHI/AAAAAAAAAJU/G0qIzVeTeV0/s1600/iphone-data-map-007.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="120" src="http://1.bp.blogspot.com/-Ud3U19iCfi8/TbAfbEULuHI/AAAAAAAAAJU/G0qIzVeTeV0/s200/iphone-data-map-007.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Let's get to the point of what is bothering me. &amp;nbsp;First, lets look at what can be found on the iPhone device: locations with time stamps. &amp;nbsp;(If you look at this example map, you an see how detailed the tracking is) &amp;nbsp;Back to my daughter dropping her phone. For the sake of making a point, let's just say someone from this nice little list (&lt;a href="http://www.nsopr.gov/"&gt;National Sex Offender List&lt;/a&gt;)&amp;nbsp;picked it up and had some IT savvy and know how to get the data off and view the details. All of a sudden, some perverted bastard knows the times and routes my daughters takes to and from school. He could know the route she takes up to the local convenient store with her friends to buy a coke and candy. &amp;nbsp;I am not one of those people who live in fear. I prefer to face my concerns and deal with issues. However, how do you deal with a company the size of Apple? &amp;nbsp;If I had my way, I would sue them for what I consider my daughters safety to be with ... and that number is "How much is Apple worth, and&amp;nbsp;multiply&amp;nbsp;it times 100" - &amp;nbsp;there is no price I put on my&amp;nbsp;daughters&amp;nbsp;safety.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"The feature has been around since June 2010, meaning some iPhones have nearly a year of location history recorded in a single file -- every step, trip to the park, family vacation and more. And that, said security experts Alasdair Allan and Pete Warden, who uncovered the file, poses serious problems." -Fox News&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Want to see all of this for yourself? Want to see what the stalker/pervert an see? Point your browswer over to the &lt;a href="http://petewarden.github.com/iPhoneTracker/#1"&gt;GitHub project&lt;/a&gt; and download it. The author here has a nice little write-up with a lot of details and explanations. Hopefully, for the sake of a bunch of innocent young people out there, Apple will release a patch to delete/disable this 'feature'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-8719672334430069230?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/8719672334430069230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=8719672334430069230' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/8719672334430069230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/8719672334430069230'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2011/04/personal-security.html' title='Personal Security'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Ud3U19iCfi8/TbAfbEULuHI/AAAAAAAAAJU/G0qIzVeTeV0/s72-c/iphone-data-map-007.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-8322501945616006905</id><published>2011-02-03T08:34:00.000-05:00</published><updated>2011-02-03T08:34:18.394-05:00</updated><title type='text'>Online Persona's</title><content type='html'>Today, for the first time in a long time, I had some free time to review some of my online sites. After about 90 minutes of "work" I realized that keeping all of this stuff up to date is a real chore. &amp;nbsp;Additionally, I realized how important it is to keep these things up to date. Just the number of people I accepted on linkedIn was staggering considering a lot of these guys I had brief encounters with.&lt;br /&gt;It&amp;nbsp;occurred&amp;nbsp;to me that the IT world is shrinking faster than ever. The internet &amp;nbsp;(facebook, yammer, linkedIn) collapses the walls of distance. You can have strong working relationships with colleagues/teams you have never met before, and probably never will, in person. &amp;nbsp;If you are one of those adventure seeking lots (as I am) and moving your family around the country or the world (HELLO FINLAND) then keeping your social profiles and&amp;nbsp;personas&amp;nbsp;up to date is important.&lt;br /&gt;I never really understood that in it's full scope until this morning : )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-8322501945616006905?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/8322501945616006905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=8322501945616006905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/8322501945616006905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/8322501945616006905'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2011/02/online-personas.html' title='Online Persona&apos;s'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-2271842948105988654</id><published>2010-11-09T08:56:00.000-05:00</published><updated>2010-11-09T08:56:17.561-05:00</updated><title type='text'>User Level System Hardening</title><content type='html'>There are two schools of System Hardening at the User level. The first school is to restrict access to an administrative user (not root) through sudo (this document details that school of thought). The second school is restricting all execution, as your administrative user. This is a finer grain, user level control and is indeed the best option. However, this is extensive to setup, configure and maintain. An example of this is that no user logged in is allowed access tot he administrative user (as option 1) rather you execute all commands through sudo: sudo su -u myadmin -c myCommand. All of your comamnds must be listed or they will not be available.&lt;br /&gt;&lt;br /&gt;In order to control who can and cannot access your systems, at the user level, user access must be controlled. Let us review a few reasons we want to harden a platform at the user level. In this example, we have a user 'theAdmin' who is shared across a couple of departments. The role of this user is to manage a select list of software and applications. In order to allow these multiple departments access, each selected user will have to be provided 'theAdmin's password. Now we have developers, architects and operations all sharing the same username and password.&lt;br /&gt;&lt;br /&gt;We know from experience and years of being in IT that within a month, almost everyone in both departments, plus some others, will have access to 'theAdmin'. What could possibly go wrong here? Changes are made and cannot be tracked. Since anyone can log into the box as 'theAdmin' we do not know who is actually on the system. Scenario two, someone fat fingers the password too many times and now all of our groups are locked out of the system - administration and deployment have stopped until the 'theAdmin' can be unlocked.&lt;br /&gt;&lt;br /&gt;Finally, what if someone changes the password? Once again, we are locked out of the user and work has come to a grinding halt. Even worse, an hour is spent changing the password back, and a malicious user (knowing their actions cannot be traced) again resets the password. To prevent this - the admins reset the password to something new and the cycle starts all over again. Password is distributed, it leaks out, the password is changed or the user is locked out.&lt;br /&gt;&lt;br /&gt;So how do we prevent this from happening while still allowing a select group of individuals access to 'theAdmin'? Luckily, this is an old question and one that has been solved many times over. The following steps are a simplified solution for System Hardening at the user level.&lt;br /&gt;&lt;br /&gt;As a 'validated' admin (meaning you have root access) log into the box, assume root and make the following changes:&lt;br /&gt;&lt;br /&gt;Step 1: Restrict 'theAdmin' from logging in anywhere except locally on the box (we are making a leap of faith that the box itself has been hardened and FTP as well as SCP have been disabled - I come from a PCI background and natively make these assumptions).&lt;br /&gt;To disable the user, as root, edit '/etc/ssh/sshd_config' and check for the following entry 'DenyUsers'. If it does not exist, add it to the last line of the config file and include the user (theAdmin) with a space: DenyUsers theAdmin&lt;br /&gt;Save and close. Now 'theAdmin' is blocked from logging in over SSH.&lt;br /&gt;&lt;br /&gt;Step 2: We need to restrict who logs into the box. If your box supports AD, enable it by group. If not, manually add your users with the 'useradd' command.&lt;br /&gt;&lt;br /&gt;Step 3: Allow access to 'theAdmin' through the sudo command. This can be tricky so you want to make sure you add the full rights and not just blindly allow sudo to any user. &lt;br /&gt;enter SUDO editor mode by executing 'visudo'. Jump to the bottom of the file, and add the following two lines:&lt;br /&gt;User_Alias THEADMINS = johnd,janed,jackb,tux&lt;br /&gt;THEADMINS ALL = /bin/su - theAdmin&lt;br /&gt;save the file. You should not see any errors; one good feature with visudo is it validates the syntax before it saves and change 'theAdmin' password to something obtuse and tell it to no-one.&lt;br /&gt;&lt;br /&gt;You're all done, your system has been hardened from a user level.&lt;br /&gt;So what exactly did we just do? we have restricted access to 'theAdmin' to 1) local login only 2)only a select few users and 3) the password is never needed since you obtain the user roles through sudo.&lt;br /&gt;So how do you become 'theAdmin'? Log in as a 'registered' user and execute 'sudo su - theAdmin' - enter your login password and hit enter. You are now 'theAdmin'. Any user can change the password, it will have no effect, 'theAdmin' is not assumed through local credentials any longer.&lt;br /&gt;&lt;br /&gt;Additionally, by going down this path, you now have the ability to log who assumes 'theAdmin'.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Recap&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Disable SSH; add 'DenyUsers &lt;controlleduser&gt;' to '/etc/ssh/sshd_config'&lt;/controlleduser&gt;&lt;/li&gt;&lt;li&gt;change &lt;controlleduser&gt;'s password&lt;/controlleduser&gt;&lt;/li&gt;&lt;li&gt;Add login by user only (either through AD or add a new system account)&lt;/li&gt;&lt;li&gt;Create the following entries with visudo&lt;/li&gt;&lt;ul&gt;&lt;li&gt;User_Alias THEADMINS = &lt;user1&gt;,&lt;user2&gt;,&lt;user3&gt;,&lt;user4&gt;&lt;/user4&gt;&lt;/user3&gt;&lt;/user2&gt;&lt;/user1&gt;&lt;/li&gt;&lt;li&gt;THEADMINS ALL = /bin/su - &lt;controlleduser&gt;&lt;/controlleduser&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;i&gt;recommended&lt;/i&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Defaults logfile=/var/log/sudo/sudo.log&lt;/li&gt;&lt;li&gt;Defaults mailto="&lt;your_admin_email&gt;"&lt;/your_admin_email&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;i&gt;As root&lt;/i&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;mkdir /var/log/sudo&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-2271842948105988654?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/2271842948105988654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=2271842948105988654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/2271842948105988654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/2271842948105988654'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/11/user-level-system-hardening.html' title='User Level System Hardening'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-1488776501206749179</id><published>2010-09-08T10:35:00.000-04:00</published><updated>2010-09-08T10:35:17.379-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jdk 7 netbeans ide beta java closures functional programming'/><title type='text'>JDK 1.7 Editor</title><content type='html'>&lt;div class="MsoNormal"&gt;If you have been keeping up with the latest JDK 1.7 release notes then you are aware that JDK 1.7 will not work with any current version&lt;span class="Apple-style-span" style="color: #666666;"&gt; &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;(that I have tested)&lt;/span&gt;&lt;/i&gt; of Eclipse or Netbeans (have not tested Intelli-J).&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;This is due to the new additions of the functional programming features: closures being the most notable one that blows up for me a lot of the times.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;I do see there is a new September binary snapshot out there on [&lt;/i&gt;&lt;a href="http://dlc.sun.com.edgesuite.net/jdk7/binaries/index.html"&gt;&lt;i&gt;JDK 7 latest releases&lt;/i&gt;&lt;/a&gt;&lt;i&gt;]: [&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: lucida, arial, sans-serif; font-size: 12px;"&gt;&lt;a href="http://dlc.sun.com.edgesuite.net/download/jdk7/binaries/jdk-7-ea-bin-b108-windows-i586-02_sep_2010.exe" style="color: #006699; text-decoration: none;"&gt;&lt;i&gt;02_SEP_2010 Release&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: lucida, arial, sans-serif; font-size: 12px;"&gt;&lt;i&gt;]&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: lucida, arial, sans-serif; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #b45f06;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Netbeans JDK7 Beta Site [&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;a href="http://wiki.netbeans.org/Java_EditorJDK7"&gt;http://wiki.netbeans.org/Java_EditorJDK7&lt;/a&gt;&lt;/span&gt;]&lt;/div&gt;&lt;div&gt;Their Hudson Build server&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;i&gt;&lt;b&gt; &lt;span class="Apple-style-span" style="color: #3d85c6;"&gt;*two thumbs up for Continuous Integration*&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; [&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;a href="http://bertram.netbeans.org/hudson/job/jdk7/"&gt;http://bertram.netbeans.org/hudson/job/jdk7/&lt;/a&gt;&lt;/span&gt;]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Quick note&lt;/span&gt;&lt;/b&gt;: I call it a bug, Netbeans will call it a feature. &amp;nbsp;When you start the beta release, it will autodetect your JDK 1.7 version (even if you have multiple version, I run 6 version and it grabbed the right one). &amp;nbsp;However, it did not set the proper source/target version. &amp;nbsp;To correct this, after creating a new project, select the "Files" tab. &amp;nbsp;Open "project.properties" and scroll down to (in my release it was line: 39 and 40) and change the following lines from:&lt;/div&gt;&lt;div&gt;&lt;div&gt;javac.source=1.5&lt;/div&gt;&lt;div&gt;javac.target=1.5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;to&lt;/div&gt;&lt;div&gt;&lt;div&gt;javac.source=1.7&lt;/div&gt;&lt;div&gt;javac.target=1.7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&lt;b&gt;X== ... and there you go, &amp;nbsp;welcome to the future of Java ==X&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #b45f06;"&gt;*Recommend*&lt;/span&gt;&amp;nbsp;Here is a great deck that does a really good job covering the latest features: [&lt;a href="http://www.docstoc.com/docs/12678946/JDK-7-What-the-Future-Holds-for-Java"&gt;JDK-7 Future Features&lt;/a&gt;]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;i&gt;&lt;b&gt;Simple closure example taken from the deck listed above:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;The old way of managing the Exceptions and closing streams:&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;public void copy(String src, String dest) throws IOException {&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-indent: .5in;"&gt;InputStream in = new FileInputStream(src);&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OutputStream out = new FileOutputStream(dest);&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] buf = new byte[8 * 1024];&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((n = in.read(buf)) &amp;gt;= 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.write(buf, 0, n);&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } finally {&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.close();&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } finally {&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; in.close();&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;}&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;The JDK 7 way:&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;static void copy(String src, String dest) throws IOException {&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try (InputStream&amp;nbsp; in&amp;nbsp; = new FileInputStream(src);&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OutputStream out = new FileOutputStream(dest)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] buf = new byte[8192];&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((n = in.read(buf)) &amp;gt;= 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.write(buf, 0, n);&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//in and out will 'automagically' close&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: lucida, arial, sans-serif; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-1488776501206749179?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/1488776501206749179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=1488776501206749179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1488776501206749179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1488776501206749179'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/09/jdk-17-editor.html' title='JDK 1.7 Editor'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-9144491561661492771</id><published>2010-09-07T22:24:00.000-04:00</published><updated>2010-09-07T22:24:38.992-04:00</updated><title type='text'>Command Line equivalent of "cd -"</title><content type='html'>It's not as though I have simply neglected Phase II of Memory management, free time has been unkind.&lt;br /&gt;&lt;br /&gt;I Being a longtime Solaris and Linux junky, when I'm bound to use Windows, I do almost (...I did say almost) everything from the command line. One feature I have always missed from the windows command line world was "cd -". &amp;nbsp;I came across a "fix" for that yesterday.&lt;br /&gt;&lt;br /&gt;cd "\Program Files\Java\jdk1.5.0_22"&lt;br /&gt;pushd .&lt;br /&gt;cd "\Documents and Settings\All Users"&lt;br /&gt;popd&lt;br /&gt;&lt;br /&gt;This will put you back at&amp;nbsp;jdk1.5.0_22, the only downside to that is anytime you want to pop the directory, you have to first push it. &amp;nbsp;Not the greatest solution, but a solution none the less.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-9144491561661492771?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/9144491561661492771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=9144491561661492771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/9144491561661492771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/9144491561661492771'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/09/command-line-equivalent-of-cd.html' title='Command Line equivalent of &quot;cd -&quot;'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-958793107866479059</id><published>2010-08-25T14:56:00.000-04:00</published><updated>2010-08-25T14:56:36.163-04:00</updated><title type='text'>Ant to Maven Migration</title><content type='html'>I have delivered countless "how to migrate from Ant to Maven" presentations and written countless whitepapers on the same topic. Today, on my favorite development community site "&lt;a href="http://java.dzone.com/"&gt;Javalobby&lt;/a&gt;", there was an article posted that is hands down the best representation on ant-to-maven migration.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.dzone.com/articles/how-migrate-ant-maven-project"&gt;http://java.dzone.com/articles/how-migrate-ant-maven-project&lt;/a&gt;&lt;br /&gt;Great job:&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: arial, verdana, helvetica, sans-serif; font-size: 12px; line-height: 18px;"&gt;Tim O'Brien&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-958793107866479059?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/958793107866479059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=958793107866479059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/958793107866479059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/958793107866479059'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/08/ant-to-maven-migration.html' title='Ant to Maven Migration'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-6333295804660898503</id><published>2010-08-19T21:55:00.001-04:00</published><updated>2010-08-20T09:51:54.809-04:00</updated><title type='text'>Let's talk performance! A 4-Part Series on Heap Performance</title><content type='html'>&lt;ul&gt;&lt;li&gt;Part 1: Heap Memory Test Engine - custom tool used to bring a system under load and introduce a memory leak.&lt;/li&gt;&lt;li&gt;Part 2: jmap - Java Memory Map. This tool is used to view and dump the JVM heap&lt;/li&gt;&lt;li&gt;Part 3: EclipseMAT - (personal) Preferred tool for viewing and analyzing heap dumps (hprof)&lt;/li&gt;&lt;li&gt;Part 4: jvisualvm - Build in tool for monitoring Heap, Memory, threads and many more JVM internal features&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;As companies try to do more with less, Java developers and architects are beginning to find themselves needing to better manage the heap space - something my generation never considered. The better you manage your heap space, and assuming you have the horsepower, the more efficiency you can get from your servers; aka: more for less.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Heap Memory Test Engine (HMTE)&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;Quick word of warning, if you plan on following along with these posts, check your JDK version. If you are running JDK 1.5.0_11-b03, please upgrade to the next version of 1.5 (or up to the latest 1.6). This version of the JDK (&lt;a href="http://www.performanceengineer.com/blog/java-memory-leaks/"&gt;http://www.performanceengineer.com/blog/java-memory-leaks/&lt;/a&gt;) has a bug in jmap that will throw the following error:&lt;br /&gt;&lt;span style="color: blue;"&gt;Exception in thread "main" java.lang.OutOfMemoryError: requested 8192 bytes for byte in /BUILD_AREA/jdk1.5.0_11/hotspot/src/share/vm/prims/jni.cpp. Out of swap space?&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;Over the past two months I have led an effort to understand how the JVM manages heap and threads under different loads with and without a memory leak.&amp;nbsp; The first objective was to write a tool that would allow me to bring my servers under load and then introduce a memory leak.&amp;nbsp; This article will cover that 'Heap Memory Test Engine'.&amp;nbsp; This tool is the root of the article and is used throughout all the parts.&lt;br /&gt;What is the "Heap Memory Test Engine"?&amp;nbsp; HMTE is a stand-alone Java application used to simulate a memory leak in order to generate profile signatures. The application has the ability to generate system (CPU) load in order to observe profile signature changes while under load.&amp;nbsp; The software is released under GPL 3 and can be freely downloaded from SourceForge (&lt;a href="https://sourceforge.net/projects/hmte/files/"&gt;https://sourceforge.net/projects/hmte/files/&lt;/a&gt;) or pulled from CVS (svn co https://hmte.svn.sourceforge.net/svnroot/hmte heapMemoryTestEngine-2.7).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style="color: navy;"&gt;&lt;strong&gt;Part 1: Heap Memory Test Engine&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 14pt;"&gt;&lt;span style="color: navy;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;HTME uses a number of arguments to control the dynamic features available at a very granular level. Here are the basics to get you started.&lt;br /&gt;Before starting, please be warned! This application can hard-crash big systems if you set your Heap Max [-Xmx12m] too high.&lt;br /&gt;I have brought down test server by setting it to 3 gigs, please be careful.&lt;br /&gt;&lt;br /&gt;First off we need to Compile the source using the maven pom file&lt;br /&gt;from the root directory, execute:&lt;br /&gt;mvn clean package&lt;br /&gt;&lt;br /&gt;The project has no external dependencies for compiling or executing&lt;br /&gt;&lt;br /&gt;Once the package has completed, run the application by executing&lt;br /&gt;java -jar target\heapMemoryTestEngine-&amp;lt;version&amp;gt;.jar [ARG_LIST]&lt;br /&gt;&lt;br /&gt;[&lt;span style="color: navy;"&gt;&lt;b&gt;ARG_LIST&lt;/b&gt;&lt;/span&gt;]&lt;br /&gt;-chunk &amp;lt;int_value&amp;gt; Size of Heap memory to persist, default is 100000&lt;br /&gt;-sleep &amp;lt;int_value&amp;gt; Time in seconds to pause before consuming the next chunk of heap memory, default is 3 seconds&lt;br /&gt;-delay &amp;lt;int_value&amp;gt; Time in seconds to pause before starting the test, default is 10 (this is used to give developers a chance to connect a memory leaking tool to the application)&lt;br /&gt;-noleak Diabled the memory leak (this is best used if you want to observe normal garbage collection and heap management&lt;br /&gt;-loadthread &amp;lt;int_value&amp;gt; How many Threads to initialize to apply CPU Load (Default is 100)&lt;br /&gt;-loadthreadsleep &amp;lt;int_value&amp;gt; Delay between starting the CPU Load Threads (default is 3 seconds)&lt;br /&gt;-silent Disable the thread output, JVM and Garbage Collection messages will continue to display&lt;br /&gt;-noload Disable the CPU load test (default is enabled)&lt;br /&gt;-nosort Disable the CPU sorting threads (default is enabled)&lt;br /&gt;-nocrypt Disable the CPU encryption threads (default is enabled)&lt;br /&gt;-sortsize &amp;lt;int_value&amp;gt; Number of entries in the list to sort (default is 2500)&lt;br /&gt;-sortbytes &amp;lt;int_value&amp;gt; Number of bytes to sort (default is 500)&lt;br /&gt;-sortsleep &amp;lt;int_value&amp;gt; Time in seconds to sleep when sorting (default is 2000)&lt;br /&gt;-cryptbytes &amp;lt;int_value&amp;gt; Number of bytes to encrypt (default is 500)&lt;br /&gt;-cryptsleep &amp;lt;int_value&amp;gt; Time in seconds to sleep when sorting (default is 2000)&lt;br /&gt;-test set the system to run in test mode only. The engine will not start, but the variables will be initialized and objects created&lt;br /&gt;&lt;br /&gt;[&lt;span style="color: navy;"&gt;&lt;b&gt;EXAMPLE&lt;/b&gt;&lt;/span&gt;]&lt;br /&gt;java -Xms8m -Xmx12m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -jar target\heapMemoryTestEngine-2.7.jar -chunk 250000 -sleep 1 -threads 10 -delay 5 -loadthread 100&lt;br /&gt;&lt;br /&gt;In this example, the JVM settings are set to:&lt;br /&gt;[-Xms8m] set the initial Heap Memory space to 8 megs&lt;br /&gt;[-Xmx12m] set the max Heap space to 12 megs&lt;br /&gt;[-XX:+HeapDumpOnOutOfMemoryError] We tell the JVM to dump out a binary heap map when it crashes&lt;br /&gt;[-XX:+PrintGCDetails] Write to the console every time GC is executed. This is great for understanding how the JVM panics as it suffocates for more memory&lt;br /&gt;&lt;br /&gt;and the Engine settings are set to:&lt;br /&gt;[-chunk 250000] set the memory leak to consume 250,000 bytes every iteration (-sleep &amp;lt;time&amp;gt;)&lt;br /&gt;[-sleep 1] Execute the memory leak every 1 second&lt;br /&gt;[-threads 10] Start 10 memory leak threads&lt;br /&gt;[-delay 5] wait 5 seconds before starting, so the engineer can attach a monitoring tool to test engine&lt;br /&gt;[-loadthread 100] how many CPU load threads to start (these alternate between Encryption and Array Sorting, you can control each of these individually)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Running the Program&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Let's run the application with the default settings in the example, with one change. Let's increase the memory leak to half-a-meg at a time as opposed to a quarter: -chunk 500000&lt;br /&gt;&lt;br /&gt;Here is the bootstrap, notice the change to the chunk size: java -Xms8m -Xmx12m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -jar target\heapMemoryTestEngine-2.7.jar -chunk 500000 -sleep 1 -threads 10 -delay 5 -loadthread 100&lt;br /&gt;&lt;br /&gt;The following screenshots will show you the stages in which the application runs:. 1) Initialization 2) Running (leaking), 3) Dying and 4) Death&lt;br /&gt;&lt;br /&gt;Notice in the "Dying" screenshot, the threads are no longer able to write to the command line due to the thrashing of the GC. What you do see is the last attempt by the GC to recover any heap space available.&amp;nbsp; This is what big application servers do when they run out of heap space, they thrash around like a landed fish and gulp for air, only to inevitably die out.&lt;br /&gt;&lt;br /&gt;Once you have completed this part of the series, make sure that in your working directory you have the dump file. It can vary depending on your OS and Java version.&amp;nbsp; On my machine, the file is name: java_pid1232.hprof.&amp;nbsp; Make sure you are able to get to this point, we will come back to use this file in Phase III when we discuss the 'Eclipse Memory Analyzer' (EclipseMAT).&lt;br /&gt;&lt;br /&gt;If you want to start testing how to fine tune your JVM memory settings, begin by changing certain parameters and getting an understanding for what each of the JVM arguments will do, and what impact, both positive and negative, they will have on your system.&amp;nbsp; A good place to start is Oracle's 'Virtual Machine Performance' page found (&lt;a href="http://java.sun.com/developer/technicalArticles/Programming/JVMPerf/"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Once you become comfortable with the JVM settings, begin tweaking the HTME settings. Increase and decrease your leak thread count.&amp;nbsp; Punish the CPU by increasing the sorting size and encryption blocks. Create long delays between threads to see how the JVM responds to high leaks with minimal CPU load or low leaks with high CPU load.&lt;br /&gt;&lt;br /&gt;The final goal of this tool is allow an engineer to create a load similar to the production environment and mimic "best case scenarios". Best of luck, I hope this tool assists in your analysis. The next topic will cover how to generate a heap-dump using jmap while the server (my test case will be Weblogic) is still online and under load.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;Initialization&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_x3dINQOrsoo/TG3e0V1avTI/AAAAAAAAAIk/QJ4m_NFbOGQ/s1600/initialization.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_x3dINQOrsoo/TG3e0V1avTI/AAAAAAAAAIk/QJ4m_NFbOGQ/s320/initialization.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: navy;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;Running (leaking)&lt;/span&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;Dying&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_x3dINQOrsoo/TG3fJarUkUI/AAAAAAAAAIs/wBLaKXBcnr4/s1600/running.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/_x3dINQOrsoo/TG3fJarUkUI/AAAAAAAAAIs/wBLaKXBcnr4/s320/running.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;Dying&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x3dINQOrsoo/TG3fRfF1U9I/AAAAAAAAAI0/2pBAH35tAE4/s1600/dying.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_x3dINQOrsoo/TG3fRfF1U9I/AAAAAAAAAI0/2pBAH35tAE4/s320/dying.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;Death&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_x3dINQOrsoo/TG3fVmgAgVI/AAAAAAAAAI8/1Z3tkcE_BQM/s1600/death.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_x3dINQOrsoo/TG3fVmgAgVI/AAAAAAAAAI8/1Z3tkcE_BQM/s320/death.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: navy; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-6333295804660898503?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/6333295804660898503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=6333295804660898503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/6333295804660898503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/6333295804660898503'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/08/lets-talk-performance-4-part-series-on.html' title='Let&apos;s talk performance! A 4-Part Series on Heap Performance'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x3dINQOrsoo/TG3e0V1avTI/AAAAAAAAAIk/QJ4m_NFbOGQ/s72-c/initialization.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-8898301497451294506</id><published>2010-08-10T13:50:00.002-04:00</published><updated>2010-08-10T14:00:45.288-04:00</updated><title type='text'>Something new in JDK 6</title><content type='html'>(IMHO) I have to admit, Oracle is doing a nice job managing the java releases.  They have added the jvisualvm option (blogging this feature soon), added the G1 GarbageCollector to the later releases of JDK 6 (_14 to be exact).  This was slated as one of the big performance items in JDK 7.  Today I found a very cool new feature ... not often used, but still a huge benefit.&lt;div&gt;Java classpath (-cp or -classpath) arguemnt in JDK 6 now supports the wildcard feature.&lt;/div&gt;&lt;div&gt;For example, if you want to included 3 external libraries in a bootstrap script you would have to use the following:&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;libSource=/opt/lib/mysql-version.jar:/opt/lib/gwt-version.jar:/opt/lib/j2ee-version.jar&lt;br /&gt;java -classpath $libSource target/myExecutableJar-version.jar&lt;/pre&gt;&lt;br /&gt;With JDK 6, it is much easier (and cleaner) to implement. So much so that a bootstrap might not be necessary.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;java -classpath /opt/lib/'*' target/myExecutableJar-version.jar&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/7495506233675799856-8898301497451294506?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/8898301497451294506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=8898301497451294506' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/8898301497451294506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/8898301497451294506'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/08/something-new-in-jdk-6.html' title='Something new in JDK 6'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-2684123843920326359</id><published>2010-08-03T08:49:00.007-04:00</published><updated>2010-08-03T09:02:41.990-04:00</updated><title type='text'>Eclipse Fix for JDK 1.6.0_21</title><content type='html'>If you are running one of the following Eclipse versions and have upgraded your JVM to the latest release; JDK 1.6.0_21. There is a good chance every 5 minutes you are going to experience an OutOfMemoryError and then have Eclipse crash every. The fix is simple.&lt;br /&gt;&lt;br /&gt;&lt;table border="0" width="347" style="border-width: 1px;  border-style: solid;  border-color: #000000;"&gt;&lt;tbody&gt; &lt;tr&gt;   &lt;td width="65"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/td&gt;  &lt;td width="92"&gt;&lt;b&gt;Release Date&lt;/b&gt;&lt;/td&gt;   &lt;td width="52"&gt;&lt;b&gt;Version&lt;/b&gt;&lt;/td&gt;  &lt;td width="118"&gt;&lt;b&gt;Project Home&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;    &lt;td width="65"&gt;Helios&lt;/td&gt;  &lt;td width="92"&gt;23-JUN-2010&lt;/td&gt;    &lt;td width="52"&gt;3.6&lt;/td&gt;  &lt;td width="118"&gt;&lt;a href="http://wiki.eclipse.org/index.php/Helios"&gt;Helios projects&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;    &lt;td width="65"&gt;Galileo&lt;/td&gt;  &lt;td width="92"&gt;24-JUN-2009&lt;/td&gt;    &lt;td width="52"&gt;3.5&lt;/td&gt;  &lt;td width="118"&gt;&lt;a href="http://wiki.eclipse.org/Galileo"&gt;Galileo projects&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;    &lt;td width="65"&gt;Ganymede&lt;/td&gt;  &lt;td width="92"&gt;25-JUN-2008&lt;/td&gt;    &lt;td width="52"&gt;3.4&lt;/td&gt;  &lt;td width="118"&gt;&lt;a href="http://wiki.eclipse.org/index.php/Ganymede_Simultaneous_Release"&gt;Ganymede projects&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Open the file ${Eclipse Home}/eclipse.ini&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_x3dINQOrsoo/TFgSWVuCx7I/AAAAAAAAAIc/pHli8sQSLmg/s1600/current.eclipse.ini.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 211px;" src="http://2.bp.blogspot.com/_x3dINQOrsoo/TFgSWVuCx7I/AAAAAAAAAIc/pHli8sQSLmg/s400/current.eclipse.ini.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5501167119829747634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add this value "-XX:MaxPermSize=256m" after the "-vmargs" line&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_x3dINQOrsoo/TFgR98Dg-QI/AAAAAAAAAIU/OwuiiGd9MrA/s1600/patched.eclipse.ini.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 224px;" src="http://2.bp.blogspot.com/_x3dINQOrsoo/TFgR98Dg-QI/AAAAAAAAAIU/OwuiiGd9MrA/s400/patched.eclipse.ini.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5501166700623624450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Restart Eclipse&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-2684123843920326359?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/2684123843920326359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=2684123843920326359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/2684123843920326359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/2684123843920326359'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/08/eclipse-fix-for-jdk-16021.html' title='Eclipse Fix for JDK 1.6.0_21'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_x3dINQOrsoo/TFgSWVuCx7I/AAAAAAAAAIc/pHli8sQSLmg/s72-c/current.eclipse.ini.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-4856039755063483962</id><published>2010-07-30T21:03:00.007-04:00</published><updated>2010-08-02T08:30:08.393-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freemind mindjet mind mapping'/><title type='text'>Mind Mapping</title><content type='html'>I spend about half of my days in meetings. Some are presence only while others are full participation.  Regardless to my involvement, I always find myself looking to jot notes down quickly while we ping-pong from topic to topic.  When I go back and try to read my pen/ink notes, it is always full of little arrows and lines that turn into a mixed jumbled of thoughts, ideas and action points.  In time, this type of note taking just became too confusing and began causing issues as I often found myself missing a quick note that I did not "attach" to another thread or missed a key part of a requirement that would have saved me some time down the road.&lt;br /&gt;&lt;br /&gt;Introducing: Mind Mapping&lt;br /&gt;&lt;br /&gt;Mind Mapping isn't necessarily new, records of graphical thinking can be dated back to the 1200's.  It gained some ground in the 60's and 70's, but it was not until 2002 that it finally grew roots. As with all things in the "there's an app for that" world, the next practical evolution was software mind-mapping.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;So what exactly is mind-mapping?&lt;/span&gt;&lt;br /&gt;Wikipedia defines it as: A mind map is a diagram used to represent words, ideas, tasks, or other items linked to and arranged around a central key word or idea. Mind maps are used to generate, visualize, structure, and classify ideas, and as an aid in study, organization, problem solving, decision making, and writing.&lt;br /&gt;&lt;br /&gt;I define is more along the lines of: a hierarchical, graphical way to loosely map your thoughts, action items and notes based on topics.  Each new topic can be a child of the root conversation or a child/sibling of an existing topic.&lt;br /&gt;&lt;br /&gt;To many, this will be completely new and it will take a bit of time to get used to taking notes the way your brain actually works. However, once you get used to it you will find (and research supports) that your notes are much more organized and you have a much better understanding of what went on and what needs to be done.&lt;br /&gt;&lt;br /&gt;In the past I have used proprietary Mind Mapping tools such as MindJet. However, lately I have found (thanks to a colleague at work) that there are a number of OSS (Open Source Software) Mind Mapping tools.  However, of the ones I tried, the only one I truly liked was 'FreeMind'. It has all the nifty little features that I am used to with MindJet with a simple and clean user interface.  If you happen to be a tablet user, this tool will make your life much easier!&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#3366FF;"&gt;How to use ”FreeMind”:&lt;/span&gt;  Create a new mapping, name your root node.  To add a child node, hit “Insert”, to add a sibling node hit “Enter”.  The tool is smart enough so that if you have focus on node-x, hitting enter will still create a new sibling.  Provided is a screenshot and the actual FreeMind example and the demo example created for the email.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;Word of Warning:&lt;/span&gt; It is very easy to select a node, even when you do not mean to. Once you start typing it will clobber your open objects. There is an Undo (standard CTRL+Z) but I am not sure how many there are.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x3dINQOrsoo/TFa5j7lTfLI/AAAAAAAAAHw/Kyyk-W1v-Cs/s1600/mindmap.small.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 385px; height: 284px;" src="http://3.bp.blogspot.com/_x3dINQOrsoo/TFa5j7lTfLI/AAAAAAAAAHw/Kyyk-W1v-Cs/s400/mindmap.small.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5500788021820357810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;Wikipedia's Reference (a really solid review of both OSS and Proprietary)&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_mind_mapping_software"&gt;http://en.wikipedia.org/wiki/List_of_mind_mapping_software&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Recommended OSS Version: &lt;a href="http://freemind.sourceforge.net/"&gt;http://freemind.sourceforge.net/&lt;/a&gt;&lt;br /&gt;Recommended Proprietary Version: &lt;a href="http://www.mindjet.com/"&gt;http://www.mindjet.com/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-4856039755063483962?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/4856039755063483962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=4856039755063483962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/4856039755063483962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/4856039755063483962'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/07/mind-mapping.html' title='Mind Mapping'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x3dINQOrsoo/TFa5j7lTfLI/AAAAAAAAAHw/Kyyk-W1v-Cs/s72-c/mindmap.small.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-3715008790088098526</id><published>2010-07-13T07:48:00.001-04:00</published><updated>2010-07-13T07:50:45.327-04:00</updated><title type='text'>Back in the Saddle</title><content type='html'>After a long layoff, a couple of trips around the world and some great experience gained on a number of amazing projects. I'm back home in the states.  Look for some great new posts regarding Java, Maven, Continuous Integration and the latest cool features hidden inside the JDK .... like JVisualVM!! &lt;br /&gt;&lt;br /&gt;If you haven't found this tool - here are some starter links.  1.2.2 will work with JDK 1.6.0_21 (released a few days ago).  Otherwise, it's built into 1.6.0_7 forward.&lt;br /&gt;&lt;br /&gt;Glad to be back in the Alchemy Lab!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-3715008790088098526?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/3715008790088098526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=3715008790088098526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/3715008790088098526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/3715008790088098526'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/07/back-in-saddle.html' title='Back in the Saddle'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-6834278811579533874</id><published>2010-02-08T23:15:00.000-05:00</published><updated>2010-02-08T23:20:21.630-05:00</updated><title type='text'>Back to the Treo</title><content type='html'>I have given up the backberry and came home to my Treo (680)&lt;br /&gt;Tried installing Andriod (fail) ... tried installing Linux, Opie (fail) ... but its not all a loss? the treo OS is nice and stable with a lot of great apps. Luckily, I have 2 680's so ill keep working on Opie&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-6834278811579533874?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/6834278811579533874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=6834278811579533874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/6834278811579533874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/6834278811579533874'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2010/02/back-to-treo.html' title='Back to the Treo'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-5093782709674824</id><published>2008-09-19T14:10:00.003-04:00</published><updated>2008-09-19T14:43:22.683-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Boosting XP Performance'/><title type='text'>How to boost XP performance with 4 Gigs of RAM</title><content type='html'>&lt;b&gt;XP Professional is Required&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;&lt;span style="font-size:100%;"&gt;By default, Version 5 processes on Windows can allocate up to 2.0GB of memory for storing data and code.  &lt;/span&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;The 4GB address space offered by the operating system is split in two areas of 2GB each: the first 2GB is for user mode, and the other 2GB isg reserved by the kernel. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;With XP Pro, it is possible to increase the default allocation capabilities up to 3.0GB (3GB for user mode, 1GB reserved for kernel). Such capability requires additional tunings in order to be effective:&lt;br /&gt;&lt;br /&gt;A modification of boot.ini file is needed to activate this capability at the system level.&lt;br /&gt;The boot.ini switch /3GB needs to be added in order to make 3GB available for user mode applications.&lt;br /&gt;For example:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr style="height: 3px; color: rgb(192, 192, 192);"&gt;&lt;pre&gt;&lt;span style="font-size:100%;"&gt;[boot loader]&lt;br /&gt;timeout=30&lt;br /&gt;default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;br /&gt;[operating systems]&lt;br /&gt;multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional 3GB" /fastdetect /3GB&lt;br /&gt;multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;hr style="height: 3px; color: rgb(192, 192, 192);"&gt;&lt;span style="font-size:100%;"&gt;Microsoft's Site&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Memory Limits for Windows Releases: &lt;a class="external" href="http://msdn.microsoft.com/en-us/library/aa366778.aspx#physical_memory_limits_windows_xp"&gt;http://msdn.microsoft.com/en-us/library/aa366778.aspx#physical_memory_limits_windows_xp&lt;/a&gt;&lt;br /&gt;Forums Page&lt;br /&gt;FAQ Detailing these enhancements &lt;a class="external" href="http://www.tomshardware.com/forum/148261-45-limitation"&gt;http://www.tomshardware.com/forum/148261-45-limitation&lt;/a&gt;&lt;/span&gt;  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-5093782709674824?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/5093782709674824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=5093782709674824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/5093782709674824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/5093782709674824'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2008/09/how-to-boost-xp-performance-with-4-gigs.html' title='How to boost XP performance with 4 Gigs of RAM'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-1500766837069309533</id><published>2008-09-12T08:41:00.002-04:00</published><updated>2008-09-12T08:50:06.431-04:00</updated><title type='text'>Setting up Blackberry Voice Mail</title><content type='html'>You know, this is a pretty short'n simple one today.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;To set up voice mail, perform the following steps:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;From the main screen, press and hold the 1 key.&lt;/li&gt;&lt;li&gt;Follow the system prompts to:&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Create your pass code.&lt;/li&gt;&lt;li&gt;Record your name announcement.&lt;/li&gt;&lt;li&gt;Record your greeting.&lt;/li&gt;&lt;li&gt;Exit&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-1500766837069309533?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/1500766837069309533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=1500766837069309533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1500766837069309533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1500766837069309533'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2008/09/blackberry-stuffs.html' title='Setting up Blackberry Voice Mail'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-2941843071864896371</id><published>2008-08-11T12:42:00.003-04:00</published><updated>2008-08-11T12:45:23.511-04:00</updated><title type='text'>Blackberry Sync'ing after it's been configured for wireless</title><content type='html'>Having a problem getting your BB to sync to your desktop after it's been configured for wireless email?&lt;br /&gt;&lt;br /&gt;**ERROR MESSAGE**&lt;br /&gt;&lt;br /&gt;Synchronization is currently unavailable for:&lt;br /&gt;[Mail, Tasks, Address Book, Memo Pad]&lt;br /&gt;because the application(s) is (are) configured for wireless synchronization.&lt;br /&gt;Desktop synchronization for the above application(s) will be disabled.&lt;br /&gt;&lt;br /&gt;Please click on "Help" for the information on how to disable &lt;br /&gt;wireless synchronization on your device.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_x3dINQOrsoo/SKBsgf9TiZI/AAAAAAAAACA/rRFYl-xj4dI/s1600-h/device_error.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_x3dINQOrsoo/SKBsgf9TiZI/AAAAAAAAACA/rRFYl-xj4dI/s400/device_error.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5233302072594762130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This was a huge pain the six!!! There wasn't anywhere that explained what all this mumbo-jumbo meant.&lt;br /&gt;Worse, there isn't anything in the local help files on wireless syncing...(herein lies the answer)&lt;br /&gt;It is NOT a local error. The error is that your BB is configured to receive wireless updates.&lt;br /&gt;&lt;br /&gt;Now, the good part of this is it can easily be remedied!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. On the device open Address Book/Mail/Tasks/Memo Pad&lt;br /&gt;2. Press the menu button, left of the trackball, and select Options&lt;br /&gt;3. Change Wireless Synchronization to No&lt;br /&gt;4. Exit &amp; Save&lt;br /&gt;&lt;br /&gt;Wash and repeat for each item you are updating.&lt;br /&gt;&lt;br /&gt;Once you get this done, you're good to go.&lt;br /&gt;&lt;br /&gt;Now, you need to note that once you get this backed up, you will want to go back in and turn on your mail and calendar&lt;br /&gt;to support wireless.  Otherwise, if someone sends you a meeting request/mail/address it wont update it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-2941843071864896371?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/2941843071864896371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=2941843071864896371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/2941843071864896371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/2941843071864896371'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2008/08/blackberry-syncing-after-its-been.html' title='Blackberry Sync&apos;ing after it&apos;s been configured for wireless'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_x3dINQOrsoo/SKBsgf9TiZI/AAAAAAAAACA/rRFYl-xj4dI/s72-c/device_error.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-6008189826379197164</id><published>2008-06-23T10:50:00.001-04:00</published><updated>2008-06-23T10:50:59.758-04:00</updated><title type='text'>The Right to Be Free</title><content type='html'>Last night at 2 AM EST, a personal, long-time friend of mine, Sgt. W. Hawkins, boarded a military chartered plane heading from New Jersey to South Texas; an American soldier on his way to a thirteen month tour in Iraq.  This is not one of the stereotypical, misrepresented, low-income, farm-boys from Smallville America. Quite the contrary; he is a college graduate that has already seen a full, four year military tour.  Upon the completion of his first tour, he re-enlisted with the New Jersey National Guard while he completed his degree at Rutgers’s University.  Somewhere during his senior year, he was activated by his old unit and called upon to serve his Country in Iraq.  He immediately doubled his hours the next semester and graduated a few days before he was to return to full duty, an amazing accomplishment for someone under that kind of stress.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Over the next ninety days he will be trained by the greatest military leaders of our time in the art of war; urban combat, guerilla warfare and SERE’s (Survival, Evasion, Resistance and Escape).  I am sending out this email as a reminder that it can not always be “someone else’s” son or friend. The war in Iraq touches us all in some aspect and regardless of how we feel about the war or our political views, the soldiers that are in Iraq, and those going, have been asked by our Country to serve.  To suspend their lives, to say good-bye to their families and friends, to put everything on the line and give to the American people the greatest gift one human can give to another: The right to be free.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-6008189826379197164?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/6008189826379197164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=6008189826379197164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/6008189826379197164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/6008189826379197164'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2008/06/right-to-be-free.html' title='The Right to Be Free'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-4714361931246401136</id><published>2008-05-11T08:40:00.000-04:00</published><updated>2008-06-12T11:13:41.448-04:00</updated><title type='text'>Creating a war file</title><content type='html'>Let's get right to the basics. A 'WAR' file is a &lt;span style="font-weight: bold;"&gt;W&lt;/span&gt;eb &lt;span style="font-weight: bold;"&gt;AR&lt;/span&gt;chive. To those familiar with Linux (and you should all be) it's nothing more than a tar file. By default it's just a package of files and folders and has no compression. (You can use different flags to compress the data however)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://access1.sun.com/techarticles/simple.WAR.html"&gt;Sun's War how-to&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A war file consist of x parts.&lt;br /&gt;1) WEB-INF folder: this is the 'container only' folder that houses resources specific to your proejct&lt;br /&gt;1) WEB-INF/web.xml:  The brains of the file. This tells your container what the war file will be accessing and how it is to be accessed.&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 153, 153);"&gt;1b) WEB-INF/jboss-web.xml:  If you aren't going to be using JBoss you can skip all of these references. This file is used to manage the JBoss container and will have no impact on other containers.&lt;/span&gt;&lt;br /&gt;2) WEB-INF/classes:  a default classpath for raw .class files&lt;br /&gt;3) WEB-INF/lib: default folder classpath for your .jar (or .zip if your rebelling)&lt;br /&gt;4) an .htm or .jsp page in the root folder.  This is where your files are access as the root folder&lt;br /&gt;&lt;br /&gt;Let us setup a new Java Project HelloWorldWar and create the following folders.&lt;br /&gt;./HelloWorldWar/ant&lt;br /&gt;./HelloWorldWar/dist&lt;br /&gt;./HelloWorldWar/build&lt;br /&gt;./HelloWorldWar/web&lt;br /&gt;./HelloWorldWar/web/WEB-INF&lt;br /&gt;./HelloWorldWar/web/WEB-INF/lib&lt;br /&gt;./HelloWorldWar/web/WEB-INF/taglib&lt;br /&gt;./HelloWorldWar/lib&lt;br /&gt;./HelloWorldWar/src&lt;br /&gt;&lt;br /&gt;Copy into ./HelloWorldWar/lib file your j2ee.jar and junit-4.4.jar files (&lt;span style="font-weight: bold;"&gt;IF&lt;/span&gt; they are not already in your Eclipse classpath)&lt;br /&gt;&lt;br /&gt;Refresh your eclipse project and it should pickup your libraries. We wont be using them for this section, but they will come into play for the next one when we write the helloworld aspect of the war.&lt;br /&gt;&lt;br /&gt;The web.xml file.&lt;br /&gt;All we want to do initially is tell the container who we are and what file to load on default.&lt;br /&gt;&lt;p&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application&lt;br /&gt;2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"&amp;gt;&lt;br /&gt; &amp;lt;web-app&amp;gt;&lt;br /&gt;     &amp;lt;display-name&amp;gt;HelloWorldWar&amp;lt;/display-name&amp;gt;&lt;br /&gt;     &amp;lt;description&amp;gt;Java Heuristics Web Demo showing the deployment steps for a&lt;br /&gt;web-application&amp;lt;/description&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;     &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;     &amp;lt;welcome-file&amp;gt;index.htm&amp;lt;/welcome-file&amp;gt;&lt;br /&gt; &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Now, for the JBoss people we need to create the jboss-web.xml. There will be more on this later, but for now lets just keep it simple.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.4//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd"&amp;gt;&lt;br /&gt;&amp;lt;jboss-web&amp;gt;&lt;br /&gt;&amp;lt;context-root&amp;gt;HelloWorldWar&amp;lt;/context-root&amp;gt;&lt;br /&gt;&amp;lt;/jboss-web&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;And finally, a simple index.jsp page.&lt;/p&gt;&lt;p&gt;&amp;lt;%@ page language="java"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;HelloWorldWar&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;Hello world!&amp;lt;/h1&amp;gt; &amp;lt;i&amp;gt;I am static content&amp;lt;/i&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;out.println("&amp;lt;center&amp;gt;&amp;lt;h1&amp;gt;&amp;lt;font color=\"blue\"&amp;gt;Hello World!" + new&lt;br /&gt;java.util.Date().toString() + "&amp;lt;/font&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;br&amp;gt;&amp;lt;i&amp;gt;and I am dynamic content&amp;lt;/i&amp;gt;&amp;lt;/center&amp;gt;");&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;With these three items created all we have to do it build our ant file (build.xml), run it and deploy it to our container.&lt;br /&gt;&lt;br /&gt;Here is our build.xml (ant file)&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;project name="HelloWorldWar" default="war"&amp;gt;&lt;br /&gt;&amp;lt;description&amp;gt;Demo Application for building the HelloWorldWar war&lt;br /&gt;file&amp;lt;/description&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name="ROOT" value="../"/&amp;gt;&lt;br /&gt;&amp;lt;property name="BUILD" value="${ROOT}/build"/&amp;gt;&lt;br /&gt;&amp;lt;property name="DIST" value="${ROOT}/dist"/&amp;gt;&lt;br /&gt;&amp;lt;property name="SRC" value="${ROOT}/src"/&amp;gt;&lt;br /&gt;&amp;lt;property name="WAR.HOME" value="${ROOT}/web/"/&amp;gt;&lt;br /&gt;&amp;lt;property name="JAR.FILE" value="${WAR.HOME}/WEB-INF/lib/helloWorldDemo.jar"/&amp;gt;&lt;br /&gt;&amp;lt;property name="WAR.FILE" value="${DIST}/helloWorldDemo.war"/&amp;gt;&lt;br /&gt;&amp;lt;property name="CP.ROOT" value="${ROOT}/lib"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;path id="CLASSPATH"&amp;gt;&lt;br /&gt;&amp;lt;fileset dir="${CP.ROOT}" includes="**/*.jar"/&amp;gt;&lt;br /&gt;&amp;lt;/path&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;target name="clean" description="delete any residual code"&amp;gt;&lt;br /&gt;&amp;lt;mkdir dir="${BUILD}"/&amp;gt;&lt;br /&gt;&amp;lt;mkdir dir="${DIST}"/&amp;gt;&lt;br /&gt;&amp;lt;delete includeemptydirs="true"&amp;gt;&lt;br /&gt;&amp;lt;fileset dir="${BUILD}" includes="**/*"/&amp;gt;&lt;br /&gt;&amp;lt;/delete&amp;gt;&lt;br /&gt;&amp;lt;delete file="${JAR.FILE}" /&amp;gt;&lt;br /&gt;&amp;lt;delete file="${WAR.FILE}" /&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;target name="compile" depends="clean" description="compile the source"&amp;gt;&lt;br /&gt;&amp;lt;javac srcdir="${SRC}"&lt;br /&gt;destdir="${BUILD}"&lt;br /&gt;includes="*/**"&lt;br /&gt;target="1.5"&lt;br /&gt;source="1.5"&lt;br /&gt;classpathref="CLASSPATH"&lt;br /&gt;debug="true"&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt;compilerarg value="-Xlint:unchecked"/&amp;gt;&lt;br /&gt;&amp;lt;/javac&amp;gt;&lt;br /&gt;&amp;lt;delete dir="${BUILD}/package cache" /&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;target name="jar" depends="compile" description="jar the application"&amp;gt;&lt;br /&gt;&amp;lt;jar jarfile="${JAR.FILE}"&lt;br /&gt;basedir="${BUILD}"&lt;br /&gt;includes="**"&amp;gt;&lt;br /&gt;&amp;lt;manifest&amp;gt;&lt;br /&gt;&amp;lt;attribute name="Built-By" value="Steve Gee"/&amp;gt;&lt;br /&gt;&amp;lt;attribute name="user-Email" value="java.heuristics@gmail.com"/&amp;gt;&lt;br /&gt;&amp;lt;attribute name="user-homepage" value="http://ioexcept.blogspot.com/"/&amp;gt;&lt;br /&gt;&amp;lt;/manifest&amp;gt;&lt;br /&gt;&amp;lt;/jar&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;target name="war" depends="jar" description="build the war file"&amp;gt;&lt;br /&gt;&amp;lt;jar jarfile="${WAR.FILE}"&lt;br /&gt;basedir="${WAR.HOME}"&lt;br /&gt;includes="**"&amp;gt;&lt;br /&gt;&amp;lt;manifest&amp;gt;&lt;br /&gt;&amp;lt;attribute name="Built-By" value="Steve Gee"/&amp;gt;&lt;br /&gt;&amp;lt;attribute name="user-Email" value="java.heuristics@gmail.com"/&amp;gt;&lt;br /&gt;&amp;lt;attribute name="user-homepage" value="http://ioexcept.blogspot.com/"/&amp;gt;&lt;br /&gt;&amp;lt;/manifest&amp;gt;&lt;br /&gt;&amp;lt;/jar&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Now, execute our ant file and deploy your war.&lt;br /&gt;From there, open your browser and go to 'http://localhost:8088/HelloWorldWar&lt;br /&gt;&lt;br /&gt;You should see the following output:&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;center&gt;&lt;h1&gt;Hello world!&lt;/h1&gt; &lt;i&gt;I am static content&lt;/i&gt;&lt;/center&gt;&lt;br /&gt;&lt;center&gt;&lt;h1&gt;&lt;span style="color:blue;"&gt;Hello World!Fri Jan 11 09:11:39 CST 2008&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;i&gt;and I am dynamic content&lt;/i&gt;&lt;/center&gt;&lt;br /&gt;&lt;hr&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-4714361931246401136?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/4714361931246401136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=4714361931246401136' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/4714361931246401136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/4714361931246401136'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2008/01/creating-war-file.html' title='Creating a war file'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-3272805647925211572</id><published>2008-05-04T10:27:00.000-04:00</published><updated>2008-06-12T11:14:38.161-04:00</updated><title type='text'>Setting up JBoss</title><content type='html'>This one is easy.&lt;br /&gt;Grab JBoss (latest version of this blog is [4.2.2.GA]) &lt;a href="http://labs.jboss.com/jbossas/"&gt;Here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Explode it to /usr/local/&lt;br /&gt;Create the JBoss group:  groupadd jboss&lt;br /&gt;create the JBoss user: useradd -g jboss -d /usr/local/jboss-?.?.?&lt;br /&gt;Set your password: passwd jboss&lt;br /&gt;????&lt;br /&gt;????&lt;br /&gt;&lt;br /&gt;Suggested: download the jboss file I use [&lt;a href="http://www.geocities.com/java.heuristics/jboss.zip"&gt;Here&lt;/a&gt;], unzip it to /usr/local/bin/ and change permissions on it: chown jboss:jboss /usr/local/bin/jboss;chmod 755 /usr/local/jboss&lt;br /&gt;(IF you are using the above file you will need to execute 1 more command)  mkdir -p  /usr/local/jboss-?.?.?/logs/archive&lt;br /&gt;&lt;br /&gt;change ownership: chown -R jboss:jboss /usr/local/jboss-?.?.?&lt;br /&gt;&lt;br /&gt;Syntax: jboss  {start|stop|restart|tail|pid|resetpid|starttail|stoptail|help}&lt;br /&gt;Argument List:&lt;br /&gt;start         Start the JBoss server&lt;br /&gt;stop          Stop the JBoss server&lt;br /&gt;restart     Stop and re-Start the server&lt;br /&gt;tail            Tail the server log file [Found at: $JBOSS_HOME/logs/server.log]&lt;br /&gt;pid            List the running JBoss pid  [Found at: $JBOSS_HOME/bin/jboss.server.pid]&lt;br /&gt;resetpid    Reset $JBOSS_HOME/bin/jboss.server.pid to 0&lt;br /&gt;starttail    Start the server and tail the server log file&lt;br /&gt;stoptail      Stop the server and tail the server log file&lt;br /&gt;help           The Command Line Arguement defintion&lt;br /&gt;&lt;br /&gt;To start the server, simply execute: jboss start&lt;br /&gt;To stop the server, use: jboss stop&lt;br /&gt;To tail the log file use: jboss tail&lt;br /&gt;&lt;br /&gt;All done - now we are ready for the next part.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-3272805647925211572?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/3272805647925211572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=3272805647925211572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/3272805647925211572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/3272805647925211572'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2008/01/setting-up-jboss.html' title='Setting up JBoss'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-8424490228262811480</id><published>2008-04-20T12:41:00.000-04:00</published><updated>2008-06-12T11:16:02.717-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='example'/><title type='text'>Java DB Demo</title><content type='html'>The deed is done and the JavaDB demo is ready.&lt;br /&gt;You can download the entire source package &lt;a href="http://geocities.com/java.heuristics/javadb.demo.tar.gz"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some things you will need.&lt;br /&gt;1) Download the JavaDB (comes with JDK_1.6) from SUN's site &lt;a href="http://developers.sun.com/javadb/downloads/index.jsp"&gt;here&lt;/a&gt;&lt;br /&gt;    Now, explode/install and copy derby.jar from the lib directory to the project lib directory.&lt;br /&gt;    OR you can simply point the ant file attribute CP.ROOT to your library directory&lt;br /&gt;2) Grab ANT from the Apache group &lt;a href="http://ant.apache.org/"&gt;here&lt;/a&gt;&lt;br /&gt;    build the file from the ant folder by executing: build&lt;br /&gt;&lt;br /&gt;To copy run the file, copy dist/javaDBDemo.jar to the root directory&lt;br /&gt; &gt; cp dist/javaDBDemo.jar .&lt;br /&gt; &gt; java -jar javaDBDemo.jar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Building and running:&lt;br /&gt;Build the jar using the included ant script and execute the application with&lt;br /&gt;java -jar javaDBDemo.jar&lt;br /&gt;You can use the following arguements as well&lt;br /&gt;java -jar javaDBDemo.jar [-b -t -s -p -h]&lt;br /&gt; -b Build New Database (check first)&lt;br /&gt; -t Clean and insert test data (depends on -b)&lt;br /&gt; -s Execute a select using a dirty SQL&lt;br /&gt; -p Execute a select using a prepared statement&lt;br /&gt; -h Print Help Commands&lt;br /&gt;&lt;br /&gt;Hope this helps, next on the list of demos: Creating a war file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-8424490228262811480?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/8424490228262811480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=8424490228262811480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/8424490228262811480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/8424490228262811480'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2008/01/java-db-demo.html' title='Java DB Demo'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-4482272661189524962</id><published>2008-01-02T10:19:00.000-05:00</published><updated>2008-01-02T10:21:00.826-05:00</updated><title type='text'>Back in the preverbial 'Corporate American' saddle</title><content type='html'>Back in the office today after a month off ... it was a nice return, a month off is a long time and I truly was looking forward to getting back to work.  I greatly enjoy what I do and the people at the office are really great and some close friends of mine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-4482272661189524962?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/4482272661189524962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=4482272661189524962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/4482272661189524962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/4482272661189524962'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2008/01/back-in-preverbial-corporate-american.html' title='Back in the preverbial &apos;Corporate American&apos; saddle'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-1021339218991757182</id><published>2007-12-31T11:21:00.000-05:00</published><updated>2007-12-31T11:23:40.543-05:00</updated><title type='text'>Back on track</title><content type='html'>To be honest, I took the last month off. I haven't really done anything worthy of noting, actually, I haven't done anything at all. No programming, no work, nothing...I've had my cell off and haven't checked my work email once.  It's been  nice&lt;br /&gt;&lt;br /&gt;Later today I will post the JavaDB connectivity code and get back to my blogging...&lt;br /&gt;&lt;br /&gt;Happy new, best wishes and my the next 365 and 1/4 be good to you and yours!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-1021339218991757182?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/1021339218991757182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=1021339218991757182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1021339218991757182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1021339218991757182'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2007/12/back-on-track.html' title='Back on track'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-1509644471111512361</id><published>2007-11-07T22:08:00.000-05:00</published><updated>2007-11-22T22:18:32.078-05:00</updated><title type='text'>Java Introduction</title><content type='html'>&lt;p&gt;&lt;b&gt;Java&lt;/b&gt; is a &lt;a href="http://en.wikipedia.org/wiki/Programming_language" title="Programming language"&gt;programming language&lt;/a&gt; originally developed by &lt;a href="http://en.wikipedia.org/wiki/Sun_Microsystems" title="Sun Microsystems"&gt;Sun Microsystems&lt;/a&gt; and released in 1995 as a core component of Sun's &lt;a href="http://en.wikipedia.org/wiki/Java_%28Sun%29" title="Java (Sun)"&gt;Java platform&lt;/a&gt;. The language derives much of its &lt;a href="http://en.wikipedia.org/wiki/Syntax_of_programming_languages" title="Syntax of programming languages"&gt;syntax&lt;/a&gt; from &lt;a href="http://en.wikipedia.org/wiki/C_%28programming_language%29" title="C (programming language)"&gt;C&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/C%2B%2B" title="C++"&gt;C++&lt;/a&gt; but has a simpler &lt;a href="http://en.wikipedia.org/wiki/Object_model" title="Object model"&gt;object model&lt;/a&gt; and fewer low-level facilities. Java applications are typically &lt;a href="http://en.wikipedia.org/wiki/Compiler" title="Compiler"&gt;compiled&lt;/a&gt; to &lt;a href="http://en.wikipedia.org/wiki/Bytecode" title="Bytecode"&gt;bytecode&lt;/a&gt; which can run on any Java &lt;a href="http://en.wikipedia.org/wiki/Virtual_machine" title="Virtual machine"&gt;virtual machine&lt;/a&gt; (JVM) regardless of &lt;a href="http://en.wikipedia.org/wiki/Computer_architecture" title="Computer architecture"&gt;computer architecture&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The original and &lt;a href="http://en.wikipedia.org/wiki/Reference_implementation" title="Reference implementation"&gt;reference implementation&lt;/a&gt; Java &lt;a href="http://en.wikipedia.org/wiki/Compiler" title="Compiler"&gt;compilers&lt;/a&gt;, virtual machines, and &lt;a href="http://en.wikipedia.org/wiki/Library_%28computing%29" title="Library (computing)"&gt;class libraries&lt;/a&gt; were developed by Sun from 1995. As of May 2007, in compliance with the specifications of the &lt;a href="http://en.wikipedia.org/wiki/Java_Community_Process" title="Java Community Process"&gt;Java Community Process&lt;/a&gt;, Sun made available most of their Java technologies as &lt;a href="http://en.wikipedia.org/wiki/Free_software" title="Free software"&gt;free software&lt;/a&gt; under the &lt;a href="http://en.wikipedia.org/wiki/GNU_General_Public_License" title="GNU General Public License"&gt;GNU General Public License&lt;/a&gt;. Others have also developed alternative implementations of these Sun technologies, such as the &lt;a href="http://en.wikipedia.org/wiki/GNU_Compiler_for_Java" title="GNU Compiler for Java"&gt;GNU Compiler for Java&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/GNU_Classpath" title="GNU Classpath"&gt;GNU Classpath&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Java's design, industry backing and portability have made Java one of the fastest-growing and most widely used programming languages in the modern computing industry. (1)&lt;/p&gt;&lt;hr /&gt;&lt;br /&gt;&lt;b&gt;Lets get Started&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;So what is Java and how would I start using it?&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:blue;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Java is the free programming language from SUN. It is an object-oriented programming language that has deep roots in the networking technologies.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;We're going to need a few tools. The first thing we will need is the Java development API (knows as the JDK [Java Development Kit]). We can get this from SUN's Java site here &lt;a href="http://www.blogger.com/java.sun.com"&gt;Java SDK&lt;/a&gt;. Under 'Popular Downloads' select '&gt;&gt; Java SE'. Next, select the latest version (as of the time of this Blog it is JDK 6 Update 3). Accept the EULA and download the version that is listed for your OS and install.&lt;br /&gt;&lt;br /&gt;Now you dont have to have an IDE, but I &lt;b&gt;strongly&lt;/b&gt; recommend it. You can get either of the two most popular free IDE's here &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; or &lt;a href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now that we have an IDE and the JDK installed, lets write our first application. No, it's not going to be some magnificent POS or anything cool like that. It's going to be the standard cookie-cutting 'Hello World' application that we all love so well.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;all of these blogs will make a basic assumption that you the reader are using the Eclipse IDE&lt;/i&gt;&lt;br /&gt;Create a new file and name it HelloWorld.&lt;br /&gt;Inside the code, we will be adding 3 parts.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color:red;"&gt;Constructor; code called when the object is created and before any of the body is executed&lt;/span&gt;&lt;/i&gt;  public HelloWorld(){ }&lt;br /&gt;&lt;i&gt;&lt;span style="color:red;"&gt;Business Method; a method that is called within the program to perform any action&lt;/span&gt;&lt;/i&gt; private void sayHello(){ }&lt;br /&gt;&lt;i&gt;&lt;span style="color:red;"&gt;Main; this is where the JVM (Java Virtual Machine) enters the code and begins execution&lt;/span&gt;&lt;/i&gt;  public static void main(String args[]){ }&lt;br /&gt;&lt;p&gt;Now lets add put it all together, your code should look like this&lt;/p&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;public class HelloWorld{&lt;br /&gt;//This is the constructor, when we create a new instance of the object, this code is executed.&lt;br /&gt;// from here, we will call the private method (meaning it can only be seen (it's scope) by the methods in this class only.&lt;br /&gt; public HelloWorld(){ sayHello();}&lt;br /&gt;// Here we print to the console 'Hello Java World!!!'&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;    private void sayHello(){ Sytem.out.println("Hello Java World!!!");}&lt;br /&gt;//Here is where the JVM enters the code body and we create a new (empty) isntance of the&lt;br /&gt;// the HelloWorld object.  This will enter the constructor [public HelloWorld]&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;    public static void main(String args[]){ new HelloWorld(); }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-style: italic;"&gt;Now, compile and run...and your all set.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-style: italic;"&gt;The output should read&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-style: italic;"&gt;Hello Java World!!!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-style: italic;"&gt;Your now on your way to developing your very own Java software.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(1) Wikipedia: http://en.wikipedia.org/wiki/Java_(programming_language)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-1509644471111512361?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/1509644471111512361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=1509644471111512361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1509644471111512361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/1509644471111512361'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2007/11/java-introduction_22.html' title='Java Introduction'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7495506233675799856.post-6613238585152674293</id><published>2007-11-04T22:09:00.000-05:00</published><updated>2007-11-22T22:18:10.921-05:00</updated><title type='text'>JTable Header Sorting with Mustang</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=";font-family:Verdana;font-size:10;"  &gt;With the release of JDK 1.6 (Mustang) there are a number of new features that are built into the JDK. I will help outline these items, for today, here is a working demo of the new JTable header sorting&lt;b style="color: black; background-color: rgb(255, 255, 102);"&gt;&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=";font-family:Verdana;font-size:10;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;The new can be found on line 46 of com.gravitysoft.mustang.demo.JTableSortingDemoUI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=";font-family:Verdana;font-size:10;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;    &lt;i&gt;&lt;span style="font-style: italic;"&gt;jtResults.setRowSorter(new TableRowSorter&lt;tablemodel&gt;(resultModel));&lt;o:p&gt;&lt;/o:p&gt;&lt;/tablemodel&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=";font-family:Verdana;font-size:10;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;This is all you have to do to have your JTable header columns sortable, nothing more.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=";font-family:Verdana;font-size:10;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;The Jar file is executable and can be found under the /dist folder.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style=";font-family:Verdana;font-size:10;"  &gt;&lt;o:p&gt; You can download the files from &lt;a href="http://www.geocities.com/java_heuristics/JTableSorter.zip"&gt;Here&lt;/a&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7495506233675799856-6613238585152674293?l=ioexcept.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ioexcept.blogspot.com/feeds/6613238585152674293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7495506233675799856&amp;postID=6613238585152674293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/6613238585152674293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7495506233675799856/posts/default/6613238585152674293'/><link rel='alternate' type='text/html' href='http://ioexcept.blogspot.com/2007/11/jtable-header-sorting-with-mustang_22.html' title='JTable Header Sorting with Mustang'/><author><name>ioexcept</name><uri>http://www.blogger.com/profile/03838673522971451108</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_x3dINQOrsoo/SYyap_F6WII/AAAAAAAAAGM/YE1xk8f5Ix0/S220/IMG00428.jpg'/></author><thr:total>0</thr:total></entry></feed>
