Thursday, March 31, 2005

Life or death

Now that Terry Schindler-Schiavo has finally passed, I'll document here my feelings on the matter.

I see it very simply. Any time a human being has the ability to choose whether another human being lives or dies, the choice must always fall on the side of life. Of course, a living will that, in writing, states that a person does not wish to live may change this.

In the Terry Schindler-Schiavo case, it was not clear what her feelings were. In this case, she must be (or should have been) allowed to live.

I agree with Pope John Paul II's statements, made a year ago:

"The intrinsic value and the personal dignity of every human being does not change no matter what the concrete situation of his life."

"The administration of water and food, even when provided by artificial means, always represents a natural means of preserving life, not a medical act."

"Considerations about the 'quality of life,' often actually dictated by psychological, social and economic pressures, cannot take precedence over general principles"

In this argument, I've heard several people argue that they would not want to "live that way." What does "that way" mean exactly? How can one measure the level of quality of life at which it is no longer acceptable to be alive?

Sisco Kid

My new issue of Baseball America arrived in the mail yesterday. I was pleasantly surprised to see a nice article about Royals pitching prospect Andy Sisco.

Sisco is a tall (6'9") left handed pitcher who throws with power (remind you of anyone?). He was drafted by the Cubs out of high school, and was so confident that he would lead them back to a championship, he had a Phoenix tattooed on his arm.

After a frustrating outing, he punched a clubhouse wall and broke his hand. As he struggled to recover, the Cubs left him off their 40 man roster and the Royals picked him up in the Rule 5 draft for $50,000. They must keep him on the major league roster for the entire season, or offer him back to the Cubs for $25,000. The Royals see enough promise in Sisco that they are willing to burn a roster spot for him. They hope he will be able to contribute this season, which would be a bonus. His performance in spring training made the decision easy. He pitched 7 innings, gave up 2 runs on 2 hits. He had 10 K's and 5 BB's and his ERA was 2.57. All respectible numbers.

If Sisco fulfills his promise, it will be another feather in Royals GM Allard Baird's cap. As a small-market GM, he's becoming very good and picking up productive players for next to nothing (see Denny Bautista).

Tuesday, March 29, 2005

Opening Day Lineup

Here is the announced line up for the Royals Opener in Detroit next Monday:
1David DeJesusCF
2Ruben Gotay2B
3Mike Sweeney1B
4Calvin PickeringDH
5Matt StairsRF
6Angel BerroaSS
7Terrence LongLF
8John BuckC
9Mark Teahen3B

Jose Lima gets the start.

All Star doesn't make the cut...

WHB is reporting that Ken Harvey did not make the 2005 Royals. Calvin Pickering will make the team as DH/1B. WHB is also announcing that Emil Brown will make the team as the right fielder and that Kyle Snyder will be sent to Omaha to begin work learning to be a reliever.

Harvey was the Royals' only All Star last year after hitting for a bloated average in early 2004. He then regressed and had a terrible second half, and apparently the Royals have finally seen his warts.

This is in keeping with the old baseball axiom... If the fat kid can hit, put him at first base.

May's Struggles

Today, when I was driving home from work, I listened to the end of the Royals-Padres game on XM Satellite Radio. The broadcast was that of the Padres' radio network, and the annoucers were discussing the Padres pitching rotation.

It seems Darrell May was slated as the fifth starter, but after having a terrible outing on Saturday, his position is in jeopardy. May gave up eight earned runs on nine hits and didn't make it out of the first inning.

While with the Royals last year, May (along with the rest of the team) struggled mightily. But unlike other stand up guys like Brian Anderson, May seemed reluctant to take responsibility for his own poor performance. I seem to remember one newspaper account that had him quoted as saying something like, "I can't hit or field, I can only pitch."

This attitude made it easy for the Royals to seek out a trading partner to send May on his way. The Padres responded, sending outfielder Terrence Long to the Royals in exchange for May.

After Saturday's horrible outing, May still seems to have that attitude:

"Mentally, it kind of pulls you down a little bit when you're giving up that many hits and that many runs in two-thirds of an inning. But it's Spring Training, and I've got to get past it."

The "it's just Spring Training" excuse is fine in February, but when you're one week away from Opening Day, you'd better be showing that you can pitch. May hasn't shown it, and so the Padres today acquired Tim Redding from the Astros.

Redding will most certainly lock up the fifth spot, leaving May out in the cold. May will probably end up in the bullpen as a long reliever or LOOGY. Based on May's reaction in 2004 when he was sent to the bullpen, he will complain about it. If only his performance had given them another choice...

Thursday, March 24, 2005

Back From Valleyland

I just returned from my trip to the Pheonix area for some Cactus League baseball. Along with my son Joey, my brother Harry, and Dan and his brother and father, we took in four games and countless hours of practice and workouts.

Our trip started on Saturday with a 7:00am flight to Pheonix. We grabbed our rental and headed straight to HoHoKam Park in Mesa. We browsed the team store before the gates opened at 10:30am. When the gates opened, we headed to our bleacher seats down the first base line and watched the Cubbies take BP. We scored a couple of baseballs and Cubs pitching prospect Jermaine VanBuren was kind enough to sign Joey's ball. Carlos Zambrano and the Cubs went on to beat the Brewers 4-2 in the split squad game.

After the game we found our hotel and had dinner at the Depot Cantina, a nice little Mexican spot we found during last year's trip.

On Sunday, we got up early so we could drive up to Surprise, about 35 miles northwest of downtown Phoenix. The Surprise Recreation Campus is a stunning 132 acre complex that includes baseball fields, youth fields, aquatic center, library and the beautiful 10,500 seat Surprise Stadium. The small city of Surprise took a chance and built the campus for their community, and then was able to lure both the Kansas City Royals and the Texas Rangers there to train. Since, the city has experience incredible growth in population and development.

The practice fields are located right next to the Stadium, and the gates opened at 10:00am. We wandered in and watch as the Royals went through their routines - stretching, long toss, a base running drill, then batting practice. (Matt Stairs told my brother Harry that stretching his arm with the bungee cord is "such a waste of time.") We were able to gather up a few more baseballs and autographs. We also wandered up to the minor fields to watch the prospects go through their workouts. At around noon, we walked over to the stadium to watch the Royals take on the Colorado Rockies. Unfortunately, Dennis Tankersly had a tough outing and the Royals ended up losing 6-3. On the positive side, Mike Wood started and continued his impressive spring with 3 perfect innings.

After the game, we headed to Streets of New York Pizza for an early dinner of wings and pizza. We showed our ticket stub for a nice discount and ate for only about $5 per person. What a bargain!

Sunday was much the same as Saturday with a trip back to the Surprise Recreation Campus. Again we watched the morning workouts, and scored some more autographs. I was standing next to an LA Dodgers fan when Jose Lima came by to sign some autographs. The fan was complaining to me earlier about his dissatisfaction with Dodger GM (and Moneyball guy) Paul DePodesta. While Lima was signing Joey's ball, the Dodger fan told Lima that he hopes Lima has a "monster year" to "send DePodesta a message." Lima responded with a curt "He's (DePodesta) an idiot." I guess not everybody is enthused about the Moneyball movement. Lima also said that he's going to be on the Jim Rome show this Friday. I'm going to try to catch the interview to hear what LimaTime has to say.

Sunday's game featured an impressive outing by Zack Grienke and the Royals pounded Cubs starter Ryan Dempster. Outfield prospect Emil Brown had a monster game going 3 for 3 with 5 RBI's. Jimmy Gobble struggled giving up 3 runs in 3 innings. The Royals won the game 12-5.

Sunday's dinner feature the exotic Arizona fare served at Applebee's.

On Monday, we retured to HoHoKam to again see the Cubs take on the Brewers. The Cubbies pulled this one out despite a questionable call. With the tying run on third and a runner at first, the Brewer batter hit a double play ball to short. The out was made at second but the Cubs first baseman failed to dig the throw out at first, allowing the tying run to score - or so we thought. The second base umpire ruled interferance on the runner at second, thus calling the batter out at first ending the game. We suspect the umpire had an appointment to make.

Monday was the first day that it really warmed up, reaching the mid seventies with the sun shining brightly. Overall, the trip was a blast, and I'm already looking forward to next year's trip. I gave my new camera quite a workout, and I hope to post pictures here soon.

We now look forward to the teams solidifying their rosters and getting the season underway. The Royals will open on April 4 in Detroit.

Tuesday, March 15, 2005

FitNesse Group

If you interested in the FitNesse testing tool, check out the FitNesse Yahoo Group:

Click to join fitnesse

Appier's Goodbye?

Last year, I wrote about how I thought I had seen Kevin Appier's final pitch in the majors.

He left a game early with pain in his arm. He then "retired" so that the Royals wouldn't have to pay him while he was out.

He reported to Spring Training this year hoping to earn a spot in an otherwise very young rotation. Appier's struggling this spring, and I have a feeling he won't make the team. Here are his stats so far this spring:

K Appier0012.71330005.27881057

I've always been a fan of Appier, especially in his first tour of duty in KC. But now I think it's best for him to move aside and give some younger guys a chance.

A few zingers

Joe Posnanski's column in today's Kansas City Star was a humorous look at this year's Kansas City Royals. In the column, JoPo points out that never before have the Royals been so disrespected. This is really the first year that the Royals have been picked to be dead last in the majors. This season, the Royals are the longest shot for making the World Series. And for good reason. The team is coming off a 104 loss season and made no obvious moves to improve themselves for 2005.

In the column, JoPo included some hilarious zingers he received when he asked for ideas for a Royals column:

“George Brett: A better hitter (now) than anyone on the 2005 Royals.”

“Royals vs. T-Bones: Royals superior at almost every position.”

“You should discuss the betting line on the annual Royals father-son game. The kids are favored.”

“The Royals plan: Why not new uniforms?”

“I would join in, but I don't know anything about the Royals.”

“The 2005 Royals: Where are they now?”

“The Kansas City Royals: Could they be a better football defense than the Chiefs?”

“The Kansas City Royals: At least our best players go somewhere other than the Yankees.”

“Jimmy Gobble — a fun name to yell!”

“Is Tony Peña currently the best catcher in a Royals uniform?”

“The Kansas City Royals passed all their drug tests — and it shows.”

Monday, March 14, 2005

It's a PocketPC, an MP3 Player, a PocketPC, a Scorebook!

I have a T-Mobile PocketPC Phone. On the bottom, it has an SD Card slot. I put an SD card in, and loaded it up with some MP3's. The bad thing about it is that since it's on the bottom of the phone, it tends to be ejected easily, and for some reason, my data disappears. Given the phone's somewhat small memory (32MB), I would like to make use of the SD Slot, but it's not very usefull if it keeps getting erased.

I've been considering getting a new phone. TMobile now offers an HP IPAQ h6315. The reviews I've ready have not been very good. If you're familiar with this phone, please email me and let me know your thoughts. I'd like to stick with a PocketPC phone because I love having over the air ActiveSync to my company's Exchange server, plus the ability to play games, and score baseball games on it.

Is Grienke really that good?

Dan stole some of my thunder with his post about Zack Grienke.

I was reading the 2005 edition of Baseball Prospectus in preparation for our annual trip to the Cactus League (We leave this Saturday morning). I was shocked to read BP's analysis of Grienke. Typically, BP has a negative tone to most of their player comments. But in Grienke's case, BP was absolutely glowing. In fact, PECOTA assigned Grienke a 0% collapse value. Unheard of.

So this begs the question - is Grienke really that good? There is a lot of debate on this question. Bill James has said that he doesn't believe Grienke has much upside because of his lack of an "out" pitch.

I don't have the tenacity or patience to do the analysis (see Dan's post for that), but I've seen Grienke pitch and I'm excited. He's a kid, and he's confident. He's not afraid to come after hitters, whether it's with a 94MPH fast ball or a 55MHP slow curve. Last season he quick pitched twice. In one case that I saw on TV, the umpire wasn't ready and he gave the hitter a walk, even though the pitch was right down the middle. His control is amazing. His only weakness last season was a tendency to give up the long ball. And of course, given his team's anemic offense, those homeruns usually cost him a win.

Grienke has struggled this spring. In 2 starts, he's carrying a bloated 19.64 ERA. After his first start, Grienke admitted he was trying to throw right down the middle. He said he was testing his ability to let the batter put the ball in play. They did, indeed.

Hopefully, Grienke will pitch in one of the Royals games I'll see in Arizona this week. I'm anxious to see for myself how his stuff is.

Friday, March 11, 2005

Thoughts on VB6, VB.NET and Developer Spite

A co-worker sent me a link to this article in eWeek. The article, entitled “Microsoft MVPs Say They Want Old VB Back,” discusses a petition that several MVPs have signed requesting Microsoft to reinstate support for Visual Basic 6.0.

When reading through the article, I thought it was interesting that many people seem to think that the migration from VB6 to VB.NET would be a smooth one. This is, of course folly and Microsoft is at fault. Microsoft built a Migration Wizard into Visual Studio .Net that sucks VB6 code in, fixes some syntax, and calls it VB.NET.

VB.NET and VB6 are completely different languages and a migration should never even be considered. Back when I was teaching Microsoft Official Curriculum classes on VB.NET, I always threw out the migration content and told students to not bother. If you have existing VB6 applications running and without problems, keep them. Build new applications on .NET, but leave those existing apps alone. When the time comes to replace the existing apps, then rebuild them in .NET.

I agree that Microsoft needs to some level of support for VB6, since there is so much code running on that platform. The article discusses a suggestion to create a VB.COM language that can be worked with in the Visual Studio.NET IDE. I like that idea. Much like C++, manage and unmanaged and both can be worked with in Visual Studio.

One other comment I’d like to make… Also in the email that my co-worker sent was a comment made by a well-known Fox Pro developer and author. I’ll paraphrase:

“.NET was created to make mediocre development teams more "productive". Good Fox Pro developers can and will continue to run rings around .NET developers in general.”

I don’t understand why developers feel so much spite for folks who develop in different languages. I work with several Fox Pro developers, and I have a great deal of respect for them and their work. I also respect those who write C++ code, Java code, and my fellow .NET developers. I don’t see the point in saying that just because a developer writes code in a particular language that they are any less productive than other developers. The quote above sounds like this person thinks all .NET developers are mediocre developers who are using the tool as a crutch.

The fact that the tool helps the developer so much is a good thing, in my opinion. When I was working on an InfoPath project last fall, I needed a Windows Service created that would automatically export data from SQL Server and create InfoPath forms from it. Is it bad that .NET gave me the tools to create this process in just a couple of hours? If I had spent a week building it in Fox Pro, would that have made me a better developer? I think my client, who was paying by the hour, was very happy with the way it turned out.

Some might think .NET was built for mediocre developers. I disagree. The beauty of .NET is that all the hard work has already been done and included in the Framework. That means I don’t have to do it, I can reuse it. That’s what we’re all after, right? Reuse, reuse, reuse.

Thursday, March 10, 2005

Test Driven Development

I’ve spent the last few days evaluating various automated testing tools. I’ve looked at Test Complete, FitNesse, and NUnit.

The one I’ve spent the most time with so far is TestComplete. This is an all-in-one testing tool that provides for unit testing, integration testing, acceptance testing, and load testing. It allows you to write script code that runs within the TestComplete user interface. It also allows you to record your activity (screens, mouse moves and clicks) so that you can repeat a series of events. The scripting tool seemed powerful enough to do most tasks, and it allows you to write your script in several different languages (C# script, Delphi, VB Script, Javascript).

It also includes hooks into various development tools. In my testing, I was able to tell TestComplete to run a C#.Net test harness application that I wrote. The test harness then made calls to some production code I had written that does various business rule processing tasks. When I ran the test, TestComplete fired up my test harness application, made the method calls are reported on their failure (if an exception was throw) or success. The integration also went the other way, allowing me to write code in my test harness application that interacted with TestComplete (for instance, writing some values to the test log).

I found TestComplete to be somewhat difficult to learn and not very intuitive. It is a very powerful tool that can do it all. Once I started to get the hang of it, I was able to fairly quickly develop some robust tests, but it took several hours before I got there.

The unit testing tool that I find most compelling is FitNesse. FitNesse is a Wiki-based tool that allows you to easily create unit tests, and aggregate those into test suites.

I wanted to test a little math application, so I created a test harness that called the Add method. The only requirement is that I reference the fit.dll library and that my test harness class extend fit.ColumnFixture.

Once I compiled my test harness, I could easily create a Wiki page to test it. I specify where to find the test harness .dll file, and I specify testing data and the expected results. The test is defined by building a table, similar to this:

!path C:\root\Math\MathClass.dll
a b TestAdd?
1 1 2
10 10 20
100 100 500

As you can see, the !path command tells FitNesse where to find my code. The table itself is built with values separated by bars. The first line specifies the namespace and class. The second line specifies the values to test and the method to call. In my code, I had to public integer fields (a and b), and a method called TestAdd. TestAdd calls my Add method in my production code, passing a and b.

The first test sets a to 1, sets b to 1, and calls the method. We’ve specified that we expect a 2. The second test passes 10 and 10 and expects 20. The third test passes 100 and 100 and expects 500 (this one should fail).

When we view the test page in the Wiki, it looks like this:

When we click the “Test” button, we get this:
100100500 expected

200 actual

Seeing the test results in this table makes it very easy to see the results. As long as the developer is disciplined enough to build a test table for each piece of code and tests it regularly, I can see where FitNesse would be a valuable unit testing tool.

Wednesday, March 09, 2005

A Painful Memory

Today's Kansas City Star features an article entitled "Gone - and forgotten."

The story is about the defining event in the Royals' disasterous 104 loss season last year. It was May 1. The Royals needed a stop-gap starter to make a start at Yankee Stadium. Many folks were hoping that young Zack Grienke would get the call. The Royals had gotten off to a disappointing start after expecting to win the AL Central. Most felt there was still time to right the ship, and injecting some excitement by promoting Grienke, who was at AAA Omaha, seemed like it might work. There was a lot of buzz around Grienke. Pena and Baird had both agreed his stuff was ready for the big leagues, but Baird wanted him to spend more time at Omaha to mature mentally. Baird said (I'm paraphrasing here) "Eating at Mortons is a lot different that eating at Taco Bell." So, Grienke stayed in Omaha while Villacis made the trip to New York.

The Royals promoted Eduardo Villacis from AA Wichita. Royals GM Allard Baird insisted he was ready; more ready than Grienke or any other pitcher at Omaha. (at the time, Jamie Wright and Kris Wilson were both at Omaha. Both had had previous Major League experience). Villacis reported to the Royals in New York, and his own players were asking "who's this?" Villacis was quoted: "I deserved it more than anybody else."

Says Baird: "It was the right move. I believed that then, and I believe that now."

At the time, Villacis had a total 18 2/3 innings above the Class A level.

Villacis didn't last 3 innings, the Royals got shelled, Villacis was demoted back to Wichita and eventually released, and the Royals went on to their worst season in history. It was after that game that Tony Pena guaranteed the Royals would win the division.

That one day defined the season for the Royals. Baird still believes he made the right decision. But did he? I believe it was one of the worst days in the history of the franchise. An embarrassment for the club.

Villacis is now in the White Sox system (although I thought I had read last fall that they had released him). Both he and the Royals are looking for a fresh start.

Tuesday, March 08, 2005

Agile Workshop

User Stories Applied with Mike Cohn

Last week I attended a 2-day workshop with Mike Cohn. Mike is the author of User Stories Applied. He is the founder of Mountain Goat Software and is a leader in the area of Agile methodologies.

The first day of the workshop focused on User Stories. As I wrote before, user stories are used as a tool for defining the tasks to be completed in an agile project. Typically, user stories are written from the perspective of a user of the software. For example, a user story might read like this:

As a bank teller, I would like to be able to look up a customer’s account information by entering their account number.

This user story is then written on a note card. The user stories for the project are created in a user story workshop. The workshop will typically be attended by the project sponsor, developers, and some users.

The workshop included several story writing exercises. The advantage of user stories is that they are smaller and easier to read than a large requirements document. User stories can be posted on a wall so they are easy for everybody involved to see and track. This is not possible with a large requirements document. Also, user stories are flexible, allowing for changing requirements as the project progresses. This is advantageous since features and priorities often change during the development of the project.

The second day of the workshop focused on estimating and planning agile projects. The content corresponds to Mike’s upcoming book on the subject. I have some experience in estimating a project in my last project, during which we used the agile methodology. Estimating user stories is done by deciding upon either a time or magnitude value to each user story. For example, the user story above about the bank teller might be estimated as an 8. What that 8 means is up to the participants. It might mean 8 days of “ideal engineering time” (which differs from elapsed time, of course). Magnitude could also be used to define a measure of work involved for each task.

Everybody involved in the project should also be involved in estimating so that there is a consensus. Once all of the user stories are estimated, a plan can be developed.

The crux of agile development (and any XP methodology) is iterative deployment. In this case, an iteration time is defined. This can be 30 days, 2 weeks or whatever makes sense for the project. The project manager then must determine how much each developer might accomplish in one iteration. Here’s an example:

There are a total of 10 users stories that total about 38 story points or “ideal engineering days” of work. There are two developers on the project. We determine that each developer can complete about 70% of an ideal engineering day in a work day. (we must account for meetings, interruptions, etc). Doing the calculations, we can determine that based on this first run of the estimate, it might take about 28 days to complete the project. (38 days of work * 8 hours = 304 hours. At 70%, each developer does about 5.6 hours of work each day. For one developer, it would take 55 days to work 304 hours, divide by 2 for two developers).

If we use 2 week iterations, we know that the two developers can complete about 14 story points per iteration. We then must divide the user stories based on priority and estimates into iterations. The user stories must not exceed 14 story points per iteration. To complete the iteration, the completed work is released and tested.

If any of the estimates were inaccurate, the remaining estimates and iteration plans are re-evaluated. This happens after each iteration. As the project progresses, the estimates become more and more accurate.

As the project progresses, there are standard reporting charts that can be used to help track status. Of course, an agile project will inevitably include features that are added or removed throughout the project, so the reports should accurately account for that.

The 2 day workshop was very beneficial for getting a general understanding of working with an agile methodology. One benefit of agile development is that it is very flexible, allowing organizations to ease into it a little bit at a time. And of course, my knowledge will only increase as I get more experience. I’m looking forward to working through more agile projects in the future.

Friday, March 04, 2005

More Pick

Great post by Dan on Calvin Pickering. I especially agree with Dan regarding the number of pitchers to carry on the major league roster. I recently heard that the Royals were considering carrying 12 or 13 pitchers. That extra pitcher would likely cost a roster spot for Pick. So the question is... would that marginal pitcher win more or fewer games than Pickering could. It it's late in a close game, I'd feel much better having an offensive weapon on the bench as opposed to yet another arm in the bullpen.

Regarding XM Radio's Home Plate channel... In the two weeks I've been listening, I hadn't yet heard anything about the Royals until this morning. When I got in the car, I caught the tail end of Larry Bowa discussing pitching phenom Zack Grienke. Grienke faced Bowa's Phillies last year and Bowa was impressed. He couldn't believe Grienke was only 20 years old at the time. The show also featured an interview with Royals interim third baseman Chris Truby. Truby is a marginal player at best who will keep the seat warm until Mark Teahan is ready for his promotion from AAA to the majors.

Tuesday, March 01, 2005

More Harvey

I had blogged before about Ken Harvey, and now
Rob & Rany have also talked about Ken Harvy (or "Grimace," as they affectionately call him). It's interesting that everybody seems to see through Harvey except for the Royals themselves who seem determined to give Harvey a job at the major league level. Given their logjam at first base (see today's Kansas City Star for an article on Calvin Pickering), the Royals would have been smart to package Grimace in a trade around the time they traded Beltran last year. Grimace had just played in the All Star Game, and was hitting for a good average at the time. Of course, the law of averages kicked in and Harvey's numbers crashed in the second half.

I'd be perfectly happy with a platoon of Sweeney and Pickering at first base this year.