Friday, December 5, 2008
Daily Links - 05/12/2007
PDC Videos
Another punt for SVN Monitor
Deploying ClickOnce applications automated using FinalBuilder
Why you Should Get on the Twitter
Using Twitter as a marketing tool
Sandock for Silverlight
Interesting window docking tool for silverlight. Available as a free Beta atm.
Silverlight + Google Gears = Awesome! at least in Firefox
Silverlight Validator & Input Toolkit
WCF and Multiple IIS Site Bindings
Binding to Enums in Silverlight 2
rename the .doc extension to .zip after download (also check out the linked article for further examples)
..and to make getting a list of enum values easier...
... and because Enum.GetValues is not available in Silverlight.
Waegis
Anti-spam service which has just become free
UMPC = Netbook
Monday, November 24, 2008
Daily Links 24/11/2008
"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
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
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
"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
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:
...and here is how the svcUtil generates the proxy on the client in order to call the service methods:
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:
- Add a new class file on the Silverlight client
- 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.
- Define a new interface - using the example, mine would be:
- Extend the existing interface if necessary (in the example interface derives from FooBarService interface.)
- Include the public "[XYZ]Asynch" methods that you would like to mock into the interface as well as the return event definitions.
- Apply the interface to the service implementation class - luckily the class is declared as partial in the proxy, so this is quite easy:
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:
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
Tuesday, October 21, 2008
Daily Links 21/10/2008
Stealth Paging : DataGrid
ComboBox in DataGrid
Building Business Application with Silverlight 2 (Beta 2)
Desktop Applications with Silverlight
Defining dynamic DataGridColumnTemplate columns in a datagrid
28 Free File Storage Hosting Websites
T4 (Text Template Transformation Toolkit) Code Generation - Best Kept Visual Studio Secret
Create Portable Applications With Ease
"developers can create a portable, self-contained application that relies on the virtual registry and file system to run on the machine"
How To Localize Your Application Using String Tables
Tuesday, October 14, 2008
Daily Links 14/10/2008
Silverlight is finally RTW!
Silverlight 2.0: A Double Click Manager
Silverlight doesn't inherently support the double-click event on it's controls - this is a nice work-around
Announcing the Test Driven Development Productivity Plugin for Resharper
Karvonite - Agile Persistence Framework
"non-invasive to your code and requires no interfaces or base classes for saving objects" - sounds promising
R# productivity & quality plugins
Agent Smith & Agent Johnson
Object Oriented Architecture As It Should Have Been - Agile Architecture
.NET 3.5. SP1 best practices - When to use the ASP.NET MVC Framework
Wednesday, October 8, 2008
Daily Links 08/10/2008
Common Service Locator Library - IServiceLocator Interface Abstracting IoC Containers
Faults and Exceptions when using Web Services in Silverlight 2
Dave's Glossy Controls for Silverlight 2 released
"set of easily customisable control templates"
XAML Power Toys 3.1.0.2 Has Silverlight 2 Support!
Free property grid control for WinForms Development
ala property grid in visual studio
An initialization pattern to avoid problems calling virtual method in constructor
Installing VisaulSVN Subversion
A few thoughts on the role of software architects
Master Complex Builds with MSBuild
MSBuild Extension Pack
"...provides a collection of over 170 MSBuild tasks designed for the .net 3.5 Framework"
Mono 2.0 is out!
Write .NET code for OS other than Windows
Friday, October 3, 2008
Daily Links 03/10/2008
Faults and Exceptions when using Web Services in Silverlight 2
Silverlight Page Turner
including source code
Overview of CSLA .NET 3.6 for Windows and Silverlight
"CSLA .NET version 3.6 is a framework for creating business applications using object-oriented design concepts, in a distributed computing environment."
Silverlight multi-file upload controls and patterns
What's new in Silverlight 2 RC0
XAML Power Toys 3.0.0 Released - Code Name: Refactored
Silverlight support round the corner :)
Adding social bookmarking links to blogger
Development Tools I Use & Recommend
Friday, September 26, 2008
Daily Links 26/09/2008
Microsoft Silverlight unit test framework now on MSDN Code Gallery
First Reporting tool for Silverlight
Drag and Drop controls at runtime using Silverlight 2
Closable TabItem
enable closing of tabitems ala browser tabs
DataBinding in silverlight
includes validation & Value conversion
IsolatedStorage as a Silverlight object cache
StyleCop Plugin for Resharper
Mapping strings to Enums and Enums to Strings
XAML Power Toys 2.0.8 Released New Features
Patterns in Practice
Informative article on the Open Closed Principle. Found it useful in my current client implementation of MVC / MVP and how that relates to the Application Controller Pattern.
SharpZipLib Versus 7-Zip for Large File Sets
Customizing ListView in WPF
WPF Transitions library
Add animated transitions to your WPF controls with ease
Monday, September 15, 2008
Daily Links 15/09/2008
SilverGPS - Building a GPS application using Windows Mobile and Silverlight technologies
Creating a reusable MessageBox control in silverlight
Well Performing Silverlight Application with XAML On Demand
Silverlight 2 Beta 2: Doing Data Part III
Combining the DataContractSerializer & the SharpZipLib to serialize compressed items to isolated storage in silverlight
Babel Obfuscator
"an obfuscator for .NET Framework"
Jimmy Bogard on Passion
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:
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:
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.
Thursday, September 4, 2008
Daily Links 04/09/2008
IPhone UI with Silverlight 2 beta 2
XAML Power Toys
Generate your XAML UI - Silverlight support to be released with the RTW
Patterns for Flexible WCF Services
"presents patterns that allow you to define descriptive, maintainable, yet extensible contracts specifically with Microsoft’s WCF technology."
Batching SqlCommand Queries
Silverlight Spy updated
Including code style analysis in your MSBuild process using MS StyleCop
List of Countries, Cities and Languages
Friday, August 29, 2008
Daily Links 29/08/2008
"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
"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
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 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
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
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:
... and I wanted something like:
... and here's the end result: (applied to a base object which all other INotifyPropertyChanged objects inherit from)
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:
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
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
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:
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"
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).
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.
Daily Links 29/07/2008
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
...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 "
Monday, July 21, 2008
Daily Links 21/07/2008
Domain Centric Validation with the Notification Pattern
Assigning Responsibilities in a Model View Presenter Architecture
Project management with Visual SVN Server and Trac
Silverlight 2 roadmap questions
The C# 4.0 team talks about the upcoming features of C# 4.0 (Channel 9 video link)
C# 4.0: Meet the Design Team
Concurrency, Dynamic language features etc.
Guide To Effective Test Driven Development
Tips for effective TDD
Some advice for getting started with TDD
Switching browsers for ASP.NET debugging
Vidyano
Dev tool to automate creation of WPF applications - currently in CTP
The 8 ball problem
Fun logic problem
Tuesday, July 15, 2008
Daily Links 15/07/2008
"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
"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
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
"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
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
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
* 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
Wednesday, June 18, 2008
Daily Links 18/06/2008
Free open-source charting controls for silverlight
Free Datagrid (with source) for Silverlight from DevExpress
Keep and eye on this page for release details
What a developer needs from their manager
Scrum in 90 minutes - the presentation
Silverlight 2 Beta 2 basic ClientAccessPolicy.xml file
Silverlight Cream
Handy Collection of silverlight articles (cont. updated)
Silverlight Articles on .NET Slackers
latest mostly to do with silverlight animation
Prefix-casting versus as-casting in C#
...was wondering about that :)
RefCard to the 23 original GoF Design Patterns
requires dzone registration
Keep your .config clean with external config files
Need to convert video?
Check out these links
Killer Tools to Get The Most Out of Your USB Thumb Drive
Lies we tell kids
Tuesday, June 10, 2008
Daily Links 10/06/2008
$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"
Monday, June 9, 2008
Daily Links 09/06/2008
Planning poker
A tool that facilitates the planning stage of agile development
Scrum in 5 minutes
TDD Tips: Test Naming Conventions & Guidelines
Agile: Tools vs Books
some handy links in the comments to books on agile
Manage your database migrations (multiple DB support) from .NET code
Other .NET DB migration tools to consider
Velocity: Microsoft's Distributed In-Memory Cache
Still in early stage if development - touted to challenge in-memory applications like memcached
SWF2XAML
Expression Blend 2.5 June Preview
What's changed in Silverlight 2 Beta 2
I was disappointed to see that they didn't solve the UserControl inheritance issue - here is a work-around (although you can't see the UI in the preview designer, so it doesn't help that much)
Silverlight 2 Beta 2 download links
10 tips for working from home
The .NET Framework 3.5 Commonly Used Types and Namespaces poster
Wednesday, June 4, 2008
Daily Links 04/06/2008
Why Enterprise Architecture is a Joke
Open source C#.NET applications
Agile adoption: Why isn't this stuff working?
Is Automated Software Testing Enough?
Propagating the ActivityId to a WCF service
On founding a software company - Rules, regulations and red-tape
Silverlight support for fullscreen apps
Some Great Free Winforms Controls - Krypton
10 Object Orientated Principles
A New Kind of Tiered Architecture
Castle ActiveRecord
ORM framework built on top of NHibernate. Simplifies persistence syntax :), but decorates objects with persistence attributes :|
All you wanted to know about ActiveRecord Part 1 & Part 2
Castle's ActiveRecord: Not for the Domain Purist in you...