# Friday, 26 February 2010

I was not asked nor am I being paid for this post.  I just want to let other’s know about a service that I have found to be incredibly valuable to improving my code craft.

I knew about Safari Books Online for a couple of years before I decided to give it a shot.  I had trepidation at first due to the price point and wasn’t sure if I would really use it.  I averaged a few books a year so it didn’t seem worth it.  Nine months have passed since I took it for a spin and I am smitten with Safari and here’s why.

  1. Thousands of Books at your fingertips

Nearly 11,000 as of this writing.  The publisher list is large and I have only a couple of a cases where a book I wanted was not in the library.  They are adding titles every week it seems like.  For the most part, I feel like a kid in a candy store seeing all the books that are available.  I have 47 books in my bookshelf at this time and have accessed many more.

  1. Features, features, features

I have a habit of marking up, highlighting and dog earring the books I read.  While this is great it’s still not the easiest to find that note or dog ear I made that had that particular topic I wanted to re-read or apply.  Enter the world of Safari Books Online.  I can add bookmarks and notes to my books and easily access them.  I can email and even download books/chapters if I want/need to.  The books have hyperlinked references & related content.  The searching ability offers a great way to find topics of particular interest in different books if you are wanting to learn/read on a particular topic rather than read an entire book.

  1. Accessibility

At first I had a hard time reading a book electronically.  It felt awkward and I wanted the physical book.  That didn’t take long to get over.  The ability to pick up where I left off on a book anywhere I have access to the internet is unbeatable.  I have used Safari at home, at the office and recently Safari added mobile devices to the list.  I experimented with the mobile device for my BlackBerry and found it to be pleasing.  Naturally, a larger media device would be preferable but if you don’t have one the small BlackBerry screen and Safari’s layout make it very readable.

  1. No Worries = More Reading = More Learning

Should I buy this?  I fought this question over and over again before Safari.  Now my battle is which book will I read next.  In the nine months or so of owning Safari I have read through six books and will finish my seventh soon.  I figure I will get another three in before the year is over.  That’s 10 books from cover to cover in a year. That doesn’t include the others I have browsed through, read a chapter here, looked at a code sample there.  I would easily say this is the most I have read in a year.  All thanks to the simple fact that I don’t have to shell out money every time I think I want to read a book.  There’s even been a couple of books on Safari that I started to read and then dropped after realizing I didn’t care for them.  Had I purchased the book outright I would have been disappointed.  Instead I feel liberated and empowered.

  1. Cost

Safari Offers two versions of it’s service for individuals.  The 10-slot bookshelf costs just over $250 a year and the unlimited access version weighs in at just under $475 as of this writing.  If you are like me the unlimited access version starts to feel a little costly but that’s the version I bought and have found it to be well worth to cost.

I have 47 books in my bookshelf currently.  If I bought each one at an average of $25 I would have shelled out nearly $1,200.  Let’s be honest though, I would not have bought all those books.  Instead let’s just say that I would have bought 10 of them since that’s what I believe I will have read completely through using Safari in a year.  I still would spend $250.  At the least, I have equaled the value of the 10-slot bookshelf.  It may be hard to find technology books for $25 average unless you buy used as much as possible.  If the average book cost $40 we are fast approaching the value of the unlimited bookshelf and don’t forget the shipping costs.

Now throw in the added features you get with Safari and I thinks it’s clear that Safari is a great tool well worth the price for any developer.

I have one nagging thought about Safari but it has nothing to do with it’s service.  I have no idea how author’s are compensated for book usage.  I hope it’s a good deal for them but I imagine it’s still not as good as buying a book outright.  Still, there’s a good chance I wouldn’t have bought the book in the first place so perhaps Safari is helping to increase their revenue. :-)

Happy coding, err… reading!

Posted 02.26.2010  #    Comments [0]  | 
# Saturday, 20 February 2010

This week I dived into two books that are both 100 pages give or take.  Both are fairly easy to get through and are worthy of bookshelf space.  My purpose of reading these was to get a better understanding of two practices of applying Agile principles.  I am an agile rookie who wants to understand/learn about ideas and practices that I could add to my toolkit. 

Agile Software Development With Scrum

This was an easy read especially with it’s case study focus to illustrate the idea or practice.  I felt the “spirit” of agile in the principles and found the practices shown in scrum enlightening. 

I gained a deeper understanding of the how the scrum master facilitates and leads only.  I found it intriguing that the scrum master does not make decisions.   The master is there to coach the team and even though I understood this I didn’t connect the empowerment of the team with the master not making the decisions (A duh moment).  It makes sense that if you want to empower the team to make decisions then you have to give them the power to decide.  I could see the old school mentality in my original thought process. 

The sprint is sacred.  Nothing can/should eek it's way in. This is a big key in ensuring the team stays focused and on task (or should I say feature).  If necessary a sprint can be killed if important enough and restarted with new focus.

The team’s daily stand up are for each other and no one else; not the scrum master, product owner, etc.  A particular story caught my attention on this.  The developers when giving their report were looking at and talking to the scrum master directly.  The meeting degenerated into a project / task status update where the team viewed the scrum master as a classic project manager.  A real test of a good stand up is the team should be looking and talking to each other because they are responsible to each other.  The scrum master is there to observe and if they see something that could use some coaching they should remain silent and look to mentor sometime after but not during the stand up.

Project management is featured based not task based.   Real success is not based on the adherence to a project plan.  It’s based on the delivery of the right features with the right functionality that the customer needs.  That doesn’t mean project management or a plan is thrown out the window.

For anyone trained old school this could be a hard transition and the case studies do a good job of illustrating people who hang on to their old ways and how to remedy the situation.

Lean Software Development

  • Eliminate waste does not mean throw away all documentation.

  • Amplify learning does not mean keep on changing your mind.

  • Decide as late as possible does not mean procrastinate.

  • Deliver as fast as possible does not mean rush and do sloppy work.

  • Empower the team does not mean abandon leadership.

  • Build integrity in does not mean big, upfront design.

  • See the whole does not mean ignore the details.

    These are statements directly from the book.  I can’t think of a better way to summarize this book.  Lean strikes me as less prescriptive in it’s practices than Scrum although I could be wrong on that.  Like the agile manifesto, it gives me guiding principles but at a lower level that one can use to help create practices.

    Both books are an excellent read even if you aren’t interested in applying them.  I can’t see how you won’t come away with a least something to consider for yourself or your team.

    If you are interested in applying these practices both books stressed technical practices as a must. Lean Software Development had very good advice to get started:

    • Start with hygiene. First of all, make sure that you have basic professional software development practices in place: a version-controlled code repository, coding standards, build automation, comprehensive testing, etc.

    A major key to Scrum and/or Lean or any other agile practice is the need for good technical practices.  If you only use Scrum/Lean as yet another project management methodology you are in trouble.

    Above all, each team/environment must adapt for their situation.  These are guiding principles and practices that need real world applied to them.

    As a newbie to agile I am sure I have not understood everything right or deeply enough.  Please let me know what you think.  I like to learn from others!

  • Happy Learning!

    Agile | Books | Lean | Process | Scrum
    Posted 02.20.2010  #    Comments [0]  | 
    # Friday, 08 January 2010

    In a couple of earlier posts I used jQuery to add a character counter to the ASP.Net AJAX HTML Editor.  I was contacted by a reader stating that when they modified the editor’s toolbar items the character counter stopped working.  After a small bit of troubleshooting I noticed the toolbar items drive the number of IFrames created.

    The fix is small but requires some sleuthing that we can do with firebug to identify the correct IFrame we should be targeting.  With firebug console and our browser open to the url for our application we can type in $('#Editor1').contents().find('iframe').eq(0).  This grabs the first IFrame.  Be sure to change "Editor1" to the name of your control.


    If we hover over the item in the brackets it will highlight the IFrame selected.  If the text area for the control isn’t highlighted then change the index value and try again until the text area is highlighted.


    To be sure we have the right IFrame, click on the item in the brackets and it shows the HTML.  Look for the text you typed in to be sure.


    Now that we’ve identified the correct index for the IFrame based on a customized editor we’ll need to change the GetEditor Function with this correct value.

    function GetEditor() {
        return editor = $(Editor1).contents().find('iframe').eq(0);

    You should be ready to go now! But wait! There’s more…

    I was dissatisfied with having to hunt for the correct index value and thankfully there is a better way.  I noticed while trying this out on several scenarios that the IFrame we want is given the same ID.  At first, I didn’t think this would work since the ID is assigned by ASP.Net but it seems in this case we can trust it (could be my famous last words).  The IFrame is always given an ID of ControlName_ctl02_ctl00 or in this case Editor1_ctl02_ctl00.

    Armed with this we can change the code to:

    function GetEditor() {
        return editor = $(Editor1 + '_ctl02_ctl00')

    That's a little better. We don't have to hunt for the correct index value for the IFrame used for the text.

    Please download the code and give it a spin! AjaxHtmlEditorV3.zip (1.01 MB)

    Happy Coding!

    Read the earlier posts.

    Posted 01.08.2010  #    Comments [2]  |