Exploring the wonderful world of technology and software development   RSS 2.0
 Friday, February 15, 2008

Gert has just announced the release of the VS 2008 Database edition Power Tools:

The “DataDude” team is happy to announce the availability of the Power Tools for Visual Studio Team System 2008 Database Edition.

The Power Tools for 2008 contains all the functionality we shipped in 2005 plus:

  • Command line SQL Static Code Analysis execution through MSBuild, this was the biggest customer request, which is why I was holding the release. This enables SQL Static Code Analysis to be an integrated part of Team Build!
  • Data Generation Wizard; this is another customer request where we allow users to create a new data generation plan by pointing at an existing database, the plan will be fully configured by the wizard to pull all data from the database using the Sequential Databound Generator. This way users can use an existing data set and only override columns which impose risks because of for example privacy concerns and save about half a day or more of configuring a data generation plan from scratch, one column at the time.
  • File based data generator; this allows you to insert the content of files in to the database (works for string and binary, not for XML yet).
  • XML based data generator; this allows you to generate XML based on an XSD (the XSD has to be provided as file right now, and cannot be selected from database or inherited from the data type).
  • Unique Regular Expression generator; this adds the ability to generator unique values using the RegEx String generator.
  • Refactoring Command Generator has been made available as a MSBuild task for better project build integration so it can be made part of the pre-build and pre-deployment stages in the project. This allows users to automated the results of refactoring to some degree in to the project.

We added two new test conditions for Database Unit Tests

  • ChecksumCondition – Which you can use to verify that the checksum of the data set returned by a database unit test matches the checksum of an expected data set.
  • ExpectedSchemaTestCondition – Which you use to verify that the column names and data types of the returned data set match expected values.

Download page:
http://www.microsoft.com/downloads/details.aspx?FamilyID=73ba5038-8e37-4c8e-812b-db14ede2c354&displaylang=en

Installer download:
http://download.microsoft.com/download/f/b/8/fb8d1c0d-c0c4-4004-ab86-12396b2a3ee3/VSTSDB2008PT.msi

Documentation download:
http://download.microsoft.com/download/f/b/8/fb8d1c0d-c0c4-4004-ab86-12396b2a3ee3/Power Tools 2008.doc

Go download and have fun! :)

Posted: Friday, February 15, 2008 9:27:22 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


 Monday, February 11, 2008

CONGRATULATIONS TO ALL THE KIDS WHO WERE BORN IN THE 1940's, 50's, 60's and 70's !!

image First, we survived being born to mothers who smoked and/or drank while they
carried us.

They took aspirin, ate blue cheese dressing, tuna from a tin, and didn't get tested for diabetes.

Then after that trauma, our baby cots were covered with bright coloured lead-based paints. We had no childproof lids on medicine bottles, doors or cabinets and when we rode our bikes, we had no helmets, not to mention, the risks we took hitchhiking .

As children, we would ride in cars with no seat belts or air bags. Riding in the back of a van - loose - was always great fun.

We drank water from the garden hosepipe and NOT from a bottle.

We shared one soft drink with four friends, from one bottle and NO ONE actually died from this.

We ate cakes, white bread and real butter and drank pop with sugar in it, but we weren't overweight because ...

WE WERE ALWAYS OUTSIDE PLAYING!!

We would leave home in the morning and play all day, as long as we were back when the streetlights came on.

No one was able to reach us all day. And we were O.K.

We would spend hours building our go-carts out of scraps and then ride down the hill, only to find out we forgot the brakes. After running into the bushes a few times, we learned to solve the problem.

We did not have Playstations, Nintendo's, X-boxes, no video games at all, no 99 channels on cable, no video tape movies, no surround sound, no cell phones, no text messaging, no personal computers, no Internet or Internet chat rooms ...

WE HAD FRIENDS and we went outside and found them!

We fell out of trees, got cut, broke bones and teeth and there were no lawsuits from
these accidents.

We played with worms and mud pies made from dirt, and the worms did not live in us forever.

We made up games with sticks and tennis balls and although we were told it would happen, we did not poke out any eyes.

We rode bikes or walked to a friend's house and knocked on the door or rang the bell, or just yelled for them!

Local teams had tryouts and not everyone made the team. Those who didn't had to learn to deal with disappointment. Imagine that!!

The idea of a parent bailing us out if we broke the law was unheard of ...

They actually sided with the law!

This generation has produced some of the best risk-takers, problem solvers and inventors ever! The past 50 years have been an explosion of innovation and new ideas.

We had freedom, failure, success and responsibility, and we learned ...

HOW TO  DEAL WITH IT ALL!

And YOU are one of them! CONGRATULATIONS!

You might want to share this with others who have had the luck to grow up as
kids, before the lawyers and the government regulated our lives for our own good.
And, while you are at it, show it to your kids so they will know how brave their parents were.

Kind of makes you want to run through the house with scissors, doesn't it?!

Posted: Monday, February 11, 2008 10:52:12 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


Back in the day, I used to love having a PC equipped with a VGA graphics card and an additional Hercules graphics card attached to a green-screen monitor. When debugging applications, the app could run on the main screen and the debugger could run on the green-screen. This was particularly beneficial in the early days of Windows when debuggers were text-mode apps which forced the screen to toggle between text screen and Windows GUI as you stepped through code. Some older graphics cards and monitors used to take several seconds per switch to re-sync making single stepping through code a VERY painful experience.

And then, along came debuggers that could run within console windows or were native Widows apps and the need to switch between text-only and graphical screen resolutions suddenly went away. However, I always missed having my debugger & source on one screen and the app being debugged on another.

As the price of graphics cards and screens continued to drop, and as PC's and Windows' ability to support multiple screens improved, I eventually acquired a second screen letting me run the debugger on one screen while the app rendered on the other.

But as I started to work on multiple machines at the same time, I then hit another dilemma ... how do I retain my multi-screen environment when I have to switch between several physical boxes?

Alas, KVM's are just not a solution - they're unpredictable at best, horribly unreliable at worst and didn't smoothly support multi-monitor scenarios.

Then, a few years ago, Citrix, Microsoft and others introduced Terminal Services (TS) capabilities to Windows and other OS'. TS essentially streams all the User Experience (UXP) commands that would normally be directed to a machine's graphics, audio, printer, keyboard, etc. drivers to a remote PC running a Terminal Services Client (TSC). The TSC app would then translate these commands to render the same UXP on the local machine so that to all intents and purposes, the user could believe that they were actually sat at and operating the remote machine.

Whilst TS can be a massive boon to many enterprise scenarios enabling administrators to consolidate many thousands of user's PC's apps and environment into one server infrastructure. However, TS capabilities are not just limited to enterprise environments.

Thankfully, Microsoft opted to include a TS client (MSTSC) within Windows client OS' which meant that instead of having to buy a KVM and a ton of cables, I could instead control multiple machines from one client PC using MSTSC application (also known as Remote Desktop).

Whilst MSTSC was great in that I could now have my local desktop on one screen and other machine's desktops on other screens, all controlled from the same keyboard and mouse with no fiddly screen-switching to perform, I sometimes wanted to view a remote machine's desktop spanned across two screens.

Vista has now made this not only possible, but easy and simple!

To start MSTSC, it's often best to use the command line because there are a few options available which (for some reason) aren't exposed through the Tools  | Options dialog.

For example, to connect to a remote machine called RichDev01, you could type (or create a shortcut for) the following:

MSTSC \\RichLaptop01

When executed, you'll then be shown the remote machine's desktop. For example, here's my laptop's desktop (where I am writing this post), accessed from an MSTSC instance running on my dev box:

image

On a multi-monitor machine, I am also able to access the local machine's desktop (on the left) AND the remote machine's desktop (on the right) simultaneously:

image

Whilst this is great (so I can keep up with my email while my dev box builds, for example), I sometimes want to be able to access the remote machine's desktop as if it was attached to the two screens.

Thankfully, this was a feature added to Vista (and enhanced in Vista SP1)! Below is a screen capture of my laptop's desktop, viewed across my dev machine's two screens:

image

How do you do this? Simple - you call MSTSC with the /SPAN command-line option; for example:

MSTSC \\RichLaptop01 /SPAN

It turns out that spanning your target desktop via an MSTSC session has a valuable hidden feature: When you maximize an app on the remote desktop, it will expand to fill the entire space available to it, rather than the current screen! Just what you need when parsing complex logs or comparing files etc! Wink

image

Anyone out there with more than two screens that can test out if a remote machine's desktop can be spanned across more than two screens? Big Grin

Enjoy!
Posted: Monday, February 11, 2008 6:10:50 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


 Thursday, January 17, 2008

Scott has just announced that the .NET Framework Library Source Code now available!! As Scott states: You can now browse and debug the source code for the following .NET Framework libraries:

  • .NET Base Class Libraries (including System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc).
  • ASP.NET (System.Web, System.Web.Extensions)
  • Windows Forms (System.Windows.Forms)
  • Windows Presentation Foundation (System.Windows)
  • ADO.NET and XML (System.Data and System.Xml)

We are in the process of adding additional framework libraries (including LINQ, WCF and Workflow) to the above list.

Note: The primary goal here is to enable developers to view source code to the underlying .NET Framework while building apps. As such, the ability to view the source to .NET is granted under a read-only reference license.

Happy hacking! :)

Posted: Thursday, January 17, 2008 12:22:11 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
.NET | Development

 Monday, January 07, 2008

Jeremy Clarkson, presenter of TV's "Top Gear" published his bank account details and home address in an article he penned for "The Sun", the UK's best-selling newspaper. Why? Because he wanted to illustrate his belief that the furore over reports of the loss of CD's containing a database of 25M people's personal details were much ado about nothing. He claimed:

"All you'll be able to do with them is put money into my account. Not take it out. Honestly, I've never known such a palaver about nothing"

Alas, this stunt has backfired on him! Clarkson subsequently wrote in his Sunday Times column that:

"I opened my bank statement this morning to find out that someone has set up a direct debit which automatically takes £500 from my account. The bank cannot find out who did this because of the Data Protection Act and they cannot stop it from happening again."

Clarkson, much chastened, had the good grace to admit that:

"I was wrong and I have been punished for my mistake.

He must be thanking his lucky stars that whoever managed to compromise his account didn't clean him out! Let this be a lesson to us all.

It is clearly all too easy for our identities to be abused and compromised and we should all take steps to do what we can to protect our personal identities.

Here are my top 5 suggestions on the absolute minimum steps we should all take to protect our personal identities:

  1. Shred paperwork. Don't just throw away paperwork with your name, address, telephone numbers, account numbers, balances, credit details, etc., SHRED THEMDocument shredders are not expensive and take just moments to make it much harder for malicious third parties to abuse your identity.
  2. Protect your passwords: Passwords are a pain to use and open us up to innumerable identity attacks such as phishing. However, until alternative identity exchange mechanisms such as Windows CardSpace establish a strong foothold, passwords are going to remain as the primary way we secure access to websites and online services. So we will need to more effectively manage our passwords. Key tips for password management:
    1. Don't re-use passwords: Avoid using the same password at more than one site. If your password is compromised once, you're open to much broader attack if your password is shared across several other sites. It's quite easy to choose a unique password and to augment it with some site identifier so that you can easily remember the password to use on a given site.
    2. Never write down your passwords, nor store them in an unsecured store (e.g. a spreadsheet on your laptop). If you must store your passwords, store them in an encrypted and/or password protected store, and rather than store the password itself, store a hint or reminder as to what the password is.
  3. Avoid passwords: Lobby your bank, credit card companies, merchants, billing companies, and anywhere else online that requires to you create and maintain yet another password. Ask them when they plan to adopt identity selectors such as Windows CardSpace (or other identity selectors such as Novell's Bandit for example). We need to start moving beyond usernames and passwords and to enjoy a safer Internet.
  4. Protect your Social Security/Tax/National IDs: It stuns and amazes me that most banks here in the US use a person's Social Security Number (SSN) as the primary identifier for their customers. I've lost count of the number of times I have been asked to provide my full SSN when speak to my bank, mortgage company, etc. I am even more astonished at how flummoxed the phone rep's are when I refuse to provide my whole SSN - they just don't know what to do or go out of their way to avoid performing the couple of extra steps necessary to look you up in their systems using other credentials (name, address, etc).
  5. Monitor your bank / credit card transactions monthly: I am as guilty as the next guy of not doing this as regularly as I should. Until recently. A few weeks ago I decided to take a more proactive stance regarding my financial position and invested in a money management package (I chose Microsoft Money, but tools like Quicken are great too). Whilst categorizing all my uncategorized credit card transactions, I found that I had been billed over $120 by TFN*GreatFun (Trilegiant's well documented scam). I am in the process of jumping through the (quite unnecessary) hoops required to have these charges reimbursed. Without Microsoft Money, I would most likely not have noticed these charges and so it has already more than paid for itself!

Hope this helps you avoid getting compromised.

Posted: Monday, January 07, 2008 6:33:14 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
Identity | Security

 Wednesday, December 12, 2007

image

Sorry ... couldn't resist it! Just HAD to post a picture of our cat!

Posted: Wednesday, December 12, 2007 1:01:48 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


 Thursday, November 01, 2007

Brad Abrams is asking whether or not the default behavior of the .NET runtime should allow your machine to run .NET applications stored on network shares by default.

Today, you can run native EXE's stored on a network shares without having to do any security work at the desktop. .NET application on the other hand will fail with a somewhat unhelpful "[exename] has encountered a problem and needs to close.  We are sorry for the inconvenience" error message.

This is, as Brad points out, a well known issue with some simple workarounds involving:

  1. Configuring your machine to trust a given strong-named (i.e. signed) .NET EXE (using MSCORCFG.MSC; details here)
  2. Alter your machine's Code Access Security Policy to trust a given network share (using CASPOL.EXE, as shown by Shawn)

I believe that softening the default Code Access Policy to permit .NET EXE's to run from default shares will introduce too many opportunities for malicious software authors to fool users into running apps that they think they trust.

Remember the ILoveYou virus which, as Dominick points out, copied itself to network shares as one of the avenues through which it spread its infection?

The only way I could accept such a sweeping change is if only EXE's that are Digitally Signed with a cert from a Certificate Authority in my trusted root store were permitted to run from a network share. Otherwise users WILL be fooled into running something that is less than desirable and which causes significant damage ... something I think we should all take steps to avoid.

In short, Just say NO!

Posted: Thursday, November 01, 2007 4:51:45 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
.NET | Security

 Wednesday, October 03, 2007

image The wait is over and the prayers of many have been answered! From Scott Guthrie's blog this morning:

Today I'm excited to announce that we'll be providing [the source code to major parts of the .NET Framework] with the .NET 3.5 and VS 2008 release later this year.

[Source: Releasing the Source Code for the .NET Framework Libraries - ScottGu's Blog]

I know that this news is going to make a lot of people VERY happy indeed. :)

There is much debate about whether open or shared-source projects truly deliver enough benefit versus the cost of potentially giving away the crown jewels. However, I think it safe to say that it's generally universally accepted that it's a heck of a lot easier to successfully build apps and systems on top of a framework if you're able to peer down into the framework to see what's going on inside.

Remember the old days when we used to write apps on top of Borland's TurboVision, OWL and Visual Component Library or Microsoft's MFC and ATL? It was immensely useful to be able to single-step down into the framework in many cases.

Whilst we published portions of the BCL in the Shared Source CLI (I highly recommend the SSCLI/Rotor book to better understand what's going on in the CLR itself), you now get to delve around within a significant superset of the .NET Framework library's source code:

  • .NET Base Class Libraries
    • System, System.IO
    • System.Collections
    • System.Configuration
    • System.Threading
    • System.Net
    • System.Security
    • System.Runtime
    • System.Text,
    • etc...
  • ASP.NET
    • System.Web
  • Windows Forms
    • System.Windows.Forms
  • ADO.NET
    • System.Data
  • XML
    • System.Xml
  • WPF
    • System.Windows

Keep your eyes peeled for follow-up details of this news :)

Posted: Wednesday, October 03, 2007 10:16:24 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
.NET

 Monday, September 24, 2007

image

For anyone who's played and/or followed the previous two Halo games, tomorrow marks the release of one of the hottest entertainment releases to date. Halo3, the final chapter in the Halo trilogy is on general release tomorrow.

If you can't wait until tomorrow to begin the final saga, then you might want to attend one of the Midnight Madness events at one of the 10,000 retail outlets across North America who are opening early for Halo 3 fans! In particular, the following four special events will enjoy live coverage on SpikeTV and G4 cable networks:

  • Best Buy, 457 120th Ave NE, Bellevue, WA -- Seattle fans are invited to join the celebrations at Bellevue's Best Buy, which will open its doors at 12:01 am on September 25. To commemorate the release of Halo 3 in the game's hometown, fans will be able to celebrate the occasion with product giveaways. People in line may also get a chance to play against Bungie team members and local professional athletes.
  • Best Buy, 529 5th Ave, New York, NY -- Located in the heart of 5th Ave. and only a few blocks from Times Square, the Best Buy store on the corner of 5th and 44th Ave. will be the first to provide consumers in the U.S. with Halo 3.
  • GameStop, 1000 Universal Studios Blvd, Universal City, CA -- From the entertainment capital of the world, GameStop's flagship store at Universal CityWalk in Los Angeles will host the Halo 3 West Coast launch.
  • Circuit City, 8575 Northwest 13th Terrace, Miami, FL -- Hosted by Circuit City, Miami's Midnight Madness event of choice will feature product giveaways and contests.

Go checkout http://www.halo3.com for more details.

... And when you play Halo3 online, if you get attacked by someone called BitCrazed, you know who it is! ;)

Posted: Monday, September 24, 2007 8:28:22 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -
Games

Do you TRULY LOVE what you do? If not, why do you do it?

This are two of the most important questions we should all (regularly) ask ourselves and have the courage to answer honestly. If you hear yourself answer "no" or "not really" too often, then you know it's time for some change.

For those that don't know me, I work at Microsoft. I was, up until a few weeks ago, Product Manager for Windows CardSpace - an incredibly exciting product that will revolutionize how we authenticate ourselves and exchange sensitive information online. Before that, I was a Product Manager for Windows Communication Foundation (WCF) and before that was a Program Manager for WCF. Before that I worked as a Principal Consultant and then Solution Architect at Microsoft UK. Before Microsoft, I formed and ran my own specialist software consulting business and built some pretty hard-core systems for customers throughout Europe. More on this in another post.

I asked myself the questions at the beginning of this post several times this last year and I heard my replies go from "yep, sure" to "yes, but ..." and then "no, because ..." too often. I began to ask myself "when am I happy?" and "what do I love to do?". The answer was always "I am happiest when I am designing and building great software".

Time then for a change!

It turns out that, whilst I am a little rusty, I still have the chops ;)

Following my first developer interview for over 10 years, I recently started my new role as a Software Development Engineer for (get ready for "Product Name Gone Wild" ) Visual Studio 2005 Team Edition for Database Professionals ... or "DataDudes" as we prefer to call ourselves! :)

It's only been a few weeks now, but I can't even begin to express how excited I am now to wake up and get into work in the morning. I even look forward to Monday mornings now, eager to get in and create an elegant solution for another pressing problem.

I'll be posting more about this transformation in role from marketing to developer over the next few weeks while I settle in to the role and learn to navigate the huge amount of code in this powerful product we're building!

So I ask you once again: Do you TRULY LOVE what you do? If not, why do you do it?

Answer yourself honestly now!

Posted: Monday, September 24, 2007 6:38:59 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] -


All content (unless otherwise specified) is © Copyright 2010 Richard Turner.