in

Platinum Bay

Peace, Love, and...

This Blog

Syndication


.NETicated

May 2007 - Posts

  • Philly .NET Code Camp 2007.1 Review

    "User groups represent the spirit of the frontier, a community getting together to do things that no individual ought to have to do alone. The pioneers of the American west got together for barn raisings, cattle roundups, and the occasional party. The pioneers of new technology get together for installfests, new user training and support, and just plain fun. Being part of a user group is the best way to get more out of your computer, and lets you make friends while you're at it."

    — Tim O'Reilly

    (When I started writing this) I got home not too long ago from the Philly .NET Code Camp 2007.1 @ Microsoft Malvern. It was certainly a long day, but it was awesome! We had almost 30 speakers and sessions across 5 different tracks. And we had roughly 150 people turn out. Not bad.

    My role for the event (among others J) was the official photographer. I snapped about 80-90 pictures, most of which will be up on the new Philly.NET site shortly.

    I attended several sessions, including XNA Game Development with Mitch Ruebush, Visual Studio Managed Package Framework with Don Demsak (aka DonXML), and Intro to Link: Reinventing Visual Basic, also with Don. The rest of the time I was rather busy snapping pictures and helping out where needed. I'll blog about the individual sessions I attended later.

    Among the other presenters were Mark Scott, Russ Basuira, Kevin Goff, Mark Magliocco, Sam Batterman, Jean Barmash, Bill Wolfe, David Laribee, Dan Clark, Sam Gentile, Travis Laborde, Peter Shire, David Hoerster, Rob Keiser, Sharon Dooley, Edwin Ames, and Chuck Miller. These are some REALLY great folks.

    And I got great reviews from the attendees, who really enjoyed the event. Someone even suggested it should be a two-day event.

    The coolest part for me though, was that I got invited by Microsoft to their Influencer's Dinner after the conference. There were Microsoft employees, our Microsoft DE, some MVPs, mainly people who influence the direction of the .NET Framework. Microsoft decides who is an influencer. It was quite an honor, and I got to rub shoulders with some of the brightest people in our industry.

    Lastly, Andy Schwam did an awesome job of collection swag. Our event was sponsored by many different organizations, a big thanks to all of them:

    Breakfast Sponsor: Perficient Technologies

    Lunch Sponsor: RDA

    Contributor Sponsors:

    Contributor

    Contribution

    Microsoft

    1 Zune, 1 license for Office 2007, 5 licenses for Vista, 2 licenses for Expression Web and a Wireless Notebook Presenter Mouse.

    Apress

    Books

    Cizer

    1 Full License for Drop In Reporting for every attendee!

    Code Magazine

    Code Magazine for every attendee!

    Component Art

    1 Web.UI for ASP.NET Subscription License

    Diamond Technologies

    $25 gift card for one winner. Plus, a travel mug for every attendee!

    Dundas

    1 Dundas Gauge, 20 licenses for Dundas Calendar for RS, a Dundas Software hoodie and other swag (pens, bags)

    Google

    T-Shirts

    JetBrains/ReSharper

    5 personal licenses for ReSharper

    O'Reilly

    10 Books

    Red-Gate Software

    A copy of the brand new version of ANTS Profiler and two copies of SQL Refactor. Plus pens, 20 t-shirts, 25 memory sticks, etc.

    Sams/Addison-Wesley

    6 Books, 8 t-shirts, bags, pens, quick reference cards, etc

    Sharepoint Advisor

    Sharepoint Advisor magazine for every attendee.

    WROX

    50 Wrox books, 30 t-shirts

  • Team Hanselman and Diabetes

    Scott Hanselman is twittering all day today about his daily battle with diabetes. What most people don't realize is that Diabetes affects nearly 10% of all Americans. Untreated, diabetes can lead to heart disease, blindness, nerve damage, kidney damage, and sometimes even death (it was the 6th leading cause of death in 1999 and 2000 – Source: CDC).

    While I do not have diabetes, I am aware of the epidemic that diabetes is becoming. A couple years ago, I wrote some software for a startup company that focused on food portion control and sugar/starch counting for individuals with diabetes. I was able to meet a bunch of folks with diabetes and hear how it affected their everyday lives. To see the daily impact that it has, I highly recommend following Scott's twittering today.

    For more information about diabetes, how to handle it if you got it, and how you can volunteer and help support diabetes research, check out the American Diabetes Association website.

    Posted May 18 2007, 08:05 AM by Steve with no comments
    Filed under:
  • Microsoft SharedView

    In my travels, I saw that Travis Laborde was talking about a new Beta from Microsoft called SharedView, which allowed the sharing of applications and screens with up to 15 remote users. Ok, WebEx. So I decided to check it out. All in all I am very impressed. I am able to create a session, send out invites, and host applications to share among the attendees, and all for free. It seems stable. It also feels largely intuitive – something that seems to be missing from a lot of software.

    There do appear to be some minor host-side refresh issues in the preview window, and switching to non-shared applications feels weird with the AJAX-like modal popup overlay, but it is Beta.

    Tomorrow I'd like to get a couple people on the corporate intranet and the outside world and see if it works through a couple firewalls, and try out the change tracking with Microsoft Word.

    Anyone care to give it a go?

    Posted May 17 2007, 09:40 PM by Steve with no comments
    Filed under:
  • Certification Training

    I am working on getting my Microsoft MCPD certification. I am a self-taught programmer, and I want to fill in the gaps, so to speak. I think classroom instructor-led training would be beneficial for me. Anyone care to share how and where they prepped for the cert courses?

  • CS Blogroll Publisher

    I use Outlook 2007 as my feed reader. I have Outlook open all the time anyway in the Unread Mail folder, so this allows me to get blog posts along with email. I also want to have my blogroll on my blog and not have to maintain it in two places. There was not built-in mechanism in CS to do this, so I have built and released my first Community Server related tool to solve this problem.

    Let's start at the top. Microsoft installs some nifty RSS stuff with IE7 called the Windows RSS Platform. You can find more info here and on Google. There is even an API screensaver sample in the Microsoft Download Center.

    The Windows RSS Platform is what stores the feeds that Outlook shows me. With the API, it's very easy to get a list of feeds, etc.

    The first step is to add a COM reference to Microsoft Feeds 1.0.

    Then it is a simple matter of using the API. Below is sample Console code to retrieve the feeds on your system.

    Imports Microsoft.Feeds.Interop

    Module Module1
       
    Sub Main()
           
    Dim mgr As New FeedsManager
           
    Dim root As IFeedFolder = CType(mgr.RootFolder, IFeedFolder)

           
    For Each feed As IFeed In CType(root.Feeds, IFeedsEnum)
               
    Console.WriteLine(feed.Url & " (" & feed.Path & ")")
           
    Next

           
    Console.WriteLine()
           
    Console.WriteLine("Press any key to exit.")
           
    Console.ReadKey()
       
    End Sub
    End Module

    This should be pretty self explanatory. Check out MSDN for more properties available from the IFeed interface, such as the publication date and the last download time.

    The next step proved to be a little harder. There is no remote Link service available within Community Server. So I built one called the Blogroll Service and modeled it after the existing BlogService web service. The Blogroll Service imports from two CS namespaces, CommunityServer.Components and CommunityServer.Blogs.Components and inherits from the CSWebServiceBase class. The cool thing about the base class is that it takes care of all the authentication and login stuff.

    The other thing that was a little annoying is that the Links type does not provide the classes I would hope to find in a collection, such as FindByName or FindByUrl. It took a bunch of reflectoring to finally nail down how the pieces, CategoryId, SectionId and whatnot all fit together.

    I ended up with an AddOrUpdateFeeds class.

    <SoapHeader("Credentials"), WebMethod(Description:="Adds and updates the feeds on the blogroll.", EnableSession:=False)> _
    Public Function AddOrUpdateFeeds(ByVal listName As String, ByVal feeds() As Feed) As Integer
       
    MyBase.LoginSetSection()

       
    Dim linkCategoryId As Integer = GetLinkCategory(listName)

       
    ' kind of a hack, but will do for now
       
    ' need to get some changes into the CS API to allow for better link mgmt
       
    For Each item As Link In Links.GetLinks(linkCategoryId)
           
    Links.DeleteLink(item.LinkID, item.LinkCategoryID)
       
    Next

       
    For Each feed As Feed In feeds
           
    Dim link1 As Link = Me.GetLink(feed.Title, linkCategoryId)

            link1.LinkCategoryID = linkCategoryId
           
    link1.IsEnabled = True
           
    link1.Title = feed.Title
           
    link1.Url = feed.URL
           
    link1.IsEnabled = True
           
    link1.Description = String.Empty
           
    link1.Rel = String.Empty

           
    If (link1.LinkID > 0) Then
               
    Links.UpdateLink(link1)
           
    Else
               
    Links.CreateLink(link1)
           
    End If
       
    Next
    End Function

    Rather than write all the code to handle delete detection, I just deleted all the links from the list, and added the supplied ones. It's a hack, and not pretty, but it's 1.0 and serves my purpose.

    To use the program, first choose Tools >> Options, and enter your information.

    Then click Upload feeds.

    There are a couple of things I'd like to add into future versions:

    • The ability to deselect feeds from the list being published.
    • Delete detection
    • Maybe build it as an Outlook 2007 add-in to monitor the Feeds API events and update in real time. Maybe would be better as a tray app or a windows service?
    • Make it faster, the web service seems to take awhile to load in the new links.
    • Get the actual blog URL instead of using the RSS url.

    The binary and source bits can be had in the download section.

  • What do you want to know?

    I was talking with a colleague yesterday about what we encounter a development problem, and don't know the answer. Psychologists have long talked about the benefits of having a good personal support system. I would suggest that it is important for any technologist to have a good technology support system as well. We can't possibly know everything.

    To support this, a couple of bullet points from the ShiftHappens presentation by Jbrenman.

    • More than 3,000 new books are published every day.
    • It is estimated that a week's worth on New York Times contains more information than a person was likely to come across in a lifetime in the 18th century.
    • It is estimated that 40 exabytes (4.0 X 1019) of unique information will be generated worldwide this year.
    • The amount of new technical information is doubling every 2 years.
    • By 2010 it is predicted to double every 72 hours.

    You certainly don't want to be the guy always running around trying to get answers to simple questions. There is an acronym for that; RT(F)M. But at the same time, what if you are developing the latest and greatest, newest, most cutting edge tools and you need a little guidance on programming a model of the human behavior aspect of discount accretion and premium amortization of MBSs and CMOs?

    I have long said that being a great developer isn't about knowing ALL the answers; it's know where to find the answers and knowing how to apply them.

    So I will share with you my support system, and I encourage you to share yours. These are not necessarily in order. Depending on the problem, one resource may be better than another.

    1. Google, Google, Google
    2. Existing Code – Most problems are not new
    3. Books, preferably eBooks
    4. MSDN Library
    5. MSDN Newsgroups
    6. Reflector
    7. I have sometimes been able to resolve a problem by browsing the .NET libraries in Reflector. The reason is that I am able to dive into the method or property I am using, and see how the parameters are being used, what other methods it calls, etc. Reflector has certainly lead to a couple Doh moments.

    If I absolutely cannot find the information anywhere, I have people. I have colleagues, friends, and associates I can ask by email, phone or face to face. This is usually a last resort for me in that I can usually find the answer to the problem. In fact, I would guess that anywhere between 60% and 95% of all problems are easily recognized and solved by an experienced programmer, including many "Doh" errors, like "System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection." Instantly invoking the "Doh, I meant to put that " - 1" in there" response.

    So what is your support system?

  • International Scheduling

    I'm working on my Universal Scheduling Language (USL) specification, and in the process I am learning some little intricacies about world calendars and scheduling.

    Calendar

    For instance, it seems that most of the world has adopted the Gregorian calendar, as far as business is concerned. However some Arab countries use both the Gregorian and the Islamic calendars including Saudi Arabia which requires that dual calendars be maintained for international business.

    Weekends

    In the U.S. there are lots of cultural sayings related to Fridays and Mondays in the work week in relation to Saturday and Sunday being the weekend. However, the "weekend" is still a relatively new concept in parts of the world, and has been adopted in different ways. Some observe the weekend on Thursday and Friday, other start on Friday at noon, and others still on Saturday at noon. Originally I had defined weekend rules as IfSaturday and IfSunday. Given the differences around the world, it may be more accurate to describe weekend rules as IfFirstWeekendDay, IfSecondWeekendDay, and possibly IfThirdWeekendDay. I may need to further describe the weekend days with a start time and/or end time.

    New Years

    Times Square and *** Clark are two of the most notable icons of New Year's Eve. However, not all parts of the world share our enthusiasm for the 1st of January. Historically, the Romans and Babylonians celebrated New Years at the beginning of the Vernal Equinox; the first day of spring. Iran still follows this observance today. Among others, Thailand, Nepal, Cambodia and India celebrate New Years in April. In China New Years occurs based on the Chinese lunar calendar and usually occurs in late January or February.

    Daylight Saving Time

    Spring forward, fall back. Originally proposed in a 1784 satire, it wasn't until the early 1900's that daylight saving time was observed. However, like weekends and New Years, the whole world does not uniformly recognize DST. In fact, only a small portion of the world's population observes DST. Most of Africa and Asia do not. There are differences even within the political borders of the United States. Arizona and Hawai'i do not observe DST, but the Navajo Nation in Arizona does. Until recently, Indiana was split between Eastern Time and Central time, and many counties did not observe DST at all. Internationally, China spans five time zones, but does not observe DST, and some Australian provinces observe DST, but others do not. There are too many others to mention.

    From a financial business perspective, this can be very confusing when trying to determine a business day and when automated jobs should be run. For example, a Canadian entity wanting to purchase securities on the New York Stock Exchange (NYSE) needs to know whether the New York Stock Exchange (NYSE), the US Federal Reserve and the Bank of Canada are all open for business. Anyone with a browser could certainly figure this out in less than a minute, but what about automated systems?

    These are some of the issues and complexities I am encountering while writing my Universal Scheduling Language specification. For now, I think version 1.0.1 (I wrote version 1.0 awhile ago but never released it) will only include support for the Gregorian calendar, as most of the world's businesses recognize it. It will be interesting to integrate scheduling based on multiple calendars in future versions. Weekend rules will take some re-tooling to support the difference days of the week that are observed as the "week end".

    Originally, USL was part of a larger specification I was writing called Data Flow Execution Language (DFEL). I decided that it would be more concise to release and push adoption of USL first, and then make it a component in DFEL.

    Keep an eye on www.DFEL.net, as I plan on releasing USL 1.0.1 shortly. Following the USL 1.0.1 specification, I will be putting together the Globalization Metadata Server (GMS) specification. The constant fluctuations in DST observance, holiday scheduling and other variables make it imperative to have a common and public metadata repository for such information, hence GMS.

    The goal of all this: to create common, public and open standards for business use worldwide which provide a unified system of automation scheduling.

    Also, I'm looking for persons interested in getting involved. Specifically, technical folks to proofread my drafts and anyone with experience in standards work. Anyone else who is interested in these topics is certainly encouraged to get involved. Check out the website, as I'll have contact information up shortly.

    Any thoughts?

Powered by Community Server (Commercial Edition), by Telligent Systems
© Platinum Bay | Some Rights Reserved Creative Commons License

Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Feel free to challenge me, disagree with me, or tell me I'm completely nuts in the comments section of each blog entry, but I reserve the right to delete any comment for any reason whatsoever (abusive, profane, rude, or annonymous comments) - so keep it polite, please.