Friday, December 09, 2011

Building a Build Process, Part 1: Introduction

[This is the first article in a series of articles I'll be doing about building a Build Process for an application. You can refer here at any point for all of the published articles in the series.


Under Construction: The language in these posts may be a little terse at first, but I'll be fleshing it out over time -- be sure to check back!]


Articles in This Series

Why Undertake This (Plus: Look at my Presentation!)

I've seen too many instances in various jobs and projects where the build/integration process is not afforded due diligence (or any diligence, really).

I decided I needed to do something about it. Part experiment, part challenge, part reference guide. I'm going to see if I can put together an entire continuous integration / build process for .NET environments from scratch.

Below, you can find some slides from a presentation I gave at work (and yes, the design ideas are at times ripped directly from Zach Holman's article as I tried to emulate his style. He's awesome, and I'm shameless. Credit was given.) This talk highlighted the benefits of inte"great"ion and what I was about to undertake.

My Goal
In short, dear reader, my end desire is to have a completely integrated build process for .NET using (almost) free and/or open-source tools, and to share my process with you.

The build process so far will include the following:

  • Subversion repository on CentOS VM
  • An ASP.NET MVC Project Added to the Source control
  • Trac web site connected to Subversion repository on CentOS VM
  • Build Server VM (Windows Server 2008 R2)
  • CruiseControl.NET running on the Build Server
  • Building the Project with MSBuild via CCNet
  • Building a Release build via CCNet; if successful, publishes to AppHarber via a cloned git repository
  • NUnit Tests
  • NCover code coverage metrics
  • SpecFlow User Acceptance Test / Feature Test coverage
  • Selenium Server as a web driver to execute specflow tests
  • Selenium Grid executing tests on multiple OSes / platforms
  • Adding FxCop to the mix to check my coding standards
  • Adding StyleCop to the mix to make sure the code is consistently written.
  • Utilizing Nuget packages and Octopus to transform releases for different environments.
Hoo-boy, Here We Go
It's a lofty goal -- especially for someone who's not a pro developer -- but I'm excited for everything I'm about to learn during this process.

Onward and Upward!

Feedback Welcome!

I'd love to hear any comments on this series. Find it useful? Think there's a better way to implement the technique or something I should have mentioned? Please drop a line in the comments to help me improve the series!

Thursday, December 08, 2011

Tip: Does your workplace block Google Chat? Use Google+ to talk to people in your circles

[Ed. Note: For the record, I discovered this by accident, and don't particularly intend to use it unless absolutely necessary.]

While circumventing your workplace's chat policy is never necessarily a wise thing, if your office place blocks Google Chat, you can (partially) circumvent this to allow Google Chat with folks in your Google+ circles.

To do so:

  • Sign into Google+.
  • On the home tab, you should see a notification about being able to chat with your circles.
  • Click OK, and your contacts will appear on the home screen with standard gchat-like indicators.
Some things of note so far:
  • Your friends' job titles take the place of chat statuses within Google+ chat.

Tuesday, December 06, 2011

Tip: When presenting, ALWAYS have backup formats [Field Notes]

A brief anecdote:

I prepared a presentation yesterday to present today to colleagues on subjects such as Continuous Integration, Unit / Spec Testing, Source management, etc.

I created the presentation in MS PowerPoint 2010, and saved it with some embedded fonts in .pptx format. It runs great. I open it on my work PC this morning, and it runs great. I save it to a thumb drive, and it opens fine.

We get into the conference room late, I log onto the PC that's there, I open the presentation..
...and PowerPoint crashes.

I try copying it from the USB Drive to the Desktop, I open it ...and PowerPoint crashes again.

Luckily, I saved a version in .ppt format so that it would be backwards compatible with PowerPoint 2000-2003. I open that ...and PowerPoint crashes again.

Luckily, I also uploaded the presentation to SlideShare. I attempt to open that ...and the computer has trouble connecting to the internet.


Luckily, I had also exported the presentation to a PDF file. I open that in Adobe Acrobat Reader, put it in full-screen mode, and gave the presentation.


I hope that illustrates the point well enough without further explanation.

Sunday, December 04, 2011

Fix: Notepad++ Tabs From Your Last Session

Just found myself doing this again on the new setup; figured it might be worth posting.

Issue
When opening Notepad++ after previously closing it, the application loads all the old files you were working on last time.

Resolution
This is by design, and may be useful for some users. If it's not your thing, and you want to remove it:
  • Click Settings --> Preferences
  • Click the MISC. tab
  • Uncheck the box labeled "Remember current session for next launch"

How To: Add Mail Checker plus back to Chrome [Tips]

One of my favorite Chrome extensions -- Mail checker plus -- is in beta and the author decided not to make it publicly available anymore (likely due to supporting users, etc.)

At any rate, found this helpful thread which helps explain how to get the extension back into Chrome, which is useful knowledge in general, so I'm sharing:



  1. Go to: https://github.com/AndersSahlin/MailCheckerPlus/downloads
  2. Click on either the "Download as zip" or "Download as tar.gz" button (most people will probably click on the zip option).
  3. Unzip the file that you downloaded in step 2.
  4. In Chrome, click on the Wrench menu, select Tools, and click on Extensions.
  5. Place a check mark next to "Developer mode."
  6. Click on the "Load unpacked extension" button at the top.
  7. Navigate to where you unzipped the extension and click OK.