Over on gotdotnet there’s an article ASP.NET 2.0 Internet Security Reference Implementation detailing an internet facing ASP.NET 2.0 web site complete with code and guidance. If you’re about to develop an internet facing site then this is a good starting point to see security best practices in a full blown sample application.
admin
Power Toys for Visual Studio
I came across the Power Toys for Visual Studio site at Rob Caron’s blog
Power Toys for Visual Studio are small tools that provide aid to developer
pain-points or assist in diagnosing development-related issues. In addition to
providing support, the power toys are released as Microsoft Shared Source to
provide sample code to real-world solutions and allow for
collaborative-development.
It contains information about the various power toys under development, such as the Best Practice Analyzer for ASP.NET and the MSBuild Extras – Toolkit for .NET 1.1 “MSBee” and developer tools such as IronPython.
There’s an Announcements RSS feed you can subscribe to here to keep up date on what’s new.
Debugging XSLT with Visual Studio 2005
I probably missed the fact that this new feature existed in Visual Studio 2005 due to not doing much XSLT lately. I was re-reading an article by Nick Weinholt which made reference to this feature. Several third party tools have had this ability since VS2003, so it is a welcome addition to Visual Studio 2005’s feature set.
If you are learning XSLT, then this can be a valuable tool for stepping through transforms and getting a feel for how they work.
To show just how old this information is I’m linking to a MSDN article An Introduction to the XML Tools in Visual Studio 2005 from July 2004!
Simply open the XSLT file with VS2005, set a breakpoint(s) as you would with .NET code, go to XML->Debug XSLT and you will prompted for a XML input file. Browse to your XML document to be transformed and away you go.
MapReduce
I’ve been familiar with the concept of MapReduce for some time (a less generic form of MapReduce formed the basis of a paper I wrote circa 1988, ‘Sorting with near-linear speedup on tightly-coupled multi-processors”), although I’ve never used a functional programming language in anger. I’ve just finished reading an excellent research paper by Jeffrey Dean and Sanjay Ghemawat (both at Google) titled “Simplified Data Processing on Large Clusters”. MapReduce is a programming paradigm and an associated implementation for processing large datasets. The key point being that “Programs written in this functional style are automatically parallelized and executed on a large cluster of commodity machines.”
This is a very accessible paper regardless of your computing background. Well worth reading, if only to get a glimpse of how the Google distributed indexing engine performs its work.
Why do you Blog?
A few of my colleagues, have asked me if anyone reads my blog and why do I bother.
I have to admit it’s mostly for selfish reasons! It’s a great way of keeping track of topics that interest me or subjects I’ve researched, in a single location, and in the process perhaps help someone else. If you find something useful here please feel free to leave a comment or email me. I’ve recently signed up to Technorati and FeedBurner to try to track usage (if you had previously used my direct blogger feed in your aggregator, please swap over to feedburner).
Wise Words
Since I’m on the subject of great quotes, I came across this one some time ago. I think it contains advice that we should all take to heart:
Any society that would give up a little liberty to gain a little security will
deserve neither and lose both.
Have a guess who said this? I bet you’re thinking it was some modern radical? It was non-other than that great and diverse American, Benjamin Franklin (1706 – 1790).
Maybe we should display this on gigantic bill boards instead of promoting the ‘war’ on ‘terror’. He also said:
If you would not be forgotten, as soon as you are dead and rotten,
either write things worth reading, or do things worth the writing.
Erasmus
Certain quotes seem to resonate in the mind. One of my favorite is from a man who was born in the 15th century, but whom I feel would not be too out of place in the world as we know it today:
In the land of the blind, the one-eyed man is king.
[In regione caecorum rex est luscus]DesideriusErasmus, Adagia (III, IV, 96)
Dutch author, philosopher, & scholar (1466 – 1536)
Desiderius Erasmus was a spiritual man, but loathed the corruption inherent in the organised religion of the time. Erasmus stands as the supreme type of cultivated common sense applied to human affairs.
He is the author of a surprising number of well known quotes that have endured through 500 years of history:
Prevention is better than cure.
He who allows oppression shares the crime.
And rather surprisingly!:
Women, can’t live with them, can’t live without them.
Some Guidelines for Productive Teams when Dealing with Differential Pay Systems
- Make Sure the Promotion System is Unassailable: In companies where promotions are not available, merit pay systems tend to become contentious, because merit increases are the only way to earn more money. When promotions are available, employees tend to focus on promotions rather than the merit pay system. A promotion system should be founded upon a series of job grades, each with a salary range in line with industry standards and regional averages.
- De-emphasise the Merit Pay System: Studies have shown that, when information sharing and coordination are essential, organisations that reduce pay differences between the highest and lowest paid employees tend to perform better over time.
- Tie Profit Sharing to Economic Divers: Identifying a key economic driver and tying team profit sharing to it avoids suboptimisation by ensuring rewards are linked to improvements as a whole.
- Reward based on Span of Influence, Not Span of Control: Evaluating individual results rather than group results, creates competition rather than collaboration amongst team members. Profit sharing should reward large teams rather than individuals or small groups. This reward system fits well within an Agile environment, which takes the broad approach of involving everyone in the development process.
- Find Better Motivators than Money: Do not use money as a primary motivator. Invest in people by developing their skills, share information widely, emphasise Leadership rather than Management. Emphasise the intrinsic rewards of fun, growth, teamwork, challenge and accomplishment. Monetary rewards should be treated like explosives! Use them lightly and with caution.
(Taken from ‘Team Compensation’ by Mary Poppendieck, Aug 2004, reprinted in ‘The Best Software Writing I’, selected and introduced by Joel Spolsky)
String Formatting in C#
Noticed this String Formatting in c# compendium via Mitch Denny‘s blog. A nice reference to bookmark. Most of this information can be found in MSDN, it’s just that I have trouble finding it every time!
New FeedBurner Feed…
If you have already subscribed to this feed in an aggregator, could you redirect it to the new feedburner feed at the link on the left hand side. Thanks!