May I borrow $25#

A man came home from work late, tired and irritated, to find his 5-year old son waiting for him at the door.

SON: “Daddy, may I ask you a question?”

DAD: “Yeah sure, what it is?' replied the man.

SON: “Daddy, how much do you make an hour?”

DAD: “That's none of your business. Why do you ask such a thing?” the man said angrily.

SON: “I just want to know. Please tell me, how much do you make an hour?'

DAD: “If you must know, I make $50 an hour.'

SON: “Oh,” the little boy replied, with his head down.

SON: “Daddy, may I please borrow $25?”

The father was furious, “If the only reason you asked that is so you can borrow some money to buy a silly toy or some other nonsense, then you march yourself straight to your room and go to bed. Think about why you are being so selfish. I don't work hard everyday for such childish frivolities.”

The little boy quietly went to his room and shut the door.

The man sat down and started to get even angrier about the little boy's questions. How dare he ask such questions only to get some money? After about an hour or so, the man had calmed down , and started to think: Maybe there was something he really needed to buy with that $25.00 and he really didn't ask for money very often The man went to the door of the little boy's room and opened the door.

“Are you asleep, son?” He asked.

“No daddy, I'm awake,” replied the boy.

“I've been thinking, maybe I was too hard on you earlier” said the man. “It's been a long day and I took out my aggravation on you. Here's the $25 you asked for.”

The little boy sat straight up, smiling. “Oh, thank you daddy!” he yelled. Then, reaching under his pillow he pulled out some crumpled up bills.

The man saw that the boy already had money, started to get angry again.

The little boy slowly counted out his money, and then looked up at his father.

“Why do you want more money if you already have some?” the father grumbled.

“Because I didn't have enough, but now I do,” the little boy replied.

“Daddy, I have $50 now. Can I buy an hour of your time? Please come home early tomorrow. I would like to have dinner with you.”

The father was crushed. He put his arms around his little son, and he begged for his forgiveness.

It's just a short reminder to all of you working so hard in life. We should not let time slip through our fingers without having spent some time with those who really matter to us, those close to our hearts. Do remember to share that $50 worth of your time with someone you love.

Saturday, May 23, 2009 7:49:56 AM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Blogging again????#

You know sometimes it’s just sad how fast time can go by.  Looking back it’s been well over a year maybe two since I last blogged.  WOW, that’s not cool.  So what the hell happened, well LIFE I guess.  Let’s see:

question-mark1a.jpg

  • I had my second child ( girl, Addison ).  We are blessed to have one of each and both healthy. 
  • I got to meet Bill Gates, Steve Ballmer and all of the rest of the Microsoft executives
  • Bought a Honda ( needed a 4 door with 2 kids )
  • This fiscal year I will have billed over 2300 hours which doesn’t account for my other job.  Can you say Year of the Death March!!!
  • Ran into Sieg from the Deadliest Catch at SeaTac
  • Learned how to make the perfect Margarita!

Regardless a lot has happened and it’s time to talk technology again.  I love it and really miss doing it. With all of the great stuff here upon us now, it’s time to start sharing. I was reading MSDN Magazine the other day when I ran across an article about MSBuild and best practices which really got me thinking.  There were two items that really stuck out for me:

  1. Compilation of large source trees.  I think it’s a must read but caution readers that “large” can mean many different things. 
  2. Reference Management

While both were explained pretty well, lets put #2 into practice.  *I’M LAZY* ( in a good way of course ). I would much rather write something once rather than screw with it time and time again, especially the stuff you have to do like build work. 

So lets talk assembly references….

Assembly references can be easy as you want it to be but sometimes a little prep work will go a long way. The .NET compilers and runtime both have a specific order in which they look for references.  If you look in your framework folder for Microsoft.Common.Targets you will find the following:

The SearchPaths property is set to find assemblies in the following order:  legos

  1. Files from current project - indicated by {CandidateAssemblyFiles}
  2. $(ReferencePath) - the reference path property, which comes from the .USER file.
  3. The hintpath from the referenced item itself, indicated by {HintPathFromItem}. 
  4. The directory of MSBuild's "target" runtime from GetFrameworkPath.  The "target" runtime folder is the folder of the runtime that MSBuild is a part of.
  5. Registered assembly folders, indicated by {Registry:*,*,*}
  6. Legacy registered assembly folders, indicated by {AssemblyFolders}
  7. Look in the application's output folder (like bin\debug)
  8. Resolve to the GAC.
  9. Treat the reference's Include as if it were a real file name.

So what if your not one of those nine?!?!?

Since it’s all just angle brackets we can extend the “out of the box” search paths.  As it was explained in the article you can override the property AssemblySearchPaths.  Aaron had a great post on MSBuild Property Evaluation, it’s something you should read.  Overriding a property is as simple as importing your own target file into the stack and then resetting the property ( for most cases ).  You could also just add a the same property further down the stack in the same file.  Both are essentially the same. With MSBuild the *stack is always important*.  If you were to import your target file or override a property to early you might change the way the entire build system works.  There are a number of properties that work like:

This is a very common practice throughout MSBuild implementations.  As you can tell it’s just a way or protecting yourself from a change in behavior upstream. Remember MSBuild parses top down to you have no influence what might be done afterwards.  In our case what we want to do is import our targets file after the Microsoft.Common.Targets file in the csproj or vbproj file(s).

*NEW*

By doing so AssemblySearchPaths will be “” and initialize itself as expected.  So if we want to add to it it’s as simple as ( snip from MyTargets.Targets ):

....
   

     
          $(AssemblySearchPaths);
          C:\binaries\;
     

   
....

  1. Define a Property Group
  2. Define the Property ( AssemblySearchPaths )
  3. Set it to itself and add to itself

Important point, Reference Paths are folders not files.  So now if you compile from the cmd line or from VS you will have your paths in the stack. The easiest way to see what is going in is to simply run msbuild.exe /t:rebuild /v:diag on your sln file.  That will dump everything that took place during the execution from MSBuild. Even the order of folders it searched for.  You will actually be able to see the reference pats listed that it couldn't find.

But we are not done yet.  We have a hardcoded path and remember, I’m lazy. How about we bootstrap ourselves into the build process and read the file system building the search paths based on a “root” folder you specify?  Then any machine should work without any change.



    
        $(SolutionDir)..\MyBinaries\**\*.*
    

    
   
    
      
    
    
    

  
      
        $(AssemblySearchPaths);
        @(binariesFound->'%(RootDir)%(Directory)');        
      
    
  

Important points:

  1. InitialTargets was set. This gives us the ability to run *first*.  Why? Well we want to read the file system and build the list of folders.
  2. We create an item during the execution of the target rather than statically.
  3. We later transform that target just adding the folder rather than the whole file path.

Team Build has a similar concept but much easier.  At the bottom of any tfsbuild.proj fiile there is a commented collection called AdditionalReferencePath. It works the same it’s just that the Team Build process does it all for you already.

Friday, May 22, 2009 8:56:03 AM (Central Daylight Time, UTC-05:00) #    Comments [0]  | 

 

Microsoft Acquires devBiz, Makers of TeamPlain Web Access#
Monday, March 26, 2007 10:19:35 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Announcing the Chicago VSTS Users Group#

 

 

Join us for the maiden voyage of the Chicago Visual Studio Team System User group!

Microsoft Visual Studio 2005 Team System is the best integrated software development platform to build the mission-critical applications that businesses depend on. It extends Visual Studio's integrated and productive experience from the developer to the entire development team by delivering powerful new role-based tools for software architects, developers, testers and project managers. It also includes an integrated team server and customizable processes to help teams drive predictability, visibility, and control into their software development process.  Join us each month for new topics including how the different role based editions can help your team to finish your projects on time, on scope and on budget, dive into the many features included in the powerful and robust Team Foundation Server product, or speak to one of the many partners who have extended the platform to enable continuous integration scenarios, integrate into Microsoft outlook, even an Eclipse plug-in! 

Agenda for April 11th meeting:

  • 6:00pm - 6:30pm Welcome, Introductions and Pizza
  • 6:30pm - 8:30pm What is Visual Studio Team System?
  • 8:30pm - 9:00pm Q&A, Raffle and Wrap Up

Click here to register

You may also access the registration site at: www.microsoft.com/events and reference Event ID 1032333482

Wednesday, March 14, 2007 6:35:41 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Virtual PC 2007 Released#

You can read more about Virtual PC 2007, and download it, from the newly updated Virtual PC website.

Some key features of Virtual PC 2007 include:

  • Support for x64 Windows as a host operating system
  • Support for hardware virtualization support
  • Support for Windows Vista as a guest and host operating system 
  • Support for PXE network booting of virtual machines
  • Support for the use of full screen virtual machines on multi-monitor systems

A long time ago Andrew Connell put together a great article HOWTO: Use Virtual PC's Differencing Disks to your Advantage. If you do anything with Virtual PC make sure you read this. Not only does it save you a great amount of disk space but it will save you a great deal of time when setting up new virtual images.

Wednesday, February 21, 2007 9:22:23 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Team Foundation Power Tools v1.2 Released#

Team Foundation Server is happy to announce the release of version 1.2 of Team Foundation Power Tools (formerly known as Power Toys).  In this release we've added 2 new command line tools for the developer and 3 non-command line tools.   This version includes some bug fixes to previous Power Tools, support for Vista, and adds the following new functionality:

  • Workspace Command (tfpt.exe) - Use the workspace command for additional workspace operations not supported in the currently shipping Team Foundation Server command line (tf.exe).
  • Treeclean Command (tfpt.exe) - Use the treeclean command to see and optionally delete files in the current directory and all subdirectories that are not under version control.
  • Process Template Editor - A tool to provide UI for authoring work item types and some of the associated Process Template components. 
  • Check-in Policy Pack - A set of handy check-in policies to address needs customers have expressed.
  • Build Test Tools Task - A tool that allows running unit tests by simply specifying the DLLs or even specifying a file name pattern in TfsBuild.proj, instead of using .vsmdi files to specify tests to run.

Please note that the Process Template Editor has some additional pre-requisites, they are identified on the download page. 

You can locate the Team Foundation Power Tools V1.2 release here and you can get help on the forums for these tools here.

Wednesday, February 21, 2007 9:02:02 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

VSTS Case Studies#

From time to time I am asked where one can get their hands on case studies around VSTS. You can find all VSTS case studies here: http://msdn2.microsoft.com/en-us/teamsystem/aa718812.aspx. Today we just released two new case studies focused around ROI.

Tuesday, February 13, 2007 5:53:07 PM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

VSTS Books#
5 things you didn’t know about me.#

Jeff Beehler and Buck Hodges both decided to tag me and I hear tag backs are not allowed. So it's time to kick off this new year of blogging with a few items you may have never guessed.

  1. I have a 10 month old son, Ethan. It's amazing just how fast your life can change.
  2. I love Motorsports. While there is number of different leagues, I most enjoy watching NASCAR. A few friends and I try to attend one race a year and so far I have been to Michigan, Charlotte, Atlanta, Memphis and Indy.
  3. Given I love Motorsports you could imagine I also love cars. So much so I am actually doing my own body off restoration on a 1970 Camaro. Yes it's turned into a slow moving project but it's still a great time when I get to turn some wrenches and lay a few welds.
  4. I didn't aspire to be a programmer when I went to college. In fact I really didn't aspire to do anything much with computers but I loved the internet. My father was a geek since the dawn of time so I had always grew up around them. At that point in time I would have just rather worked on cars. Once I got into college that quickly changed and I graduated with an IT degree. My first job out of college was actually working on the ole Y2K bug.
  5. I am an Eagle Scout.

I am sure these guys don't read my blog but I read theirs. In the spirit of this now you've been tagged too: Kevin Hammond, Richard Turner, Paul Andrew, Keith Brown

Wednesday, January 24, 2007 9:02:00 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

Connected World#

As a consultant you find yourself all over the place.  Today I am headed to downtown Chicago via the good ole train.  It's roughly a 1:30 minute ride one way.  I normally travel with at least the following:

  • Large cup of Dunkin Donuts ( you know America runs on it )
  • 1 Verizon phone with EVDO
  • 1 Vista machine, 2 batteries
  • 1 set of headphones

Here is where things get very geeky:

I am currently using the phone as a modem.  Blogging, email, IM, banging code all while listening to URGE ( BTW URGE just rocks ).  All at 50 mph!  If that wasn't enough, the code I am working on is hosted on a remote TFS server I am currently checking things in and out of.  CRAZY, I just love it!!

So what does my current bandwidth look like?

Download Speed: 1118 kbps (139.8 KB/sec transfer rate)
Upload Speed: 119 kbps (14.9 KB/sec transfer rate)

It's pretty crazy how connected we really are today.

Friday, November 17, 2006 7:55:38 AM (Central Standard Time, UTC-06:00) #    Comments [0]  | 

 

All content © 2010, Clark Sell
On this page
This site
Calendar
<May 2009>
SunMonTueWedThuFriSat
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
Archives
Sitemap
Blogroll OPML
Disclaimer

Powered by: newtelligence dasBlog 2.3.9074.18820

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

Send mail to the author(s) E-mail

Theme design by Jelle Druyts


Pick a theme: