<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title>The Pragmatic Craftsman</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/" />
    
    <id>tag:PragmaticCraftsman.com,2008-11-10://8</id>
    <updated>2009-05-15T11:16:32Z</updated>
    <subtitle>Simplicity from complexity.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.21-en</generator>

<link rel="self" href="http://feeds.feedburner.com/PragmaticCraftsman" type="application/atom+xml" /><entry>
    <title>DOM Scripting</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/05/dom_scripting.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1411</id>

    <published>2009-05-15T10:51:14Z</published>
    <updated>2009-05-15T11:16:32Z</updated>

    <summary> I believe in doing things the right way. So does the author of this book. In this regard, this is a great book: You learn what the right way is. Not for hard-core developers. The intended audience is web...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Books" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bestpractices" label="best-practices" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="book" label="book" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="books" label="books" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="dom" label="dom" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p><?php addBook("DOM Scripting", "Jeremy Keith", "","","", /*pic-location*/ "http://farm3.static.flickr.com/2373/3532621685_1458690d53.jpg?v=0", /*isbn*/ "1-59059-533-5", /*date-read*/ "5/2009", /* stars -- number*/ "3"   ); ?></p>

<p>I believe in doing things the right way. So does the author of this book. In this regard, this is a great book: You learn what the right way is.</p>

<p><strong>Not for hard-core developers.</strong> The intended audience is web designers. I second that. This book is also an excellent choice if you're just thinking whether web-development with JavaScript is for you. Or if you want to read about web-development's best practices (read chapter 5). It is not thorough and does not cover the advanced topics, like OO programming, etc.</p>

<p><strong>Doing things right. </strong>And how to get there. This the nicest feature about this book. Slowly, sometimes first showing the bad approach and then refactoring to a more best-practices oriented solution. Nicely done. I wish more beginning books had an approach like this. </p>

<p><strong>Separation of concerns</strong>: Separation of layers. My main objective for reading this book was so I learn more about the best practices. I did not learn anything new, but reading about the best practices again is a nice refresher. Separating structure, presentation, and behavior is the most important best practice when doing web development. The author does a good job explaining and really diving into this concept.</p>

<p>To say it once more, <strong>HTML, CSS, and JavaScript should be separate</strong>. You'll learn that in this book.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Object-Oriented JavaScript</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/05/object-oriented_javascript.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1398</id>

    <published>2009-05-07T22:03:29Z</published>
    <updated>2009-05-08T22:02:52Z</updated>

    <summary> After reading my last JavaScript book, Professional JavaScript for Web Developers, I was looking for some more JS books to read. Something good. Then a few days ago I read a post by Klaus Komenda, Book Review: Object-Oriented JavaScript,...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Books" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p><?php addBook("Object-Oriented JavaScript", "Stoyan Stefanov", "","","", /*pic-location*/ "http://farm4.static.flickr.com/3587/3510213102_1bf897e387.jpg?v=0", /*isbn*/ "1847194141", /*date-read*/ "5/2009", /* stars -- number*/ "3"   ); ?></p>

<p>After reading my last JavaScript book, <a href="http://pragmaticcraftsman.com/2009/04/professional_javascript_for_web_developers_2nd_ed.php">Professional JavaScript for Web Developers</a>, I was looking for some more JS books to read. Something good. Then a few days ago I read a post by Klaus Komenda, <a href="http://www.klauskomenda.com/archives/2009/04/25/book-review-object-oriented-javascript/">Book Review: Object-Oriented JavaScript</a>, and he highly recommended this book. (In the process, I also discovered DOM Scripting, and Pro JavaScript Design Patterns.)  I picked up this book and had high expectations.</p>

<p><strong>Decent book.</strong> After finishing the excellent <a href="http://pragmaticcraftsman.com/2009/04/professional_javascript_for_web_developers_2nd_ed.php">Professional JavaScript for Web Developers</a> book, the standards were set very high. This book is good, but not as deep, and not filled with as many full examples. It's good, but not as good.</p>

<p><strong>Quick. </strong>This book reads very quickly. The examples are short, the writing style is very conversational. That's a nice feature. On the downside, sometimes a feature you're reading is not easy and you'd like a bit more on the subject. You're out of luck.</p>

<p><strong>I learned a few things.</strong> Firebug console can execute JavaScript -- I did not know that! I also got an overview of regular expressions syntax in JavaScript. Good job there. I also learned couple other things, but majority of the concepts in this book were included in the Pro book I mentioned.</p>

<p>Overall, not a bad book, but I don't recommend it. By now, you know which JS book I do recommend. :-)</p>]]>
        
    </content>
</entry>

<entry>
    <title>Javascript Resources</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/04/javascript_resources.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1386</id>

    <published>2009-04-30T14:37:40Z</published>
    <updated>2009-04-30T14:45:55Z</updated>

    <summary>Over the past couple of weeks I have digged into learning Javascript on a deeper level. I have learned a great deal. Along the way, I've come across some very good Javascript resources. Listed below are links to the best...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Web Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="javascript" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="resources" label="resources" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p>Over the past couple of weeks I have digged into learning Javascript on a deeper level. I have learned a great deal. Along the way, I've come across some very good Javascript resources. Listed below are links to the best I've found.<br />
 <br />
<a href="http://javascript.crockford.com/">Douglas Crockford articles</a> - Javascript guru<br />
 <br />
<a href="http://dev.opera.com/articles/view/1-introduction-to-the-web-standards-cur/#toc">JavaScript core skills</a> -- list of very good articles on Javascript by Opera developers</p>

<p><a href="http://www.klauskomenda.com/code/javascript-programming-patterns/">JavaScript Programming Patterns</a> - an excellent articles about OO programming in Javascript</p>

<p><a href="http://pragmaticcraftsman.com/2009/04/professional_javascript_for_web_developers_2nd_ed.php">Professional Javascript Development</a> -- excellent Javascript book</p>]]>
        
    </content>
</entry>

<entry>
    <title>Professional JavaScript for Web Developers (2nd ed)</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/04/professional_javascript_for_web_developers_2nd_ed.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1376</id>

    <published>2009-04-24T13:40:37Z</published>
    <updated>2009-04-24T16:22:15Z</updated>

    <summary> This book has opened my eyes in the JavaScript development world. For real. I did not know object-oriented JavaScript. I did not a lot of JavaScript patterns available. Nor did I now the best practices for JavaScript. Until now....</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Books" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Books I Recommend" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="javascriptbook" label="javascript book" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p><?php addBook("Professional JavaScript for Web Developers (2nd ed)", "Nicholas C. Zakas", "","","", /*pic-location*/ "http://farm4.static.flickr.com/3563/3468480946_39d57481f2.jpg?v=0", /*isbn*/ "047022780X", /*date-read*/ "4/2009", /* stars -- number*/ "5"   ); ?></p>

<p>This book has <strong>opened my eye</strong>s in the JavaScript development world. For real. I did not know object-oriented JavaScript. I did not a lot of JavaScript patterns available. Nor did I now the best practices for JavaScript. Until now. :-)</p>

<p>This is the <strong>best JavaScript book</strong> out there now. I checked out almost all of them (Pro JavaScript Techniques, Javascript: Definitive Guide, and others). This book gives you all the coverage of JavaScript you need. Explained in a clear and intuitive manner. Full of examples. Great examples. I really love this book!</p>

<p><strong>Excellent JavaScript coverage.</strong> Basics. Object Oriented. Events. DOM. Ajax. Best Practices. It's all here. Plenty more, actually.</p>

<p><strong>Focus on best practices.</strong> This is where this book shines. I love authors like Mr. Zakas. He tells you how you should be developing, what the best practice is. </p>

<p><strong>Excellent examples.</strong> Another great aspect of this book. I learn by examples. I like to see a lot of examples. Great job by the author.</p>

<p><strong>Great object-oriented coverage. </strong>There are different ways of object-oriented programming in JavaScript. Some better than others. Some more efficient than others. I have learned a great deal about JavaScript OO from the author. The author discusses numerous OO patterns and techniques.</p>

<p>Read this book. <strong>You will become a better JavaScript developer.</strong> I am sure about that. You will learn much, much more about the capabilities of JavaScript. I am amazed how far JavaScript has progressed.</p>

<p>I am more of a Java developer than a web developer. However, JavaScript is becoming used more and more. There are patterns, OO programming in JavaScript -- more of a typical programming language. <strong>I predict we'll see more and more back-end developer doing JavaScript. </strong> This book is of great help.</p>]]>
        
    </content>
</entry>

<entry>
    <title>What is Maintainable Code</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/04/what_is_maintainable_code.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1373</id>

    <published>2009-04-21T11:23:47Z</published>
    <updated>2009-04-21T11:43:11Z</updated>

    <summary>While reading the excellent Javascript book, Professional Javascript for Web Developers, I came across a very good definition of maintainable code. It's one that I fully subscribe to, but since it was put so well in the book, here it...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p>While reading the excellent Javascript book, Professional Javascript for Web Developers, I came across a very good definition of maintainable code. It's one that I fully subscribe to, but since it was put so well in the book, here it is.</p>

<blockquote><strong>What is Maintanable Code?</strong>

<p>Maintainable code has several characteristics. In general, code is said to be maintainable when it is <strong>all of the following</strong>:</p>

<ul>
	<li><strong>Understandable </strong>-- Someone else can pick up the code and figure out its purpose and general approach without a walkthrough by the original developer.</li>
	<li><strong>Intuitive </strong>-- in the code just seem to make sense, no matter how complex the operation.</li>
	<li><strong>Adaptable </strong>-- The code is written in such a way that variances in data don't require a complete rewrite.</li>
	<li><strong>Extendable </strong>-- Care has been given in the code architecture to allow extension of the core functionality in the future.</li>
	<li><strong>Debuggable </strong>-- When something goes wrong, the code gives you enough information to identify the issues as directly as possible.</li>
</ul>

<p>Being able to write maintainable JavaScript [any language] code is an important skill for professionals. This is the difference between hobbyists who hack together a site over the weekend and professional developers who really know their craft.</blockquote></p>

<p>Very well said, Mr. Zakas! </p>

<p>Being able to write maintainable code is what distinguishes you as a programmer. It's a difference between a craftsman and an apprentice. </p>

<p><strong>Reference</strong><br />
<a href="http://www.amazon.com/Professional-JavaScript-Developers-Wrox-Programmer/dp/047022780X%3FSubscriptionId%3D0DEETVQGV87MTJA1QCR2%26tag%3Dthepragmaticc-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D047022780X%26coliid%3DIC9X5H0H3WLJO%26colid%3D1TOEQTJTSO6F7">Professional Javascript for Web Developers (2nd ed)</a>, Nicholas C. Zakas</p>]]>
        
    </content>
</entry>

<entry>
    <title>Effective Java (2nd Edition)</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/03/effective_java_2nd_edition.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1318</id>

    <published>2009-03-02T21:38:33Z</published>
    <updated>2009-03-02T16:34:50Z</updated>

    <summary> One Minute Review Positives * Best advanced Java book * Loaded with excellent tips * Expert voice * Broad coverage of best practices Negatives * Some chapters too complex General Overview This is the best Java book available for...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Books" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Books I Recommend" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p><?php addBook("Effective Java (2nd)", "Joshua Bloch", "","","", /*pic-location*/ "http://farm4.static.flickr.com/3580/3304093185_bc328d3272.jpg?v=0", /*isbn*/ "0321356683", /*date-read*/ "2/2009", /* stars -- number*/ "5"   ); ?></p>

<p><strong>One Minute Review</strong><br />
<strong>Positives</strong><br />
    * Best advanced Java book<br />
    * Loaded with excellent tips<br />
    * Expert voice<br />
    * Broad coverage of best practices<br />
     <br />
<strong>Negatives</strong><br />
    * Some chapters too complex</p>

<p><strong>General Overview</strong><br />
This is the best Java book available for the advanced/experienced programmers. (For beginners, see Thinking in Java by Eckel.)</p>

<p>Why? Bloch shows you HOW you should be programming in Java. He shows you what to avoid. He teaches you the things that you might not be aware, or things you would only find out after you dived in to it in much detail. </p>

<p><strong>Negatives</strong><br />
I read the first edition, and this second edition is great, but some chapters have gotten a bit too complex, too difficult to understand. At least for me. I know this is really Java's fault, as it has become a lot more complicated with version 5, but I think perhaps the author could explain it a bit better. I lost focus at times. This was the case with the chapter on Generics. Perhaps it's just me. There are some obscure portions of generics, which are just very hard to read. (I should not blame the author for that.) </p>

<p><strong>Bottom Line</strong><br />
Overall, a great book. A must read for serious Java programmers. The tips contained in this book, there is 78 of them, are all coming from the expert. Tried and tested. And even though you might be using only a small portion, these rules of thumb are good to know, good to refer to. A very good checking point as well if you've been developing in Java for a few years. This book will tell you whether you've been going in a right direction. Or perhaps it will help you steer there.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Make Quality a Requirement</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/02/make_quality_a_requirement.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1306</id>

    <published>2009-02-10T15:07:42Z</published>
    <updated>2009-02-26T14:29:47Z</updated>

    <summary>As programmers, we want to finish things fast. We want to impress our boss. We want to be better and always finish before others.So we do. We finish things as fast as possible. Because the requirement was to complete the...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Better Coder" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Craftsmanship" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[As programmers, we want to finish things fast. We want to impress our boss. We want to be better and always finish before others.<br /><br />So we do. We finish things as fast as possible. Because the requirement was to complete the things that were on the list. <br /><br />Just make it work.<br /><br />What's the end result? Code that is hard to read by others. Code that is rigid. Code that is fragile. Code that is over complicated. Basically, code that has the characteristic of "fast food" -- it does what is supposed to, right?<br /><br />Wouldn't things be different if one of the requirements was "high quality."<br /><br />The statement is ambiguous. Sure. It means different things to different people. It could be more specific: "code should be easy to read, easy to extend, and easy to modify."<br /><br />High Quality. Enough said.<br /><br />You could argue what quality really means. That's not the point. Just stating that it has to be of high quality puts everyone on the same page: it communicates the expectation to the team.<br /><br />"Why don't we just add a special exception here." No, you would say. That's going to lower the quality of the code. That's going to make the code more fragile and harder to extend. It does not meet the quality requirement.<br /><br />I personally don't need to be told that -- quality is always on my list. I always try to make the code that I write be of high quality. I put focus on that. I don't always get the results I want, especially after I look at my code after a period of time. But I learn. I improve. <br /><br />There is just too much of low-quality code around. Too much pressure to finish fast and no pressure on quality. <br /><br />Having quality a requirement would make a huge difference. I strongly believe that.<br /><br />Even if your manager does not require it, "High Quality" should be one of the most important requirements when you write code. It's not easy to write high quality code. That's for sure. You learn with experience, by trying things out. Patterns develop after a while. Then you study a bit more. But having that focus we'll make you a better coder and distinguish you from the others.<br /><br /><b>Related</b><br /><a href="http://www.taylor.se/blog/2009/02/25/code-quality-and-the-fat-developer/">Code quality and the fat developer</a>, very good post by Consulting jiujitsu<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>Quality and Speed</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/02/quality_and_speed.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1305</id>

    <published>2009-02-05T14:44:16Z</published>
    <updated>2009-02-05T15:07:23Z</updated>

    <summary>Uncle Bob wrote an excellent post, Speed Kills. Is there a tradeoff between speed and quality, he asks. If by "speed" you mean delivering working software quickly and repeatably release after release after release; then maintaining high quality is your...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Craftsmanship" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[Uncle Bob wrote an excellent post, <a href="http://blog.objectmentor.com/articles/2009/02/03/speed-kills">Speed Kills</a>. Is there a tradeoff between speed and quality, he asks. <br /><br /><blockquote>If by "speed" you mean delivering working software
quickly and repeatably release after release after release; then
maintaining high quality is your only option.</blockquote> I couldn't agree more. In the long run, the only way you can move fast at high speed is if you have quality. Time and time again, I come across projects that were finished fast, with the thinking that they will never be modified again. (I'm not even sure if that's always the case, but rather that quality was not a requirement.) After a few months, things change. They often do. And the project needs to be modified. What is your speed then? <br /><br />It would actually make more sense to rewrite the project. But that's almost impossible. Too many dependencies. Too much coupling. Who can read that and understand? Too risky. At that point, the easiest thing is to do is just add a special exception, an "if" statement that would make the thing work. <br /><br />And the project quality degrades. <br /><br />And the speed decreases.<br /><br />Frustrating? You bet. Especially if you are not the original coder.<br /><br />Wouldn't it be easier if it was written with quality in mind in the first place? <br /><br /><b>Reference</b><br /><a href="http://blog.objectmentor.com/articles/2009/02/03/speed-kills">Speed Kills</a> by Uncle Bob<br />]]>
        
    </content>
</entry>

<entry>
    <title>Java EE 6: Moving in a right direction </title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/02/java_ee_6_moving_in_a_right_direction.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1301</id>

    <published>2009-02-03T15:24:59Z</published>
    <updated>2009-02-03T15:33:29Z</updated>

    <summary>I just read an overview of the Java EE 6 release. It looks like Java EE is becoming simpler, smaller, and less configuration hungry. Glad to that.Few things that sound exciting to me: WebBeans, Profiles, JPA 2, JSF 2. It's...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Java" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[I just read an overview of the Java EE 6 release. It looks like Java EE is becoming simpler, smaller, and less configuration hungry. Glad to that.<br /><br />Few things that sound exciting to me: WebBeans, Profiles, JPA 2, JSF 2. <br /><br />It's probably a year or so away. I wish the process moved a bit faster.<br /><br /><b>Reference<br /></b><a href="http://www.theserverside.com/tt/articles/article.tss?l=JavaEE6Overview">Java EE 6 Overview</a><br /><br /><b>Related</b><br />On a related note, this article puts this direction into perspective, <a href="http://weblogs.java.net/blog/cayhorstmann/archive/2009/02/towards_java_ee.html">Towards Java EE Nirvana</a><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>jQuery in Action</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/01/jquery_in_action.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1291</id>

    <published>2009-01-23T22:00:12Z</published>
    <updated>2009-01-23T22:20:47Z</updated>

    <summary> One Minute Review Positives * Excellent overview of jQuery * Full of examples * Focus on effective usage * Live samples (Lab) Negatives * In the API docs, an example would be really helpful General Overview I read the...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Books" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Books I Recommend" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p><?php addBook("jQuery in Action", "Bear Bibeault, Yehuda Katz", "","","", /*pic-location*/ "http://farm4.static.flickr.com/3303/3220449821_8bdb397a16.jpg?v=0", /*isbn*/ "1933988355", /*date-read*/ "1/2009", /* stars -- number*/ "5"   ); ?></p>

<p><strong>One Minute Review</strong><br />
<strong>Positives</strong><br />
    * Excellent overview of jQuery<br />
    * Full of examples<br />
    * Focus on effective usage<br />
    * Live samples (Lab)</p>

<p><strong>Negatives</strong><br />
    * In the API docs, an example would be really helpful</p>

<p><strong>General Overview</strong><br />
I read the majority of another good book, Learning jQuery, but jQuery in Action is much better! Much more thorough, covers more material. I think this is the best book available on the subject. </p>

<p>This book covers a lot of material: core jquery, events,  effects, utils, extending jquery, Ajax, useful plugins, OO Javascript, and more! Each topic is not covered too deeply, but enough to get a grasp. Each topic has good examples also, which made reading and comprehending it much more easier. It also makes this book a good reference book.</p>

<p>This book has a live lab! As you read the book, you see the examples in action! It's really cool and useful. I think it's a great learning tool.</p>

<p>I liked the authors emphasis on doing things the right way. This is especially important when learning a new framework. The examples presented in the books were not trivial but not too difficult either, nice balance.</p>

<p><strong>Negatives</strong><br />
I really liked the API documentation for the functions, in which the params are listed and explained. What would have made it even better, is if it also contained examples as part of it. It would have made this book much more reference friendly.</p>

<p><strong>Summary</strong><br />
All in all, this is an excellent book. The authors are detail oriented and put a lot of thought into creating this book. It shows! If you want to learn jQuery, this book is your best bet.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Top 20 Programming Lessons</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2009/01/top_20_programming_lessons.php" />
    <id>tag:PragmaticCraftsman.com,2009://8.1114</id>

    <published>2009-01-16T22:56:46Z</published>
    <updated>2009-01-16T23:13:43Z</updated>

    <summary>Jonathan Danylko posted an excellent set of 20 lessons learned. From a 20 years of experience. Excellent material. Something to keep in mind as you gain your own experience... and move up the ranks. :-) Interesting points from the entry...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Recommended" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p>Jonathan Danylko posted an excellent set of 20 lessons learned. From a 20 years of experience. Excellent material.</p>

<p>Something to keep in mind as you gain your own experience... and move up the ranks. :-)</p>

<ul>Interesting points from the entry
<li>Don't over-"design pattern" applications.</li>
<li>You are not the best at programming. Live with it.</li>
<li>Learn to learn more.</li>
</ul>
 
<strong>Reference</strong>
<a href="http://www.dcs-media.com/desdev/Detail.aspx?ArticleId=578">20/20: Top 20 Programming Lessons I've Learned in 20 Years</a>, Jonathan Danylko]]>
        
    </content>
</entry>

<entry>
    <title>I'm Learning jQuery  </title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2008/12/im_learning_j.php" />
    <id>tag:PragmaticCraftsman.com,2008://8.1264</id>

    <published>2008-12-07T18:21:46Z</published>
    <updated>2009-01-16T22:46:31Z</updated>

    <summary>I've just starting learning and using it, but I can already say: wow! It's some powerful stuff. I'll go even further, if you are doing any web development, whether you work on front or backend, you should learn the framework....</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
    <category term="jquery" label="jquery" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[I've just starting learning and using it, but I can already say: wow! It's
some powerful stuff. I'll go even further, if you are doing any web
development, whether you work on front or backend, you should learn the
framework. It will make you a better developer and make your life
easier. Plus, it's arguably the most popular webdev framework. You'll probably have to work with it at some point.<br />
<br />
You will really appreciate jquery if you have done JavaScript development.
Its much easier to do the simple stuff, and you can do stuff you could
only dream (or really suffer) in pure JS.&nbsp; Ajax - built in. Selecting elements you need on the page? Very simple: one line in jquery. Special effects? Moving/sliding/fading a div -- one method call! There are numerous nice features like this built in!<br />
<br />
jQuery does require a bit of a learning curve. If you see the syntax
for the first time, it might scare you. It looks cryptic, perl like.
But once you know how to read it, it's really not difficult.<br />
<br />
There are many ways of accomplishing the same thing in jQuery. Some
more readable than others. This is where you can show your skills, your
craftsmanship. As I have written before, it is always easier to write complex code, <a href="http://mt.kubasek.com/2007/01/simple_is_beautiful.php">code that is harder to maintain. Programmer's love complexity</a>.&nbsp; But you should always write code for others to read and modify. That's
true in any language, but especially important in 'criptic' syntax. But
this is what sets you apart from others, no?<br />
<br />
I'm learning jQuery. I think it will help me accomplish things faster. It will make me a better software developer.<br /><br />Here's are some of the resources I've come across on jQuery.<br /><br /><b>Reference</b><br />jQuery in Action -- excellent book on jQuery<br />Learning jQuery - another excellent book<br /><a href="http://www.ibm.com/developerworks/library/x-ajaxjquery.html?S_TACT=105AGX01&amp;S_CMP=TOPTEN">Simplify Ajax development with jQuery</a>, good article<br /><a href="http://visualjquery.com/">Visual jQuery</a> - a very good resource, you'll probably spend a lot of time on it<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>stylin' with CSS</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2008/05/book_review_stylin_with_css.php" />
    <id>tag:PragmaticCraftsman.com,2008://8.1165</id>

    <published>2008-05-16T21:27:43Z</published>
    <updated>2009-01-16T22:51:29Z</updated>

    <summary> I looked at this book over at B&amp;N and it got me hooked. Especially the chapter on how to do some basic page layout. I could not believe how simple it could be! The author really got me very...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Books" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Books I Recommend" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p><?php addBook("stylin' with CSS", "Charles Wyke-Smith", "","","", /*pic-location*/ "http://farm4.static.flickr.com/3126/2496412493_54cef62ece.jpg?v=0", /*isbn*/ "0321525566", /*date-read*/ "5/2008", /* stars -- number*/ "4.5"   ); ?></p>

<p>I looked at this book over at B&N and it got me hooked. Especially the chapter on how to do some basic page layout. I could not believe how simple it could be! The author really got me very interested and that eventually led to me buying this book. I'm glad I did. :-)</p>

<p>If you're a Java developer like me or a CSS beginner, this is a great book to get you started. It's really easy to read. Complex concepts are explained in an easy to understand fashion. And the author follows and breeds best practices. These and many others, make this book excellent.<br />
 <br />
The book is broken in 7 chapters.</p>

<p>The 1st chapter explains the basics of HTML, the different standards and how the page is structured. Simple chapter, but it's important to understand the basics.</p>

<p>The 2nd chapter, How CSS Works, is really a CSS 101. Basic stuff as well, but as in the first chapter, this is a fundamental knowledge.</p>

<p>Chapter 3 is more of a reference guide on how to style fonts and text. Some very useful info.</p>

<p>Chapter 4 is where the interesting stuff starts: positioning elements. An excellent overview of the box model and some good information about floating and clearing. </p>

<p>Chapter 5 is the best chapter in the book. It goes over several ways to create page layouts. Want to create a 2-column layout? A simple example is shown. How about a 3-column layout? 3-column liquid layout? With the techniques presented by Charles, you can create any type of a layout and you will actually understand what's going on. Really neat stuff.</p>

<p>In chapter 6, focus is on styling tables, forms, and menus. The author basically presents some techniques on how to style tables for tabular data, and explains the technique on how to create CSS menus. Good chapter to dive in when you're involved with these.</p>

<p>Chapter 7 summarizes the overall process of building a real site. </p>

<p>I learned several new techniques and tips from this book. I love how the book makes complicated things simple: this is my type of a book. Also, Charles has a good way of making sure these things come across and stay in your head. Not a simple thing to do, but he did a great job.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Core JavaServer Faces</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2008/04/book_review_core_javaserver_faces.php" />
    <id>tag:PragmaticCraftsman.com,2008://8.1163</id>

    <published>2008-04-29T16:57:52Z</published>
    <updated>2009-01-16T22:50:51Z</updated>

    <summary> One Minute Review Positives * Lot of examples -- with complete source code * Excellent writing style * Focus on helping the reader Negatives * Some chapters deviate from others: only snippets of code and no complete examples Summary...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Books" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p><?php addBook("Core JavaServer Faces (2nd ed)", "David Geary, Cay S. Horstmann", "","","", /*pic-location*/ "http://farm3.static.flickr.com/2001/2457855596_f145a00eb7.jpg?v=0", /*isbn*/ "0131738860", /*date-read*/ "1/2008", /* stars -- number*/ "4.5"   ); ?></p>

<p><strong>One Minute Review</strong><br />
<strong>Positives</strong><br />
    * Lot of examples -- with complete source code<br />
    * Excellent writing style<br />
    * Focus on helping the reader</p>

<p><strong>Negatives</strong><br />
    * Some chapters deviate from others: only snippets of code and no complete examples</p>

<p><strong>Summary</strong><br />
If you want to learn JavaServer Faces (JSF), this is the book to learn it from! What is the best technique to learn a new technology? By examples, in my opinion. This book takes that approach to the extreme, by giving you full source for the discussed examples! This really helps to see the big picture. I really liked that style.</p>

<p>This book comes from the creators of JSF, so the material in the book is well researched. And it shows. You'll learn many tips that the authors have learned from writing the first edition of the book and by revising the JSF itself.</p>

<p>This is really an excellent book, and a true reference for JSF. When reading this book, I got a sense that the authors really care about the reader: they do the hard work so that the reader will have an easier time implementing/understanding JSF. This is really what sets this book apart from many others.</p>

<p><strong>Reference</strong><br />
<a href="http://java.dzone.com/reviews/core-javaserver-faces-2nd-ed">This review on Javalobby</a> -- yes, as part of the book-review team, I get to keep the book and get published on Javalobby.org</p>]]>
        
    </content>
</entry>

<entry>
    <title>CSS Notes: Layouts</title>
    <link rel="alternate" type="text/html" href="http://PragmaticCraftsman.com/2008/04/css_notes_layouts.php" />
    <id>tag:PragmaticCraftsman.com,2008://8.1162</id>

    <published>2008-04-25T21:45:40Z</published>
    <updated>2008-11-11T17:18:06Z</updated>

    <summary>I'm reading an excellent book on CSS - Stylin' with CSS (highly recommended). I finished reading roughly half of it and I'd like to summarize some of the things I learned. CSS Layouts I am used to creating page layouts...</summary>
    <author>
        <name>Staś</name>
        
    </author>
    
        <category term="Web Development" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://PragmaticCraftsman.com/">
        <![CDATA[<p>I'm reading an excellent book on CSS - <em>Stylin' with CSS</em> (highly recommended). I finished reading roughly half of it and I'd like to summarize some of the things I learned.</p>

<p><strong>CSS Layouts</strong><br />
I am used to creating page layouts with HTML tables. It's easy to do and you can get any layout you want. But doing it that way is no longer recommended, and it's an ugly way of doing layouts. The "new" way of doing layouts is with pure CSS. It's cleaner and more concise. However, it's more complicated for a novice html guy like me. To really get this, you need to have some experience. </p>

<p>So how do you do it? Let's look an an actual example first.</p>

<pre>
&lt;div id=&quot;main_wrapper&quot;&gt;
&lt;div id=&quot;header&quot;&gt;
    &lt;div id=&quot;header_inner&quot;&gt;Header&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;nav&quot;&gt;
    &lt;div id=&quot;nav_inner&quot;&gt;Left nav&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;content&quot;&gt;
    &lt;div id=&quot;content_inner&quot;&gt;Main content...&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</pre>

<p>and here's the style for it:</p>

<pre>
&lt;style&gt;
#main_wrapper {
    width: 840px;
}
#header {
    
}
#nav {
    width: 20%;
    float: left;
}
#content {
    width: 80%;
    float: left;
}
#footer {
    clear: both;
}
&lt;/style&gt;
</pre>

<p>Nice and simple. With this technique you can put together any layout you want. </p>

<p><strong>Why the inner divs?</strong> Because CSS is weird. Even though you have a div with a certain size, by adding padding, margins, and border, the width actually changes! So, sure,you can go with just a top-level div, but you have to keep in mind that the size will change when you add those settings. How do you get around that? By using an inner div. The outer div controls the sizing and floating. Inside the inner div, you can then add padding, margins and border and the size of the outer div will not change: this is really how it should work. By using an inner div, you actually simplify your life!</p>

<p><strong>Reference</strong><br />
<a href="http://www.amazon.com/exec/obidos/ASIN/0321525566/thepragmaticc-20">Stylin' with CSS: A Designer's Guide</a>, Charles Wyke-Smith</p>]]>
        
    </content>
</entry>

</feed>
