Saturday, March 14, 2009

Rumor: SharePoint Designer 2007, soon to be free? (or given the April 1st date…)

Fear and Loathing - SharePoint Designer, Free as in Beer

“I caught a couple of blog posts from here and here that had to make me do a double take. I’m not one for relaying gossip, but this information seems to be legit. As of April 1, 2009 SharePoint Designer will be free. Now if you go to the “official” site there’s no mention of it however I’m hearing through the grapevine it’s true. The official site even has a “buy it today” option, so you might want to hold off on that

…”

SADev.co.za - Get SharePoint Designer For Free

“…

Microsoft will offer SharePoint Designer 2007 free of charge, as a download, starting April 1, 2009. This change is being made in order to help customers get the most value out of their investments in SharePoint products and technologies.  Microsoft will remove SharePoint Designer 2007 from the April 2009 Volume Licensing price list.

Customers with active SA as of April 1, 2009 will be able to upgrade to Expression Web.  SharePoint Designer is not “end-of-life.” The next version of SharePoint Designer will ship together with the next release of SharePoint.

…”

Personally I think this makes a great deal of sense, as this just increases the value of SharePoint, making it easier for everyone to customize, integrate into their business, and thereby become tightly coupled. And really how many copies of SharePoint Designer were sold compared to SharePoint CAL’s and the likelihood of that ratio to change? Bundling SharePoint Designer as just another part of SharePoint would be a cool move…

Given the date though I have to wonder at the validity of this. Businesses should know by now to not do anything “real” on April 1st. 3/31 or 4/2 is fine, but on 4/1, everything is suspect…

In any case, if/when I hear more I’ll pass it on.

Book Review: “Software Testing with Visual Studio Team System 2008” from PACKT Publishing

Software Testing with Visual Studio Team System 2008

“A comprehensive and concise guide to testing your software applications with Visual Studio Team System 2008

  • Test your software applications with Visual Studio Team System 2008 and rest assured of its quality
  • Create a structured testing environment for your applications to produce reliable products
  • Comprehensive yet concise guide with a lot of examples and clear explanations
  • No knowledge of software testing is required, only basic knowledge of Visual Studio 2008 operation is expected

…”

PACKT Publishing was recently kind of enough to send me a review copy of their “Software Testing with Visual Studio Team System 2008” book. Over the last few days I’ve been spending some quality time with the book and I have to say I’m better for it.

This book provides a nice overview, level 100+, guide to the testing capabilities found in the Visual Studio 2008. From unit testing through the features of the Test Edition, you’re provided a good working level introduction and usage overview.

Software Testing with Visual Studio Team System 2008 - Table of Contents

Preface
Chapter 1: Visual Studio Team System 2008 Test Types
Chapter 2: Unit Testing
Chapter 3: Web Testing
Chapter 4: Advanced Web Testing
Chapter 5: Load Testing
Chapter 6: Manual, Generic, and Ordered Tests
Chapter 7: Managing and Configuring the Test
Chapter 8: Deploying and Running Tests
Chapter 9: Command Line
Chapter 10: Working with Test Results
Chapter 11: Reporting

…”

I’m not going to go into details into the book’s content, as I find those kinds of reviews a little hard to read. I am instead going to tell you what I personally gained from the book and what I learned…

First of all the book was a little unusual in that the images, screenshots, etc are not titled, i.e. there was no “Figure #…” on the images. I found that a little disconcerting. It didn’t detract from the content and I can see how the logical flow of the text and images might of made them superfluous, yet until I got used to it, it was a little distracting. It’s weird how something so very little and usually taken for granted can, where missing, can have such an effect. Again through, this was a very minor thing and something I quickly got used to.

So what did I walk away with?

Well I’ve been using some of the testing features in Visual Studio for a while now, yet like many of us, I’ve learned about those features “just in time.” When I’ve needed to use a given capability, I’ve played with it, searched for a minute or two, beat on it and then got it to do pretty much what I needed. And then stopped there. That’s the just nature of our space these days. Too much to learn and do to become experts on much of anything. We need to find out how to use something quickly, get it going in our environment and then move on to the next challenge.

That’s one of the things I liked about this book. It was a quick read, yet detailed enough to get me using some features and capabilities that I didn’t know I needed until I read the book. It helped me flesh out and discover a number of things I didn’t know I didn’t know.

“Enough of generalities, Greg! What were some of the things you learned! Fess up!”

Ordered Tests
I had ignored Ordered Tests until I read about them here. I’m not sure how I feel about Ordered Test, as I do not like the idea of tests having to run in a specific order (as that’s very anti-unit test’ie), bug living in the real world I can see where this could help me today.

Asserts
I hadn’t realized the number of “Asserts” available. I mean wow. There are like a billion Assert.AreEqual overloads. Then there’s the StringAssert which I don’t think I knew about. And also the CollectionAssert...

Of course I’ve been using Assert.’s for a while, but I didn’t know the scope of possible ones I could be using (i.e. falling into a “Just in time learning” trap). Seeing all the different unit testing assert options opened my eyes and really got my mental gears turning…

Web Testing Includes Web Service Testing
It never really dawned on me that I could use the Web Testing to test Web Services. Makes sense in hind sight, but hind sight is always 20-20 isn’t it? I don’t do much “web” so every time I saw “Web Testing” I saw “ASP.Net web site/page testing” and so blew it off. Well now my blinders have been removed and I’ll be adding some in the very near future.

Data Driven Unit Testing
I do allot of data driven testing in my unit tests, but the initial learning curve was a little steep. This book makes it look easy (which it is ONCE you know the tricks).

Load Testing
Another blinder point for me was that I always associated VSTS “Load Testing” with Web Testing. I didn’t know that you could ALSO use Load Testing with “normal” unit tests.

TFS Report Writing
As I’ve blogged about in the past, writing a report against TFS can be pain. Again, it’s a learning curve thing. Well while this book doesn’t go into depth on this subject it does cover it and provides a nice leg up on getting started. It also provides a short view on using Excel as the report tool (i.e. hooking Excel up to the TFS OLAP cube/Data Warehouse)

 

Final Word

I would recommend this book for those who have heard of the testing capabilities of Visual Studio 2008, yet haven’t been able to squeeze in the time to take the plunge. I would also recommend this book to “functional/hands on Dev Managers” who need to get up to speed on Visual Studio testing. If you are already knee deep in VS Test/testing and are looking for deep, highly detailed, level 300-400 content, then this book is likely not for you (but it might be good to give to your new/associate Dev’s).

Would I have bought this book? Yes. And I can see myself returning to it, using it as a reference in the near future as well…

 

Related Past Post XRef:
Free “Visual Studio 2008 Test Types” Chapter from “Software Testing in Visual Studio Team System 2008” from Packt Publishing‏

Friday, March 13, 2009

Speaking of Electronically Stored Information (ESI) - “The Know-IT-All's Guide to eDiscovery” free (reg-ware) eBook

ENT News Online - Free Book: The Know-IT-All's Guide to eDiscovery

“These days IT folks need to have a pretty good grasp of eDiscovery requirements -- you may be directed by your legal team to find specific files containing specific words sent from or to specific people on a specific date.

Can you do that now?

Get this fun-to-read book chock full of what you need to know to successfully plan for eDiscovery in your company -- written directly for the IT audience. Your meetings with legal will never be the same.

…”

image

Table of Contents:

Introduction:
Which know-IT-all are you?........................................................................... 5

Chapter One:
Sorry, no – eDiscovery is not online speed dating........................................ 7

Chapter Two:
It’s all geek to me (Reviewing the new FRCP amendments)........................ 10

Chapter Three:
“I have to stop all ESI deletions when?”
(When or what is considered notice of possible litigation?)........................ 16

Chapter Four:
Searching for ESI is like looking through the
office fridge: There’s more in there than you’d expect................................. 20

Chapter Five:
A CEO, a marketing manager, and an email admin walk
into a bar… (eDiscovery involves many departments, not just IT).............. 23

Chapter Six:
A litigation hold is like being hungover at work –
you just can’t focus on anything else........................................................... 27

Chapter Seven:
Spoliation is not what happens to last week’s Chinese food........................ 31

Chapter Eight:
Safe Harbor is the truest form of CYA: Understanding FRCP Rule 37(e)...... 34

Chapter Nine:
Proactive planning for eDiscovery ensures you won’t miss
the Stargate SG1 weekend marathon.......................................................... 37

Chapter Ten:
Form ID-10T Summary................................................................................ 47

Even if I were not in the EDD/ESI biz, I might of blogged about this eBook… Some of the chapter titles just kill me! LOL

This eBook is a fast and pretty fun introduction to ESI/EDD for the IT professional. You’ve heard it from me before, if you’re in IT you need to be aware of ESI/EDD. If you haven’t heard of it, you will soon enough and by then it may be a crisis/drop everything/all hands on deck kind of thing (cough… Chapter Six… cough).

Take a bit, get this eBook and spend a few quality minutes curled up with it… Come on ANY book with Stargate SG1 and ID-10T chapter references can’t be all that bad! ;)

(via complexd - Free Book: The Know-IT-All's Guide to eDiscovery)

 

Related Past Post XRef:
A pocket guide I hope you never need, but probably will… The E-Discovery Pocket Guide from the California Bar
Learning About Electronic Data Discovery? RenewData has a free book for ya...
The Pocket Guide to Electronic Discovery for Judges
An Electronic Data Discovery Bible Gets Updated - "The Sedona Principles, Second Edition" (June 2007) Released
A Couple EDD Articles...
EDD Reading List
Litigation Support Technical Standards, Free eBook

Remember the “If you don’t want to see it on the front page of the Times, with YOUR name on it…” rule applies to ALL public communication channels (i.e. Watch what you Tweet)

I was reminded today that the, “If you don’t want to see your message on the front page of the Times, with YOUR name on it, then don’t write it” rule applies to social networks too. While I’ll not get into the details, to protect the innocent and all that, I did want to use my minor mishap to hopefully help you and keep others from falling into the same thing.

Here are just some thoughts, considerations, guidelines and hopefully common sense rules of thumb that come to mind and that I’m sure you all already know (but reminders from time to time never hurt)…

a) If you wouldn’t blog it, then you shouldn’t post it on any type of social network either.

Yeah, I know seems kind of obvious in hindsight, But social networks are like a “circle of friends” so you may find yourself saying/writing things that you wouldn’t in an email or blog post… Don’t do it.

b) If you don’t have hard evidence and it’s not “official” then think twice about writing it

Again, obvious isn’t it? Yet social networks make it SO easy to very quickly blat out a quick note about something you just heard or were told. Remember, think before you send…

c) They ARE watching you.

Even if your co-workers are not on a given social network, that doesn’t mean someone in your company isn’t watching.

d) Remember that many of social networks are interconnected, so what you post one place will show up on others.

A single tweet can show up in how many places? Twitter, Frendfeed, Google, Facebook, RSS reader, Re-twitted, etc, etc, etc…

e) If you get “called on the carpet” and are not morally or ethically kept from doing so, accept it, move on and learn from it.

If you screwed up, then man up. Accept it, learn from it and move on. Don’t get huffy, don’t fight and don’t react in anger. Don’t make it worse. UNLESS if you truly feel morally or ethically bound to do otherwise of course…

f) 140 characters can get you into as much trouble as an email or blog post can

‘nuff said

g) It is almost impossible to destroy electronic data, doubly so once it leaves your machine.

I’ve said this again and again, but even I kind of blew this off when tweeting. Electronically Stored Information (ESI) is ESI no matter the channel, means or method and ESI is almost impossible to completely destroy.

 

Again these common sense points I know, but as we meld into our social network more and more we have to remember they apply just as much there as everywhere.

Thursday, March 12, 2009

Data, data, everywhere free data… At least in the Guardian’s Data Store – Tons of data, all free and all delivered via Google Spreadsheets (get your mashup engines started)

guardian.co.ukData Store

“What is this page?

Data from the Guardian

We have compiled our top sets of publicly-available data for you to use free. Explore the links below, visualise and mash them together. Then, let us know what you've done.

image

And more US data from the Obama’s America page;

image

For example, here’s some US unemployment data;

image

Data Store - How to get data out of the Data Store

“…

The aim of the Data Store is to make important data more accessible to people. With that in mind, we are publishing the facts and figures using tools that anyone can use for whatever needs they have.

You'll find a link within each data page to a spreadsheet where you can see the data. We've chosen Google Spreadsheets to host these data sets as the service offers some nice features for people who want to take the data and use it elsewhere.

A key reason for choosing Google Spreadsheets to publish our data is not just the user-friendly sharing functionality but also the programmatic access it offers directly into the data. There is an API that will enable developers to build applications using the data, too.

We explained how this works before when we published the America 2009 series in January to test out the concept. You can find detailed information about the Google Spreadsheets Data API on Google Code.

We'll be looking at other methods for making data we publish useful both for people and for machines, but we'd love to get some insights from you, as well. Tell us how we can make data more useful.

…”

Data… Man, I love data! So much the better when it’s free and accessible via an API…

(via Chris Webb’s BI Blog - Guardian Data Store - free data, and some ideas on how to play with it)

PolyMon Controls – Free, cool and source available WinForm controls (plus a little about PloyMonRT and PolyMon)

CodePlex - PolyMon Controls

“PolyMon Controls is a project that provides various Windows Forms .NET controls as described below.

1/18/2009 New Release: This new release adds:

    • A radial gauge. This gauge is highly configurable and can be used for full circle or partial circle gauges.
    • A numeric LED display (8-segment). Segment widths, colors, etc are all customizable.

Please note that these controls are targeted for .NET 3.5 and source code is for Visual Studio 2008.

image

…”

Even as I try to move toward WPF I still find cool, free WinForm controls well… cool! I can almost always find a use for a free Gauge or LED control.  ;)

 

On a related note, you might also be interested in the PolyMon and PolyMonRT projects.

PolyMon was also just mentioned in the latest The Thirsty Developer, The Thirsty Developer 54: Powershell, in that it can use, and display results from, PowerShell scripts.

CodePlex - PolyMon

“…

Welcome

PolyMon is an open source system monitoring solution that can be used to generate email alerts and analyze historical trends of monitor counters and monitor statuses. It is based on the .NET 2.0 framework and SQL Server 2005.
It is simple to use and run but flexible enough for many circumstances.
It is made up of three primary components:
  • A SQL Server database to store monitor statuses, alerts and general settings.
  • A windows service (PolyMon Executive) that runs monitors on a periodic basis, logs results to the database and sends out email notifications.
  • A management/monitoring front-end (PolyMon Manager) that is used to manage general settings, monitor definitions, operators, alert rules, etc. and analyze historical trends (both monitor counters and statuses).

Current monitor plug-ins:
  • CPU Monitor
  • Disk Monitor
  • File (Age and Counts)
  • Windows Performance Counters Monitor (built-in Performance Counter browser)
  • Ping
  • PowerShell Scripting
  • SQL Monitor (Can run any stored procedure that returns resultsets in a specific format)
  • SNMP Monitor
  • TCP Port Monitor
  • URL (HTML) Monitor
  • URL (XML) Monitor
  • Windows Service Monitor
  • WMI Monitor (built-in WMI browser and query builder)

…”

Dashboard-TileView

CodePlexPolyMonRT

Dashboard_Medium

PolyMonRT is a real-time monitoring system that allows users to create custom dashboards.
PolyMonRT does not persist monitoring data to a database and therefore does not require a back-end database to function.

Features:

  • Easily customizable dashboards (drag and drop)
  • Color coded threshold values
  • Polling Intervals fully customizable at individual monitor level
  • Fully customizable polling retention time periods at individual monitor level with Min/Max/Avg counters
  • Ability to run monitors under a different user than currently logged in user
  • Save dashboard definitions to plain text xml files
  • Current monitors include:
    • PerfMon
    • Ping
    • PowerShell (custom PowerShell scripts)
    • SQL (custom Stored Procedures)
  • Monitors can be displayed in a variety of formats:
    • Trace Chart
    • Dial Gauge
    • Linear Gauge (LED style)
    • Cylinder Gauge
    • Status Light

…”

(via SharePoint Thinks, Links and Clinks - Hey Mr. PolyMon, Poly me Bananas (a.k.a. you like to watch))

Wednesday, March 11, 2009

Free ASP.Net MVC 1.0 eBook - (Well the first 195 pages of the book, which is an end-to-end ASP.NET MVC tutorial…)

ScottGu's Blog - Free ASP.NET MVC eBook Tutorial

“There has been a lot of excitement in the community about the new ASP.NET MVC framework that is about to ship (literally any day now – announcement coming soon).  As with anything new, people are also asking for more tutorials/samples/documentation that cover how to get started and build applications with it.

Over the last few months I’ve been helping to contribute to an ASP.NET MVC book that Scott Hanselman, Rob Conery, and Phil Haack have been writing for Wrox.  The book is now in production, and will be available to buy in stores soon (you can pre-order it on Amazon today).

I wrote the first chapter of the book – which is a 185 page end-to-end tutorial that walks-through building a small, but complete, ASP.NET MVC application from scratch.  The agreement I made with Wrox was that I’d write it for free in return for them also making it available as a free PDF download.

I’m excited to announce that you can now download this free end-to-end tutorial chapter (it is a 14mb PDF file). It’s licensed under a “Creative Commons Attribution No Derivatives” license – which means you can share, distribute, print, or hand it out to anyone.

Download Links

…”

 image

While I usually don’t link to partial eBooks, this one close enough…  ;)

BTW, you can preorder the complete on Amazon now…

(via Rob Conery - Nerddinner and a Free Book!)

CodeBox – A WPF chroma keying and simple formatting textbox

CodeProjectCodeBox

“A fast WPF textbox control with support for text coloring, highlighting, underlines, and strikethroughs.

CodeBox

This article presents an enhanced text box control that is designed to facilitate text coloring, highlighting, underlining, and striking. As it is derived from the TextBox control, rather than the RichTextBox, it is quite speedy.

Background

I was in the process of upgrading a Regular Expression generating tool of mine. For the nth time, I was considering moving it from WinForms to WPF. My problem was the painful slowness of the RichTextBox control. I had tried numerous times to somehow get performance that compared to the WinForms RichTextBox, but failed. This time, I tried something different. For the heck of it, I overrode the OnRender method, and wrote a little text to the TextBox. I was surprised to find that both the textbox’s text and my additional text were visible, as I expected only my overridden text to appear. It took a few moments to progress from Oh that’s odd to Wow, my problem is solved, as I could now do the following.

  • Recreate the same text as was in the textbox, but colorized and otherwise decorated
  • Since both sets of text are visible, I can make sure that they line up exactly
  • The original text's brush can be set to something transparent so it will not cover up the decorated text
  • Selecting and editing will be handled by the underling text box functionality

I figured that this couldn’t possibly be slower than the RichTextBox, so I gave it a try. It exceeded my expectations, so here it is.

Using the Code

This control can be used like a regular textbox with the following caveats. The background and foreground brushes should both be set to something transparent. This is done in the constructor so all one needs to do is not set them. In order to set the default text color, use the BaseForeground property. In order to set the background color, just wrap it in a border. Hopefully, I will be able to remove this nonstandard behavior soon. Text coloring rules are set through the Decorations property.

…”

I’ve been thinking about including chroma keying/text coloring in some of my apps (including color code SQL ;) so I keyed in on this…

How do you “close” a TFS Iteration? You can’t, but you can hack it to fake it… (and as a bonus, how to keep the root Iteration from being selected)

Teams WIT Tools - Work Item rules workaround: Closing down an iteration

“… Let’s take a look at another question: “How do I close an iteration so that no one can log new items against it?

image_6

For this example, let’s say we have completed Iteration 0 and don’t want users to log work items against this iteration. We also don’t want to allow work items against the root iteration path.

Since there is no direct way to enforce rules against iteration path, here’s how we can work around it:

  1. Create an IterationPathValidation field
  2. Create a tab on the work item form called “Validation Errors”, like the previous example on area path validation, and display the IterationPathValidation field
  3. Find the IDs for the restricted iteration paths
  4. Add the following rules to the IterationPathValidation field:

…”

Of the two suggestions here, how to keep a specific iteration from being selected and keeping the root from being selected, the second seems to be the most viable (and one I’m going to use right away).

The “closing” of an Iteration is very cool, but SO manual that I don’t see how viable it really is. I wonder if it could be tweaked to be a little more dynamic? Could a Closed iteration branch be created, old/closed iterations moved there and then the fact that the IterationPath contains \Closed\ be used in the validation? Will have to think about that, because I would really like to be able to “close” old iterations/Sprints but not have to tweak the validation every 30’ish days…

Tuesday, March 10, 2009

SQL Data Services, now a “real” SQL Server in the cloud – Change the connection string to point to SDS and “have it just work”

SQL Data Services Team Blog - The no spin details on the new SDS features

“Today we announced the details of our plans to accelerate the delivery of core relational database features as part of SDS. There has been quite a bit of buzz about SDS over the past couple weeks and it is great to be able to share the details more broadly.

…We are providing an experience where a developer can take an existing application and just change the connection string to point it to the cloud and have it just work.

How will we do it? Three letters TDS. TDS stands for Tabular Data Stream and it's the published protocol that clients use to communicate with SQL Server. From its inception, SDS has always been built on the SQL Server technology foundation and it just made sense to allow our users to access their data via TDS. Most importantly for developers, this means symmetric SQL Server functionality and behavior combined with compatibility with the existing tools you are familiar with.

Tables?...Check

Stored Procedures?...Check

Triggers?...Check

Views?...Check

Indexes?...Check

Visual Studio Compatibility?...Check

ADO.Net Compatibility?...Check

ODBC Compatibility?...Check

To be clear, the above is not a complete list of supported features. However, given the feature set we are planning to support in SDS v1, a majority of database applications will “just work”, allowing developers to target on and off-premises deployments with essentially the same code base.

What about the ACE (Authority, Container, Entity) data model and developer experience? Since Windows Azure storage has a similar data model (property bag) and developer experience, we will stop supporting the current ACE Model sometime in the future. Does this mean you can't access your relational data via internet friendly protocols like REST? Not at all. You can still access your relational data (located on premises or in the cloud) via HTTP/REST using the ADO.Net Data Services framework. The compatibility with existing tools and technologies is a really important point to drive home and a super important value add that Microsoft provides.

…”

Nice… I was kind of hoping that ACE might take off, but then again there was really no way I was going to be able to do anything in that space for forever. A total data layer rewrite is killer (not that I have to tell you guys that ;) and just not something I was looking forward too .

So in bowing to the real world (i.e. listening and acting on the tons of feedback they received) Microsoft is going to give us something we can really use out the gate. Lets hope though that we get the best of both worlds, the uber scalability of the ACE model with the familiarity of the traditional. If nothing else, this dramatically lowers the bar of entry into the SDS world.

PsTFS – PowerShell and TFS, better than peanut butter and chocolate? (Okay, maybe not, but it’s close… ;)

CodePlexPsTFS

“PsTFS is a set of PowerShell commands to manage and use Team Foundation Server. PowerShell effectiveness is combined with the power of TFS API to maximize TFS capabilities.

These CMDLETS provide support for :

  • Visualizing project(s) members
  • Adding a list of members to a group of projects
  • Listing projects
  • Viewing work items
  • Executing work items queries
  • Adding one or more file to a project
  • Adding folder recursively
  • Performing merges
  • And many more to come...

CmdLet list

CmdLetDescription
Add-BranchCreates a branch
Add-FilesAdds files
Add-MemberProjectAdds members to a project group
Add-ProjectCreates a new project on the server
Add-LabelCreates a label
Add-WI (NEW)Create a Workitem for a given type and project name
Get-AllProjectsRetrieves information about every project
Get-ChangesetRetrieves changesets from one or more projects
Get-ChangesetByWI (NEW)Retrieve all changesets for a given workitem
Get-Diff (NEW)See the difference between two server folders
Get-Files (NEW)Retrieve files from a server folder
Get-LogTFS (NEW)Save events in an object collection (Adding/Removing file, Check-in...)
Get-ProjectMembersRetrieves members of a project
Get-PendingStatusGet the pending changes
Get-TFSConnects to a Team Foundation Server
Get-WIGets a specific version of a work item by its id or URL
Get-WIQueriesRetrieves all work item queries from a project
Get-WIsRuns a work item query
Remove-Files (NEW)PERMANENTLY delete one file or more
Remove-ProjectMembersRemoves members from a project
Set-MergePerforms merge between branches

…”

PsTFS - PsTFS V0.2

“Released: Mar 8 2009

Updated: Mar 9 2009 by pc152

Dev status: Beta

Downloads & Files

Sample - CreateProject – EN
documentation, 3K…

Exemple - CreateProject – FR
documentation, 4K…

PsTFS V0.2
application, 129K…

PsTFS V0.2 (Source)
source code, 9205K…

…”

The merging of these two, PowerShell and TFS, seems like a no-brainer in hind sight doesn’t it?

How cool would it be to have a PS Provider/Namespace for TFS? DIR’ing and CD’ing into the different areas of a TFS server would be pretty interesting wouldn’t it? Hum…

[Starwars Humor] I want a pet AT-AT…

Gizmodo - Pet AT-AT (Probably) Won't Poop on Your Carpet

petatat

This made me laugh so I thought I’d share… ;)

Make sure you click through to the NickIsConfused’s Flickr album, AT-ATs: not just for xmas

image 

It’s official… I’m booth bound for TechEd US 2009

“Dear Microsoft Expert:

Congratulations!  You have been selected to participate in Tech·Ed North America 2009 as a Microsoft Expert in the Development Practices Track Area of the Technical Learning Center (TLC). 

…”

So it’s official, I’ll be working a Microsoft booth at TechEd… How cool is that!

I’ll post my schedule, etc, once I get that all worked out in the coming weeks. Huge thanks to Brian Keller of This Week on Channel 9 for recommending and vouching for me.

See you there!

Join Me at Tech·Ed Connect 2009!

Monday, March 09, 2009

“Effective PowerShell: The Free eBook” – Keith Hill’s Effective PowerShell blog posts as a living and growing (and free) eBook

Keith Hill's Blog - Effective PowerShell: The Free eBook

“I’ve gotten some requests to turn my Effective PowerShell blog posts into booklet form which I have done.  I expect that this document will grow over time as I add new items.  If you have feedback (typos, suggestions, etc) please drop me a line.

…” [GD: Click through for the download link]

image

 

Table of Contents
Introduction ...............................................................................................................................................................1
Item 1: Four Cmdlets that are the Keys to Discovery within PowerShell ..................................................................1
Key #1: Get-Command ..........................................................................................................................................1
Key #2: Get-Help ...................................................................................................................................................2
Key #3: Get-Member ............................................................................................................................................5
Key #4: Get-PSDrive ..............................................................................................................................................6
PowerShell 2.0 Update ..........................................................................................................................................7
Item 2: Understanding Output .................................................................................................................................8
Output is Always a .NET Object ..............................................................................................................................8
Function Output Consists of Everything That Isn't Captured .................................................................................9
Other Types of Output That Can't Be Captured .................................................................................................. 11
Item 3: Know What Objects Are Flowing Down the Pipeline ................................................................................. 12
Item 4: Output Cardinality - Scalars, Collections and Empty Sets - Oh My! ........................................................... 15
Working with Scalars .......................................................................................................................................... 15
Working with Collections ................................................................................................................................... 16
Working with Empty Sets ................................................................................................................................... 17
Item 5: Use the Objects, Luke. Use the Objects! ................................................................................................... 19
Item 6: Know Your Output Formatters ................................................................................................................... 22
Item 7: Understanding PowerShell Parsing Modes ................................................................................................ 31
Item 8: Understanding ByPropertyName Pipeline Bound Parameters .................................................................. 35
Item 9: Understanding ByValue Pipeline Bound Parameters ................................................................................. 38
Item 10: Regular Expressions - One of the Power Tools in PowerShell ................................................................. 42
PowerShell 2.0 Update ....................................................................................................................................... 43
Item 11: Comparing Arrays .................................................................................................................................... 43
Item 12: Use Set-PSDebug -Strict In Your Scripts - Religiously ............................................................................... 45
PowerShell 2.0 Update ....................................................................................................................................... 47
Item 13: Commenting Out Lines in a Script File ..................................................................................................... 47
PowerShell 2.0 Update ....................................................................................................................................... 48

Ah… Nothing starts the week off like a free eBook, especially when it’s on a cool topic like PowerShell.

(via Alvin Ashcraft’s Morning Dew - Dew Drop – March 9, 2009 –> Windows PowerShell Blog - Free PowerShell EBook)

Sunday, March 08, 2009

Command Line Parsing in .Net 4.0? – Um… Whoops!

InfoQ - .NET 4 Will Not Have a Command Line Parser

“…

We are not shipping System.Shell.CommandLine in .NET 4. This was based on an intern project from a couple of years back that was mistakenly public in the .NET Framework 4.0 CTP. It wasn't a design that we were happy with and has been removed and will not be present in the next preview release.

We have a *much better* command line parsing API, along the lines of Mono.Options, that we're planning to release on CodePlex later this year.

…”

This made me laugh (as one developer to another, as one who has made mistakes and am laughing with, not at, the team)… Doh!

You can almost hear the chatter from Microsoft, “Hey what’s this Command Line API in 4 that Miguel is jumping up and down about?”

“What command line API? There’s no Command line API in 4”

“Um… Yeah, there is… Right here…”

“Oh Crap! That’s So and So’s project, what the heck is THAT doing there?”

“You mean it’s not supposed to be there?”

“NO!”

“Oh”

 

Related Past Post XRef:
Command Line Parsing – A wheel we can finally stop reinventing with .Net 4.0

Saturday, March 07, 2009

NGEN is Love, if you’re running your .Net applications via Citrix or Terminal Services

Mebyon Kernow - Developing .NET applications for deployment on Terminal Services or Citrix

“If you develop .NET client applications that are deployed to users over Terminal Services (TS) or Citrix then this is the post for you. Why? – well, there’s a bit of an issue that not a lot of people know about, and it can really ruin your day. First off some preamble about how we got here and why it’s an issue. I’ll then present a solution.

When a process runs on Windows it typically has some executable code and some data. To vastly simplify this let’s just say that the memory space taken up by my application includes different pages, some code - some data. There may well be other types of stuff in memory but that’s not important to this discussion at the moment. My application runs, loads up code into the pages allocated for code, and loads up data into the pages allocated for data. We’ll call these ‘Private’ memory pages.

Enter stage left: NGEN

You may never have found a use for NGEN (the Native Image Generator), and indeed you might not even know such a beast exists – so for those of you who don’t know, what NGEN does is pre-compile all of the IL into x86/x64 assembly language and stores the compiled image on disk to be used when needed.

The critical thing to understand about NGEN is that whilst it compiles your code, it also marks the code pages as shareable, so that multiple instances of your application can share parts of the memory space used by the first instance. And that’s really useful if you’re running under Terminal Services.

If you compare the first row from the shareable WS column you’ll see that the NGEN assembly has roughly 9Mb more shareable RAM than the original image. I know, 9Mb isn’t a huge amount, but it is a sizeable chunk if you run several users off the same box, and this was from one (admittedly large) .NET assembly. My app was about 3.5 Mb on disk – an application I’ve been working on from one of my customers is just over 40Mb as it includes a bunch of controls from 3rd parties and a whole host of other code.

Assuming I could get the same sort of benefit by running NGEN over my customers application then I might save 100Mb (!) per running instance. It doesn’t take a lot of users to make that significant – the 11th user would bring us to a saving of around 1Gb. Now we’re talking.

To Conclude

Hopefully this post has provided you with enough information to go out and grab some memory back on your TS/Citrix boxes. There’s another upside to running NGEN on your code – it’ll start up faster! This is because with a regular .NET application we have to JIT the code as we call it. With NGEN this has already been done, which generally means you get snappier application startup.

The ideas presented here are really only necessary when running your application under Terminal Services or Citrix. For regular client applications that’s unnecessary, but when running under TS/Citrix I’d say it’s not important, it’s imperative.

…”

If you’re using Citrix/TS as your deployment mechanism then you need to read the post in its entirety.

While my team doesn’t deploy via Citrix/TS there are a number of teams in our Practice that does, so I wanted to call out this post in the hope that it helps them and our clients…

Friday, March 06, 2009

Blacklight v3 RTW’s – Connected Controls (LiveSearchListBox, SyndicationFeedListBox and DeepZoomViewer), Shared Silverlight and WPF controls and more…

Martin Grayson: Adventures of a 'Devigner' - blacklight v3.0 (Mar09) released!

“After a ‘short delay’, V3.0 of the Blacklight controls are here! Thank very much for you patience with this release.

The showcase will be updated very shortly for you to see all of the controls in action!

Get the latest release here!

As always, here are the highlights for this release…

BRAND NEW ‘BLACKLIGHT CONNECTED’ CONTROLS

We have focused on providing controls that allow designers to start adding rich data and content to their application, without the need for code. This release sees 3 such controls: LiveSearchListBox, SyndicationFeedListBox and DeepZoomViewer!

OTHER NEW BITS

Animated Expander

FINALLY…

The project has had a BIG structural overhaul, and some namespace changes. This could result in some breaking changes in you application. Please use the codeplex discussion boards for further assistance.

The overhaul has been necessary to allow WPF and Silverlight to share controls, meaning plenty more controls for WPF too. The list below shows what is available for WPF now..

…”

backlight showcase

image

image

image

image

image

As I begin my WPF journey, these kind of controls and help is critical to my brain cell saving tactics (mostly due to my “Graphically Challenged” nature  ;)

It’s been a bit since I visited the Showcase and boy it’s grown up recently. I liked how the Showcase page discusses how you/we can use these controls in Blend and Visual Studio.

(via User Experience: The Art of the Possible - Blacklight V3.0 available now!)

 

Related Past Post XRef:
Blacklight 1.0 RTM’s - WPF/SilverLight “Controls for Designers”
Blacklight – The Silverlight UX code sharing project (aka “Mass hysteria, Developers and Designers living (in the UX) together…”)

PortableApps.com Platform v1.5 Released (with v2 coming in a few weeks) – Your App world is just a thumbdrive away…

PortableApps.com - PortableApps.com Platform 1.5 Released

“PortableApps.com is proud to announce the 1.5 release of the PortableApps.com Platform, making it easier than ever to carry your favorite software with you. This new update makes the most popular portable software platform even better than before with lots of new features and a slick new look. Browse the web, check your email, chat online, listen to music, keep your passwords secure, work on documents, check your datebook and even play a few games... all on the go. And, as always, it's all open source and completely free.

The PortableApps.com Platform 1.5 is available for immediate download from PortableApps.com.

platform_small

New In PortableApps.com Platform 1.5

The PortableApps.com Platform 1.5 release adds lots of new features including:

New Theme - The PortableApps.com Menu has a greatly improved display engine and a slick new theme to go along with it. It's PNG based allowing transparent hovers on buttons and other great looking extras. And the next release of the platform in 2 weeks will let you theme it yourself.

App Icon Renaming - Now you can rename all your apps so they appear just as you like.

App Icon Hiding - You can easily hide icons right from the menu. This is especially useful when you add apps that aren't in PortableApps.com Format (Did you know the PortableApps.com Platform works with all portable apps?).

Better Multilingual Support - The Platform now supports 37 languages and has a 55 langauge installer making it easy for everyone to install and use.

App Language Switching - When you switch languages in the menu and then launch one of our apps like Pidgin, GIMP, Notepad++, VLC and others, the app will automatically come up in the language the menu is set to. This way, you don't have to hunt around in an app to figure out how to change its language.

Improved Wallpaper Swapper - The built in wallpaper swapper now supports widescreen and standard wallpapers and will automatically use the best one for the PC you're on.

Run As (Admin) - You can now run individual applications as an admin or other user directly within the menu.

Hide Desktop Icons - You can optionally have the platform hide the PC's desktop icons while it's running, giving you a cleaner desktop.

Transparency - The menu supports a new transparency setting to give it a glassy effect and see the desktop below it.

App Details on Hover - When you hover over an app's icon, you can see all the details of the app. Now you don't have to start it up to remember what version you have installed.

And more...

Another Release Coming Soon!!

Best of all, another release of the PortableApps.com Platform is coming within the next couple weeks. We did this interim release to get some new features and functionality in the hands of users and so that OpenOffice.org could give away the latest and the greatest at CeBIT in Germany this week. The 2.0 release will have all the features of 1.5 plus new theming options and other advanced features. Look for the first beta test to hit the forums within a few days.

…”

The PortableApp Suite is one of my favorite thumbdrive additions. I’ve found it one of those “must have” items when you’re called on to “help” friends, family and neighbors (“Hey, you’re a computer guy, right? Well my computer…”  ;)

 

Related Past Post XRef:
Your Application Suite To Go - Portable App Suite v1.1 Released
PortableApps Suite

Thursday, March 05, 2009

Team Building your MSI – How to build a Setup Project via Team Build

David Williams - Building a Setup/Install project using Team Build/TFS

“Team Build is great for building Projects applications such as Windows or Web apps.  However it is not able to build Install packages.  Because of this you have to use the Visual Studio build command line option, and copy the .msi and setup.exe files out of the local build directory.  My builds usually copy the built files from to a stage or production server, However this is difficult to do, as no TB/MSbuild variables correctly reference the local build location.  To build a visual studio setup project, I did the following:

  1. Enable building in the Solution configuration manager.  Select the configuration manger, checked build next to the Install project name. 
  2. Open the ApplicationSetup.proj file in a text editor. Searching for ProjectOutput, SourcePath, I confirmed the path was relative to the project file (..\\obj\\Release\\HelloWorld.exe) rather then literal (C:\HelloWorld\obj\\Release\\HelloWorld.exe).
  3. Modified the Build project, adding the build target type
  4. …”

Some tips and snips for building your Setup Project/MSI via Team Build.

Remember friends don’t let friend use “F5” (or right click/build) as a long term deployment mechanism… ;)

Shaking, rattling and rolling - Quickly getting the scoop on what and where that future quake was with the new “earthquake” search from Google and the USGS

The Official Google Blog - Shaking up earthquake searches

“Silicon Valley is well known as the home of technology companies like Google, but it's also one of many regions around the world with frequent earthquake activity. When we in the Bay Area feel an earthquake, we want to know how strong it was and where it occurred, as soon as possible. After all, even a small vibration could be the result of a severe earthquake far away. Traditionally, we've had to wait for answers as reporters scrambled to investigate and spread the news. But thanks to the US Geological Survey (USGS), we can get earthquake data straight from the source.

Now, when you search for "earthquakes" on Google, you'll get information on some of the most recent, significant earthquakes from around the world, right on the search results page. From there, you can click through to the USGS Earthquake Center for more information, or visit the epicenter of any quake on Google Maps. To find earthquakes closer to home, you can add a location to your query, for example: "earthquakes California.

…"

image

image

Nice!

Every time there’s an earthquake I end up hunting around for the information, links to the USGS, etc. With this new Google search feature I can now VERY easily get the information I need quickly. Saving this on my phone now…

Let’s hope we don’t really need this though in the near future… :|

Molding code to your will with Sculpture – The .NET open source Model-Driven Development Code Generation Framework

CodePlexSculpture - Model Your Life

“What is Sculpture?

  • Sculpture is a .NET open source Model-Driven Development code generation framework ideal for creating and managing .NET Enterprise Applications.
  • With Sculpture you can model your application components, and then transform this model to deployable components with your favorite technology.
  • Sculpture comes with a host of ready-made Molds (The word “Molds” comes from Molding) like (DAAB, NHibernate, LINQ, CSLA, WCF, ASMX, Windows forms, WPF, Silverlight, ASP.NET, & ASP.NET MVC).
  • Sculpture provides starter kit wizard enables choosing among available technologies to start your project with all layers in no time.
  • Sculpture doesn't force you to adhere to a specific architecture, it contains a guidance package for building your own Mold or customizes existing ones. If you have a custom architecture, using this guidance package you can build a custom code generator with your favorite technology.
  • Sculpture can generate any kind of text output using templates (source code, database scripts, web pages, XML, configuration files, etc.).
  • Sculpture takes you to the next level of abstraction by separating the problem from the implementation technology.
  • Sculpture takes you to the domain specific programming by adding your specifications to the model environment and the generated code.

img_1

Sculpture is divided into:

  • Sculpture Core Engine: it is a platform that hosts the molds, takes care of making all the Molds work together. It includes the model designer, mold discovery and loader, generic validation engine, generic code generation engine, command holder, and editor controls holder.
  • Mold: The primary plug-in of the Sculpture framework, with molds you can extend all the power of Sculpture to manage the model and the produced code as your needs, molds provide the ability to process model elements.

Ready-made Molds:

  • For Data Source Layer:
    • SQL Server.
  • For Data Access Layer:
    • DAAB (Data Access Application Block).
    • NHibernate.
    • LINQ to SQL.
    • CSLA framework.
  • For Service Layer:
    • Service Library.
    • ASMX (ASP.NET Web Service).
    • WCF (Windows Communication Foundation).
  • For User Interface Layer:
    • Windows Forms.
    • WPF (Windows Presentation Foundation)
    • Silverlight.
    • ASP.NET.
    • ASP.NET MVC.

 

img_2

Why Sculpture?

  • Sculpture does not come to the world to become another CRUD code generation tool, but the essence of it is allowing the developers to model all of the application components and rapidly get it on real application.
  • Sculpture gives you permanent preview to your application, the model can be easily updated in any application life cycle phase and see the reflections of these changes immediately.
  • The model gives you the control of tenuous details in your application, plus that you can extend it to meet your needs.
  • The pluggable environment of Sculpture enables Hugh amount of customizations. (For more information see Customize Sculpture screencast).
  • SQL Server Mold has reverse engineering engine that parses the database and translates it to model, so you can start your project from the database, additionally any updates in the database schema can reflect on the model easily without losing any metadata.
  • Unlike many other code generation engines Sculpture generates as possible simple and readable code, no complex structures, organized, tested, follows Microsoft best practice, and easy to understand and tweak code, plus giving you the pleasure when you try to write your custom code side by side the generated one. (For more information see Introduction to Sculpture screencast).
  • Sculpture provides ready-to-use Molds for common enterprise architectures (DAAB, NHibernate, LINQ, CSLA, WCF, ASMX, Windows forms, WPF, Silverlight, ASP.NET, & ASP.NET MVC).

…”

Sculpture - Model Your Life - Sculpture 1.0 Final

“…

Sculpture 1.0 Final Binary Installer (Include Molds)
application, 9644K, uploaded Mon

Sculpture Source Code
application, 3307K, uploaded Mon

Molds Source Code
application, 1093K, uploaded Mon

Release Notes
Welcome to the Sculpture 1.0 Final !

Sculpture 1.0 Final is the first production release of Sculpture.
It is quite similar to the beta 2.

Pre-requisites: You will need the following development environment to install and use Sculpture:

Warning: You MUST uninstall any previous versions of Sculpture before installing this version.

…”

I’m a huge sucker for code generators and “things” that propose to make my coding life easier, helping me from reinventing the wheel and handling the “goo” code.

(via Arquitetura de Soluções - Sculpture 1.0 Final : uma ferramenta de automação sobre o GAT/GAX.)

Freeware .Net library for email address validation and related “Stuff” – DF_MailStuff

Visual Studio Gallery - DF_MailStuff

“DF_MailStuff is a freeware .NET component useful in any circumstances you need to validate/check mail address input by the user.

Do you collect Internet mail addresses or accept addresses typed into a web form? If so, you already know the problems bad mail addresses can cause. Effective validation requires an in-depth knowledge and the correct implementation of the Internet standards relating to mail addresses and delivery protocols. When you need robust validation with ease of use, our library delivers advanced capabilities through its object oriented interface. With just 2 lines of code, you can check the syntax, domain, and user name of any mail address.

The library is ready for immediate use, has no external dependencies, and can be incorporated in to your new or existing scripts in minutes. Using the library you can:

Specify the validation level to perform on any query
Perform full syntax and several rules checking of any address based on current Internet standards.
Quickly identify invalid top level domains, private, and unreachable domains.
Determine if the specified mail address is from a well known free email domain.
Issue real time DNS queries to ensure the domain exists and retrieve the MX records pointing to its mail servers.
Issue real time SMTP requests to contact the domain's mail servers and see if they will accept mail to the address.
Issue real time WhoIs requests
Uses complex heuristic algorithms for catching invalid email addresses.

Bonus: extract mails addresses inside a test you pass to the library.

…” [Description Leach Level: 95%]

No doc’s or samples that I could quickly find (except for a few in the inline XML), but the the description above, and the price, was enough to catch my eye. Doing a RegEx on an email address to validate it is one thing, the provided level of validation is something completely else…

image

Wednesday, March 04, 2009

Data Dude Day – After spending some quality time with VSTS Database Professional Edition yesterday I have to say, it’s that time, it’s Data Dude Time.

Yesterday I had the chance to go to a local Microsoft hosted VSTS Database Professional workshop (Visual Studio Team System for Database Professionals Workshop) and I have to say, I believe it’s time. With the latest GDR release (I think of it as a “v2.5” release of Data Dude) the product is at a point where I think it’s time I start “really” using it.

As you can see below I’ve been following Data Dude, aka Database Edition, aka Team Edition for Database Professionals, for a while now. But I’ve never gotten to the point where I could take the plunge. There were just too many things in the way, both in product maturity, development workflow and learning curve.

After today I believe I’ve seen that the product maturity issue is solved and the rest of the problems are all in my head (well dugh!  ;)

The workshop walked us through using Data Dude via in a simple real world workflow (as much as you can in 6 hours, with the first 2 1/2 being an into to TFS/ work items, etc). How to create the database project, fill it, check it in and most importantly how manage the life cycle of the database. How to build the initial script, how to build a diff script for future releases, how to leverage source control to manage the life cycle of the database, how to unit test it, etc.

I walked away with a feeling that I am now beginning to grok it. The thing is that we all manage our SQL scripts today. We all have our different ways to building our update/diff scripts, for building our DB create scripts, for version controlling these scripts/objects/etc, right? And everyone’s is different. I see Data Dude leveling the playing field a little and setting a common baseline for this so very common work. Why are we reinventing this stilly wheel? I’m done and it’s time for change.

This week or next I’m going to have to create a DB project (actually two) load it up and see if I can roll with this this Sprint (which started last week). Worse case I can at least begin playing with it, do a dry run this Sprint and plan on moving to it next.

 

My biggest gripe with Data Dude? Diagrams, or lack there of. When I design and work with database tables, I like to see them diagrammed. I like to see their relationships. This is critical for me. And the fact that Data Dude doesn’t have that capability will hamper my usage of it. Sure I can use Management Studio, Visio, ERWin, etc, but I WANT to stay in Visual Studio. Any time I have to switch out of VS means a context switch and those cost. And it’s not like VS doesn’t have diagrams for many other things, right? Give me table/relationship diagrams (again think Visio or Management Studio, etc) and I will be a very happy camper…

I also need to R&D into if I can use the schema compare in Team Build. I want a nightly diff/upgrade script, comparing the “Prod” DB project with the “Dev” branch and generating the update script, that I can use for our database unit/integration testing. While I can do that manually, I want it automated and part of a CI and nightly build. I love R&D… :)

 

Related Past Post XRef:
Data Dude Updated for SQL Server 2008 – VSTS 2008 Database Edition GDR RTW’s (Think “VSTS 2008 Data Dude SP1++”)
Real World Data Dude - 17 minute video of using VS2008 Database Edition in the Real World
Team Build with Data Dude
Visual Studio Team System 2008 Database Edition Power Tools Released (Think VS2008 + Bunch o' New Features)
Data Dude (aka "Visual Studio Team Edition for Database Professionals") and TeamBuild
Visual Studio Team Edition for Database Professionals [aka Data Dude] Samples CodePlex Project
VSTE4DBPro (Data Dude) for VS2005 Team Suite Users
"VSTE4DBP" aka "VS For DB Pro's" aka "Data Dude" aka "Visual Studio Team Edition for Database Professionals - DVD (English)" now on MSDN Downloads...
"Data Dude" - Visual Studio Team Edition for Database Professionals RTM's 11/30
Tips for Installing the VSTE 4 DBPro CTP
Visual Studio Team Edition for Database Professionals CTP Released
Visual Studio 2005 Team Edition for Database Professionals