# 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";


case "DESC":

ViewState["sortDirection"] = "ASC";






//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



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;


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


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