Sunday, November 4, 2012

Cool New Scrum Retrospetcive Tool

One of the problems common in starting a scrum team is just getting your tooling in place.  You can find many tools to handle the sprint process, but what about the meetings?  Most groups wind up putting together some sort of document repository and treat their meetings just like any other.  In scrum, that means having a predefined structure for the meeting and having someone watching the clock to keep things on track.  It's also difficult to keep things moving along when you have a distributed team.

Enter Sensei.  A great utility to keep those meetings moving.  Check it out, it's free.  It makes it simple to jump right into your retrospective and get right down to business.  You'll come away from your meeting with a well organized plan for improving your process in your next sprint.

Friday, August 17, 2012

ORM tries to update zero records and fails

Here's one for the Doh! pile.  When using CFOrm, I generally create an init() function that gets run when an entity is created.  In this case, I had used the native id property from MySql to populate the key for the entity.  In the init method, I had set that to zero to make sure that a numeric value was created and added to that property.  Big mistake.

If the entity has a value for it's identity property, executing entitySave() attempts to update that record.  Since I had created a new entity, it doesn't exist when the save is attempted and throws an error.


The solution is simply to not pre-populate that property.  ORM expects that property to not exist when a save is executed.  When you do that, a new record is created and the entity is populated automatically with the new ID value.

Sometimes the error messages from ORM are less than intuitive.

Sunday, July 22, 2012

ORMSearch throws error without a field

If you get an error when performing an ORMSearch that looks something like:
Error occured while seaching indexes for entity myEntity: null.

Chances are you have not supplied a field to use in the search.  The Lucerne search engine behaves erratically when it doesn't have a field to search.  

You can do one of two things, 1) supply a lucerne style of search string which is in the form of field:search string, or 2) a simple string in the search string and a field (or list of fields) in the fields attribute. 

I had a lot of trouble identifying what was actually happening here, so I hope this helps. 

Wednesday, May 23, 2012

CF10 ORM debugging output on OS X

Ok, I've spent several hours trying to figure out the best way to monitor my cform debugging info on OS X.  I used to just launch cf from the console and all the ORM debugging info would be logged in the window.  Now that jrun is gone, I was not seeing any output.

I did find that the debugging info was being sent to the hibernate.log file in my cfusion folder.  I guess I could live with that if I had a nice tail viewer.  That would have been a no brainer if I still used cfbuilder, but I got soooo tired of waiting for it to crank up and dealing with all the project configuration that now I primarily use Sublime Text 2 as my main editor.

Never fear, there is a great tool already included with OS X.  In fact, all you have to do is just double click on the log file and it will fire up in the OS X terminal.  Hit clear display and boom.  You have a tail viewer with content from your current session.  It works great and you can scroll around even easier than in the terminal.

Friday, January 6, 2012

Adding Less encoding to Sublime Text 2

Since Less is a superset of css, you can get sublime to use the CSS module for your less files. You only need to modify one little file.

Open the CSS.tmLanguage file in ST. On a mac, it's located in ~/Library/Application Support/Sublime Text 2/Packages/CSS.

Look for this part of the file

    <string>less</string> <- add this line

Once you do that, when you open a .less file, you'll get pretty good color coding and all of the normal css sippets. Of course you won't get support for the less additions to css because that would require some actual work. You'll still get about 80% coverage.