Friday, April 30, 2004

Goodbye ODBC
While working with a client recently, I learned that Microsoft is planning to cut out support for ODBC data sources. In the case of this client, they still have some data in older, proprietary data sources that are only accessible through an ODBC DSN. They are attempting to move forward with some newer Microsoft technologies (SharePoint, for example), but cannot seem to link to this data source. I worked with Microsoft on this issue, and they directed me to this article.

The article states thats that it is strongly recommended to move to native OLE DB components. I thought the OLE DB provider for ODBC was a native OLE DB component (just one that has to communicate through the ODBC layer). This will make it difficult for companies who are still using older proprietary systems to move up to the newer technologies. For my client, they wanted to display data in a SharePoint web part, but this lack of support makes it impossible. In my opinion, it's still a little early to discontinue ODBC support.

Thursday, April 29, 2004

Foul, then fair
They say that at every baseball game, you will see something you've never seen before. This happened last night at Kauffman Stadium during the Royals/Rangers game.

It was the bottom of the fifth, the Royals were down 1-0. Two were on base, and Harvey was up to bat. He pulled a ball down the left field line that cleared the wall for an apparent homerun. Harvey circled bases when the third base umpired ruled the hit a homerun. The umpires then met to discuss the call, and overruled the call and ruled the hit a foul ball. Apparently, replays showed the ball passing just to the left of the foul pole, so the call was correct.

Harvey returned to the batters box, and Kenny Rogers and his catcher prepared to pitch to him again. They couldn't agree on a pitch, and then the Rangers' pitching coach Oral Herschiser came to the mound. The three met for a moment and agreed on a strategy for pitching to Harvey. The pitch came in, and Harvey promptly deposited it into the left field bullpen, clearly a fair ball and a three run homerun. That makes two "homeruns" on two consecutive pitches by the same batter. It's a crazy game.

Fortunately, the Royals pulled off a 5-3 victory. They'll play an afternoon getaway game today, so hopefully the Royals can build some momentum.
The Fenway Project
One of the best benefits of being a member of SABR, is that they send along a copy of each book they publish. So far, I've received two or three books, mostly collections of essays on the history of the game.

Yesterday in the mail, I received the latest SABR book, "The Fenway Project." This looks like an interesting book. According to the back cover, "On June 28, 2002, over seven hundred members of the Society for American Baseball Research (SABR) descended on Fenway Park for an interleague contest between the hometown Boston Red Sox and their National League rivals, the former Boston - now Atlanta - Braves. Sixty-four of these avid fans, historians, statisticians, and game enthusiasts recorded their experiences for this book."

So, what we have is a collection off essays from 64 different folks watching the same game. Some from the grandstands, some from the press box, the clubhouse, and behind the famous scoreboard. I'm looking forward to reading this collection.

Monday, April 26, 2004

Royal Weekend
It was another frustrating weekend for the Royals. On Friday night in a steady rain, my kids, mother-in-law and I watched as the Royals' bullpen refused to throw strikes. The relievers gave up 6 walks and 6 runs in the final two innings, losing their lead and the game 7-5. The late inning breakdown came after Jimmy Gobble pitched a gem in emergency duty. Kevin Appier got the start, worked a 1-2-3 first inning, and left the game after the first batter of the second inning. It appears his elbow is again hurting him. I have a feeling I witnessed the final pitch of Appier's great career. The Royals were up 5-1 after the fifth, and with the rain coming down, I was hoping the umpires would call the game giving the Royals a rain-shortened victory. But the rain let up and so did the pitching, letting the Twins steal one.

On Saturday, my wife and I enjoyed dinner at George Brett's restaurant on the Plaza in KC. Brett's is a very nice restaurant with excellent service and pretty good food. Of course, a small collection of photos, trophies and other artifacts are on display. We purchased a set of beer glasses that feature Brett's famous signature logo. And, at the stadium, the Royals got some offense and pounded the Twins 10-1. However, another emergency pitching performance was needed as Darrell May left with a groin injury. Sean Camp came into the game and pitched great to earn his first major league victory.

With the combination of shaky pitching and injuries, it seems logical to bring Zack Greinke up from Omaha. GM Allard Baird admits his stuff is ready for the majors, but wants him to get more seasoning in the minors.

Sunday was a real treat. My son's baseball team went to the game as a group. It was reunion day for the Fantasy Week participants, of which their coach was one. We sat in the left field outfield seats, and the Fantasy Campers hung out in the Royal Pavilion. The boys stood by the fence separating the regular concourse from the Pavilion, and coach Bill tried to bring various Royals Alumni members over to sign autographs. So, the boys ended up with their caps signed by guys like John Mayberry, Kevin Seitzer, Al Fitzmorris, and Brian MacRae. Of course, no matter who came over, the boys insisted on seeing George Brett. Finally, John Mayberry told the security guard that the boys in their Indians jerseys were with him, and to let them all into the Pavilion. I stood outside the gate until they finally returned with their caps signed by the great George Brett. They all had a blast, and it was neat to see those old players that I watched growing up. Maybe next year, I can go to Fantasy Camp....

Oh, and the Royals finally got some decent pitching Sunday, but couldn't hit in the clutch. Three times they had a runner on third with less than two outs, and yet failed to score. The Royals had the bases loaded with one out in the bottom of the ninth, but could only get one across and they lost 4-2.

Wednesday, April 21, 2004

Pocket PC Phone Update

After about 3 weeks, I must say I'm very happy with my Pocket PC Phone from T-Mobile. I had blogged earlier about problems with ActiveSync, but those seem to be going away, with only an occasional error. With this phone, I always have my current Inbox, Contacts and Calendar in my pocket. When a new email comes in (like the 30 or 40 spam messages I get a day), the phone will ding-a-ling at me, using the new push technology of Exchange 2003 and PocketPC 2003.

Dan apparently is still having no luck with ActiveSync on his phone. His is an older PocketPC 2002 phone that he upgraded to the Pocket PC 2003 OS.

The only complaint I have at this point is that the phone comes with only 32MB of memory. That's substandard for today's Pocket PC devices (most have 64MB). The Pocket PC I replaced with this phone had 64MB of memory, and I've found it much more difficult to have all of my apps loaded.

The newer devices have a built-in camera, which I've never considered very useful. That is, until I was in Memphis last week. I attended a Memphis Redbirds game at AutoZone Park. While wandering around this beautiful ballpark, I realized that I was wishing for a camera. If I had the camera/Pocket PC/Phone, I could have snapped some shots and sent them off via email right then and there.
A 15-5 Blow Out
It was nice to see the Royals finally get an easy win last night. They faced ex-Royal Chad Durbin and scored 5 in the top of the first. The offense continued and eventually scored 15 for the game. Interestingly, they didn't score at all in the 9th, when Laker, the Indians' backup catcher, pitched because of their depleted bullpen. He was tossing 75MPH BP balls up there, but the Royals couldn't do anything with them.

I doubt they'll have as much fun tonight against CC Sabathia. He's always tough on the Royals.

Friday, April 16, 2004

When to bunt?
Interesting discussion at Rob & Rany on the Royals. I didn't see the game, so this was the first I had heard of the play. But with the game tied, Pena decides to bunt with Santiago at the plate and the AL's fastest man, Rich Thompson on first, in an attempt to trade an out for a base. Bad move. It was late in a tie ballgame where runs are much more valuable, no outs. Thompson is pretty much a sure bet to steal the base (80% in the minors). Why give away an out, when you can get the base without giving up that out? Then, with a man on second, it's much more likely he will score with no outs than with one out (he could score without having to get a hit).

Instead, the bunt went right back to the pitcher, who turned and fired to second for the force and double-play. Pena is a great manager, but sometimes his infatuation with the bunt is too much. In this case, it may have cost them a win.
The Promise of Technology

Finally, technology has realized its promise. I give you.... the The Subservient Chicken.

Thursday, April 15, 2004

Baseball Is...

A few years ago, the Sunday edition of the Kansas City Star included a column by Greg Hall. In the column, Hall would cite comments made by various KC media (radio talk show hosts, sports anchors, play-by-play announcers), and provide his commentary on what they said.

He left the Star to pursue a radio career which was quickly ended when he was fired for a questionable skit he did on his show. He bounced around in various forms, and now his "Off The Couch" column can be read in the small Platte County Landmark newspaper. You can read the column on line at http://plattecountylandmark.com/ghall.htm.

Recently, Hall posted a verse that he wrote after the 1994 baseball strike. I'm reproducing it here for you to enjoy. (Mr. Hall, if you are opposed to my copying of your work, please let me know).

Baseball Is…

Baseball is grass, chalk and dirt
Displayed the same yet differently
In every park that has ever heard the words, "Play ball!"

Baseball is a passion that that bonds and divides all those who know it.

Baseball is a pair of hands stained with newsprint,
A set of eyes squinting to read a box score,
And a brow creased in an attempt to recreate a three-hour game from an inch-square block of type.

Baseball is the hat I wear to mow the lawn.

Baseball is a simple game of catch
And the never-ending search for the perfect knuckle ball.

Baseball is Willie vs. Mickey,
Gibson vs. Kofax
And Buddy Biancalana against the odds.

Baseball links Kansan and Missourian,
American and Japanese,
But most of all - father and son.

Baseball is the scent of spring,
The unmistakable sound of a double down the line,
And the face of a ten-year-old emerging from a pile of bodies
With a worthless yet priceless foul ball.

Baseball is a language of very simple words
That tells unbelievably magic tales.

Baseball is three brothers in the same uniform,
On the same team for one brief summer,
Captured forever in a black and white photo on the table by the couch.

Baseball is a glove on a shelf,
Oiled and tightly wrapped,
Slumbering through the stark winter months.

Baseball is some Elmer's glue, a couple of finishing nails, a hammer and some black tape,
Lovingly applied in an attempt to coax a few more innings out of a splintered Louisville Slugger.

Baseball is the foreign sensation you get when placing your hand in someone else's glove.

Baseball is Mark Sawatski swiping his mom's Oxydol
To "chalk" the lines for our neighborhood sandlot game of the week.

Baseball is the smell of a freshly screen-printed jersey,
In the hands of an 11-year-old who just made the team.

Baseball is the way generations compare themselves and their idols.

Baseball is molding the bill of your cap to your own personal specifications.

Baseball is a breast pocket bulging with a transistor radio.
Baseball is the reason there are transistor radios.

Baseball is a fifth-grade history class huddled around Sister Irma and her Philco,
On a sunny October afternoon.

Baseball is sitting in your car on a humid summer night,
Listening to the play-by-play on the only radio that will pick up the game.

Baseball is a voice in a box,
Describing men you've never met,
In a place you've never been,
Doing things you'll never have the chance to do.

Baseball is the potential for a no-hitter with every national anthem.

Baseball is 90 feet of anticipation.

Baseball is my dad hollering score updates upstairs after mom had long ago sent us to bed.

Baseball is the acquired art of extending the life of a hard ball,
With knots, tape and spit,
Until the round rubber center reveals itself and ends the day's game.

Baseball is a shoestring catch,
A booted ground ball,
And even a Clete Boyer.
But it's not a game for loafers.

Baseball is the numbing sting of a fastball off the fists of a batter on a cold April night.

Baseball is knowing when to run,
When to stop,
And when to slide.

Baseball is a thinking man's game that takes no brains to excel at.

Baseball is a tear rolling down the cheek of a child in uniform,
As he watches a thunderstorm wash out the day's game.

Baseball is a scribbled and blotched scorecard,
That can make 6-4-3 look like a ballet.

Baseball is fireworks at the ball park every Fourth of July.

Baseball is experimenting with the grip of a baseball,
In the hopes of inventing a new and unhittable pitch.

Baseball is pepper, three-flies up, five-hundred and home run derby,
Played by kids in every schoolyard since before Babe Ruth.

Baseball is imitating every nuance of the stance of your favorite player.

Baseball is determining who gets "first-ups" by strangling the neck of a bat.

Baseball is the anguish you feel when a Yankee gets traded to the Red Sox.

Baseball is how I learned my geography.

Baseball is the four-inch-high trophy that I have never thrown away.

Baseball is taught by dads to sons,
In hopes that the boy will master the game that the man did not.

Baseball is a dream that you never really give up on.

Baseball is precious,
Baseball is timeless,
Baseball is forever.

By Greg Hall of Kansas City, Missouri




Pitching
In fact, I did have a beer last night. I had dinner with fellow Quilogy employee Jon Box, Microsoft RD for Memphis and co-author of Building Solutions with the Microsoft .NET Compact Framework.

We had a good discussion about some upcoming Microsoft items, including the Whidbey release of Visual Studio. Of course, the conversation ultimately turned to baseball in the end.

Upon returning to my hotel room, I found that the Royals pitching again was poor in yesterday's game against the White Sox. This game was especially painful, since the Royals were down 6-0, came back to take the lead in the top of the ninth, only to lose it in the bottom of the ninth when interim closer Curtis Leskanic failed to close it out.

Jeremy Affeldt got the start, and struggled again. Today, soft tossing lefty Brian Anderson gets the start, and I have a feeling it will be another big day for the Sox offense. The Royals pitching has me wanting to move up from beer to the hard stuff....

Wednesday, April 14, 2004

IsPostBack in WebParts
I just finished a research project for a client. The issue involved dynamically creating a DataViewWebPart object, tying it to some data (using XML files) and displaying it in a custom web part.

The client was able to build the web part just fine. When he tried to use some of the functionality of the DataView, like Sorting or Filtering, the DataView would not behave correctly. It would simply refresh itself in its original state.

I started looking at this, in my case I decided to use a DataGrid control to test it. With the ASP.NET DataGrid control, it's pretty easy to bind some data to it, and then to implement column sorting using the SortCommand event of the DataGrid.

I built my web part, implemented the SortCommand event and tested and got the same behavior. When I clicked a column to sort, it simply refreshed itself as it was originally.

Since I was creating the DataGrid and doing the binding in the CreateChildControls event of the web part, this event was firing over and over, essentially rebinding the control to the original data each time.

I figured I could then check for IsPostBack to avoid this databinding once the page had already been requested once. This didn't work either. I found in this MSDN article a discussion about how IsPostBack doesn't work in a WebPart, even though web parts are simply web user controls.

So, in the Load event of the DataGrid, I did a simple test to see if the grid already had data in it, and if not, then did the databinding. This way, the grid is being reloaded with ViewState instead of my databinding.

Private Sub _dg_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles _dg.Load
    If sender.Items.Count = 0 Then
        sender.DataSource = CreateDataSource() 'CreateDataSource creates & returns a DataView object
        sender.DataBind()
    End If
End Sub

This fixes the issue, which causes me to want to drink a beer. :)
More Pitching Woes
Right on cue, the Royals illustrated my point in my previous blog about Royals Pitching. Yesterday, Darrell May had another poor start, giving up 7 earned runs in 5 innings. So far, no Royals starter has a win. Their combined ERA is 7.07. Only one starter, Jimmy Gobble, has had a "quality start."

Today, Jeremy Affeldt will try to improve on his previous performance when he faces the White Sox. In his last outing, Affeldt gave up 9 hits, 6 earned runs, 2 walks and most surprisingly, no strikeouts. The rotation is a major concern for this team.

I only hope that getting Appier back into the rotation (he pitched with in a rehab start in Wichita, and is scheduled to start against the Twins this Saturday) will help. I'm not a big fan of the all-lefty rotation. I also look to see pitching phenom Zack Grienke called up from Omaha soon if the rotation doesn't show signs of life.

Monday, April 12, 2004

Bud Selig Fan Club

Check out Doug Pappas' Bud Selig Fan Club Blog ("All B.S. All The Time"). Pappas is an author for Baseball Prospectus. Some very funny stuff...
Importance of Pitching
The Royals are 4-2 and in second place in the AL Central. The main thing I've observed with the Royals is their lack of pitching. They've gotten "lucky" in a couple of games, tying or winning in the 9th. But the pitching is concerning me. The Royals started the season with a rotation of all left-handed pitchers. So far, the starters are struggling.

Brian Anderson - 0-0, 10.00 ERA
Darrell May - 0-1, 7.20 ERA
Jeremy Affeldt - 0-1, 9.53 ERA
Jimmy Gobble - 0-0, 0.00 ERA

Gobble is the only starter to have a good outing. The staff "ace," Anderson, has had 2 poor outings. The pitcher that everybody expected to do especially well, Affeldt, struggled in his first start, giving up 9 hits, 2 balks, and no strikeouts.

Dennys Reyes had a spot start yesterday and pitched well. But if the starters don't begin pitching better, this could be a very long season. So far, the bullpen has done well. Five relievers have an ERA of under 2.00, and 4 have an ERA of 0.00. But this bullpen can't keep up this pace for long, especially when the starters are leaving games in the fourth or fifth inning.

This rotation was patched together after injuries to Kyle Snyder and Miguel Asencio. Also out for the year is Runelvys Hernandez, who pitched well early last year. Kevin Appier will be starting in a rehab game for AA Wichita tonight, and if all goes well, he should start for the Royals on Saturday. That will give the Royals a much needed right-hander in the rotation. But Appier is nearing the end of his career, and the Royals can't expect him to be the savior.

For the Royals to contend this season, the top three starters need to begin getting more outs and giving up fewer runs. Affeldt especially needs to begin pitching to his ability. For years, he's been touted as a dominating pitcher. With the blister problems solved, it's time for him to step up and become the stopper for this team.

The offense will play well this season, and should have little trouble putting up runs. Looking at the pitching so far, they will need every one of those runs.

Thursday, April 08, 2004

My day at the ballpark
On Monday, my family and I ventured out to Kauffman Stadium for the Opening Day game between the Royals and White Sox. Our seats were about 4 rows from the top of the upper deck, straight up from first base. It was a glorious day, sunny and 73 degrees.

The pre-game ceremonies included Royals Alumni players holding an oversized American Flag, an Air Force fly-over, and a bald eagle flying into the stadium to the pitching mound.

The game itself was great in the end, but for 8 innings wasn't too great for Royals fans. Royals starter Brian Anderson struggled, and the Royals found themselves down 7-3 going into the ninth inning. After several moves by both managers (pinch hitters for Pena, relievers for Guillen), the Royals had two runners on and light-hitting Mendy Lopez at the plate. Mendy worked the count to 3-1, then put the next pitch over the left-center field wall to tie the game. Angel Berroa followed with a single, which brought up Carlos Beltran. Beltran found a pitch he liked, and hit it over the left field wall, off the Mountain Dew sign. The walk-off homer secured an opening day win for the Royals for the second consecutive year.

Of course the stadium went nuts. Last year, after Sweeney hit a game-winning hit, his neck was injured when his teammates pounded him on the head in celebration. On Monday, Beltran threw his helmet off before reaching the mob of players at home plate. He later acknowledged that he didn't want the guys to pound him on the head like Sweeney.

A new feature of MLB broadcasts this year is in-game interviews. In this case, the Royals radio broadcast was able to interview Beltran live right after he hit the homerun. You could hear the excitement in his voice. It's nice to hear the raw excitement in the players, in contrast to the normal, pre-determined cliche comments they usually make when interviewed in the clubhouse.
Office Development
Yesterday, I presented at the Microsoft Office System 2003 event in Wichita, KS. The thing I like about doing these presentations is that I usually learn new things in the process. In this case, I was introduced to the Office Tools for Visual Studio.

Using these tools, I can write managed code to work with an Office document. Currently the tools support Word and Excel, but other products are in development. As an example, I could write some code that queries a Web Service for some information when an Excel worksheet opens. The code can take the results of that query and place the data into the sheet, so the sheet always opens with the most current data.

In another demo for the presentation, I added two command buttons to a spreadsheet, then wrote managed code to respond to the click events of those buttons. One exports the spreadsheet data as an XML document, the other loads XML data into the spreadsheet.

Using the VS tools for Office and the Office System's new XML support, it becomes very easy for developers to build solutions with Office that can also share data with other systems.

Monday, April 05, 2004

Opening Day
Opening Day is finally here. Forget Japan. Forget "opening night" on ESPN2. This is the real Opening Day. It begins, as tradition dictates, in Cincinnati, and is followed up with games throughout baseball. Here in Kansas City, the Royals begin their season with a 2:10 CDT game against the Chicago White Sox. The weather is going to be perfect (clear and about 70 degrees), the stadium will be packed (even the standing room only tickets are sold out), and the Royals will get a win (at least I hope so).

Last year was my first Opening Day. I've been wanting to go ever since I was a kid. It didn't disappoint. It was the most glorious day in recent memory. The weather, like today, was beautiful, and the Royals came away with an impressive win.

Here's hoping today lives up to the billing.

Friday, April 02, 2004

Everything but the Sync

Well, I've been playing around with my new Pocket PC phone for about 3 days now. ActiveSync has been working about 50% of the time. When the sync works, it's the best device I could ever imagine having. When the sync isn't working, it's irritating.

I'm trying to use the phone to do over-the-air sync's to my company's Exchange server. Most of the time, I will get an error on my device that says my account does not have permissions to do the operation. Then, suddenly, it will start working. That's happened twice. Yesterday, around lunch time, it started working and it worked fine for over 24 hours. This afternoon, however, I needed to reset the device after installing a game that wouldn't run properly. After the reset, no sync.

Here's an oddity I found though. If I go into the ActiveSync properties, and enter an invalid password, then try to sync, it will stop and request a password. I enter the correct password, and it will sync okay. Subsequent sync's however, won't work. At least not until I save an incorrect password again.

If there are any Exchange experts who have worked through this problem before, please email me. I'd love to try to get this thing figured out.