<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-8705625483014737246</atom:id><lastBuildDate>Fri, 01 Nov 2024 10:35:37 +0000</lastBuildDate><category>book reviews</category><category>learning</category><category>Java</category><category>architecture</category><category>software development</category><category>97 things</category><category>author</category><category>design</category><category>nfjs</category><category>tips</category><category>training</category><category>IASA</category><category>ITARC 2009</category><category>JavaOne</category><category>addison wesley</category><category>agile</category><category>better code</category><category>career</category><category>code</category><category>faster delivery</category><category>groovy</category><category>java puzzler</category><category>o&#39;reilly</category><category>programming</category><category>software architect</category><category>speaking event</category><category>tricky code</category><category>user experience design</category><category>AJUG</category><category>DevNexus</category><category>GTUG</category><category>JavaFX</category><category>NullPointerException</category><category>SCJP</category><category>Scott Davis</category><category>TV</category><category>Windows XP slow</category><category>android</category><category>andy hunt</category><category>answers</category><category>api design</category><category>apple</category><category>automates testing</category><category>certification</category><category>disclosure</category><category>java doc</category><category>leadership</category><category>mac</category><category>macintosh</category><category>marsee</category><category>presentation</category><category>product design</category><category>programmer</category><category>read this</category><category>sci fi</category><category>scoop</category><category>star trek</category><category>steve jobs</category><category>switching</category><category>unit testing</category><category>web applicatons</category><category>welcome</category><title>Mind Like a Sword</title><description>Like a sword, keep your mind bright and sharp.&lt;br&gt;&#xa;And remember, it&#39;s always good to have a point.</description><link>http://mindlikeasword.blogspot.com/</link><managingEditor>noreply@blogger.com (Burk Hufnagel)</managingEditor><generator>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-6204956742896638970</guid><pubDate>Wed, 26 Apr 2023 03:18:00 +0000</pubDate><atom:updated>2023-04-25T23:18:24.734-04:00</atom:updated><title>The Three Laws of Test-Driven Development are Useful but Incomplete</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;While out on a walk in early 2021, I was thinking about the best way of teaching Test-Driven Development (TDD) to other developers when I realized something unsettling: Robert C. Martin’s “Three Laws of TDD” are incomplete. I had read about the three laws in a blog post of his many years earlier and found the idea intriguing enough that I tried using them for a while. The results were good enough that I made them part of my TDD practice, and I shared them with others when teaching a TDD workshop or giving a presentation on it.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;Once I realized the Three Laws were incomplete, I became concerned that even though I had benefited from following them, the people I shared them with might not be getting the same results. Not because I was a better developer, but because I had been practicing TDD for a couple of years when I read about the Three Laws and when I tried following them, the habits I had already built filled in the gaps -- which I suspect is also why I didn’t notice the Laws were incomplete at the time.&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;So, what’s missing from the Three Laws and why do I think my version is better? Before I show you my version, let’s start with a reminder. Uncle Bob’s Three Laws go something like this :&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;You only write production code when there is a failing test.&lt;/li&gt;&lt;li&gt;You write just enough test code for it to fail or fail to compile.&amp;nbsp;&lt;/li&gt;&lt;li&gt;You write just enough production code to make the failing test pass.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;If you compare this description with the three steps of TDD (often referred to as Red, Green, Refactor) you’ll notice that the Three Laws have you moving from Red to Green then back to Red over and over. Though I didn&#39;t notice it at first, there is no mention of Refactoring, which is the third step of TDD. Refactoring the code is necessary so we can clean up any mess made while writing the test or production code and make them easier to understand and modify.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;The other problem I saw is that the Three Laws don’t address the two most common questions developers new to TDD ask; “How do I know what tests to write?” and “How do I know when I’m done?” While you could argue that these questions have nothing to do with the process of TDD, I think that calling them the “Three Laws of TDD” implies they’re all you need to know to do TDD.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;In any case, I have a zeroth rule that answers the question and, I think, makes the whole thing complete. So, here’s my version of the Rules for succeeding with TDD:&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;b&gt;Burk’s Rules for Test-Drive Development&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;&lt;/b&gt;0) You only write a test to describe an unmet requirement.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp;1) You write just enough test code to fail, and not being runnable counts as failing.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp;2) You write just enough production code to make the test runnable.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp;3) When the completed test fails for the expected reason, you write just enough production code to make it pass.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp;4) You refactor the production and test code to clean up any mess.&lt;/div&gt;&lt;/div&gt;&lt;p&gt;The zeroth rule answers the questions about knowing what tests to write and knowing when you’re done.&amp;nbsp; It also connects TDD with the system requirements, which means we don’t have to guess about what tests to write and how we know when we’re done.&lt;/p&gt;&lt;p&gt;Once I had developed my solution, I submitted a talk on it to The Developer Conference since their Call-For-Papers was open. The talk was accepted, and I presented it there in June 2021. About six or seven months later, Uncle Bob’s book “Clean Craftsmanship” was published, and I bought a copy.&amp;nbsp; While reading it, I was surprised and pleased to see that in addition to the Three Laws, he briefly mentioned that there was a Fourth Law - and that it was to Refactor. I don’t know whether he had heard about my talk or not, but I’m glad we agree that refactoring is a critical step to making TDD work.&lt;/p&gt;&lt;p&gt;If you find this useful and/or thought-provoking then please share it with other developers.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description><link>http://mindlikeasword.blogspot.com/2023/04/the-three-laws-of-test-driven.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-4153297440382815888</guid><pubDate>Mon, 27 Feb 2012 13:59:00 +0000</pubDate><atom:updated>2012-02-28T06:49:52.082-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">addison wesley</category><category domain="http://www.blogger.com/atom/ns#">agile</category><category domain="http://www.blogger.com/atom/ns#">architecture</category><category domain="http://www.blogger.com/atom/ns#">automates testing</category><category domain="http://www.blogger.com/atom/ns#">better code</category><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">design</category><category domain="http://www.blogger.com/atom/ns#">faster delivery</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">learning</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">software development</category><category domain="http://www.blogger.com/atom/ns#">tips</category><category domain="http://www.blogger.com/atom/ns#">unit testing</category><title>Burk on Books: Growing Object-Oriented Software, Guided by Tests</title><description>&lt;a href=&quot;http://www.informit.com/store/product.aspx?isbn=0321503627&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 151px; height: 200px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjWuOmz0SThiPeDaQM67XOZicTKIyDPgGSiJ5eKT9Pxv75akNCpimwhWtlF-F7zRBT567GMx5k8kRf7Mrm9WaWygYQu2VIoFfMVh8Xb1F8QeKOLnxIad_iaTfjKDZPqtL9rL3zh8P_YN9P/s200/Cover_GrowingOOSWGuidedByTests.jpeg&quot; border=&quot;0&quot; alt=&quot;Cover of &#39;Growing Object-Oriented Software, Guided by Tests&quot; id=&quot;BLOGGER_PHOTO_ID_5714025348052236386&quot; /&gt;&lt;/a&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;If you want the short version, here it is: Developers should get this book and spend some time absorbing the ideas in it. It’s well written and easy to read, but grokking it all will take time and practice. I recommend doing it as a team, book club style; read a bit then discuss it so you can bounce ideas off each other and get the benefit of other viewpoint. I also recommend starting now so you can write better code sooner!  &lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial; min-height: 17.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Note to those who care: ‘Grok’ is a real word now, it’s in the Oxford English Dictionary, though I prefer the definition in &lt;a href=&quot;http://www.merriam-webster.com/dictionary/grok&quot;&gt;&lt;span style=&quot;text-decoration: underline ; letter-spacing: 0.0px color:#0b00ae;&quot;&gt;Merriam Webster’s&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Still here? Well then, I think it’s safe to assume one or more of the following; you weren’t convinced by my four sentence review, you want more details about the book, or maybe you’ve just got some time to kill and like my writing style. Hey, stop laughing, it’s possible...&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;According to the authors, “&lt;a href=&quot;http://www.informit.com/store/product.aspx?isbn=0321503627&quot;&gt;Growing Object-Oriented Software, Guided by Tests&lt;/a&gt;” is the results of a couple of decades of experience, including almost ten years of Test-Driven Development (TDD) on a wide range of projects. While the authors state that the goal of the book is to teach you TDD, don’t believe them. From what I read, the goal is to teach you TDD the way it &lt;i&gt;should&lt;/i&gt; be done. Just as having 100% code coverage doesn’t mean there are no bugs, writing unit tests first doesn’t guarantee a working system.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;The authors expand upon the traditional approach to TDD by adding acceptance tests to the mix. Acceptance tests, sometimes called end-to-end tests, begin at the user level (UI or public API) and exercise all parts of the system to ensure the system performs correctly.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Their approach adds an outer loop to the standard &lt;a href=&quot;http://agileinaflash.blogspot.com/2009/02/red-green-refactor.html&quot;&gt;Red-Green-Refactor&lt;/a&gt;&lt;find a=&quot;&quot; good=&quot;&quot; link=&quot;&quot; for=&quot;&quot; this=&quot;&quot;&gt; cycle. The loop starts with writing a failing acceptance test then writing all the unit tests needed to make it pass. While it may seem to be a small thing, I think adding the outer loop gives needed direction to the developers’ efforts by highlighting what should be built next.&lt;/find&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;The book starts with a quick introduction to the authors’ view of TDD,  the tools that will be used in the examples throughout the book (JUnit 4, the Hamcrest matching framework, and the jMock2 Framework).&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;In Part II, the authors go deeper into how they start a project using their acceptance test/unit tests approach. In it, they introduce the concept of a “walking skeleton” which forms the basic structure the rest of the system is built upon.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Part III, a “Worked Example” is the longest section of the book, and it’s where we get to look over the authors’ shoulders as they build a nontrivial application that includes a Swing-based user interface and third-party services in the back-end. Even so, it’s not a realistic application, which is good because at the level of detail they’re giving us, the book would be too big to lift.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;One of the most important things this book does is prove that you can test-drive a functional user interface. Yes, it’s a Swing-base UI, but I suspect you could follow the same approach using Seleium or Geb and test-drive a web-based UI too.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Part IV is titled “Sustainable Test-Driven Development” and it the authors present some useful guidelines intended to help you keep your sanity while maintaining a test-driven approach.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Part V covers “Advanced Topics” like how to test persistence, dealing with mult-threading, and how to test asynchronous code.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;There’s more after that, including “A Brief History of Mock Objects” and two useful Appendices.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;I said it before, and I’ll say it again. Developers should get this book and spend time absorbing the ideas in it; preferably with other team members for the most benefit, Go solo if you must, the time invested will be well spent.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;Disclosure: I received a free copy of the book from the publisher, with the understanding that I would read it and write a review of it. For more information read my &lt;a href=&quot;http://mindlikeasword.blogspot.com/2012/02/full-disclosure-on-book-reviews.html&quot;&gt;Full Disclosure post&lt;/a&gt;.&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;Here&#39;s the publishing details:&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;Title: &lt;a href=&quot;http://www.informit.com/store/product.aspx?isbn=0321503627&quot;&gt;Growing Software , Guided by Tests&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;Authors: Steve Freeman and Nat Pryce&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;Published: 2009 by Addison-Wesley&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;ISBN-10: 0321503627&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Arial&quot;&gt;ISBN-13: 978-0321503626&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description><link>http://mindlikeasword.blogspot.com/2012/02/burk-on-books-growing-object-oriented.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjWuOmz0SThiPeDaQM67XOZicTKIyDPgGSiJ5eKT9Pxv75akNCpimwhWtlF-F7zRBT567GMx5k8kRf7Mrm9WaWygYQu2VIoFfMVh8Xb1F8QeKOLnxIad_iaTfjKDZPqtL9rL3zh8P_YN9P/s72-c/Cover_GrowingOOSWGuidedByTests.jpeg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-7304337430673077066</guid><pubDate>Sat, 18 Feb 2012 13:56:00 +0000</pubDate><atom:updated>2012-02-18T08:56:00.403-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">disclosure</category><category domain="http://www.blogger.com/atom/ns#">read this</category><title>Full Disclosure on Book Reviews</title><description>It seems I may have some housekeeping to do so please read this posting so you&#39;ll know what to expect from my book reviews.&lt;br /&gt;&lt;br /&gt;Some time in 2009, the FTC published guides governing endorsements and testimonials that may apply to me. While I do buy some books and review them, most of the reviews I post are for books I have received from the publisher with the expectation that I would read the book and post a review. Please note that I said &quot;a review&quot; and not &quot;a &lt;span style=&quot;font-style:italic;&quot;&gt;positive&lt;/span&gt; review&quot;.&lt;br /&gt;&lt;br /&gt;If you read my reviews, you&#39;ll notice that they&#39;re all pretty positive. There are multiple reasons for that, but I want to make it clear that other than the book being reviewed, I do not receive &lt;i&gt;any&lt;/i&gt; kind of compensation from any of the publishers, or anyone associated with them, in exchange for a positive review. Note that I have, on occasion, asked for copies of a book to give away when doing a presentation at a developer conference. I don&#39;t see that as compensation because it doesn&#39;t benefit me so much as the people who get the free books.&lt;div&gt;&lt;br /&gt;There are two main reason my books reviews are positive is simple. The first is that I&#39;m not vain enough to believe that if I don&#39;t like a book then it must be a bad book.  The second reason is because before I ask for a review copy, I do some research. I&#39;ll look for the book on Amazon or Safari, or even in a real book store, and read a bit. If it looks interesting and I like the style then I&#39;ll ask the publisher for a review copy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If I&#39;m reviewing a book that&#39;s just come out then it&#39;s likely I&#39;ve either read a previous book by the author, it&#39;s part of a series (like Head First) that&#39;s earned my trust, or it&#39;s a topic (like automated testing) that I&#39;m deeply interested in and am willing to take a chance on the unknown.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In case you&#39;re wondering, I tend to like books that are technical without being dry. The author should present the information in a way that doesn&#39;t make me feel like they&#39;re looking down on me because I don&#39;t already understand whatever they&#39;ve spent a decade mastering. Good examples include &lt;a href=&quot;http://www.amazon.com/Presentation-Zen-Simple-Design-Delivery/dp/0321525655/ref=sr_1_1?ie=UTF8&amp;amp;qid=1329536747&amp;amp;sr=8-1&quot;&gt;Presentation Zen&lt;/a&gt;, &lt;a href=&quot;http://pragprog.com/&quot;&gt;PragProg&lt;/a&gt; books like &lt;a href=&quot;http://pragprog.com/book/ahptl/pragmatic-thinking-and-learning&quot;&gt;Pragmatic Thinking and Learning&lt;/a&gt;, and anything in the &lt;a href=&quot;http://search.oreilly.com/?i=1;q=head+first;q1=Books;x=0;x1=t1;y=0&amp;amp;act=fc_contenttype_Books&quot;&gt;Head First&lt;/a&gt; series published by &lt;a href=&quot;http://shop.oreilly.com/&quot;&gt;O&#39;Reilly&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By the way, Addison Wesley sent me some books that are definitely top notch. I just posted &lt;a href=&quot;http://mindlikeasword.blogspot.com/2012/02/burk-on-books-essential-skills-for_14.html&quot;&gt;a review for &quot;Essential Skills for the Agile Developer&quot;&lt;/a&gt;, I&#39;m writing the review for &quot;Growing Object-Oriented Software, Guided by Tests&quot;, and I&#39;m reading &quot;12 Essential Skills for Software Architects&quot;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Setting up all those links reminds me, while I often provide links to Amazon, or a publisher&#39;s site, so you can easily buy the book being reviewed. They are for your convenience only. I don&#39;t get credited or compensated for purchases made by folks using those links. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;In the spirit of full disclosure let me say that I once requested a book from a publisher and, after reading it, realized I couldn&#39;t give it a positive review. The book was a certification guide, but there were so many factual problems that I knew I could not recommend it to anyone. Instead I emailed the publisher a rather long list of the errors I found, let them know I could not publish a positive review, and offered to send the book back.&lt;br /&gt;&lt;br /&gt;So, that&#39;s the story. Many of the books I review are sent to me at no cost, but with the expectation that I will read them and post my honest opinion. Some of them are books I bought and wanted to share with you. In either case the opinions I post are mine and are as objective as any opinion can be.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;end of=&quot;&quot; disclosure=&quot;&quot;&gt;&lt;/end&gt;&lt;/div&gt;</description><link>http://mindlikeasword.blogspot.com/2012/02/full-disclosure-on-book-reviews.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-845973962936204872</guid><pubDate>Tue, 14 Feb 2012 13:59:00 +0000</pubDate><atom:updated>2012-02-16T13:00:26.020-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">addison wesley</category><category domain="http://www.blogger.com/atom/ns#">agile</category><category domain="http://www.blogger.com/atom/ns#">architecture</category><category domain="http://www.blogger.com/atom/ns#">better code</category><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">design</category><category domain="http://www.blogger.com/atom/ns#">faster delivery</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">learning</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">software development</category><category domain="http://www.blogger.com/atom/ns#">tips</category><title>Burk on Books - Essential Skills for the Agile Developer: A Guide to Better Programming and Design</title><description>&lt;a href=&quot;http://www.informit.com/store/product.aspx?isbn=0321543734&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 152px; height: 200px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJeKaA0V_k2GrWXIMmOUb9LkA2iKZBzGsu55Rx3FasuifszFZh6TWP-z9Rv8ixFDB5zb_vuAts5yumq_fm12D1sFBImbol8gaUl8ikN3KSItW028WbKXlvoW6t0bM0DcfHOoYl6gdrxS2/s200/Cover+for+Essential+Skills.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5708101237713672642&quot; /&gt;&lt;/a&gt;&lt;br /&gt;“Essential Skills&quot; is a part of Net Objectives&#39; Lean-Agile series. The  authors’ intent is to teach the &quot;minimal set of skills developers need on the journey toward becoming adept at incremental development.” In my opinion they’ve more than met that goal.&lt;br /&gt;&lt;br /&gt;Note that while the title says &quot;Agile Developer&quot;, almost all the examples are in Java, and the skills are just as useful to Java developers as to any other kind. &lt;br /&gt;&lt;br /&gt;Due to its focus on the fundamentals of good software development, “Essential Skills” is one of those rare books that is valuable to both beginners and experienced developers.&lt;br /&gt;&lt;br /&gt;Beginners will learn to develop high quality software, while experienced developers will be reminded of valuable practices they may have dropped while attempting to meet aggressive deadlines. But there&#39;s more. &lt;br /&gt;&lt;br /&gt;The authors also describe the benefits gained, which is quite useful if you&#39;re often asked to &quot;cut corners&quot; and deliver something sooner. (Imagine flashes of lightning and ominous music here.) Once business people see how rushing things out the door leads to lower code quality, and eventually results in longer deliver times, they tend to back off a bit.&lt;br /&gt;&lt;br /&gt;You&#39;ve no doubt heard that moving a team that produces so-so software to an agile process won&#39;t improve the quality. They&#39;ll just produce it faster. However, using the skills you learn from this book will increase the quality of your software. And, over time, you may notice that it&#39;s sped things up too - whether you go agile or not.&lt;br /&gt;&lt;br /&gt;In short, I strongly recommend this book for both beginning and experienced developers, no matter what methodology you follow. I found myself nodding in agreement more than a few times as I read, and I think you will too.&lt;br /&gt;&lt;br /&gt;Oh, yes. One more thing. If you do nothing else, find someplace to read the Preface. Yes, that&#39;s right, the Preface. It&#39;s only two pages, but there&#39;s something worth learning right there. If you&#39;re not sitting in a bookstore, you can get it straight from the publisher at &lt;a href=&quot;http://my.safaribooksonline.com/book/software-engineering-and-development/agile-development/9780321700469/preface/pref03&quot;&gt;InformIT&lt;/a&gt;. If the link doesn&#39;t work, just go to http://safari.informit.com/9780321700469 then click the link for the Preface and enjoy.&lt;br /&gt;&lt;br /&gt;“Essential Skills for the Agile Developer: A Guide to Better Programming and Design”&lt;br /&gt;Authors: Alan Shalloway, Scott Bain, Ken Pugh, Amir Kolsky &lt;br /&gt;Publisher: Addison-Wesley Professional; 1st edition (August 29, 2011)&lt;br /&gt;ISBN-10: 0321543734  ISBN-13: 978-0321543738</description><link>http://mindlikeasword.blogspot.com/2012/02/burk-on-books-essential-skills-for_14.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJeKaA0V_k2GrWXIMmOUb9LkA2iKZBzGsu55Rx3FasuifszFZh6TWP-z9Rv8ixFDB5zb_vuAts5yumq_fm12D1sFBImbol8gaUl8ikN3KSItW028WbKXlvoW6t0bM0DcfHOoYl6gdrxS2/s72-c/Cover+for+Essential+Skills.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-4430572883980540184</guid><pubDate>Sun, 26 Sep 2010 03:40:00 +0000</pubDate><atom:updated>2010-09-25T23:51:49.828-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">GTUG</category><category domain="http://www.blogger.com/atom/ns#">JavaOne</category><category domain="http://www.blogger.com/atom/ns#">nfjs</category><title>JavaOne 2010</title><description>JavaOne 2010 is officially over but for me it&#39;s still going on. I had the opportunity to give a technical presentation and lead a BOF (Bird Of a Feather) talk as well. PDF files of the slides for both are posted on the &lt;a href=&quot;http://openworld.vportal.net&quot;&gt;Oracle OpenWorld, JavaOne, and Oracle Develop On Demand&lt;/a&gt; web site. As far as I know, you must have attended one of the three conferences to have access, so I&#39;m looking at posting the files to GitHub too. I&#39;ll update this post with the URL once they&#39;re up there. I&#39;ll post more about JavaOne after I&#39;ve had a chance to catch up on my sleep.&lt;br /&gt;&lt;br /&gt;I got back Friday morning around 6:00 AM, crashed for a couple hours, then got in line for registration at the&lt;a href=&quot;http://www.nofluffjuststuff.com/conference/atlanta/2010/09/home&quot;&gt; No Fluff Just Stuff Software Symposium&lt;/a&gt;. It starts at noon on Friday and ends around 8:00PM; then goes all day Saturday and Sunday. &lt;br /&gt;&lt;br /&gt;Normally, I stay for the dinner and KeyNote on Friday but not this time. My friend Charlie and I missed the dinner and keynote so we could attend a special &lt;a href=&quot;http://groups.google.com/group/gtug-atlanta&quot;&gt;Google Technology User Group &lt;/a&gt;meeting where Josh Marinacci of the Palm Developer Relations team talked about (and demo&#39;d) cross-device mobile app development. Josh was involved with Swing and JavaFX before leaving Sun, and now he&#39;s with HP evangelizing the WebOS platform and cross platform development. He&#39;s scary smart and very passionate about user interfaces and user experience and I&#39;m already looking forward to the next opportunity I have to see him present.&lt;br /&gt;&lt;br /&gt;Needless to say, this has been a long week. Very fun with lots of opportunities to meet interesting people, sharpen my skills, and learn about new technologies and processes - but I wouldn&#39;t recommend making a habit of it.&lt;br /&gt;&lt;br /&gt;If you were at JavaOne - especially if you attended one of my sessions - please take a moment to leave a comment. Same goes for you NFJS folks and GTUG members.&lt;br /&gt;&lt;br /&gt;Next week&#39;s shaping up to be busy too and I expect I&#39;ll be posting something about the &lt;a href=&quot;http://bigtxbbq.com/&quot;&gt;Big Texas Android BBQ&lt;/a&gt; about ten days from now.&lt;br /&gt;&lt;br /&gt;Over. (That means it&#39;s your turn to talk - or in this case post a comment.)</description><link>http://mindlikeasword.blogspot.com/2010/09/javaone-2010.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-761335499674783263</guid><pubDate>Fri, 05 Feb 2010 14:00:00 +0000</pubDate><atom:updated>2010-02-05T09:00:03.585-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">97 things</category><category domain="http://www.blogger.com/atom/ns#">author</category><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">learning</category><category domain="http://www.blogger.com/atom/ns#">o&#39;reilly</category><category domain="http://www.blogger.com/atom/ns#">programmer</category><title>Burk on Books - 97 Things Every Programmer Should Know</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihYYO5qcyCE86FwrAxT_w310ChzLHB9XDo07_pOoqhsa7Fy9rpZ2nQQBFduHUdU4Q8b2p5Xz1MrjXLt4cMeIOHSOQmczvFS-2XxS9a9iduE9N5M3D_-m5FbPK7SqYzKbGEl9xMV93Pb0Xn/s1600-h/97ThingsProgrammersCover&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 250px; height: 380px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihYYO5qcyCE86FwrAxT_w310ChzLHB9XDo07_pOoqhsa7Fy9rpZ2nQQBFduHUdU4Q8b2p5Xz1MrjXLt4cMeIOHSOQmczvFS-2XxS9a9iduE9N5M3D_-m5FbPK7SqYzKbGEl9xMV93Pb0Xn/s320/97ThingsProgrammersCover&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5433090829979368994&quot; /&gt;&lt;/a&gt;&lt;div&gt;A little less than a year ago I told you about &quot;&lt;a href=&quot;http://www.amazon.com/Things-Every-Software-Architect-Should/dp/059652269X&quot;&gt;97 Things Every Software Architect Should Know&lt;/a&gt;,&quot; a ground-breaking book O&#39;Reilly had just published. I was very excited about the book for two reasons. The first is that the contents were contributed by experts from around the world under the &lt;a href=&quot;http://creativecommons.org/licenses/by/3.0/&quot;&gt;Creative Commons Attribution 3.0 license&lt;/a&gt;, which means it&#39;s kind of an open source book. The second thing is that I wrote two of the 97 things chosen to be in the book. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you read &lt;a href=&quot;http://mindlikeasword.blogspot.com/2009/02/burk-in-books-97-things-every-software_24.html&quot;&gt;that post&lt;/a&gt; then you might share my feeling of deja-vu when I tell you that in a couple of weeks O&#39;Reilly will publish a new &quot;97 Things&quot; book. This one is titled &quot;&lt;a href=&quot;http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1264991955&amp;amp;sr=1-1&quot;&gt;97 Things Every Programmer Should Know&lt;/a&gt;&quot; and once again I wrote two of the 97 things appearing in the book.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I&#39;m hoping that programmers of all stripes will find the contents useful and interesting enough that it outsells the first book. If you&#39;d like to take a sneak peek at the articles, they&#39;re available at the O&#39;Reilly web site&#39;s &lt;a href=&quot;http://programmer.97things.oreilly.com/wiki/index.php/97_Things_Every_Programmer_Should_Know&quot;&gt;97 Things wiki&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you like what you find there, please consider buying the book. No, I&#39;m not suggesting you buy the book because I&#39;m looking for a big royalty check. Remember the Creative Commons License I told you about? The only &quot;payment&quot; a contributing author gets is a free copy of the book. I want to boost sales for three reasons:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;I think most developers will find it a valuable resource.&lt;/li&gt;&lt;li&gt;I think that good book sales will encourage O&#39;Reilly to keep adding books to the series&lt;/li&gt;&lt;li&gt;I&#39;ve got an idea for a 97 Things book I want to see in print.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;If you do read the articles, please leave a comment here or send me an email. I&#39;d love to hear from you.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks for your time and attention,&lt;/div&gt;&lt;div&gt;Burk Hufnagel&lt;/div&gt;</description><link>http://mindlikeasword.blogspot.com/2010/02/burk-on-books-97-things-every.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihYYO5qcyCE86FwrAxT_w310ChzLHB9XDo07_pOoqhsa7Fy9rpZ2nQQBFduHUdU4Q8b2p5Xz1MrjXLt4cMeIOHSOQmczvFS-2XxS9a9iduE9N5M3D_-m5FbPK7SqYzKbGEl9xMV93Pb0Xn/s72-c/97ThingsProgrammersCover" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-3531488806732127337</guid><pubDate>Wed, 04 Nov 2009 14:00:00 +0000</pubDate><atom:updated>2009-11-04T09:00:10.151-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">answers</category><category domain="http://www.blogger.com/atom/ns#">marsee</category><category domain="http://www.blogger.com/atom/ns#">o&#39;reilly</category><category domain="http://www.blogger.com/atom/ns#">scoop</category><title>Questions and Answers: O&#39;Reilly&#39;s got both</title><description>&lt;div&gt;As of today there&#39;s a new place to go when you have questions (or answers) about pretty much anything you think is interesting. With the tag line &quot;Clever Hacks, Creative Ideas, Innovative Solutions&quot;, &lt;a href=&quot;http://answers.oreilly.com/&quot;&gt;answers.oreilly.com&lt;/a&gt; has set an expectation that this is &lt;b&gt;the&lt;/b&gt; place to go when you need to know something that most folks don&#39;t have a clue about.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While O&#39;Reilly has earned a reputation as a great source for technical information because of their books and their magazines (&lt;a href=&quot;http://makezine.com/&quot;&gt;Make&lt;/a&gt; and &lt;a href=&quot;http://craftzine.com/&quot;&gt;Craft&lt;/a&gt;), that&#39;s not good enough for them. They&#39;ve also built an online community and are expanding it with this latest addition. One neat difference between &lt;a href=&quot;http://answers.oreilly.com/&quot;&gt;Answers&lt;/a&gt; and other Q&amp;amp;A places it that there&#39;s a section for sharing information that nobody&#39;s asked about yet. So if you know how to do something or solve a gnarly problem, you can preemptively post it there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recent entries (as of Nov 3, 2009) include information on SEO (Search Engine Optimization), file sharing between Mac OSX and Windows 7, HTML 5 and Palm&#39;s webOS, regular expressions, and Drupal. Like I said, lots of things most folks don&#39;t have a clue about.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if you&#39;ve got a tough question, know the answer to tough questions, or just want to share some of what you know without waiting to be asked, then head on over. It&#39;s free - though you do need an O&#39;Reilly account to do anything more than look around. But even that is more than worth the time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh yes, there&#39;s social aspects too. (After all Tim O&#39;Reilly is &quot;closely associated&quot; with the term &quot;Web 2.0&quot;.) You can make friends (Hi, Marsee!),  build a reputation, and even earn badges for things like posting regularly, blogging, reviewing books (&lt;a href=&quot;http://en.wikipedia.org/wiki/Huzzah&quot;&gt;Huzzah&lt;/a&gt;!) or making lots of friends there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It&#39;s still in beta, but I think you&#39;ll have a lot of fun and learn a thing or three so why not head on over now. The URL is &lt;a href=&quot;http://answers.oreilly.com/&quot;&gt;http://answers.oreilly.com&lt;/a&gt; and it&#39;s open now!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After you&#39;ve looked around there a bit, please consider coming back here and sharing your thoughts about O&#39;Reilly&#39;s new addition to their community site.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;P.S. Yes, I know there&#39;s way more links in this article than I usually use. I figured that it might make it easier for you to check out some of the things I&#39;m writing about without being too pushy. Let me know what you think and it may affect how I do things in the future. Thanks!&lt;/div&gt;</description><link>http://mindlikeasword.blogspot.com/2009/11/questions-and-answers-oreillys-got-both.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-5709007403311769063</guid><pubDate>Fri, 23 Oct 2009 13:02:00 +0000</pubDate><atom:updated>2009-10-23T09:02:00.485-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><category domain="http://www.blogger.com/atom/ns#">Scott Davis</category><category domain="http://www.blogger.com/atom/ns#">software development</category><title>Burk on Books - Groovy Recipes by Scott Davis</title><description>Almost a year ago I read &quot;Groovy Recipes&quot; and posted &lt;a href=&quot;http://java.dzone.com/reviews/groovy-recipes-greasing-wheels-0&quot;&gt;my review on DZone&lt;/a&gt; in early November. I also wrote up a posting for this blog but it never got published. The good news is that the book is still relevant and worth picking up if you&#39;re interested in getting things done in Groovy.&lt;br /&gt;&lt;br /&gt;I would like to say that I actually held off posting this note so that I could create a second wave of interest after the initial one faded, but that would be misleading so instead I&#39;ll just hope it works out that way.&lt;br /&gt;&lt;br /&gt;Burk&lt;br /&gt;&lt;br /&gt;P.S. Scott, if you&#39;re reading this, the fact that I&#39;m finally posting this mere hours before you&#39;re speaking at the No Fluff Just Stuff conference I&#39;m attending later today is a complete coincidence. Really.&lt;grin&gt;&lt;/grin&gt;</description><link>http://mindlikeasword.blogspot.com/2009/10/burk-on-books-groovy-recipes-by-scott.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-9052968515756236089</guid><pubDate>Thu, 22 Oct 2009 13:02:00 +0000</pubDate><atom:updated>2009-10-22T21:30:36.327-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">design</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">JavaFX</category><category domain="http://www.blogger.com/atom/ns#">mac</category><category domain="http://www.blogger.com/atom/ns#">macintosh</category><category domain="http://www.blogger.com/atom/ns#">software development</category><category domain="http://www.blogger.com/atom/ns#">switching</category><category domain="http://www.blogger.com/atom/ns#">user experience design</category><category domain="http://www.blogger.com/atom/ns#">web applicatons</category><title>Burk on Books - Switching to the Mac, Designing Web Interfaces, and Essential JavaFX</title><description>Its been a while, but I&#39;ve recently posted three new book reviews on DZone; &lt;a href=&quot;http://books.dzone.com/reviews/switching-mac-missing-manual&quot;&gt;Switching to the Mac&lt;/a&gt; and &lt;a href=&quot;http://java.dzone.com/reviews/designing-web-interfaces&quot;&gt;Designing Web Interfaces&lt;/a&gt;, and &lt;a href=&quot;http://java.dzone.com/reviews/essential-javafx&quot;&gt;Essential JavaFX&lt;/a&gt;.  While they cover very different topics, all of them are worth reading.&lt;br /&gt;&lt;br /&gt;Essential JavaFX is a great introduction to JavaFX. You get a good feel for working with JavaFX without having to devote too many hours to it. The only thing I didn&#39;t like is that the images are gray-scale instead of color. I know it ups the printing cost, but when you&#39;re dealing with graphical user interfaces I think having color is important.&lt;br /&gt;&lt;br /&gt;Switching to the Mac is a great book for those of us who have spent many years on Windows and finally move to a Macintosh. I bought mine almost a year ago and found that my previous training didn&#39;t help me on my Mac so I did what I often do. I went looking for a book to help me. After reading reviews of several books and leafing through a few at Borders, I decided on Switching to the Mac, and I&#39;m glad I did. It&#39;s not the kind of book I read cover to cover, but it&#39;s stuffed with useful information. If you moving like I did, I think you&#39;ll find if useful to keep the book near your Mac for a while.&lt;br /&gt;&lt;br /&gt;Designing Web Interfaces is an excellent book for anyone designing web applications. It&#39;s well written with plenty of color diagrams and screen shots (Yes!) so you can see how various interactions play out. I am a little disappointed though because there&#39;s no sample code even though the authors say they targeted the book for designers and developers. Even so, I think this is a great book for designers and a good one for developers who enjoy a challenge.&lt;br /&gt;&lt;br /&gt;That&#39;s it for today. I&#39;ve got three more reviews to write up, one book to read and review, and I think I&#39;ll be caught up.&lt;br /&gt;&lt;br /&gt;BTW, I&#39;ll be at the the No Fluff Just Stuff software symposium here in Atlanta this weekend so if you&#39;re there and want to talk about the books, or any aspect of software development, feel free to introduce yourself.&lt;br /&gt;&lt;br /&gt;One more thing before I sign off, this blog isn&#39;t intended to be a one way signal. If you want to ask a question or share a thought (preferably one that is relevant to the posting), please leave a comment.</description><link>http://mindlikeasword.blogspot.com/2009/10/burk-on-books-essential-javafx.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-5420223457625106329</guid><pubDate>Fri, 24 Apr 2009 13:00:00 +0000</pubDate><atom:updated>2009-04-24T09:00:19.396-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">andy hunt</category><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">career</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">learning</category><title>Burk on Books - Pragmatic Thinking and Learning</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi01hAWK5BaX_dwGzgm6iwTYOSlG0s8lDKlgZB7IfcL47i7ZIHQaJMgdUmei4Q9yz8bbSSVBHl2YiZ3o21uzEjdVOZk7J2vLKuYNkuPVGLQ7XPWZGi_8eDFpysUMhHCtHX0VXhsNUU7lirs/s1600-h/PragmaticThinkingAndLearning.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 142px; height: 191px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi01hAWK5BaX_dwGzgm6iwTYOSlG0s8lDKlgZB7IfcL47i7ZIHQaJMgdUmei4Q9yz8bbSSVBHl2YiZ3o21uzEjdVOZk7J2vLKuYNkuPVGLQ7XPWZGi_8eDFpysUMhHCtHX0VXhsNUU7lirs/s400/PragmaticThinkingAndLearning.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5328085809951096690&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Last year, Andy Hunt (co-author of the Pragmatic Programmer) authored a new book titled “Pragmatic Thinking and Learning: Refactor Your Wetware”, and I’d like to tell you a bit about it.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;It’s a great book. You should stop reading this blog posting and go buy a copy of the book, then sit down and read it. Now.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;OK. That was the short version, which is probably all that some of you needed to hear. The rest of this is for people who are looking for some details.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;The book is published by the Pragmatic Bookshelf, it was released on October 28th, the ISBN is 1934356050, it retails for $34.95 and is worth every penny. Still not enough?  OK, I’ve got a detailed review posted on DZone in the IT Book Zone (at &lt;a href=&quot;http://books.dzone.com/reviews/pragmatic-thinking-learning&quot;&gt;&lt;span style=&quot;text-decoration: underline ; letter-spacing: 0.0px color:#000099;&quot;&gt;http://books.dzone.com/reviews/pragmatic-thinking-learning&lt;/span&gt;&lt;/a&gt;) and you can win yourself a free copy if you read the review, post a comment, and get chosen by the Fickle Finger of Fate.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;If you’re still reading this, I’m guessing that you’re looking for some insight that’s not in my other review. OK, here goes: The secret to getting the most out of the book is that you can’t just read it. Andy’s put exercises in the book and you need to do them, and do them the way it’s described, to get the most out of it. This isn’t much of a secret because Andy tells you the same thing early on in the book, and in a podcast (“Andy Hunt on Pragmatic Wetware&quot;) which is available on the PragProg.com website or from ITunes. The reason I bring this point up is that it is very easy to know this and somehow still not do it.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;The other secret is that reading the book (and doing the exercises) is still not enough. Just like Neal Ford’s book “The Productive Programmer”, you need to actually practice the things you read about. It’s not enough to think, “Cool! I love that idea!” Until you take action, and begin practicing what you’ve read about, you won’t really benefit from knowing it.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;As someone more profound than I once said, “Those who do not read are no better off than those who cannot” or, more succinctly, “To know and not do is not to know.”&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Thus endeth the day&#39;s lesson.&lt;/span&gt;&lt;/p&gt;</description><link>http://mindlikeasword.blogspot.com/2009/04/burk-on-books-pragmatic-thinking-and.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi01hAWK5BaX_dwGzgm6iwTYOSlG0s8lDKlgZB7IfcL47i7ZIHQaJMgdUmei4Q9yz8bbSSVBHl2YiZ3o21uzEjdVOZk7J2vLKuYNkuPVGLQ7XPWZGi_8eDFpysUMhHCtHX0VXhsNUU7lirs/s72-c/PragmaticThinkingAndLearning.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-5316298221680145968</guid><pubDate>Tue, 31 Mar 2009 13:00:00 +0000</pubDate><atom:updated>2009-03-31T09:00:51.804-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">api design</category><category domain="http://www.blogger.com/atom/ns#">architecture</category><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">learning</category><title>Burk on Books - Practical API Design</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjab993HVaP_2-RUlbzY0W80P5tloTSdBuULj6GcvnP8QW7RSJTJZW9tr3c08W2CEIHbl5GfZmM1ON62e_CKreOB6I2BzLg15W_QScpzZaO6lUSKjgn9cXJJDbRhN2kyAwjhAxIxG5vWWSb/s1600-h/PracticalAPIDesign.gif&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5318454870288921778&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 125px; CURSOR: hand; HEIGHT: 168px&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjab993HVaP_2-RUlbzY0W80P5tloTSdBuULj6GcvnP8QW7RSJTJZW9tr3c08W2CEIHbl5GfZmM1ON62e_CKreOB6I2BzLg15W_QScpzZaO6lUSKjgn9cXJJDbRhN2kyAwjhAxIxG5vWWSb/s320/PracticalAPIDesign.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style=&quot;MARGIN: 0px 0px 5px; FONT: 18px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;Practical API Design: Confessions of a Java Framework Architect&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MIN-HEIGHT: 14px; MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;Author: Jaroslav Tulach&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;Published by: Apress on July, 2008&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px 0px 5px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;ISBN: 1430209739&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MIN-HEIGHT: 14px; MARGIN: 0px 0px 5px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;If you write code then  you are designing APIs and this book is for you.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MIN-HEIGHT: 14px; MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;Jaroslav Tulach, is the founder and initial architect of NetBeans and in this book he shares with us the lessons he learned during ten years of designing APIs that are used by developers around the world.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MIN-HEIGHT: 14px; MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px 0px 5px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;If others use your APIs, then the lessons found here are worth far more than the price of the book and the time it takes to read and digest it. Do yourself, and your users, a favor and start studying it today. And if others don’t use your APIs, then it might be that you need this book even more. &lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MIN-HEIGHT: 14px; MARGIN: 0px 0px 5px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px 0px 5px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;“Practical API Design” is divided into three parts: In part one, Jaroslav describes the theories underlying his approach to API design and his reasons for writing “another design book.” This section is reasonably brief and introduces the main concepts underpinning the rest of the book. In part two Jaroslav draws on his decade of experience and expounds on what works and what to avoid when designing frameworks and APIs for public consumption. Part three is where the rubber meets the road and Jaroslav shows how the theories and ideas from part one can be applied in daily life to achieve the practical application of the rules as described in part two.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MIN-HEIGHT: 14px; MARGIN: 0px 0px 5px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;The information in this book is relevant to every developer, though I will admit that some probably need it more than others. If you write code, you’re creating APIs - even if you’re the only one using them. If you’re creating APIs then knowing how to create and evolve those APIs benefits you and anyone who depends on those APIs to get things done.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MIN-HEIGHT: 14px; MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;For me, the bottom line on this book is that anyone who writes code winds up creating APIs, so it makes sense to learn how to create, evolve, and maintain them without breaking any code that already uses them.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MIN-HEIGHT: 14px; MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;There are some nice resources out there for anyone interested in learning more about this book. Here are just a few: &lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;Jaroslav has created a website at “&lt;a href=&quot;http://wiki.apidesign.org/wiki/Main_Page&quot;&gt;&lt;span style=&quot;FONT: 12px Helvetica; TEXT-DECORATION: underline&quot;&gt;http://wiki.apidesign.org/wiki/Main_Page&lt;/span&gt;&lt;/a&gt;” with the intent of building a community around the book and the ideas he’s expressed in it.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;Download chapter 1 from Apress at “&lt;a href=&quot;http://www.apress.com/book/view/9781430209737&quot;&gt;&lt;span style=&quot;FONT: 12px Helvetica; TEXT-DECORATION: underline&quot;&gt;http://www.apress.com/book/view/9781430209737&lt;/span&gt;&lt;/a&gt;”.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;Check out InfoQ&#39;s interview with Jaroslav Tulach at “&lt;a href=&quot;http://www.infoq.com/articles/tulach-practical-api-design&quot;&gt;&lt;span style=&quot;FONT: 12px Helvetica; TEXT-DECORATION: underline&quot;&gt;http://www.infoq.com/articles/tulach-practical-api-design&lt;/span&gt;&lt;/a&gt;”. In it there&#39;s a link to download chapter 3.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MIN-HEIGHT: 14px; MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;span style=&quot;LETTER-SPACING: 0px&quot;&gt;If you’re interested in learning more about the book, I have a more detailed review on DZone (and I’m told they may be giving away a copy) at &lt;a href=&quot;http://java.dzone.com/reviews/clean-code-handbook-agile&quot;&gt;&lt;span style=&quot;FONT: 12px Helvetica; TEXT-DECORATION: underline&quot;&gt;http://books.dzone.com/reviews/practical-api-design&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;Happy reading!&lt;/p&gt;&lt;p style=&quot;MARGIN: 0px; FONT: 12px Helvetica&quot;&gt;Burk Hufnagel&lt;/p&gt;</description><link>http://mindlikeasword.blogspot.com/2009/03/burk-on-books-practical-api-design.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjab993HVaP_2-RUlbzY0W80P5tloTSdBuULj6GcvnP8QW7RSJTJZW9tr3c08W2CEIHbl5GfZmM1ON62e_CKreOB6I2BzLg15W_QScpzZaO6lUSKjgn9cXJJDbRhN2kyAwjhAxIxG5vWWSb/s72-c/PracticalAPIDesign.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-2950613723006598409</guid><pubDate>Tue, 17 Mar 2009 13:00:00 +0000</pubDate><atom:updated>2009-03-17T13:35:38.192-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IASA</category><category domain="http://www.blogger.com/atom/ns#">ITARC 2009</category><category domain="http://www.blogger.com/atom/ns#">software architect</category><category domain="http://www.blogger.com/atom/ns#">speaking event</category><category domain="http://www.blogger.com/atom/ns#">training</category><title>ITARC 20009 was a great success!</title><description>The Atlanta, GA edition of ITARC 2009 was held a couple of weeks ago and, based on the feedback I got from attendees and my own experience, it was a great success. Over 150 architects and people interested in becoming an architect spent two days in a beautiful environment (Thank you, IBM!), with good food, and learning from each other&#39;s experiences as well.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But the best thing was the wide variety of talks available, and the quality of the speakers (including Grady Booch via second life) who gave them. As a member of the &lt;a href=&quot;http://iasahome.org/web/atlanta&quot;&gt;chapter hosting the conference&lt;/a&gt;, and &lt;a href=&quot;http://mindlikeasword.blogspot.com/2009/02/im-speaking-at-itarc-2009.html&quot;&gt;one of the speakers&lt;/a&gt;, I may be biased. But, I was able to attend a number of the talks and not only did I learn a good bit, but I found the speakers to interesting, well informed, and worth listening to.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The bottom line is that this year&#39;s ITARC was great and that you should make every effort to attend next year&#39;s Atlanta ITARC. For those of you not familiar with it, ITARC is short for &quot;IT Architect Regional Conference&quot;; so there may be one coming to your area later this year. I do know there&#39;s one scheduled for New York in late September, and you can always check the &lt;a href=&quot;http://iasahome.org/web/home/home&quot;&gt;IASA home page &lt;/a&gt;for more information.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For any of you wondering about my talk, I&#39;d say it went very well. The room was set up for 24 people but another eight or nine showed up and wound up standing in the back, so the attendance was excellent. During the talk itself, people looked interested and asked some questions, and the feedback I received from IASA indicted that the attendees enjoyed it and thought it was well done.&lt;/div&gt;&lt;/div&gt;</description><link>http://mindlikeasword.blogspot.com/2009/03/itarc-20009-was-great-success.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-2058324097446350332</guid><pubDate>Mon, 16 Mar 2009 23:50:00 +0000</pubDate><atom:updated>2009-03-16T20:59:06.934-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">java puzzler</category><category domain="http://www.blogger.com/atom/ns#">learning</category><category domain="http://www.blogger.com/atom/ns#">tricky code</category><title>Mini Java puzzler - Zapped by static</title><description>&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;I was modifying some legacy code (defined as code with no automated tests) and found something unexpected when I tried to use it. The original code was rather complicated (possibly because there were no tests), but this simplified version has the same odd behavior:&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;public class Test {&lt;br /&gt;    static {&lt;br /&gt;        initName();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    static String name = &quot;Sue&quot;;&lt;br /&gt;    static Test instance = new Test();&lt;br /&gt;&lt;br /&gt;    public static String getName() {&lt;br /&gt;        return name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static void initName() {&lt;br /&gt;        name = &quot;Bond, James Bond&quot;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        System.out.println(&quot;My name is &quot; +&lt;br /&gt;                Test.getName() + &quot;.&quot;);&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;So we have a class with one static variable, three static methods and one static initializer. Other than the static initializer, it looks like a pretty simple class that&#39;s easy to understand doesn’t it?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;In case you’re not familiar with static initializers, let me paraphrase a bit of Sun’s Java Tutorial: &lt;i&gt;&quot;A static initialization block is a normal block of code enclosed in braces, { }, and preceded by the static keyword. They can appear anywhere in the class body, and the Java runtime guarantees they are called in the order in which they appear in the source code.&quot; &lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;That sounds kind of cool, but what’s the point? Why would you use one? Well, a static initializer executes when the class is &lt;/span&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;loaded&lt;/span&gt;&lt;/i&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt; into memory and it is normally used to do some kind of one-time processing for the class. In this case, the initializer calls the initName() method when the Test class gets loaded into memory and before it’s main method executes.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;So, getting back to the puzzle, the question is this: What does the above code do when you run the class?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;Here are the possible answers:&lt;br /&gt;   A) It prints “My name is Sue.”&lt;br /&gt;   B) It prints “My name is Bond, James Bond.”&lt;br /&gt;   C) Nothing, because it doesn’t compile.&lt;br /&gt;   D) None of the above.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;I recommend taking some time to figure out your own answer before reading any further. You’ll get more out of this is you do. Don’t worry, I’ll don’t mind the wait.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;Ready to look at the answers? Good. First things first. Answer C, &quot;Nothing, because it doesn&#39;t compile&quot; is not correct. I included it just so I can tell you that I don’t like that kind of answer on a puzzle, or Java certification exam for that matter. Any IDE worth using will tell you if the code will compile or not. While it may have been a useful skill years a go, when our only tools were stone knives and bearskins, we’ve had better tools for so long now that it seems unreasonable to ask a question where “it won’t compile” is the right answer. OK, back to the puzzle.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;What about answer B? Well, if you’ve attended one of Josh Bloch’s Java Puzzlers talks (or read my earlier &lt;/span&gt;&lt;a href=&quot;http://mindlikeasword.blogspot.com/2009/02/i-was-working-on-project-and-needed-to.html&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;Mini Puzzler&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;), you know the whole point of this is to show you code that looks simple but behaves strangely. So you probably didn’t pick answer B - even though it looks like that’s exactly what should happen. And you would be right in doing so. The code doesn’t print  “My name is Bond, James Bond.”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;What about the ever popular “None of the above.” Sorry, not this time. Answer D is not correct either.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;By the process of elimination, the correct answer must be A. It prints “My name is Sue.”  and, as it turns out, that is just what does happen. Don&#39;t trust me on this, run it yourself - then come back for the explanation.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;When I ran the original test code, I didn’t believe the results. It didn’t make any sense so I ran it in the debugger. If you do the same, you can see that the initName() method &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;does&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt; get called before the main() method, and that when initName() finishes, the value of “name” &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;is&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt; “Bond, James Bond” - just as we expected.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;So what’s going on? How does “name” get set to “Sue”? Well, to mis-quote the spirit of Obi-Wan, “Use the source, Luke.”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;In looking at the source, you can see that right after the static initializer, we’re declaring and initializing the “name” variable. Which seems odd because the initName() method already set “name” to a value - so it must already exist, right?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;Sort of. The compiler sets aside space for the variable and includes code to initialize it but, because “name” is a static variable, its initialization happens when the class is loaded into memory instead of when the class constructor is called. It also appears that, like a static initializer, static variable initialization also happens “in the order in which it appears in the source code.” So after the static initializer is called, the code that initializes “name” to “Sue” executes and overwrites the value we expected to see. Believe it, or not.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;So, how do we fix it? Simple. Swap the two lines so the variable is declared and initialized before the static initializer block gets called. Actually, there’s an even better solution for this kind of situation. Since the static initializer is only determining the value for one variable, have the line that declares the variable call a private static method that returns the variable’s initial value. Doing so would’ve prevented this problem in the first place, and ensures that nobody can accidently re-order the lines and start wondering why they’re seeing a line from a Johnny Cash song instead of something Sean Connery ought to be saying.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;If you’ve got any feedback on this please post a comment.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:medium;&quot;&gt;Thanks for reading,&lt;br /&gt;Burk&lt;/span&gt;&lt;/p&gt;</description><link>http://mindlikeasword.blogspot.com/2009/03/mini-java-puzzler-zapped-by-static_16.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-6572098576595085099</guid><pubDate>Sun, 15 Mar 2009 16:06:00 +0000</pubDate><atom:updated>2009-03-16T21:00:00.622-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">AJUG</category><category domain="http://www.blogger.com/atom/ns#">DevNexus</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">learning</category><category domain="http://www.blogger.com/atom/ns#">training</category><title>DevNexus 2009 review</title><description>&lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;DevNexus is the new name for the Atlanta Java DevCon conference, which is organized and hosted by volunteers from the &lt;a href=&quot;http://www.ajug.org/&quot;&gt;&lt;span style=&quot;text-decoration: underline ; letter-spacing: 0.0px color:#000099;&quot;&gt;Atlanta Java User Group&lt;/span&gt;&lt;/a&gt; (AJUG). The conference was recently re-branded as DevNexus because it&#39;s not limited to Java anymore. Don&#39;t get me wrong, Java is still a major focus, but there are other languages (some of which run on the JVM) and technologies that AJUG members use and we wanted to include those too.  &lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; min-height: 19.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;DevNexus has expanded to two days this year and may be even bigger next year. Not only that, but it went from two tracks to three, so there were even more tempting talks to choose from.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; min-height: 19.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Speakers ranged from Neal Ford (Meme-Wrangler at ThoughtWorks, well known NFJS speaker, and author of The Productive Programmer) to Emmanuel Bernard (lead developer at JBoss, and spec lead for JSR  303: Bean Validation), to Peter Higgins (project lead for the Dojo toolkit) and Doris Chen and Justin Bolter (Technology Evangelists from Sun); and the topics were just as varied.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; min-height: 19.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;After some introductory remarks from &lt;a href=&quot;http://burrsutter.blogspot.com/&quot;&gt;&lt;span style=&quot;text-decoration: underline ; letter-spacing: 0.0px color:#000099;&quot;&gt;Burr Sutter&lt;/span&gt;&lt;/a&gt; (Java Champion and AJUG top-dog), Neal Ford got the ball rolling Tuesday with his keynote &quot;On the lam from the Furniture Police,&quot; which was an excellent look at how to be productive in a corporate environment that seems designed to prevent it. Neal&#39;s excellent keynote was followed by four hours of technical break out session on topics like Test Driven Design (not Development), browser optimization (aka getting around browser restrictions), grid computing, and how to create and use RESTful web-services with Java. The official day ended with Emmanuel Bernard&#39;s keynote on &quot;Scaling Hibernate&quot; which also gave us a look at some of the new features Hibernate supports, like &lt;a href=&quot;http://en.wikipedia.org/wiki/Partition_(database)&quot;&gt;&lt;span style=&quot;text-decoration: underline ; letter-spacing: 0.0px color:#000099;&quot;&gt;sharding&lt;/span&gt;&lt;/a&gt; and full text search capability. After that, there was a &quot;cocktail reception&quot; for people who preferred a friendly chat (sometimes called networking) with other developers and architects over sitting in rush-hour traffic.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; min-height: 19.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Wednesday got off to an interesting start. Doris Chen and Justin Bolter gave their keynote speech titled &quot;JavaFX: The Platform for Rich Internet Applications&quot; which, not surprisingly, promoted JavaFX as the best solution for Java developers who want to build RIAs. This was followed by Yakov Fain&#39;s keynote, &quot;Picking the right technology for Rich Internet Applications&quot; which compared Adobe&#39;s Flex, Microsoft&#39;s Silverlight, and JavaFX. During the speech he stated his belief that JavaFX might be a contender in 2010, but not today. I found this a little disconcerting, having just heard about what JavaFX can do. While I&#39;m not sure I agree with him, I do think Yakov made some good points, though things may change with the release of JavaFX 2.0 slated for later this year. In case you&#39;re interested, his recommendation for developers that need to start an RIA project today was to use Flex.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; min-height: 19.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;After the clash of the RIA titans, there were three hours of breakouts mostly geared toward RIA or web development; topics included JavaFX, Java and Flex, developing modular Web applications using Spring 3.0, and GWT.  There were also some server-side topics like a JEE 6 preview, a look at Spring 3.0, JSecurity also known as Apache&#39;s project &#39;Ki&#39;, anda look at JVM-based dynamic languages in the enterprise.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; min-height: 19.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;The conference ended with a rap-session hosted by Burr Sutter, AJUG&#39;s main leader and Java Champion, asking for ways to improve the conference next year and how we can get the word out about it so more people will attend. There were several good suggestions, and you&#39;ve just read part of my solution to the question.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; min-height: 19.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;DevNexus was a great conference and well worth the cost (just $185 for the whole thing) so start planning to attend next year; you&#39;ll be happy you did. BTW, the price is set so that the costs of the conference are just about covered; this is not a &#39;for profit&#39; venture, it&#39;s part of the way that AJUG works to build the Atlanta Java community. If you want to get involved, start attending the &lt;a href=&quot;http://www.ajug.org/confluence/display/AJUG/Meetings&quot;&gt;&lt;span style=&quot;text-decoration: underline ; letter-spacing: 0.0px color:#000099;&quot;&gt;monthly meetings&lt;/span&gt;&lt;/a&gt; (they&#39;re free) and see what you&#39;ve been missing out on.&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; min-height: 19.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;If you were there, or wished you were, and have something you&#39;d like to share then please leave a comment.  &lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; min-height: 19.0px&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Thanks for your attention,&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia&quot;&gt;&lt;span style=&quot;letter-spacing: 0.0px&quot;&gt;Burk&lt;/span&gt;&lt;/p&gt;</description><link>http://mindlikeasword.blogspot.com/2009/03/devnexus-2009-review.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-1900702476904650677</guid><pubDate>Mon, 02 Mar 2009 14:00:00 +0000</pubDate><atom:updated>2009-03-02T12:56:22.567-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">97 things</category><category domain="http://www.blogger.com/atom/ns#">architecture</category><category domain="http://www.blogger.com/atom/ns#">author</category><category domain="http://www.blogger.com/atom/ns#">learning</category><title>97 Things Every Software Architect Should Know hits #1 at Amazon</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;hhttp://www.amazon.com/Things-Every-Software-Architect-Should/dp/059652269X&quot;&gt;&lt;img id=&quot;Link to amazon.com for the 97 Things Every Software Architect Should Know&quot; style=&quot;FLOAT: right; MARGIN: 0pt 0pt 10px 10px; WIDTH: 180px; HEIGHT: 270px&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji56Pd7_krJpE3qgaP2zWR9QDiKOoONZ6F31_WjM1eYOYofbESNd-O2TLbkb4ZWUsjEoL1Lyh4_4AevCHKkmDYTuCDhKYyfwwMNB0iQl0aJjTjEqWs_l9a6hngHiNRHtOFXW8W_OEH_zoY/s400/97_Things_Cover.gif&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;A few days ago, I shared with you my joy about a new book titled &quot;&lt;a href=&quot;http://www.amazon.com/Things-Every-Software-Architect-Should/dp/059652269X&quot;&gt;97 Things Every Software Architect Should Know&lt;/a&gt;&quot; which I co-authored with 52 other architects .&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even though it&#39;s only been available for a couple of weeks, the book is doing very well. In fact, Amazon&#39;s sales ranking currently shows it at #7 in Software Development, and #1 in Design &amp;amp; Architecture. It&#39;s also #1 in Surveying &amp;amp; Photogrammetry, but I think that&#39;s because the tags include the word &quot;architect&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(Note: If you click on the slightly blurry image below, the link will show you the actual image from Amazon.com in all its glory.)&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTyrIsQJGPSD2oGiBRD_Q4Ds6GdYOVcp9eKloB7VED8lDtV7yOKiiUP80GO50leGx2AwMGcsPbn14VQ2mH2a_RB3zwE2Bh7h-slbdYYowWDz7iFn35bMhHEGSFhVTyLgt6ZUcuQsBZm2mQ/s1600-h/97ThingNumber1AtAmazon.jpg&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5307904588756828610&quot; style=&quot;WIDTH: 320px; CURSOR: pointer; HEIGHT: 121px&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTyrIsQJGPSD2oGiBRD_Q4Ds6GdYOVcp9eKloB7VED8lDtV7yOKiiUP80GO50leGx2AwMGcsPbn14VQ2mH2a_RB3zwE2Bh7h-slbdYYowWDz7iFn35bMhHEGSFhVTyLgt6ZUcuQsBZm2mQ/s320/97ThingNumber1AtAmazon.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</description><link>http://mindlikeasword.blogspot.com/2009/03/97-things-every-software-architect.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji56Pd7_krJpE3qgaP2zWR9QDiKOoONZ6F31_WjM1eYOYofbESNd-O2TLbkb4ZWUsjEoL1Lyh4_4AevCHKkmDYTuCDhKYyfwwMNB0iQl0aJjTjEqWs_l9a6hngHiNRHtOFXW8W_OEH_zoY/s72-c/97_Things_Cover.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-8277233154966440775</guid><pubDate>Wed, 25 Feb 2009 01:36:00 +0000</pubDate><atom:updated>2010-01-31T21:04:31.136-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">97 things</category><category domain="http://www.blogger.com/atom/ns#">author</category><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">software architect</category><title>Burk In Books: 97 Things Every Software Architect Should Know</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji56Pd7_krJpE3qgaP2zWR9QDiKOoONZ6F31_WjM1eYOYofbESNd-O2TLbkb4ZWUsjEoL1Lyh4_4AevCHKkmDYTuCDhKYyfwwMNB0iQl0aJjTjEqWs_l9a6hngHiNRHtOFXW8W_OEH_zoY/s1600-h/97_Things_Cover.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 180px; height: 270px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji56Pd7_krJpE3qgaP2zWR9QDiKOoONZ6F31_WjM1eYOYofbESNd-O2TLbkb4ZWUsjEoL1Lyh4_4AevCHKkmDYTuCDhKYyfwwMNB0iQl0aJjTjEqWs_l9a6hngHiNRHtOFXW8W_OEH_zoY/s400/97_Things_Cover.gif&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5306544025754931794&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:Times;&quot;&gt;&lt;div style=&quot;border-width: 0px; margin: 0px; padding: 3px; width: auto; font-family: Georgia,serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 100%; line-height: normal; font-size-adjust: none; font-stretch: normal; text-align: left;&quot;&gt;&lt;br /&gt;&lt;div&gt;There&#39;s a new book available from O&#39;Reilly titled &quot;&lt;a href=&quot;http://www.amazon.com/Things-Every-Software-Architect-Should/dp/059652269X&quot;&gt;97 Things Every Software Architect Should Know: Collective Wisdom from the Experts&lt;/a&gt;&quot; and though I&#39;m very excited about it, I won&#39;t be reviewing it here.  Actually, I&#39;d like to post a review, but you probably would not trust it because I&#39;m one of the &quot;experts&quot; who&#39;s &quot;wisdom&quot; was collected for the book.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The book is primarily a series of short articles on various topics that software architects deal with in the real world. All of the articles were contributed under the Creative Commons, Attribution 3, license - which means it&#39;s essentially an open source book. In fact, the 97 articles in the book are available online for free at the &lt;a href=&quot;http://softarch.97things.oreilly.com/wiki/index.php/97_Things_Every_Software_Architect_Should_Know_-_The_Book&quot;&gt;97 Things&lt;/a&gt; web site. O&#39;Reilly also has a &lt;a href=&quot;http://oreilly.com/catalog/9780596522698/preview.html&quot;&gt;preview&lt;/a&gt; available on their website so you can see the cover and what the articles look like in the actual book - unfortunately, my articles are toward the end of the book and the preview stops much earlier.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I recommend going to the web site and reading an article or three. If you like it consider buying a copy of the book. I say that not because I get royalties - I don&#39;t. Nor did I get paid for the initial writing. I&#39;m suggesting you buy one or more copies because I want the book to succeed so O&#39;Reilly will be encouraged to do more books in the same style; collecting contributions from community members who have something interesting to say and making them available.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The whole process of trying to come up with useful bits of information and explain them in an interesting way - before somebody else beat you to it was fun and challenging and I&#39;d like to do it again. So please go take a look then come back and let me know what you think of it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;{Note to self: Come up with a good sign off line.} &lt;- Yes I meant to leave that there. It&#39;s motivational. Burk&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;</description><link>http://mindlikeasword.blogspot.com/2009/02/burk-in-books-97-things-every-software_24.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji56Pd7_krJpE3qgaP2zWR9QDiKOoONZ6F31_WjM1eYOYofbESNd-O2TLbkb4ZWUsjEoL1Lyh4_4AevCHKkmDYTuCDhKYyfwwMNB0iQl0aJjTjEqWs_l9a6hngHiNRHtOFXW8W_OEH_zoY/s72-c/97_Things_Cover.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-7980286207941378992</guid><pubDate>Tue, 24 Feb 2009 14:24:00 +0000</pubDate><atom:updated>2009-02-24T20:47:48.676-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">tips</category><category domain="http://www.blogger.com/atom/ns#">Windows XP slow</category><title>Windows XP running slower than usual</title><description>If you&#39;ve noticed that your &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;XP&lt;/span&gt; box isn&#39;t as perky as it usually is, this post may be just what you need.&lt;br /&gt;&lt;br /&gt;This morning I was running a build that normally takes about seven minutes, but when I checked on it - expecting to see everything had compiled properly - I found it had hardly begun. What the...? So I pulled up the Windows Task Manager, I saw that instead of using 20 to 50% of the CPU, the java.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;exe&lt;/span&gt; (we use ant so it shows up as java.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;exe&lt;/span&gt; and not &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;javac&lt;/span&gt;.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;exe&lt;/span&gt;) process was putting along at single digits with an occasional sprint up to 16%.&lt;br /&gt;&lt;br /&gt;Looking at the list of running Processes, I noticed a few I didn&#39;t recognize. Since this is a company box, I wasn&#39;t too surprised but I figured I&#39;d do a little research on what was out there. As it turns out, I hit a homer with the first thing I looked up - a little &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;beastie&lt;/span&gt; named &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;cidaemon&lt;/span&gt;.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;exe&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Turns out it&#39;s used by an Indexing service from our friends at Microsoft and it had somehow gotten turned on. When I Googled the name I found &lt;a href=&quot;http://support.microsoft.com/kb/899869&quot;&gt;this page&lt;/a&gt; on Microsoft&#39;s Help and Support site which told me how to turn it off. I followed the instructions and suddenly java.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;exe&lt;/span&gt; was back to it&#39;s normal (relatively) speedy self.&lt;br /&gt;&lt;br /&gt;If you&#39;re seeing a similar problem on your &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;XP&lt;/span&gt; box, bring up the Task Manager, click on the Processes tab and look for something called &quot;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;cidaemon&lt;/span&gt;.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;exe&lt;/span&gt;&quot; under the Image Name column. Note: If the items aren&#39;t in alphabetical order you can click on the Image Names label and they will be.&lt;br /&gt;&lt;br /&gt;If &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;cidaemon&lt;/span&gt;.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;exe&lt;/span&gt; is out there don&#39;t just click the End Process button to kill it, or the next time you reboot it will be back. Instead follow &lt;a href=&quot;http://support.microsoft.com/kb/899869&quot;&gt;these instructions&lt;/a&gt; from Microsoft and you&#39;ll be set.&lt;br /&gt;&lt;br /&gt;That&#39;s all for now, I&#39;ve got some code to write.</description><link>http://mindlikeasword.blogspot.com/2009/02/windows-xp-running-slower-than-usual.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-328286552514021192</guid><pubDate>Fri, 13 Feb 2009 13:00:00 +0000</pubDate><atom:updated>2009-02-13T08:00:01.562-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">architecture</category><category domain="http://www.blogger.com/atom/ns#">IASA</category><category domain="http://www.blogger.com/atom/ns#">ITARC 2009</category><category domain="http://www.blogger.com/atom/ns#">speaking event</category><title>I&#39;m speaking at ITARC 2009!</title><description>Just letting you know that I am speaking at this year&#39;s &lt;a href=&quot;http://www.iasahome.org/web/itarc/2009/atlanta&quot;&gt;ITARC 2009&lt;/a&gt; in Atlanta, GA which is a software conference put on by the International Association of Software Architects also known as IASA. For more information about the IASA, take a look at their &lt;a href=&quot;http://www.iasahome.org/web/home/home&quot;&gt;website&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;I&#39;ll be speaking about the importance of User Experience design, why we, as architects, need to be familiar with it, and how to improve the user experience of the software we design. The talk itself is scheduled for Friday, February 27th from 11:20 - 12:20 and the title is &quot;The Layperson&#39;s Guilde to Building Better User Experiences. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you&#39;d like to learn more, take a look at the &lt;a href=&quot;http://www.iasahome.org/web/itarc/115&quot;&gt;agenda&lt;/a&gt;. Or, better yet, just &lt;a href=&quot;http://www.regonline.com/Checkin.asp?EventId=671757&quot;&gt;register&lt;/a&gt; for the conference and experience it for yourself!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 138px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkncQ_Ka5Vf8igJFppBt9ShqjB9cAr6AAcmblRz6y3Gfa9Qqz1NJ9J3C2_23KhEgKevCeRCqhgTXxFTpFZNb_Lmt3DxS7pmYo5samg0lg-rNS2y1R6OmvxUrFr1EsGm_1Fr0nrBS3WUUPO/s320/speaker+email+signature.png&quot; border=&quot;0&quot; alt=&quot;http://www.iasahome.org/web/itarc/116#BurkHufnagel&quot; id=&quot;BLOGGER_PHOTO_ID_5302085273349765666&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://mindlikeasword.blogspot.com/2009/02/im-speaking-at-itarc-2009.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkncQ_Ka5Vf8igJFppBt9ShqjB9cAr6AAcmblRz6y3Gfa9Qqz1NJ9J3C2_23KhEgKevCeRCqhgTXxFTpFZNb_Lmt3DxS7pmYo5samg0lg-rNS2y1R6OmvxUrFr1EsGm_1Fr0nrBS3WUUPO/s72-c/speaker+email+signature.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-4024068782997585804</guid><pubDate>Thu, 12 Feb 2009 17:47:00 +0000</pubDate><atom:updated>2009-03-16T20:29:30.962-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">java doc</category><category domain="http://www.blogger.com/atom/ns#">java puzzler</category><category domain="http://www.blogger.com/atom/ns#">NullPointerException</category><category domain="http://www.blogger.com/atom/ns#">tricky code</category><title>Mini Java Puzzler</title><description>&lt;p&gt;I was working on a project and needed to get a Long value from a String. I know the Long class (like the other wrapper classes for primitives) has static methods that do just the thing , so I started typing in my IDE and trusted that I’d find one that worked. As it turns out there are several methods that do similar conversions. Here’s a list of the candidates:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt; Long.decode(String nm)&lt;br /&gt; Long.getLong(String nm)&lt;br /&gt; Long.parseLong(String nm)&lt;br /&gt; Long.valueOf(String nm)&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, given that each of these takes a String and returns a Long, what does the following code return? (Notice that the getLongValue() method returns a primitive long:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;    public long getLongValue() {&lt;br /&gt;      Long value = Long.getLong(&quot;23&quot;);&lt;br /&gt;      return value.longValue();&lt;br /&gt;  }&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Here’s the list of possible answers:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt; A) 23L&lt;br /&gt; B) 0L (zero)&lt;br /&gt; C) It depends.&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Before you continue reading, what do you think the right answer is… OK, that’s enough thinking. Let’s take a look at the possible answers and see what seems likely.&lt;/p&gt;&lt;p&gt;Now it seems reasonable that Long’s getLong() method should return the value of the String as a Long, so answer ‘A’ looks pretty good. Then again, if it were that easy why would I bother posting this. Answer ‘B’ doesn’t seem very reasonable - unless getLong() isn’t really converting the value of the String. So that leaves answer ‘C’ as the primary suspect. If you’re familiar with Josh Bloch’s Java Puzzler talks from JavaOne, you’ll probably go with ‘C’ because it is kind of vague and that makes it a safe bet.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;And you’d be right. The correct answer is ‘C’.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It turns out that Long.getLong() doesn’t try to convert the value of the passed in String directly. It looks for a System property with that name, retrieves the value associated with it, and converts that. So what the getLongValue() method returns depends on the value of the System property “23″. So, what if there is no System property “23″? In that case, the method throws a null pointer exception because Long.getLong() will return a null. Ouch!&lt;/p&gt;&lt;p&gt;I found this the hard way. I needed to convert a String and picked a likely method from the list provided by my IDE. I was greatly surprised when my unit test failed, so I looked up the JavaDoc on it and realized my mistake.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There are a few morals to this story:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;   Unit tests are your friends.&lt;br /&gt; Use the JavaDoc, and make sure you write some&lt;br /&gt;    for people using your code.&lt;br /&gt; Hurrying can cause unexpected delays; but those&lt;br /&gt;    can become fodder for a blog post. &lt;grin&gt;&lt;/grin&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Until next time, I leave you with the traditional Java Puzzler farewell,&lt;br /&gt;“Don’t code like my brother.”&lt;/p&gt;</description><link>http://mindlikeasword.blogspot.com/2009/02/i-was-working-on-project-and-needed-to.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-3860205002256864601</guid><pubDate>Sun, 18 Jan 2009 18:33:00 +0000</pubDate><atom:updated>2009-01-18T13:56:51.816-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">apple</category><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">product design</category><category domain="http://www.blogger.com/atom/ns#">steve jobs</category><category domain="http://www.blogger.com/atom/ns#">user experience design</category><title>Burk on Books: Inside Steve&#39;s Brain</title><description>&lt;font style=&quot;font-weight:bold;&quot;&gt;Inside Steve’s Brain&lt;/font&gt; by Leander Kahney&lt;br /&gt;Published by Portfolio (the Penguin Group) in April 2008&lt;br /&gt;ISBN: 591841984&lt;br /&gt;&lt;br /&gt;“Inside Steve’s Brain” by Leander Kahney is a nice little read (7.2 x 5.4 inches and under 300 pages) that is both entertaining and educational. The Steve in the title is, of course, Steve Jobs and the book provides a look into how he thinks about things like leadership, user experience, product design, and teamwork.&lt;br /&gt;&lt;br /&gt;The introduction describes parts of Jobs’ career and private life.  The next six chapters focus on his personality traits and how they impact the way he (and Apple) works. The last two chapters describe how it all comes together and enables Apple to do things other companies seem to find difficult to emulate.&lt;br /&gt;&lt;br /&gt;Each chapter ends with a list of “Lessons from Steve” and while we may not have the ability to follow all of them ( “Partner only with A-players and fire bozos” – who wouldn’t love to do this!) they are still worth remembering. The book includes a case study of how it all came together with the iPod, and ends with a look at why Jobs (and by extension, Apple) keeps producing closed systems (think iPod, or Mac) while the rest of the industry produces open systems that allow the user to plug in third party hardware. While this is controversial, it does make sense from a certain point of view; doing so allows Apple a tighter integration between the hardware and software, which means a more pleasant user experience with both.&lt;br /&gt;&lt;br /&gt;The book is interesting and thought-provoking. Whether or not you are a fan of Steve Jobs and Apple, you must admire the loyalty of their customers base; they must be doing something right. Any of us should be thrilled if our customers felt the same about us. So maybe it’s worth spending a little time exploring the territory “Inside Steve’s Brain.”&lt;br /&gt;&lt;br /&gt;&lt;font style=&quot;font-weight:bold;&quot;&gt;P.S.&lt;/font&gt; You an go to a page on the book&#39;s website (&lt;a href=&quot;http://insidestevesbrain.com/thebook.html&quot;&gt;http://insidestevesbrain.com/thebook.html&lt;/a&gt;) and see a three minute video of the author talking about the book. Or better yet, download the Introduction and see if it appeals to you before you buy the book.</description><link>http://mindlikeasword.blogspot.com/2009/01/burk-on-books-inside-steves-brain.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-2703963730422912253</guid><pubDate>Thu, 06 Nov 2008 14:02:00 +0000</pubDate><atom:updated>2008-11-07T15:32:23.506-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">certification</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">leadership</category><category domain="http://www.blogger.com/atom/ns#">SCJP</category><title>Learning Java by Leading</title><description>Another great way to keep up your technical skills is to lead a certification study group. They say that the best way to learn something is to teach it. While that may be true, I can tell you that you don’t have to teach. I’ve recently found that leading a study group grants many of the same benefits while giving you an out. Since you’re &lt;span style=&quot;font-style: italic;&quot;&gt;just&lt;/span&gt; leading the group, and not actually &lt;span style=&quot;font-style: italic;&quot;&gt;teaching&lt;/span&gt; the topic, you don’t have to be an expert.&lt;br /&gt;&lt;br /&gt;Even better, if someone in the group really is an expert on part of the topic, or just knows more about it than you do, you can defer to their expertise without losing credibility. And, that’s a win for everybody. (On the other hand, when I lead a group, I think it is important for me to know as much as possible about the topic so I can answer most of the questions they bring up.)&lt;br /&gt;&lt;br /&gt;Certification itself seems to be a controversial topic, but I think that most people would agree that it is a way for interested people to learn more about a given topic. Personally, I think studying for certification is great because it forces me to learn about things I wouldn’t otherwise be too familiar with. For example, way back in 2001 I was studying for the Sun Certified Java Programmer (SCJP) exam (version 1.2 I think) so I had to become familiar with the Java IO classes. While they&#39;re useful for working with directories and files, I had no experience with them because at the time I was writing code that ran in an app server.&lt;br /&gt;&lt;br /&gt;As I stated above I’m currently leading a study group and we&#39;re preparing for the SCJP exam for Java 6. While reading this week&#39;s chapter, I ran into something possibly useful and definitely interesting. Like the Java I/O classed in 2001, it&#39;s something new to me because I’m mostly writing JEE code and most JEE app servers don&#39;t support Java 6 yet. Sigh.&lt;br /&gt;&lt;br /&gt;Anyway, we’re using Kathy Sierra and Bert Bates’ “Sun Certified Programmer for Java 6 Study Guide” as our text. It&#39;s an excellent book and since Kathy and Bert were instrumental in writing the exam, I figure that after working our way through it we should be covered. This week we’re on chapter 6 which is all about Strings, I/O, Formatting, and Parsing.&lt;br /&gt;&lt;br /&gt;The I/O section introduces the java.io.Console class, which is new in Java 6 and lets you read from and write to the command line – if the environment you’re running in supports it. You write information to the console by calling format() and printf(), and you read from it using readLine() and readPassword(). The readLine() method is for retrieving a single line of text from the console. The readPassword() method also retrieves a line of text, but doesn’t echo it to the screen so your password isn’t displayed - which seems reasonable. So far so good, right?&lt;br /&gt;&lt;br /&gt;Now comes the interesting bit. The readLine() method returns a String, but the readPassword() method returns a character array. After I read that, I looked up and wondered why the API wasn&#39;t consistent. It seemed to me that it would be better if both of them returned a String. Then my eye caught the next sentence and suddenly it all made sense.&lt;br /&gt;&lt;br /&gt;Since readPassword() returns a character array, you can do whatever validation is necessary and then overwrite the data with something else to scrub the password from memory. So, why can’t you do the same thing with a String? Think about it for a bit before you read the next paragraph…&lt;br /&gt;&lt;br /&gt;That’s right! In Java, Strings are immutable and they’re stored in a special memory pool so the JVM can reuse them; which means that if readPassword() returned a String then the confidential information you took pains to hide from prying eyes could be found by someone sifting through the system’s memory.&lt;br /&gt;&lt;br /&gt;Of course, this also means that once you get the password you should take pains not to do anything that would create a String out of it; but you probably figured that out already.&lt;br /&gt;&lt;br /&gt;If you&#39;re in a study group, or leading one, please leave a comment and let me know what you think about it. Is it valuable? Is it a waste of your time? And what do you think about Java certifications? Are they intrinsically valuable, or does it depend on circumstances?&lt;br /&gt;&lt;br /&gt;Thanks for reading this. Y&#39;all come back now, y&#39;hear?</description><link>http://mindlikeasword.blogspot.com/2008/11/learning-by-leading.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-373252456541576421</guid><pubDate>Mon, 03 Nov 2008 03:38:00 +0000</pubDate><atom:updated>2008-11-03T06:38:14.759-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">book reviews</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><category domain="http://www.blogger.com/atom/ns#">JavaOne</category><category domain="http://www.blogger.com/atom/ns#">presentation</category><category domain="http://www.blogger.com/atom/ns#">TV</category><title>Beating the odds by reading books</title><description>In my copious spare time (gained by not watching much TV) I read and review books, technical and otherwise, as a way of keeping up with the rest of the world. (You can read my most recent review &lt;a href=&quot;http://books.dzone.com/reviews/slideology-the-art-and-science&quot;&gt;here&lt;/a&gt;.) Usually I’m working on one or two books at a time (did I mention I love to read?) but I discovered some really interesting books in a short period and now I’ve gotten a little swamped. At this point, I’m reading three books and writing reviews for three others.&lt;br /&gt;&lt;br /&gt;I posted one review to &lt;a href=&quot;http://books.dzone.com/&quot;&gt;DZone.com’s Book Zone&lt;/a&gt; last Friday, but you won’t see it in their listing until the zone leader approves it. The other two are not technically technical (they aren’t specifically about programming or software development per se) but they are books I would recommend to developers and architects who need to communicate their ideas with others.&lt;br /&gt;&lt;br /&gt;The review I posted is for “Groovy Recipes” by Scott Davis and it is a book I highly recommend for anyone interested in the Groovy programming language. As its title suggests, the book is full of recipes showing you how to get something useful done in Groovy. There’s even a section with recipes for Groovy’s web framework, Grails.&lt;br /&gt;&lt;br /&gt;If you’re looking for a new language to learn, or you’d like to improve your skills with Groovy, this is an excellent choice to help you on your way.&lt;br /&gt;&lt;br /&gt;“Presentation Zen” is the name of a &lt;a href=&quot;http://www.presentationzen.com/presentationzen/2008/11/testtest-test.html&quot;&gt;web site &lt;/a&gt;as well as a book, both by Garr Reynolds. I found the web site when I was working on a technical session for JavaOne 2008. While I loved the approach Garr suggested, I was pretty sure I couldn’t pull it off in the time I had left to prepare. I stuck a more traditional approach and swore to myself that I would come back and learn to improve my presentation skills.&lt;br /&gt;&lt;br /&gt;This book is full of good information and can point you in the right direction, but you (and I) have to do the work needed to improve - reading alone probably won&#39;t cut it. But, if you want to get better at presenting information then this is a great place to start.&lt;br /&gt;&lt;br /&gt;The third review I’m writing is for a wonderful little book titled, “The Back of the Napkin” and it’s subtitle “Solving problems and selling ideas with pictures” pretty much lets you know what to expect when you read it. If you’re anything like me and most of the programmers and architects I’ve worked with then you’re probably comfortable sketching a diagram to describe a problem or solution to the people you work with. So why would you want to buy a book about it?&lt;br /&gt;&lt;br /&gt;Well, take a look at &lt;a href=&quot;http://www.thebackofthenapkin.com/&quot;&gt;the website&lt;/a&gt; Dan Roam (the author) set up for the book and watch the video on the five focusing questions and the six ways to see and show. That should be enough to get you to place an order for the book today. In case the site’s down or you can’t view the videos, the point is that Dan presents a well reasoned method to figuring out how to visually solve problems and present the solution to other people so they can understand it. From my point of view, getting better at those two things is well worth the price of the book and the time it takes to read it, and you can’t ask for much more than that.&lt;br /&gt;&lt;br /&gt;I’ll update this post – or just post a short notice – when the reviews are done and out there. I also post to the Atlanta Java User Groups’ Book Corner so you may see them there first.&lt;br /&gt;&lt;br /&gt;Oh yes, the title of this post is my way of thumbing my nose at the &quot;statistic&quot; I&#39;ve heard concerning the average number of books a programmer reads in a year - which is supposedly zero. I don&#39;t know about you, but I&#39;m doing my best to boost that number; and learning a good bit at the same time...&lt;br /&gt;&lt;br /&gt;Dang. I just realized I&#39;m going to need a good sign-off phrase to let you know I’m done and didn’t just hit the “post article” button by accident.</description><link>http://mindlikeasword.blogspot.com/2008/11/beating-odds-by-reading-books.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-5330314094026463340</guid><pubDate>Wed, 29 Oct 2008 13:00:00 +0000</pubDate><atom:updated>2008-10-29T09:00:03.424-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">career</category><category domain="http://www.blogger.com/atom/ns#">learning</category><category domain="http://www.blogger.com/atom/ns#">nfjs</category><category domain="http://www.blogger.com/atom/ns#">training</category><title>A Weekend full of Learning</title><description>Where do you find people who willingly spend their entire weekend learning about things like Java class loaders, Groovy, Java Server Faces, Google Web Toolkit, Test Driven Development, Alternative languages for the JVM, and other similar topics? Well, last weekend you’d have found about two hundred of them at the 2008 Greater Atlanta Software Symposium put on by &lt;a href=&quot;http://www.nofluffjuststuff.com/about.jsp&quot;&gt;No Fluff Just Stuff&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The conference started Friday at 1PM and ended Sunday at 6PM, with breaks for food and sleep. The primary draw was twelve 90-minute opportunities to learn about one of 72 topics being presented by some of the best speakers out there including people like David Geary, Scott Davis, Neal Ford, and Ted Neward.&lt;br /&gt;&lt;br /&gt;And if &lt;b&gt;that&lt;/b&gt; weren’t enough (Is it ever?), each day had an extra goody; on Friday Jared Richardson presented a potentially life-changing &lt;a href=&quot;http://mindlikeasword.blogspot.com/2008/10/whats-in-name.html&quot;&gt;keynote&lt;/a&gt; titled &quot;Career 2.0&quot; (keep an eye out for the book), Saturday ended with a choice of BOFs, and Sunday&#39;s lunch was followed by an hour-long “expert panel” featuring seven of the speakers holding forth on topics like architecture, testing and SOA.&lt;br /&gt;&lt;br /&gt;If you’ve never heard of No Fluff Just Stuff then you’re in for a treat. It’s kind of like a traveling, three-day long, JavaOne. I recommend checking out their &lt;a href=&quot;http://www.nofluffjuststuff.com/about.jsp&quot;&gt;web site&lt;/a&gt; for a time and place when they’re either someplace near you or someplace you want to visit, then sign up and get ready to learn. It&#39;s good for your career.</description><link>http://mindlikeasword.blogspot.com/2008/10/weekend-full-of-learning.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8705625483014737246.post-5738869331886866650</guid><pubDate>Sat, 25 Oct 2008 00:07:00 +0000</pubDate><atom:updated>2008-10-26T23:07:43.666-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">nfjs</category><category domain="http://www.blogger.com/atom/ns#">sci fi</category><category domain="http://www.blogger.com/atom/ns#">star trek</category><category domain="http://www.blogger.com/atom/ns#">welcome</category><title>What&#39;s in a name?</title><description>Listening to &lt;a href=&quot;http://www.jaredrichardson.net/&quot;&gt;Jared Richardson&lt;/a&gt; speak, I knew I had to make a change and I needed to do it tonight. Jared was tonight&#39;s key note speaker at the &quot;&lt;a href=&quot;http://www.nofluffjuststuff.com/home.jsp&quot;&gt;Greater Atlanta&lt;/a&gt;&lt;a href=&quot;http://www.nofluffjuststuff.com/home.jsp&quot;&gt; Software Symposium&lt;/a&gt;&quot; aka No Fluff Just Stuff. His talk was titled &quot;Career 2.0,&quot; and it got me thinking (again) about my career and what I want to do and be.&lt;br /&gt;&lt;br /&gt;Jared made a lot of suggestions, and I intend to give some of them a try. One of the many things he suggested was to become a blogger because it&#39;s an easy way to share the things we learn with others. He said it&#39;s easy to create a blog. In fact, he claimed that it is so easy to get started that on previous occasions some people had actually fired up their laptops and created a blogging account during the second part of his speech.&lt;br /&gt;&lt;br /&gt;After I got home I decided to take part of Jared&#39;s advice and enter the blogosphere. I went to blogger.com&#39;s &lt;a href=&quot;http://www.blogger.com/home&quot;&gt;home page&lt;/a&gt; and, since it only required three steps to get started; create an account, name the blog, and pick a template. I have to admit that it did look pretty easy.&lt;br /&gt;&lt;br /&gt;I created an account, but then I had to wonder about the folks Jared spoke about. Creating the account &lt;span style=&quot;font-weight: bold;&quot;&gt;was &lt;/span&gt;easy, but picking a name was definitely not. I&#39;ll admit that it took me a while, partly because all the names I initially wanted were taken; but it&#39;s also because I believe names are more important than you may think.&lt;br /&gt;&lt;br /&gt;I suggest to you that names conjure images in our minds and can affect both our expectations and behaviors. Let me give you an example.&lt;br /&gt;&lt;br /&gt;Many years ago my neighbors had a dog named &quot;Rambo.&quot; Care to guess what kind of dog it was? If you&#39;ve seen the &quot;Rambo&quot; movies, starring Sylvester Stallone, you&#39;d probably thinking that Rambo was a powerful dog with a serious attitude; something like a &lt;a href=&quot;http://en.wikipedia.org/wiki/Rottweiler&quot;&gt;Rottweiler&lt;/a&gt;; and you&#39;d be partly right.&lt;br /&gt;&lt;br /&gt;Rambo did have an attitude, but he wasn&#39;t big at all. You see, Rambo was a toy poodle. (Yes, I asked about the name. It turns out that when they decided to get a dog, my neighbors had a tough time deciding, so they compromised. She got to pick the dog, but he got to name it.) The point is that we often have preconceived ideas about people and things based on their name, and I wanted to pick a name that would help people get in the right frame of mind for what I was expecting to post here.&lt;br /&gt;&lt;br /&gt;The first name I picked that hadn&#39;t already been used was &quot;Musashi Flex&quot; and I wrote much of this post for that blog&#39;s initial posting. But the next day I found that explaining what the Musashi Flex was, and how it applied to my blog,was more work than it was worth; though fans of Steve Perry&#39;s Matador series, it might have grokked it.&lt;br /&gt;&lt;br /&gt;So I went back to thinking up a meaningful name and, after sleeping on it, the phrase &quot;mind like a sword&quot; is what I&#39;ve come up with. It&#39;s not the perfect title, but I like it and I like the idea of equating mental sharpness with a sword&#39;s effectiveness in battle. (Yes. I am familiar with the phrase &quot;Just like a(n) X to bring a knife to a gunfight&quot;, where X is some group you don&#39;t want to ba associated with; but &quot;Mind like a bullet&quot; just isn&#39;t me.)&lt;br /&gt;&lt;br /&gt;I expect to do a few things with this blog:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Share my ideas on software development.&lt;/li&gt;&lt;li&gt;Share issues and solutions I run into while working as a software architect and developer.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Provide a place to discuss and review some of the many of the books I read - most, but not all, related to software design and development.&lt;/li&gt;&lt;/ul&gt;Well, this seems like a reasonable length for my first post. Thank you for your time and attention.&lt;br /&gt;&lt;br /&gt;May you live long and prosper!</description><link>http://mindlikeasword.blogspot.com/2008/10/whats-in-name.html</link><author>noreply@blogger.com (Burk Hufnagel)</author><thr:total>2</thr:total></item></channel></rss>