Archives

Archives / 2008 / June
  • It is with great sadness that I announce..........

    that at approximately 4:10 am this morning, I turned 41 years old.  I'm tired of running, so I have had my crystal permanently removedPrevious post about my crystal.

    Actually, its a really awesome day!  We may have picked up a new customer yesterday.  I'm suppossed to be off to NM today to start working for a customer that we just got last week.  You can follow me on twitter to recieve moment by moment updates of travels today.

  • INETA Community Champions (Champs) Program

    What is the INETA Community Champions (Champs) Program?

    INETA has partnered with Microsoft and Community Credit to offer INETA members the Community Champions Program. We want to recognize, encourage and reward the developers who routinely devote their time, expertise and passion to the benefit of the community.

    As we all know, volunteers are the heart of INETA and of our user groups. We all benefit from their passion for technology and their dedication to helping others. People like our officers, newsletter contributors, presenters and all those who pitch in to make the meetings run smoothly. Every person makes a difference ... YOU make a difference.

    If you take a moment to add it all up, you would be surprised by what it takes to make things happen ... and by how much INETA members are doing every day. That is where the INETA Community Champions program comes in. The Champs program is designed to help recognize what volunteers are doing, including the many tasks that others may not even be aware of. It allows volunteers to record their contributions, to see what others are doing, and to be inspired by the results. The program also provides two very special recognition processes, the Community Champion Award and the Community Excellence Award.

    Community Champions Award

    Once a quarter, INETA will recognize leading contributors as Community Champions. In addition to claiming this prestigious title for twelve months, awardees also receive a letter of commendation, a certificate of achievement, much deserved online recognition, and a few great prizes. Of course, we want this award to motivate even more involvement, so we encourage everyone, including winners, to record your activities. After all, you are eligible to win every twelve months. Find out more and see what others are doing.

    Community Excellence Award

    In recognition of their lifetime achievements, INETA is proud to present our most dedicated leaders with the Community Excellence Award. You know the people that we mean, so we are counting on YOU to start the award process by nominating them for this elite honor. These are the outstanding individuals who, year after year, have gone above and beyond to lay the foundation and provide the structure for building our community and to keep it vibrant and growing. They step up when called upon; they are our leaders and mentors; they inspire us to stretch our horizons; and they help provide us with resources along the way. Read about past recipients and find out more about the award.

  • ASP.NET Podcast Show #118 - Paul on Peer-To-Peer with Windows Communication Foundation

    Subscribe to EVERYTHING <-- What you REALLY WANT TO DO!

    Original Url: http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2008/06/19/asp-net-podcast-show-118-paul-on-peer-to-peer-with-windows-communication-foundation.aspx

    Subscribe to WMV Video only.

    Subscribe to M4V Video only.

    Subscribe to MP3 Audio only.

    Download WMV.

    Download M4V.

    Download MP3.

    Show Notes:

    Download Source Code

  • CodeStock (August 9) Registration is now open

    Yes, that's right the registration for CodeStock is NOW OPEN! CodeStock will be the biggest software development conference in the world (the weekend of August 9).  There will be world class speakers at the event.  Jeff Prosise will deliver the keynote. We have speaker's coming from all over the eastern United States. Heck, we even let some blond guy from Knoxville in.  I figured we had to since his company provided the MSDN Premium Subscription with Team Suite ($10k value, or so I am told), which will be the grand prize in the giveaway portion of the event. And registration for the event is NOW OPEN!

  • Community Question: How to Monetize Maps?

    As some of you know, I've been working with mapping for the last 18 or so months.  These maps have points on them that are supplied by a service my customer has.  The question is, what are some ways to monetize maps?  We've got 4 or 5 ways that we have thought of, but I'd like to get the thoughts of the community.  So, feel free to comment in this post with your ideas.  Yes, we already have the idea of placing google ads around the pages.  Do you have other ad services, better ad services, licensing ideas, or other ideas that might generate income?  If so, I'd like your feedback and thoughts.

    Wally

  • ASP.NET Podcast Show #115 - Interview with Josh Holmes RIA Evangelist for Microsoft

    Subscribe

    Subscribe to MP3.

    Original Url: http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2008/06/03/asp-net-podcast-show-115-interview-with-josh-holmes-ria-evangelist-for-microsoft.aspx

    Download MP3.

    Show Notes:

    ·         Josh's new role.Josh's

    ·         Started as a community archectual evangalist.

    ·         With MS for about 18 months.

    ·         Involved with RIA.

    ·         Silverlight, ajax, wpf, sharepoint, mvc.

    ·         20 states.

    ·         www.joshholmes.com.

    ·         cross compile silverlight app to wpf.

    ·         .net in the browser, 20 controls, wcf, linq, datagrid, more mature development.

    ·         SL1: windows XP forward & MacPPC and forward.  javascript & xaml.

    ·         SL Mobile: Nokia & Phones with SDKs.

    ·         SL2: wintel macs & forward.  Windows XP and forward on the intel platform. Moonlight through Novell on Linux within 6 months.

    ·         Silverlight tools for VS 2008.

    ·         Expression Blend 2 for Silverlight 1.

    ·         Expression Blend 2.5 CTP for Silverlight 2.

    ·         What's happening in the community.

    o   TechEd 2008.

    o   Joe Healy's betweener weekend.

    o   PDC 2008.

    o   Codestock 2008.

    o   Cleveland Day of .NET.

    o   Lansing Day of .NET.

    o   Bar Camps.

    o   Agile Summer Camp in Lansing.

    o   Give Camps.  http://www.GiveCamp.org.  Started in Dallas. 85 developers across 13 charities.

    o   July 11-13 for Ann Arbor Give Camp.

    o   Indianapolis Give Camp.

    o   DevLink in August.

    o   eRuby Conference August 16-18  in Cleveland.  erubycon.com

    o   Twin Cities CodeCamp.

    o   http://www.DayOfDotNet.org

    o   http://www.riapalosia.com. - Zach Dorman - May 30-31.

    o   http://theumlguy.com - Martin - virtually free.

    o   new stuff coming down the pipe.

     

    Josh Holmes

  • ASP.NET Podcast Show #114 - ADO.NET Data Services in .NET 3.5 Service Pack 1 Beta1 with ASP.NET AJAX

    Subscribe to everything.

    Original Url: http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2008/05/31/asp-net-podcast-show-114-ado-net-data-services-in-net-3-5-service-pack-1-beta1-with-asp-net-ajax.aspx 

    Subscribe to WMV.

    Subscribe to M4V for iPod.

    Subscribe to MP3.

    Download WMV.

    Download W4V for iPod.

    Download MP3.

    Show Notes:

    • ADO.NET Data Services Viewing DataSql Server Database .
    • ADO.NET Data Services.
    • Javascript.
    • No SQL.
    • Getting data.
    • Insert a record.
    • Update a record.
    • Metadata.
    • I had a snafu while recording, so some audio may sound clipped.

    Source Code:

    ADO.NET Data Services Editing Data<%@ ServiceHost Language="C#" Factory="System.Data.Services.DataServiceHostFactory" Service="OrderItemDataService" %>

    Codebehind file:

    using System;

    using System.Data.Services;

    using System.Collections.Generic;

    using System.Linq;

    using System.ServiceModel.Web;

     

    public class OrderItemDataService : DataService< ADONETDataServicesModel.ADONETDataServicesEntities >

    {

        // This method is called only once to initialize service-wide policies.

        public static void InitializeService(IDataServiceConfiguration config)

        {

            // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.

            // For testing purposes use "*" to indicate all entity sets/service operations.

            // "*" should NOT be used in production systems.

            // Example for entity sets (this example uses "AllRead" which allows reads but not writes)

            // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);

            config.SetEntitySetAccessRule("*", EntitySetRights.All);

            config.UseVerboseErrors = true;

            //config.SetEntitySetAccessRule("tbOrder", EntitySetRights.All);

            // Example for service operations

            // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);

      }

     

        // Query interceptors, change interceptors and service operations go here

    }

    Display Data:

    <script language="javascript" type="text/javascript">

    function pageLoad()

    {

        var strOut;

        var Service = GetDataService();

     

        var QueryString = "/tbOrder";

        Service.query(QueryString, OnCompleteSuccess, OnCompleteFailure);

    }

    function GetDataService()

    {

        return(new Sys.Data.DataService("WebDataService.svc"));

    }

    function OnCompleteSuccess(result) {

        var strReturn = "<br />";

        var Output = "On Complete Success Called." + strReturn;

        var i = 0;

        for (m in result)

        {

            Output += m + strReturn;

        }

     

        for (m in result[0]) {

            Output += m + strReturn;

        }

     

        Output += "<table>";

        Output += "<tr><th>Total Amount</th>" +

                  "<th>Date of Order</th>" +

                  "<th>Comment</th>" +

                  "<th>Customer Name</th>" +

                  "<th>Edit</th>" +

                  "</tr>";

        for (i=0; i< result.length; i++)

        {

            Output += "<tr>" +

                "<td>" + result[i].TotalAmount + "</td>" +

                "<td>" + result[i].DateOrdered + "</td>" +

                "<td>" + result[i].Comment + "</td>" +

                "<td>" + result[i].CustomerName + "</td>" +

                "<td><a href='EditOrder.aspx?OrderID=" + result[i].OrderId + "'>Edit</td>" +

                "</tr>";

        }

        Output += "</table>";

        $get("OutputDiv").innerHTML = Output;

    }

     

    function OnCompleteFailure(result)

    {

        alert("On Complete Failure Called.");

    }

    Add/Edit/Delete file:

            var OrderID=<%=Request.QueryString["OrderID"] %>;

           

            function pageLoad() {

                FillOrderData();

            }

            function FillOrderData()

            {

                var Service = GetDataService();

                var QueryString = "tbOrder(" + OrderID + ")?$expand=tbItem";

                Service.query(QueryString, OnCompleteSuccess, OnCompleteFailure);

            }

            function GetDataService()

            {

                return(new Sys.Data.DataService("OrderItemDataService.svc"));

            }

            function OnCompleteSuccess(result)

            {

                var i = 0;

                var Output = "<table><tr><th>Part</th><th>Price</th>" +

                    "<th>Edit</th><th>Delete</th></tr>";

                for(i = 0; i < result.tbItem.length; i++)

                {

                    Output += "<tr><td>" + result.tbItem[i].Part +

                        "</td><td>" + result.tbItem[i].Price + "</td>" +

                        "<td><a href='javascript:EditItem(" + result.tbItem[i].ItemId + ")'>Edit</a></td>" +

                        "<td><a href='javascript:DeleteItem(" + result.tbItem[i].ItemId + ")'>Delete</a></td>" +

                        "</tr>";

                }

                Output += "</table>";

                $get("OutputGrid").innerHTML = Output;

            }

           

            function OnCompleteFailure(result)

            {

                alert("OnCompleteFailure called.");

            }

           

            function DeleteItem( ItemId )

            {

                var Service = GetDataService();

               

                if ( window.confirm("Do you really want to delete this Item?" ) )

                {

                    alert("Delete it.");

                    Service.remove(null, "tbItem(" + ItemId + ")",

                        DeleteItemSucceed, DeleteItemFailure);

                }

            }

           

            function DeleteItemSucceed( result )

            {

                FillOrderData();

                alert("DeleteItemSucceed called.");

            }

           

            function DeleteItemFailure( result )

            {

                alert("DeleteItemFailure called.");

            }

           

            function EditItem( ItemId )

            {

                var Service = GetDataService();

                var QueryString = "tbItem(" + ItemId + ")";

                Service.query(QueryString, EditItemSucceed, EditItemFailure);

            }

           

            function EditItemSucceed( result )

            {

                $get("txtPrice").value = result.Price;

                $get("txtPart").value = result.Part;

                $get("hdItemId").value = result.ItemId;

                $get("OutputSpecifics").style.visibility = "visible";

                $get("OutputGrid").style.visibility = "hidden";

                FillOrderData();

            }

           

            function EditItemFailure( result )

            {

                alert("EditItemFailure called.");

            }

           

            function SaveItem()

            {

                var ThisItemId = $get("hdItemId").value;

                var Service = GetDataService();

               

                if (ThisItemId == "" )

                {

                    var newProduct =

                    {

                        Price:      $get("txtPrice").value,

                        Part:       $get("txtPart").value,

                        tbOrder:    { __metadata: {uri: "/tbOrder(" + OrderID + ")" }}

                    };

                    Service.insert(newProduct, "tbItem", InsertItemSucceed, InsertItemFailed);

                }

                else{

                    var updateProduct=

                    {

                        ItemId:     $get("hdItemId").value,

                        Price:      $get("txtPrice").value,

                        Part:       $get("txtPart").value,

                        tbOrder:    { __metadata: {uri: "/tbOrder(" + OrderID + ")" }}

                        //$get("hdOrderId").value

                    }

                    Service.update(updateProduct, "tbItem(" + $get("hdItemId").value + ")", UpdateItemSucceed, UpdateItemFailed, updateProduct);

                }

            }

            function InsertItemSucceed(result)

            {

                alert("InsertItemSucced called.");

                FillOrderData();

            }

            function InsertItemFailed(result)

            {

                alert("InsertItemFailed called.");

            }

            function UpdateItemSucceed(result)

            {

                alert("UpdateItemSucceed called.");

            }

            function UpdateItemFailed(result)

            {

                alert("UpdateItemFailed called.");

            }

            function BeginAdd()

            {

                $get("OutputGrid").style.visibility = "hidden";

                $get("OutputSpecifics").style.visibility = "visible";

                $get("txtPrice").value = "";

                $get("txtPart").value = "";

                $get("hdItemId").value = "";

            }