MVP Summit coming up. Leaving Saturday morning. Arrive @ W sometime around 12 noon Seattle time. Looking forward to seeing old friends and meeting lots of new ones. Talked to Kirk Allen Evans last night on the phone about getting together. I haven't seen him since we ate lunch in December in DC. Desparately want to finally meet certain folks like CodeBoy and Darren Neimke. I will get to see Paul Wilson and David Penton again. I got really pumped when I checked out Scott Cate's Wiki regarding ride sharing. If you are going, grab my mobile phone number from Scott's Wiki and get ahold of me Saturday afternoon. I want to find a good spot to watch the Tech and OSU game in the Final Four. Anybody know of any other games being played at the Final Four?
I tried my Web Search with .NET code this morning after I got my cable modem re-provisioned. Well, performance looks great after a few minutes. I am getting a tad bit over 200 Urls / minute inserted into the database. MSMQ changes look really promising, given just the few minutes that I have watched things.
I had mentioned in some previous entries about wanting to change my Web Search code to use MSMQ. I have been out of town and I wanted to get back home to see how the changes ran over my cable modem. Well, I got home last week, tried the changes, and saw no improvement from here. What was a programmer to do? Well, it ends up that the problem was the cable modem had been provisioned while I was gone for 384 kbps instead of the 2 mbps that I was paying for. After a week of trying different things and testing different configs while talking with the cable modem tech support, I finally got passed around to someone that knew about the provisioning issue. Finally, the speed problem at home was resolved.
I just wrote some code to dynamically add some textboxes to a Windows Form in .NET. I thought I would share it here and see if anyone has any suggestions, since this is my first attempt at dynamically adding elements to a Windows Form in .NET.
Basically within the form's class, I create an ArrayList, as a private variable in the form's class. On the Load event of the form, I instantiate the ArrayList and then add TextBox objects to the ArrayList. Remember that you need to actually add the control to the form by using this.Controls.Add(). On an event, such as a button click, you can get the values of the text boxes as shown in the button click event below. If you have any suggestions, please put them in as feedback.
private ArrayList arylTxtGEItems;
//VS.NET stuff omitted for brevity.
private void frmEncounterDynamic_Load(object sender, System.EventArgs e)
int i = 0;
this.arylTxtGEItems = new ArrayList();
for(i = 0; i< 3; i++)
this.arylTxtGEItems.Add( new System.Windows.Forms.TextBox() );
((System.Windows.Forms.TextBox)this.arylTxtGEItems[i]).Location = new System.Drawing.Point(40, 36 + i * 20);
((System.Windows.Forms.TextBox)this.arylTxtGEItems[i]).Name = "txtGE" + i.ToString();
((System.Windows.Forms.TextBox)this.arylTxtGEItems[i]).Size = new System.Drawing.Size(184,20);
((System.Windows.Forms.TextBox)this.arylTxtGEItems[i]).TabIndex = i + 2;
((System.Windows.Forms.TextBox)this.arylTxtGEItems[i]).Text = String.Empty;
this.Controls.Add( ((System.Windows.Forms.TextBox)this.arylTxtGEItems[i]) );
private void button1_Click(object sender, System.EventArgs e)
MessageBox.Show( ((System.Windows.Forms.TextBox)this.arylTxtGEItems).Text );
I have 27 copies of this in my email. Can somebody tell this guy to go away?
IP Address: 184.108.40.206
Sorry if this is a little off topic, but would anybody know of any good examples
on the web of how to perform an automatic reboot using C#?
Update: I have recieved 12 more of these in the last hour.
The internet will be shut down for cleaning for twenty-four hours from March 31 until April 2. This cleaning is necessary to clear out the "electronic flotsam and jetsam" that have accumulated in the network. Dead email and inactive ftp, www, and gopher sites will be purged. The cleaning would be done by "five very powerful Japanese-built multi-lingual Internet-crawling robots (Toshiba ML-2274) situated around the world."
Here is the announcement. Don't forget to cover up your cable modems, DSL routers, and other high speed connections. If you don't the dirt will blow out of them and get all over everything. No telling what kind of dirt could be blown out. If you use a router between your private network and the internet, make sure that you put plastic plugs in the open ethernet connectors so that stuff doesn't drip out and get on the floor (good tip from daval)..
FYI for the Oracle fans. Along with the Oracle 10g for Windows release last week, Oracle released a new version of the Win32 client and specifically ODP.NET for Windows .NET Framework.
Bring on OSU............
Update: And for our UConn fans, while Tech did beat UConn in the Preseason NIT 77-61, some thoughts:
- Early season games like that mean absolutely nothing. Injuries and confidence can change a team's makeup from 4 months ago.
- Emeka Okafor was hobbled by a sore back that has plagued him all year. When he is in the lineup and not hurting, UConn is the best team in the tournament.
I just got a chance to read the Spring 2004 edition of the Georgia Tech Alumni News that had a news note about Jim Allchin from MS. I did not realize it, but he got his PhD from Georgia Tech in 1983. I got a BS and MS in Electrical Engineering specializing in digital signal processing, VLSI design, and computer architectures along with a minor in mathematics from Georgia Tech. I got my BS in 1990 and my MS in 1991. Any other Georgia Tech alumni out here?
PS. For those of you like Kirk Allen Evans, you can't adopt a school. It only counts if you actually went to the school. Sorry Kirk, I just had to throw that one in. ;-)
I was playing around with my Web Search code last night. Just by chance, I happened to turn off the full-text search engine in Sql2k and start my Web Search running. Well, low-n-behold, when I got up this morning, I found that the system did not have any queued messages in MSMQ after it ran all night. I was puzzled, but decided that I was a genius because I had made a change last night that should reduce the number of exceptions that I generated. I saw that the full-text search was not running. I turned on the full-text search and watched the MSMQ start queueing messages. I turned off the full-text search, saw that the messages were now being properly placed within the database, and decided that I was not a genius after all. So, out of this, I have decided to study the Sql 2k full-text search service. Anyone know any good links with correct information in them regarding setup and performance of the Sql 2k's Full Text Search?
Are you running into some limits with MSMQ? Testing my WebSearch changes, I ran into some limitations with about 1.8 million messages in a queue. Alex Lowe pointed me to a KB article about my problem and this solution seems to have resolved my issue. I now have about 6 million messages and am getting more each minute.
The error that I was getting was:MQ_ERROR_INSUFFICIENT_RESOURCES
There are insufficient resources to perform the operation.
Event ID: 2085 Date: 2003/01/07 Time: 20:36:14 User: N/A Computer: Computername Description: Unable to create message file C:\WINNT\System32\msmq\STORAGE\l0000009.mq. There is insufficient disk space or memory.
Info: The problem seems to revolve around the inability of MQAC.SYS to allocate additional kernel memory.
By editing the registry and making the changes listed in the KB article, I was able to run the system all of last night with no reported problems, well none besides the expected 404 and other http errors.
Now, I think I need more bandwidth. Shoot, I won't be home until late next week to use my cable modem and its 2 T-1s worth of bandwidth.
It is a long story why, but recently, I have been doing some ego-surfing trying to find out what is online with my name associated with it. Through this, I have found an Indiana Police Officer that was killed in the 1920s named Wallace B. McClure and a Wally McClure that died last fall that lived in Montana. I have also found something about space travel that was presented in the 1980s by a Wallace McClure, but there was nothing else on this that I could find besides one or two web pages. The interesting thing is that I just found more data about my grandfather than I think I have ever known in my life.
Biographical Note/Information: Wallace McClure was born in Knoxville,
Tennessee on July 30, 1890 and graduated from the University of Tennessee
in 1910. In 1915 he received his Ph.D. degree from Columbia University. He
was admitted to the local bar at Knoxville in 1911 and the bar of the
United States District Court in 1920. He practiced in Knoxville as a member
of Sansom and McClure, 1916-1917.
McClure enjoyed a long career in international law from 1925-1961.
Among his many positions, he served as a teacher in the School of Foreign
Service in 1925 (teaching commercial policy and treaties), lecturer in 1935
at Des Moines public forums, lecturer in 1936 at Colorado Springs and
Chattanooga, and lecturer in 1936-1937 at Johns Hopkins. He was an officer
in the Department of State, 1920-1951, and served as economic analyst to
the Foreign Service Auxiliary. He was with the American Legation at
Stockholm from 1942-1946. He also served as a visiting lecturer at the
University of Virginia, 1954-1955, was a Fulbright lecturer at the
University of Dacca, East Pakistan, 1955-1956, was consulting director of
the World Rule of Law Center in 1958, and was visiting professor of Law at
Duke University (1958-1961). McClure was the author of a number of books
and articles on state constitution making, commercial policy, executive
agreements, world law, and world legal order.
This is my grandfather. I knew that he was very sharp, but I did not know all of this. Google can be your friend................
I haven't worked on my Web Search code recently due to a bunch of work for customers. So, I got up early this morning and decided to integrate aynchronous operations into my Web Search with .NET code with the MS Message Queue. So, now my basic algorithm goes something like this:
- Get a set of URLs that have not already been searched.
- Get the html contents of one of the URLs.
- Put the Url and it's content into Queue1.
- Parse the Url's content for new Urls to search. Place the new Urls into Queue2.
- Repeat for all of the Urls in the set retrieve from step 1.
Queue1 and Queue2 are handled by a separate Winforms application that handle the MSMQ messages asynchronously using the BeginRecieve() method and RecieveCompleted event handler. By using MSMQ, I could easily separate out to use multiple machines.
Important Side Information:
I have two tables to hold data. tblSearchUrl holds the urls that will be searched at some time. tblSearchResults holds the html content of urls. My current hardware looks like a Dell Inspiron 8200 with P4 1.8 GHz, 1 gig of ram, a Maxtor FireWire 250 gbyte hard drive, and am using the dsl line at my hotel with is running at about 512 kbytes / sec, or something like that.
The large number of inserts into tblSearchUrl had become a major bottleneck and was slowing the whole system down. By making the operations asynch, the bottleneck is moved from the spider application to the insert application, which is just fine by me at this time.
Where do I go from here?
Well, the next thing is to see where my next bottleneck is at. After that, there is code cleanup. I have probably hardcoded some things I shouldn't have and I am sure that I have some rather interesting mistakes that will show up going forward. Sometime, I need to create a web interface. And then I need to ..............................
I just wanted to mention that my buddy Rich Hundhausen has a blog. Rich is a developer and trainer. Here is a picture of him creating some of his training material for video.
Now that our new company web site is up and going, I thought I would share some of the presentations that I have done for some .NET User Groups. The presentations are in MS Powerpoint. The presentations are Why Microsoft .NET, ADO.NET, Building Windows Services with VB.NET, Threading with .NET, and Intro to Yukon.
I just read this article about a utility called MyTunes that allowed other computers to play songs sold through the ITunes Apple store. It brings back memories when in 1999, I wrote a little VB6 program that caught the web stream of 96Rock in Atlanta and saved it to the local hard drive of a system. I used some components from Real to catch the stream and then I saved it to the local harddrive. I would set the application to catch the data starting at 5:30 am and to quit at 10:15 am. It ran like a champ every day. The files would be about 40 megs of data each day. Once a month, I would burn the content to CD. Too bad that a couple of years ago, somebody broke into my Jeep and stole my laptop, and also a bunch of these CDs in the case with the laptop. I lost the source code in a reformat of one of my systems and I have never recreated anything to get this to replace it. I sure do miss listening to the Regular Guys every morning and not missing a moment of their show. Ahh, the memories.........
Ok, I think this file came from a link on weblogs.asp.net, but I can't find the link, just the file. I have a file called PerfNScale2-27-04.zip. Inside the zip file is a bunch of good info about how to create applications with .NET that scale up and perform well. The problem is that I can't find where this file came from. I think it came from GotDotNet.com, but I don't know from where. If you have that link, if you can please post it as feedback that would be awesome.
Shhhhh............. Don't tell anyone, but I think I am going to play hooky either today or tomorrow. The weather is too nice for the beginning of March and the golf course awaits..................