September 2006 - Posts
Chris Wallace and I seem to talk about web standards and ASP.NET in the evening due to the fact that it is one of his favorite topics. Recently he made some suggestions to the ASP.NET team and they listened.
Check out how he help give input into Atlas
If you might be interested in speaking at the Alabama Code Camp they are still looking for good people. The Third Alabama Code Camp is on October 28th, in Montgomery. If you are interested and haven't already signed up, complete the attached speaker form or download it at www.alabamacodecamp.com and send it in. I have heard that Mark Dunn and Jim Wooley are going.
Despite technical SNAFUs preventing some audio connections and me occasionally forgetting to share the desktop as I showed code, the webcast went fairly smoothly. I didn't get disconnected in the middle of the presentation again.
Unfortunately there was relatively low turnout. I'm choosing to blame that on the fact that this presentation was initially set up (accidentally) for 6:30 PM PST. That's a good bit later than the 3:30 pm EST that I recorded it. Oh well - anyone who missed it and cares can download it from http://live.ineta.org
Kim and I have three dogs. Two of the three are mid-sized dogs weighing more than 35 lbs each. The third is a Chihuahua and weighs in at about 10 lbs. Because Bear, the Chihuahua, is frequently left out of the rough play between the other two mutts, we felt sorry for her and arranged a puppy play-date with some friends.
Bear is on the left.
Of course, since we then felt bad that we'd gone out with only one of the dogs, we felt obligated to then take all of them to a local off-leash dog park. What we didn't know until we got there was that it was the monthly Great Dane owner's club meeting. The dog park looked like it had been invaded by horses! There must have been about 25 or so of the giant dogs, each one's shoulder was higher than my waist. It's a pity I don't have any photos of that. The Great Danes loved the curiosity that Bear presented, but Bear spent her whole time at the park trying to crawl up our legs to get away from the strange giants.
http://live.ineta.org

SharePoint 123! Level 300
September 27th at 3:30PM EST
Join us for our next exciting INETA Live! Webcast event on September 27th at 3:30PM EST for the level 300 content from the SharePoint 123 Training Series!
The final session of the series (level 300) will be presented on September 27th at 3:30PM EST and will dive deep into advanced topics such as connected web parts and the SharePoint Object Model.
Intended Audience:
User group leaders, members, or community enthusiasts that are either interested in understanding how to use SharePoint to collaborate with others or gaining foundation knowledge to be used towards developing in the SharePoint environment.

Check out the BETA Newsletter, Matt did a great job of getting us published in the current newsletter. Here is our section! The link for the newsletter isn't up yet, but they sent out the newsletter today.
From the Community
Business Intelligence and Security
Matt Ranlett is a Senior Systems Analyst and Brendon Schwartz is a Senior Consultant, they are MVPs, co-Vice Presidents of Technology for INETA, and founders of the Atlanta .NET Regular Guys. As .NET community leaders in Atlanta, they helped create the freely available SharePoint 1,2,3! training material among many other things.
Please read their article and visit their website.
Last night I had another of my dinners with 10 or so friends. Kim and I were charged with bringing a non-chocolate dessert since someone else was bringing brownies. Here's what we brought and it received rave reviews:
This Almond Pear Cream Cheese Torte took very little effort and came out looking great. People really seemed to like it, so I thought I'd share with the group. I found the recipe on KraftFoods.com.

If Brendon was to draw a mascot for himself, this would definitely be it!
For those of you that don't know my crazy music taste, I like a song writer named Jim Steinman who wrote songs for people like Meatloaf. That being said a new album "Bat Out of Hell 3" is being released soon, word on the street is that it will be released on October 31, 2006. I hope to be listening to it soon (hint, hint). Lot's of hints today. Thanks mystery man!
I don't know how he does it, but if you haven't been to one of Jim's presentations on LINQ recently you haven't been out in the community. Jim has been working overtime at helping out the Code Camps in the southeast. He has presented at so many of them that I can't even keep up anymore with all of them. Maybe he can make a list of all of them he went to and presented at.
Jim is a great guy in Atlanta and we tried to get him to post his blogs on DevCow, but we were about a week late and he had started a blog somewhere else. Maybe we can get him over one day to talk about new technologies like LINQ (hint, hint).
For now make sure and check him out at his own blog.
Kim and I are friends with Shellie S, who is hard at work creating her new business venture, Vonschmalhausen. The business website isn't up yet, but I've linked to it in the event that it finally does. The business has something to do with event planning and fashion, but I'll be honest - I don't really know much about either one of those topics. I guess that means that I should hire her in the event that it becomes important to me!
I do recall being at an event she organized at the brand new Georgia Aquarium. Hundreds or even thousands of people were there, but that's not surprising considering the place has been opened for less than a year and has already greeted its three millionth guest.
Good luck with the new company Shellie!
The Windows Live Writer tool is still in beta, but so many people are out there using it and telling me that I need to try it that I finally gave it a go. It does seem to have a prettier UI than my trusty BlogJet and it does offer some nice inline image editing tools that Blogjet doesn't have such as the dropshadow effect above or the photo edge seen here on the right
. It doesn't have Blogjet's ability to get the previously posted blog entries for editing. While the Live Writer does seem to be able to view the most recent post, BlogJet allows you to go back several entries with it's unique History reader and make modifications to any previous entry. I'm not sure if that's a big deal to me personally because I don't have a problem editing the older entries via the online editor. However, I can see that being really annoying to some people.
Finally, Live Writer does offer the ability to include maps in a blog entry. This is a nice extension of Virtual Earth and has been gratuitously included in this post just to show it off. While I chose to show the Street location of the Alpharetta Microsoft offices, I could have chosen the Aerial or even Birds' Eye View. All in all, this looks like a nice tool, but I'm waiting to post this draft to see if it does something with the blog title and the page URL. That's my biggest gripe about Blogjet - the title of the blog doesn't automatically become the friendly URL. Let's see what happens...

Microsoft's Alpharetta Offices
So I’ve been making a conscious effort to try to use generic lists because they save time. I’m so used to building all of my objects and collections as custom objects and custom collections that some habits are hard to break. However, part of what is driving me to really want to use the generic lists is what I read in Ken Getz’s recent MSDN article about Predicates and Actions. I read his article and was thinking “Great – another example of the framework doing my work for me!”
Unfortuantely my first try didn’t meet with very much success. I’ve got a custom PurchaseOrder object with tons of properties and behaviors associated. I wanted to find a specific PO in my generic list based on the PurchaseOrderNumber. So I try code that looks like this:
Dim _purchaseOrders As List(Of PurchaseOrder)
_purchaseOrders.Find(AddressOf FindPOByID)
Because I needed to pass in the PO ID value dynamically, my FindPOByID function would have looked something like this:
Public Function FindPOByID(ByVal aPO As PurchaseOrder, ByVal POID As Integer) As Boolean
If aPO.PurchaseOrderNumber = POID Then
Return True
Else
Return False
End If
End Function
Of course, that doesn’t match the signature of the System.Predicate delegate

So I ended up with a for each loop:
Dim isEDI As Boolean
For Each PO As PurchaseOrder In _purchaseOrders
If PO.PurchaseOrderNumber = purchaseOrderNumber Then
isEDI = PO.EDI
End If
Next
Slightly disappointing for my first attempt, but my next attempt at System.Action worked swimmingly. I have a custom collection of ReceiveItems. Each ReceiveItem has a Receive method which does the required database work to import the item into inventory. My collection (a List of ReceiveItems) also implements a Receive function – receive the entire group. This is accomplished on the collection level with minimal code:
Public Function Receive() As Boolean
Try
_receiveItems.ForEach(AddressOf ItemReceive)
Return True
Catch ex As Exception
Debug.Print("Error receiving items: " & ex.Message) ‘Not fully implemented yet
Return False
End Try
End Function
Private Shared Sub ItemReceive(ByVal aReceiveItem As ReceiveItem)
aReceiveItem.Receive()
End Sub
Notice the simple List.ForEach code. In terms of maintainability, this solution can’t be beat!
Finally, I tried the Predicate again:
Public Function ValidateItems() As Boolean
Dim invaliditem As ReceiveItem = _receiveItems.Find(AddressOf NotMyComputer)
If invaliditem Is Nothing Then
Return True
Else
Return False
End If
End Function
This works great given the custom business requirement of matching a receive item to the PC it was received on.
In general my conclusion is that the Predicates and Actions are fantastic methods of reducing the complexity of code, but they feel slightly limited due to the strict adherance to a single delegate function signature. The only problem I can really point out in Ken’s article is that his examples are somewhat contrived, which gave me initially a hard time understanding just how to use this in my own work.
More Posts
Next page »