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 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...