<?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-2763294587753727890</id><updated>2012-01-27T21:47:16.243-05:00</updated><category term='iPhone'/><category term='tools'/><category term='scrum'/><category term='agile'/><category term='code comments'/><category term='books'/><category term='spring'/><category term='apple'/><category term='languages'/><category term='programming'/><category term='code style'/><category term='growth'/><category term='code generation tools'/><category term='work'/><category term='oracle'/><category term='humor'/><title type='text'>S.D. Tools</title><subtitle type='html'>Randomized blog around Software Development and it's place in my life.
&lt;br&gt;&lt;br&gt;
&lt;i&gt;If we have learned anything over the last couple of decades it is that programming is a craft more than it is a science. To write clean code, you must first write dirty code and then clean it.
&lt;br&gt;-- Uncle Bob Martin (Clean Code)
&lt;/i&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-5774196736095190903</id><published>2011-11-15T22:41:00.000-05:00</published><updated>2011-11-15T22:41:56.053-05:00</updated><title type='text'>Setting Up GHUnit in XCode 4</title><content type='html'>If you're looking for a hand held step by step walk through in getting GHUnit set up and configured in XCode 4, then you really need to watch &lt;a href="http://youtu.be/zk2PXso_WHQ"&gt;this video&lt;/a&gt; put up by &lt;a href="http://blog.xebia.com/author/rvanloghem/"&gt;Robert van Loghem&lt;/a&gt; from &lt;a href="http://www.xebia.com/"&gt;Xebia&lt;/a&gt;. It does an excellent job at conveying exactly what you need to do, and where you need to go to grab additional external resources to get things up and running. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you pop open GHUnitIOSTestMain.m, you'll notice a commented out section right at the top of the main method that lists some environment variables that can be useful and helpful in debugging. One that isn't listed though is GHUNIT_AUTORUN. Setting this to a value of YES will cause your tests to run automatically whenever you run them in the simulator, or if you choose, on your device. In XCode 4 you can set environment variables for a target by going to Product --&amp;gt; Edit Scheme... Selecting that should open up a view like the following, which is where you can add this setting. Make sure you're setting it for the application that has your tests in it.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/--SoTggSVi2I/TecA9_--LQI/AAAAAAAAAA0/J7fvMsYzO34/s1600/ghunit_autorun.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" src="http://2.bp.blogspot.com/--SoTggSVi2I/TecA9_--LQI/AAAAAAAAAA0/J7fvMsYzO34/s320/ghunit_autorun.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It saves the step of hitting the "run" button in the UI, which is nice.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XI2aIZDnhDs/TecAN0tKiwI/AAAAAAAAAAw/9ppTa-Ugf04/s1600/ghunit_runbutton.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-XI2aIZDnhDs/TecAN0tKiwI/AAAAAAAAAAw/9ppTa-Ugf04/s1600/ghunit_runbutton.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I found that useful little bit on &lt;a href="http://www.vimeo.com/album/1472322"&gt;Brett Schuchert's video series&lt;/a&gt; about doing TDD in iOS (specifically the one titled "Integer RPN Calculator: Setting Up The Environment"). I recommend giving the series a watch as he has some good information in it, and you get to see how he works. The series is based in XCode 3 so what you see won't exactly match up with what you see in XCode 4, but the more familiar you become with the environment the more adept you'll be a tracking things down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-5774196736095190903?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/5774196736095190903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2011/11/setting-up-ghunit-in-xcode-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/5774196736095190903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/5774196736095190903'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2011/11/setting-up-ghunit-in-xcode-4.html' title='Setting Up GHUnit in XCode 4'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/--SoTggSVi2I/TecA9_--LQI/AAAAAAAAAA0/J7fvMsYzO34/s72-c/ghunit_autorun.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-4305020256045146897</id><published>2011-04-25T13:57:00.000-04:00</published><updated>2011-04-25T13:57:11.294-04:00</updated><title type='text'>Get Drunk</title><content type='html'>Thank you &lt;a href="http://laribee.com/"&gt;Dave&lt;/a&gt; for passing this one along.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://24.media.tumblr.com/tumblr_lk185pfTwp1qz7lxdo1_500.jpg"&gt;&lt;img src="http://24.media.tumblr.com/tumblr_lk185pfTwp1qz7lxdo1_500.jpg" height="404px" width="390px"/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-4305020256045146897?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/4305020256045146897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2011/04/get-drunk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/4305020256045146897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/4305020256045146897'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2011/04/get-drunk.html' title='Get Drunk'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-710606833436765725</id><published>2011-01-19T13:02:00.013-05:00</published><updated>2011-01-19T23:46:02.108-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='growth'/><title type='text'>Concentration</title><content type='html'>Most of the work we do (in software) requires uninterrupted concentration. Here are some thoughts on why being in the office is often more distracting than not from Jason Fried. I think he makes some interesting observations... have a watch. While your at it, take a trip over to &lt;a href="http://boycottameetingday.com/"&gt;Boycott A Meeting Day&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object width="406" height="286"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt; &lt;param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/JasonFried_2010X-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JasonFried-2010X.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=1014&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=jason_fried_why_work_doesn_t_happen_at_work;year=2010;theme=a_taste_of_tedx;theme=new_on_ted_com;theme=not_business_as_usual;event=TEDxMidwest;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="406" height="286" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talks/dynamic/JasonFried_2010X-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JasonFried-2010X.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=1014&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=jason_fried_why_work_doesn_t_happen_at_work;year=2010;theme=a_taste_of_tedx;theme=new_on_ted_com;theme=not_business_as_usual;event=TEDxMidwest;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;One of the things Jason points out that may help is using more passive means of communication such as email and IM to help to alleviate the constant interruption that can happen in our daily work life. I tend to agree with him with the exception of this observation... and that is this doesn't work if you are in an organization whose culture believes that email and IM trumps whatever else you are doing. But it definitely depends on the culture of your organization. In an organization that has a culture where IM and email trumps all else, you're going to have a hard time getting &lt;strong&gt;anything&lt;/strong&gt; done in my opinion let alone blocking out time to concentrate on a problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-710606833436765725?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/710606833436765725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2011/01/concentration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/710606833436765725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/710606833436765725'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2011/01/concentration.html' title='Concentration'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-3863615219669593676</id><published>2010-12-08T12:44:00.004-05:00</published><updated>2010-12-08T12:58:27.734-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='growth'/><category scheme='http://www.blogger.com/atom/ns#' term='languages'/><title type='text'>Evolution</title><content type='html'>Haven't really posted anything here in quite a while. Life has a way of sweeping by me, and that's how I've felt for a bit here. For whatever reason, just haven't had the time or energy to post... but we're trying to change that. I keep hoping for the 34 hour day to happen. I'll stop holding my breath, and start to use my lunch hour for more than eating lunch.&lt;br /&gt;&lt;br /&gt;This has by large been sparked by my team at work choosing to read through &lt;a href="http://pragprog.com/titles/btlang/seven-languages-in-seven-weeks"&gt;Seven Languages in Seven Weeks by Bruce A. Tate&lt;/a&gt;. I feel extremely fortunate to work with a super smart group a guys that are eager to learn and extend themselves by reading a book like this. In short... to evolve. Evolving is something that's been occurring in several of life's corners for me this year... something that can feel like a hammer on one day and like an intoxicating Long Island Iced Tea on others. Point being, to continue to evolve. And that is what I hope and am sure that reading Tate's book will do for me.&lt;br /&gt;&lt;br /&gt;As such, I hope to convey some of my thoughts and insights on the languages we go through. No doubt, it will be fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-3863615219669593676?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/3863615219669593676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2010/12/evolution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/3863615219669593676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/3863615219669593676'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2010/12/evolution.html' title='Evolution'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-7761325393978111342</id><published>2010-03-09T15:04:00.003-05:00</published><updated>2010-03-09T15:11:51.016-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code generation tools'/><title type='text'>Frustrating II</title><content type='html'>Here is a re-post of something I'd had up before, slightly annotated to include more information.&lt;br /&gt;&lt;br /&gt;I've had the unfortunate experience of dealing with code generation tools on several different projects, and my abhorrence of them continues to grow.&lt;br /&gt;&lt;br /&gt;The problems with code generation tools for a Software Developer - iReport and Websphere Portlet Factory.&lt;br /&gt;&lt;br /&gt;1. You click things, you don't write code. I went into software development because I enjoy writing code, not because I find enjoyment in clicking buttons. My heart has been broken every time I've had to deal with one of these tools.&lt;br /&gt;&lt;br /&gt;2. Provide you no visibility into the code. You're entirely blind from a code perspective, and have no real way to distinguish if things are not connected up correctly.&lt;br /&gt;&lt;br /&gt;3. Provide no debugging or step through ability during runtime.&lt;br /&gt;&lt;br /&gt;4. Rare, in my experience, to find one that provides code completion. And if it has, it's been spotty when it did work.&lt;br /&gt;&lt;br /&gt;5. There is absolutely no way to test them in any meaningful way via any kind of unit test.&lt;br /&gt;&lt;br /&gt;6. If you have to use one, read the book. You have no knowledge of how it's supposed to work without a reference.&lt;br /&gt;&lt;br /&gt;7. There is often very little, if any, contextual help within the tool for tasks that you're trying to accomplish. This lends itself to googleing for your answer, and good luck to find someone that's posted anything of value for the scenario you are faced with. Chances are, you won't find it.&lt;br /&gt;&lt;br /&gt;8. Oftentimes, the ability to control the same properties of objects or control items are found in different places. Or, labels to set properties across different controls or objects are named the same and appear to control the same thing but in actuality they do not. This makes it very confusing trying to figure out what exactly you are doing.&lt;br /&gt;&lt;br /&gt;9. When making a change, a simple textual change, to a control or element... that change doesn't always get applied. And there is no rhyme or reason as to why. Sometimes simply closing the thing you are trying to change and re-oppening that same item will allow your change to take. Sometimes changing the same field but in a different spot (as noted in item #7 above) will work. Sometimes not. It's often hit or miss.&lt;br /&gt;&lt;br /&gt;10. Refactoring items is typically a manual process that is error prone and fraught with manual-ness (my new word). It becomes very difficult to change items that have dependencies between them. I've not seen this automated well, if at all.&lt;br /&gt;&lt;br /&gt;11. You will waste an inordinate amount of time on things that work one second and don't the next, and then do again even though all you did is regenerate the code a couple of times during your troubleshooting.&lt;br /&gt;&lt;br /&gt;12. Sometimes items that get created via the tool will just simply behave erratically, no matter how much you tinker with it to get it to stop doing so. What I mean by this is that I've seen these types of tools implement some type of behavior that I have not told it to do. They just seem to do their own thing. And this newly unwanted behavior screws up what you are trying to accomplish. The unfortunate answer is often scrap the widget/report/whatever you are trying to create and start over. The art is knowing when to scrap it and when to keep banging on it. My hope is that I never use these tools long enough to become that artistic with them. The unfortunate thing is this is one of the most frustrating pieces of these things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-7761325393978111342?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/7761325393978111342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2010/03/frustrating-ii.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/7761325393978111342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/7761325393978111342'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2010/03/frustrating-ii.html' title='Frustrating II'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-3172087878134020721</id><published>2010-02-17T08:58:00.003-05:00</published><updated>2010-02-17T09:13:31.867-05:00</updated><title type='text'>Never Blog When You're Mad</title><content type='html'>I read the other day on Kent Beck's &lt;a href="http://www.threeriversinstitute.org/blog/"&gt;blog&lt;/a&gt; some wise advice that he was both simultaneously giving and breaking at the same time. &lt;br /&gt;&lt;br /&gt;Even though I had read this wise advice, I too did not follow it. The advice was to &lt;a href="http://www.threeriversinstitute.org/blog/?p=466"&gt;never blog when you're mad&lt;/a&gt;. It was never anything that I had thought about, but upon seeing it in writing it made perfect sense. Why? It just looks bad. You'll say things in the heat of the moment that you'll regret. And you just don't want the whole world to see your temper tantrum do you?&lt;br /&gt;&lt;br /&gt;Why did I not follow this advice that I had not even one day earlier stumbled upon? Because I was mad of course. And I wanted to express that... to get it out of me... so that I no longer held onto it. But after having my minor rant exposed on the web for a short duration of time... his advice kept ringing over and over in my head. "Never blog when you're mad... never blog when you're mad... never blog when you're mad...". &lt;br /&gt;&lt;br /&gt;And now that post is digital trash... I deleted it. There are more constructive things to write about or do. Such as this... passing on the advice... never blog when you're mad. Lesson learned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-3172087878134020721?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/3172087878134020721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2010/02/never-blog-when-youre-mad.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/3172087878134020721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/3172087878134020721'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2010/02/never-blog-when-youre-mad.html' title='Never Blog When You&apos;re Mad'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-154114291773935375</id><published>2010-02-11T09:11:00.003-05:00</published><updated>2010-02-11T09:14:51.551-05:00</updated><title type='text'>A Shoutout to the Agile Manifesto</title><content type='html'>Just pausing for a moment to recognize the anniversary of the &lt;a href="http://agilemanifesto.org/history.html"&gt;Agile Manifesto&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-154114291773935375?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/154114291773935375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2010/02/shoutout-to-agile-manifesto.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/154114291773935375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/154114291773935375'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2010/02/shoutout-to-agile-manifesto.html' title='A Shoutout to the Agile Manifesto'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-453906257413697116</id><published>2010-01-30T21:37:00.004-05:00</published><updated>2010-01-31T00:23:31.663-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Apple Kudos Long Overdue</title><content type='html'>I bought an &lt;a href="http://www.apple.com/iphone/"&gt;iPhone&lt;/a&gt; probably about a year and a half ago. Like any other iPhone owner that you ask… I love it. Tough to bump into someone that doesn’t love their iPhone. I’m not making any huge revelation when I point out that they absolutely did change the game in the mobile telco space when they came out with this phone.&lt;br /&gt;&lt;br /&gt;The revolutionary revelation that I have experienced, and want to point out to others, is the level of customer service that Apple has provided to me. This past November, my iPhone out of the blue decided that it would no longer connect up to any Wi-Fi access point. Not at home, not at work, not at Starbucks… not anywhere. For me this was incredibly disappointing as that is my primary method of choice to pull down podcasts, which I love to listen to. I’ve come to love listening to The Java Posse and the Clarke Howard Show on my way to and fro work (along with a litany of other podcasts that I fit in here and there). Granted, you can pull down podcasts via iTunes and drag them onto your phone, but it’s just several more steps to go through that I wish I did not have to. And besides that, I didn’t fork over hard earned cash for mobile equipment that would fail within a year, forcing me to sit back down at a desktop to use all of the functionality of my mobile device.&lt;br /&gt;&lt;br /&gt;After Googleing the issue and trying several suggestions to fix it… I decided I had to make a trek to my local Apple Store to visit the “Genius Bar”. For no real reason that I can point to, I’ve always felt that Apple’s labeling their in-store tech support as the “Genius Bar” rather pompous and pretentious. I’d never experienced any of these “Geniuses” before so who was I to judge if they were pretentious or not… maybe they all really are geniuses. Just has a pretentious feel to it to me. Anyways, off I go to the &lt;a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=lenox+mall+atlanta,+ga&amp;sll=37.0625,-95.677068&amp;sspn=30.185946,79.013672&amp;ie=UTF8&amp;hq=lenox+mall+atlanta,+ga&amp;hnear=Lenox+Square,+Atlanta,+GA+30326&amp;ll=33.855947,-84.361439&amp;spn=0.030863,0.077162&amp;z=14&amp;iwloc=A&amp;cid=12677712402609046750"&gt;Lenox Mall Apple Store&lt;/a&gt; after setting a reservation with one of the tech’s (Note: a &lt;a href="http://www.apple.com/retail/geniusbar/"&gt;reservation&lt;/a&gt; is necessary, so make sure to set one at apple.com prior to heading off to the store).&lt;br /&gt;&lt;br /&gt;After taking my seat and explaining my dilemma to the technician assigned to me he ran some diagnostics on my phone. All came back to indicate that there was an issue with the phone. And after several reset’s to the phone, the conclusion was that there was no helping this phone of mine. It was just simply not going to authenticate onto any Wi-Fi access points. And of course, this issue is very rare he said… I was just lucky enough to experience the problem. Then the rub came... sort of. After looking up the information in their system via the serial number of the phone, the tech informed me that my phone was 20 days outside of its warranty timeframe. A big resounding Charlie Brown-ish “AaaaUuuuuuGggggHhhhhh” rang through my brain as these words came out of his mouth. How could this be… Why Me… @#*&amp;$*@(!!! As I mentally rolled around in self pity… I almost didn’t catch the next sentence out of his mouth, which was “But, they do give us &lt;span style="font-style:italic;"&gt;some &lt;/span&gt;discretion over cases that we get. I’m going to give you a new phone and call it a day.” After hearing this, I almost kissed the guy. YES… THERE IS A GOD. Kindness and being human have not been abolished from the American corporate vocabulary. I looked him straight in the eye and said “You’ve just won a customer for life. What is your boss’s name? I would love to press in on him to give you a raise.”&lt;br /&gt;&lt;br /&gt;I am pleased to report… I didn’t experience any pompous and pretentious geniuses at the “Genius Bar”… just some really nice people doing a really good job. Taking care of their customer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-453906257413697116?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/453906257413697116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2010/01/apple-kudos-long-overdue.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/453906257413697116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/453906257413697116'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2010/01/apple-kudos-long-overdue.html' title='Apple Kudos Long Overdue'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-6731923228030329860</id><published>2009-11-18T14:40:00.005-05:00</published><updated>2009-11-18T15:47:16.878-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle's Documentation Site</title><content type='html'>If anyone has any insight into why Oracle's documentation site is so slow, I am seeking understanding and am open to ideas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-6731923228030329860?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/6731923228030329860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2009/11/oracles-documentation-site.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/6731923228030329860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/6731923228030329860'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2009/11/oracles-documentation-site.html' title='Oracle&apos;s Documentation Site'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-7656789636751465822</id><published>2009-10-13T23:53:00.005-04:00</published><updated>2009-10-15T15:07:01.872-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>My First Agile Atlanta Meeting</title><content type='html'>I attended my first &lt;a href="http://www.agileatlanta.org/"&gt;Agile Atlanta&lt;/a&gt; meeting tonight at IBM's offices over near Perimeter Mall here in Atlanta. The building was easy enough to find, and I arrived early enough to grab a quick and unnecessary snack of potato cakes from Arby's. Unnecessary because pizza was served at the meeting.&lt;br /&gt;&lt;br /&gt;I couldn't have unknowingly picked a better night to attend for my first meeting, as I discovered that &lt;a href="http://agile.scumniotales.com/"&gt;John Scumniotales&lt;/a&gt;, a co-creator of Scrum and the first Scrum Master, would be the presenter. I had the pleasure of sitting next to him prior to the meeting and the opportunity to get to know him a little. Seems like an extremely nice guy. I hadn't realized it but Easel Corporation was a direct competitor with PowerBuilder back when he, &lt;a href="http://jeffsutherland.com/"&gt;Jeff Sutherland&lt;/a&gt;, and &lt;a href="http://jeffmckenna.typepad.com/"&gt;Jeff McKenna&lt;/a&gt; were working there and came up with the phrase Scrum to describe what they were doing.&lt;br /&gt;&lt;br /&gt;Some of what I heard him speak of this evening re-affirmed other things that I had learned about Scrum, and Agile methods in general, from others that I've worked with in the past. One thing that I did learn was that he did not consider a development shop practicing Agile unless they are doing Test Driven Development. It's a cornerstone that seems like he doesn't believe can or should be compromised. There were 5 things that he mentioned, and unfortunately my skill at typing on my iPhone was not honed enough to capture them all.&lt;br /&gt;&lt;br /&gt;Beyond what is commonly known as Agile and Scrum methods, he spoke in part to Scrum methods spilling out from sort of the software construction time frame to other parts of the business. &lt;br /&gt;&lt;br /&gt;He also spoke to Agile and it's implications for distributed teams. He makes a good point, in that tooling in this circumstance is very important. He walked us through some of the application that he manages development for, &lt;a href="http://www.serena.com/products/agile-software/"&gt;Serena - Agile On Demand&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Suffice to say, I'm glad I finally made it to my first Agile Atlanta meeting, and I definitely intend to make it to next months meeting, time permitting. Thank you, John, for taking the time to come out and talk to us this evening.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-7656789636751465822?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/7656789636751465822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2009/10/my-first-agile-atlanta-meeting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/7656789636751465822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/7656789636751465822'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2009/10/my-first-agile-atlanta-meeting.html' title='My First Agile Atlanta Meeting'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-3000837588960925391</id><published>2009-08-31T22:55:00.008-04:00</published><updated>2009-08-31T23:18:42.399-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Spring in Action: Section 9.1</title><content type='html'>For some reason, lately I've been picking on Spring In Action, Second Edition. This is due in large part to it being the primary book that I've been reading. I would like to set the record straight before continuing with this next post and say that I like this second edition of &lt;a href="http://www.manning.com/walls3/"&gt;Spring In Action&lt;/a&gt; by &lt;a href="http://www.jroller.com/habuma/"&gt;Craig Walls&lt;/a&gt; and Ryan Breidenbach. I would go so far as to say that I like it a lot. I've used it for many things, first and foremost for giving me a deeper understanding of the Spring framework. And a natural extension of that has been professionally at work.&lt;br /&gt;&lt;br /&gt;That being said, I do want to point out that there is a typo on p.345, Section 9.1, paragraph 1, last sentence in the paragraph reads:&lt;br /&gt;&lt;br /&gt;"It might be easier to answer that question by first talking about their antithesis: contact-last web services."&lt;br /&gt;&lt;br /&gt;This should read:&lt;br /&gt;&lt;br /&gt;"It might be easier to answer that question by first talking about their antithesis: contract-last web services."&lt;br /&gt;&lt;br /&gt;I think I've potentially missed my calling as a nit-picky book editor. Perhaps I need to make myself useful and point this out to the book's publisher (&lt;a href="http://www.manning.com/"&gt;Manning Publications&lt;/a&gt;)in case they care to correct it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-3000837588960925391?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/3000837588960925391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2009/08/for-some-reason-lately-ive-been-picking.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/3000837588960925391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/3000837588960925391'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2009/08/for-some-reason-lately-ive-been-picking.html' title='Spring in Action: Section 9.1'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-7029353827096385036</id><published>2009-07-03T16:12:00.012-04:00</published><updated>2009-07-15T15:22:57.634-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Spring In Action - KnightApp modification</title><content type='html'>I'm currently reading &lt;a href="http://www.amazon.com/Spring-Action-Craig-Walls/dp/1933988134/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246654972&amp;amp;sr=8-1"&gt;Spring In Action&lt;/a&gt; by Craig Walls and Ryan Breidenbach from Manning Publications. Let me first thank them for writing this book as it's a reference that I've used both professionally and personally. I like the Manning "* In Action" series of books as they tend to get to the point with doing things through examples. However, I believe that the examples could have been a little better worked out, which I will point out here in a minute. Like any good technical author, though, they did include their source code for each of their examples.&lt;br /&gt;&lt;br /&gt;In Chapter 1 they begin walking you through core Spring via the characteristic Hello World app pointing out Dependency Injection, and it's benefits. Their second example walks through a Knight application, and is used to demonstrate both dependency injection and Aspect Oriented Programming (AOP). I'm looking forward to seeing how Spring facilitates AOP.&lt;br /&gt;&lt;br /&gt;They describe AOP as a technique that "promotes separation of concerns within a software system." It looks like the intention is to remove from application code those items that all portions of a system need to concern themselves with, such as logging, transaction management, and security. All classes in a system shouldn't have to concern themselves with these items as part of their application/business logic as they are concerns for the entire system being developed. I'll probably have more to post on AOP once I become more familiar with it's cross cutting domain and how this paradigm addresses them. The intention of this particular post is to point out a change you will need to make to one of your classes in this example or else it will not work.&lt;br /&gt;&lt;br /&gt;While walking through dependency injection Walls and Breidenbach write a driver class to kick of the application called KnightApp.java. Their main in KnightApp.java is coded as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;-- KnightApp --&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(Click for source)&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="Cpp"&gt;&lt;br /&gt;package com.springinaction.chapter01.knight;&lt;br /&gt;&lt;br /&gt;import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;import org.springframework.beans.factory.xml.XmlBeanFactory;&lt;br /&gt;import org.springframework.core.io.FileSystemResource;&lt;br /&gt;&lt;br /&gt;public class KnightApp {&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) throws Exception{&lt;br /&gt;BeanFactory factory =&lt;br /&gt;  new XmlBeanFactory(new FileSystemResource("resources/knight.xml"));&lt;br /&gt;Knight knight = (Knight) factory.getBean("knight");&lt;br /&gt;knight.embarkOnQuest();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you move from using the Knight application from looking at dependancy injection to looking at AOP, they don't mention that the driver application KnightApp.java needs to be updated to no longer load the spring config file using BeanFactory and XmlBeanFactory to using ApplicationContext and ClassPathXmlApplicationContext, as shown below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;-- KnightAppModified --&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(Click for source)&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="Cpp"&gt;&lt;br /&gt;package com.springinaction.chapter01.knight;&lt;br /&gt;&lt;br /&gt;import org.springframework.context.ApplicationContext;&lt;br /&gt;import org.springframework.context.support.ClassPathXmlApplicationContext;&lt;br /&gt;&lt;br /&gt;public class KnightApp {&lt;br /&gt;public static void main(String[] args) throws Exception {&lt;br /&gt;ApplicationContext ctx =&lt;br /&gt;new ClassPathXmlApplicationContext(&lt;br /&gt;    "com/springinaction/chapter01/knight/knight.xml");&lt;br /&gt;&lt;br /&gt;Knight knight =&lt;br /&gt;  (Knight) ctx.getBean("knight");&lt;br /&gt;&lt;br /&gt;knight.embarkOnQuest();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As I mentioned earlier, like any good technical authors they included the working source code for their examples, as this is how I discovered what needed to be changed. But it does tend to be tedious to track down. I'm not entirely sure of the need for the change yet, but intend on discovering it as I go through more of the book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-7029353827096385036?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/7029353827096385036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2009/07/spring-in-action-knightapp-modification.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/7029353827096385036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/7029353827096385036'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2009/07/spring-in-action-knightapp-modification.html' title='Spring In Action - KnightApp modification'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-8231402598519313220</id><published>2009-06-01T16:04:00.012-04:00</published><updated>2009-07-03T19:04:48.211-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>The Vendor Client relationship - in real world situations</title><content type='html'>&lt;p&gt;&lt;object width="400" height="305"&gt;&lt;param name="movie" value="http://www.youtube.com/v/R2a8TRSgzZY&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/R2a8TRSgzZY&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="305"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-8231402598519313220?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/8231402598519313220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2009/06/vendor-client-relationship-in-real.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/8231402598519313220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/8231402598519313220'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2009/06/vendor-client-relationship-in-real.html' title='The Vendor Client relationship - in real world situations'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-3475548758549248967</id><published>2009-04-15T23:55:00.009-04:00</published><updated>2009-07-03T19:05:55.705-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>Starting a new project</title><content type='html'>So, I'm starting a new project in my "off" hours at night. It's a scary scene...me, my lava lamp, in my basement, with XM radio on, and all of the lights are off save for a small lamp with a 40-Watt light bulb in it.&lt;br /&gt;&lt;br /&gt;For my project I have chosen to to use MySQL, which I have never used before and am excited to explore. I've worked with Oracle and a tiny bit of MS SQL Server, and it's about time I play around with MySQL. One of the tools that I've chosen to use in this project is &lt;a href="http://www.squirrelsql.org/"&gt;SQuirreL&lt;/a&gt;, otherwise known as &lt;strong&gt;the&lt;/strong&gt; universal SQL client. I had the pleasure of being introduced to SQuirreL by a colleague during the past year while working on a project at work, and since then it has become my tool of choice if I have to attach to a database and do some work.&lt;br /&gt;&lt;br /&gt;It's written entirely in Java and allows you to do pretty much whatever you need to do (or whatever I've needed to) administrative wise on a database, without any quirky restrictions often found in limited versions of pay-for tools (such as &lt;a href="http://www.minq.se/products/dbvis/"&gt;DBVisualizer&lt;/a&gt;). Oh, I didn't mention that it is freely available via an open source license. The latest version made a UI change that I like, and that is that Drivers and Aliases are now available as tabs on the left hand side of the application. It seems like in prior versions I always seemed to loose one or both of those, and had to go searching to pull them back up. You pretty much just have to point SQuirreL to the jdbc drivers for whatever database you want to attach to, and away you go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-3475548758549248967?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/3475548758549248967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2009/04/starting-new-project.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/3475548758549248967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/3475548758549248967'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2009/04/starting-new-project.html' title='Starting a new project'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2763294587753727890.post-8056430235883008979</id><published>2009-04-07T13:24:00.009-04:00</published><updated>2009-04-10T14:13:46.517-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code style'/><category scheme='http://www.blogger.com/atom/ns#' term='code comments'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Road rules for commenting your code</title><content type='html'>I'll never forget the first programming professor I had in college. He was a developer for Coke in Atlanta, GA corporate offices and taught "Intro to Java" as a side gig. He was a good teacher so far as I can remember, very capable at presenting completely foreign material to a diverse group of students in a concise and understandable way, and for that I thank him. He made himself readily available for questions, including business hours when he was on duty at Coke if you had a pressing question that you needed to get in touch with him about.&lt;br /&gt;&lt;br /&gt;However, one of the principals that he hammered us on was that you needed to comment all of your code. This included every class, every method...on down to every variable. Closing braces should have a comment on what block it was closing off whether it be an if-elseif block, or a for loop, or the closing brace on your class. Did not matter...it had better have a comment on it or you could count on 2 points coming off of your grade.&lt;br /&gt;&lt;br /&gt;It was not until I graduated and entered the working world that I would discover that this was in fact, not the best practice to follow. I was surprised to find that the majority of developers on a large project I was involved with at work shunned the practice of comments (not always, but most of the time you could say). Why? They were quick to point out that comments quickly get outdated, and that it's better to rely on the code to tell you the story instead of the comment.&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; The one caveat to this was that an interface (we were coding in java) should always have comments as it is a public and published contract.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;I was reminded of this professor recently after having stumbled upon a &lt;a href="http://www.informit.com/promotions/promotion.aspx?promo=136914"&gt;series of articles&lt;/a&gt; by Robert C. Martin (otherwise known as &lt;a href="http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings"&gt;Uncle Bob&lt;/a&gt;). These articles provide you with a glimpse into what you can expect to find in one of the most recent books he has been involved with, &lt;a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1239126626&amp;amp;sr=1-2"&gt;Clean Code: A Handbook of Agile Software Craftsmanship&lt;/a&gt;. They give a just shy of humorous but pragmatic viewpoint of how comments don't work sometimes... a lot of times. I've not had the chance to read the book yet, but if the article series of excerpts are a good representation of what is in the book, then I intend to be picking it up soon.&lt;br /&gt;&lt;br /&gt;My personal&lt;cite&gt;&lt;/cite&gt; viewpoint... definitely comment code that could be confusing. If this is the case though, then perhaps you should try to find a way to refactor the code to make more sense. I agree with my friend, comment interfaces that you write. Remove old commented out code as it is outdated and most likely will never be needed again. And if it is, that's what version control systems are for. And keep comments short and to the point... don't try to tell a story with your comment. If you are, then your code could probably use a refactoring in this instance as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2763294587753727890-8056430235883008979?l=sdtools.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sdtools.blogspot.com/feeds/8056430235883008979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sdtools.blogspot.com/2009/04/road-rules-for-commenting-your-code.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/8056430235883008979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2763294587753727890/posts/default/8056430235883008979'/><link rel='alternate' type='text/html' href='http://sdtools.blogspot.com/2009/04/road-rules-for-commenting-your-code.html' title='Road rules for commenting your code'/><author><name>Cory Wheeler</name><uri>http://www.blogger.com/profile/03128866105022882666</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
