Saturday, October 30, 2010

New Blog Location


My new blog location is at 

All the posts have been imported. So, come on over !  :)

Sunday, November 29, 2009

People Who Care And Share

Originally uploaded by zenera

It's wonderful that people care enough to share. People care about the gifts they have and share the fruits of their gift with the world.

From the software world, this can lead to books such as Clean Code by Uncle Bob Martin. From Flickr, it can be zenera who posts wonderful photos and shares them freely.

Thank you all. I am grateful.

Saturday, September 19, 2009

Be Privileged And Skip JavaScript's Prototype

Reading Pro JavaScript's second chapter "Object-Oriented JavaScript" reminded me that I do not use the prototype property to add public methods to a JavaScript object. I use "Privileged Methods" (pg 36) instead.

In the book, John refers to Douglas Crockford's JavaScript site and the Privileged technique described in the web page titled Private Members in JavaScript. I quote from the web page:
"A privileged method is able to access the private variables and methods, and is itself accessible to the public methods and the outside."

If you are looking for more code examples beyond what Douglas Crockford provides, Quizzpot shows more code examples at Private and privileged methods in JavaScript

Using Privileged Methods is a great technique when coding JavaScript objects. Have fun doing it.

Sunday, August 16, 2009

JavaScript, TDD, JQuery

In the area of Ajax and JavaScript, the rate of change has increased where I work. I believe this is reflective of the industry in general.

Since there is so much for one to look at, people will want to focus on those things which are essential.

Items of immediate interest are (in no particular order):
James Carr and I had fun integrating Hudson with JsTestDriver. It's a good step towards TDDing JavaScript.

Here's to the future

Sunday, February 1, 2009

Corey Haines and Code Katas

Surrounded by the smell of burnt popcorn and listening to the video Road Thoughts - Practice : 'Doing it right' vs 'Getting it done' really drove home some thoughts.

Do Katas. Do the same problems over and over again. Apply different techniques and approaches. Some quotes from the video:
  • "don't wait for those things to be ingrained..." over time.
  • Practice. "1 hour a day; as much as you can."
  • "Write small problems or solutions to a problem."
Practicing is essential. Practicing effectively is the goal. Practicing efficiently is a challenge.

For a Refactoring kata, what may work for you is setting up some code that needs to be refactored along with the needed JUnit Tests. Once at a satisfactory level of refactoring, you can blow away the refactored solution and refactor again from the start. Where to store such an exercise or Refactoring starting point?

I have given some thought to creating a Java project using Google's Project Hosting that contains things to practice on. I could apply the following labels to the project; label:Java label:kata. There are a couple projects in there now with those labels. I even see a "java-katas" project, but it is currently void of code.

Another thing to think about is practicing with a framework such as Struts2. Perhaps another project could be created which has the labels of Java, kata, struts2.

If Maven 2 is gaining enough popularity, maybe an even better solution is to create Maven archetypes which contain everything you need to practice particular things. Imagine creating a temporary project that is based off a starter template/archetype. Everything you need is downloaded automatically and you're ready to practice.

Well, good luck to you in your quest to practice. Time for me to practice and eat more carefully prepared popcorn.

Update! (March 15, 2009) - now exists.

Wednesday, November 26, 2008

Wrapping 3rd Party Code Is Clean Code Crafty

The Clean Code book by Robert C. Martin has great points about system boundaries. In chapter 8 titled Boundaries and in the section called Using Third-Party Code, the book shares why and how to wrap 3rd party code.

Points For Why To Wrap Third Party Code (page 115):
  1. The third party code can evolve
  2. Your wrapper's interface can be made to precisely suit your application's needs
Like the book says on page 115, "If you use a boundary interface like Map, keep it inside the class, or close family of classes, where it is used."

That's huge! I also like the "Sensors" class example which has a method that will give you a "Sensor" class. Sensors giving you a Sensor, implies a naming rule-of-thumb which I also like.

Saturday, November 1, 2008

Pair Programming - Pair Share Feedback

I discovered that the most satisfying pair programming experience is when the following cycle happens:
  1. Pair
  2. Share
  3. Feedback
Pair - You do the work. You Pair Program.

Share - I share or my partner shares knowledge. Beyond sharing while pairing, this can be additional followup information. Most recently, this was in the form of a follow up email from me with resources.

Feedback - Feedback on the knowledge and the pair programming experience itself is exchanged.

Pair, Share, Feedback. Yes!