Monday, April 30, 2007

Microsoft Data Access Strategy

I found this must read blog post from Mike Pizzo about Microsoft'sData Access Strategy, read it here. There are two new concepts released with Orcas. LINQ (with a couple of different variants) and ADO.NET Entity Framework (EF) with Entity Data Model (EDM).

Microsoft wants to get the developers to start programming against a conceptual data model instead of against a logical data model as most do today. The whole EF concept is a pieces of a large future plan including reporting, integration and applications. The first pieces of this concept will be included in Orcas but the framework is just in the beginning. In Orcas we will get an EDM wizard but I think that the real breakthrough for this isn't until the EDM Designer and more is avalaible in Rosario.

The first release in Orcas will still be a bottom up version of the EDM. We must start with the database and then use the tools and framework to link the database with the model. To get the EF to be a huge success there must be tools for the developers to start working model first and this functionallity will be included in Rosario.

When using LINQ and when using EDM? You should use the ADO.NET Entity Framework when( from the article above):

  • The ability to define more flexible mapping to existing relational schema, for example:
    o Mapping a single class to multiple tables
    o Mapping to different types of inheritance
    o Directly Modeling Many to Many relationships
    o Mapping to an arbitrary query against the store
  • The ability to query relational stores other than the Microsoft SQL Server family of products.
  • The ability to share a model across Replication, Reporting Services, BI, Integration Services, etc.
  • A full textual query language
  • The ability to query a conceptual model without materializing results as objects

My interpretation of this is that if you 're using Data Table Gateways you should use LINQ if not use EDM, the name applies that to :).

The article continous with "Microsoft is defining a migration plan for customers that start with LINQ to SQL and require additional functionality, such as richer mapping capabilities or access to other stores, to migrate to the ADO.NET Entity Framework".

Orcas will be released in late 2007 and the EF is excluded from that release and will come as an add-in in early 2008. I'm really looking forward to see what Rosario brings to us. I hope that model first will be accepted like contract first is today.

Friday, April 27, 2007

Continous Integration tool

I found this tool that looks very interesting. It's called CI Factory and it is open source product for continous integration.

Packages currently bundled with the CI Factory installer:
  • Visual Source Safe
  • Subversion
  • Assembly and product versioning
  • PVCS Tracker
  • .NET Visual Studio 2003/2005 solution compilation
  • Unit Test execution with MbUnit
  • Code Coverage with CoverageEye
  • nDepend
  • Deployment artifact publication
  • Install Shield or VS deployment packages


Independent Packages :

  • Ant
  • VB6Compile
  • LinesOfCode
  • MSTest
  • NCover
  • BackUp
  • Simian
  • Analytics

Listen to what this is about when Jay Flowers is intervjued on Hensel Minuets here. You can get a fast starter with dnrTV here.

The CI Factory uses Visual Studio as a XML editor to edit the argument file for input to nAnt. CI Factory is a code generator to generate the build server code.

Check it out. I looks very interesning and I hope I got some time to check this out some more.

[Word of the day]: Crapplet

In NetLingo they say that a crapplet is a "A badly written or totally useless Java applet, as in, "I just wasted thirty minutes downloading that stinkin' crapplet." " I want to extend the meaning of the word crapplet to be "A badly written or totally useless applet or small program."

Thursday, April 26, 2007

Great webcast about Orcas

I found this good webcast that gives you a good overview for Orcas. It is "Conversation with Soma: Orcas Beta 1 and Beyond". Soma is the vice president of the developer division. He guides us of some of the new features of Orcas.

Orcas is build with 3 pillars (Value propositions)

  1. Best tool for the latest platforms: Vista, Longhorn server, Office, AJAX...
  2. Increase the developer productivity. LINQ support and multi targeting (you can build apps for .NET fwk 2.0, 3.0 and 3.5 with Orcas).
  3. Increase the team productivity. New and better Team Foundation Server.

Soma also talk about that the Orcas developer team started using Orcas TFS live for the project about one month before the beta 1 was released. He also talk about how Orcas supports the increasing application user experience demands.

He ends the webcast by talking a little about the main focus areas of Rosario:

  • Testing tools. Like test case management, code coverage tools and load test tools.
  • Requirement management. Did we do what we should. Some tool for managing requirements and see what requirements are implemented, not implemented, tested and so.
  • Some workflow tool throught the whole IT deparment. Product mangager - developer - operations.

Wednesday, April 25, 2007

[Word of the day]: The Build Breaker

With daily builds every developer is scared to break the build. Nobody wants to be the bad developer that can't deliver good code and be the one the whole project must wait for when he tries to fix the errors. The build breaker is the guy that makes the daily build fail. Many project has a stupid hat or something for the person that breaks the build or do anything else that stupid. It's even moore embarrising to be the build breaker when the project use CCTray or anything like that. Every project member knows that you broke the build directly, you will hear the screaming and whisteling right away.

BizTalk Services CTP

Today Microsoft released a CTP of BizTalk Services. BizTalk Services including four techologies, BizTalk Identity Services, BizTalk Connectivity Services, BizTalk ServiceBus Services and BizTalk Workflow Services.

  • Identity Services provides authentication and helps with access control requirements using Card-space.
  • Connectivity Services - "technologies to help developers securely expose a service from behind a firewall or NAT". vices facilitate traversal and bridging of physical networks, enabling high-fidelity interconnection between cooperating systems for cross-organizational messaging behind firewalls.
  • An Internet Service Bus is a technology for creating loosely coupled applications with eventing.
  • "Workflow Services let developers design applications graphically by drawing flowcharts, and they provide a hosted instance of Windows Workflow Foundation".

Read this article. Download the CTP here. Blogs here and here.

Tuesday, April 24, 2007

Really cool site

If you want to see whats happening in the world... where do you go? Check in this site. Here you got all major disaster events that happened in the last 24 hours in the world. How cool is this? In the last 24 hours there have been 22 earthquakes and Kyrgyzstan had a landslide and there was a bunch other disasters as well.

Monday, April 23, 2007

You're not gonna need it....

I wonder how much functionallity we don't really need that we still implement in the applications? Today at work I was talking to Keith the architect I'm wirking with now with the system design for a new application. We talked about just writing the functionallity we need. We want the design to be as simple as possible. When I came home I read about YAGNI, You Aren't Gonna Need It, from Extreme Programming and thought that this was exactly what we talked about.

YAGNI is about that even if you are absolutly, totally sure that you'll need a feature later, you shouldn't implement it now. If you implement the functionallity now there are two possible scenarios 1, you don't need the functionallity after all 2, the functioanllity that you actually need is different from that you thought.

If you live YAGNI you will save time by don't writing code you don't need and your code will be better because it don't contains not-used-code.

Of course you should write flexible systems it only means that we can't predict the future so don't desing for the things we don't know. Don't overdesign and consider things you can't know and don't design for something based on what you think you might need later on.

I found this quote "Always implement things when you actually need them, never when you just foresee that you need them" here.

RobotReplay

This is cool. You add a snippet with java code to your web page and you can watch your visitors behavior, mouse clicks, mouse movements and how they navigate on your site. Visit http://www.robotreplay.com/ and register and then watch. Great for see the usability for your site. Watch the videos on the site. It's cool.

Sunday, April 22, 2007

I dare you to not cry

...when you watch these very strong photos. I found this photography serie of Renée C. Byer the 2007 Pulitzer Prize winner for feature photography.

From the Pulitzer site "Awarded to Renée C. Byer of The Sacramento Bee for her intimate portrayal of a single mother and her young son as he loses his battle with cancer."

You must read the text under the photos. It takes the major problems with late subways, rainy weather and slow internet connection vanish.

Orcas Beta 1 for download

After a couple of CTP, Orcas Beta 1 is realeased for download. You can download Orcas as a ISO image, VPC image or as a Visual Studio Express Edition. More information and downloads here.

I downloaded the March CTP as a VPC and it worked really great. I can recommend the VPC image download if you got a lot of RAM.

Thursday, April 19, 2007

Great podcast

I found a whole bunch of podcasts and presentations from Carson Workshop. I just listen to one yet but that one was really great. If you only gonna listen to one podcast this week, here you got it.... It is Carl Sjogreen the program manager for Google calender that speeks about "How We Built Google Calendar". This is a non technical presentation it's just about how they did it and some insights from the process.

Some words from the presentation:
  • "Talking to real customers"
  • "The importance of the vision"
  • "Figure out what you absolutely have to get right and relentlessly refine it"
  • "Easy is the Most Important Feature"
  • "Build products for people who don’t want to use them"

I think this quote is to remember:
“Simple things should be simple, and complex things should be possible”
Alan Kay, Disney Fellow and VP of R&D, The Walt Disney Company

Find the podcast and the presentation here. I have only listen to this one yet but I think that there are many more podcasts there worth listening to.

[Fun]: Delivering with force

"Delivering with force"

Validation Block in Enterprise Library 3.0

My first validtion block impression.

Validation Block is really interesting. This idea (in various implementations) exists in some frameworks today, but I think that most projects implements there own validation pattern. The Validation Block gives you a good pattern for the validation or actually several patterns. You can validate in code (by using attributes) or configurations file. The difference between them are that using configuration you can change the validation rules after deployment by just changing the configuration file and in code you get a better encapsulation of the rules but you must re compile the code to do a rule change. I think that if you use configuration to specify the rules you can get problems getting an overview of all validations if you got a large system. The configuration file will be large and kind of messy (the buildin tool for maintaining configuration files will help you but not enough I think).

I think this Block will be useful for most validations in an average application. Try to use Validation Block for all validation and if you must you can use another pattern for the exceptions, when the Validation Block couldn’t help you. You can write you own validator classes and then use them as the build in validators.

I haven’t been able to write more complex validation rules yet I just spend some hours writing a test app to get a first opinion of this. First of all I think you should select one pattern for the validations. Don’t mix the specification of the validation rules in both configuration file and in code. If you mix this two you will get a cheezy mix of validation logic that will be hard to maintain.

Positive

  • This is a good pattern for validations.
  • Good to separate the validation code with business logic.
  • Easy to use.

Negative

  • It is more difficult to debug and track errors when using the Validation Block. I already got some problems when I didn’t get one rule to work. After a while it started to work without any changes made. Strange.

Wednesday, April 18, 2007

Visual Studio code names

There are so many different Visual Studio names out there. People talking about VS 2005, Orcas, Rosario, Whidbey. Now I found an article with a list of all the code names. You could read about the status and more in the article.

Here's a list of Microsoft's Visual Studio code names:

  • Whidbey Visual Studio 2005; named after an island in Puget Sound
  • Burton Visual Studio 2005 Team System; named after a snowboard manufacturer
  • Orcas The next major release of Visual Studio; named after one of the San Juan Islands in the Pacific Northwest
  • Rosario The next revision of VSTS; named after a resort on Orcas Island
  • Bodie Team Foundation Server SDK (software development kit); named after a lighthouse on Bodie Island, near Nags Head, N.C.
  • Currituck Team Foundation Work Item Tracking; named after a lighthouse on Currituck Beach in Corolla, N.C.
  • Hatteras Team Foundation Version Control; named after the Cape Hatteras lighthouse on Hatteras Island, N.C.
  • Ocracoke Team System Web & Load Testing; named after Ocracoke Island Light on Ocracoke Island, N.C.

Tuesday, April 17, 2007

Tips of good sites

I love statistics, I could sit for hours just looking at graphs and numbers. Strange I know but.... I found two really cool places. First is Swivel (watch the quick-tour here). You can upload your data and push it and turn it into graphs and sheets. It's free to use if you share otherwise you must pay. Here you can see how many hours worked in different countries and the unemployment in the development countries. How fun is that!!

Another great site is Gapminder. Google and the swedish Gapminder has a co-operation which shows statistics in a whole new way. Try it here. You can see how all countries developed from 1975 to 2006. See what happens with the world. China has a amazing development. Sweden in top of the income per capita. What AIDS are doing to southern africa. The deveopment in Asia. The non development in africa. In 1992 Rwanda has an life expectance of 24 years. I Luxemburg the income per capita is 64.299$. You got it. Very good web site with a completly new way of presenting numbers.

Monday, April 16, 2007

[Fun]: Bowling trick shot

I'm gonna learn one of the three bowling trick shot the next time I bowl.

Who needs an architect?

I just read the briliant article that Martin Fowler wrote "Who Needs an Architect". So do we need architects? Maybe thats true.... I think that depends on the role the architects plays in the project.

Fowler talks about the two different spieces of architects 1, Architectus Reloadus "the person who makes all the important decisions" and 2, Architectus Oryzus is the coach and the mentor for the developer team. He guides the team "to raise their level so that they can take on more complex issues".

This is interesting. Most architects are classic Reloadus. With a Reloadus in the project two scenarios could happen. 1, The whole developer team stops taking initiativs and waits for the architect to make all decsions 2, The developer team gets mad and tries to avoid the Reloadus. Both the scenarios are devistating for the results and the project.

In some situations the Reloadus are needed but most projects need the Oryzus to make the team become better. Fowler has an explanation of why Reloadus function that way "The architect does this because a single mind is needed to ensure a system’s conceptual integrity, and perhaps because the architect doesn’t think that the team members are sufficiently skilled to make those decisions. Often, such decisions must be made early on so that everyone else has a plan to follow".

I'm a huge fan of the Discovery Channel. Last saturday I saw two shows about two hot rod builder. One thing thats really hit me was the type of leadership the two hot rod builder had and what different relationship they had with there car builder teams. One of them sat in his office and make discissions he visit his team sometimes to see the progress and to say that the project was in a hurry. The team members manage to build the hot rod with an ok result. The team was pissed of the car and they didn't like the project. The other hot rod builder was building the hot rod as much as the other team members. He sometimes went away and came back with a sketch or a idea of what the they will do. One of the team members said something like "If he had the time he would build the whole car him self, because he think building hot rods are the best...". This team build a hot rod that won a lot of prices and shows. Of course there are many factors that affect the result and the team but the two styles of leadership was so obvious here. One Reloadus and one Oryzus.

Fowler ends the article with "One of the differences between building architecture and software architecture is that a lot of decisions about a building are hard to change. It is hard to go back and change your basement, though it is possible. There is no theoretical reason that anything is hard to change about software. If you pick any one aspect of software then you can make it easy to change, but we don’t know how to make everything easy to change. Making something easy to change makes the overall system a little more complex, and making everything easy to change makes the entire system very complex. Complexity is what makes software hard to change."

I have seen many software system made complex without gaining the positive of the complexity the ability to change.

I see the light

WPF/E (Windows Presentation Foundation Everywhere) becomes Microsoft Silverlight. Read and see more here.

Friday, April 13, 2007

Peek of the new EDM Designers in Orcas and beyond

I found theses demos of future functionallity in Visual Studio. In Orcas this EDM Wizard is included. Check it out here. This will save you a lot of code if your domain model maps the logical schema well. Most application still must use mappers so for them the help is kind of limited. But this is a natural step if you see what EDM help is coming in the Visual Studio version after Orcas. Here you got the Entity Data Model (EDM) Designer. Check it out here. This one is really cool. Now we're talking. Now you can create your domain models in a visual designer tool and you don't have to think about the mapping stuff. Really looking forward to seeing more of this designer.

New features in ent lib 3.0

Here comes a little information about the new application blocks in enterprisce library 3.0. Watch a webcast here (MSDN Webcast: New Capabilities in Enterprise Library 3.0 (Level 300)).

Validation Block
The validation block has integration with WinForms, ASP.NET and WCF. The developer team wanted to get integration with WPF as well but there was no time to finish that one. I hope it will come a new version with that functionallity soon.

This block meens you can validate the data with the same validation both in the UI and in the service boundaries. Really cool.

For the UI you can associate a control with the validation rule for a specific type or member. In WCF the validation rules are defined within the contracts (data or service).

Policy Injection Application Block
The purpose of this block is to help up productivity in the projects by seperating the cross-cuttings concerns like security, validation, performance monitoring, caching, authorization, logging) from business logic.

For example if you want to add logging to all objects in a layer. Use the logging handler that is included in the block. Then add a rule like "All objects with this namespace". When you create the object you will use a API instead of the new operator. The object is now wrapped in an interception layer. The interception will look in the configuration file and see that "oh... this object is in the selected layer" and calls the handler for the logging.

The policy could be modified after deployment. If you for example will get some performance truble you can change the policy.

Handlers included in the enterprise library 3.0
  • Validation Handler
  • Logging Handler
  • Authorization Handler
  • Exception Handling Handler
  • Caching Handler. If the method has recently been called, return the cached value.
  • Performance Counter Handler. You can see for example, number of times a method is called, average call duration, number of exceptions.

Example Of New features in ent lib 3.0
Data Access Block

  • Support for SQL Server 2005 Compact Edition-
  • TransactionScope doesn't understand that that multiple updates is to the same database. The transaction escalated to become a DTC transaction and the transaction become much more expensive then it should be. The block now recognise if the TransactionScope is active and then prevents the escalation to become a DTC transaction.
  • Batch updates now are avalible in the block not only in .NET.

Logging BLock

  • Rolling flat file. Creates a new file based on the file size or date and time.

Visual Studio Configuration Tool

  • A new tool in Visual Studio in which you can edit the config files within the IDE.

Automation Block Factory

  • A new software factory for building your own application blocks and you can use this factory if you want to create extensions to existing application blocks.

This new version of application blocks is 100% API compatible with the 2.0 application block. You can have multiple versions of Enterprise Libary installed on the same machine but you cannot use the toghether in the same application.

[Friday fun]: How to Give a Great Man-To-Man Hug

For all men out there don't know how to Give a Great Man-To-Man Hug. See and learn....

Thursday, April 12, 2007

Word of the day

Rapid feedback loop. One of the most important success factor for a project is to have a rapid feedback loop. It's important to catch errors (all kind of errors; requirements, architetural, bugs...) fast and it's important to fast correction of these.

Wednesday, April 11, 2007

J# retirement

The J# language and the JLCA tool will be retired in Orcas. I heard that only about 2 percent used the J# language today. The existing J# system will get support through to 2015.

Tuesday, April 10, 2007

New releases

In the last days there have been a couple of new Microsoft releases.
  • Enterprise Library 3.0. You can use it for .NET 2.0 and .NET 3.0. Read more here. The entlib 3.0 includes many new features like Validation Application Block, Policy Injection Application Block, Application Block Software Factory and more.
  • Version 3 of Service Factory. Read more here and download it here.
  • Expression Web avalible for MSDN Subscribers. Read more here.

Thursday, April 5, 2007

How to manage feeds over multiple computers

I've got two computers used for different purpose. I want to share the feeds between both the computers so I can see what posts I've read on both computers. I found out that the feeds was saved in folder "c:\Documents and Settings\%username%\Local Settings\Application Data\Microsoft\Feeds". I want to take this folder and put it on a file share both computers could access and then change the registry (like when you change the favourites path) so both computers should read the same feed share.

I searched the registry and I searched the internet for a solution. I got this e-mail from the MS team RSS blog.
"Unfortunately, there is no way to move the location of the feed store.

In addition, the store is not designed to be shared between computers in the manner you describe. The only way to use it on multiple computers is to synchronize between them."

I hope that this would be changed in the future. I would be perfect if I could share one feed structure for multiple computers or I could have an USB memory with my feeds so I could share them for work and home.

I think you could use RoboCopy but I haven't tested that but I have tested to use SyncToy to synchronize the feeds between the two computers. Download SyncToy 1.4 here. Then first back up your feed folder, specify both folders in SyncToy and Synchronize. It's easy and it worked for me. Now I don't have to read the post twice and if I add a feed in one computer... Not perfect but good enought.

Wednesday, April 4, 2007

WPF demo - Must see!

Found this cool video demo Thirteen23 demo with Scoble at SXSW. You must see it. Thirteen23 show us a couple of apps they done with WPF. On their site you can see more stuff.

Cool Maps

I'm a sucker for maps. I've spent maaany hours in front of google earth. I've placemarks on all places I've visited the last couple of years. I studied googlesightseeing. Played with the 3d views. I've explored the world, inch by inch. The maps are really detailed even outside north america, except for Africa. Africa are like one country.

For a couple of weeks I found Live Maps from Microsoft. It was really cool. Zoom in Manhattan and try out birds view and the 3d view. Unfortanly the maps are not so detailed as google outside US.

Yesterday Microsoft released a new version of Live Maps. This version has really cool features, like real time traffic information (US only), ratings and reviews of business listings, area calculations and "a plugin for Microsoft Outlook that brings maps, travel planning meeting enhancements and a bunch more location based features to Outlook". Check this out.

Tuesday, April 3, 2007

Web Service Softeware Factory Resources

A collection of resources for Web Service Software Factory

I'm doing some labs on Service Factory right now and I will post some conclusions here when I know more and when I got some hands-on experience.

Monday, April 2, 2007

Who Needs an Architect?

I just read the briliant article that Martin Fowler wrote "Who Needs an Architect". So do we need architects? Maybe thats true.... I think that depends on the role the architects plays in the project.

Fowler talks about the two different spieces of architects 1, Architectus Reloadus "the person who makes all the important decisions" and 2, Architectus Oryzus is the coach and the mentor for the developer team. He guides the team "to raise their level so that they can take on more complex issues".

This is interesting. Most architects are classic Reloadus. With a Reloadus in the project two scenarios could happen. 1, The whole developer team stops taking initiativs and waits for the architect to make all decsions 2, The developer team gets mad and tries to avoid the Reloadus. Both the scenarios are devistating for the results and the project.

In some situations teh Reloadus are needed but most projects need the Oryzus to make the team become better. Fowler has an explanation of why Reloadus function that way "The architect does this because a single mind is needed to ensure a system’s conceptual
integrity, and perhaps because the architect doesn’t think that the team members are sufficiently skilled to make those decisions. Often, such decisions must be made early on so that everyone else has a plan to follow".

I'm a huge fan of the Discovery Channel. Last saturday I saw two shows about two hot rod builder. One thing thats really hit me was the type of leadership the two hot rod builder had and what different relationship they had with there car builder teams. One of them sat in his office and make discissions he visit his team sometimes to see the progress and to say that the project was in a hurry. The team members manage to build the hot rod with an ok result. The team was pissed of the car and they didn't like the project. The other hot rod builder was building the hot rod as much as the other team members. He sometimes went away and came back with a sketch or a idea of what the they will do. One of the team members said something like "If he had the time he would build the whole car him self, because he think building hot rods are the best...". This team build a hot rod that won a lot of prices and shows. Of course there are many factors that affect the result and the team but the two styles of leadership was so obvious here. One Reloadus and one Oryzus.

Fowler ends the article with "One of the differences between building architecture and software architecture is that a lot of decisions about a building are hard to change. It is hard to go back and change your basement, though it is possible. There is no theoretical reason that anything is hard to change about software. If you pick any one aspect of software then you can make it easy to change, but we don’t know how to make everything easy to change. Making something easy to change makes the overall system a little more complex, and making everything easy to change makes the entire system very complex. Complexity is what makes software hard to change."

I have seen many software system made complex without gaining the positive of the complexity the ability to change.