I Bid Adieu to Webtrends

I have recently decided to move on from Webtrends and wanted to send a public thank you to everyone.  I have served in three distinct departments for Webtrends over the years; VI SWAT Team Support, Engineering, and Consulting Services.  In each of these groups I have worked with some great individuals.  These team members have been good people, technical rock stars, and all around great company over the last few years.

  • Neil | You are a rock star tier three leader.  Your boot camp training sessions are awesome!  You can shoot ok too.  Keep shooting, keep rocking the leadership, and I don’t even have to suggest keep being a thinker.
  • Jayson B | Thanks a million for the multitudes of conversations and random .NET tech discussions and such.  Those conversations always rocked, and introduced me to more than a few new ideas.  Keep thrashing the code and I am sure you will be rocking an elite team in no time.
  • Jay | Aweosme ranting with ya.  Enjoyed working with you and hearing about the bus commute in.  If I ever get my transit sleuth blog running again I will be sure to
  • Doyle | Thanks for sight tapping yourself in the eye, that was great entertainment.  If you ever need some help, I can teach you how to shoot those real guns.  Keep hacking that T-SQL Code, keep the stats up, yadda yadda yadda.  You rock, thanks for the off hand banter every day!
  • Alexander | Your product knowledge is renown around the company and outside of the company.  Don’t spill too much beer and I will be looking forward to our next communism versus capitalism discussion.  Maybe we will flip sides sometimes just to play devil’s advocate.
  • Gareth | It has been great fighting wars with you, you have also been a valuable point of knowledge and technical assistance with the product, the wars, and more.  I will miss the random banter throughout the day.  Keep kicking ass and I will look forward to our next pint or pitched battle.
  • Heather C | Keep the integrations integrated and integrating, it has been fun.  Wish we could have worked together more.  Also enjoyed presenting with you in New Orleans at Engage, maybe we’ll stumble into that chance again!
  • Brian G | Great presenting in New Orleans, may video tracking be the bee’s knees!
  • Josh W | Keep it virtualized, I know you will.  Without you so much would just fall over itself, you honestly keep the whole of the company’s progress moving forward.
  • James K | You are an excellent developer, it was fun working with you back in my Webtrends engineering days.
  • Rob D | Keep those awesome iPhone Apps coming.  Those suckers rock . . . of course that means I have to go get another iPhone.  But yeah. . .
  • Tim | I hardly knew ye’ and we only made it to Zack’s Shack for dogs once!!  We were supposed to go every Tuesday!  Well maybe in the future we’ll grab one of those Tuesdays.  Keep throwing down awesome PPC Stats and numerical goodness for your clients.
  • Richard | OMG, the end of the world is coming.  Oh wait, that was just me missing my bus.  But seriously, watch out for all the crazies.  I hear there are a few.  Great conversations, keep having fun.
  • Michael C | Thanks for being a great boss man, you rule.  Your insights into business and getting the services team working with other departments is top notch.
  • Gary | Thanks for being a great boss man, fellow team member, and helping me keep my sanity in the desolation of Thief River Falls.
  • Virginia | Will you ever return to Webtrends?  Eh, whatever the case, have fun make sure to keep kicking and enjoy your new married life.  I’m sure you will!
  • Jeff P | Thanks for the random hallway chats, music suggestions, guitar discussions, practice space ideas, and million other things we’ve randomly discussed.
  • Jeff J | Thanks for the insights, keep up the great job app man.  If you have any thoughts, questions, or otherwise feel free to shoot me an e-mail!
  • Brad G | Keep hacking, make sure to use yourself an MSDN and get and stay ramped on the latest .NET bits.  I know you will and yes I will be working on the analytics frameworks in the future.
  • Dash | Daper man, daper.  Keep it money, keep it rolling, keep it smooth.  I know I can trust you to do so.
  • Eric G | Make sure the photons are loaded or Xander & Neil are going to take you out next round.  Also thanks for the random insightful e-mail thread comments and thoughts.
  • Dan B | Dude!  Watch out for the Javascript, it looks like that Actionscript but it is broken!!??!?  Egads!  Great technical breadth, keep up the hacking and keep the Javascript under control.  I know you will.
  • Sean B | Thanks for the political strategies, updates and the lowdowns on the info.  I appreciate it.  I’ll definitely miss getting lunch and figuring out the markets. I’ll have to break out and hit Portland sometime, we will have to grab Dan and get a Pita Pit.
  • Michael G | You are the a totally ruling VP o’ Sales, you have brought life to a zillion conversations.  I don’t even need to suggest, because I know you’ll be rocking the sales for some time.  I look forward to hearing Webtrends reach new records quarter after quarter.  Keep up the mischievousness!
  • Jeremy D | Keep those clients happy (and in line) and keep those sales rolling in!
  • Sandra | Neighbor, coworker, fellow nerd.  Keep having fun, and getting that knowledge to the clients.
  • Perry | Mississippi here saying have a blast, keep the training flowing, and stay out of trouble.
  • David S | You are the steady calm of the consulting services division.  Stay steady.
  • Kelvin C | Dude, you have some of the best ideas, keep up the energy, and don’t ever lose that awesome sense of humor!
  • David S | Keep up the amazing work, and tear it up with the designs.
  • Ryan P | HTML 5 RULZ!  FTW!  Yeah!
  • Justin G | The UX is amazing, you have changed Webtrends for the better.
  • Justin K | Beer, blogging, Webtrends, and more social media.  Keep up the good work, it has been a blast!
  • Kamran A | Thanks for keeping the automations going.  I knew things happened with high quality points when you were on the job!
  • Jeahna | You should just be in charge of everything.  Seriously!  You rule the house!
  • Kelly K | You are keeping this ship from going aground on many an occasion, you rock.
  • Carmen | Thanks for keeping me in line.  Somebody has to do it.  Great working with you, have a blast in ops.
  • Dave C | Thanks for leading services and keeping the keel steady through good times and rough times.
  • James M | Your leadership of partnerships is without peer.  You and Abed have been great team members and partners in business.
  • Abed | Thanks for the discussions, the camaraderie, and helping kick off some great partnerships!
  • Jascha Kaykas-Wolff | I didn’t get to work directly with you, but you have revolutionized Webtrends Marketing Group, amazing, truly awesome job!
  • Alex Yoder | Seriously, you should have taken over months before.  I’m honestly very glad you were at the helm during my time at Webtrends.  It wouldn’t have been the same.  Your leadership really helps drive the company to new heights.

If I missed anyone, my apologies, you all have been rock stars!  I loved working with the whole crew of the Webtrends Ship!  Keep sailing on the high tech channel, I wish everyone success in their endeavors.

Getting Ramped for Silverlight 4

Here is a quick walk through of setting up your Silverlight 4 development environment.  The first assumed step is that you have Visual Studio 2010 already installed and any appropriate patches.  Then download the following in order and install each.

Once each of these are installed jump into Visual Studio 2010.  Start a new Silverlight 4 Project by going to File -> New -> Project -> and select the Silverlight Project Templates.  Here you’ll see a new list of projects that are specific to the above listed downloads.

  • Silverlight Business Application
  • WCF RIA Service Class Library
  • Silverlight Unit Test Application

One way to confirm (and what I am going to display here in this entry) Silverlight 4 is installed ok is to select the Silverlight Application Template and start a new project.

On the next screen you will see some of the standard options.  I always go with the ASP.NET MVC Option and with these new installations I am going to select Silverlight 4 (should be selected already) from the drop down and check the Enable WCF RIA Services check box.

I also, for good measure, always create a unit test project for the ASP.NET MVC Project that will host the Silverlight Application Project.  When all is setup, the Solutions Explorer should look like what is shown below.

Add the following code to the XAML of the MainPage.xaml of the Silverlight Project.

[sourcecode language="html"]
<UserControl x:Class="Silverlight4.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    <Grid x:Name="LayoutRoot" Background="White">
        <TextBlock x:Name="textBlockTest" Text="Hello World!" />
    </Grid>
</UserControl>
[/sourcecode]

Now execute the project, if all runs well you have installed Silverlight 4 successfully.

Bam!  Silverlight 4 ready to go!  I will have more on Silverlight 4 very soon, as I will be starting a project (personal) and blogging it as I work through it.  Also, if you run into any issues I would like to read about them, so please comment.  I had a few issues and also had some design time rendering issues in the VS 2010 IDE when I installed these bits at first.

Blending the Sketchflow Action

Started a new Sketchflow Prototype in Expression Blend recently and documented each of the steps.  This blog entry covers some of those steps, which are the basic elements of any prototype.  I will have more information regarding design, prototype creation, and the process of the initial phases for development in the future.  For now, I hope you enjoy this short walk through.  Also, be sure to check out my last quick entry on Sketchflow.

I started off with a Sketchflow Project, just like I did in my previous entry (more specifics in that entry about how to manipulate and build out the Sketchflow Map).

Once I created the project I setup the following Sketchflow Map.

The CoreNavigation is a ComponentScreen setup solely for the page navigation at the top of the screen.  The XAML markup in case you want to create a Component Screen with the same design is included below.

[sourcecode language="html"] <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:pb="clr-namespace:Microsoft.Expression.Prototyping.Behavior;assembly=Microsoft.Expression.Prototyping.Interactivity" x:Class="RapidPrototypeSketchScreens.CoreNavigation" d:DesignWidth="624" d:DesignHeight="49" Height="49" Width="624"> <Grid x:Name="LayoutRoot"> <TextBlock HorizontalAlignment="Stretch" Margin="307,3,0,0" Style="{StaticResource TitleCenter-Sketch}" Text="A?t?chart Scorecards" TextWrapping="Wrap"> <i:Interaction.Triggers> <i:EventTrigger EventName="MouseLeftButtonDown"> <pb:NavigateToScreenAction TargetScreen="RapidPrototypeSketchScreens.Screen_1"/> </i:EventTrigger> </i:Interaction.Triggers> </TextBlock> <Button HorizontalAlignment="Left" Margin="164,8,0,11" Style="{StaticResource Button-Sketch}" Width="144" Content="Scorecard"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <pb:NavigateToScreenAction TargetScreen="RapidPrototypeSketchScreens.Screen_1_2"/> </i:EventTrigger> </i:Interaction.Triggers> </Button> <Button HorizontalAlignment="Left" Margin="8,8,0,11" Style="{StaticResource Button-Sketch}" Width="152" Content="Standard Reports"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <pb:NavigateToScreenAction TargetScreen="RapidPrototypeSketchScreens.Screen_1_1"/> </i:EventTrigger> </i:Interaction.Triggers> </Button> </Grid> </UserControl> [/sourcecode]

Now that the CoreNavigation Component Screen is done I built out each of the others.  In each of those screens I included the CoreNavigation Screen (all those little green lines in the image) as the top navigation.  In order to do that, as I created each of the pages I would hover over the CoreNavigation Object in the Sketchflow Map.  When the utilities drawer (the small menu that pops down under a node when you hover over it) shows click on the third little icon and drag it onto the page node you want a navigation screen on.

Once I created all the screens I setup the navigation by opening up each screen and right clicking on the objects that needed to point to somewhere else in the prototype.

Once I was done with the main page, my Home Navigation Page, it looked something like this in the Expression Blend Designer.

I fleshed out each of the additional screens.  Once I was done I wanted to try out the deployment package.  The way to deploy a Sketchflow Prototype is to merely click on File ?> Package SketchFlow Project and a prompt will appear.  In the prompt enter what you want the package to be called.

I like to see the files generated afterwards too, so I checked the box to see that.  When Expression Blend is done generating everything you?ll have a directory like the one shown below, with all the needed files for deployment.

Now these files can be copied or moved to any location for viewing.  One can even copy them (such as via FTP) to a server location to share with others.  Once they are deployed and you run the “TestPage.html” the other features of the Sketchflow Package are available.

In the image below I have tagged a few sections to show the Sketchflow Player Features.  To the top left is the navigation, which provides a clearly defined area of movement in a list.  To the center right is the actual prototype application.  I have placed lists of things and made edits.  On the left hand side is the highlight feature, which is available in the Feedback section of the lower left.  On the right hand list I underlined the Autochart with an orange marker, and marked out two list items with a red marker.

In the lower left hand side in the Feedback section is also an area to type in your feedback.  This can be useful for time based feedback, when you post this somewhere and want people to provide subsequent follow up feedback.

Overall lots of great features, that enable some fairly rapid prototyping with customers.  Once one is familiar with the steps and parts of this Sketchflow Prototype Capabilities it is easy to step through an application without even stopping.  It really is that easy.  So get hold of Expression Blend 3 and get ramped up on Sketchflow, it will pay off in the design phases to do so!

Clear Review

I tried Clear about a year ago and I had some issues with it.  Speed, connectivity, and a number of other things just were not really there for me.  However, I am trying it again, and so far I have some better things to say this time around.

The first thing, is that the speed is more consistent.  I’m pulling down downloads over 4G WiMAX at a fairly steady speed.  Pulling out the old speedtest.net site I got the following speed ratings.  Download 3.23Mb/s and 0.7 Mb/s upload from Vegas test point, and 3.53 Mb/s download from Grants Pass, OR.  For Portland I got a 4.05 Mb/s download and 0.81 Mb/s upload.  Very nice.

Latency is another fine improvement.  I have been getting a consistent 50-300ms latency response, compared to the rather wretched latency (1200+ sometimes) I get from regular wifi in a coffee shop or Comcast.  I have been seriously impressed by this rating.

I have tried doing a bit of work with Clear on the transit also, and so far it has been more consistent than my last review.  I have not gotten dropped once under normal travel conditions.  When travelling through a tunnel, heavy storm conditions, and those types of scenarios there has been loss of communication, but overall that is expected.

At this time, I reverse my last review standing to a thumbs up, get it.

Part 1 Basic Webtrends REST Examples

In this entry I just want to cover some examples of how to connect to Webtrends DX Web Services.  The DX Web Services use REST as the architecture, providing simple URI based end points to connect to.  With the Webtrends SDK you can connect to these services with your account information.  Here are the basic steps to retrieve a profile list, the reports from one of those profiles, and then the report you want from that report list.

First step is to create a Webtrends User.

WebTrends.Sdk.Account.User webtrendsUser = new Account.User();
webtrendsUser.UserName = username;
webtrendsUser.Password = password;
webtrendsUser.AccountName = account;

After you create the Webtrends User, simple request a profile list by getting list of ProfileDefinition Objects.

List<WebTrends.Sdk.Profile.ProfileDefinition> profiles =
  WebTrends.Sdk.Factory.NavigationFactory.BuildListing(webtrendsUser);

Next you will want to grab a report based on the profile you are in and your credentials.

List<WebTrends.Sdk.Report.ReportDefinition> reports =
WebTrends.Sdk.Factory.NavigationFactory.BuildListing(profiles[i], webtrendsUser);

In the code above, i would equate to the specific profile you want from the retrieved list of profiles in the profiles list.  The common scenario is that one has pulled the profiles into a drop down, combo, or list box that the user can select.  Then when the user selects the specific profile that profile object can then be used to pull the List of ReportDefinitions.

Once we have the report definitions, all sorts of criteria can be added together to query for a specific report.  This is also were things can get a little tricky.  For instance, take a look at the code below.

WebTrends.Sdk.Factory.ReportFactory.CreateDimensionalReport(
    report.ID.ToString(), profiles[i].ID.ToString(), "2010m01", webtrendsUser);

The CreateDimensionalReport takes 4 parameters for this particular overload.  The report ID, profile ID, the Webtrends Date Format, and the Webtrends User Object.  There are a number of other overloads available within this factory’s method that allow for passing the specific REST URI, and other criteria to retrieve the report of your choice.  In the near future we will be adding some more to this method also, which will provide more flexibility without needing to use the full REST URI.

I will have more on this, so all you Coders out there using Webtrends DX Services, I hope this is helpful!  Enjoy.