Monday, November 24, 2008

Daily Links 24/11/2008

Introducing TransitionContentControl
"write a very simple contentControl, that allows you to transition your old content with your new content"
Cool :)

Dynamically Loading an assembly at Runtime and calling its methods
Check out the comment as well. Handy for getting a start to a plug-in application architecture

Producing readable log4net output

Visual SVN 1.6 released
If you're looking for a free SVN IDE plugin for VS, then head on over to Ankh - muchly improved over the last year or so.

Practicing Agility in Application Architecture
"Microsoft has published a How-To Design Using Agile Architecture guide under patterns & practices providing detailed guidelines to follow when architecting an application, the Agile way."

WCF REST Starter Kit Hands On Labs
REST Services seems to be making a bit of a revival - here's some help to get started.

Setting up Subversion on Windows Home Server
Simple as 1-2-3

Friday, November 21, 2008

Daily Links - 21/11/2007

What Gives? Microsofts Code Generation Tool
T4: Free code generation tool from Microsoft

New Silverlight Application Checklist
Things to do when you first create a Silverlight application

Specifying timeout duration for WCF services

Securing your WCF Services for your Silverlight Application

How to create a Visual WebGui Silverlight application
VWG is something I've kept my eye on for a while now, and it is very interesting what they are doing to increase development productivity, as well as offer an innovative server-side "ajaxian" architecture, which address concerns such as efficient data transfer and security.

How to start with Scrum

The Decline and Fall of Agile
Why is agile getting a bad name? Read on...

Nine Things Developers Want More Than Money

Tuesday, November 18, 2008

Daily Links 18/11/2008

Use styles for an editable silverlight combobox

AutoCompleteBox control / Worker Threads

Silverlight Glass Button

Combining different seperated presentation patterns
I think in "real-world" development this is a necessity.

Update on Silverlight 2 - and a glimpse of Silverlight 3

NUnitLite
NUnit for Compact Framework, Mono, embedded projects etc.
Was looking for something to run NUnit tests on my compact framework stuff, and this seemed to be the best solution available.

JetBrains Has Released IntelliJ IDEA 8
"Includes SQL, new refactorings, inspections, UML diagrams, JBoss Seam, better performance and more."
I work mostly in the .NET space these days, but my brief stint into the Java world taught me there is no better IDE for Java than IntelliJ

Wednesday, November 5, 2008

Daily Links 05/11/2008

Silverlight Toolkit released on Codeplex
"collection of Silverlight controls, components and utilities made available outside the normal Silverlight release cycle"

Silverlight Tools RTW released
was wondering why the previous release was labelled RC1 :)

Building a Silverlight Line-Of-Business Application - Part 2
Covers DataGrid functionality - comparing the silverlight datagrid to the very capable open-source grid from DevExpress

Silverlight and IIS Smooth Streaming
All I can say is....wow :)

Silverlight and WPF Tookit
woohoo! WPF finally gets VisualStateManager

DatePicker & Calendar released for WPF

Compiled LinQ Queries
Speed up LinQ to SQL performance

Linq to SQL: Delete an entity using Primary Key only

New IT Architecture resource

Premier Survey
Conduct online surveys for free :)

40 Beautiful Free Icon Sets

Tuesday, October 28, 2008

Daily Links 28/10/2008

Creating Drop Shadows in Silverlight Using Nested Borders

Loading assemblies dynamically in silverlight

Using Isolated Storage in Silverlight

Silverlight Tip of the Day #65 - Adding a Mouse Wheel Event Listener to your Controls

Silverlight 2 and Localisation/Globalisation
seems by default silverlight gets culture settings from the OS, and not from the browser as I had expected

Neptune SMTP Development Server
"a SMTP server that did not relay the message and allowed me to query for messages and their content"

SVN-Monitor is out!
Free full-featured user-front-end to SubVersion for Windows.

Building an Error Icon in WPF

Singletonitis

Microsoft Pre-release Software Visual Studio 2010 and .NET Framework 4.0 Community Technology Preview (CTP)

Mocking out WCF Services in Silverlight 2.0 for Unit Testing

Brief Background:
When consuming WCF Services in Silverlight, proxy classes are generated to make using the service a lot more simple. These service proxy classes offer a simple implementation of the asynchronous service methods (synchronous service calls are not supported in silverlight).
If you're following TDD, then you want to test your client-side silverlight C# code in some sort of testing framework, and if you're writing proper unit tests, you are going to mock out the boundaries to the logic in the code (Xaml views and service references).

Problem:
Although interfaces are also generated for the service proxy classes, for some reason Microsoft left out the simple public methods in the interface definition - which 9/10 times are the only methods the developer is going to use! - go figure?!
Here is a simple service definition on the server:

image

...and here is how the svcUtil generates the proxy on the client in order to call the service methods:

Service implementation:
image

Service interface:
image

Notice that the simple "DoFooAsynch" methods have not been exposed on the interface!

Solution:
Briefly, the solution is to include the simple asynchronous helper methods in an extension of the interfaces already defined.
Do the following:

  1. Add a new class file on the Silverlight client
  2. Change the namespace to be the same as the namespace defined in the reference.cs file (where the proxy classes have be generated) - make sure to click the "Show All Files" on top of the solution explorer to find it.
  3. Define a new interface - using the example, mine would be:image  
  4. Extend the existing interface if necessary (in the example interface derives from FooBarService interface.)
  5. Include the public "[XYZ]Asynch" methods that you would like to mock into the interface as well as the return event definitions.
  6. Apply the interface to the service implementation class - luckily the class is declared as partial in the proxy, so this is quite easy: image

Now in the code, the logic to be tested should have a reference to this newly created interface, and not the actual service itself. Use either the factory pattern or dependency injection (both of which should be familiar to you if you're doing TDD) to inject the service implementation at runtime.

But what about injecting the mock during testing? Here's a pattern which I've found helpful:

image

When testing the logic code, I inject my mock service which implements the service interface into the constructor of the logic class, and in production, I let the ServiceLocator resolve the service implementation in the default constructor.

Using this methodology, you can effectively remove the service dependency in your unit tests  :) (remember to call the service implementation in your integration tests!)

Happy Testing...

Jax

Monday, September 15, 2008

Tuesday, September 9, 2008

DeepCopy with Silverlight

In a few scenarios, the need arises for making an exact copy of a given object. I've been doing this for a few years now in Windows Forms development using code that looks something like:

image

Using the code above, one could copy any object just by typing:

SomeObjectType instance = anotherInstance.DeepCopy();

Unfortunately for Silverlight users, the BinaryFormatter is not available, so when I wanted to store the original state of an object (make a deep copy of it) retrieved from a service call in order to track changes on the client, I could not do it the old way :| .

DataContractSerializer to the rescue:
Thanks to recent SP1 changes which do not require objects to be marked with the DataContract tag, you can use the DataContractSerializer (which is available is Silverlight) to serialize just about any object of a given type. Here's the code for Silverlight Deep Copy:

image

Remember to add a reference to System.Runtime.Serialization to the project in order to get to the DataContractSerializer class.

EDIT: Recently came across this post, which may contain additional useful information.

Friday, August 29, 2008

Daily Links 29/08/2008

Fast Serialization
"This solution is for a fairly niche condition and is heavily optimized"

URL rewriting in ASP.NET web applications

NHibernate 2.0 released

Silverlight Contrib
"The aim of this project is to offer the most comprehensive collection of free and open source Silverlight
controls"
something to keep an eye on :)

Creating Vista Style Login Screen With Silverlight 2 Beta 2

Making reflection fly and exploring delegates

Occasionally Connected Client Support With VS 2008 SP1

Free .NET 3.5 training
"for experienced Developers and Software Architects who are looking to adopt Microsoft's next generation technology"

Root Cause of Singletons
...with some interesting comments for and against singletons.

Portable Apps for your thumb-drive
web browser, email client, audio player, encryption, office suite - VERY handy :)

XamlPadX 4.0
update to a cool xaml editor

Monday, August 25, 2008

Daily Links 25/08/2008

Silverlight: Binding and Threading == Cat and Dog
"when a binding notification is raised from a separate thread than the Dispatcher thread, an exception is thrown" - article for a work-around to this problem

Auto-sizing the Silverlight DataGrid

Silverlight Particle Generator
posted just for the coolness (and that it was done is silverlight :) )
- with source code

CoolMenu: A Silverlight Menu Control
- with source code

Calling WCF on the server of origin from Silverlight
Handy for making the service valid for development and deployment environments

Base Classes for User Controls
I still prefer to make the UserControl a Resource build action and paste the generated code in the main class as a temparary measure - at least you get designer support, which is missing in the above work-around.

SkyFire
The windows mobile browser that supports silverlight :)

Share files online with box.net

Sunday, August 24, 2008

Host Silverlight in Blogger

Been meaning to test the Silverlight Streaming Silverlight host site in blogger for a while now - so I slapped together a Media Element with the silverlight logo as content (if you click on it, it will take you to the silverlight.net home page.)
Testing 1 2 3...



Well, it seems to be working :)
Now I just have to find the best solution for sharing / hosting files in blogger.

Friday, August 22, 2008

Daily Links - Best of: Silverlight 2

I've been posting the daily links series just on a year now, so I thought it a good time to summarize some of the best links in a "Best of" series. Because I'm busy working on a Silverlight RIA application, I thought it an obvious first candidate.

Silverlight Install

Silverlight Home Page
Here you'll find just about all you need to know about developing with Silverlight, including videos and tutorials, as well as blogs and forums.

Silverlight Show
Stay up to date with the latest silverlight news.

Silverlight, Blend and WPF Tutorials

Silverlight Cream

Silverlight links post

50 new silverlight screencasts

Silverlight Testing

Continuous Integration and Testing silverlight applications with WatiN
Wrap microsoft's silverlight test framework using the silverlight nunit framework and WatiN to enable CI
Mocking and IOC in Silverlight 2, Castle Project and Moq ports
temp solution for those of us doing TDD for silverlight BETA. Hopefully a permanent solution will follow shortly.
UI Automation of a Silverlight Custom Control
Silverlight NUnit Projects
I was half way through doing the same thing when I came across this post. saved me some work :)
TestDriven .NET now has support for Silverlight 2.0 Beta 1
Only ad-hoc tests supported thus far though
Unit Testing with Silverlight - the FULL article

Silverlight Controls

Silverlight 2 messagebox example
Free WPF and Sivlerlight components
DevExpress has released Beta 1 of it's FREE Silverlight DataGrid
More free Silverlight Charting
Free Silverlight Controls from VectorLight

Silverlight Services Communication

Pushing data to a silverlight client with sockets
as apposed to using WCF duplex services which is basically a wrapper for a polling mechanism.
Pushing Data to a Silverlight Client with a WCF Duplex Service
Silverlight 2 Beta 2 basic ClientAccessPolicy.xml file
CRUD operations in Silverlight using ADO.NET Data Services

Silverlight Graphics

In-State Animation with Silverlight
One of the best things about silverlight is how it makes control animation so easy, even non-designers can use it :)
Build custom skins for your silverlight UI
Theme Controls in Silverlight

Silverlight Misc

Silverlight Desktop
"A framework that allows you to dynamically load Silverlight modules into resizable draggable windows."
ViewModel Pattern in Silverlight using Behaviors

Thursday, August 21, 2008

Daily Links 21/08/2008

Visual Thesaurus - Mindware
Expand your vocab for your writing

Continuous Integration and Testing silverlight applications with WatiN
Wrap microsoft's silverlight test framework using the silverlight nunit framework and WatiN to enable CI

WPF Datagrid & the WPF Toolkit
Great resource for WPF controls

Silverlight 2 Samples: Dragging, docking, expanding panels (Part 2)

Silverlight 2 messagebox example

Silverlight blog
mostly to do with the graphical side of silverlight

Pushing data to a silverlight client with sockets
as apposed to using WCF duplex services which is basically a wrapper for a polling mechanism.

Scrum - A Not-so-bad Development Methodology
Some positive experiences using the scrum software development methodology

Testing a singleton
One of the main gripes against singletons by the TDD zealots is that they're aren't very testable. These articles offer some work-arounds to enable singleton testing.

Tuesday, August 19, 2008

Generic SetValue Method for INotifyPropertyChanged

I needed a generic SetValue method for my objects that implemented INotifyPropertyChanged, since all my setters looked like:

image

... and I wanted something like:

image

... and here's the end result: (applied to a base object which all other INotifyPropertyChanged objects inherit from)

image

It shortened my 650 line code file to 325 lines :)

for copy and paste:

protected void SetValue<T>(ref T valueToSet, T newValue, string propertyName)

        {

            if (valueToSet == null || !valueToSet.Equals(newValue))

            {

                if (!(valueToSet == null && newValue == null))

                {

                    valueToSet = newValue;

                    RaisePropertyChanged(propertyName);

                }

            }

        }

Notes:

  • The ref parameter was necessary (as apposed to returning T), because TwoWay binding to the object will not work in Silverlight (and I assume WPF) if the actual property is changed after the PropertyChanged event is fired.
  • All that null checking is necessary to take into account ref / value types. The null check in the first if statement ensures that the valueToSet.Equals does not throw a NullReferenceException, and the null checks in the second if statement ensures that if the original value is null, that the new value is something other than null (ie: has changed)

Extending SetValue Method with VerifyProperty Method

I came across this great post for implementing a base BindableObject, which does a little more than I'd like, but one cool idea is to add a VerifyProperty method, so while developing, you can catch any spelling mistakes in the propertyName parameter.
It uses reflection to ensure that the property indeed does exist on the object, and makes use if conditional compilation so the code is not deployed to the release build - like so:

image

follow the link for a demo project. (rename the extension to .zip)

... so the modified SetValue method would look like:

protected void SetValue<T>(ref T valueToSet, T newValue, string propertyName)

        {

            if (valueToSet == null || !valueToSet.Equals(newValue))

            {

                if (!(valueToSet == null && newValue == null))

                {

                    VerifyProperty(propertyName);

                    valueToSet = newValue;

                    RaisePropertyChanged(propertyName);

                }

            }

        }

    
   

Monday, August 18, 2008

Daily Links 18/08/2008

Log4PostSharp - logging with AOP
Add logging to your application using AOP (ie: don't bloat your code with log statements - AOP does it all in the background by hooking into the method calls)

Moq
"take full advantage of .NET 3.5 (i.e. Linq expression trees) and C# 3.0 features (i.e. lambda expressions) that make it the most productive, type-safe and refactoring-friendly mocking library available. And it supports mocking interfaces as well as classes. Its API is extremely simple and straightforward, and doesn't require any prior knowledge or experience with mocking concepts. "
Interesting...think I'm going to check it out :)

Mocking and IOC in Silverlight 2, Castle Project and Moq ports
temp solution for those of us doing TDD for silverlight BETA. Hopefully a permanent solution will follow shortly.

Silverlight 2 Tools, SQL Server 2008 and Visual Studio 2008 SP1 Installed & Working Together

WPF splash screen template for VS

What’s new in WPF 3.5 SP1: Splash Screen to improve perceived startup performance

Free WPF and Sivlerlight components

Free (Lite Version) Icon Editor Addin for Visual Studio 2008

A Common Base Class for LINQ to SQL

Burn Your Burn-down Charts
using Burn-Up charts to depict project focus as scope changes

Thursday, August 7, 2008

Daily Links 07/08/2008

The Request/Response Service Layer
Maintain the granularity of your WCF services, whilst allowing multiple requests in a single call - follow-up to the previous "batching WCF services" posts.

Silverlight Streaming
Host up to 10 Gig of silverlight for free!
More details here

Effects and Transitions for Silverlight

Real-Time Multilingual WPF Demo
Multi-language support using Google's AJAX translation API

Introduction to IoC/DI - The art of Decoupling

Agile Project Planning

I've been looking at LINQ lately to implement data access on the DAL. One of my requirements to to be able to specify queries at runtime. Here are some articles which I've found quite informative

Build your own electric car

Tuesday, July 29, 2008

Silverlight 2: Sharing Code Between Client and Server

One of the first things that came to mind when I heard that silverlight was going to be adding managed code support, was the potential to reuse code between the server and the client. I had been successfully following this methodology for my compact framework development, and now it was possible for silverlight web applications as well! [Insert happy dance here]

One of the main areas I like to reuse code has to do with the object model, and the validation thereof. Just as a reference, when I say "object model", I mean dumb data carriers for my entities. ie: Classes that contain only properties, not behavioural methods. Not that you can't add methods to your OM classes, I just prefer to keep them simple, and let other classes take care of behaviour / validation etc.

Okay - enough blog waffle, let's get straight into sharing your code between server and client!

Here's a picture of a typical basic silverlight architecture:

SilverlightArchitecture

The idea is to share code between the .NET application layer and the silverlight client layer, and even allowing the classes for the shared code to be serialized over the wire.
NOTE: For the last bit (code sharing that involve "over-the-wire" serialization), you'll need to wait for the release of Silverlight 2 RTW. I can confirm that RTW release does allow the re-use of types in referenced assemblies. :)

Step 1: Define the code

Typically, there are 2 strategies for defining the canonical source of the code: 1) Place it in a shared location, and link it to projects that need it, or 2) Define it in the project with least namespace dependencies, and link it up to other projects.
If you're sharing code across the compact framework, silverlight, and the full .NET framework, I recommend 1), but if you only plan on using the code for one of the subset frameworks, I recommend 2), which is the one I'll describe in detail here.

The reason for defining the class in the silverlight class library is purely due to maintenance reasons. When modifying the source code, always modify it at it's source. That way you know you're not adding any code that depends on framework namespaces that do not exist.
eg: If I open the class where it is defined in the silverlight class library, and try and add a DataSet property, the designer will immediately tell me that this is not possible. If the class was defined in the server assembly, I would only find the dependency error at compile time when the client assembly compiles.

One final note on the class definition: It may be helpful to mark your classes with the "partial" keyword, as you may wish to extend the defined class into server and client specific implementations. That, or you could define new client and server types which inherit from the shared base implementation - whichever makes more sense in the underlying design.

Step 2: Link the Code to the Server Assembly

The idea is that there is only one version of the code on disk, otherwise it's just code duplication, and not code sharing / reuse.
To reuse the code defined in Step 1 in your server class library, do the following:
From the server assembly project menu, select "Add Existing Item", and navigate to the class file defined in Step 1. Instead of clicking the Add button (which would just duplicate the code) select the arrow next to the add button, and select "Add As Link"

AddAsLink   ShortCutIcon

You will notice that there is a little shortcut mark on the class icon in the solution explorer. This indicates that the file is declared elsewhere (your silverlight assembly in this case).
ie: Whenever you make changes to the class definition, it will automatically be reflected in all the places where the source code file is linked.
NOTE: Be careful not to open the file from the shortcut, as Visual Studio will open it assuming you are in the current project, and you will have access to all the .NET namespaces. ALWAYS edit the code by opening it from the canonical source.

Step 3: Share the Code Over WCF Services

If your code is going to be "traversing the wire", then mark it with the usual [DataContract] and [DataMember] attributes. (NOTE: Since the release of SP1, you don't need to explicitly mark your data members - only do so if you want to explicitly exclude certain properties from serialization. ) Make sure that System.Runtime.Serialization is referenced in all projects making use of the shared code file.
From the Silverlight client project, right click and select "Add Service Reference". Add a reference to the WCF service you would like to consume, making sure that the checkbox "reuse types in referenced assemblies" is checked in the advanced options (as displayed below).

 AddServiceReference AddServiceReferenceAdvanced

When reusing types (which will only be available from silverlight 2 RTW), the svcutil, which is used to generate the client proxy class definitions for the DataContracts, will add references to the client versions of the code (the class created in Step 1)  instead of generating them in the Reference.cs file of the service.

...And that's it - now you're sharing C# code between server and client.
I'm currently finding this very handy for executing common business rules on object classes on the client in order to prevent unnecessary round tripping to the server.
It's also become very handy for generic framework implementations using the common base classes. Also, If you have the same DataContract defined in two separate services, instead of them being defined twice (once for each service reference), both services reference the existing client-side class, allowing the generic code implementation mentioned above.

I'm working on posting some (simple) sample source code - watch this space.

Another handy post on the subject

        

Daily Links 29/07/2008

Visual Studio Item Templates
create custom file templates to give you a head start in implementing derived classes / patterns

Create PDF Files on the fly with C# and PDFSharp

Agilo for Scrum
Demo movie
"Agilo for Scrum is a simple, web-based and straightforward tool to support the Scrum"
"Agilo is distributed as Open Source Software"

Default Architecture: Layers
Interesting article by Ayende touching on most common architecture layering implementations.

Patterns I Hate #1: Singleton
I'm one of the guilty - singletons seem to spread like a virus in my code :|. One of the most convincing arguments not to use them is testability, so if you're going TDD, singletons are going to give you some roadblocks.

In-State Animation with Silverlight
One of the best things about silverlight is how it makes control animation so easy, even non-designers can use it :)

Friday, July 25, 2008

Daily Links 25/07/2008

Lutz Roeder has some pretty handy .NET utility applications
...the most popular being the .NET reflector for inspecting the contents of .NET assemblies (reverse engineering them to code again)

New Silverlight Learn page
much improved/organised learning resource/links for Silverlight 2

Using a DSL to create a fluent interface for unit testing your domain model
English: Create object builders with Domain Specific Language methods in order to provide mock objects with specific data to your unit tests. Highly recommended for TDD.

Table variables v temporary tables in SQL Server
Handy article on the difference between table variables and temporary tables in SQL Server. Both are very handy in optimising your database transactions.

10 Principles of Agile Project Time Management

Managing an Agile Software Project

Example Product Backlog & Sprint Backlog

Unit Test Boundaries
What makes good / defines unit tests? Highlights that they really should be separated from integration tests (which include DAL "unit" tests)

WPF Tutorial - Using MultiBindings

WPF Links - 21 July 2008

Free books on Version Control with SVN

Comparing Objects For Equality in .NET

Arrange Act Assert and BDD specifications
New RhinoMocks 3.5 syntax making AAA (Arrange / Act / Assert) testing pattern more clear and discernible.

.Net Threads - 10 Best Practices

Google WebMaster Tools (free)
" - Automatically inform Google when you update your pages
- Discover your links and see how users are reaching your site
- Enhance and increase traffic to your site
- Learn more at Webmaster Central "

Tuesday, July 15, 2008

Daily Links 15/07/2008

PostSharp
"PostSharp is an free, open-source and extensible platform for enhancement of .NET assemblies"
"provides aspect-oriented programming (AOP) to .NET Developers without the learning curve"

Silverlight, Blend and WPF Tutorials

Using a value converter to bind to Visibility in the Silverlight data grid

Pushing Data to a Silverlight Client with a WCF Duplex Service

Getting started with WPF

Differences between SharePoint Services (WSS 3.0) and Office SharePoint Server (MOSS 2007)

Can someone tell me why i shouldn’t drop WCF?
More on the previous "batching WCF calls" post.

NDepend: code metrics at your service
Good summary article on NDepend functionality
"analyze code structure, specify design rules, plan massive refactoring, do effective code reviews and master evolution by comparing different versions of the code"

July '08 TFS Power Tool Preview
Now has filtered alerts for TFS work items.

Theme Controls in Silverlight

Billy Hollis on Getting Smart with WPF
Excellent presentation on how developing with WPF / Silverlight changes the way we think about UI design.

7 Steps to completing your project on time

101 Linq Examples - C#

Scale Cheaply - Memcached
Distributed cacheing solution for .NET

Wednesday, July 9, 2008

Daily Links 09/07/2008

UI Automation of a Silverlight Custom Control
"Silverlight supports UI Automation through a tree of peer automation objects that parallels the tree of user interface elements."

You should learn sharepoint
In job ads, I'm increasingly seeing adverts for MOSS developer skills - maybe something to consider in your skills development plan.

Telerik RadEditor
Nice WYSIWYG Editor you can use to replace the cr@ppy one that comes with Sharepoint (MOSS)
Apparently the full-featured one is really cool, but you're going to have to fork out $799 for it (worth it if you're running an enterprise MOSS environment)

User Story Estimation Techniques
Excellent article on estimation techniques (or do's and don'ts) of scrum sprint estimation

ScrumForTeamSystem has just released a BETA of TaskBoard
"interactive desktop utility that interfaces with Team Foundation Server projects created from version 2 of the Scrum for Team System process template. It enables you and your team to easily interact with the project work items without the need to run quires and navigate the Team Explorer user interface"
"Sprint backlog tasks can be dragged and dropped from one state to another, team member assignment and work remaining adjustments can be made via context menu manipulation. Activity logging is greatly reduced to give you more time to work on what’s important, the project!"
Looks like it makes scrum administration a breeze - essential for team member motivation and adoption of the scrum methodologies.

Visual Studio Command Shell
"provides users with a shell window inside the Visual Studio IDE that can be used for Visual Studio commands as well. Current version allows user to use either Windows Command Shell (cmd.exe) or Windows PowerShell"

Blog Editors of note:
ScribeFire
some nice advertisement add-in functionality that support multiple on-line advert suppliers
Windows Live Writer
Probably best if you have a Live Spaces blog (although it will work with other blog sites)

PicLens Firefox plugin
quick and easy image / video search with cool GUI via firefox browser

Monday, July 7, 2008

Daily Links 07/07/2008

How to display a dataset in a silverlight dataGrid
really handy stuff for those who were used to exposing datasets (which are not available in silverlight) to the UI.

Batching WCF calls
...what was also cool in this article was the code snippet to generically build a list of knownTypes on the base service interface

LINQ Farm: Lambdas
"Lambdas are a simple technology with an intimidating name. They sound like they are going to be difficult to understand, but in practice prove to be relatively trivial."

Ordering Code Construction Tasks
Excellent article on general strategies to follow when embarking on a new project.

Extension Methods + Attributes = A Whole New World!
The article title is a bit over-zealous, but the content is interesting non-the-less.

Getting Things Done with TodoList
Software that will maintain your tasks: everything from a simple todo list, to complicated task dependancy projection (ala M$ Project)

New to NUnit 2.5 - Generic Test Fixtures
Use the same code to test classes of a base type, or that share a common interface

Building classes at runtime using TypeBuilder
"TypeBuilder provides a set of routines that are used to define classes, add methods and fields, and create the class inside the runtime"
There are some security concerns if you're going to attempt this on a silverlight client
see here for a sample silverlight implementation

Fun with Continuous-Integration. Introducing: BILTONS
Customize the sounds that CC.NET makes when passes / fails per author.

StudioTools for Visual Studio
Some FREE plugin tools for VS, including Code Metrics, Smart Go-TO, Open File by Name, Tear-Off Editor Window, Incremental Search, and File Explorer
The same company also has a handy MSTest NUnit adapter
Microsoft Team System NUnit Adapter

Investing in a Quality Programming Chair
One of developer "must-haves"

Wednesday, July 2, 2008

Daily Links 02/07/2008

Silverlight Desktop
"A framework that allows you to dynamically load Silverlight modules into resizable draggable windows."

Silverlight 2 reference poster











Query Controls using LinQ

Scale Databases Cheaply - Sharding

How to implement SCRUM in 10 easy steps

Disadvantages of Agile Software development
Basically agile is an intense process requiring a high level commitment from everyone involved, without which it will most likely fail and lead to those "agile didn't work for us" comments.

Writing Good User Stories
"User Stories are a simple way of capturing user requirements throughout a project - an alternative to writing lengthy requirements specifications all up-front."

State Machines in C# 3.0 using T4 Templates
Some interesting code making use of partial methods and classes to implement a state machine

ooVoo
Free chat program which includes video conferencing features

Friday, June 27, 2008

Daily Links 27/06/2008

TDD : Introduction to Moq
The new mock framework on the block

More recommendations for the .NET Developer's toolbox

If you like playing with design tools - check this out: Design Pattern Automation Toolkit
"A toolkit to design applications using design patterns, with facility to generate code, and reverse engineering. Drag and Drop facility to create UML Class diagrams Support to write custom plug-ins for code generators and reverse engineering."

I've got a generic method that converts datasets to objects, and ran into a problem whereby the dataSet (not under my control) neglected to set the field to the correct dataType. So I now have to convert the field to the correct type using reflection. Here's the code:
property.SetValue(target, Convert.ChangeType(row[column], property.PropertyType), null);
where property is PropertyInfo retrieved from the object using type.GetProperties(), row = DataRow, and column = DataColumn

I've got a WCF Service library in one of my projects, but I was already hosting the services in a web project, so when I run the application, the usual VS Casini Server would pop up in the taskbar, but I noticed a "new" WcfSvcHost running as well. Now this is handy for when you don't have your own host up and running yet, but a bit irritating when you do. Apparently in VS SP1 you'll be able to switch it off, or you could hack the project file if you just can't wait for the SP1 release. Or you could get the SP1 Beta release in the meantime

30 electric cars companies ready to take over the road
With the ever-increasing fuel price, it's time to start some alternative shopping

Monday, June 23, 2008

Daily Links 23/06/2008

DockPanel Suite
Create dockable windows for your winforms applications ala Visual Studio

Microsoft to take Silverlight offline eventually, says exec

Nice summary on the features of Resharper
(scratching the surface mind you :) )

Software Development and Programming Podcasts

How to get up to speed with Team Foundation Server

SCRUM and Agile Programming using Continuous Build System
brief summary on what's involved doing a SCRUM sprint.

10 reasons why SQL Server 2008 is going to rock
1) is reason enough - intellisense! :)

TFS Code Review tip
tip on viewing (and doing the review on) only the changes made to a file since last check-in

What, the first computer programmer was a woman?!
...and developer of the first compiler...a woman
...so all us geeky guys owe the fairer sex a little more than we thought :)

Friday, June 20, 2008

Daily Links 20/06/2008

DevExpress has released Beta 1 of it's FREE Silverlight DataGrid
* Data Grouping against multiple Silverlight Grid columns
* Data Sorting against multiple Silverlight Grid columns
* Comprehensive Summary Computation support against multiple Silverlight Grid columns
* Column Movement
* Column Resizing
* Column Auto-Width
* Row Editing
* Row Preview (with animation)
* Template Support (for cell content, cell editing, row preview and headers)
* Auto Height Support for cells, headers, and totals.
* Virtual StackPanel Row Container (simply means we are able to handle an unlimited number of rows)
* Focused Row and Focused Cell
* Multi-Row Selection
* Cell Text Wrapping
* Vertical/Horizontal Lines
* Multiple column types/editors
The Source code is also available.

CLR Fun Stuff: How is my C# code converted into machine instructions?

We Don't Need No Architects
Making a case for the software architect

To JSON or not to JSON?
A comparitive performance look at Json Serialization vs standard xml serialization using WCF 3.5

ViewModel Pattern in Silverlight using Behaviors

Silverlight wallpaper
...for all the silverlight geeks out there

Tuesday, June 10, 2008

Daily Links 10/06/2008

Synch google calendar with outlook
$30 / year price tag :|

Upgrading to Silverlight Tools Beta 2 and Visual Studio 2008 SP1 Beta

Fixes for Silverlight 2 Beta 2 install / Visual Studio hassles

DocProject 1.11.0 RC
Works with SandCastle May Release (when it gets released)

MSDN Code Gallery
Handy for keeping up to date with code / utilities available for M$ software development products

Good article on using mock objects in unit testing

GhostDoc
Auto-generate xml documentation in C# code based on method name and paramters via a short-cut key. What I found really nice was that if you change the parameters / names etc., and press the short-cut key, it automatically corrects the xml documentation above the method definition. It also allows you to add custom rules to make the generation more intelligent.
Use this in conjunction with DocProject & Sandcastle, and you have a comprhensive code documentation system that has minimal impact on the productivity of the development team :)

I've come across some justifying leaving debug="true" in their asp.net web.config files for detail error message reasons. Here's why you shouldn't

Mobile Phone: XML Contacts Backup
"Useful for export, modify and re-import mass contacts files. XML Contacts Backup has nice interface very friendly and easy to use. It's always good to have your contacts backed up, why not in XML format for better accessibility and editing"