Monday, February 16, 2009

Free DevExpress controls and IDE productive Tools

DevExpress is a software development company producing .NET components, controls and IDE productivity tools. They also offer some of their commercial products for free!! The list below contains some of their FREE products that I am aware of. Just register to get your free license:

.NET Controls:
IDE Productivity Tools:

Comparing Mock frameworks for .NET

Andrew Kazyrevich posted a series of articles comparing the most popular Mock frameworks for .NET development: NMock2, Rhino Mocks, Moq, and Typemock Isolator.

The complete series of articles can be found at:
He also created an open source project that "provides a unified set of tests written against Moq, NMock2, Rhino Mocks and Typemock Isolator, so that you can easily compare the frameworks and make an informed decision when picking one up".

http://code.google.com/p/mocking-frameworks-compare/


Tuesday, February 10, 2009

Microsoft Certification for Developers

Today I was talking to my buddies from work, Ryan and Michael, about Microsoft certification. We discussed about the MCPD and the SharePoint certifications and I decided to post some information here.

MCPD Enterprise Application Developer 3.5

The MCPD Enterprise Application Developer 3.5 certification is the current top developer certification and it requires you to pass in 6 exams. The following table contains all the exams and links to the official training books. Some of books have not been published yet, but they are expected sometime during the first quarter of 2009.


70-536 TS: Microsoft .NET Framework 2.0 - Application Development Foundation

70-562 TS: Microsoft .NET Framework 3.5, ASP.NET Application Development

70-505 TS: Microsoft .NET Framework 3.5, Windows Forms Application Development
  • Official Training Book (CAD52.91). Not published, expected on Feb 25 2009. Since there is not so much difference between the .NET 3.5 and .NET 2.0 versions, you could use this book (I used this book for the beta exam).

70-561 TS: Microsoft .NET Framework 3.5, ADO.NET Application Development

70-503 TS: Microsoft .NET Framework 3.5 – Windows Communication Foundation Application Development

70-565 Pro: Designing and Developing Enterprise Applications Using the Microsoft .NET Framework 3.5
  • No current Official Training Book. However, there is the .NET 2.0 version here (CAD48.50).


The exams don't have to be completed in a specific order, but I recommend starting with the 70-536 exam first for two reasons:
  • The 70-536 exam contains the foundations of .NET framework (types, collections, threading, app domains, configuration, serialization, encryption, code access security, reflection, interoperability, globalization, and drawing). This will provide a very good foundation before jumping into the specific types of applications.
  • The 70-536 exam is a prerequisite for all the developer MCTS certifications. To acquire your first .NET MCTS certification, you need to pass in two exams : the 70-536 and the desired MCTS exam (WCF, Windows Form, ASP.NET, ADO.NET, WF, WPF). By taking 70-536 first, you will acquire a new MCTS certification for every subsequent MCTS exam you pass.
Another recommendation is to take the 70-565 exam at last. This is the professional exam that will cover designing .NET enterprise applications and choosing the proper technologies. It is better to finish all the specific applications first before taking this one, for obvious reasons.
For the other exams, you should choose first a exam that you are most familiar with. This will make your life easier, and you will progressively advance to other exams of unknown areas.

Some Tips when preparing for the exams above:
  • One of the most important things is to practice all the material. You should try all the code samples you find in the study guide, make modifications, improve the code, apply real scenarios and examples from your day job, etc. Also, try using different methods overloads, different constructors, etc. Sometimes the training book shows how to use some set of classes, and then on the exam you see them used with different methods and constructors and do not know if it is right or wrong. So, go beyond the examples of the book.
  • Check it out the material in the MSDN online. If the book is showing you how to use the a certain class, check it out the documentation at MSDN to see this class methods, properties and the usage examples on MSDN.
  • Although the books are great resources, read all the topics of the preparation guides to make sure you know all of them. Supplement book information with MSDN library information.
  • Make sure to get the book correction from Microsoft Support. When I was studying with the .NET 2.0 training books, I found lots of minor mistakes in the books. To get the book correction, just go to the Microsoft Help and Support and search for the book ISBN. For more information, see here.
  • Usually these books come with practice tests from MeasureUp. It is recommended to practice these tests to get used to the format of the exam, type of questions, etc.
  • Take advantage of the Microsoft Second Shot. You get an exam voucher to be used when registering to your exam. If you fail the exam, you can register for a free retake exam using this voucher. It is a good investment just in case something bad happen during your first attempt.

Additional Resources:
  • Prometric: this is the exam provider where you can schedule a Microsoft certification exam. You will be able to choose the test site where you can take your exam. The .NET 3.5 exams usually cost USD 125. Do not forget to use a exam voucher from Microsoft Second Shot when registering, just in case you need to retake the exam.
  • Gerry O'Brien's Blog: This is the official blog about Microsoft certifications for developer and SQL Server. You will find information about upcoming exams, new certifications, beta exams, etc. Also, pay attention to announcements for Visual Studio 2010 exams, that should bring a new MCPD .NET 4.0. Gerry and his team are still planning the new certifications, but as you can see from his comments, there will be upgrade exams from MCPD 3.5 to 4.0 (2 upgrade exams, I think), see his comments on this post.
  • Beta Exams Announcements: This blog contains announcements about beta exams. What is a beta exam? Well, it works like a beta software. Before opening a new exam for the general public, Microsoft first releases it as beta exam (71-### instead of 70-###) to evaluate the exam, get feedback and error reports from test takers. You can register for these beta exams for free (normal cost is 125 USD), and if you pass on the beta exam, the exam credit will be added to your transcript and you will not need to take the exam in its released form. I took 4 beta exams of .NET 3.5 and passed on them without paying anything!! When taking beta exams, make sure to leave some feedback because they are expecting our input to improve the exam experience.

SharePoint Certification

I started working with SharePoint (WSS 3.0 and MOSS 2007) recently and I am planning to get certified on it as well. For developers, there are two SharePoint MCTS:


70-541 TS: Microsoft Windows SharePoint Services 3.0 – Application Development
  • No official training book, but there is the Microsoft Press book (CAD34.64).
  • There are no practice tests from MeasureUp for this exam.
70-542 TS: Microsoft Office SharePoint Server 2007 – Application Development
  • No official training book, but there is the Microsoft Press book (CAD31.49).
  • You might consider buying the practice tests from MeasureUp.

Monday, January 26, 2009

MCPD Certification and Next

I finally got my MCPD certification by upgrading my MCSD certification!! My last exam was 70-551 which took about 3 1/2 hours to complete. This upgrade exam includes content from three regular exams: 70-536 (.NET Foundation), 70-526 (Windows Apps) and 70-528 (Web Apps). So, the scope of the upgrade exam is too big, and it was probably one of the hardest I ever had to prepare (3 books).

In the 70-551 exam, the Windows Application part had many questions about ClickOnce technology, and I regret not spending more time when studying it. The Web Applications part also had a topic which I should have spent more time studying, the Web Part controls. But, at the end, I was able to pass on it. Note that in upgrade exams like this, you need to achieve at least 700 points in each part, and the final exam score is the minimum score on each part, not the average. So, it means if you do very well in two parts, but get only 690 on the third part, you will fail the whole upgrade exam, and you will have to take all the three parts again when retaking the exam.

I started my certification path back in 2005, but only completed two exams towards MCAD. After passing on these two exams, Microsoft announced the new certifications for Visual Studio 2005. At the same time, I got a new job in California and did not have enough time to dedicate to .NET certifications. Only last year I decided to continue my certification path. I thought about starting from the scratch, but decided to follow the upgrade path. The results can be seen on the picture with the pile of books I had to study. The XBox 360 just happen to be on my desk, it is not related with .NET certification. It actually represents a threat to my whole certification path!!

Some developers think that certifications are useless. I agree that certification is not everything, it shows that you pass on the exam, and there are many other things to consider such as your work experience. On the other hand, I see these certifications as an structured way to learn. The goal is not to pass, but it is to study and learn the content of the exam. They expose you to a wide view of the .NET framework, rather than a specific view. You will get the detailed knowledge by working on a project on a daily basis, but this wide view is important to expose you to different areas that you might not touch when working on your projects. So, I am still continuing my certification path and I highly recommend my fellow developers to work on it.

Well, what is next now? I got the MCPD EAD (Enterprise Application Developer) for the VS 2005 (.NET 2.0), and now I want to upgrade it to MCPD EAD .NET 3.5. There are two upgrade exams: 70-568 and 70-569. These exams are not available yet, and they should be available soon. At the same time, I participated on the Beta exams of the .NET 3.5 certifications. Note that beta exams are free, but they expect you to know the area and provide feedback about it (see beta exams announcement here). I took 3 beta exams of the new .NET 3.5 track (70-561, 70-505, and 70-565), and received so far the result of only one (which I passed!!). The other ones, I do not know the results yet. Beta exam results are only sent after 8 weeks (or more!!) after the end of the beta period. If I end up passing on the other ones, then I will just to two regular exams (70-503 and 70-562), instead of two upgrade exams. The following diagram shows some upgrade paths to MCPD EAD .NET 3.5:


Thursday, January 22, 2009

Multiple output files from a T4 template

When using T4 templates for code generation, I always needed to generate multiple files from the same template. Unfortunately, Visual Studio does not support this, and I was using a solution based on this MSDN forum discussion.

Damien Guard just posted a nice solution for this problem. See his post at:
I am looking forward to update my current t4 templates to use this new solution.

Tuesday, January 13, 2009

Guidance Automation Toolkit (GAT) Documentation

One of the hardest things to work on the Repository Factory is the lack of documentation about creating software factories using Guidance Automation Toolkit (GAT). One of the Repository Factory users asked about the documentation available (see here). At the time we inherited this code from the p&p team, there was no documentation about it and we had to learn from the code. Since Repository Factory is just a GAT software factory like WCSF, WSSF, and SCSF, it should be easy to find information about GAT, right? Yeah right!?!?

The GAT web site does not have too much documentation, besides the general overview. The community web site GuidanceAutomation.net does not work anymore, returning Service Unavailable error. The only book that I know about creating software factories using GAT is the Practical Software Factories in .NET.

The best online documentation I found about GAT is from Jelle Druyts , who created a series of articles about GAT based on the June 2006 CTP: I am just wondering who else is using the GAT, and if Microsoft will still release any new version of it.

Sunday, January 04, 2009

Chinook Database 1.1 Released

I just released a new version of the Chinook Database. Chinook Database is a sample database that represents a digital media store, like iTunes, including information of artists, albums, tracks, media type, invoices, customers, etc. The media information was imported from my iTunes library, the customer/employee info was created manually, and the sales info is auto-generated for a 4 years period.

It supports Oracle, MySQL, SQL Server and SQL Server Compact. The database can be created by running a single SQL script. It is also provided as an XML file and a SQL Server Compact database. It is possible to use your own iTunes library information to regenerate these scripts, see more details here.

The SQL scripts and unit tests are auto-generated using T4 templates by reading the tables information defined in an XML schema.

The new changes for the release 1.1 are:
  • Support for SQL Server Compact.
  • Additional customers from multiple countries.
  • Added a many-to-many relationship (a Playlist contains many Tracks, a Track belongs to many Playlists).
  • Added a one-to-many relationship between Employee and Customer (support representative).
  • Added Total field to invoice table.
I also created more unit tests to validate the data created in the database after running the SQL scripts.

The new schema is:



You can download this new version from the Chinook Database 1.1 Release page.

Spring Boot Configuration Properties Localization

Spring Boot allows to externalize application configuration by using properties files or YAML files. Spring Profiles  provide a way to segr...