newtelligence poweredRSS 2.0
# Saturday, November 28, 2009

This post is part of my PDC09 Conference Notes series. These are my raw notes taken while watching the various session videos from PDC09. Refer to my original post for some conventions I tried to use.

This presentation was part 2 of 2 on SQL Server StreamInsight, and was intended as an advanced look at StreamInsight. If I get around to watching part 1, I will update this post.

“Microsoft SQL Server StreamInsight is a powerful platform for developing and deploying complex event processing (CEP) applications. Its high-throughput stream processing architecture and familiar .NET-based development platform enable developers to quickly implement robust and highly efficient event processing applications.

Typical event stream sources include data from manufacturing applications, financial trading applications, Web analytics or operational analytics. StreamInsight enables you to develop CEP applications that derive immediate business value from this raw data by lowering the cost to extract, analyze, and correlate the data and by allowing you to monitor, manage, and mine the data for conditions, opportunities, and defects in close to real time.” –Microsoft TechNet

StreamInsight was designed to handle input sources that operate in the milisecond range, instead of the second, minute and hour+ range. One of the demo’s shown, demonstrated capturing and processing 60 events per second. StreamInsight will be licensed and released with SQL Server.

 

There was mention of Windows CE and other platform support when they were talking about how the Stream OS provides hardware abstraction for StreamInsight. It seems kind of weird that they didn’t start with Windows CE as the most obvious use (to me) is automation. However, some of the examples shown where at the enterprise server level, which matches up with the definition I pulled from TechNet.

 

StreamInsight makes use of Native memory to avoid garbage collection, and I would assume there are other native code optimizations used for performance reasons. It looks like they are trying to bridge the gap between native code performance and the ease of .net development to support Complex event processing.

 

The following challenges facing complex event processing scenarios necessitated a platform:

  • Pattern Detection
  • Correlate Data
  • Aggregate
  • Hardware Abstraction

Adapters

  • “Get” the data into the application
  • Built using the adapter framework
  • Default adapters wrap the framework in an Observable Patter and expose IEnumerble collections
  • Adapters can be Push or Pull
  • Adapters can be In-Order or Out-Of Order
  • Work with Native Memory

Query Expressions

  • Allows for data manipulation
  • Projection
  • Filtering
  • Correlation (joins)
  • Aggregate over Windows of time (Temporal semantics)
    • Time windows can be overlapping or non-overlapping
  • Grouping and Aggregation
  • Implemented using Linq. Everything except the time aggregation is implemented using out of the box Linq. Linq extensions were created for the time aggregation.
Saturday, November 28, 2009 11:19:40 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
Conference Notes | Sql
# Thursday, November 26, 2009

Well it’s not exactly my first, but might as well be. Aside from playing around with WPF a couple of times, I’ve never really sat down and written an application from start to finish. Hopefully, this will be one time where I do finish.

Given a set of requirements that contains a series of screens, I am to implement a wizard like interface. Since this application is targeting external customers, looks will count for something. I also want to make sure that there is no confusion between the old application and this new version of the application.

To start with, I have installed Expression Studio 3, along with the WPF themes from the WPF toolkit. The themes are part of the WPF futures release in the WPF toolkit project on CodePlex. I then created a new WPF application in Visual Studio (since I was waiting for Expression to download and install) and added the Expression dark theme to my App.Xaml file as a resource dictionary (key section is in bold below). You can see in the source attribute, that I have added themes folder that will contain all of the downloaded themes. I then switched to Expression Blend 3 to begin work on the UI in earnest.

<Application x:Class="ThemesSample.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="Window1.xaml">
    <Application.Resources>
        <ResourceDictionary Source="Themes\ExpressionDark.xaml"/>
    </Application.Resources>
</Application>

As I am a firm believer in not re-inventing a wheel, a quick Bing search gave me some possible WPF wizard implementations. There were a couple of pay options, and one open source option,  Piotr Wlodek’s WPF Wizard Control. His sample application and code looked pretty straight forward and I was fairly certain I could massage it into my application without too many problems.

After downloading and extracting the WPF Wizard Control, I was presented with three projects. Pitor’s post uses the code in the WPF Wizard 2 project, so I started there as well. The base control is named Wizard and is in the controls folder. So I created a controls folder in my project as well, and imported Wizard.cs by using the Add Existing Item option in Blend and updated the namespace to match my project.

Next I deleted the MainWindow.xaml file that was created with my new project, and imported the Window1.xaml from the WPF Wizard 2 project. Again, I had to go thru and update the namespace in the code behind file, as well as change the class name in Window1.xaml from WpfWizard to MyNamingConvention.Window1. You will also need to update the reference to Controls on line 4 in Window1.xaml to match your namespace. Once finished, you should be able to build, and see an empty white window in the designer for Window1.

So where is the Wizard? Well, the original project uses a Generic.Xaml file to define the styles of the various UI elements. Since we haven't imported that yet, we don’t see anything. The problem that we need to solve is “merging” the Generic.xaml from the Wpf Wizard project with our themes that we downloaded. I wanted to show you what the application looked like at this point, because I think it shows how WPF operates differently from other types of applications.

In order to have a good starting point, I went ahead and imported the Generic.xaml file from the Wpf Wizard project, and updated the namespace on line 3. After rebuilding, I now start to see some actual UI elements on Window1. You should also note that the check box on the side bar is in fact picking up our ExpressionDark theme. However, the buttons are not picking up the theme, and the background is certainly not appropriate for our ExpressDark theme.

To fix the buttons, I went ahead and removed the style property for each button in Generic.xml, and manually set the margins and width on each button. This allows the buttons to pick up the style from ExpressionDark. There is a way to do some style inheritance, but at this point I don’t think I need it for the buttons. However, you can add the following attribute to the a style tag: BasedOn="{StaticResource {x:Type Button}}” – See this post for more information on the BasedOn attribute.

The background color for the wizard was really giving me problems, so I decided to skip it for now and add the rest of the my wizard pages so I could test that out. Switching back to Window1.xaml (view XAML), you will see that the wizard is made up of a Wizard control tag, and then 1 or more WizardPage child controls (see image below). The hierarchy is:

  • Wizard
    • WizardPage (CanFinish, CanCancel)
      • SideHeader: Option. I’m using it to show progress thru the Wizard
      • Border: Main content and additional controls go here

image

I created my first page, complete with a stack panel in the SideHeader, which contains 6 labels to indicate which step of the Wizard we are on. I then copied and pasted the <WizardPage> 5 times, changed the comment before each page, and updated the label names to get my basic 6 screen wizard. The CanCancel attribute on the Wizard page is set to true by default, so I left that as is, and since I only want someone to be able to finish after getting to the last screen, I set CanFinish to true on the 6th <WizardPage>.

I went back to the background color and finally figured out that you need to change the styles defined in Window1.xaml, not Generic.xaml for:

  • x:Key="{x:Static Controls:Wizard.HeaderPanelBorderResourceKey}"
  • x:Key="{x:Static Controls:Wizard.SideHeaderPanelBorderResourceKey}"
  • x:Key="{x:Static Controls:Wizard.NavigationPanelBorderResourceKey}"
  • x:Key="{x:Static Controls:Wizard.ContentPanelBorderResourceKey}"

I’m going to assume that since the styles were defined in two locations, the one in Window1.xaml takes precedence. The styles in Generic.xaml are either there as defaults, or were unintentionally left there by the original author.

My final touch, was to define a second style for my ProgressLabels, called ProgressLabelSelected, which changes the foreground color. When not selected the label is black, when selected the label is white. Here is what Window1.xaml now looks for me after the background and label changes, and I think it’s coming along nicely.

image

One thing that I do not like about this wizard control, but is present in almost any wizard control I have used, is that it’s difficult to work with the various wizard screens. While you can edit the xaml directly, that is kind of a pain and gives no design time view. Hiding the WizardPage doesn’t work, and so far my only option is to drag the wizard page I want to work with to the top of the list.

I think I’m at a good spot to leave off at for this post as I move onto adding more controls and content to the various Wizard Pages. I’ll come back with a second post on what I learn during that process.

Thursday, November 26, 2009 11:51:00 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
WPF
# Wednesday, November 25, 2009

This post is part of my PDC09 Conference Notes series. These are my raw notes taken while watching the various session videos from PDC09. Refer to my original post for some conventions I tried to use.

  • 4 Scenarios:
    • It Works on My Machine
    • Choose the right tests
    • Solve Complex Debugging Tasks
    • Multi-Tier Performance Analysis
  • Hard to Reproduce Bugs (It works on my machine/I can't reproduce it)
    • Solved by a new feature, IntelliTrace
    • Used to be solved by adding Debug statements
    • IntelliTrace adds Record, Playback and Rewind
    • Demo shows a nightly build that failed
      • Click thru the build report to view the IntelliTrace log file
      • Shows Threads, test data, system info, loaded modules
      • Double click on call stack for the exception (test failure) line where error occurred and takes you to the exact line in the source code.
      • Step forwards and backwards in playback to view what was going on (variable state, etc)
      • Filter which events you want to see (Asp.Net, ADO.Net, Registy, etc)
    • You can now see the return value of methods!
    • Records the exact execution path thru branches eliminating guess work.
    • No need to add anything to your code
    • Various levels of recording. The more you record, the higher the performance impact. No mention was made of how much of a performance hit, although the default settings are not supposed to impact it much.
    • Works with Asp.Net as well. Tracks events like gets and posts, allows you to jump into code at that point in time
    • How does it Work?
      • IntelliTrace record starts, loads CollectionPlan.xml and starts recording
      • IntelliTrace does not allow you to change what happens in your code since it's a recording. You can't change a variable for example
    • Settings
      • IntelliTrace is set in Tools/Options/Intellitrace.
      • Maximum amount of disk space for recording
      • Where are they stored? C:\ProgramData\Microsoft Visual Studio\10.0\TraceDebugging\
    • What do you need to get IntelliTrace on a PC?
      • Install visual studio
      • Install Test and Lab Manager
      • Install Test Agent

IntelliTrace Options Window
IntelliTrace Options Window

  • Test Impact Analysis (Choosing the right tests to run)
    • Automatically pinpoint which tests are impacted as a result of a code change, including manual tests, although I'm not sure how it works
    • TIA, as far as I can tell will only run with tests written in MS Test.
    • If it can work with Manual tests, I see some advantage with that, but not running all of your automated tests just seems bad. It seems like they may be fixing a symptom (slow running tests) instead of the problem (poorly written tests)
    • Working from the Nightly Build point of view
      • You can see impacted tests
      • You can drill thru the impacted tests to see what changes caused the tests to be impacted.
  • Multi-Tier Performance Analysis
    • Scenario: Client Side script in the browser, business logic, database calls
    • To start, goto Debug and click Start Profile Analysis
      • Select Profile Type
      • Select Project, Executable or Asp.net/java script application
      • Enable Tier Interaction Profiling
    • My Demo (I tried this out locally while watching the video)
      • Ran a Asp.Net MVC project
      • I run everything as a normal user, not an admin. However, you need to be an admin, but VS prompts your for credentials and it just works.
      • You start out in summary view, but there is a drop down at the top (Current View) that gives you access to stuff like Tier Interactions.
      • Tier Interactions showed my database calls, the sql executed and how long they took
      • It takes a little longer for it to get started, so there is a still a place in my book for using SQL query analyzer while developing, but for end to end debugging of slow pages, this is awesome.
    • Report Shows
      • Most expensive code paths
      • Lets you look at "all code" which will include the base class library and loaded modules
      • Jump between various report views by right clicking
      • Jump to code
  • Collaborative Debugging (Solve Complex Problems)
    • While debugging, pin the value of a variable to the editor window (right click while hovering)
    • You can add comments to those pinned values
    • You can export a break points and data tips as XML which you can then e-mail or what ever
    • After you import the break point and data tips, run the app in debug mode
      • Application will stop on the break point
      • The value and comments will be displayed as exported/imported
  • Debug a Crash in a Deployed Application using Dump Files
    • When application crashes, open up task manager, find the task, right click and chose create dump file.
    • No need to have anything installed to create the dump file
    • Open dump file in visual studio, and you can debug it.
      • Shows stuff about the computer it was running on
      • Modules Loaded
      • OS
    • Press ctrl+alt+q to get to QuickWatch, and type in $expression, and you'll get info on the exception that caused the crash.
    • My Test/Demo
      • Create new Widnows forms app with a button. When clicking the button throw new exception.
      • Close VS, and run compiled application. Click on the button. The unhandled exception dialog will appear. At this point, go into task manager, find the process, right click and choose create dump file.
      • Dump file was created in: C:\Users\USERNAME\AppData\Local\Temp\APPLCIATIONNAME.DMP
      • Quit the application and go find the dump file and double click on it, VS will launch.
      • You get the basic information, native debugging (machine code), but no managed debugging.
      • It looks like you have to download the symbols from Microsoft, and possible set a path for the debug symbols for your application, but I wasn’t able to get it to work when I tried it. I will re-post if I get it to work.
Wednesday, November 25, 2009 3:11:31 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
Conference Notes | Visual Studio

This post is part of my PDC09 Conference Notes series. These are my raw notes taken while watching the various session videos from PDC09. Refer to my original post for some conventions I tried to use.

FT60 - A Lap around Visual Studio and TFS 2010

  • Planning
    • Excel workbook for planning Iteration (for a specific Area?)
    • Calculates # of working days based on Start and End Date
    • Supports holidays and other non-working days by using the Interruptions sheet
    • Capacity Planning graphs
    • Looks like working in Excel is a much better (almost preferred) experience in 2010.
    • Reports (at least the capacity report) was updated right away, no waiting for warehouse to refresh.
  • Hierarchical Work Items
    • As the name implies, you can setup hierarchies with your work items (kick ass!)
    • Query support for hierarchical work items, allows you to define a query for the top level item, and a second query for the child work items (I have to think that this feature was added as a direct result of MS dog fooding TFS).
  • Develop in Parallel
    • Branch visualization
      • Branches now show up as a "special" folder in Source Control viewer
      • View Hierarchy (Right click on branch) allows you to view the branches and their relationships in a graphical view. You can add a description for the branch
      • Drag and Drop merges
    • Change tracing
      • Combine branch visualization with change sets, you can see which branches were affected by a given change set. Arrows show stuff like merge directions.
    • Actionable History
  • Continuous Integration
    • Gated Check-in
      • Verify code via a shelved check in set before something gets actually checked in.
      • Seems somewhat redundant with proper branches for development, but I guess it's another way to solve the problem. Although I think that you should be running most of the tests locally before even trying to check in.
    • Architecture Diagrams
      • Map actually code assemblies (projects) to a block diagram.
      • Blocks are for things like Web Layer, Business Layer, Data Layer etc.
      • You can setup dependencies between the blocks, like Web Layer depends on Business Layer.
      • You can verify that code does not break the dependencies you have outlined in the block diagram (i.e. don't have a business component that references the web component).
    • Visual Work Flow (WF) designer for builds looks a lot better then editing XML, but we all know that Microsoft rarely demos stuff that has been tested in the real world.
    • Build Reports are improved, more information with direct links to the information in TFS that you need to get more details. Hopefully less digging around the build output folder.
    • New SysTray app that notifies you about build events
  • Project Visibility and Health
    • Nice graphs in MOSS. Do they work in WSS?
      • Burndown
      • User Stories vs. Tasks
    • Graphs build on Web Parts so you can customize the page layout. Also change parameters passed to reports.
  • Manageability
    • TFS Basic Install
    • New Admin Console written WPF. Looks like MMC.
      • Ports, URL's, etc
      • One click change TFS account password
      • View logs
Wednesday, November 25, 2009 3:07:37 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
Conference Notes | Team Foundation Server | Visual Studio

This post is part of my PDC09 Conference Notes series. These are my raw notes taken while watching the various session videos from PDC09. Refer to my original post for some conventions I tried to use.

FT12 -WCF Data Services: What's new the RESTful data services framework (Pablo Castro)

  • Name changed from ADO.Net Data Services to WCF Data Services
  • REST
    • REST is not a Protocol, standard, or Format
    • REST is an architectural style
      • Decoupling
      • Scalability
      • Layering
    • Interesting way of defining REST. I always thought of it as some type of standard based on HTTP (verbs).
  • Resources
    • Represents the state of each of the entities your are modeling
    • These resources (state) are the only thing that is viewable from the outside. There is no behavior.
    • Each resource has an address. In this case, it's the URL
    • Uniform Interface: Removes ambiguity of calls by constrain a system to a know interface.
      • In REST, you have GET, PUT, DELETE and POST. You do not have ApproveOrder, VerifyCreditCard, etc.
  • Date Service is not a gateway to the database
    • There is almost always some type of business logic between the service and the data store
    • I think that this business logic is a subset of what you might find in a Line of Business app, with additional logic as required in order to properly expose via a service.
    • The business logic could be responsible for security, and performance considerations (i.e. don't allow something that will do a SELECT * FROM Table, where table has millions of rows).
  • Open Data Protocol (Astoria => Ado.Net DS => WCF Data services)
    • RESTful over http
    • Poke-able (just open a browser and type a URL and see what comes back)
    • HTTP: Transport, interaction model, control information in headers
    • AtomPub: Format, introduces things like collections and links.
    • Team added extensions to AtomPub as needed
    • Introduced a json serialization option, which is useful when consuming from javascript.
  • URL
    • The URL is independent of the format of the data returned (json, atom, etc). So you can pass the URL around and it will not impact the format. The format is defined in the GET request (accept: applicat/json).
    • Extra stuff goes in query string (?). Use & to append, just like normal query string.
    • (#): Query by primary key. /Categories(6)/Products would return all products for Category 6
    • Filter strings: ?#filter=Color eq 'Red'
    • Return first x rows: $top=#
    • Sorting: $orderby=ColumnName
    • Eger Load: $expand=ChildCollectionName
    • Only get certain columns: $select=Column1,Column2
  • Where used
    • .Net
    • Sharepoint 2010 (install/enable Astoria?, and then you can access all sharepoint data from /vti_bin/listdata.svc/ListName). There is full business logic running, so it will check for authentication, update everything as necessary when you update the actual data.
    • Reporting Services
    • Azure Table Storage
    • Codename "Dallas"
    • Microsoft Media Room
    • Open Government data initiative
    • 3rd Parties
      • IBM WebSpehere Extreme Scale
      • Db4o
      • Telerik Open Access
      • LinqPad
  • VS Support
    • Add Service Reference now supports consuming data from the Open Data Protocol (needs to expose meta data)
    • You'll get a data context type after adding the service reference
    • Do something like: MyDataContextType svc = new MyDataContextType(URL), and then you can drill down into svc to access the various collections of entities that are exposed. Has support for adding (method), and I'm assuming updating as well.
    • Full support for linq.
    • It would be interesting to view the SQL being generated behind the scenes using Query Analyzer
    • You can view the service as a diagram and get a schema diagram.
  • Excel 2010 with Power Pivot
    • Import a data feed using just the URL from WCF Data Services
    • And then you can just work with it in Excel
    • Works with the open data access for SharePoint as well.
  • Latest version of SSRS (must be SQL 2008 R2)
    • Every report has it's data exposed via this open data protocol.
    • Browse to the report, the new report viewer has a button that allows you to export as feed.
Wednesday, November 25, 2009 3:03:36 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
Conference Notes | Data Access | Sql

Last year, I watched a fair number of videos from PDC 2008, took notes, and planned on writing a series of well written blog posts. Who was I kidding, I don’t write well written posts, and I never looked at the notes after the fact.

This year, I’m again watching videos and taking notes, but this time, I’m going to post my raw notes. I do this for two reasons, like most posts on my blog, it serves as a reference for myself that I can query from anywhere. The second reason, is that maybe someone will find something of interest in my notes and can then go watch 1 or 2 session videos instead of wondering which ones they should watch.

I will try to stick to some conventions while note taking, so far I have:

  • When possible, write down the Session Code and Title
  • My comments based on opinion or random thoughts will be in italics
  • If I have time, I may look into certain things myself, like new features of Visual Studio. These will be under a bullet point of something like My Test, or My Demo

The first three posts I did, the notes were originally in OneNote, but the formatting didn’t come over as nicely as I had hoped. Subsequent posts I did entirely in Live Writer so the formatting was a little better.

Post Index:

Wednesday, November 25, 2009 3:02:12 AM (GMT Standard Time, UTC+00:00)  #    Comments [1] -
Conference Notes
# Tuesday, October 20, 2009

I have been using Xunit and Test Driven.Net for almost a year now. The Xunit unit testing framework is clean, concise and powerful. Test Drive.Net allows you to run most 3rd party unit testing frameworks from within Visual Studio.

I was a little worried that these tools would not work in VS2010 Beta 2 which I just installed, but thankfully they do work. However, you have to use keyboard short cut commands in VS2010 since command bar extensibility is not present.

Jamie, the author of TDD.Net has a post in which he explains how to setup the keyboard shortcuts. He also has a link to a .vsSettings file that will setup the shortcuts for you. All I can say is, outstanding work.

Tuesday, October 20, 2009 3:02:50 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] -
Programming
# Thursday, October 01, 2009

Welcome to my blog, a little place on the internet that I write about various Microsoft Technologies (Technology category and sub categories) and my quest to become an Ironman in 2010 (Fitness category).

This is my 3rd, and longest running attempt at blogging. My first blog, part of my DotNetNuke install ran from 2004 until 2005, in which I had maybe 10 posts. My second blog was internal to my employer, but I eventually moved all of the content to this, my 3rd blog, and have been posting pretty regularly since the end of 2006.

My ongoing inspiration for blogging, is Scott Hansleman’s blog, which I started reading sometime in 2004. While Scott’s blog is my inspiration, I have not gotten to the point of putting out the same level of quality that Scott does.

My blog has been a place to store interesting information online, for me to reference in the future by googling, binging my site. I find myself posting to Twitter allot of stuff that would have normally ended up on my blog as short posts, so hopefully I’ll be able to post higher quality content going forward. It’s definitely a work in progress though. If you look at my Conference Notes you’ll see a mix of raw notes and somewhat edited posts mixed together.

Tech

I am an 8 year veteran of .Net and related Microsoft Technologies and currently a Senior Software Engineer at Terso Solutions, a wholly owned subsidiary of Promega Corporation. I am responsible for just a little bit of everything at Terso, from participating on the Scrum team as a architect, developer, tester and business analyst, to helping out with the management of Terso’s backend infrastructure.

I am an active member with the Madison .Net Users Group, which meets on the first and 3rd Wednesday of each month at Herzing College on Madison’s east side. The first meeting is your typical one person presentation on a given topic. The second meeting is an open forum where anyone can come and talk to anyone who will listen. If you a a Microsoft Developer, or any type of technology professional, I encourage you to check us out.

I enjoy living on the cutting edge of technology, and am constantly looking for new technical solutions for business problems (maybe too much so). If you know where I can find my dream job, let me know ;)

image
Picture Source: Scott Hanselman’s Blue Badge Post

Non-Tech

I live in Oregon, just south of Madison with my my very lovely and understanding wife Jennifer, and our two feline friends Candy and CJ. My wife uses the same picture below on FaceBook, so I shouldn’t get into to much trouble posting it here.

IMG_3054 IMG_2588
My loving and supporting wife CJ on the left and Candy on the right

  

 

In 2010, I will be training to compete in Ironman Wisconsin (ImMoo) as part of the Endurance House becoming an Ironman team (paid training program). I started in Triathlon in 2009 with the goal of gaining experience for ImMoo.

I also play roller hockey when I have the chance, and played a little bit of recreational Ice Hockey while I was going to school. I’ve done paintball and airsoft in the past as well, and spent 7 years playing Laser Storm laser tag across the country.

Thursday, October 01, 2009 1:04:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0] -
General

Today I competed in the Peregrine Charities Olympic Distance Tri, the last race of my 2009 season. I hadn’t done any research into the race, such as previous years results or checking out the elevation, so I was pleasantly surprised last Friday when I finally got around to seeing that it’s a flat fast course. According to MapMyRide.com, there was around 200 feet of climbing, compared to around 500 feet of climbing at the Capital View Tri, my first race of the season.

The race was very well organized, and started out with an informational e-mail sent out on Wednesday. I really like getting a communication the week of the event, as it actually makes you think the race director is working. All bikes had to be checked out by a on-site mechanic the day before, and they also put the race number on. With many first timers coming into the sport of triathlon, I think this is a really good idea. We also got to check our bikes in the day before if we wanted to, and I took advantage of this.

Pre Race

Transition was open from 6:00am to 7:15am with a race start of 7:30. The transition area seemed a little cramped, and I feel they could have opened it up a little bit more. Another option would be to use assigned spots, as everyone was trying to fit into the spots closer to the transition exit, with more openings further away. Even though there were only about 115-120 people starting the swim (includes some relay teams), we had a wave start due to the narrow entry into the water at the boat launch. This was another chance for a small improvement. The elite men (about 10 athletes) and women (4 athletes) got their own waves, while I was in wave 3 with about 40 people. Combining the elite men and women, and shorting the time between waves from 4 to 2 minutes would allow more waves and less congestion at the start.

Swim

The swim was 1 mile, out and back. Thankfully they had a rope line all the way out so that you didn’t accidently drift into on-coming swimmers. It also made it easier to site by just checking your position to the rope line when you breathed. Of course it wasn’t a straight line, so you still had to do some straight ahead sighting. I had a goal of 24 minutes for 1500m, but the swim was 1600m, so my time of 25:50 was pretty close.

T1

This was the closest swim to bike transition, so my T1 time was going to be (hopefully) a lot less then my previous three (of course this benefit was not limited to me). I ended up with a 2:13 T1, which was still one of the slower times, but I was only about 1 minute slower then the average.

Bike

Starting out on the bike, I had to spend some time getting my gloves on. I decided to put my gloves on, after I got on the bike to save on T1. This was the first time I did this, and had put them on the end of the aero bars, which could have worked better. I think I’ll attach them a different way next time.

There was a stiff south/south west wind of 10-15 mph, which gave us a nice tail wind starting out (about miles 2-6). I averaged around 25mph, but in hind sight, I should have pushed it a little harder with that tail wind. After the long north/south portion, we had some east/west riding, which wasn’t too bad. Again, riding west, I could have pushed it a little harder. Coming back into park we were shielded from the wind. I ended up passing one rider, but backed off from passing a second as I felt it really wouldn’t help my time that much and I wanted to be fresh for the run. My bike time was 59:43, which met my goal of finishing under an hour.

T2

T2 was the same deal as T1, slower then most people, but not as bad as the past. I probably lost 45 seconds in T2, part of which was grabbing my amphipod belt for hydration.

Run

I started out around a 7 minute/mile pace, and was able to maintain that for most of the run. I ended up with a 6:50 min/mile pace and a run time of 40:59, which was just a touch off my 40 minute goal. The run course was almost completely flat, with just a few very gradual slopes.

Post Race Thoughts

My final time was 2:10:05, and I pretty much met my time goals, but came up short on my other goals. One of my major goals was to work on my transition times. Considering this is a goal, I’m ashamed to say I just haven't put in the time to practice these. I really should, I know I should, and hopefully next year I will. I think I will go watch some triathlon’s next year and see what other people are doing different. I have some good ideas, but seeing them executed by others will help reinforce them I think. 

My second major goal was to not leave anything on the course, give it my all and really put forth a race effort. The wind on the bike threw off what little aggressive pacing strategy I had. I also started to feel a little gassed around the 1/2 mile mark into the run which made me back off just a little bit. Looking back, I think I could have pushed it harder with the tail wind (riding north and west), and picked up my run pace a the 3 mile turn around point instead of between mile 4 and 5.

This was my last triathlon of the season, as I don’t want to bike in the cold, and I don’t think there are many in the area left. I will try to fit in some running races, such as the Berbee Derby 10K on Thanksgiving. I’m thinking about shooting for a 6:30min/mile pace for that race.

Final Results (Online Results)

 

Time

Overall Place

Overall Pct

Age Group Place

Age Group Pct

Swim 25:52 23 20.6% 5 29.3
T1 2:13        
Bike 59:43 24 15.5% 5 26.8
T2 1:20        
Run 40:59 28 26.6% 3 29.3
Total 2:10:05 24 20.8% 6 36.6
Thursday, October 01, 2009 12:04:59 AM (GMT Daylight Time, UTC+01:00)  #    Comments [1] -
Fitness
# Monday, September 28, 2009

While trying to adjust the memory of a VM from 512MB to 256MB, my VM entered an endless BSOD reboot cycle.

Background:

  • Upgraded install of VMServer 2.0.1
  • Brand new Windows Server 2008 64bit Guest OS (Server Core)
  • Started out with 512MB of ram for the guest. Installed OS, renamed computer, joined domain
  • Shut down the VM and adjusted the memory

Tried all safe mode options, and would always get a Stop code of 0xD1 for ACPI.Sys, DRIVER_IRQL_NOT_LESS_OR_EQUAL. Remember to press F8 to get to the windows boot options menu which allows you to disable automatic restart, which will let you examine the stop screen in detail.

I did quite a bit of searching but could not come up with anything for how to resolved this. I even stopped searching for VMWare Server specific stuff and just searched on the stop code. Finally I shut the VM down and changed the memory back to 256, and it finally worked.

So I went from 512MB to 256MB, failed, back to 512MB, failed, and then back to 256MB and it worked. The only thing I can think of was that the memory reconfiguration was not successful behind the scenes in VMWare.

I’m not all that comfortable moving forward without a definitive solution, but it will have to do for now.

Monday, September 28, 2009 4:04:07 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] -
Technology
Archive
<November 2009>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Copyright 2010
Adam Salvo
Sign In
Statistics
Total Posts: 251
This Year: 26
This Month: 0
This Week: 0
Comments: 34
Themes
Pick a theme:
All Content 2010, Adam Salvo
DasBlog theme 'Business' created by Christoph De Baene (delarou)