# Monday, June 30, 2003

No no I can't tell you that yet, it is secret. EMEA VP Jean-Philippe Courtois will announce the winner of the Imagine Cup tomorrow at the Keynote. I saw all 15 teams and it was great. I am tired, I had to get a 20 minute demo from each team from 10am until 5pm.

I will be quoted tomorrow in the MS Press Release on the Imagine Cup, so look for that. Keeping this to myself is KILLING me. :)

What I liked is that the UK team were 1st year Java students and used .NET for the Cup. Now they are CONVERTS. This is a big win for Microsoft, getting .NET in front of students, if only University CS departments were not so biased. This is a big problem, Universities pretend that Microsoft doesn't exist and like it or not, Microsoft is a huge player in the Real World. The Universities are doing their students a real disservice. All I am asking for is a more balanced curriculum!

 

posted on Monday, June 30, 2003 12:04:22 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [11] Trackback

Let the Games Begin!

The long awaited Imagine Cup has begun here at  TechED Europe in Barcelona. So far so good, the students are motivated and the Web Services look cool. I have already looked at the teams from Australia, India, USA, Japan, France, Russina and Germany. Stay tuned!!

posted on Monday, June 30, 2003 7:26:48 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [12] Trackback
# Sunday, June 29, 2003

Istanbul, Istanbul, Istanbul-Rome?

 

That is what the Tunisian customs agent asked Nasser Ghazi, Goksin Bakir, Selcuk Uzun and I as we stood in customs on our departure from Tunis. Nasser had the idea that we all travel through the customs together, so the customs agent was confused since Nasser, Goskin and Selcuk all were traveling to Istanbul and I was traveling to Rome. I tried to explain that by Monday night we all would be in Barcelona together. Needless to say we got through and began our journey to TechEd.

 

I have arrived in Spain for TechEd and the Imagine Cup. I have always been committed to Universities (see yesterday's blog), so the Imagine Cup is special for me. Tonight is dinner with the other judges (I think there are 5 of us from around the world) and the organizers of the event. The competition gets heated tomorrow (Monday June 30.) You can follow here in my blog or you can check out the team specs here.

posted on Sunday, June 29, 2003 7:46:27 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [20] Trackback
# Saturday, June 28, 2003

Microsoft and the Developing World (Social Responsibility)

The North African Developers Conference 2003 ended today. In a region where Microsoft estimates that there are only 5,000 developers, we had 1,000 developers attend. How about that reach! It was so successful that Microsoft will do it again next year in Marrakech, Morocco. On the heels of the success last week of the PDC in Karachi, Pakistan (1,400 attendees) and this week in Tunis (1,000 attendees), I have seen Microsoft success in the developing world and a momentum is there.

 

Nasser Khan Ghazi, who is in charge of Microsoft evangelism for MEA or Middle East and Africa has now vowed to make these events annual and build off their successes. We discussed the rate of mobility adoption in Sub-Saharan African and contemplated an African Mobility Tour as well as events in the Middle East, South Africa, Istanbul, and Jordan.

 

What is great was the amount of students attending the conference. (I have a special love for bringing current technology to Academia, hence my involvement with the Imagine Cup in Spain next week.) I was speaking to a few students in Tunis (many were female) and they all inspired me with their drive and dedication. I also spoke at length with a Professor of Computer Science from Algeria about the pros and cons of the western content in the Middle East. We decided that it is a two way street, while Microsoft has great content in English and sometimes even localized in French and Arabic, the Universities need to pitch in some more. And he was practicing what we decided since he came from Algeria to Tunis for the conference.

 

Nasser and I talked about a Microsoft plan to take one developing country (Pakistan and Nigeria are the frontrunners) and making it a model for investment by Microsoft (and others). I believe that Microsoft has a social responsibility to lead by example, which they clearly have every intention of doing. Bill Gates has chosen MEA as the area to start this focus. This can only be win win for Microsoft and the region. Microsoft will of course see a longer term financial benefit, but the main objective here is social responsibility. The developing world will of course gain in the investment (especially countries like Iraq and Afghanistan which are emerging out of years of hardship and recent war.)

 

The plan is good because it is all about empowering people with technology in schools, libraries, women centers, and poor areas. Evangelism and education for current and future developers would also be very important (that means more travel for me). Then use that example as a showcase for the region. Right now it is a plan on paper, who knows where it will go. I am optimistic. I am glad that I can play a small part in this initiative.

 

Some Fun time...

After my sessions yesterday I also visited Carthage. Then I had dinner last night with Andrew (and his wife Laruen), Clemens, Malek and Nasser. We chatted about the developing world, BizTalk, Indigo, .NET Branding, and the RD program. We also talked about the upcomming Imagine Cup in Spain. Today was a free day in Tunis, visited some great sites. The medina, or city, is a wealth of ancient palaces, mosques and centers of trade and learning, truly a living museum.

posted on Saturday, June 28, 2003 5:08:06 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [10] Trackback
# Friday, June 27, 2003

DataGrid Nirvana

 

Last night us RDs went to a traditional North African sheesha (looks like a fancy bong) bar to smoke fancy tobacco. We even got Andrew Brust to smoke out of it (apple flavored tobacco)! All done with my sessions, so Goksin and I will go visit historic Carthage.

 

North African developers love the ASP .NET DataGrid. My session, Asp .Net DataGrid Drill Down (Code and Slide Download) was so much fun and fun was had by all. The sorting code went over very well. here is the code we spent the most time on:

private void SortGrid(object source,DataGridSortCommandEventArgs e)

{

//SQL String that will be used

string strSQL = "Select * From Customers";

//the Order By

string strOrderBy = "ASC";

 

//See what the viewstate has for the sortfield and ASC/DESC

if (e.SortExpression.ToString() == ViewState["sortField"].ToString())

{

//a match, see if ASC or DESC

strOrderBy = ViewState["sortDirection"].ToString();

//now toggle the viewstate for later

switch (strOrderBy)

{

case "ASC":

ViewState["sortDirection"] = "DESC";

break;

case "DESC":

ViewState["sortDirection"] = "ASC";

break;

}

}

else

{

//New Field, so it will be ASC by default, so make DESC

ViewState["sortField"] = e.SortExpression.ToString();

ViewState["sortDirection"] = "DESC";

}

//SQL statement compelted

strSQL = strSQL + " " + " ORDER BY [" + e.SortExpression + "] " + strOrderBy;

//set the grid to the first page before you resort

DataGrid1.CurrentPageIndex = 0;

//call the FillGrid method to rebind the grid w/ new OrderBy

FillGrid(strSQL);

}

posted on Friday, June 27, 2003 8:17:20 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [14] Trackback
# Thursday, June 26, 2003

North African Developers Conference

Day 1 of the North African Developers Conference  and I have to say that North African developers were either very polite or liked my jokes! (Well Bill Gates is such an easy target!). Translation was not a problem, I started in Arabic (which lasted about 2 minutes), switched to French which lasted about 2 seconds and then to English. I talked SLOW, yes slow. It was hard talking like a normal person, but hey it worked.

Developers were very interested in SQL Server Merge Replication in my Using SQL Server CE & SDE to build Enterprise Solutions talk. The Using Regular Expressions in Windows Forms & ASP.NET (Code and Slide Download) this afternoon went very well. ASP .NET validation controls were very popular as well as this code to remove HTML:

 

public string RemoveHTML(string strHTML)

{

//Using the \ escape inside the string

string strPattern = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>";

//create a new RegEx as a pattern

Regex rxReplace = new Regex(strPattern, RegexOptions.IgnoreCase);

//do the replacement

string strNoTag = rxReplace.Replace(strHTML, "");

//return the string w/o the HTML in it

return strNoTag;

}

 

 

posted on Thursday, June 26, 2003 8:01:42 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [11] Trackback
# Wednesday, June 25, 2003

A good start to this trip with an uneventful trans-Atlantic flight. Even bumped into fellow NY RD Andrew Brust and his lovely wife Lauren in the Rome airport. Worked on converting my Using SQL Server CE & SDE to build Enterprise Solutions code from VB .NET to C# on the plane down to Tunis. After clearing customs, Malek picked Goksin, Selcuk and I up and drove us on down to the Hotel where Clemens was already waiting for us. What was great was that there were North African Developers Conference  posters and signs all over the airport and highway! Tunisia really rolled out the red carpet.

 

Reunited from the Wallflowers in Dallas, Clemens, Goksin, Malek and I turned around and headed straight for the beach at Hammamet. Much to the delight of the German speakers in the group, Clemens and I (barely), we were at a resort that catered to Germans. We spend several hours on the beach smoking Goksin's Turkish cigars, drinking beer and talking about why .NET Remoting may or may not suck, DCOM, the bowls of COM+, Regular Expressions and gulp politics. Clemens and I had a disagreement over the difference between an 'Ocean' and  a 'Sea' (eventually we got distracted by some girls topless sunbathing.) I got a great swim workout in, about 20-25minutes in open water. Triathlon training won't suffer (well the several beers I drank after my workout may have hurt a little.)

 

So, when you code, remember a bug is always your fault. This code in SQL Server CE may look harmless, but if you are pointing to the wrong database (ha!) it won't do a damn thing!

 

SqlCeConnection cn = new SqlCeConnection("data source=\\my documents\\bya.sdf");

SqlCeDataReader dr;

cn.Open();

SqlCeCommand cmd = new SqlCeCommand(strSQL, cn);

 

So off to the speakers dinner at a nice place overlooking the Med. Tomorrow are two sessions:

11:00-12:00: Using SQL Server CE & SDE to build enterprise solutions

4:00-5:00: Using Regular Expressions in Windows Forms & ASP.NET (Code and Slide Download)

posted on Wednesday, June 25, 2003 2:48:51 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1131] Trackback
# Tuesday, June 24, 2003

'as-salâmu alaykum

 

Just about to leave for the airport and fly to Rome, then backtrack to Tunis. Away from New York for 2 weeks (As much as I love it here, I could use a break from the constant rain anyway).

I will be presenting at the North African Developers Conference in Tunis later this week from June 26-28. This is my third time to Africa in the last 28 months and the second time this year.  I am so unprepared from a travel standpoint: I have no local currency and don’t know if I have the correct power adapters. But it will all work out due to technology. Compare this to foreign travel 15 years ago without ATMs, GSM cell phones and high-speed internet at your hotel.

 

After the conference, I will also have a free day to go and see the historic Carthage (I plan on dragging Clemens and Malek with me), sure sure it was raped and pillaged by the Romans two thousand years ago and there is nothing there, but I am the History buff so there.  Then on Sunday I fly off to Barcelona and then judge the Imagine Cup and speak at TechED Europe (July 1-July 4).

 

The hotel in Tunisia looks nice, I just hope that I can find the time to ride my bike, but it looks like swimming in the Med won’t be a problem. Can’t wait to catch up with my fellow Microsoft Regional Directors that are speaking there, off the top of my head the other RDs that are speaking in Tunis are:

 

 

In Tunis I will be presenting (with the help of an Arabic translator):

June 26th from 11:00-12:00: Using SQL Server CE & SDE to build enterprise solutions

June 26th from 4:00-5:00: Using Regular Expressions in Windows Forms & ASP.NET (Code and Slide Download)

June 27th from 11:00-12:00: Asp .Net DataGrid Drill Down (Code and Slide Download)

Ok, first of all, I talk fast and my French sucks (actually I think my Arabic may be better. 'ismî stephen, 'anâ sâ'ih. wa-mâ 'uhibbu 'akthar huwa 'ash-shacri l-'ashqar maca l-hawâjibi s-sawda'). That is gonna be bad for the translator. Second, the sessions are only 1 hour long and I have the standard 75 minutes of material. Stay tuned to see how it turned out! Either way, the sessions are going to be lots of fun and we will geek out at lot. See you all in Africa….

posted on Tuesday, June 24, 2003 6:07:23 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [3] Trackback

New York State Regents Exams

 

Every year in New York State, High School students take a state-wide exam called the Regents in various topics. My mom and dad were high school Social Studies teachers. I have an advanced degree in History and Political Science. Needless to say that we are into this stuff a little. (Much to the disdain of my older Sister.)

 

So each year we have a strange tradition, my dad brings home the Regents exam after it is given and we take it on the dining room table. It is a little competition each year. (Bonus year was 1994 when I taught Summer School at Prep and we got to take two exams that summer, I think even Jack took part in that year’s silliness.) We take the sophomore Global Studies and the Junior American Government, 50 questions each. Out of 100, the competition this year came down to:

 

Stephen 100

Dad 99

Mom 97

 

Not too shabby. Maybe if this computer thing doesn’t work out, I can teach High School Social Studies!

posted on Tuesday, June 24, 2003 6:01:39 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [12] Trackback
# Monday, June 23, 2003

Wanted: A Dutch Tutor

 

I need to learn Dutch. I do a lot of business in the Netherlands. I also have too many friends in the Netherlands that constantly mock me in Dutch. Then they go Dutch on me in IM like so:

 

[09:18] Kim: nee daar zit je goed

[09:19] Kim: vierdaagse feesten is echt wel super als je met een leuke groep bent op donderdag, vrijdag of zaterdag en mooi weer hebt

[09:19] Kim: echt super sfeer

[09:19] Reminator (The): eens maar als import nijmegenaar wordt het niks

[09:19] Reminator (The): net als carnaval boven de rivieren

[09:20] PeakBagger: Stop with the Dutch.

[09:20] Reminator (The): ik snap heel goed dat het dolle pret kan zijn

[09:20] Kim: nou ja; juist bij de vierdaagsefeesten zijn er mensen uit het hele land en de rest van de wereld daar

[09:20] Hello American here who can’t speak Dutch

posted on Monday, June 23, 2003 10:26:21 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [3] Trackback

Bad Relationships

 

I have a lot of bad relationships in my life. Several come to mind immediately: American Airlines, Chase Manhattan bank, American Express and few ex-girlfriends and ex-clients. My relationship with my teammate Tom Halligan, while good for so many reasons (including the triathlons), is not good for my relationship with alcohol. No, no I won’t torture you with the details of my 3pm to midnight 9+ hour party like a rock star drinking binge that ended with me passing out on his sofa. (I hope that Scott Hanselman did not just read that.) Apparently at some point I exchanged cell phones numbers/email addresses with the waitress-when did this scene get so high-tech? At least we woke at some point on Sunday and rode 40K in the park (with a lot of stops for water bottle refill).

 

Anyway, I digress. The worst bad relationship in my life has to be my relationship with Microsoft Outlook, and particularly Outlook 2003 beta 2. This is like one of those abusive relationships that you know that you just have to cut the cord, but you’re just in too deep and you just can’t bring yourself to do it and you continue to live in pain. “You mean so much to me” you say. You have that feeling that there just is nobody out there that you will ever feel the same about. Sounding familiar? I love Outlook 2003 for so many reasons. Tops have to be the preview pane. The new UI is just oh so sexy. The junk filter works like a charm.

 

So why the love-hate? Well it is slow and crashes a few times a day. I mean, like about 5 times a day, easy. I have traced the source of some of my crashes to the using of Word as my email editor. But since Andrew Brust convinced me that my constant typos are unprofessional looking, I HAVE to use Word integration. I am addicted. See the love-hate?

 

So what do we do, not install betas? Stop, we are techies you know. But the beta is soooooo good. At the same time it is soooooo bad, so does that just cancel it out? Techies are just so hungry for betas, we will install just about any piece of crap Microsoft gives us. I know that when this is released to the real world, it will rock the house and my constant bug reports to Microsoft even helps that process. So I guess what I am saying is that we are all adults and made the decision to install the betas, so no complaining!

 

Now isn’t that the pot calling the kettle black…..

 

 

posted on Monday, June 23, 2003 9:55:34 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [7] Trackback
# Sunday, June 22, 2003

41 students, 14 teams, 12 countries, 4 continents, 1 judge

 

The first annual international academic coding competition or Imagine Cup will take place June 29-July 1th at Tech*Ed in Barcelona.  I am the judge and can’t wait to meet all of these bright young students and their killer Web Services. Good luck to all and stay tuned to this blog for more on the competition.

 

We are going to judge the students on:

  • Innovation and Creativity - 25%
  • Implementation of .NET and Web Services - 25%
  • Overall Presentation - 25%
  • Social Responsibility or Commercial Viability - 25%

 

In addition, something that will be important to me as a judge is how the teams worked together (I guess this falls in the “Overall Presentation” part.)

posted on Sunday, June 22, 2003 10:31:30 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [12] Trackback

Toss Me a Bone Honey....

 

I have been told by a friend that my use of this expression is getting kinda old. So I will have to give it up. (I am sure that I will pick up something new in Tunisia or Spain.) Before I do that, I am going to use it one last time.

 

So my company has a Pocket PC (SDE/CF) application that uses a local SQL Server CE on the device with Merge Replication back with an enterprise SQL Server Publication. I have lots of experience making this work, and it works well. I won’t bash the Microsoft SQL Server CE, .NET CF, SDE teams at all.

 

My problem is that at the office I have this all set up properly. We have a dedicated SQL Server production box and a dedicated IIS box. Life is good. Where things go bad is that I hired a developer who knows nothing about SQL Server CE, SDE, CF, etc, so I am setting up a local sandbox for him to play with while I am in Tunisia and Spain. My goal is to give him the TechEd lab demos created by Kevin Collins, myself and others over the years. Setting up merge replication with a backend SQL Server to a device is pretty easy. The steps are as follows:

 

  • Install the SQL Server CE Server Tools on a IIS and SQL Server Machine(s)
  • Install the SQL Server CE Developer Tools on a Developer Workstation
  • Install Active Sync 3.5 or higher on the Developer Workstation
  • Install Visual Studio 2003 (make sure the SDE option is checked in VB & C#) on the Developer Workstation
  • Create a New Publication of your database via Enterprise Manager-make sure that this publication is for “SQL Server CE” and is set up for merge replication
  • Run the SQL Server CE Server Tools to configure a Virtual Directory on IIS for the Pocket PC Client to talk to via code
    • You do have to make sure that the proper security is set up fro the IUSER_MachineName account, a great security white paper is here.
  • Create a new Smart Device Application in VS 2003
  • Programmatically create a database on the device and then sync it back to the backend publication like so:

            Dim ceRep As New SqlCeReplication

            With ceRep

                .Publisher = "KILIMANJARO"

                .PublisherDatabase = "BYA_Data"

                .PublisherLogin = "sa"

                .PublisherPassword = ""

                .Publication = "BYA_Data_CE"

                .Subscriber = "SQLCENETCFLab"

.SubscriberConnectionString = _                                             "Provider=Microsoft.SQLServer.OLEDB.CE.2.0;Data Source=\my  documents\mycooldatabase.sdf"

                .InternetUrl = "http://KILIMANJARO/SSCE_DLL/sscesa20.dll"

 

                'Bring down initial subscription

                .Synchronize()

End With

 

So I have done this a zillion times, install Visual Studio on the development machine along with the SQL Server CE development tools and I am off to the races. This part of course went smooth, except for the fact that I want to sandbox the machine and run everything off it all at once. So I have to make sure IIS 5.0 and SQL Server standard or enterprise is running. Simple you say, just install the SQL Server CE server tools as well on the same machine. The problem is that it took me about two hours to set this up (I have done this a hundred times in less than 15 minutes) because of SERVICE PACK HELL. Basically the server tools would not install since the IIS and SQL Server service packs were too current for the installer on my machine. I did not have to roll back the SPs (that is good!), but I had to dig around and find new installs from Microsoft.

 

So Microsoft, please TOSS ME A FRIGGIN’ BONE here. Get rid of all of the old install drops and just require SQL Server SP3 to install anything-or create a better error message! I am not asking for much. This is such great technology, I don’t want people to be discouraged from using it due to poor locations of downloads.

 

posted on Sunday, June 22, 2003 12:29:21 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [2] Trackback
# Saturday, June 21, 2003

I finally did it!

 

I finally broke 20 minutes for the 10 km bike course at Central Park. The stats: 19:49 minutes, 6.4 miles (slightly more than 10K) at 19.1 mph average speed.

 

What was the secret? Well for starters, it was raining so the circuit was less crowded, meaning no psycho rollarbladers trying to kill me. (Don’t take offence rollarbladers, I am one of you weeknights.) Second was my built up frustration at Microsoft SQL Server Merge Replication-more on that tomorrow…

posted on Saturday, June 21, 2003 1:26:06 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [18] Trackback
# Friday, June 20, 2003

The Microsoft .NET Evagelism Team

All I can say is that they rock. Eileen Crain is one of my heros. Jas Sandhu and I had so much fun in Dallas, he better come to KL!

Listen to them on .NET Rocks, a weekly internet-radio show. (I was on a month or two ago)

posted on Friday, June 20, 2003 12:41:44 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [13] Trackback

Another RD comes to The Dark Side…

 

Welcome to Blogland Jon Box, Microsoft Regional Director (RD) for Memphis and all around great guy. Jon and I have spent a good amount of time together on campus earlier this year for RD meetings and last year for CF Labs. He tolerates me-so he is ok in my book. J Can’t wait to read his blog with all of his CF experience.

 

User Group Heaven…

 

Speaking of RDs, Ken Getz was in the house last night as the speaker for our .NET Users Group in New York. Besides Andrew and myself, we had Boston RD Patrick Hynds in attendance as well as two of the local Microsoft office DEs, Paul Groves and Jim Williams-so people got answers to their questions!

 

Ken is a true rock star, every time I think that I am getting good at this speaking thing, Ken comes and blows me away with something. Last night was truly fabulous, people came from as far away as Albany and Boston to see Ken last night.  At the high point, we have I’d guess well over 135 people standing room only in the Yankee room at Microsoft to hear Ken. Ken spoke on Inheritance in Windows Forms (and mocked me in his slides-story of my life) and really captivated the audience.

 

All in attendance got a free MS Press book courtesy of Microsoft. There was even spontaneous applause for Microsoft! Giving the books and other goodies away at the break reminded me of the Baghdad looting shots on TV, what is it with developers with 6 figure incomes swarming over each other in a mad frenzy to get a $4 tee-shirt for free?

Why are developers cheap bastards? I guess it is in our nature.

 

posted on Friday, June 20, 2003 8:14:20 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [4] Trackback
# Thursday, June 19, 2003

Don't go Changing to try and Please me..

Yesterday I spoke at CeBIT North America and did two sessions: "Patching the holes in the Change Management Process" and "Extreme XML-Interoperability in Action".

This got me to talking with attendees about my favorite topics on change management, EMBRACING CHANGE. Way too many developers fight it, hate it and die by it. I have seen whole applications die over fighting change. Let's face it: CHANGE IS PART OF DEVELOPMENT.

At Zagat we embarked on a new initiative to build the company a new electronic on-line editorial systems. The “old” way of doing things was 100% paper based. So this was a radical change for the business. The business had no clue what they wanted, nor was the changing competitive landscape clear. So change was going to be a part of this system in a major way. But time to market was very important since we were preparing for an Initial Public Offering (IPO).

I told my lead architect that when he was designing version 1.0 of the "CMS" or Content Management System, that I will not evaluate him by how cool Version 1.0 is or how 1.0 is accepted by the business. I will evaluate him by how fast 2.0 is built on top of 1.0's base architecture. Now that was a challenge. Designing a system for change in the first place! This affected the entire culture about change management. Change was embraced.

But how to control it you may ask? A typical project gets at least a 25% change in requirements during development. Also, a typical project tends to experience a 1%-2% growth in requirements per month-so the longer your project takes, the more change you will have to endure in the way of new requirements.

Now that being said, sometimes you have to be a hard nose on change requests. Shipping is a feature. So how do you strike the delicate balance? That is the million dollar question. (And on some projects the cost is higher.) The answer is all about BUY IN. Get the business aligned with the change culture. Set up a change control board with stakeholders from all over the business. Some of the methods of change control are:

•         Allow changes that help to produce the best possible product in the time available. Disallow all other changes, even if budget permits.

•         Allow all affected parties to assess the schedule, resource, and product impacts of the change.

•         All change requests, assessments and re-estimations must be public.

•         Get agreement from Business and Development Team on the New Delivery Schedule and Build Plan.

Now the last bullet is most important. After you decide on a major change and alter the schedule by a month, under no circumstances do you say “Ok the schedule slips back a month” No no no. Bad the word slip in reference to change, slips are when people miss a deadline. When you schedule a change, you are realigning your schedule based on new business reality. Do not perceive this a slip or late. It is a trade off or a compromise. Trust me, this one little thing, changing your attitude on change can change your life! (pun intended)

Give it a try and let me know how it goes.

 

 

 

posted on Thursday, June 19, 2003 2:52:43 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [2] Trackback
# Wednesday, June 18, 2003

New York, NY

"INETA Poster Boy-sort of"

Reuters Technology Director, Microsoft Regional Director for St. Louis and founder of INETA, Bill Evjen was in town last night. So fellow NYC RD, Andrew Brust and I went out on the town with Bill last night. We spent about 5 hours together drinking (there goes that reputation again) and talking about code, Microsoft, INTEA, the cost of developers in Bangkok, user groups, 80s music and eventually politics and women (Bill is married to a Finish national and he admitted that he lets her tell him who to vote for).

What was most amazing was that the huge Reuters electronic billboard in Times Square is #1 the world's largest electronic billboard (bigger than the second largest in the world across the street-the NASDAQ) and #2 runs on Microsoft Windows. Bill said that it has an XML feed to populate the data. This is so cool having such a large public sign run on Windows. I also know that the NASDAQ one runs on Windows as well, making Windows the cool electronic sign technology for Times Square.

 

posted on Wednesday, June 18, 2003 8:25:31 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [3] Trackback
# Tuesday, June 17, 2003

New York, NY

"5 unique sessions, 2 Continents, 2 weeks, 1 Mediterranean Sea"

Completely hellish work schedule, but could this rock any more for triathlon training? Usually you go away on business for 2 weeks and don't train or complain that there are not places to train. Well I get to spend two weeks in walking distance from the Mediterranean Sea, in Tunis and Barcelona. I will be presenting at the North African Developers Conference next week from June 26-28 and then the week (July 1-July 4) after at TechED Europe.

In Tunis I will be presenting (with the help of an Arabic translator):

Using SQL Server CE & SDE to build enterprise solutions

Using Regular Expressions in Windows Forms & ASP.NET

Asp .Net DataGrid Drill Down

These are fun sessions, I can't wait to deliver them. In Spain at TechED, I will be presenting two sessions for other people, but topics I am very familiar with:

Migrating Your Mission Critical Access Applications to SQL Server™  (DAT231)

Developing Applications with SQL Server Desktop Edition (MSDE) (DAT307)

These are fun sessions too, and bring me back to my old Jet roots. Kevin Collins, my Mt. Everest and PM of SQL Server CE will be happy to know we are still pushing a white paper we worked on (Jet Performance) in like 1998 in this session!

posted on Tuesday, June 17, 2003 10:15:41 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [23] Trackback
# Monday, June 16, 2003

He can drink, but can he code?

There was a time where I was known for being able to write some kick ass code. When I was 23 years old I use to stay up all night coding and then write an article about it. I’d like to think that I am older and wiser. Now I am more concerned with my 10K splits in the 40K bike event. But it seems that my old age is catching up with me, because now I have more of a reputation for partying and drinking. First Eileen Crain put me in charge of the party at TechED in Dallas and now Scott Hanselman today called me his hero, not because I can code, but because I can drink (just click on his name and see what I am talking about). So I feel that I have to rebut a little, I mean come on cut me some slack, I HAVE written code that BillG has demoed!

First of all, my internal clock is screwed up. As you all know I am in training for some triathlons. I have been getting up way too early to run in the park to run with a new running partner. She has to be back home at 7am, yes 7am, so I get up at 5:20 to start running at 5:45 with her. (Kathleen please quit your job so we can run later in the day.) Why do I run with her? Well she is FAST but also very motivated and it is hard to find a partner willing to run in the rain and such (ok, ok she is pretty damn cute too.) But this presents a problem for me. I am not an early bird. But I am also a light sleeper so I can't go back to sleep. So I spent from 7am to about noon just coding my brains out (no email or IM); then burnt out and did nothing but eat, IM people and rollerblade in the park all day. (Also had a huge 9oz “Wyoming” juicy burger with my lead dev, Al Cadalzo (who paid!), for lunch at Jackson Hole,). But I digress, so let's review my Monday morning:

I started with a few thousand lines of TSQL code (like every Monday nowadays it seems) and automated my company's data push of some new data. Basically I have to grab some data, compare it to other data, generate mathematical factors and then apply those factors and transform the data for the transformation to the web. Because my pal Richard Campbell  is such a pain in the ass, I could not use a cursor. So basically I had to use some temp tables and local variables. I got something in the end that looks like this (after all the temp tables and such), the damn casting really stole about 15 minutes of my life that I can never get back:

Select @CBFactor = @CBTotal_Factor/@CBTotal_UnFactor
Select @HJFactor = @HotJobsTotal_Factor/@HotJobsTotal_UnFactor

--update MS13_detail
UPDATE RPT_RCMS13_Detail
SET RPT_RCMS13_Detail.CareerBuilder = [CareerBuilder]*@CBFactor,
RPT_RCMS13_Detail.HotJobs = [HotJobs]*@HJFactor
WHERE weekending_dt=@weekending_dt

--create MS14
Insert Into dbo.RPT_RCMS14_Detail

Select Weekending_ID, Weekending_DT, Location_ID, WebSubLocation_ID,Location_NM, WebSubLocation_NM, CAST(CAST(CareerBuilder AS real) / CAST(TotalAmt
AS real) AS decimal(6, 3)) * 100 as CareerBuilderPer,    
CAST(CAST(HotJobs AS real) / CAST(TotalAmt AS real) AS decimal(6, 3)) * 100 AS HotJobsPer, CAST(CAST(Monster AS real) / CAST(TotalAmt AS real) AS decimal(6, 3)) * 100 AS MonsterPer, CAST(CAST(LocalNewsPaper1  AS real) / CAST(TotalAmt AS real) AS decimal(6, 3)) * 100 AS LocalNewsPaperPer1, LP1_Name, CAST(CAST(LocalNewsPaper2
AS real) / CAST(TotalAmt AS real) AS decimal(6, 3)) * 100 AS LocalNewsPaperPer2,  LP2_Name
From dbo.RPT_RCMS13_Detail
Where weekending_dt=@weekending_dt

 Ok, enough with the damn TSQL. TSQL is for babies. That was just to wake me up after my 8 mile run (yes 8 miles, 1.5 miles to meet Kathleen, 5 miles with her and 1.5 miles back home-how long until the Ironman?). Here was what grew some hair on my chest:

Jonathan Zuck drafted me to help ACT get their website online (like a friggin year ago). I could not say no since ACT has put me before Congress at least 4 or 5 times and introduced me to Heather Davisson, a DAR to my SAR as well as a fellow Scott and she likes to splurge and take me to lunch at Jean-Georges to the envy of all my friends (but I once had to take photos of Mike Piazza’s butt for her).  

Anyway, I did the site in C# and so far so good. We went live today. So I had to use a data repeater on this page on the left nav (well it is a user control so I can take advantage of fragmented caching since the data is loaded dynamically and the data is not that dynamic). But the problem is that the SQL returns repeating information for each row and we don’t want it to repeat in the nav hierarchy. I was way too lazy to do some funky TSQL (I know for wimps), so I decided to take the C# approach on the server. I have to use a data repeater and hide the title for each repeating row. So I would have to programmatically make invisible some client side HTML code on the server. I had to play with the data repeater template and basically make the HTML <tr> element that I want to conditionally hide run on the server (runat=server) so I can manipulate it programmatically on the server ItemEvent. It is real easy once you figure it all out. You set the HTML table row <tr> up with a unique ID (trheader ) and a runat=server. Then on the ItemEvent handler (my method RepeaterSkip) I grab the current data row by intercepting the binding and then compare that to the module level static variable, if they are the same, I make the row (<tr>) invisible, if not, I live and let live and stuff the current value to skip on the next row into the module variable for comparison on the next fireing of the event.

Here is my repeater:

<asp:repeater id="Repeater1" runat="server">

<ItemTemplate>                                 

<tr id="testid" runat=server>

<td width="126" colSpan="2" height="9"><b>"><%# DataBinder.Eval(Container.DataItem, "IssueCat") %></font></b></td>

</tr>

                          

<tr>

<td width="2" height="9"></td>

<td width="6" height="9"><IMG height="1" src="images/onepixel.gif" width="6"></td>

<td width="116" height="9"><A class="toc" href='issue.aspx?IssueID=<%#DataBinder.Eval(Container.DataItem, "Issue_ID") %>'>

<%# DataBinder.Eval(Container.DataItem, "Issue_DS") %></A></td>

</tr>

<td width="2" height="9"></td>

</ItemTemplate>

<SeparatorTemplate>

<hr>

</SeparatorTemplate>

</asp:repeater>

So the event that fires is handled by the RepeaterSkip (inside a user control) method I wrote:

private void RepeaterSkip(Object sender, RepeaterItemEventArgs e)

{

    string strCatID;

 

    //This is going to fire for the <ItemTemplate> items only

     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

        {

         //get the data that is in the current record

         //and stuff it into a DataRecord

         DbDataRecord dbr   = (DbDataRecord) e.Item.DataItem;

         //Get the current value of the item being databound

         strCatID = dbr["Cat_ID"].ToString();

         //compare to the module static variable and if the same

         //make the HTML invisible

          if (strCatID.Equals(m_strCatID))

             {

              //My HTML has this in it: <tr id="testid" runat=server>

              ((System.Web.UI.HtmlControls.HtmlTableRow)e.Item.FindControl("trheader")).Visible = false;

                           }

               //now make the module variable the same as the current item

               m_strCatID = strCatID;

               }

            }

 

 

private void LoadLeftNav ()

{

   //fill the repeater

   SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);

   SqlCommand cmd = new SqlCommand("usp_SEL_IssueMenu",conn);

   SqlDataReader dr;

 

   conn.Open();

   dr=cmd.ExecuteReader(CommandBehavior.Default);

             

   //get the issue information

 

   Repeater1.DataSource=dr;

   Repeater1.DataBind();

}

 

Lastly, my pal Tom Halligan (who is stuck in Access-land) emailed me asking: "Hey is there a command I can use to close all open forms at once?"

 

He wanted to use an Access macro! God forbid! He wants to understand VBA, so I had to write it for him. So I wrote this in-between thinking about my datarepeater and wishing I were asleep, VBA is so much fun sometimes:

 

Sub TomisCool()

'why the f**k do you need a macro silly boy?
'remember that i am harmless!

'form object
Dim frm As Form

'loop through all open forms
For Each frm In Application.Forms
    'close the current form
    DoCmd.Close acForm, frm.Name, acSaveYes
'move next
Next frm

'check out my new car: http://autos.yahoo.com/newcars/details/porsche03911turbo/model_overview.html?refsrc=autos/home

End Sub

 

He responded (I think mostly to my calling my insurance company to price how much the new Porsche 911 Turbo I am buying will cost me in insurance):

 

Thanks. You have issues

 

Maybe I do.

 

posted on Monday, June 16, 2003 9:05:17 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1] Trackback
# Saturday, June 14, 2003

New York, NY

Planning a Bike Ride

I hate Los Angles. I don't even know why. I think it is the urban sprawl. Yet I always have fun (sometimes way too much fun) when I go there, which is at least 2 times a year. This year was looking good until Microsoft announced that the Professional Develoeprs Conference or PDC will take place in LA. The PDC is not an annual event like TechEd or other shows, it just happens when it happens, or when new technology is around the corner, so it is special to attend. That said, I boycotted the last one in Fall 2001 since it was in LA and figured I'd do the same this year. But I had way too much fun with and learned too much from my fellow Microsoft Regional Directors in Dallas that I have to attend in LA.

So what does have to do with planning a bike ride you may ask? Well my good friend and fellow RD Ken Getz wants to ride bikes across the country next year. So Tom Howe had an idea to ride from Los Angles to San Diego after the PDC. What a great training and motivational ride for us and Ken. The plan currently is to do it in 2.5 days and take the train back. I want to push Ken to do it in 2 days, but will do whatever he wants in the end. I also plan to top it all off with a surfing lesson from Steve Hendricks when we arrive in La Jolla

posted on Saturday, June 14, 2003 5:07:43 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [11] Trackback
# Friday, June 13, 2003

New York, NY

Long Live TSQL

Why can I never remember the IsNull(foo,0) function in SQL Server. It is an ISNULL or NZ type of function that converts a null value to the item specified, which in this case is a zero. I don't know why I forget this code all the time is that I go back to my Access roots and try to do an NZ() or the Null to Zero function specific to the Access object model. (Old habits die hard!) Well I can usually IM my good friend Al for help, which I did today, but now here is an example of using IsNull in a TSQL string:

update tblSummaryByLocation_WebSublocation
set LocalNewsPaper=IsNUll(LocalNewsPaper1,0)+IsNUll(LocalNewsPaper2,0)+IsNUll(LocalNewsPaper3,0)
WHERE Weekending_ID= @Weekending_ID

 

I am also sick of using the CASE statement, this code requires me to know something about my data, can' t wait for the Yukon PIVOT keyword:

SELECT     dbo.tlkpWeekEnding.WeekEnding_ID, dbo.tlkpWeekEnding.WeekEnding_DT, dbo.tlkpLocation.Location_ID, dbo.tlkpLocation.Location_NM,
                      dbo.tblLocationSub_WebMapping.WebSublocation_ID,
                      dbo.tblLocationSub_WebMapping.WebSublocation_DS,                       SUM(TotalListings) AS GrandTotal, SUM(CASE tlkpServiceProviders.Service_NM WHEN 'Hot Jobs' THEN TotalListings ELSE 0 END) AS HotJobsTotal,
                      SUM(CASE tlkpServiceProviders.Service_NM WHEN 'Monster' THEN TotalListings ELSE 0 END) AS MonsterTotal,
                      SUM(CASE tlkpServiceProviders.Service_NM WHEN 'Career Builder' THEN TotalListings ELSE 0 END) AS CareerBuilderTotal

FROM         dbo.tblData INNER JOIN
                      dbo.trelServiceURL ON dbo.tblData.URL_ID = dbo.trelServiceURL.URL_ID INNER JOIN
                      dbo.tlkpLocation ON dbo.trelServiceURL.Location_ID = dbo.tlkpLocation.Location_ID INNER JOIN
                      dbo.tlkpServiceProviders ON dbo.trelServiceURL.Service_ID = dbo.tlkpServiceProviders.Service_ID INNER JOIN
                      dbo.tlkpWeekEnding ON dbo.tblData.WeekEnding_ID = dbo.tlkpWeekEnding.WeekEnding_ID INNER JOIN
                      dbo.tblLocationSub_WebMapping ON dbo.tlkpLocation.Location_ID = dbo.tblLocationSub_WebMapping.Location_ID INNER JOIN
                      dbo.tblLocationSub_WebMapping_Detail ON
                      dbo.tblLocationSub_WebMapping.WebSublocation_ID = dbo.tblLocationSub_WebMapping_Detail.WebSublocation_ID INNER JOIN
                      dbo.tblLocationSub ON dbo.trelServiceURL.SubLocation_ID = dbo.tblLocationSub.SubLocation_ID AND
                      dbo.tlkpLocation.Location_ID = dbo.tblLocationSub.Location_ID AND
                      dbo.tblLocationSub_WebMapping_Detail.Sublocation_ID = dbo.tblLocationSub.SubLocation_ID

Where tlkpWeekEnding.weekending_id= @Weekending_ID

GROUP BY dbo.tlkpWeekEnding.WeekEnding_ID, dbo.tlkpWeekEnding.WeekEnding_DT, dbo.tlkpLocation.Location_ID, dbo.tlkpLocation.Location_NM,
                      dbo.tblLocationSub_WebMapping.WebSublocation_ID, dbo.tblLocationSub_WebMapping.WebSublocation_DS, dbo.tblLocationSub.SubLocation_ID,
                      dbo.tblLocationSub.SubLocation_DS

 

 

posted on Friday, June 13, 2003 3:25:20 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [14] Trackback
# Thursday, June 12, 2003

New York, NY

 

MCP Certification Rant

 

To get certified or not certified, that is the question. An attendee in my C# class on Tuesday at Advisor DevCon asked me as an employer how I feel about Microsoft certifications. In the past I poo-pooed certifications, but the more that I think about it, the more that I think that it is a benefit. Not that studying and passing a test impresses me, but the process of studying for the exams is a great experience. You have to put in a lot of time and effort studying and that says something to me.

 

So what route do you take? Do you get a lot of letters after you name like Patrick Hynds. As what point do you get no value from MC*.* as Scott Hanselman puts it?

 

Well I would suggest to developers to take the Microsoft Certified Solution Developer (MCSD) for Microsoft .NET route. It gives you exposure to WinForms, Web, Web Service and Requirements/Architecture exposure. Along with the elective (I suggest SQL Server), that is a great study course.

posted on Thursday, June 12, 2003 9:17:39 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Wednesday, June 11, 2003

St. Louis, MO

DevCon is over but it was a success. The past few DevCons have had very low attendance. Not this one. Attendance is on an upswing. Maybe it is an indication of the market. Despite the recent dip in unemployment, I have been sensing a small resurgence in the tech market. While we are not going to return to the go-go 90s .com mania, a lot of jobs have been coming in to the User Group's listserver. This makes me happy since so many friends and colleagues have been struggling for work. I know some really talented developers who have been out of work for over a year. Another indicator is that TechEd last week was a huge amount of people, about 10,000.

“Biking Cross Country”

Ken Getz spoke about potentially riding bikes across the United States. We knew that Tom Howe would also want to do it, so we asked him and now we have a team. We are looking to potentially do this ride next fall (Fall of 2004). This will be great training for me doing this ride to prepare for the Marathon in Antarctica in 2005 and the IronMan triathlon in Hawaii, at some point in my life.

"Its Not What You Know..."

One thing that I realize everything that I speak at a conference is the great friendships that I have with the other speakers. This also extends beyond just enjoying spending time with each other, usually when I need a code example or business advice I call or email a fellow speaker. Usually when one of us has a gig we can't do we call a fellow speaker to pinch hit. This is a great circle of friends and a great resource. It is a very strong and close group, we all trust each other and can work with each other quite well. Last night Ken Getz said that it is very refreshing to spend time with each other besides what I wrote above because we are all very much self-aware of who we are and what we want. I think that this plays into our helping each other, we are all black and white.

 

 

 

posted on Wednesday, June 11, 2003 1:59:15 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [17] Trackback
# Tuesday, June 10, 2003

Las Vegas, Nevada (Speaking at Advisor DevCon)

DevCon is over! As fast as it started, it ended. I did two great sessions today, a repeat of my ADB302: DataGrid session and ADB206: C# for Visual Basic Developers. I had a lot of fun doing these sessions and the evaluations were great so far. I have really moved to C# and it is great to explain C# to other people who are considering moving to C#.

"Confessions of a C# from VB Convert"

I have been programming in VB for about 8 years, so it took a lot for me to mentally make the switch-but once I did, I honestly felt that C# is a more natural language for me. I don't regret all the years I spent in VB, the language treated me very well. But now that I am using C# (and have been for almost a year), I can’t ever see going back. Part of it is ego-you feel like a better programmer since you are using a more “advanced” language, and the perception in the marketplace is that C# developers are more valuable, a recent survey said that C# developers make and average of  $26,000 a year than VB developers. But the other part is the strictness of the language. I am a anal-retentive control freak and C# is an anal- retentive control freak language. That is why I love it so. I use to mock C# and say it was not a good language, but I was WRONG. Sorry to Patrick O’Toole and Conrad Frix who are still the die hard VB holdouts and feel betrayed by my conversion. (The evil Al Cadalzo had to tell them!)

Mike Groh was one of the speakers who attended my session on C# today and he and I spoke at lunch about some of the points that I made in the session. He said that the arguments I made were sound. He likes how C# is so much more compact than VB and thinks that the demos that I have show illustrate that point. I tend to think that C# just forces you to create more tight code than VB. Not allowing implicit conversion and forcing you to use a variable really appeal to me. Some things in VB really piss me off, like OrElse or my #1 gripe using = for comparison as opposed to every other language using ==. An equals sign is for assignment not comparison, except in VB! Ok, enough about C# v VB, at the end of the day it is just a "lifestyle choice". 

"Tumi Bag Obsessions"

All of my speaker friends use Tumi bags. You know that we are silly people and geeking out if we spend about 20 minutes talking about the bags. Ken Getz gave us a demonstration on how to put the bag on, you put your arm through the strap, hold the top handle with your free hand and then pull it over your shoulder to pull the other arm through. At no point is the weight of the contents of the bag on the strap. See we are geeks. No wonder why girls don't hang out with us. :)

posted on Tuesday, June 10, 2003 9:44:07 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [1] Trackback
# Monday, June 09, 2003

Las Vegas, Nevada (Speaking at Advisor DevCon)

Arrived safe and sound in Las Vegas Saturday night. The Speaker Dinner was great at the Star Trek Experience. Sunday was a free day so Tom Howe, Richard Campbell and I took a helicopter tour of the Grand Canyon. It was one of the most incredible experiences of my life. Right up there with sky diving and other goodies.

After the tour we went to the hot tub and talked business. We came up with a few great ideas on how to work together and build value. Richard and Tom are some of my best friends, so I would love to get a chance to work with them. I now am fully convinced of the theory that you have to live outside of the normal parameters of life and put yourself in the situation to create your own opportunities-that is why speaking at these confrences are so important.

Thanks to all of you who came to my session ADB302: ASP .NET DataGrid Drilldown and having a lot of fun. I know I know it is strange that I did not wear shoes, but hey you have not lived until you delivered a session in barefoot. You can download the slides and code from gotdotnet.

posted on Monday, June 09, 2003 2:44:36 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [18] Trackback
# Saturday, June 07, 2003

Las Vegas, Nevada (Speaking at Advisor DevCon)

Wow I was only home for 24 hours. I got into New York in the afternoon yesterday: went to the office, went home to eat, do laundry and unpack and repack. I got up this morning (after sleeping for 10 hours- more than the last few days in Dallas combined) to ride a 40k bike training course with my teammate Tom Halligan. The next round of triathlons comes up in August. I need to get the ball rolling. The training today was good, we did 22 minute 10K splits, about 2 minutes off where I want to be. It was cold and raining (when did New York turn into Seattle?) and a woman's 10K run was also going on so they had to stop us a few times. That was good since I was not as strong as I should have been due to my leg injury last Saturday on the same course (Outer loop in Central Park). Also I did not sleep enough in Dallas, nor was my nutrition in order. I did not get enough calories (not anywhere near my 4000 a day minimum) and my carb to protein ratio was way off. 

Ok, let me address that here, since everyone who I meet asks. I eat 4000 calories a day, minimum. I am trying to gain weight. I am 5'8 and weigh 170 lbs. My body fat ratio is 10%. I want to put on another 10lbs of muscle. I have been working on this goal for over a year (since April 2002) with very slow progress (which is ok, too many people gain muscle too fast). What is happening is that I am gaining muscle and losing fat without any weight change, I went from about 15% body fat 18 months ago to 10% today. I basically lift for an hour a day 3 days a week. I also work on the swimming, biking and running between 6-10 hours a week, depending on my schedule. I am prehaps more obsessive about my climbing, triathlons and trekking than computers.

Ok, it is also time for me to rant about just how much American Airlines sucks. I have flown over 750,000 miles with American in the last 8 years and have well over a million frequent flyer miles in my account. I have so many issues with American, but this is the last straw. Having never written a letter to American in the past, here is a copy of the letter I wrote on the plane:

Saturday June 7th, 2003

 

To Whom It May Concern:

 

            I have been a loyal American Airlines top-tier customer for several years now. I am not the type of person to complain and this is the first letter of dissatisfaction I have ever written. A few months ago I received a letter in the mail saying that as a Platinum customer I am entitled to unlimited domestic upgrades when you purchase a coach ticket. With this new benefit in place, my profile on American says to always request an upgrade.

            Today I have a flight from Newark to St. Louis, connecting to my final destination, Las Vegas. I flew American Airlines over competitors who offer cheaper fairs like JetBlue because I can upgrade for free and utilize the AAdvantage program even though I have to connect and spend more money. I was notified that my upgrades went through. When I checked in for the flight, I was informed the fair I purchased on AA.com did not qualify for the free upgrade program and I would have to fly coach. While annoying, this was expected since I have flown domestically several times this year since the program went into effect and have never once had a ticket that qualified. Compare that to other airlines. A friend of mine has status on Northwest airlines and all domestic flights, regardless if they are a “y-class” code or not are automatically upgraded. While this misleading program is a problem, it is not the purpose of this letter.

            I happily move my ticket to coach for the Newark-St. Louis leg but I was told that I was not able to be checked in on the St. Louis to Las Vegas flight since the flight was oversold by 11 tickets in coach and the only way on the flight would be to purchase two upgrade stickers for $100 to keep my upgrade. When I was upgraded, my seat in coach was given away, not allowing me to move down to coach. I asked if there were any people in coach holding a ticket with an upgrade request to free a seat for me. I also asked that since I had Platinum status and have flown 10,000 miles with the airline in the last 2 weeks, would I be on the front of the standby line. This information was never provided to me and the agent said that she could not get it from the system. The check-in agent was in-effect powerless to help me and kept reminding me that this was my fault. When I told her that I have flown over 100,000 miles in the last 18 months and have been an Exec Platinum or Platinum cardholder since 1997, her response was that in order to get to Platinum, I know how the upgrade game works. 

            I find it totally unacceptable that a benefit program is so misleading and then in addition it causes me to have to pay $100 just to make my flight. I usually fly on other airlines a few times a year and have always have had better treatment. In addition, the fact that your agents are unable to help a top-tier customer is a sad state of affairs considering the economic situation of American Airlines. This action has driven me to search for another airline to do business with. I was not asking for a free upgrade (even though it should have been offered), I was more than willing to fly coach, but the system would not allow the agent to work with me, the only two options presented to me were to purchase an upgrade for $100 or be the 12th person on standby for coach.        

            For the most part I have been satisfied with American Airlines in the past, but this action just shows me how American treats a top-tier customer in a situation where it has the power to be a little flexible.

                                                                                    Sincerely

                                                           

                                                                                    Stephen Forte

 

posted on Saturday, June 07, 2003 12:08:55 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [16] Trackback
# Friday, June 06, 2003

New York, New York

Looking for Tech*Ed slides and code? If you are one of the 700 people who attended DAT306: Efficient and Secure Data Retrieval in Your Middle Tier Using Stored Procedures and ADO. NET, thanks for the comments and rocking evals! I have read each and every comment, the good, the bad and the ugly. You can download the slides and code from gotdotnet.

Thanks to all who attended DAT233:  .NET CF Database Development with SQL Server CE 2.0 ROI, since this was a case study, there are no downloads. All of you who attended the 5pm session right before the party are troopers. Thanks again!

Tech*Ed's party on Thursday night rocked the house. Smash Mouth was totally awesome last night, they covered "Jump Around" by House of Pain, one of my all time favorite songs. At one point I was with Stan Leszynski, Clemens Vasters, Abdelmalek Kemmou, and Goksin Bakir watching the WallFlowers with a beer in one hand and a cigar in another hand and I said "This doesn't suck."

Back home in New York, for less than 24 hours-leaving for Las Vegas tomorrow for Advisor DevCon. Had to get up at 5am in Dallas to catch a 6:55 am flight. Went to work today and during lunch with my business partner we had a strategy about potential investment. Our goal is to get our valuation up higher with more revenue (which means more work on the product!) so we can make a 20% investment very attractive. We both agree that one of the most important potential investors is our current largest client. It will help us build a better product and understand the needs of our largest user base. All of our customers will benifit.

posted on Friday, June 06, 2003 8:39:40 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Thursday, June 05, 2003

Dallas, Texas (Speaking at Tech*Ed)

Tech*Ed is going great. My session had about 700 people in it and my evaluations were super. I have one more session today then party with Smash Mouth and the Wallflowers before I head home tomorrow.

 

I went off on a rant today about C# v VB. Will this stupid conversation just die? I am sick of it. Basically someone did a project and built the middle tier in C# and the front end in VB .NET and then failed code review at their client since they used VB .NET on the client and VB .NET was not part of their standards. He went off on why does VB get no respect. I wrote:

I am not going to start a C# v VB .NET thread, however, usually when you start on a project you have something called a requirements or design document that states what technology you are using like the OS, service packs, version of the framework, language and 3rd party components. To find out during code review that the client doesn’t want to use a certain language only shows the author’s inexperience as a consultant and his professional immaturity.

 

Lastly, if you built the middle tier in C#, what valid reasons did they have to do the client in VB .NET? Were these reasons (if they exist) given to the client up front, or were they just sprung it on them at code review (it appears that it was just sprung on them). Hey the client is paying the bills and if they want C#, they get C#. The client has to live with the application.

 

 

I will be sad to leave Tech*Ed tomorrow. Ok, ok, the Juval story. I stole the cutout of the cardboard Juval. The web site will have a where's Juval section soon. After some parties, tech sessions and long discussion with my colleagues, I have come to agree with Scott Hanselman’s comment that the colleagues on the speakers circuit and in the Regional Director program are like brothers in a frat-but just a high tech frat. I have had the pleasure to work with a lot of great people over the years, but the people who I have met on the speaking circuit over the last 6 years are some of my closet friends, even if I only see them a few times a year.

 

 

Ok and the parties are cool too. At the “bone” last night, I was slam dancing with Brian Randall (those of you won don’t know Brian, he has about 100 lbs on me) and dancing the blues with some good friends,  as Steve Lasker observed:

 

-----Original Message-----
From: Lasker, Steve [mailto:steve.lasker@immedient.com]
Sent: Thursday, June 05, 2003 2:14 PM
To: MSDN RD List

 

What else would you expect from Rock Stars? 

 

As witnessed at several parties around town, RD's Rock in more ways then just on stage presentations.  While the old motto still holds of "what happens on the road, stays on the road", suffice to stay, your fellow RD's are holding up their social presentation skills as well.  Let's just say a certain RD was seen dancing around the roof of a dog treat with many others watching in amusement, as well as jealousy of the attractive counter part.

 

I'm once again proud to be surrounded by such... well, fun loving people:)

 

 

posted on Thursday, June 05, 2003 2:58:20 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [9] Trackback
# Monday, June 02, 2003

Dallas, Texas. (Speaking at Tech*ED)

Recovering from the Regional Director party last night. Did way too much karaoke with Steve Lasker, Jon Box and Scott Stanfield. We had some good fun. I did decide that Scott Hanselman is not as cool as I thought, he backed out on some of my pranks. Clemens Vasters on the other hand is lots of fun and will party hard at Tech*ED in Europe and Asia as well as Africa.

Day 1 of TechED was good so far. Started with a morning run and then attended Adam Cogan's session on SQL Server and hung out and caught up in the speakers lounge. Proctered the SQL CE lab and then head off to a dinner with MSFT SR. VP Paul Flessner. I speak on Wedneday and Thursday, so I need to get my demos up and running!

I rewrote some examples. Here is some code to toggle the color of a cell in a DataGrid based on the data presented:

public void ToggleYellow(object sender, DataGridItemEventArgs e)

{

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

{

//get the data that is in the current record

if (e.Item.Cells[2].Text == "Sales Representative")

{

//make the cell yellow

e.Item.Cells[2].BackColor = System.Drawing.Color.Yellow;

}}}

 

Here is a custom sorting routine:

private void SortGrid(object source,DataGridSortCommandEventArgs e)

{

//SQL String that will be used

string strSQL = "Select * From Customers";

//the Order By

string strOrderBy = "ASC";

//See what the viewstate has for the sortfield and ASC/DESC

if (e.SortExpression.ToString() == ViewState["sortField"].ToString())

{

//a match, see if ASC or DESC

strOrderBy = ViewState["sortDirection"].ToString();

//now toggle the viewstate for later

switch (strOrderBy)

{

case "ASC":

ViewState["sortDirection"] = "DESC";

break;

case "DESC":

ViewState["sortDirection"] = "ASC";

break;

}

}

else

{

//New Field, so it will be ASC by default, so make DESC

ViewState["sortField"] = e.SortExpression.ToString();

ViewState["sortDirection"] = "DESC";

}

//SQL statement compelted

strSQL = strSQL + " " + " ORDER BY [" + e.SortExpression + "] " + strOrderBy;

//set the grid to the first page before you resort

DataGrid1.CurrentPageIndex = 0;

//call the FillGrid method to rebind the grid w/ new OrderBy

FillGrid(strSQL);

}

posted on Monday, June 02, 2003 5:40:45 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [11] Trackback