"is a Japanese word describing detailed choreographed patterns of movements practiced either solo or in pairs. Kata are used in many traditional Japanese arts such as theater forms like kabuki and schools of tea ceremony (chadÅ), but are most commonly known for the presence in the martial arts. ..."
I am going to start blogging regularly whether I have anything to say or not. Sometimes it feels like I may not be ready to put my thoughts down in a complete well formed manner; however, because of a desire to form some new professional habits I am going to try to blog daily. To form a discipline habit.
Today's topic is the Software Kata.
The idea of the Software Kata is not my own but this idea resonates with me. Here is a link to Dave Thomas's Kata page.
I have not been thinking about computer science algorithms or even programming task in particular. I have been thinking about the routine stuff I do on my laptop everyday. I don't want the routine stuff to get in the way of the more important task of the day. If you watch a musician, painter, gymnast, or martial artist when they are performing it is a exhilarating. After watching a good musician I become inspired to pick up my bass and immediately start working on my routines.
Now with another favorite thing of mine. Developing software I want to develop those kind of abilities as well. I want the operation of me and this machine to be similar to that of a musician and their instrument.
I was at work and I asked a colleague a question and he proceeded to perform several operations on his machine. I noticed how quickly and gracefully he navigated the file system, files, and applications. In fact from that moment on I kept that experience in mind and mentioned it to several other developers in the group and they had noticed this persons grace as well. All of a sudden I felt like a kid holding his first guitar, strumming the strings and really not knowing what else to do.
My plan is to use software Kata's developed for everthing from the simplest to the more complex things in my profession. I will practice these Kata's dajavascript:void(0)ily, weekly, and monthly. I know with continued focus in this area I can bring my level up to a much higher level of grace and elegance. After all this stuff is fun why let the machine and my clunky interactions get in the way!
Saturday, March 27, 2010
Tuesday, July 28, 2009
Thursday, April 23, 2009
Ok I need to write this down while I am thinking about it. I am working on getting a Grails application up and running using LDAP (Active Directory) for authentication. I created a new app and following this tutorial
http://www.grails.org/AcegiSecurity+Plugin+-+LDAP+Tutorial
and then ran into problems. I later found out that the step
http://www.grails.org/AcegiSecurity+Plugin+-+LDAP+Tutorial
and then ran into problems. I later found out that the step
create-auth-domains User Role
was wrong and that it really needs to be
create-auth-domains User Role Requestmap
Sunday, December 28, 2008
Saturday, December 20, 2008
Hibernate issue in Grails
I have an object Person that contains many Resume objects. The application is for managing your personal work information and presenting that in multiple resume formats. This issue is that when using GORM in Grails I want the main layout to list all the person's available resumes along the side bar of the application. No problem except that sitemesh the framework used by Grails to control site layout and templating explodes with a Lazy Load exception when trying to render the list of resumes from the current logged in person object. I read a little and found out that the OpenSessionInViewFilter opens a session and binds it to the thread, like expected, but before sitemesh has completed rendering the view it appears that the clean up of closing the Hibernate session has already occured causing the lazy load problem.
No problem a few google searches later and I have some code that looks like:
import org.hibernate.FetchMode as FM
def c = Person.createCriteria()
Person person = c.get{
eq("username",params.username)
fetch("resumes",FM.EAGER)
}
Turns out this works fine, however when using this invoking this after creating a new resume. So the scenario of walking through a series of screens to create a new resume and then going back home to the user's home page where the resumes are displayed as links in the sidebar again blows up with the Object already in session.
The solution to this issue is to not call save at the end of the flow for creating a resume but rather call the merge method this will clean up the Hibernate session and allow the above EAGER fetch to proceed without additional problems.
if( !resume.merge() ){
// do something
}
Friday, December 19, 2008
Changing the Default JDK for Netbeans 6.5 on the Mac OS X platform
I need to jot this down before I lose it. So here it goes.
1. ) From a terminal window go to
/Applications/Netbeans/Netbeans 6.5.ap/Contents/Resources/NetBeans/etc/
2. ) open up the netbeans.conf file and edit the following line to look like
netbeans_jdkhome=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Thats it!!
I hope that helps you. Restart Netbeans if you haven't already.
Wednesday, April 11, 2007
Subscribe to:
Posts (Atom)