<?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-592769997279604309</id><updated>2012-01-30T21:48:02.965-08:00</updated><category term='mobile'/><category term='grails'/><category term='J2ME'/><category term='virtualization'/><category term='development practices'/><category term='iphone'/><category term='android'/><category term='java'/><category term='groovy'/><category term='debugging'/><category term='ipad'/><category term='Writing'/><category term='eclipse'/><title type='text'>Judd Solutions</title><subtitle type='html'>Random thoughts about my interests in Java, consulting, scripting in Java and software development (especially for small and medium size organizations).</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>77</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-6844931335946900583</id><published>2011-06-12T12:40:00.000-07:00</published><updated>2011-06-12T12:41:32.837-07:00</updated><title type='text'>iPad is the perfect conference device</title><content type='html'>&lt;div&gt;As a software developer that relies on heavy duty hardware, I have been reluctant to attend any of the many tech conferences without my full size and capable laptop. This weekend I decided not to break my back caring my 17in MBP. This weekend, I only carried my first gen WIFI iPad to the No Fluff Just Stuff conference. I was pleasantly surprised it was all I needed. I even attended a git hands-on workshop by Matthew McCullough and was able to complete all the labs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There were several things that enabled me to do this. First NFJS provides a great iPad app for the conference. It sets the bar really high for other conferences because it includes the schedules, evals, and presentation slides you can make notes on. I personally choose to get the PDFs and use GoodReader to annotate them so I could use them on my Mac later. Second I kept Textastic in the back ground to make notes that had nothing to do with the presentation or something I wanted to do immediately when I get back to the office. Third I used iSSH to ssh into my server for the git workshop. Finally the hotel offered free Internet and for a tech conference it worked surprisingly well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am alway surprised at how many people say the iPad is just a consumption device. After this weekend I am convinced the iPad is the perfect conference device. This is probably why NFJS is getting rid of paper next year and will be loaning devices out to all the attendees for the weekend.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-6844931335946900583?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/6844931335946900583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=6844931335946900583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6844931335946900583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6844931335946900583'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2011/06/ipad-is-perfect-conference-device.html' title='iPad is the perfect conference device'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-4947617147487896376</id><published>2011-02-26T07:51:00.000-08:00</published><updated>2011-02-26T07:57:51.601-08:00</updated><title type='text'>Free Mobile Development Lunch and Learns</title><content type='html'>Judd Solutions is offering free one hour mobile development lunch and learns for companies or groups in the Columbus Ohio area with 5 or more attendees. The three offerings are:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Beginning iOS development&lt;/li&gt;&lt;li&gt;Beginning Android development&lt;/li&gt;&lt;li&gt;Beginning mobile web development&lt;/li&gt;&lt;li&gt;Developing Android apps with Google App Inventor&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;If you are interested in learning more, please contact cjudd at juddsolutions.com.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-4947617147487896376?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/4947617147487896376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=4947617147487896376' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4947617147487896376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4947617147487896376'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2011/02/free-mobile-development-lunch-and.html' title='Free Mobile Development Lunch and Learns'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-9163754972716711546</id><published>2010-06-03T19:01:00.000-07:00</published><updated>2010-06-03T19:36:23.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Your Phone is so much more than a Phone</title><content type='html'>I have been developing mobile apps since 2002. Ever since I started, I listened to people talk about the potential of cellphones especially in the area of marketing. Ok, even I have talked about the great potential. But the reality is even though I have written some really cool mobile applications I just have not seen these predictions come to reality until now.  I think within in the last year we have seen mobile platforms take center stage and become the ultimate personal and convergent device. Most of this is due to rise of the iPhone and Android platforms. Let me show some of my observations.&lt;br /&gt;&lt;br /&gt;Digital Wallet&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Payment System (&lt;a href="http://thenextweb.com/apple/2010/05/18/visa-tries-to-take-on-square-with-iphone-payment-system/"&gt;Visa&lt;/a&gt; &amp;amp; &lt;a href="http://thenextweb.com/apps/2010/05/11/square-peg-that-fits-into-a-round-credit-card-hole/"&gt;Square&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Proof of Insurance Cards (&lt;a href="http://itunes.apple.com/us/app/nationwide-mobile/id311627534?mt=8"&gt;Nationwide Insurance&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Grocery Store Requard Cards (&lt;a href="http://itunes.apple.com/us/app/cardstar/id301460311?mt=8"&gt;CardStar&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Photos of kids&lt;/li&gt;&lt;/ul&gt;Ultimate Communication Device&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Voice&lt;/li&gt;&lt;li&gt;SMS&lt;/li&gt;&lt;li&gt;Email&lt;/li&gt;&lt;li&gt;Video Conferencing&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/facebook/id284882215?mt=8"&gt;Facebook&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/twitter/id333903271?mt=8"&gt;Twitter&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Connectivity Device&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Always connected Internet device&lt;/li&gt;&lt;li&gt;Portable hotspot (&lt;a href="http://www.engadget.com/2010/03/23/htc-evo-4g-is-sprints-android-powered-knight-in-superphone-armo/"&gt;Sprint HTC EVO&lt;/a&gt;) for connecting all your devices&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Entertainment Device&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Movies&lt;/li&gt;&lt;li&gt;TV (&lt;a href="http://itunes.apple.com/us/app/abc-player/id364191819?mt=8"&gt;ABC&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Music&lt;/li&gt;&lt;li&gt;Books&lt;br /&gt;&lt;/li&gt;&lt;li&gt;YouTube&lt;/li&gt;&lt;li&gt;Games, Games and more Games&lt;/li&gt;&lt;/ul&gt;Location Aware&lt;br /&gt;&lt;ul&gt;&lt;li&gt;GPS apps&lt;/li&gt;&lt;li&gt;Compasses&lt;/li&gt;&lt;/ul&gt;Production&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Camera and photo software&lt;/li&gt;&lt;li&gt;Video&lt;/li&gt;&lt;/ul&gt;And the list keeps going. Combined with the ease of portablity it is the only thing I always leave home with besides my wallet and hopefully someday I will be able to leave my wallet home too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-9163754972716711546?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/9163754972716711546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=9163754972716711546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/9163754972716711546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/9163754972716711546'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2010/06/your-phone-is-so-much-more-than-phone.html' title='Your Phone is so much more than a Phone'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5560829197162509025</id><published>2010-03-25T17:50:00.000-07:00</published><updated>2010-03-25T18:14:48.999-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='ipad'/><title type='text'>How iPad and iPhone/iPod Touch Interactions Could Effect Gaming</title><content type='html'>I am very much anticipating April 3rd and the arrival of the iPad. The more I think about it the more I think about the impacts it will have. I have recently been spending a lot of time thinking about the new interaction opportunities we can have by combining  the iPad with an iPhone or iPod Touch. I think these interactions become even more interesting in the context of gaming.&lt;br /&gt;&lt;br /&gt;With the dimentions of the iPad, I can imagine placing it on a table facing up with four people surrounding it like a board game. Each person holding an iPhone or iPod Touch. For simplicity sake, imagine a game like Scrabble. On each person's iPhone or iPod Touch they can view their own tiles. On their turn, they can flick the tiles off their device and they could land on the iPad where the tiles can be moved into place. This type of interaction could work with anything somebody wanted to keep private like cards but then shared at the approriate time on the iPad. This interaction could also be used for photos much like the Microsoft Surface demos.&lt;br /&gt;&lt;br /&gt;Now imagine turning the iPad up on its side or strapping it to the back of a car seat. Now you have a video game console. An iPhone or iPod Touch could be used as a game controller for a first person shotter , a stearing wheel for a driving or simulator game where tilting it could be the accelorator or finally a Nintendo Wii style remote for games including vibrating feedback and two sounds sources. So, instead of swing your iPhone around to make it sound like a light sabor, you can also make your first person game character wield a light sabor.&lt;br /&gt;&lt;br /&gt;Now my son is sure to shatter my iPhone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5560829197162509025?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5560829197162509025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5560829197162509025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5560829197162509025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5560829197162509025'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2010/03/how-ipad-and-iphoneipod-touch.html' title='How iPad and iPhone/iPod Touch Interactions Could Effect Gaming'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-3808943041043147643</id><published>2010-02-03T18:11:00.000-08:00</published><updated>2010-02-03T18:24:06.859-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>iPad Longevity</title><content type='html'>Like many people, I was a little disappointed by some of the glaring omissions from the Apple iPad announcement. However, as somebody who develops for the iPhone platform, I do feel I need to at least get a version of the cheapest model for testing purposes. At least that is what I am telling my CFO ;) But as I think about the decision of buying a first generation device now and realizing Apple will probably release the version I really want next year, I started think about the longevity of the iPad especially compared to a netbook or the Kindle. Even if I upgrade a year from now, I think the iPad's form factor and weight make it increadibly useful for the long hall. As iPad's retire, I can definately see them become dedicated reading devices next to the bed or dedicated gaming devices for the kids. But I can also imagine them being mounted on kitchen walls. Maybe even mounted within a frame to hid the black borders. It could be used to display a calendar, digital photos, the current local weather, a clock or all of the above. In addition, it could be a convient means to store or look up recipes. Hmm... Maybe I should create a Kitchen App.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-3808943041043147643?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/3808943041043147643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=3808943041043147643' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3808943041043147643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3808943041043147643'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2010/02/ipad-longevity.html' title='iPad Longevity'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-4664333791858509885</id><published>2010-02-02T17:48:00.000-08:00</published><updated>2010-02-03T17:04:31.178-08:00</updated><title type='text'>Magic Mouse Experience</title><content type='html'>The last two days I have been working a booth at a conference which included 4 rented 27 inch iMacs and they are just amazing. Each iMac included a Magic Mouse. I have to admit, I was very skeptical of the Magic Mouse and I have heard a fair amount of complaints but I found it enjoyable and it just got out of my way. It struck me when I heard somebody walk by and tell their friend that those are the mice with only one button. I got a chuckle since that is reason I use a Microsoft Mouse attached to my MacBook. I have just been conditioned to use the right mouse click after all my years on Windows. On my MacBook, I have also configured the touch pad so if two fingers are on the pad, it treats the button click as a right click. So, I wanted to see if the two finger gester could be configured to do a right click with the Magic Mouse. When I looked at the preferences, I realized the right click was already configured. That is when I realized I had been using the right click on the Magic Mouse for two days on a device the only has one button and it was just natural and seamless. That is how a consumer device should work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-4664333791858509885?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/4664333791858509885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=4664333791858509885' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4664333791858509885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4664333791858509885'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2010/02/mighty-mouse-experience.html' title='Magic Mouse Experience'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-7061257808363985113</id><published>2010-02-01T03:33:00.001-08:00</published><updated>2010-02-01T03:44:30.191-08:00</updated><title type='text'>Announcing Remarkable Ohio iPhone App</title><content type='html'>If you are interested in history, the Ohio Historical Center has erected over 1,300 physical markers around the state representing historical locations. You can learn more about these marker by visiting &lt;a href="http://www.remarkableohio.org"&gt;http://www.remarkableohio.org&lt;/a&gt; or by using the iPhone app I just developed for the join venture of eTech Ohio and the Ohio Historical Center. This free application identifies on a map where the 600 markers containing geo codes are. It also provides details about each of the markers. So, check out the app, I think you will be surprised how much history actually surrounds you. You can check it out in the Apple App Store at &lt;a href="http://itunes.apple.com/us/app/remarkable-ohio-app/id351524303?mt=8"&gt;http://itunes.apple.com/us/app/remarkable-ohio-app/id351524303?mt=8&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5kHMhX_WWU4/S2a9T648OLI/AAAAAAAAADk/MJJTJd2_rNA/s1600-h/Screenshot+2010.01.19+23.03.12.png"&gt;&lt;img style="cursor: pointer; width: 134px; height: 200px;" src="http://4.bp.blogspot.com/_5kHMhX_WWU4/S2a9T648OLI/AAAAAAAAADk/MJJTJd2_rNA/s200/Screenshot+2010.01.19+23.03.12.png" alt="" id="BLOGGER_PHOTO_ID_5433238150392330418" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5kHMhX_WWU4/S2a9ajnlRAI/AAAAAAAAADs/ljGdRev7LLk/s1600-h/Screenshot+2010.01.19+23.04.04.png"&gt;&lt;img style="cursor: pointer; width: 134px; height: 200px;" src="http://4.bp.blogspot.com/_5kHMhX_WWU4/S2a9ajnlRAI/AAAAAAAAADs/ljGdRev7LLk/s200/Screenshot+2010.01.19+23.04.04.png" alt="" id="BLOGGER_PHOTO_ID_5433238264404591618" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5kHMhX_WWU4/S2a9nAUG2KI/AAAAAAAAAD0/hVgDoUKPEJQ/s1600-h/Screenshot+2010.01.19+23.05.21.png"&gt;&lt;img style="cursor: pointer; width: 134px; height: 200px;" src="http://3.bp.blogspot.com/_5kHMhX_WWU4/S2a9nAUG2KI/AAAAAAAAAD0/hVgDoUKPEJQ/s200/Screenshot+2010.01.19+23.05.21.png" alt="" id="BLOGGER_PHOTO_ID_5433238478265964706" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5kHMhX_WWU4/S2a9wp_0n9I/AAAAAAAAAD8/L_nIUF_1u9o/s1600-h/Screenshot+2010.01.19+23.04.56.png"&gt;&lt;img style="cursor: pointer; width: 134px; height: 200px;" src="http://3.bp.blogspot.com/_5kHMhX_WWU4/S2a9wp_0n9I/AAAAAAAAAD8/L_nIUF_1u9o/s200/Screenshot+2010.01.19+23.04.56.png" alt="" id="BLOGGER_PHOTO_ID_5433238644073996242" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-7061257808363985113?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/7061257808363985113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=7061257808363985113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7061257808363985113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7061257808363985113'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2010/02/announcing-remarkable-ohio-iphone-app.html' title='Announcing Remarkable Ohio iPhone App'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5kHMhX_WWU4/S2a9T648OLI/AAAAAAAAADk/MJJTJd2_rNA/s72-c/Screenshot+2010.01.19+23.03.12.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8885900317407170229</id><published>2009-12-16T17:19:00.000-08:00</published><updated>2009-12-16T17:21:58.321-08:00</updated><title type='text'>Nationwide's New Cartopia iPhone App</title><content type='html'>Columbus based Nationwide Insurance just released their second iPhone app to help car buyers with the car buying experiencing by offering free vehicle history summaries, monthly payment calculators and dealer invoice pricing. Check it out at &lt;a href="http://itunes.apple.com/us/app/cartopia/id344956427?mt=8"&gt;http://itunes.apple.com/us/app/cartopia/id344956427?mt=8&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8885900317407170229?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8885900317407170229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8885900317407170229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8885900317407170229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8885900317407170229'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/12/nationwides-new-cartopia-iphone-app.html' title='Nationwide&apos;s New Cartopia iPhone App'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5822386867365595358</id><published>2009-12-09T18:10:00.000-08:00</published><updated>2009-12-09T18:22:57.597-08:00</updated><title type='text'>More Great Columbus iPhone Apps</title><content type='html'>Recently more great iPhone apps have come out of Columbus. They include the following:&lt;br /&gt;&lt;br /&gt;Games:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/springshot/id339343272?mt=8"&gt;Springshot from FourthFrame Technologies&lt;/a&gt; - Fun and reminds me of a combination of shuffle board and put put golf.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/jiggle-balls-spikes/id337551567?mt=8"&gt;Jiggle Balls: Spikes from Funky Visions&lt;/a&gt; - Surprisingly addictive.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/air-hockey-face-off/id329336004?mt=8"&gt;Air Hockey: Face Off from Sad Robot Software&lt;/a&gt; - Have not played it yet since it requires two devices but it looks awesome.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Photo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/geophoto-albums/id337462572?mt=8"&gt;GeoPhoto from C.Y.borg's Neural Net&lt;/a&gt; - Great way to Geo Tag your photos taken with your iPhone.&lt;/li&gt;&lt;/ul&gt;Keep up the great work Columbus iPhone developers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5822386867365595358?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5822386867365595358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5822386867365595358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5822386867365595358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5822386867365595358'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/12/more-great-columbus-iphone-apps.html' title='More Great Columbus iPhone Apps'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8476767115928802735</id><published>2009-08-16T17:51:00.000-07:00</published><updated>2009-08-16T18:02:29.024-07:00</updated><title type='text'>Cloud Application Achitectures Book Review</title><content type='html'>I just finished reading &lt;a href="http://www.amazon.com/Cloud-Application-Architectures-Applications-Infrastructure/dp/0596156367/?tag=wwwjuddsoluti-20"&gt;Cloud Application Architectures: Building Applications and Infrastructure&lt;/a&gt; in the Cloud by George Reese and published by O'Reilly. I enjoyed the book but think it should have been named "Amazon Cloud Computing for Managers".&lt;br /&gt;&lt;br /&gt;I thought it did a great job of&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;giving an S3 and EC2 tutorial&lt;br /&gt;&lt;/li&gt;&lt;li&gt;explaining the different persistence options in Amazon Web Service (AWS) offerings &lt;/li&gt;&lt;li&gt;identifying things to think about in regards to security in the cloud&lt;br /&gt;&lt;/li&gt;&lt;li&gt;providing thoughts on disaster recovery in the cloud&lt;/li&gt;&lt;li&gt;making a business case for the cloud&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If you are new to the Amazon Cloud this is the book for you. If you are experienced in the cloud or an experienced application or infrastructure architect the book might be a little lite for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8476767115928802735?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8476767115928802735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8476767115928802735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8476767115928802735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8476767115928802735'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/08/cloud-application-achitectures-book.html' title='Cloud Application Achitectures Book Review'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8597544910526037233</id><published>2009-08-06T17:52:00.000-07:00</published><updated>2009-08-06T18:12:25.056-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Columbus taking over the iPhone game market</title><content type='html'>Over the past year, I have been reading articles about how Columbus is becoming a hot bed for game and 3D movie development. This week was an especially exciting for Columbus since two Columbus based game companies release iPhone games. &lt;a href="http://www.jufti.com/"&gt;JUFTI&lt;/a&gt; released their &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=320784523&amp;mt=8"&gt;Cornhole All*Star&lt;/a&gt; game. The first and only true 3D cornhole game. The second is &lt;a href="http://www.freshgames.com/"&gt;Fresh Games&lt;/a&gt; with their release of &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=321158715&amp;mt=8"&gt;Ranch Rush&lt;/a&gt;. A really fun farming game. They both have awesome graphics and great game play.&lt;br /&gt;&lt;br /&gt;Another fun game produced here in Columbus a little while ago is &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=305920596&amp;mt=8"&gt;Jiggle Balls&lt;/a&gt; from &lt;a href="http://www.funkyvisions.com/"&gt;Funky Visions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I own all three and they are a lot of fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8597544910526037233?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8597544910526037233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8597544910526037233' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8597544910526037233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8597544910526037233'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/08/columbus-taking-over-iphone-game-market.html' title='Columbus taking over the iPhone game market'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8908173108287078439</id><published>2009-07-08T19:52:00.000-07:00</published><updated>2009-07-08T20:15:37.322-07:00</updated><title type='text'>Grails Read-Only Plugin Repository</title><content type='html'>One of my favorite enhancements to Grails 1.1 is the automatic transitive plugin resolution. This feature is great for team development. When a new plug-in is introduced to a project only one developer needs to install it. When they do, the application.properties is updated with the plugin name and version numbers like Listing 1 which shows an application.properties containing the hibernate, image-tools and jsecurity plugins.&lt;br /&gt;&lt;br /&gt;Listing 1 - application.properties file with plugin references.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;app.version=0.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;app.servlet.version=2.4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;app.grails.version=1.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;plugins.hibernate=1.1.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;plugins.image-tools=1.0.4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;app.name=pfj&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;plugins.jsecurity=0.3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When other members of the team get the updated application.properties file they just run &lt;span style="font-family:courier new;"&gt;grails run-app&lt;/span&gt; and the plugins will automatically be downloaded and installed on their machine. Life couldn’t be easier. Well, maybe it could be. See for this to work, the plugin must be installed in the central grails plugin repository found at http://plugins.grails.org/ or you can use another one of my favorite new features of Grails 1.1, multiple repositories. To configure multiple repositories just create a &lt;span style="font-family:courier new;"&gt;BuildConfig.groovy&lt;/span&gt; in your application’s &lt;span style="font-family:courier new;"&gt;grails-app/conf&lt;/span&gt; directory and add a new entry for your additional repository like Listing 2.&lt;br /&gt;&lt;br /&gt;Listing 2 - Additional plugin repository entry in BuildConfig.groovy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;grails.plugin.repos.discovery.myRepository="http://company.com/grails"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The only problem with this is it assumes the repository is hosted in Subversion (SVN). This is not always the case. With the popularity of git many of the plug-in developers have gone to using github for hosting their plugins. One example is the popular &lt;a href="http://www.grails.org/ImageTools+plugin"&gt;image-tools plugin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Another important use case takes advantage of my second favorite feature of Grails 1.1, the Apache Ant and Apache Ivy integration which enables you to do a continuous integration builds in something like Hudson by executing the Ant &lt;span style="font-family:courier new;"&gt;build.xml&lt;/span&gt; without even having to have Grails installed on the build machine. Everything required is installed as a bootstrap. Now that is awesome. Of course this assumes the plugins are in a configured repository that is backed by SVN.&lt;br /&gt;&lt;br /&gt;To simplify developer setup and continuous integration, I looked for documentation to setup a custom Grails plugin repository for plugins I did not maintain but I still want to access using the new Grails 1.1 features. All I found were instructions on how to do it if you are the plugin provider or using the Grails central repository. If that is your goal it can not be easier. For deploying to the central repository you first need to request permission to the Grails plugin SVN repository. Then to deploy the plugin just type &lt;span style="font-family:courier new;"&gt;grails release-plugin&lt;/span&gt;. For a custom plugin repository, you will need an additional configuration in your &lt;span style="font-family:courier new;"&gt;BuildConfig.groovy&lt;/span&gt; file to point to your SVN repository like the one found in Listing 3 and type &lt;span style="font-family:courier new;"&gt;grails release-plugin -repository=myRepository&lt;/span&gt; where the repository parameter is the last part of the property name. That’s it.&lt;br /&gt;&lt;br /&gt;Listing 3 - BuildConfig.groovy with an entry to a repository for distribution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;grails.plugin.repos.distribution.myRepository="https://company.com/grails/"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I could not find any documentation about creating a custom read-only repository for third party plugins you don’t want to maintain or if you just don’t want to have to maintain a SVN repository just for those third-party plugins. So after a little bit of exploring the central repository and some trial and error, this is how I created my own read-only repository saving time and simplifying my team setup.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; for a read-only repository you don’t need SVN all you need is an HTTP based server that can serve files.&lt;br /&gt;&lt;br /&gt;1. Create a &lt;span style="font-family:courier new;"&gt;BuildConfig.groovy&lt;/span&gt; file in your application’s &lt;span style="font-family:courier new;"&gt;grails-app/config&lt;/span&gt; directory containing &lt;span style="font-family:courier new;"&gt;grails.plugin.repos.discovery.myRepository="http://company.com/grails/"&lt;/span&gt; entry where the URL is addressable via HTTP and is the root of the plugin repository.&lt;br /&gt;&lt;br /&gt;2. Create a &lt;span style="font-family:courier new;"&gt;plugins-list.xml&lt;/span&gt; file in a &lt;span style="font-family:courier new;"&gt;.plugin-meta&lt;/span&gt; data directory under the repository root. This file needs to contain your plugin(s) meta data like the following for image-tools:  &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;plugins revision="2"&amp;gt;&lt;br /&gt; &amp;lt;plugin release="1.0.4" name="image-tools"&amp;gt;&lt;br /&gt;   &amp;lt;release tag="RELEASE_1_0_4" type="svn" version="1.0.4"&amp;gt;       &lt;br /&gt;     &amp;lt;title&amp;gt;Image Tools&amp;lt;/title&amp;gt;&lt;br /&gt;     &amp;lt;author&amp;gt;Arquetipos Software&amp;lt;/author&amp;gt;    &lt;br /&gt;     &amp;lt;authoremail&amp;gt;projects@arquetipos.co.cr&amp;lt;/authoremail&amp;gt;     &lt;br /&gt;     &amp;lt;description&amp;gt;Images Tools&amp;lt;/description&amp;gt;&lt;br /&gt;     &amp;lt;documentation&amp;gt;http://www.grails.org/ImageTools+plugin&amp;lt;/documentation&amp;gt;     &lt;br /&gt;     &amp;lt;file&amp;gt;http://www.arquetipos.co.cr/blog/files/grails-image-tools-1.0.4.zip&amp;lt;/file&amp;gt;&lt;br /&gt;     &amp;lt;/release&amp;gt;&lt;br /&gt; &amp;lt;/plugin&amp;gt;&lt;br /&gt; &amp;lt;/plugins&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3. Create a &lt;span style="font-family:courier new;"&gt;grails-&lt;plugin&gt;/trunk&lt;/plugin&gt;&lt;/span&gt; directory under the repository root and copy the zipped plugin package there with the name &lt;span style="font-family:courier new;"&gt;grails-&lt;plugin&gt;-&lt;version&gt;.zip&lt;/version&gt;&lt;/plugin&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Implementing these 3 steps made my third-party plugins available to the list-plugin and install-plugin commands but more importantly to the automatic transitive plugin resolutions for developer and continuous integration servers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8908173108287078439?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8908173108287078439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8908173108287078439' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8908173108287078439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8908173108287078439'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/07/grails-read-only-plugin-repository.html' title='Grails Read-Only Plugin Repository'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-2100830333514295068</id><published>2009-05-08T18:10:00.000-07:00</published><updated>2009-05-08T18:30:00.935-07:00</updated><title type='text'>Continuous Integration Lessons Learned</title><content type='html'>I got a lot of interested from my most recent post about &lt;a href="http://juddsolutions.blogspot.com/2009/05/ultimate-enterprise-java-build-system.html"&gt;The Ultimate Enterprise Java Build Solutions&lt;/a&gt; and it motivated me to find one of my favorite blog posts I posted somewhere else originally back in December 2004. I found some of my lessons still relevant so since I could only find it on the wayback at &lt;a href="http://web.archive.org/web/20050528062417/blogs.apress.com/authors.php?author=Christopher+Judd"&gt;http://web.archive.org/web/20050528062417/blogs.apress.com/authors.php?author=Christopher+Judd&lt;/a&gt;. So, I thought I would repost portions of it.&lt;br /&gt;&lt;p&gt;During the process of using CC, I learned the following valuable lessons I wanted to share. &lt;/p&gt;&lt;p&gt; &lt;b&gt;First, once every 24 hours is not frequent enough for continuous integration.&lt;/b&gt; As mentioned above, I use to set up CI environments to build once every 24 hours. When I initially set up CI, I was asked to set the builds to run every 4 to 6 hours. There were skeptics who believed any more frequent builds triggered by repository activity would interfere with a team so new to CI and cause unnecessary anxiety. However, every 4 to 6 hours was a problem when trying to set up and configure CI initially so I set the CI to check the repository every minute and if something changed to wait for 5 minutes of inactivity before starting the build. Fortunately, I forgot to change it to a less frequent iteration and the minute check made into the final configuration. We discovered that the short frequencies actually provided the best results by giving everybody comfort since they got immediate feedback. Plus without a frequent build, one bad build could cause the red lava lamp to be lit all day. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Second, there are multiple audiences for the builds so there is a need for a continuous integration build and a nightly build.&lt;/b&gt; The audience of a continuous build should be the developers themselves. Developers need quick feedback to provide confidence. They need to know what they checked in to the repository works outside their development environment and what they check out of the repository works. So, this build should focus on code compiling, passing the unit tests and being able to be packages and possibly deployed. The second audience is management and architects. Managers are often trying to collect metrics from frameworks like NCSS and JUnit (number of unit tests). Architects are often interested in code quality reports such as PMD and unit test code coverage. These types of reports take longer to produce and don’t need to run continuously. A separate build that runs at midnight is perfect for executing metric and code quality reports. Of course developers should be able to run these reports at any point in time in their development environments since the same build scripts should be used by both the developers and CI environment. &lt;/p&gt;&lt;p&gt; &lt;span style="font-weight: bold;"&gt;Third&lt;/span&gt;&lt;b&gt;, a CI web site like the one already in Hudson and provided by Sonar is a very valuable communication tool.&lt;/b&gt; While developers need to be notified immediately of build problems via email, IM or lava lamps, other such as managers do not. A website can provide the information they need at their convenience. &lt;/p&gt;&lt;p&gt; &lt;span style="font-weight: bold;"&gt;Forth&lt;/span&gt;&lt;b&gt;, lava lamps are a fun way to provide a visual indicator of the build.&lt;/b&gt; I initially thought the idea was rather hokey but I was wrong. If you want to learn how to integrate lava lamps with CruiseControl check out Mike Clark's Pragmatic Automation web site (&lt;a href="http://web.archive.org/web/20050528062417/http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Devices/BubbleBubbleBuildsInTrouble.rdoc"&gt;http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/Devices/BubbleBubbleBuildsInTrouble.rdoc&lt;/a&gt;).     &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-2100830333514295068?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/2100830333514295068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=2100830333514295068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2100830333514295068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2100830333514295068'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/05/continuous-integration-lessons-learned.html' title='Continuous Integration Lessons Learned'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-4127764835577998574</id><published>2009-05-05T18:18:00.000-07:00</published><updated>2009-05-13T03:59:42.426-07:00</updated><title type='text'>The Ultimate Enterprise Java Build Solution</title><content type='html'>Early in my career I took on the role of setting up and operating the build infrastructure of many of the projects I have consulted on. I started in this role before Apache Ant released its 1.0 version. I have struggled with using Cruise Control as my continuous integration server including lava lamps for broken builds. Finally, I have also used and configured just about every code quality tool for Java and built a dashboard to try to combind all the results.&lt;br /&gt;&lt;br /&gt;Now after all these years, I think I found the right solutions for Enterprise Java Builds. The solution involves 5 open source projects: &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt;, &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt;, &lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt;, &lt;a href="http://nexus.sonatype.org/"&gt;Nexus&lt;/a&gt;, &lt;a href="http://sonar.codehaus.org/"&gt;Sonar&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5kHMhX_WWU4/SgDxDJdfNfI/AAAAAAAAAC8/khKV0oLOfnk/s1600-h/Enterprise+Java+Builds.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 415px; height: 171px;" src="http://2.bp.blogspot.com/_5kHMhX_WWU4/SgDxDJdfNfI/AAAAAAAAAC8/khKV0oLOfnk/s320/Enterprise+Java+Builds.png" alt="" id="BLOGGER_PHOTO_ID_5332526995188168178" border="0" /&gt;&lt;/a&gt;At the core of the solutions is Apache Maven, a build, project, dependency management framework. Maven makes it easy to declaratively describe a project or collection of projects that generate artifacts like binary jars, source jars, doc jars, dependency lists and other artifacts. All these artifacts can be versioned to ensure all developers are using the right artifacts. These artifacts can also be published to a Maven repository making distribution of the artifacts seamless.&lt;br /&gt;&lt;br /&gt;In order for developers to collectively own code and integrate often, a source code repository is necessary. Subversion has been a proven enterprise scale repository which integrates well with may tools like Eclipse, Hudson and Maven. But there are many other quality source code repositories that could fit in Subversion's place such as Git. The exact source code repository for this solutions is not as important as having one and having one that integrates well with the choosen tools.&lt;br /&gt;&lt;br /&gt;One of the biggest challenges in developing software with a team of people is integrating the software so the practice of continiously integrating has become a staple in many enterprises. After every developer check-in, a continious integration server will check the code out, compile and run all the unit tests. Hudson is possibly the easiest and most powerful continious integration server available for Java. It has a very simple web console that makes creating and configuring build jobs a cinch especially Maven jobs. Just incase that is not enough, it has a very nice plug-in system and community making it very flexible and robust.&lt;br /&gt;&lt;br /&gt;After Hudson builds artifacts (jars) that developers need it must publish them to a Maven repository hosted within the enterprise. Nexus is that Maven repository. It enables you to publish both release and snapshot artifacts, provides different views into the respository and includes searching for artifacts even their contents. In addition, it can act as a proxy to external public Maven repository providing traceablity into where artifacts came from as well as improve download performance. Both developers and Hudson can use Nexus to keep their local artifacts up to date providing continious integration for everybody all the time.&lt;br /&gt;&lt;br /&gt;Finally, it is valuable to keep metrics about code quality. This can help show if code is improving or declining. This can help easily identify problems, risky areas and bad pratices. Sonar is a server that provides a dashboard into your code quality. It integrates with many common code quality tools like PMD, Checkstyle and FindBugs. It include metrics for code coverage, unit testing and lines of code. The trending capabilities make it easy to identify patterns.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-4127764835577998574?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/4127764835577998574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=4127764835577998574' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4127764835577998574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4127764835577998574'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/05/ultimate-enterprise-java-build-system.html' title='The Ultimate Enterprise Java Build Solution'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5kHMhX_WWU4/SgDxDJdfNfI/AAAAAAAAAC8/khKV0oLOfnk/s72-c/Enterprise+Java+Builds.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-2727953718668929035</id><published>2009-04-08T18:58:00.000-07:00</published><updated>2009-04-08T19:31:52.571-07:00</updated><title type='text'>Startup Weekend Columbus 2 (SWCII) Experience</title><content type='html'>I can’t believe it is the Wednesday night after &lt;a href="http://www.swcolumbus.eventbrite.com/"&gt;SWCII&lt;/a&gt; already. I am still riding on the high of the weekend. Not only did I get to start a new company this and meet some new friends I also got to geek out too by writing an iPhone application.&lt;br /&gt;&lt;br /&gt;Ok, let me start back at the beginning. Friday, April 3, 2009 about 130-140 people meet at &lt;a href="http://www.techcolumbus.org/"&gt;TechColumbus&lt;/a&gt; to pitch ideas for companies and products. There were 73 or so pitches. They ranged from the absurd to the brilliant. Then we voted on which ideas we liked the most. After the cream of ideas rose to the top we formed groups around our favorite ideas.&lt;br /&gt;&lt;br /&gt;I feel blessed that at the end of the evening I had a great team of six very talented developers and business men excited about implementing one of my two pitches. I have been thinking about this idea for over two years and this weekend gave me the kick in the pants and the team I need to make it real.&lt;br /&gt;&lt;br /&gt;The team itself is very tech heavy and age light. The three senior members of the team were:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linkedin.com/in/ddlucas"&gt;Dave Lucas&lt;/a&gt; - President/Consultant at &lt;a href="http://www.lse.com/"&gt;Lucas Software Engineering&lt;/a&gt;&lt;br /&gt;&lt;a href="http://joshuatbrown.blogspot.com/"&gt;Josh Brown&lt;/a&gt; - Senior Consultant at &lt;a href="http://us.sogeti.com/"&gt;Sogeti&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.linkedin.com/in/hraju"&gt;Harish Raju&lt;/a&gt; - Software Development Manager at &lt;a href="http://www.hp.com/"&gt;HP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The team also included three very multi talented and tireless college students that provided major contributions. All three of them would make great interns or employees so if you are looking for some check them out. I want to see this type of talent stay in the Central Ohio market.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.trebligstudios.com/"&gt;Ben Gilbert&lt;/a&gt; - Computer Science and Engineering/Entrepreneurship student at OSU&lt;br /&gt;&lt;a href="http://www.linkedin.com/in/ankane"&gt;Andrew Kane&lt;/a&gt; - Computer Science and Engineering Student at OSU&lt;br /&gt;&lt;a href="http://www.linkedin.com/in/mhill426"&gt;Matt Hill&lt;/a&gt; - Economics at OSU&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5kHMhX_WWU4/Sd1d8OlwRQI/AAAAAAAAAC0/9eEZe_EzUIA/s1600-h/PFJ_200904.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_5kHMhX_WWU4/Sd1d8OlwRQI/AAAAAAAAAC0/9eEZe_EzUIA/s320/PFJ_200904.JPG" alt="" id="BLOGGER_PHOTO_ID_5322513623911777538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I did not get any sleep on Friday night because I had so many ideas racing through my mind and I was so excited to get started.&lt;br /&gt;&lt;br /&gt;Saturday and half of Sunday, we spent building a functional prototype which included an iPhone application and website. We also spent time putting together a business plan and presentation for the final program. During our software and business development efforts we used an agile process called Scrum. We conducted 2 hour iterations and performed a stand up (meeting where you literally stand up to encourage a short meeting in which you answer the three questions of what have you done since the last meeting, what do you plan to accomplish before the next meeting and do you have any road blocks) after each one. We all felt this made us feel extremely productive and increase our communications. It also encouraged accountability and helped us to tack concerns very early before they become problems. We also found Google docs and Google Groups very helpful. With such short timelines, Google docs gave a way of sharing and even simultaneously make changes to spreadsheet, word processing and presentation documents. Google Groups enabled to send communications out to the whole group at one time making sharing information quick and easy.&lt;br /&gt;&lt;br /&gt;We were also glad we set up subversion repository before we started doing any development. This gave us a convenient way of sharing code and managing the rapid development.&lt;br /&gt;&lt;br /&gt;I also got to evangelize and make some converts to some of my favorite technologies, Groovy and Grails. While most of the team had not had the opportunity to work with these technologies before, they picked it up extremely quickly which was great since I was pretty much heads down in iPhone development. I think that is a huge testament to Groovy and Grails. I really don’t think we could have put something together in a weekend using standard Java technologies since just downloading all the projects and getting them configured would have taken an immense amount of the valuable time we had.&lt;br /&gt;&lt;br /&gt;Finally, we found the book &lt;a href="http://www.amazon.com/Presentation-Zen-Simple-Design-Delivery/?tag=wwwjuddsoluti-20"&gt;Presentationzen&lt;/a&gt; Book an invaluable tool for putting together a compelling presentation.&lt;br /&gt;&lt;br /&gt;The whole weekend TechColumbus and the sponsors provided a great facility and kept us well fed (when we actually tore ourselves a way from our work to eat) and caffeined which helped provide the perfect condition for productivity.&lt;br /&gt;&lt;br /&gt;You maybe wondering by now what our company is. Well, I am going to keep you in suspense a little longer. We are hoping to have a beta start within two months. I will post more when that happens.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-2727953718668929035?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/2727953718668929035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=2727953718668929035' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2727953718668929035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2727953718668929035'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/04/startup-weekend-columbus-2-swcii.html' title='Startup Weekend Columbus 2 (SWCII) Experience'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5kHMhX_WWU4/Sd1d8OlwRQI/AAAAAAAAAC0/9eEZe_EzUIA/s72-c/PFJ_200904.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5257929934735646528</id><published>2009-03-19T19:04:00.000-07:00</published><updated>2009-03-19T19:17:02.526-07:00</updated><title type='text'>3D Modeling Class</title><content type='html'>I love learning new things and 3D animations. So, I combined these passions this winter by taking a 3D modeling class at Columbus State. It was very different than what I do on a daily bases with computers and quite a challenge. I had tried learning 3D modeling on my own with the open source Blender tool but never got the hang of it. So I thought I would see if a structured class would provide be a better learning environment for me and I think it did. I have come a long way in a short period of time. I think I understand the concepts and terms now and I can create a pretty convincing model. However, there is still much more to learn. I hope to continue 3D modeling as a hobby  and I hope I have time to take the advanced modeling and the animation classes next winter.&lt;br /&gt;&lt;br /&gt;Our project was to model, texture and light a room and render 4 still images of it, 2 up close and 2 from a distance. I chose my son's room so I could make 3D toys. I also add a little bit of a Star Wars theme which he loved. Below is my final project.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5kHMhX_WWU4/ScL6KP4VuyI/AAAAAAAAACs/awZH8W8qRA0/s1600-h/IMMT236+Project+3+Christopher+Judd.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://2.bp.blogspot.com/_5kHMhX_WWU4/ScL6KP4VuyI/AAAAAAAAACs/awZH8W8qRA0/s320/IMMT236+Project+3+Christopher+Judd.jpg" alt="" id="BLOGGER_PHOTO_ID_5315085564219079458" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5257929934735646528?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5257929934735646528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5257929934735646528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5257929934735646528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5257929934735646528'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/03/3d-modeling-class.html' title='3D Modeling Class'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5kHMhX_WWU4/ScL6KP4VuyI/AAAAAAAAACs/awZH8W8qRA0/s72-c/IMMT236+Project+3+Christopher+Judd.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-2196125414908514139</id><published>2009-03-10T20:29:00.000-07:00</published><updated>2009-03-10T20:39:27.869-07:00</updated><title type='text'>Groovy and Grails Overview Slides updated</title><content type='html'>Over the past year, I have been presenting a free 1 1/2 hour Groovy and Grails Overviews to any group or company who will listen. Each presentation includes a copy of my book &lt;a href="http://www.amazon.com/gp/product/1430210451?tag=wwwjuddsoluti-20"&gt;Beginning Groovy and Grails&lt;/a&gt; for the organizer. This presentation has been so popular, I have forgotten how many times I have presented it.&lt;br /&gt;&lt;br /&gt;In preparation for presenting it two more times this week, I updated my slides to reflect the new releases of Groovy 1.6 and Grails 1.1. I also had to update the resources since so many great new books are also available. You can find copies of the slides &lt;a href="http://www.juddsolutions.com/downloads/Agile%20Development%20with%20Groovy%20and%20Grailsx.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-2196125414908514139?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/2196125414908514139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=2196125414908514139' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2196125414908514139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2196125414908514139'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/03/groovy-and-grails-overview-slides.html' title='Groovy and Grails Overview Slides updated'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-723384741852725713</id><published>2009-03-10T20:27:00.000-07:00</published><updated>2009-03-10T20:29:02.916-07:00</updated><title type='text'>Groovy and Grails at Cleveland User Group</title><content type='html'>I will be speaking about Groovy and Grails at tomorrow night's Cleveland Ohio Java Users Group. If you are in the area please come on out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-723384741852725713?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/723384741852725713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=723384741852725713' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/723384741852725713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/723384741852725713'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/03/groovy-and-grails-at-cleveland-user.html' title='Groovy and Grails at Cleveland User Group'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-6468901548006614241</id><published>2009-02-26T19:06:00.000-08:00</published><updated>2009-02-26T19:08:36.193-08:00</updated><title type='text'>Chmod iPhone Application</title><content type='html'>I am excited to announce my first iPhone app is now available in the Apple App Store. The apps name is Chmod and it can be used to help determine the appropriate Mac OS X, Linux and Unix file and directory permissions. Check it out, it's free.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5kHMhX_WWU4/SadZGD5XxlI/AAAAAAAAACc/gokqoOazXJo/s1600-h/screen+shot.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 222px; height: 320px;" src="http://1.bp.blogspot.com/_5kHMhX_WWU4/SadZGD5XxlI/AAAAAAAAACc/gokqoOazXJo/s320/screen+shot.jpg" alt="" id="BLOGGER_PHOTO_ID_5307308646539445842" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-6468901548006614241?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/6468901548006614241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=6468901548006614241' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6468901548006614241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6468901548006614241'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/02/chmod-iphone-application.html' title='Chmod iPhone Application'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5kHMhX_WWU4/SadZGD5XxlI/AAAAAAAAACc/gokqoOazXJo/s72-c/screen+shot.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-2949421246366899902</id><published>2009-02-25T03:30:00.000-08:00</published><updated>2009-02-25T03:38:13.395-08:00</updated><title type='text'>First CIDUG (Columbus iPhone Developer User Group) Meeting</title><content type='html'>The first CIDUG (Columbus iPhone Developer User Group) meeting was a huge success. We had 50 people in attendance. In addition to a presentation on how to get started in iPhone development we also talked about the future of the group and what we want to do from a meeting and website perspective. There is a strong desire to meet frequently even monthly and some of those meetings to just be coding events where we can help each other.&lt;br /&gt;&lt;br /&gt;Most importantly, we officially desided CIDUG is pronounced sigh-dug.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5kHMhX_WWU4/SaUteMB7ySI/AAAAAAAAACU/247fVRkL2dw/s1600-h/cidug_small.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 434px; height: 166px;" src="http://3.bp.blogspot.com/_5kHMhX_WWU4/SaUteMB7ySI/AAAAAAAAACU/247fVRkL2dw/s320/cidug_small.jpg" alt="" id="BLOGGER_PHOTO_ID_5306697732574660898" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-2949421246366899902?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/2949421246366899902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=2949421246366899902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2949421246366899902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2949421246366899902'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/02/first-cidug-columbus-iphone-developer.html' title='First CIDUG (Columbus iPhone Developer User Group) Meeting'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5kHMhX_WWU4/SaUteMB7ySI/AAAAAAAAACU/247fVRkL2dw/s72-c/cidug_small.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-1460953436929203474</id><published>2009-02-02T19:30:00.000-08:00</published><updated>2009-02-02T19:51:01.511-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Creating a simple iPhone checkbox</title><content type='html'>I was disappointed to discover the iPhone SDK did not include a Checkbox component. Yes, I know there is the UISwitch component. But sometimes that is just to big and does not look right for your design.&lt;br /&gt;&lt;br /&gt;After googling, I could not find a checkbox component that somebody else had made or a good tutorial. So below are the steps I did to create a simple checkbox.&lt;br /&gt;&lt;br /&gt;I began by adding a UIButton to my view and setting its Type to custom and its background to my unchecked png image with transparent background. Then I implemented the auto generated viewDidLoad method to set my background image if the button state was selected to the checked png image.&lt;br /&gt;&lt;br /&gt;- (void)viewDidLoad {&lt;br /&gt;     [super viewDidLoad];&lt;br /&gt;     [checkButton setBackgroundImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateSelected];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Finally, I attached a changeSeletected method to the button's Touch Up Inside event that changed the selected state of my button.&lt;br /&gt;&lt;br /&gt;- (IBAction) changeSelected: (id) sender {&lt;br /&gt;  UIButton *button = (UIButton *) sender;&lt;br /&gt;     button.selected = !button.selected;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;I think the final outcome turned out pretty nice.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5kHMhX_WWU4/SYe9xDV2DgI/AAAAAAAAACA/fWHGaduW2Rg/s1600-h/iphone+checkbox.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 166px; height: 320px;" src="http://4.bp.blogspot.com/_5kHMhX_WWU4/SYe9xDV2DgI/AAAAAAAAACA/fWHGaduW2Rg/s320/iphone+checkbox.png" alt="" id="BLOGGER_PHOTO_ID_5298412137032846850" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-1460953436929203474?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/1460953436929203474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=1460953436929203474' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1460953436929203474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1460953436929203474'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/02/creating-simple-iphone-checkbox.html' title='Creating a simple iPhone checkbox'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5kHMhX_WWU4/SYe9xDV2DgI/AAAAAAAAACA/fWHGaduW2Rg/s72-c/iphone+checkbox.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-4157817869727349322</id><published>2009-01-11T18:22:00.000-08:00</published><updated>2009-01-11T18:36:54.258-08:00</updated><title type='text'>3D Internet</title><content type='html'>I am taking a 3D Modeling course at Columbus State starting this week. Several people have asked me why I am taking such a course. The simple answer is I find 3D fascinating. The long answer is I think 3D is the future. 3D is currently playing an important role in movies, games and even mobile applications like those found on the iPhone. But I also think 3D will be the future of the Internet. I think our children will look back at today's two dimensional Internet like I look back on black and white TV. Every time I see a B&amp;amp;W movie or TV program, I ask how could they watch this when they live in a colored world. I think our children will ask how could you live with a 2D Internet when you live in a 3D world. I think &lt;a href="http://secondlife.com/"&gt;Second Life&lt;/a&gt; is a glimpse into this future. So I think at some point 3D skills will be an important skill to have if not a required one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-4157817869727349322?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/4157817869727349322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=4157817869727349322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4157817869727349322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4157817869727349322'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/01/3d-internet.html' title='3D Internet'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-6361417904044707777</id><published>2009-01-10T06:49:00.001-08:00</published><updated>2009-01-11T18:22:04.785-08:00</updated><title type='text'>CodeMash 2009 Presentations - Groovy and Grails Precompile and iPhone Web Development with Grails and iUI</title><content type='html'>I thoroughly enjoyed attending and presenting at CodeMash 2009. My co-author of &lt;a href="http://www.amazon.com/gp/product/1430210451?tag=wwwjuddsoluti-20"&gt;Beginning Groovy and Grails&lt;/a&gt;, Jim Shingler and I presented a Groovy and Grails Precompile which is CodeMash speak for preconference tutorial. The presentation went well and we had 27 people in attendance. If you are interested, you can view the slides at &lt;a href="http://www.slideshare.net/jshingler/gg-code-mash2009-20090106-presentation/"&gt;http://www.slideshare.net/jshingler/gg-code-mash2009-20090106-presentation/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I also presented a regular session on iPhone Web Development with Grails and iUI. Most of the presentation is about iPhone Web Development but there are several Grails introductory slides and several more on integrating iUI with Grails. I am glad I included the Grails introductory material since this was the first exposure to Grails for most of the developers attending my session. If you are interested, you can view the slides at &lt;a href="http://www.slideshare.net/cjudd/iphone-web-development-with-grails-from-codemash-2009-presentation/"&gt;http://www.slideshare.net/cjudd/iphone-web-development-with-grails-from-codemash-2009-presentation/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-6361417904044707777?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/6361417904044707777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=6361417904044707777' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6361417904044707777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6361417904044707777'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2009/01/codemash-2009-presentations-groovy-and.html' title='CodeMash 2009 Presentations - Groovy and Grails Precompile and iPhone Web Development with Grails and iUI'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8008066305029670781</id><published>2008-12-01T17:24:00.000-08:00</published><updated>2008-12-01T17:33:03.853-08:00</updated><title type='text'>iUI Web Development with Grails article</title><content type='html'>I am excited to announce my iPhone article iUI Web Development with Grails was just published as the cover story of the December 2008 edition of &lt;a href="http://www.groovymag.com/main.issues.description/id=4"&gt;GroovyMag&lt;/a&gt;. In the article I explain why you might want to consider iPhone web development over native iPhone applications, how to add native iPhone looking support to an existing Grails application using the &lt;a href="http://code.google.com/p/iui/"&gt;iUI library&lt;/a&gt; and the &lt;a href="http://grails.org/iUI+Plugin"&gt;iUI Grail plug-in&lt;/a&gt; as well as tips for testing and debugging iPhone web applications. Check out my article and the other great GroovyMag articles at  &lt;a href="http://www.groovymag.com/main.issues.description/id=4"&gt;http://www.groovymag.com/main.issues.description/id=4&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8008066305029670781?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8008066305029670781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8008066305029670781' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8008066305029670781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8008066305029670781'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/12/iui-web-development-with-grails-article.html' title='iUI Web Development with Grails article'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-445059859656818089</id><published>2008-11-26T18:38:00.000-08:00</published><updated>2008-12-13T13:08:07.895-08:00</updated><title type='text'>Columbus iPhone Developers User Group (CIDUG)</title><content type='html'>I am interested in meeting other iPhone developers in Central Ohio and sharing information. So I am proposing a local iPhone Developers User Group. If you are interested, please join the Google Group created for starting the conversation about this group at &lt;a href="http://groups.google.com/group/cidug"&gt;http://groups.google.com/group/cidug&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-445059859656818089?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/445059859656818089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=445059859656818089' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/445059859656818089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/445059859656818089'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/11/columbus-iphone-developers-user-group.html' title='Columbus iPhone Developers User Group (CIDUG)'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8112174453687065454</id><published>2008-11-05T18:18:00.000-08:00</published><updated>2008-11-05T18:30:06.605-08:00</updated><title type='text'>Announcing Grails iUI plug-in</title><content type='html'>I am excited to announce the release of a new Grails plug-in, &lt;a href="http://www.grails.org/iUI+Plugin"&gt;iUI Plug-in&lt;/a&gt; version 0.2. This is the initial release of the plug-in.  This plug-in installs the current version of the popular iUI library for developing native looking iPhone web applications. iUI is a combination of CSS, JavaScript and images for simplifying iPhone web applications and give the application a native iPhone application look and feel.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5kHMhX_WWU4/SRJVLpGjqvI/AAAAAAAAAB4/xRlvi3wEhbc/s1600-h/notes.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 166px; height: 320px;" src="http://2.bp.blogspot.com/_5kHMhX_WWU4/SRJVLpGjqvI/AAAAAAAAAB4/xRlvi3wEhbc/s320/notes.png" alt="" id="BLOGGER_PHOTO_ID_5265364572849810162" border="0" /&gt;&lt;/a&gt;You can find more details about the Grails iUI plug-in and how to use it at the &lt;a href="http://www.grails.org/iUI+Plugin"&gt;iUI Plug-in page&lt;/a&gt;. Also keep a look out for an upcoming indepth iPhone Web Development article in &lt;a href="http://www.groovymag.com/"&gt;GroovyMag&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8112174453687065454?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8112174453687065454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8112174453687065454' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8112174453687065454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8112174453687065454'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/11/announcing-grails-iui-plug-in.html' title='Announcing Grails iUI plug-in'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5kHMhX_WWU4/SRJVLpGjqvI/AAAAAAAAAB4/xRlvi3wEhbc/s72-c/notes.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-3502091141113719824</id><published>2008-11-05T17:35:00.000-08:00</published><updated>2008-11-05T17:41:51.200-08:00</updated><title type='text'>Eclipse World 2008 Slides</title><content type='html'>I just finished speaking at &lt;a href="http://www.eclipseworld.net/"&gt;Eclipse World 2008&lt;/a&gt;. Like previous years it was a marathon of speaking. I gave one full day tutorial and three regular sessions so unfortunately I did not get to attend very many sessions. I have posted my sessions for all to enjoy.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.juddsolutions.com/ew2008/wtp.pdf"&gt;Develop Better Java EE Applications With Eclipse Web Tools Platform (tutorial)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.juddsolutions.com/ew2008/ejb.pdf"&gt;Step by Step: Making Enterprise JavaBeans With J2EE Standard Tools&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.juddsolutions.com/ew2008/facets.pdf"&gt;Beat Those Java Dependencies: Extend the Web Tools Platform With Facets&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.juddsolutions.com/ew2008/dtp.pdf"&gt;Interacting With Relational Databases&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-3502091141113719824?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/3502091141113719824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=3502091141113719824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3502091141113719824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3502091141113719824'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/11/eclipse-world-2008-slides.html' title='Eclipse World 2008 Slides'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-4671014484086899128</id><published>2008-10-16T18:42:00.000-07:00</published><updated>2008-10-16T18:48:23.251-07:00</updated><title type='text'>Please Be Safe</title><content type='html'>I thought this was a humorous sign I saw at &lt;a href="http://www.thewilds.org/"&gt;The Wilds&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5kHMhX_WWU4/SPfuOWQ5tYI/AAAAAAAAABw/hnJulpjGNpg/s1600-h/100_4271.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_5kHMhX_WWU4/SPfuOWQ5tYI/AAAAAAAAABw/hnJulpjGNpg/s320/100_4271.JPG" alt="" id="BLOGGER_PHOTO_ID_5257933020240393602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is an interesting way to protect your investment. Notice the large cats in the background.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-4671014484086899128?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/4671014484086899128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=4671014484086899128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4671014484086899128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4671014484086899128'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/10/please-be-safe.html' title='Please Be Safe'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5kHMhX_WWU4/SPfuOWQ5tYI/AAAAAAAAABw/hnJulpjGNpg/s72-c/100_4271.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-2684707958743462544</id><published>2008-08-10T12:47:00.000-07:00</published><updated>2008-08-10T13:22:46.169-07:00</updated><title type='text'>Enabling the AJAX Spinner in Grails</title><content type='html'>For standard page requests, browsers use an animated icon as an indicator to the user that the browser is waiting for the request to complete. However, for AJAX calls that are initiated via JavaScript in a separate thread the browser icon does not animate. So, typically the application developers use an animated icon within the page to notify the user the page is waiting for a request to complete. In an effort to simplify web development &lt;a href="http://www.grails.org/"&gt;Grails&lt;/a&gt; automatically includes an animated spinner icon when using the &lt;a href="http://www.prototypejs.org/"&gt;Prototype&lt;/a&gt; or &lt;a href="http://script.aculo.us/"&gt;script.acolo.us&lt;/a&gt; AJAX frameworks.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5kHMhX_WWU4/SJ9GY5qlzYI/AAAAAAAAAA8/_KSnnxvFs0I/s1600-h/grails-ajax-spinner.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_5kHMhX_WWU4/SJ9GY5qlzYI/AAAAAAAAAA8/_KSnnxvFs0I/s320/grails-ajax-spinner.png" alt="" id="BLOGGER_PHOTO_ID_5232978685638069634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To enable the Grails AJAX spinner you must include the Prototype or script.acolo.us JavaScript typically using the &lt;span style="font-family:courier new;"&gt;&lt;g:javascript library="prototype"&gt;&lt;/g:javascript&gt;&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;&lt;g:javascript library="scriptaculous"&gt;&lt;/g:javascript&gt;&lt;/span&gt; tags. But these declarations can not be included just any place within your page. These declarations must come before the &lt;span style="font-family:courier new;"&gt;&lt;g:javascript library="application"&gt;&lt;/g:javascript&gt;&lt;/span&gt; tag since it includes the &lt;span style="font-family:courier new;"&gt;application.js&lt;/span&gt; file that registers the spinner with Prototype and requires Prototype variables to be available.&lt;br /&gt;&lt;br /&gt;If you are using the default layout found in &lt;span style="font-family:courier new;"&gt;main.gsp&lt;/span&gt;, you can declare the Prototype or script.acolo.us inclusions in one of two places. You can either make the declarations in the header section of an individual view such as in this example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Make and Model&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;meta equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt;&lt;br /&gt;&amp;lt;meta name="layout" content="main"&amp;gt;&lt;br /&gt;&amp;lt;g:javascript library="scriptaculous"/&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;/pre&gt;Or in the header section of the &lt;span style="font-family:courier new;"&gt;main.gsp&lt;/span&gt; prior to the application declaration such as in this example.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;&amp;lt;g:layoutTitle default="Grails" /&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" href="${createLinkTo(dir:'css',file:'main.css')}" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="shortcut icon" href="${createLinkTo(dir:'images',file:'favicon.ico')}" type="image/x-icon" /&amp;gt;&lt;br /&gt;&amp;lt;g:layoutHead /&amp;gt;&lt;br /&gt;&amp;lt;g:javascript library="scriptaculous" /&amp;gt;&lt;br /&gt;&amp;lt;g:javascript library="application" /&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;/pre&gt;If you are not using the standard layout just make sure you put the Prototype or script.acolo.us tag prior to the application tag and include the following or similar div tag found in the default layout.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;div id="spinner" class="spinner" style="display:none;"&amp;gt;&lt;br /&gt;&amp;lt;img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Spinner" /&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-2684707958743462544?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/2684707958743462544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=2684707958743462544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2684707958743462544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2684707958743462544'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/08/enabling-ajax-spinner-in-grails.html' title='Enabling the AJAX Spinner in Grails'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5kHMhX_WWU4/SJ9GY5qlzYI/AAAAAAAAAA8/_KSnnxvFs0I/s72-c/grails-ajax-spinner.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-291231420204891178</id><published>2008-08-08T03:47:00.000-07:00</published><updated>2008-08-08T04:03:01.240-07:00</updated><title type='text'>Groovy Programming Review</title><content type='html'>I recently finished reading &lt;a href="http://www.amazon.com/gp/product/1934356093?tag=wwwjuddsoluti-20"&gt;Groovy Programming: Dynamic Productivity for the Java Developer&lt;/a&gt; by &lt;span&gt;&lt;a href="http://www.amazon.com/exec/obidos/search-handle-url?%5Fencoding=UTF8&amp;amp;search-type=ss&amp;amp;index=books&amp;amp;field-author=Venkat%20Subramaniam"&gt;&lt;/a&gt;&lt;/span&gt;Venkat Subramaniam. I found it to be a very good and inspiring book. For experienced Groovy developers, the first half has some jems so it is worth reading but the second half is what makes the book. Venkat's explination of Groovy's Meta Programming and dynamic features makes a difficult topic very easy to understand with good simple examples. His explination of building builders inspired me to evaluate some of the behaivor tests I was writing at the time. It helped me to realize the hierartical data structure I was building in code for test data could be better represented using a custom builder which ultimately made the code much easier to read and maintain.&lt;br /&gt;&lt;br /&gt;I recommend every serious Groovy and Java developer read at least the second half of the book so congradulations Venkat on an excellent book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-291231420204891178?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/291231420204891178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=291231420204891178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/291231420204891178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/291231420204891178'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/08/groovy-programming-review.html' title='Groovy Programming Review'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-6640817364978308070</id><published>2008-08-05T08:27:00.000-07:00</published><updated>2008-08-05T08:29:49.208-07:00</updated><title type='text'>Beginning Groovy and Grails is Apress' eBook Deal of the Day</title><content type='html'>If you act today, you can get an electronic copy of &lt;a href="http://www.amazon.com/gp/product/1430210451?tag=wwwjuddsoluti-20"&gt;Beginning Groovy and Grails&lt;/a&gt; today for only $10. See &lt;a href="http://www.apress.com/info/dailydeal"&gt;http://www.apress.com/info/&lt;/a&gt;&lt;a href="http://www.apress.com/info/dailydeal"&gt;dailydeal&lt;/a&gt; for details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-6640817364978308070?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/6640817364978308070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=6640817364978308070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6640817364978308070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6640817364978308070'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/08/beginning-groovy-and-grails-is-apress.html' title='Beginning Groovy and Grails is Apress&apos; eBook Deal of the Day'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-560233736812453897</id><published>2008-07-26T03:04:00.000-07:00</published><updated>2008-07-26T03:29:17.523-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Writing'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>NFJS COSS 2008 1st Day Wrap Up</title><content type='html'>It is the morning after the first day of the &lt;a href="http://www.nofluffjuststuff.com"&gt;No Fluff Just Stuff&lt;/a&gt; &lt;a href="http://www.nofluffjuststuff.com/conference/columbus/2008/07/index.html"&gt;Central Ohio Software Symposium 2008&lt;/a&gt; and I am writing this blog at 6:05 am because I am still so mentally stimulated I could not sleep at all last night so I gave up trying. I hope it does not catch up with me during today's sessions.&lt;br /&gt;&lt;br /&gt;I really enjoyed &lt;a href="http://www.nofluffjuststuff.com/conference/speaker/jared_richardson.html"&gt;Jared Richardson's&lt;/a&gt;, author of &lt;a href="http://www.amazon.com/Practical-Guide-Successful-Software-Projects/dp/0974514047/?tag=wwwjuddsoluti-20"&gt;Ship It! A Pratical Guide to Successful Software Projects&lt;/a&gt;, keynote called Career 2.0. He announced he was writing a book of the same name that he expects to finish in January. In his keynote, he encouraged us to take control of our careers by improving our visibility in the industry. Some of his suggestions for getting started were writing, speaking and contributing to open source. He recommended setting goals but starting with simple steps like writing a blog, giving lunch and learns in your office or contributing documentation to your favorite open source project or maybe one you want to learn more about.&lt;br /&gt;&lt;br /&gt;I have to agree with Jared completely. During my exit interview from college with my advisor, I was asked what I wanted to do with my career. I told her I don't know. But I did know there were two things I did not want to do. I did not want to write and I did not want to teach. 12 years, 4 books, several articals, numerous technical classses, many conferences and COJUG presentations I can say that was a very narrow minded view. I have found those are two of my favorite things to do and doing them have opened so many doors including free trips to Europe. I also discovered that contributing and observing open sources has really improved my disipline as a developer. It has allowed me to be exposed to more projects and practices then I could even be exposed to in my consulting practice. It allows me to see more of what works and what doesn't.&lt;br /&gt;&lt;br /&gt;I also attended &lt;a href="http://www.davisworld.org/"&gt;Scott Davis's&lt;/a&gt;, author of &lt;a href="http://www.amazon.com/gp/product/0978739299?tag=wwwjuddsoluti-20"&gt;Groovy Recipes&lt;/a&gt;, Blue Pill and Red Pill presentations I had heard so much about from Java One. I was not dissappointed. I think it was a great introduction to Groovy for Java developers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-560233736812453897?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/560233736812453897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=560233736812453897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/560233736812453897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/560233736812453897'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/07/nfjs-coss-2008-1st-day-wrap-up.html' title='NFJS COSS 2008 1st Day Wrap Up'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-1477861126717230602</id><published>2008-07-18T18:40:00.000-07:00</published><updated>2008-07-18T18:59:02.697-07:00</updated><title type='text'>Validate legacy databases with Grails</title><content type='html'>By default Grails assume you are creating a new database schema from scratch. But one of its strengths is it's ease of mapping to existing database tables. However when you map to existing tables you must be careful. By default the DataSource.groovy file, is configured to &lt;span style="font-style: italic;"&gt;create-drop&lt;/span&gt; tables so it is easy to inadvertently wipe out data and tables. In addition switching to the less disruptive option of &lt;span style="font-style: italic;"&gt;update&lt;/span&gt; may not be safe either. See GORM objects by default have an &lt;span style="font-style: italic;"&gt;id&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;version&lt;/span&gt; attribute that are injected by GORM. When GORM gets initialized it will add &lt;span style="font-style: italic;"&gt;id&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;version&lt;/span&gt; columns to your database which you may not want or expect. So the best option may be to use the &lt;span style="font-style: italic;"&gt;validate&lt;/span&gt; option which is not documented in the Grails user guide. On start up it will validate the tables have the columns that your domain classes expect and if not fail to start.&lt;br /&gt;&lt;br /&gt;By the way, to turn off the &lt;span style="font-style: italic;"&gt;version&lt;/span&gt; column you will need to set &lt;span style="font-style: italic;"&gt;version&lt;/span&gt; to false in the domain class mappings. To prevent the &lt;span style="font-style: italic;"&gt;id&lt;/span&gt; column from being created, you will need to map &lt;span style="font-style: italic;"&gt;id&lt;/span&gt; to the primary key column of your table.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-1477861126717230602?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/1477861126717230602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=1477861126717230602' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1477861126717230602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1477861126717230602'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/07/validate-legacy-databases-with-grails.html' title='Validate legacy databases with Grails'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-3688865991002711464</id><published>2008-07-16T19:05:00.000-07:00</published><updated>2008-07-16T19:14:04.753-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse 3.4 (Ganymede) is more friendly to Maven Users</title><content type='html'>Last week I started using Eclipse 3.4 (Ganymede). There are a ton of new subtle enhancements along with the new major features. One of the subtle features I immediately appreciated was not even in the &lt;a href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html"&gt;Workbench&lt;/a&gt; or &lt;a href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html"&gt;Java Development&lt;/a&gt; User Guide’s What’s new documentation. It is a minor enhancement to the Classpath Variables which makes working with a local Maven repository so much easier.&lt;br /&gt;&lt;br /&gt;Let me start of by explaining what Eclipse Classpath Variables are. As you probably already know, fully qualified paths in code or configurations are a sign of a code smell. It often leads to comments like “It works on my machine”. In Eclipse projects, this commonly happens in adding Libraries to the classpath. Many developers use the Project &gt; Properties &gt; Java Build Path &gt; Libraries and press the Add External Jars button to add jars. This causes a fully qualified path to the jar to be put in the Eclipse .classpath file. If other developers on the team do not have the exact same path, sharing the .classpath file via version control does not work. So I have seen many teams choose to not version control the file to get around the problem. Unfortunately that is not the answer because it takes longer to set up new developers and also leads to “It compiles and runs on my machine” since everybody is using a different library configuration. Another problem that often happens is one developer adds a new library dependency and other team members start getting ClassNotFoundExceptions or code from version control no longer compiles because they didn’t know a new jar dependency was added.&lt;br /&gt;&lt;br /&gt;Classpath Variables can solve this by configuring a variable starting point in the classpath and then using the Add Variable button on the Libraries tab of Java Build Properties rather than the Add External Library button, jars can be added in a much more flexible way. As a mater of fact, just two weeks ago when I presented my &lt;a href="http://www.cojug.org/index.php?option=com_eventlist&amp;amp;Itemid=27&amp;amp;func=details&amp;amp;did=32"&gt;10 Eclipse Productivity Tips&lt;/a&gt; at &lt;a href="http://www.cojug.org/"&gt;COJUG&lt;/a&gt; somebody said we had that problem on my last project so we stopped checking in that file because one person didn’t want to conform. After the presentation she realized Classpath Variables could have solved that.&lt;br /&gt;&lt;br /&gt;For Maven users a Classpath Variable of M2_REPO is often used and configured to the top of their local Maven repository. Unfortunately, maven repositories can often get very deep and may contain multiple copies of the same or similar jars in different locations. So, navigating the directory structure to add many dependencies can be very time consuming. This is where the new Classpath Variable feature comes in. A new filename filter was added making it easier to see all the jars at once or farther narrowing can be done.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_5kHMhX_WWU4/SH6qPnHF-AI/AAAAAAAAAA0/O4PK2wq9r0E/s1600-h/Variable+Extension.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_5kHMhX_WWU4/SH6qPnHF-AI/AAAAAAAAAA0/O4PK2wq9r0E/s320/Variable+Extension.jpg" alt="" id="BLOGGER_PHOTO_ID_5223799802969847810" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-3688865991002711464?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/3688865991002711464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=3688865991002711464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3688865991002711464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3688865991002711464'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/07/eclipse-34-ganymede-is-more-friendly-to.html' title='Eclipse 3.4 (Ganymede) is more friendly to Maven Users'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_5kHMhX_WWU4/SH6qPnHF-AI/AAAAAAAAAA0/O4PK2wq9r0E/s72-c/Variable+Extension.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-1716749365619490359</id><published>2008-07-03T19:30:00.000-07:00</published><updated>2008-07-16T19:14:26.901-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Free Groovy and Grails training and copy of Beginning Groovy and Grails</title><content type='html'>On &lt;a href="http://juddsolutions.blogspot.com/2008/03/free-groovy-and-grails-lunch-and-learn.html"&gt;March 10th&lt;/a&gt;, I made the offer to provide free 1 1/2 hours of Groovy and Grails training to any companies in the Central Ohio area. This offer has been very popular. With the recent publication of my book &lt;a href="http://www.amazon.com/gp/product/1430210451?tag=wwwjuddsoluti-20"&gt;Beginning Groovy and Grails&lt;/a&gt;, I want re-offer this opportunity and sweeten the deal by providing one free copy of &lt;a href="http://www.amazon.com/gp/product/1430210451?tag=wwwjuddsoluti-20"&gt;Beginning Groovy and Grails&lt;/a&gt; to any companies receiving the training. The training defines Groovy and Grails and demonstrates their capabilities with a live coding demo including some AJAX examples. If you are interested in learning more about taking advantage of this offer, please email me at &lt;a href="mailto:groovy@juddsolutions.com"&gt;groovy@juddsolutions.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-1716749365619490359?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/1716749365619490359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=1716749365619490359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1716749365619490359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1716749365619490359'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/07/free-groovy-and-grails-training-and.html' title='Free Groovy and Grails training and copy of Beginning Groovy and Grails'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5005743985636246966</id><published>2008-07-03T19:18:00.000-07:00</published><updated>2008-07-16T19:14:50.057-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Eclipse ${project_loc} errors during Grails development</title><content type='html'>In your Grails development with Eclipse, if you have ever used the Run Launch configuration provided by Grails or followed &lt;a href="http://docs.codehaus.org/display/GRAILS/Eclipse+IDE+Integration#EclipseIDEIntegration-Addingdomainclassesetc."&gt;Add domain classes etc.&lt;/a&gt; instructions on the &lt;a href="http://docs.codehaus.org/display/GRAILS/Eclipse+IDE+Integration"&gt;Grails Eclipse IDE Integration&lt;/a&gt; wiki page, you may have received the Eclipse error message “Variable references empty selection: ${project_loc}”.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_5kHMhX_WWU4/SG2JJvnTvNI/AAAAAAAAAAs/40KcutX7BII/s1600-h/mime-attachment.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_5kHMhX_WWU4/SG2JJvnTvNI/AAAAAAAAAAs/40KcutX7BII/s320/mime-attachment.gif" alt="" id="BLOGGER_PHOTO_ID_5218978343685438674" border="0" /&gt;&lt;/a&gt;This is caused by the fact that certain actions can cause Eclipse to loose focus of the current project. To resolve the issue, simply select your current project in the Package Explorer or Navigator and repeat task that caused the error. This can get annoying so another alternative is to replace ${project_loc} with ${workspace_loc}\project_name if your project in your workspace directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5005743985636246966?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5005743985636246966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5005743985636246966' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5005743985636246966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5005743985636246966'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/07/eclipse-projectloc-errors-during-grails.html' title='Eclipse ${project_loc} errors during Grails development'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_5kHMhX_WWU4/SG2JJvnTvNI/AAAAAAAAAAs/40KcutX7BII/s72-c/mime-attachment.gif' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-965329916035798384</id><published>2008-06-30T18:10:00.000-07:00</published><updated>2008-07-16T19:15:29.456-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><title type='text'>Tip: Causes of java.lang.ClassNotFoundException</title><content type='html'>Class loading issues are a common frustration for many Java developers. The dreaded &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassNotFoundException.html"&gt;java.langClassNotFoundException&lt;/a&gt; means they can forget about going home at a reasonable hour. While Java class loading is very powerful feature, it is also a very flexible and confusing feature. But don’t let this exception scare you. The majority of the time, there are three very practical things to look at in order to resolve the issue.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If you are loading a class by name either using Class.forName() or an Inversion of Control container like Spring it may be as simple as the class name was spelled incorrectly. Validate the fully qualified class name is spelled correctly. The best way is to use the Eclipse “Copy Qualified Name” feature or copying and pasting the package name and class name directly from the source file.&lt;/li&gt;&lt;li&gt;The mostly likely culprit is the class can not really be found. This can be caused by the directory or jar file containing class not being included in the JVM classpath. The other common cause when multiple class loaders are involved such as in a web container or application server is a visibility problem. For example classes in an ejb-jar do not have access to classes in the war file for the majority of application servers. But classes in the war file have access to classes in the ejb-jar. The reason is the war file typically has its own class loader which is a child class loader of the ear class loader. The basic rule is children class loaders have access to their parents but not visa versa. For this error, check your application server’s class loading documentation and make sure the class that is trying to access the not found class has the acceptable access. &lt;/li&gt;&lt;li&gt;The most challenging cause to debug is a dependency issue during initialization of a class. During initialization if a class can’t find certain resources it depends on such as other classes or files, this may result in a ClassNotFoundException. To resolve this, you may need to validate all dependencies are available. If you have the code, you can look at the class imports and any static initilization. If you don’t, you might need to reverse engineer the class to determine the dependencies.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I hope this helps. Just remember the cause of ClassNotFoundExceptions can be difficult to resolve but they are always deterministic so stick with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-965329916035798384?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/965329916035798384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=965329916035798384' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/965329916035798384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/965329916035798384'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/06/tip-causes-of-javalangclassnotfoundexce.html' title='Tip: Causes of java.lang.ClassNotFoundException'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-75308256099205699</id><published>2008-06-26T19:19:00.000-07:00</published><updated>2008-07-16T19:15:49.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Announcing Beginning Groovy and Grails Book</title><content type='html'>Ok, &lt;a href="http://www.amazon.com/gp/product/1430210451?tag=wwwjuddsoluti-20"&gt;Beginning Groovy and Grails&lt;/a&gt; has been available for about a week and my co-authors have already announced it but I wanted to wait to make my announcement when the electronic/PDF version was available. It was a long but fun process and I am very proud of the results. I think we have managed to put together a book that will easily enable developers to get up to speed with what they need to know in Groovy to begin being productive in Grails. I think the remainder of the book does a good job of providing a strong foundation of the common things, plug-ins and tips a new Grails developer will need to know in order to put together a fully functional Web 2.0 application. Currently &lt;a href="http://www.amazon.com/gp/product/1430210451?tag=wwwjuddsoluti-20"&gt;Amazon.com&lt;/a&gt; is sold out of print versions but you can still order and they will be getting more soon. Or you can purchase the print or electronic version from the &lt;a href="http://www.apress.com/book/view/1430210451"&gt;Apress&lt;/a&gt; website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-75308256099205699?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/75308256099205699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=75308256099205699' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/75308256099205699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/75308256099205699'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/06/announcing-beginning-groovy-and-grails.html' title='Announcing Beginning Groovy and Grails Book'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-2004464956068541297</id><published>2008-06-26T19:11:00.000-07:00</published><updated>2008-07-16T19:16:17.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><title type='text'>Virtualization on the Mac; VMWare Fusion vs. Parallels</title><content type='html'>Let me start off by disclosing I am an architect, software developer, consultant and author so my use of virtualization may not be the typical use. Your use and results with virtualization are likely to vary. That said the way I primarily take advantage of virtualization on my Mac is segmentation. By that I mean I typically have multiple virtual machines at one time. I organize them by client, project or technology. This enables me to simplify my life. For example, one of the best things about owning a Mac laptop for a consultant is it allows me through virtualization to carry all three major operating system; OSX, Windows and Linux, all on a compact and powerful device. In addition, it enables me to create customized and easily backed up environments for each of my clients. When my assignment or contract ends, I can backup the virtual machine to a large secure hard drive and when my clients return with more work or questions, I am able to bring everything back up the way it was.&lt;br /&gt;&lt;br /&gt;I bought my first Mac, a Mac Book Pro, just over a year ago. I immediately purchased a copy of &lt;a href="http://www.parallels.com/en/products/desktop/?from=button"&gt;Parallels&lt;/a&gt; because at the time it was the only viable virtualization option available for Mac. I successfully used Parallels for about 9 months on OS X 10.4 Tiger. I endured some minor annoyances which I will discuss later but over all I was extremely pleased. Then I upgraded to OS X 1.5 Leopard by backing up my whole machine, formatting the hard drive and reinstalling the OS and all my software. After that, I started running into some stability problems which I will describe later. That made me start evaluating other options. After discovering how my friends enjoyed &lt;a href="http://www.vmware.com/products/fusion/"&gt;VMWare Fusion&lt;/a&gt;, and based on my experience with other VMWare products, I made the switch. So for the past four months, I have been creating all new VMs in VMWare and using Parallels for my existing VMs.&lt;br /&gt;&lt;br /&gt;I think both solutions are excellent and I will be the first to admit that some of my issues with Parallels could be self-inflicted. But this experience encouraged me to provide a comparison of the features and things I like and dislike about both products. I hope it helps if you are trying to evaluate virtualization solutions for the Mac.&lt;br /&gt;&lt;br /&gt;VMWare Fusion&lt;br /&gt;&lt;br /&gt;Over all, I have found VMWare Fusion to be extremely stable and simple which is why it is now my primary VM solution. However, it lacks many of the Mac integrations I enjoy in Parallels and does not have very many configuration options.&lt;br /&gt;&lt;br /&gt;+ Stable, works well on OS X 10.5 Leopard and with Spaces&lt;br /&gt;+ Larger community&lt;br /&gt;+ Many reconfigured images&lt;br /&gt;+ VMs can be shared between Windows and Mac versions of VMWare&lt;br /&gt;+ VM is stored in a single stand alone file&lt;br /&gt;- Not very may configurations, including changing a VM name - the solution for that feels very hacky&lt;br /&gt;- Poor integration with the Mac - integration between the Mac and VM is the same as having two separate machines on a network.&lt;br /&gt;- Start up performance from sleep seems slower than Parallels, but that might be because it uses an overlay until the machine is ready so it may just be perceived performance&lt;br /&gt;- Making a clone is just copying a file. When you start the new VM copy, it prompts you as to whether this is a move or a clone which feels very reactive not proactive.&lt;br /&gt;- Virtual library window stays up in the background after the VM is started&lt;br /&gt;- Sound doesn’t work even after following forum and tech tips&lt;br /&gt;&lt;br /&gt;Parallels Desktop for Mac&lt;br /&gt;&lt;br /&gt;Over all, Parallels excels in Mac integration.&lt;br /&gt;&lt;br /&gt;+ Great Mac integration - I love the fact it shows up as a device like any disk image&lt;br /&gt;+ Parallels explorer enables you to see file contents of a VM with out starting it up which can save time when you just need a file&lt;br /&gt;- Unstable with OS X 1.5 especially when using Spaces&lt;br /&gt;- Constantly crashes my whole machine when I plug in a projector while it is running&lt;br /&gt;- Prompts me with warnings of missing devices every time the VM starts up after removing the original base VM I cloned from&lt;br /&gt;- I can not stand that the applications running in the VM are added to my dock. This needs to be changed to a configurable option&lt;br /&gt;- Some times it does not want to shut down without forcing it when certain applications are running&lt;br /&gt;- With Spaces turned on after my Mac wakes up, I get horrible screen painting issues in my VM&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-2004464956068541297?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/2004464956068541297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=2004464956068541297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2004464956068541297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2004464956068541297'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/06/virtualization-on-mac-vmware-fusion-vs.html' title='Virtualization on the Mac; VMWare Fusion vs. Parallels'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-1816120068186214805</id><published>2008-06-18T18:41:00.000-07:00</published><updated>2008-06-18T18:50:23.646-07:00</updated><title type='text'>My Biggest Fan</title><content type='html'>I recently received copies of the third book I co-authored for Apress, &lt;a href="http://www.amazon.com/dp/1430210451?tag=wwwjuddsoluti-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=1430210451&amp;amp;adid=0NS2MKH846N47NNF1FDB&amp;amp;"&gt;Beginning Groovy and Grails&lt;/a&gt;. Since then my four year old son has been carrying around copies of all my book saying things like "I love your books, the ones that you wrote" and "I love the books your pictures are on". But that did not prepare me for coming home today and finding my son had taken all the Apress books off my shelves, which are quite a fews, in an effort to find my picture on the back of them.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_5kHMhX_WWU4/SFm62gS_qTI/AAAAAAAAAAk/gQXA7q4dDK0/s1600-h/100_4203.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_5kHMhX_WWU4/SFm62gS_qTI/AAAAAAAAAAk/gQXA7q4dDK0/s320/100_4203.JPG" alt="" id="BLOGGER_PHOTO_ID_5213403489203366194" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-1816120068186214805?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/1816120068186214805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=1816120068186214805' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1816120068186214805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1816120068186214805'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/06/my-biggest-fan.html' title='My Biggest Fan'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_5kHMhX_WWU4/SFm62gS_qTI/AAAAAAAAAAk/gQXA7q4dDK0/s72-c/100_4203.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-9125328425134306174</id><published>2008-06-14T11:20:00.000-07:00</published><updated>2008-07-16T19:16:39.048-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse Productivity Tips</title><content type='html'>I gave a presentation this week at &lt;a href="http://www.cojug.org/"&gt;COJUG&lt;/a&gt; (Central Ohio Java Users Group) called        &lt;a href="http://www.cojug.org/index.php?option=com_eventlist&amp;amp;Itemid=27&amp;amp;func=details&amp;amp;did=32"&gt;10 (or so) Eclipse Productivity Tips&lt;/a&gt;. The presentation was very well attended, especially for a lunch meeting. We had over 50 people. The slides are available on the link above if you want to check them out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-9125328425134306174?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/9125328425134306174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=9125328425134306174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/9125328425134306174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/9125328425134306174'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/06/eclipse-productivity-tips.html' title='Eclipse Productivity Tips'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-7869636090038946040</id><published>2008-06-13T09:30:00.000-07:00</published><updated>2008-07-16T19:17:08.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>eApps is great for Grails hosting</title><content type='html'>&lt;p class="MsoNormal"&gt;In episode 58 of the &lt;a href="http://hansamann.podspot.de/"&gt;Grails Podcast&lt;/a&gt;, Glen and Sven spoke about a Grails hosting service that costs about a dollar a day if used in production. So, I thought I would share my experiences in hosting Grails applications. For the past year I have used &lt;a href="http://www.eapps.com/"&gt;eApps&lt;/a&gt; for my Java, PHP and Grails hosting. I have been extemely happy with them from a support, feature and price perspective. I have used many hosting services in the past including other Java hosting services and eApps is definitely the best. My &lt;a href="http://www.amazon.com/dp/1430210451?tag=wwwjuddsoluti-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=1430210451&amp;amp;adid=0NS2MKH846N47NNF1FDB&amp;amp;"&gt;Beginning Groovy and Grails&lt;/a&gt; co-authors, Joseph Nusairat and Jim Shingler also use them for hosting as well.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;eApps starts Java hosting at $20 a month for Tomcat and a offers a $30 option for JBoss or Glassfish which is less than a dollar a day. It also includes database options of MySQL, PostgreSQL or &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Derby&lt;/st1:place&gt;&lt;/st1:city&gt;. It has a load of other standard options such as email, ftp, control panel, PHP, Ruby On Rails, etc. But my favorite features are root access to my own virtual server, DNS configuration through control panel, easily hosting of multiple domains with one account (which can bring the daily cost down furture) and a Subversion or CVS repository.&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I personally use the JBoss option while Joseph and Jim are using the Tomcat option.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-7869636090038946040?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/7869636090038946040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=7869636090038946040' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7869636090038946040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7869636090038946040'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/06/eapps-is-great-for-grails-hosting.html' title='eApps is great for Grails hosting'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5970810685121385235</id><published>2008-04-30T18:30:00.000-07:00</published><updated>2008-07-16T19:17:36.665-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><title type='text'>Doughnut Token</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);font-family:Tahoma;font-size:8;"  &gt;The  development team I am currently on has the common practice of using an  integration token like many agile teams. Instead of using a stuffed animal like  some teams to communicate that you are integrating or checking in code, we use  the integration token built into the open source XP project management tool &lt;/span&gt;&lt;a href="http://www.xplanner.org/"&gt;XPlanner&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);font-family:Tahoma;font-size:8;"  &gt;. We started using this when we had an offshore component. We have  continued using an on-line token because some of the developers do their best  work in the evenings from home, and we still want to prevent each other from  clobbering check-ins.&lt;br /&gt;&lt;br /&gt;This week we experienced a new challenge. Two  team members brought donuts in on the same day. There were so many donuts  we could not finish them all in one day. So to prevent this tragedy from  happening in the future, we started a new practice based on our agile  experience. We implemented the first ever donut token. Now we should be able to  spread out our donut enjoyment. Unfortunately, there are no known open source  donut tokens available. If anybody is inclined to create one, make sure it  includes a mobile component so the token can be checked from a &lt;/span&gt;&lt;a href="http://www.krispykreme.com/"&gt;Krispy Kreme&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);font-family:Tahoma;font-size:8;"  &gt;  parking lot.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5970810685121385235?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5970810685121385235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5970810685121385235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5970810685121385235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5970810685121385235'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/04/doughnut-token.html' title='Doughnut Token'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-25623640432541238</id><published>2008-04-29T19:17:00.000-07:00</published><updated>2008-07-16T19:18:01.661-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Agile Web Development with Groovy and Grails at ITX Forum</title><content type='html'>I will be presenting "Agile Web Development with Groovy and Grails for the Java Platform" at the ITX Forum sponsored by Compuware on Tuesday May 27, 2008 from 5:30 pm to 7:30 pm at the Compuware Columbus Branch located 8351 North High Street Suite 200, Columbus Ohio 43235. This is a free event. If you are interested in attending, please RSVP to sara.christian@compuware.com by Friday May 23, 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-25623640432541238?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/25623640432541238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=25623640432541238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/25623640432541238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/25623640432541238'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/04/agile-web-development-with-groovy-and.html' title='Agile Web Development with Groovy and Grails at ITX Forum'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-7167383261472445366</id><published>2008-04-21T18:35:00.000-07:00</published><updated>2008-07-16T19:18:19.818-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Posted my Agile Development with Groovy and Grails presentation</title><content type='html'>I have given a presentation I call Agile Development with Groovy and Grails at &lt;a href="http://www.codemash.org/"&gt;CodeMash&lt;/a&gt;, the &lt;a href="http://www.columbusrb.com/"&gt;Columbus Ruby Brigade&lt;/a&gt;, and other places around Columbus, Ohio. Unfortunately most of the presentation shows the power of Groovy and Grails in demo but if you are interested you can download it at &lt;a href="http://www.juddsolutions.com/downloads/AgileDevelopmentwithGroovyandGrails.pdf"&gt;http://www.juddsolutions.com/downloads/AgileDevelopmentwithGroovyandGrails.pdf&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In addition, I offer to freely give this presentation to any companies or organizations interested in Groovy and Grails in the central Ohio area.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-7167383261472445366?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/7167383261472445366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=7167383261472445366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7167383261472445366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7167383261472445366'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/04/posted-my-agile-development-with-groovy.html' title='Posted my Agile Development with Groovy and Grails presentation'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-3026158363952715118</id><published>2008-04-21T11:01:00.000-07:00</published><updated>2008-07-16T19:18:34.794-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><title type='text'>Announcing Polyglot Programming interview with Neal Ford</title><content type='html'>Recently, I had a chance to sit down with one of my favorite people, Neal Ford Meme Wrangler for ThoughtWorks, and ask him about about the term he coined, Polyglot Programming. In the interview, Neal talks about the history of the term and its recent interest. Neal also provides great insite into the Java platform and the languages that run on it including Java, Groovy, Ruby, Scala, Python and Haskle.&lt;br /&gt;&lt;br /&gt;You can find the &lt;a href="http://www.cojug.org/index.php?option=com_content&amp;amp;task=view&amp;amp;id=50&amp;amp;Itemid="&gt;interview&lt;/a&gt; at the &lt;a href="http://www.cojug.org/"&gt;COJUG&lt;/a&gt; website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-3026158363952715118?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/3026158363952715118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=3026158363952715118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3026158363952715118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3026158363952715118'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/04/announcing-polyglot-programming.html' title='Announcing Polyglot Programming interview with Neal Ford'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5091115831800484022</id><published>2008-04-17T19:13:00.000-07:00</published><updated>2008-04-17T19:31:22.146-07:00</updated><title type='text'>Mounting HP Photosmart All-In-One printer SD cards on Mac OS X</title><content type='html'>I have an HP Photosmart 2575 All-In-One printer with flash, SD card, USB drive, etc reader.  I have been frustrated since I started trying to use my card reader on my printer with my Mac. There does not seem to be an easy way to mount one of the cards with the HP provided software like I expected there to be. The only way I could get a card to mount so I could import my pictures into iPhoto was to run HP Photosmart Studio Software and start importing the photos from it. But the problem is it started importing my pictures to my Pictures folder as well as iPhoto and I had to remember to delete the duplicate photos from the Pictures folder.&lt;br /&gt;&lt;br /&gt;Well after a year, I have solved my frustration. I figured out that HP was just using sharing to access the printer and the card became a drive on that share. Below is how I now mount my card without running the HP software.&lt;br /&gt;&lt;br /&gt;Mounting SD Cards on HP Photosmart All-In-One Printers&lt;br /&gt;&lt;br /&gt;1. Put card in appropriate slot on printer.&lt;br /&gt;2. From Finder choose Go &gt; Connect to Server.&lt;br /&gt;3. Enter &lt;span style="font-style: italic;"&gt;smb://&lt;ip&gt;&lt;/ip&gt;&lt;/span&gt; where ip address is the ip address of your printer.&lt;br /&gt;4. Press Connect.&lt;br /&gt;5. When prompted for user name and password select Guest and press Connect.&lt;br /&gt;&lt;br /&gt;At this point, your printer should be added as a share and if you are lucky iPhoto will auto start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5091115831800484022?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5091115831800484022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5091115831800484022' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5091115831800484022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5091115831800484022'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/04/mounting-hp-photosmart-all-in-one.html' title='Mounting HP Photosmart All-In-One printer SD cards on Mac OS X'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8480524910327977844</id><published>2008-04-17T19:04:00.000-07:00</published><updated>2008-04-17T19:13:02.372-07:00</updated><title type='text'>Firefox 3 beta 5 Rocks</title><content type='html'>I know I have only been playing with it for two days but I am really impressed with Firefox 3 beta 5. I especially love the auto complete feature which not only shows you recent sites that match what you have typed so far, but it also shows the favicon and the title of the page.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_5kHMhX_WWU4/SAgDhHHCSNI/AAAAAAAAAAc/fvZ0bbJ6bOM/s1600-h/firefoxautocomplete.png"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_5kHMhX_WWU4/SAgDhHHCSNI/AAAAAAAAAAc/fvZ0bbJ6bOM/s320/firefoxautocomplete.png" alt="" id="BLOGGER_PHOTO_ID_5190402437923621074" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8480524910327977844?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8480524910327977844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8480524910327977844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8480524910327977844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8480524910327977844'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/04/firefox-3-beta-5-rocks.html' title='Firefox 3 beta 5 Rocks'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_5kHMhX_WWU4/SAgDhHHCSNI/AAAAAAAAAAc/fvZ0bbJ6bOM/s72-c/firefoxautocomplete.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-4358107473921715610</id><published>2008-04-05T20:03:00.000-07:00</published><updated>2008-07-16T19:18:58.592-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Grails Integrated Framework Documentation</title><content type='html'>One of the things I really like about Grails is that it does not suffer from "Not Invented Here" syndrome. Instead or reinventing the wheel, it integrates with best of breed proven open source frameworks. It then goes on to make the integration seamless hiding much of the complexities of those frameworks. But sometimes  you need to access those frameworks more explicitly and therefor you must learn there apis, configurations and other details. So, below is a compiled list of the documentation for the frameworks Grails integrates.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; - &lt;a href="http://groovy.codehaus.org/Documentation"&gt;User Guide&lt;/a&gt; - &lt;a href="http://groovy.codehaus.org/api/"&gt;API&lt;/a&gt; &amp;amp; &lt;a href="http://groovy.codehaus.org/groovy-jdk/"&gt;GDK&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://www.springframework.org/"&gt;Spring Framework&lt;/a&gt; -  &lt;a href="http://static.springframework.org/spring/docs/2.5.x/reference/"&gt;User Guide&lt;/a&gt; - &lt;a href="http://static.springframework.org/spring/docs/2.5.x/api/"&gt;API&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt; - &lt;a href="http://www.hibernate.org/hib_docs/v3/reference/en/html/"&gt;User Guild&lt;/a&gt; - &lt;a href="http://www.hibernate.org/hib_docs/v3/api/"&gt;API&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://www.opensymphony.com/sitemesh/"&gt;SiteMesh&lt;/a&gt; - &lt;a href="http://www.opensymphony.com/sitemesh/"&gt;User Guide&lt;/a&gt; - &lt;a href="http://www.opensymphony.com/sitemesh/api/"&gt;API&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://www.mortbay.org/"&gt;Jetty&lt;/a&gt; - &lt;a href="http://docs.codehaus.org/display/JETTY/Jetty+Documentation"&gt;User Guide&lt;/a&gt; - &lt;a href="http://jetty.mortbay.org/apidocs/"&gt;API&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://hsqldb.org/"&gt;HSQLDB&lt;/a&gt; - &lt;a href="http://hsqldb.org/web/hsqlDocsFrame.html"&gt;User Guide&lt;/a&gt; - &lt;a href="http://hsqldb.org/doc/src/"&gt;API&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://www.junit.org/"&gt;JUnit&lt;/a&gt; - &lt;a href="http://junit.sourceforge.net/junit3.8.1/"&gt;User Guide&lt;/a&gt; - &lt;a href="http://junit.sourceforge.net/javadoc/"&gt;API&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://ant.apache.org/"&gt;Ant&lt;/a&gt; - &lt;a href="http://ant.apache.org/manual/"&gt;User Guide&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://script.aculo.us/"&gt;script.aculo.us&lt;/a&gt; - &lt;a href="http://wiki.script.aculo.us/scriptaculous/"&gt;User Guide&lt;/a&gt; - &lt;a href="http://wiki.script.aculo.us/scriptaculous/"&gt;API&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://prototypejs.org/"&gt;Prototype&lt;/a&gt; - &lt;a href="http://prototypejs.org/learn"&gt;User Guide&lt;/a&gt; - &lt;a href="http://prototypejs.org/api"&gt;API&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://openrico.org/"&gt;OpenRico&lt;/a&gt; - &lt;a href="http://demos.openrico.org/"&gt;Demos&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-4358107473921715610?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/4358107473921715610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=4358107473921715610' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4358107473921715610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4358107473921715610'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/04/grails-integrated-framework.html' title='Grails Integrated Framework Documentation'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-1206604397018220786</id><published>2008-04-02T04:18:00.000-07:00</published><updated>2008-04-02T04:26:04.223-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>New g-wizMOBILE CTO</title><content type='html'>I am excited to announce that in addition to my responsibilities at Judd Solutions, I have excepted the position as the &lt;a href="http://www.gwizmobile.com/"&gt;g-wizMOBILE&lt;/a&gt; CTO. &lt;a href="http://www.gwizmobile.com/"&gt;g-wizMOBILE&lt;/a&gt; is a service and product company targeting the mobile platforms of J2ME, iPhone, Android and WAP. Mobile is such an exciting and emerging market. I look forward applying my years of J2ME and enterprise Java experience to create exciting new products and help other companies trying to develop and deploy their own mobile applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-1206604397018220786?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/1206604397018220786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=1206604397018220786' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1206604397018220786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1206604397018220786'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/04/new-g-wizmobile-cto.html' title='New g-wizMOBILE CTO'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-1437422192449227178</id><published>2008-03-19T18:24:00.000-07:00</published><updated>2008-07-16T19:19:24.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Groovy Meta Libraries</title><content type='html'>The more and more I write Groovy, the more I really like its meta-programming (Meta-Object Protocol or MOP) capabilities. I find myself frequently refactoring code into meta methods of existing Java classes that would have otherwise been methods in some utility classes. I am slowly building a libraries of these I would like to reuse. Unfortunately one thing that challenges me is what is the best practices for turning them into reusable meta libraries. I would like to be able to package them in a jar and just drop them in the classpath and they would be automatically available(bootstrapped). This would make them easier to carry between projects and share with the community. There would also have to be a good way of creating good GroovyDoc like we have with the GDK. If somebody has a recommendation or idea I would love to hear it. Otherwise, I wonder if there could be a standard way to use the Java jar service provider mechanism like JDBC driver do now to  auto register.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-1437422192449227178?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/1437422192449227178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=1437422192449227178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1437422192449227178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/1437422192449227178'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/03/groovy-meta-libraries.html' title='Groovy Meta Libraries'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-143171431466398318</id><published>2008-03-13T20:37:00.000-07:00</published><updated>2008-07-16T19:19:37.712-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>I might be getting this DSL stuff</title><content type='html'>I know I am a little slow. I usually have to hear and see something three times before I start to grasp it. I know it was that way with Aspects and it has definitely been that way with DSLs. At every conference I have gone to for the last 2 years I have made sure to attend DSL talks. I have probably seen Neal Ford speak on the topic at least five times alone. By this point, I have definitely understood the concepts. Hearing Neal Ford's Starbuck's language example gave me that aha moment. But I have not been able to take it to the next step. I have not been able to put it into practice. That may be because I have been writing code so long I don't see problem with curly braces and long lists of method chaining and ugly parameters. But tonight, I think I got it. I think I saw the value in a whole new way.&lt;br /&gt;&lt;br /&gt;I took this simple example written in Groovy that only a programmer could love.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;println this.class.getResourceAsStream('readme.txt').getText()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This example only reads a file found in the classpath and then prints it to standard out. It might look pretty standard to developers but to anybody else it looks like a cryptic foreign language. This example is even in Groovy which simplifies the code a lot compared to a Java equivalent. (I actually started writing a Java equivalent for this post but it was too painful after writing the Groovy solution so I stopped.)&lt;br /&gt;&lt;br /&gt;So after looking at this example, I set out to write the same functionality in a human readable format. In all the DSL sessions I have attended, they always say start of with the end in mind and make it look like a sentence.&lt;br /&gt;&lt;br /&gt;So, I came up with "write readme.txt contents". In code it looks like the following example:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;write 'readme.txt'.contents()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Not to bad for my first DSL. I think the intent is pretty clear. Next is how I implemented it.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;String.metaClass.contents = {&lt;br /&gt;this.class.getResourceAsStream(delegate).getText()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;def write = { file -&gt;&lt;br /&gt;println file           &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;write 'readme.txt'.contents()&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can see I used a little bit of Groovy's MOP (Meta-Object Programming) to add a contents method to the String class that does the resource loading base on the delegate which is the object on which the message was passed which in this case is the 'readme.txt' String. Next I defined a write closure that does a println on the parameter passed. Note using Groovy's optional parentheses makes it flow much more like a natural sentence.&lt;br /&gt;&lt;br /&gt;Now that I have reached this milestone, I am afraid all standard code is going to repulse me. I know I am stuggling to write Java code after having used Groovy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-143171431466398318?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/143171431466398318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=143171431466398318' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/143171431466398318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/143171431466398318'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/03/i-might-be-getting-this-dsl-stuff.html' title='I might be getting this DSL stuff'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5937792823630553180</id><published>2008-03-13T18:49:00.000-07:00</published><updated>2008-07-16T19:20:07.915-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Other advantages to Apple distribution model for iPhone apps</title><content type='html'>Another great advantages of distributing applications for the iPhones is not having to write installers or complicated installation instructions. That alone should save lots of development time and support headaches. Wouldn't it be nice if all software installation could be this easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5937792823630553180?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5937792823630553180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5937792823630553180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5937792823630553180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5937792823630553180'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/03/other-advantages-to-apple-distribution.html' title='Other advantages to Apple distribution model for iPhone apps'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8399993086807847824</id><published>2008-03-12T18:19:00.000-07:00</published><updated>2008-07-16T19:20:24.213-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Apple's iPhone application deployment model is fair</title><content type='html'>In talking to some of my fellow developer friends about the recent iPhone SDK launch, they are shocked and disappointed with Apple's for distribution model but especially with Apple's 70/30 split of the sale of the applications.&lt;br /&gt;&lt;br /&gt;I happen to think this model is quite fair. Here is a list of things included with sharing 30% with Apple:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;distribution&lt;/li&gt;&lt;li&gt;credit card transactions&lt;/li&gt;&lt;li&gt;marketing&lt;/li&gt;&lt;li&gt;platform&lt;/li&gt;&lt;/ul&gt;I think this makes the program a great bargain. For example other forms of distribution like retail often have a 40-50% markup. More importantly Apple is providing the opportunity by providing and opening the platform and SDK at no additional charge.&lt;br /&gt;&lt;br /&gt;I also can't believe the Standard Developer Program is only $99. I have been developing J2ME application for several years now. Whenever you deploy you typically need to sign the J2ME app it can be $500 for a single deployment option because of certificates. If want to make your application available through several carriers you might have to have several certificates which cost additional money and add to the packaging and deployment complexity.&lt;br /&gt;&lt;br /&gt;But the final benefit is the program includes free distribution for free apps. So if you don't want to share 30% with Apple, there is a missed revenue opportunity in Apple's plan. I have not heard or seen anything relate to participating in sharing for any other monetization options.  So if you give away your application for free but sell ads, you can save it all :)&lt;br /&gt;&lt;br /&gt;Finally, if you are looking for iPhone developers please contact me, I am very excited about the platform and would love the opportunity to work on this new frontier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8399993086807847824?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8399993086807847824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8399993086807847824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8399993086807847824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8399993086807847824'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/03/apples-iphone-application-deployment.html' title='Apple&apos;s iPhone application deployment model is fair'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-9182560844706450120</id><published>2008-03-10T18:05:00.000-07:00</published><updated>2008-07-16T19:20:41.500-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Free Groovy and Grails lunch and learn</title><content type='html'>Over the last year, I have become a huge fan of Groovy and Grails. I believe the speed of development combined with the short learning curve and the power of the Java platform will make them the future of the Java platform. If you want know why I believe this, I am offering a free hour and a half lunch and learn to companies in the Central Ohio area. This is a presentation I gave at &lt;a href="http://www.codemash.org/"&gt;CodeMash&lt;/a&gt; and to several companies in the area. The presentation defines Groovy and Grails and then demonstrates their capabilities with a live coding demo including some AJAX examples. If you are interested in learning more about scheduling me to speak at your next lunch and learn, please email me at groovy@juddsolutions.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-9182560844706450120?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/9182560844706450120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=9182560844706450120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/9182560844706450120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/9182560844706450120'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/03/free-groovy-and-grails-lunch-and-learn.html' title='Free Groovy and Grails lunch and learn'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-146090368525943792</id><published>2008-03-10T17:33:00.000-07:00</published><updated>2008-07-16T19:21:09.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Groovy Ant task is for Groovy Scripts</title><content type='html'>Groovy includes an &lt;a href="http://ant.apache.org/"&gt;Ant&lt;/a&gt; task for executing either file based or embedded Groovy. I recently discovered the file option denoted by the &lt;span style="font-style: italic;"&gt;src&lt;/span&gt; attribute must be a Groovy script and not a Groovy class containing a &lt;span style="font-style: italic;"&gt;main&lt;/span&gt; method. If you have used the Java task, you might expect the Ant &lt;span style="font-style: italic;"&gt;arg&lt;/span&gt; set to be passed as a parameters to the main method since it is the common Ant convention for passing command line arguments. However, as you can see in the following snippet of code from &lt;span style="font-style: italic;"&gt;org.codehaus.groovy.ant.Groovy&lt;/span&gt;, a &lt;span style="font-style: italic;"&gt;GroovyShell&lt;/span&gt; is created and the &lt;span style="font-style: italic;"&gt;arg&lt;/span&gt;s are passed as a property to the script.&lt;br /&gt;&lt;pre&gt;final GroovyShell groovy = new GroovyShell(classLoader, new Binding(), configuration);&lt;br /&gt;try {&lt;br /&gt;final Script script = groovy.parse(txt, scriptName);&lt;br /&gt;script.setProperty("ant", new AntBuilder(this));&lt;br /&gt;// code removed for brevity&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;script.setProperty("args", cmdline.getCommandline());&lt;/span&gt;&lt;br /&gt;script.run();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; This behavior was unexpected since it does not follow the  normal Ant convention and because the documentation states the &lt;span style="font-style: italic;"&gt;src&lt;/span&gt; attribute is a File containing Groovy statements rather than stating it expects a Groovy Script.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-146090368525943792?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/146090368525943792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=146090368525943792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/146090368525943792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/146090368525943792'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/03/groovy-ant-task-is-for-groovy-scripts.html' title='Groovy Ant task is for Groovy Scripts'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-7807468022520814331</id><published>2008-03-04T04:20:00.000-08:00</published><updated>2008-07-16T19:21:26.482-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>Excellent cell phone browsing experience with Opera Mini</title><content type='html'>I have a  &lt;a href="http://www.motorola.com/motoinfo/product/details.jsp?globalObjectId=69"&gt;MOTORAZR V3&lt;/a&gt; from Sprint. I have been some what satisfied with my browsing experience and the embedded Obigo browser for websites designed for mobile content. However websites not designed for mobile content look awful. So when I hard the &lt;a href="http://www.javaposse.com/"&gt;Java Posse&lt;/a&gt; talk about a J2ME based browser I had to give it a try. The browser is the free &lt;a href="http://www.operamini.com/"&gt;Opera Mini browser&lt;/a&gt;. It was easy to install, just use your embedded mobile browser and click on a link and it installs. Sites  designed for mobile content look incredible while sites not designed for mobile also look good. For regular content, it renders a scaled down version and gives you the ability to zoom in and move about the page. The other great thing is unlike embedded browsers, it is easily upgrade able. If you are not pleased with your current mobile browsing experience you should give Opera Mini a try. It is not as nice as the iPhone browsing experience but if you have a standard phone for making phone calls this might make you look at your phone differently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-7807468022520814331?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/7807468022520814331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=7807468022520814331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7807468022520814331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7807468022520814331'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/03/excellent-cell-phone-browsing.html' title='Excellent cell phone browsing experience with Opera Mini'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-3371957604023221738</id><published>2008-02-26T19:53:00.000-08:00</published><updated>2008-07-16T19:21:55.852-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><title type='text'>Announcing FallME 0.6.0</title><content type='html'>FallME 0.6.0 is now available. In addition to a forms initialization enhancement, there is now a example application. We hope to have a better example and tutorial soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-3371957604023221738?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/3371957604023221738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=3371957604023221738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3371957604023221738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3371957604023221738'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/02/announcing-fallme-060.html' title='Announcing FallME 0.6.0'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-4801105406711355267</id><published>2008-02-17T00:55:00.001-08:00</published><updated>2008-02-17T01:03:30.312-08:00</updated><title type='text'>Will Grails Hurt the Spring and Hibernate Brands?</title><content type='html'>&lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; and &lt;a href="http://grails.codehaus.org/"&gt;Grails&lt;/a&gt; are really starting to get some well deserved attention especially after the release of Grails 1.0. Grails has a chance of being a game changing technology. For example one of the things Grails does is make Spring and Hibernate web development really easy and for the most part makes those frameworks transparent. As evidence of the transparency, you can read Graeme Rocher, Grails project lead, &lt;a href="http://graemerocher.blogspot.com/2007/12/grails-at-spring-experience.html"&gt;blog entry&lt;/a&gt; about his experience at the Spring Experience conference. Graeme discovered that most people did not realize Grails had anything to do with Spring.&lt;br /&gt;&lt;br /&gt;Could Grails cause Spring and Hibernate to become the BASF of the Java community and adopt the tag line of "We don't make a lot of the products you develop with.  We make a lot of the products you develop with better". It is hard to tell at this point. But it is probably a good idea for the companies offering Spring and/or Hibernate services to take a hard look at Grails and consider providing Grails services as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-4801105406711355267?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/4801105406711355267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=4801105406711355267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4801105406711355267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4801105406711355267'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/02/will-grails-hurt-spring-and-hibernate_17.html' title='Will Grails Hurt the Spring and Hibernate Brands?'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5436078969110028766</id><published>2008-02-12T18:43:00.000-08:00</published><updated>2008-02-13T03:01:26.771-08:00</updated><title type='text'>Amazon Web Services at COJUG</title><content type='html'>Mike Culver of Amazon spoke about &lt;a href="http://www.amazon.com/gp/browse.html?node=3435361"&gt;Amazon's Web Service&lt;/a&gt; offerings today at &lt;a href="http://www.cojug.org/"&gt;COJUG&lt;/a&gt;. His presentations were a little different between the lunch and evening meetings but between both of them, he covered the following:&lt;br /&gt;&lt;br /&gt;&lt;span class="small"&gt;&lt;span style="color: rgb(0, 102, 153);font-size:100%;" &gt;&lt;strong&gt;Amazon Elastic Compute Cloud (Amazon EC2)&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="small"&gt;&lt;span style="color: rgb(0, 102, 153);font-size:100%;" &gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="small"&gt;&lt;span style="color: rgb(0, 102, 153);font-size:100%;" &gt;&lt;strong&gt;Amazon Flexible Payments Service (Amazon FPS)&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="small"&gt;&lt;span style="color: rgb(0, 102, 153);font-size:100%;" &gt;&lt;strong&gt;Amazon SimpleDB&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="small"&gt;&lt;span style="color: rgb(0, 102, 153);font-size:100%;" &gt;&lt;strong&gt;Amazon Simple Storage Service (Amazon S3)&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="small"&gt;&lt;span style="color: rgb(0, 102, 153);font-size:100%;" &gt;&lt;strong&gt;Amazon Simple Queue Service (Amazon SQS)&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;Mike made a great business case for each of these services and how then can really benefit different types of scaling concerns at an unbelievable price. He also stressed their incredibly high level of security and redundancy. He told us the government uses them for storage because of their high level of physical and data security as well as how auditors aggressively test disaster recovery.&lt;br /&gt;&lt;br /&gt;I am very impressed with what I heard and saw. I have not seen any other infrastructure in my travels that can compare. Amazingly enough, I heard two other podcasts today that talked about these services unrelated to any Amazon propaganda. I hope I get to work with some of these technologies in the near future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5436078969110028766?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5436078969110028766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5436078969110028766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5436078969110028766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5436078969110028766'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/02/amazon-web-services-at-cojug.html' title='Amazon Web Services at COJUG'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5761324232707479244</id><published>2008-02-04T18:25:00.000-08:00</published><updated>2008-02-04T19:36:58.680-08:00</updated><title type='text'>Grails Encourages Best Practices</title><content type='html'>You know how every Apple Mac user says there is something special about the Mac? They can't usually put their finger on it but they say something like "it just does what I expect it" or "it does what is right". Well that's the way I feel about Grails. Recently I wrote my first real tag in Grails and I was just amazed at how it felt and how it does the right thing by encouraging best practices. For starters, writing tag libraries is incredibly easy (Read the &lt;a href="http://piragua.com/2007/09/12/create-a-simple-tag-library-in-grails/"&gt;Piragua Blog&lt;/a&gt; for details on how to write a Grails tag.). So why is this a best practice? Well I have seen a lot of scriptlets written in JSPs that should have been reusable JSP tags. But because it was to difficult or time consuming for a developer to actually spend the time to create a JSP tag or even more difficult yet a JSF component it simply was not done. But with Grails tags it is so simple there is no excuse.&lt;br /&gt;&lt;br /&gt;Another example is tag and controller integration tests automatically inject mock request, response and session objects. I have seen many projects with no unit tests for the web components or unit tests that require deploying the application because they do not use mock objects. By automatically including mock objects developers no more have to download and add jars for mock web frameworks or even create instances of the mock objects. This should save time and help improve unit tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5761324232707479244?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5761324232707479244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5761324232707479244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5761324232707479244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5761324232707479244'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/02/grails-encourages-best-practices.html' title='Grails Encourages Best Practices'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-6996285567583868162</id><published>2008-01-30T20:57:00.000-08:00</published><updated>2008-01-30T21:08:38.084-08:00</updated><title type='text'>Announcing FallME</title><content type='html'>I am proud to announce a new open source project for the Java mobile and embedded community. Jim Shingler and myself have released the first version of FallME version 0.5. FallME is a Java ME framework based on the popular &lt;a href="http://www.springframework.org/"&gt;Spring Framework&lt;/a&gt; but designed for mobile devices including those running MIDP. This framework provides an IoC container as well as a RecordStoreTemplate. You can download it and find more details at &lt;a href="https://fallme.dev.java.net/"&gt;https://fallme.dev.java.net/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-6996285567583868162?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/6996285567583868162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=6996285567583868162' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6996285567583868162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6996285567583868162'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/01/announcing-fallme.html' title='Announcing FallME'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-9085917922382323562</id><published>2008-01-24T22:05:00.000-08:00</published><updated>2008-01-24T22:17:08.268-08:00</updated><title type='text'>Touch is a PDA not an iPod</title><content type='html'>I don't understand why Apple will not just admit it. They have admitted the iPhone is a smart phone. With the recent enhancements and the soon to be released SDK, the iPod Touch is a PDA not an iPod. Assuming somebody comes out with an application that enables me to do a timesheet (preferably something like the Palm based ThinkDB which was a nice relational database with form designer) that I can sync with my Mac, I will be able to retire my old Sony CLIE for an iPod Touch and be able to justify the cost. See, I prefer to think of the device as a PDA I can play music on rather than an iPod with a browser. Best yet is it has to sync with my Mac better than my CLIE. The other two things I would love to see added since it is a PDA is extended memory and bluetooth. I would love bluetooth, so I could use a bluetooth keyboard to enter data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-9085917922382323562?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/9085917922382323562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=9085917922382323562' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/9085917922382323562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/9085917922382323562'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/01/touch-is-pda-not-ipod.html' title='Touch is a PDA not an iPod'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-2564397250378644843</id><published>2008-01-10T10:48:00.000-08:00</published><updated>2008-01-10T11:02:30.075-08:00</updated><title type='text'>Open source of the week - PDFCreator</title><content type='html'>Do you ever have documents you want to convert to PDF? Maybe you want to prevent modifications by others or you want to make sure everybody can read it since PDF is a widely used format and the &lt;a href="http://www.adobe.com/products/acrobat/readstep2.html"&gt;Adobe PDF reader&lt;/a&gt; is free. You could buy one of the &lt;a href="http://www.adobe.com/products/acrobat/"&gt;Adobe products&lt;/a&gt; for creating PDFs. They cost between $299-$499. But if you don't want to spend that much or you are on you mother's machine over the holidays, there is a great free open source tool called PDFCreator. Just download it from &lt;a href="http://sourceforge.net/projects/pdfcreator/"&gt;http://sourceforge.net/projects/pdfcreator/&lt;/a&gt; and run the installer. You will now have a new printer named PDFCreator and you can simply create a PDF by printing any document to this printer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-2564397250378644843?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/2564397250378644843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=2564397250378644843' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2564397250378644843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2564397250378644843'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/01/open-source-of-week-pdfcreator.html' title='Open source of the week - PDFCreator'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-5232050494362940291</id><published>2008-01-08T19:11:00.000-08:00</published><updated>2008-01-08T19:16:19.577-08:00</updated><title type='text'>Rod Johnson is coming to COJUG</title><content type='html'>I am excited to announce, Rod Johnson, "Father of Spring" is going to be speaking at a special &lt;a href="http://www.cojug.org"&gt;Central Ohio Java Users Group (COJUG)&lt;/a&gt; event January 24th. Chech out the &lt;a href="http://www.cojug.org"&gt;COJUG website&lt;/a&gt; for more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-5232050494362940291?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/5232050494362940291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=5232050494362940291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5232050494362940291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/5232050494362940291'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2008/01/rod-johnson-is-coming-to-cojug.html' title='Rod Johnson is coming to COJUG'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-7830627234367665524</id><published>2007-12-19T19:15:00.000-08:00</published><updated>2007-12-19T19:25:54.696-08:00</updated><title type='text'>XO Activities</title><content type='html'>Ok, I found some more software or in XO lingo activities. A catalog of the installed and available activities are at http://wiki.laptop.org/go/Activities. The nice thing is they are very easy to install by clicking on a link to an xo file. In the background the activity will be downloaded. When complete just click on the Ok button to complete the install.&lt;br /&gt;&lt;br /&gt;Many of the activities are still under development and I had some bizarre behavior with some of them but I do see lot of promise. I am definitely looking forward to playing SimCity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-7830627234367665524?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/7830627234367665524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=7830627234367665524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7830627234367665524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7830627234367665524'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/12/xo-activities.html' title='XO Activities'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8318978794418904356</id><published>2007-12-18T17:03:00.000-08:00</published><updated>2007-12-18T17:54:28.420-08:00</updated><title type='text'>My XO Laptop</title><content type='html'>I just received my XO laptop (one laptop per child).  These are my first impressions. I am even writing it on my new laptop, In case you are not aware, this is the $100 laptop intended for children in countries that could not afford typical computers. In order to reduce the price, the  OLPC foundation made the laptops available to American citizens. I bought because I thought it sounded like an interesting device and provided easy programming access. So I thought it might make I a great leaning tool for my young son. I was right. It is a great piece of hardware. I also think it will be a great learning tool since it is Linux (it even provides terminal access) and it has educational software.&lt;br /&gt;&lt;br /&gt;While I love the hardware, I am a little disappointed that the keyboard is almost unusable for an adult male.  I am also a little disappointed in the  software too. But no worries there. That can always be updated. I think one of the most likely means of disseminating applications might actually be Adobe Flash applications since it does come with a branded Firefox browser and WiFi access. This will enable rich educational applications to improve the otherwise boring desktop and gray theme of the XO laptop. In addition the plethora that all ready exist on kid sites like Sesame Street will be available. Unfortunately thought, the preinstalled open source Flash plug-in has some problems. For example, I could not hear sound and when the Flash application I was using tried to load another Flash application, I just got a gray box. The good news is I think there is a way to install the Adobe version and hopefully it fixes the problems.&lt;br /&gt;&lt;br /&gt;Over all I am really impressed and look forward to spending lots of time playing with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8318978794418904356?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8318978794418904356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8318978794418904356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8318978794418904356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8318978794418904356'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/12/my-xo-laptop.html' title='My XO Laptop'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8534075924451736190</id><published>2007-12-09T18:09:00.000-08:00</published><updated>2007-12-11T05:57:21.496-08:00</updated><title type='text'>Are "Driveway Moments" dying</title><content type='html'>&lt;a href="http://www.npr.org/"&gt;NPR&lt;/a&gt; (National Public Radio) has a catchy phrase, &lt;a href="http://www.npr.org/templates/story/story.php?storyId=700000&amp;amp;ps=sa"&gt;Driveway Moments&lt;/a&gt;,  for times when you  arrive at a destination and the story you are listening to is so compelling you have to stay in the driveway/car until the conclusion of the story. I know, this has happened to me many times. But I realized this week, that is changing. This week when I arrived at the gym, I caught myself sitting in the parking lot listening to the end of an NPR story when I realized I could just pause it and pickup with the story after my workout. That is because I now get my fix of NPR and tech news via my iPod as I think many people are doing more and more. The iPod/TiVo generation desires much more content on demand. Content they can listen to when they desire it not when a program manager decides it will get the most listeners or sponsors. I think for the next generation this is even more true. My young son prefers watching videos from DVDs or on the web. He may grow up knowing nothing but content on demand and expecting to watch what he wants when he wants it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8534075924451736190?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8534075924451736190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8534075924451736190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8534075924451736190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8534075924451736190'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/12/are-driveway-moments-dying.html' title='Are &quot;Driveway Moments&quot; dying'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-6124269561564671302</id><published>2007-11-25T10:45:00.000-08:00</published><updated>2007-11-25T10:57:29.551-08:00</updated><title type='text'>Comparative Study of Commercial Eclipse-based IDEs feedback</title><content type='html'>I just finished reading the whitepaper, &lt;span class="resdetaildocumentTitle"&gt;&lt;a href="http://www.bitpipe.com/data/goToViewer.do?resId=1193674943_215&amp;amp;psrc=DET&amp;amp;viewerEntrySrc=DET_TITLE" onclick="addToBriefcase('1193674943_215','DET');"&gt;Improving Java Development: A Comparative Study of Commercial Eclipse-based IDEs&lt;/a&gt;&lt;/span&gt;. It is an interesting read and compares base Eclipse against Code Gear JBuilder, IBM's Rational Application Developer and Genuitec's MyEclipse. The overall results were very favorable to JBuilder which does not surprise me because I was a big fan, user and certified trainer of JBuilder until Eclipse was open sourced. So, I am sure the new JBuilder product built on Eclipse is great too. Unfortunately, I have just not had the time to check it out.&lt;br /&gt;&lt;br /&gt;I am a little surprised/disappointed in the white paper though. What it fails to do is make a fair comparison with Eclipse and the commercial tools. It compares base Eclipse with the commercial tools rather than a bundled version such as Europa JEE or Callisto. So, if you are doing Java EE or J2EE development and are still using the base Eclipse, upgrade to Europa JEE. It will provide more of the tools you need for doing enterprise Java development. Even if you are not doing enterprise development, the Web Tools Platform included with Europa JEE includes helpful tools like XML tools that make even standard Java development easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-6124269561564671302?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/6124269561564671302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=6124269561564671302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6124269561564671302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/6124269561564671302'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/11/comparative-study-of-commercial-eclipse.html' title='Comparative Study of Commercial Eclipse-based IDEs feedback'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-2628358540649915573</id><published>2007-11-14T18:24:00.000-08:00</published><updated>2007-11-14T18:34:39.728-08:00</updated><title type='text'>Eclipse World 2007 Slides</title><content type='html'>I just returned from &lt;a href="http://www.eclipseworld.net/"&gt;Eclipse World 2007&lt;/a&gt;. It was a great conference again this year and it was nice to see so many familiar faces from previous Eclipse World and EclipseCon conferences. Lots of interesting sessions about Eclipse and the Eclipse Ecosystem. I especially enjoyed David "I" Intersimone and Robert Martin's keynotes. Unfortunately &lt;b style="font-weight: bold;"&gt; &lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;I did not get to attend as many sessions as I would like since I presented a tutorial and 4 regular sessions all covering different aspects of the Web Tools Platform and Data Tools Platform such as EJB 3.0, JSF, Web Services and Facets. You can find my slides and sample code at http://www.juddsolutions.com/ew2007/.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-2628358540649915573?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/2628358540649915573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=2628358540649915573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2628358540649915573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2628358540649915573'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/11/eclipse-world-2007-slides.html' title='Eclipse World 2007 Slides'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-4859935037689633528</id><published>2007-11-14T18:21:00.000-08:00</published><updated>2007-11-14T18:24:28.245-08:00</updated><title type='text'>Enterprise Java Development on a Budget Free eBook</title><content type='html'>Apress is now  offering the first book I co-authored with Brian Sam-Bodden, Enterprise Java Development on a Budget, as a free eBook. You can download it from &lt;a href="http://www.apress.com/resource/freeebook/9781590591253"&gt;http://www.apress.com/resource/freeebook/9781590591253&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-4859935037689633528?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/4859935037689633528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=4859935037689633528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4859935037689633528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/4859935037689633528'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/11/enterprise-java-development-on-budget.html' title='Enterprise Java Development on a Budget Free eBook'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-3967750537529189438</id><published>2007-10-16T18:46:00.000-07:00</published><updated>2007-10-16T18:52:07.281-07:00</updated><title type='text'>Never Eat Alone's Conference Commando</title><content type='html'>If you have not read "Never Eat Alone" by Keith Ferrazzi, it is a must read for any business person. It is definitely not your ordinary networking book. It is very entertaining and practical. It also produces real results. My favorite chapter was Conference Commando. It has really changed the way I think about conferences or any gathering of like minded people for that matter. I now take advantages of any gathering of technology folks I can. So, I was excited that I noticed that Keith is offering a free download of his 15 Conference Commando tips at http://keithferrazzi.com/.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-3967750537529189438?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/3967750537529189438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=3967750537529189438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3967750537529189438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3967750537529189438'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/10/never-eat-alones-conference-commando.html' title='Never Eat Alone&apos;s Conference Commando'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-3872451317925267131</id><published>2007-08-26T08:30:00.000-07:00</published><updated>2007-08-26T08:36:53.068-07:00</updated><title type='text'>Central Ohio Java User Group (COJUG) Podcasts</title><content type='html'>Listening to podcasts are a great way to pass the time or keep up to date especially with technology. That's why I started the &lt;a href="http://www.cojug.org/index.php?option=com_content&amp;task=view&amp;amp;id=26&amp;Itemid=39"&gt;COJUG Podcast&lt;/a&gt;. For years people have been asking me to record the monthly COJUG meetings as video or audio. Unfortunately with the challenges of equipment, costs, production time and other logistics it just is not feasible. So, instead, I have decided to interview the monthly speaker after the meeting so those who can not attend can still have an opportunity to hear some thoughts from the speaker on the topic. You can check out &lt;a href="http://www.cojug.org/index.php?option=com_content&amp;amp;task=view&amp;id=26&amp;amp;Itemid=39"&gt;COJUG Podcast&lt;/a&gt; for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-3872451317925267131?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/3872451317925267131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=3872451317925267131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3872451317925267131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3872451317925267131'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/08/central-ohio-java-user-group-cojug.html' title='Central Ohio Java User Group (COJUG) Podcasts'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-2850049507807650043</id><published>2007-08-26T08:25:00.000-07:00</published><updated>2007-08-26T08:29:13.243-07:00</updated><title type='text'>The M&amp;M car in an upcoming Disney Cars movie?</title><content type='html'>Curious what the M&amp;M car might look like in an upcoming Disney Cars sequel? I think he would make a nice addition to the already popular cast.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_5kHMhX_WWU4/RtGb6rKxsnI/AAAAAAAAAAM/pGB4QUh9_Jk/s1600-h/mnm+blake+small.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_5kHMhX_WWU4/RtGb6rKxsnI/AAAAAAAAAAM/pGB4QUh9_Jk/s320/mnm+blake+small.jpg" alt="" id="BLOGGER_PHOTO_ID_5103031285110125170" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-2850049507807650043?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/2850049507807650043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=2850049507807650043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2850049507807650043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/2850049507807650043'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/08/m-car-in-upcoming-disney-cars-movie.html' title='The M&amp;M car in an upcoming Disney Cars movie?'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_5kHMhX_WWU4/RtGb6rKxsnI/AAAAAAAAAAM/pGB4QUh9_Jk/s72-c/mnm+blake+small.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-8263350710167119587</id><published>2007-07-03T20:26:00.000-07:00</published><updated>2007-07-03T20:40:35.829-07:00</updated><title type='text'>"It Is You" song is a hit</title><content type='html'>BJ Allmon, a good friend, gifted musician and song writer, recently released a great Christian track entitled "It Is You". I have listened to the song nonstop since I got it. If you want to hear this great worship song, you can go to http://www.vineyardmusicusa.com/usa/ and hear a sample of "It Is You" found on the Fascinated Club Vineyard #61. The rest of the CD is good to. I especially like "Not Of Our Hands" too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-8263350710167119587?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/8263350710167119587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=8263350710167119587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8263350710167119587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/8263350710167119587'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/07/it-is-you-song-is-hit.html' title='&quot;It Is You&quot; song is a hit'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-7379496199246450224</id><published>2007-05-19T18:13:00.000-07:00</published><updated>2007-05-20T18:31:32.973-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Writing'/><title type='text'>Does it make sense to write a technical book?</title><content type='html'>&lt;p class="MsoNormal"&gt;I have been blessed to have co-author and published two technical books, &lt;a href="http://www.amazon.com/gp/product/1590591259/"&gt;Enterprise Java Development on a Budget&lt;/a&gt; and &lt;a href="http://www.amazon.com/gp/product/1590594932/"&gt;Pro Eclipse JST&lt;/a&gt; as well as author a children’s book, &lt;a href="http://www.bearablemoments.com/"&gt;Bearable Moments&lt;/a&gt;. So, I am often asked by others interested in writing a technical book if it is a good idea to pursue. The answer is it depends on what your goals are. If your goal is to make a lot of money, it is not likely you will unless your book is a runaway bestseller and with all the competition in the market it is tough. In addition, compare to writing articles or tutorials for some web magazines the hourly rate break down just does not make writing a book worth it. The other advantages of writing web magazine articles are they take less time to write so you are not stuck with a single topic for 6 months to a year while technology keeps progressing and you feel like you fall behind, your work is searchable via Google and web magazines typically do not charge readers so it is likely to be read by more people.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;However, if your goal is a personal challenge or instant credibility than maybe the grueling late nights could be worth it. Authoring a book can open many new doors and provide access to new clients and interesting people.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Ultimately, I am glad I have had the experience and I really enjoyed working with Apress, my publisher. I wish you good luck if you are planning on writing a computer book.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-7379496199246450224?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/7379496199246450224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=7379496199246450224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7379496199246450224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/7379496199246450224'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/05/does-it-make-sense-to-write-technical.html' title='Does it make sense to write a technical book?'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-592769997279604309.post-3798545898603379862</id><published>2007-04-29T11:46:00.000-07:00</published><updated>2007-04-29T11:58:01.094-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><title type='text'>Poor Bluetooth support in J2ME Wireless Toolkit</title><content type='html'>I am current developing a couple of J2ME applications that use Bluetooth. My disappointment in the current support for what the wireless toolkit refers to as simulated Bluetooth is that it only works between two J2ME application running in the toolkit (ktoolbar). It is critical for Sun and/or the community to add support for connecting to external Bluetooth devices or at least other Java SE applications to make testing easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/592769997279604309-3798545898603379862?l=juddsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://juddsolutions.blogspot.com/feeds/3798545898603379862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=592769997279604309&amp;postID=3798545898603379862' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3798545898603379862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/592769997279604309/posts/default/3798545898603379862'/><link rel='alternate' type='text/html' href='http://juddsolutions.blogspot.com/2007/04/poor-bluetooth-support-in-j2me-wireless.html' title='Poor Bluetooth support in J2ME Wireless Toolkit'/><author><name>Christopher M Judd</name><uri>http://www.blogger.com/profile/01944788969587609655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_5kHMhX_WWU4/TRAIzzP4xdI/AAAAAAAAAEQ/03uo5B7cR3o/S220/chrisjudd_thumb.jpg'/></author><thr:total>1</thr:total></entry></feed>
