Monday, February 27, 2006

Code Analysis for Managed Code feature in Visual Studio Team System

As I already mentioned in one of my previous posts, I am starting a new project based on ASP.NET 2.0 and Microsoft SQL Server 2005. I had the chance to acquaint with these two and I can't hinder my astonishment and gratitude - really Microsoft has done great job with these. And to continue the conversion in the same direction, we are going to use Visual Studio Team System (VSTS) as our primary IDE along with its abundant features for project collaboration and control. Now I am going to give you a short overview of one the greatest features that VSTS has, and in my future posts I hope that I will give you more food for you soul :-)

Well, the feature I want to discuss now, is Code Analysis. Here is a short overview of what it actually is all about:

"Code analysis for managed code tool analyzes managed assemblies and reports information about the assemblies, such as violations of the programming and design rules set forth in the Microsoft .NET Framework Design Guidelines. "

Simple as that! Now, what it has to do with VSTS is that it is fully integrated into it and can be part of the build process, code check-in process and/or Team System build process.

The best way to understand this feature and see how powerful it is, I suggest playing with it. In order to enable Compile time Code analysis feature, just go your solution properties in VSTS, choose "Build" section and there select "Enable Code Analysis" checkbox. Then rebuild it and in the Output window you will see the results from the additional build step performed regarding code analysis.

What I personally found as very neat feature is the code analysis check-in feature - that is whenever you try to checkin source code in the team repository, your code will be verified whether it conforms to Microsoft guidelines for quality code. Here is a link, where you can find additional information about this feature (link).

I still don't know whether the set of rules for code analysis is extensible - if it is using FxCop underneath, I guess that will be as easy as a breeze.

Friday, February 10, 2006

Compiz Window Manager

Now I am really amazed! Just see the preview of Compiz Window Manager from here! Besides the screenshots, I highly recommend watching the movie (~50 MBs).

Thursday, February 09, 2006

Microsoft E-Learning courses for ASP.NET 2.0 and SQL Server 2005

We are about to start a new project which will levarage ASP.NET 2.0 with Microsoft SQL Server 2005 - ahhh, I am so thrilled! We all know that in terms of technologies, the aforementioned two can be classified as babies - hey the official release of Visual Studio 2005 was like 3 months ago.

My role within this team will be project manager - quite challenging becuase I have to find the optimum between the skills of the team members and the project specific goals and domain. In regards with technology, I am now at the phase where I am gathering different sources for education about ASP.NET 2.0 and Microsoft SQL Server 2005.

One very valuable resource, especially for those who have solid background with Microsoft .NET framework 1.0/1.1, is the online courses at Microsfot E-Learning (link). The courses there are separated into different sections, based on the different Microsoft products and the targeted audience (IT administrators, Software Developres, Advanced Developers, etc.). Here are the two sections that we will need:

  • Visual Studio 2005 courses (link) - includes coures for Microsoft .NET 2.0, ASP.NET 2.0, Windows Forms
  • Microsoft SQL Server 2005 courses (link) - these courses are free until November 2006!!!!
I personally like the format that these courses are presented. There is an offline browser, where you can download a specific course and go throught it whenever you want - just awesome!

What I don't like with this really very helpful service is that the courses which are not free, are available only for North America. See the excerpt below from here:

"Microsoft E-Learning products are currently available for purchase only within North America at this time. However, any content that is offered for free, or users who are redeeming a voucher or activation code, can access e-learning courses worldwide."

I am wondering - is it only a matter of billing control? If I am able to view the free content, then obviously there will be no problem to see the paid one. However, I guess that the billing system is not integrated with European's one, which may be the bottleneck with this. Or I could be wrong ...

Friday, February 03, 2006

Internet Explorer 7 Beta 2 Preview

The new and glamorous IE7 (beta 2) has been installed on my laptop successfully! I've heard a lot about it, but because it is a beta I thought that I didn't want to run into trouble. But, today I found lots of reviews of other peers who have already installed it and used for more than 30 days, and no one seems to have any major complains. Well, I said, why shouldn't I try it out?

To begin, you can download it from here. From there, you will prompted to download an installation, which is not that big - approx 11 MBs.

OK, and here are my first impressions. It is obvious that Microsoft is trying to get back into the Internet browsers space. Personally, I am using, IE6 but I am really not very delighted with it. I am "obliged" to use it, because I am used to store links from my local MSDN library, and in order to open them, I actually need IE. And honestly, this is the only reason not to forget about it. During my "free" surfing time (when I am not using MSDN library), I prefer Opera because of so many reasons like:
1. Has tab display
2. Has awesome bookmark features in terms of searching and maintenance.
3. Has the concept of sessions - thus you are able to store a given set of links under a given label, so that you can get back to this "topic" whenever you want.
4. Has integrated support for RSS
5. Has integrated support for NNTP
6. Has integrated mail access

Well, this list seems to be a long one for sure. With IE7, some of these wish-items have been fulfilled. For example, IE7 has tab display and supports RSS natively. It also has integrated search capability, which according to me is very useful. However, I respect the fact that on default they are using Google Search (not MSN Search), which shows that they are trying to follow customers preference (hey, we all know that Google Search is the most used search engine, respect!). Among these, I will say that the new design and outlook of IE is very very sexy, which for me as a user is also important.

However, I would have been far away more satisfied, if IE had had improved its bookmark capabilities. I personally have more than 5000 favorites, and believe me, it is really hard to search and navigate in IE. On the contrary, in Opera they have this very useful search, which digs into all directories of your favorites (not just in the root as it is in IE). But, hopefully, Microsoft will add it in the future - fingers crossed! :)

Thursday, February 02, 2006

Web 2.0 and the future of Internet

It's been a while since the term "Web 2.0" began to emerge in technology articles and information sources. I am sure that you will meet it more and more in the future. In general, Web 2.0 referes to the "evolution of World Wide Web". There, the applicatoins will become more interactive and rich in functionality and thus get over the old perception that Web is more about static content. A good article about Web 2.0 was written by Tim O'Reilly and can be found here - take a look at it, it is really great.

Back to Web 2.0, the main focus is to design a new generation of services such as Microsoft Virtual Earth, Flickr, Orb and Digg ( and there are many many more). These are very, very strong examples, showing that the era of static Web documents is far far away. Actually, if you haven't already, I strongly recomment trying these out. With Virtual Earth you have a great map service at your finger tips and an amazing "Eagle Eye" view, which shows you a close view of a given terrain. You want to find a cafe in the local area - no probs, just search it there. Orb gives you the ability to stream TV and any kind of media from diverse locations. The last one, Digg, I find really amazing. People need information for in all kinds of topics, but sources are most important. Some of them are very biased, others - not reliable. Digg is trying to solve exactly this - each article has a "digg" index, which shows how many digg-ers liked and found it useful.

Tuesday, January 31, 2006

Delivering services or buying software?

It's been a while, since I started noticing that most biggest software companies are trying to settle their business around service delivery, rather than creating conventional software. Indeed, have you asked yourself why SAP are so successful, what are they delivering so unique to its customer that it has such a huge revenue? Well, the answer is that they are not selling software, they are selling the service! I don't want to get into the shoes of their accountants, but they are really making a huge revenue where their customers don't actually have anything in their hands forever - they just pay their subscription for a given period for a given pack of services and that's it! You need assistance - SAP is here, you need education - SAP is here, you need a new feature - SAP is here, but you are not actually buying all these - you are just paying for the services.

Recently, we have been witnesses of the great success that Google. And what they have, is it an operating system? Is it a software that is so unique?No. They provided to its customers the service to be able to search very efficiently. Well, after that they have many other services like GoogleTalk, Google Video etc, but still their "customer" are just using the service rather than buying it.

And guess what - Microsoft whose biggest income so far has been from its operating systems and Microsoft Office, they are now trying to settle into this business too, because it is obviously very profitable. Go to Windows Live and you will see what I am talking about - very useful services like MSN Messenger, Security, Favorites, etc. Microsoft is planning to fight for Internet users and because of this they are now restructuring and investing in their MSN group. And I am sure that pretty interesting things are about to emerge.

But yeah, I believe that in the future the share of IT market that services are going to occupy will become dominant as opposed to the traditional software. Actually, take a look at this article: CSFB says 'traditional software is dead' (link). There you will see that this time this will happen is not too far away...

Monday, January 30, 2006

HOWTO write unit tests

I was working on a project, where the client had requested to follow the test driven development (TDD) methodology while working on his project. Before this I personally had read a lot about TDD and unit test in particular, but I had never engaged it a real project.

Some very common questions that you will have in this case is:
* What functionality should I test?
* Are my tests relevant to the business requirement?
* How should I structure my unit tests so that I know which ones to run when I make a specific change?
* How many unit tests are "good enough"?
* How should I design my code so that it is liable for easy unit testing?

One of the very good consequences of TDD is that each developer starts thinking a little bit like a software tester. We all know that developers develop to run, while testers run to break. Well, if developer invests some time to gain a more comprehensive understanding in the problem that (s)he has to implement, then chances are that (s)he will produce less bugs. And this is one of the main tenets of TDD. By developing test cases, developers tend to gain a more versatile understanding over the problem domain they have to implement and thus their code is prone to less bugs. I totally agree that this is just a theory, and basically it depends on what unit tests the developer creates, what is the code coverage of those tests, how often are the tests run and of course - are the tests actually relevant. A good place to start learning what are the most basic requirements for efficient test cases, visit the article "Write Maintainable Unit Tests That Will Save You Time And Tears" (link).

One of the biggest challenges that I had so far in my experience was to design my code so that it is easier to be unit tested. It really depends on the programming language that you use as well as the platform that you are using. My experience so far is with Microsoft .NET, where the unit testing framework which is most used is NUnit. So when it comes to design, we had to design our applications that in one hand they are easily to be tested, but on the other side the testing code is somehow out-of-the-box. Therefore, we decided to implement the business logic in separate class libraries (.DLLs), which exposed the main business classes. This has the following benefits:
1. Class libraries allows to be easily reused - thus, we wanted to use a single assembly for multiple places within our system, we were able to to this
2. Class libraries are easier to be tested - what we did was to create a "bootstrapping" code which just represented the specific unit tests on each single class / method. Thus, we had very well separation among unit testing, business logic and presentation.

Here is an article that is something like a quickstart for test driven development in C# - click here.

Monday, January 23, 2006

Java or C# - which one is more competitive?

I found this article which basically describes the trend in software development in the past 2005. I was really glad to see that Microsoft .NET is getting a fast pace over its rival Java. While years ago IDEs for Java were really far ahead compared to Microsoft Visual Studio 6 (I remember the times when Visual Assist was a not a requirement, but rather a must for this IDE, and after all it just give you a quick file navigation and syntax coloring). Well, with the release of Visual Studio 2005 Microsoft provided developers with a IDE, which really is integrated and has intent to help developers in enter into rapid application development. Actually, according to this article, now Microsoft has 67% of the market for IDEs, which is quite expressive about their huge improvement in this area.

Another topic that took my attention from this article, was about the demand for programming languages. It seems like Java is still programming language no. 1. I do know that most developer are very sensitive on this subject - all of us have been a witness if not a participant in *bloody* discussion which one is more superior Java or .NET :-) I am technology oriented so I don't take neither position in such cases - for me what is important is the technology, the programming language is just the tool for implementation. Well, I have preferences of course, but I will never get into such kind of "deadly" fight. However, I think it is positive to know what is the market demand when it comes to programming languages. Thus, every developer knowing the trends in software development in the future years, will be able to react adequately, and if needed, to start learning new technologies so that (s)he is competitive. Those of you who are interested in such kind of trends especially in programming languages, go to TIBOE page which are publishing even monthly reports on the skills demand in programming languages (here is the link).

Sunday, January 15, 2006

How hazardous are Wi-fi devices with their radiation?

Today I was reading about the radiation coming out of our cell phones - a topic that has been thoroughly discussed for a long time. I've heard a lot of stories that there is an electromagnetic radiation emerging from the headset, but nevertheless I am using my mobile without taking this that serious.

Well, I heard a similar story about Wi-Fi devices. I personally use the Wi-Fi coming with my notebook a hell of the time. Actually, I am used to hold the machine on my stomack, while I am in the bed. So normally, I got upset a little bit. I checked out the Internet for some information about how hazardous is the Wi-fi? I found this very interesting article, which shows a real lawsuit for exactly the same thing (check it out here). According to this article, it is well-known that Wi-fi's are harmful, but they are not more harmful than any other microwave that we are so used to. And even our wireless speakers and cordless phones sold everywhere are not "flowers", when it comes to radiation. Here is an excerpt from this article, which gives enough information about the case:

"
.. Wi-Fi experts argue that while wireless networks do, in fact, produce low levels of electromagnetic radiation, they emit no more than household gadgets do. If wireless networks are hazardous to your health, they say, so then is nuking a slice of pizza. Microwave ovens and many cordless phones actually operate at the same 2.4GHz frequency used by a 802.11b wireless network. Even those wireless speakers you can buy at RadioShack emit similar radiation levels. "At this point, we have no reason to believe there is any harm in wireless networks," says Wi-Fi Alliance Managing Director Frank Hanzlik.

...

In their lawsuit they assert that "responsible scientists have reported that prolonged exposure to low-intensity radio frequency radiation can break down DNA strands, cause chromosome aberrations and break down the blood-brain barrier, thereby permitting toxic proteins to invade the brain."
"

I am so used to my wireless router at home that I am 100% sure that I won't throw it away, because of this radiation. Actually, Wi-fi networks are getting more and more around us, and in general I find them really useful if not a-must. Wait a minute - do you know that Google is planning to build a Wi-fi network all across the States? Can you image in what hell of a problem they are getting into if the radiation coming out of the Wi-fi's is that hazardous? :-)

However, I guess that some sort to precaution is not bad idea, because as can be inferred from the article, it is still unknown what the damages of prolonged exposure to Wi-fi radiation to human are.

Friday, January 13, 2006

Security Development Lifecycle at Microsoft

While I was reading articles from the MSDN Magazine, I ended up on this very interesting article regarding the security development lifecycle at Microsoft: A Look Inside the Security Development Lifecycle at Microsoft (link).

It is obvious that Microsoft has made their products more robust and reliable during the last years. Face it, there is a new Internet Explorer coming out, IIS 7 is far away more secure than its predecessor, the same applies to Windows 2003 family - all of these are an obvious sign that Microsoft puts security as a very important characteristic of their products. But in order to provide it, as can be inferred form this article, there is a very solid process engaged. I personally like the idea of having a person in the team, responsible for the product security. Also, the fact that security is put into consideration early in the development process will help to build the architecture with respect to it, and afterwards, during the implementation phase, security will be a criterion for each developer.

Another thing that I read in this article and I find particularly true, is that most developers just don't know what is to write secure code. In order to mitigate the risk of security flaws, having a "security" guy on the team is going to be really very handy, because (s)he will give guidance and put attention to security issues and best practices. But after all, each developer should be knowledgeable. I am now covering the courses found at Microsoft e-Learning, courses showing the latest best practices and important flaws that every developer should be aware of. These courses are under the label "Microsoft Security Guidance Training" and they can be found here. Very interesting, very helpful and for sure after you cover these, you will have a solid base in security.

Thursday, January 05, 2006

Skype 2.0 video conference works behind firewalls

Folks,

Today I tested Skype 2.0 build 2.0.0.63 beta (download it from here) to see whether we can setup video conference, when I am behind a firewall (as it is in my case). The test was successful – Skype 2.0 allowed me to make a video conference even though I am behind a firewall.

Just to mention that I tried to do the same with MSN Messenger 7.5, but it didn’t work out.

Say *hello* to the era of free video conferencing! I find this really fascinating, and for example we will try tomorrow to setup a video conference with a prospective client. This would be a definite plus for us, because the client will not only have voice, but also visuals, which will help us build credibility easier.

Sunday, January 01, 2006

Merry Christmas and Happy New Year!

Happy New Year 2006!

I wish you all the best during the new 2006 - let you be healthy (very very important one) and let all the happiness in the world be with you. Since this is a technological blog, I wish you to buy a 2 processor monster machine to a very reasonable price, develop code with less bugs (hey, why not bug-free! :-) ), start developing for.NET platform (if not already) - at this moment I am sure that Microsoft flamers have already erased my blog from their favorites :-), but I wrote this just for fun), etc. etc. - put shortly - all the best! :-)

Cheers!

Monday, December 19, 2005

ReSharper: quick navigation among recently accessed files

Today I found out a really very useful feature in ReSharper Visual Studio add-in. I personally use file navigation features a hell of the time, because most of the times classes have relations between them, or you want to see a specific code snippet somewhere else, etc. Visual Studio .NET 2003 doesn't have this feature (in contrast to Visual Studio 2005), so here is ReSharper to the rescue.

When you open Visual Studio .NET 2003 having ReSharper installed, just press CTRL + E and you will see a list of recently accessed files. Veeery, very handy! The name of this comand is "ReSharper.GotoRecentFiles". Besides this really great feature, ReSharper has the possibility to navigate you to a given file from the solution, or to navigate you to a given type - all these kinda "small" goodies, which Java developers are so used to, but most C++ developers like me think as an "innovation" :). Ah, and if you think that this is great, just see the refactoring support coming with this add-in - really awesome! :).

For those of you who are hasn't seen this add-in for Visual Studio .NET 7.0 and 7.1 (currently, there is a beta version for Visual Studio 2005), just go to this ReSharper site.

Friday, December 16, 2005

Managed .NET stored procedures in Oracle 10g

I know that this is my third post for the day, but when I saw this I was so excited. Yes, there are managed stored procedures in Oracle as well. Just a quick note, the new Microsoft SQL Server 2005 supports managed stored procedures, which are procedures written in one of the managed .NET languages. The benefit? Well, you don't have to know T-SQL in this case, in order to have access to your data. It is obvious that Oracle hasn't waited too long and now not only they support Microsoft .NET Framework 2.0, but have implemented the same type of SPs in their database server. Impressive!

I found one very good article about this feature in Oracle 10g. Check it out it is really great (click here)! What I find astonishing with it, is the Deployment wizard - once you have created your stored procedure in a managed .NET programming language, you have easy deployment through a nice-and-tidy wizard. Well, another story is that you can debug your Oracle .NET stored procedures through Microsoft Visual Studio .NET 2003 - yeah, no kiddin'! :) Just read this article...

FxCop 1.35 Beta 1 for .NET 2.0 is released

Today I saw that there is a new beta released for the famous FxCop tool. This tool obviously targets the brand new Microsoft .NET framework 2.0. Still, I couldn't found what are the changes in functionality as compared to version 1.35, but I will review this beta thoroughly during the weekend and will keep you posted.

Meanwhile, if you want to evaluate this code analysis tool by yourself, just go to this page.

Creating partial trust applications with Visual Studio 2005

Today I found out that the new Visual Studio 2005 gives to its developers the means to easily build partial trust applications. So far, most of the .NET based applications are full trust, basically because it is really cumbersome to define all the required permissions and enumerate them declaratively, as it should be done with Visual Studio .NET 2003 for example.

What you have with Visual Studio 2005, is the "Security" tab in the Project properties dialog. There you can easily enable "Enable ClickOnce Security Settings" and select "This a partial trust application". The next step is to "calculate" the permissions that your code requires. A, there is something else you should pay attention - if you want to calculate the minimum permissions set, be sure to select the Custom zone from the "Zone your application will be installed from".

Monday, November 28, 2005

Quick file navigation feature in Visual Studio 2005

Today I was researching the new features that Visual Studio 2005 gives to its users. One of the super cool and sexy feature that I found, is the quick navigation among the open documents: just press CONTROL + TAB and a dialog box will appear, where you can choose among all the open documents, but also you will have Toolbox, Servers and many others menus at your fingertips.

The only thing that I can say is: THANK YOU! I am getting more and more convinced that this version of Visual Studio IDE has really got the goal to make developers’ work more productive.

More about the quick navigation between files can be found on the following MSDN article:
How to: Navigate Within the Integrated Development Environment (click here to see it)

Sunday, November 27, 2005

Common Software Errors

I recently ended up on a very interesting document, describing common software errors. What I really liked in this article was that the information in it was very systematically prepared, and as it is mentioned in it, it will help one tester to develop his/her way of thinking at least. I am sure that some of you will say that most of these bugs are not relevant, but try to look at the things from another angle – try to take the most out of the presented bugs, ant to remember as many bogus cases as you can. I am sure that this will help you a lot next time when you are trying to write test case scenarios for given software (provided that you are a QA engineer) or things to be careful while designing or writing code (if you are software developer). I provided this document to the QA manager at the software company, for which I am currently working. He was pretty amazed by this collection and recommended it lively to all of the other QA engineers as a “must read” source.

The aforementioned article is named “Common Software Errors” and can be at LogiGear download site (after you fill in a quick download survey).

Thursday, November 24, 2005

Windows Live: Microsoft's answer to Google's homerun

Today I found this new service, which Microsoft is now implementing. It is still a beta version, but still the idea behind it is really very valuable. I as an ordinary Internet user, have very often faced the problem with not having my Favorites in place. That is why I am used to have a USB drive with me so that I always have access to such personal things. Well, with Windows Live you will have this in your finger tips.

Secondly, I use my Motorola MPx200 very often to check my email, but now I will have seamless integration between my mobile phone and my emails, just like I have it already with Microsoft Outlook.

At last, but not with least significance, I will have a free virus protection guard (Windows Live Safety Center) so that my PC will become more secure. And then who says that this world is not perfect? (

Well, if you want to find out more about this new Microsoft service, just go to:
http://www.live.com/

To see what are the main benefits (ideas) behind it, go to the link below to find out more:
http://ideas.live.com/

Saturday, November 12, 2005

Open source tools for software testing professionals

I've recently seen a movie with Diijstra, who was talking about the software testing and QA. He mentioned that years ago, they were proclaiming the idea that every software developer should write rock-solid code, but it actually happened that nowadays developers believe that testers are responsible to detect software bugs (thus developers are somehow not responsible for low-quality code). I personally have seen lots of statistics about how many bugs can be detected by testers performing black box testing (which adopted by most ISVs) - the ranges varied between 30 up until 50, but not more (scary uh? :-) ). And honestly, when you think about it you will realize that software developers can be the best testers ever - they see the code, and they know what it is and is suppose to do, which is the basic pre-requisite for any test being performed by whoever.

And here is the way I looking at the things for software development vs. testing - I usually try to think from the QA engineer's point of view such as I am trying to break my code, what extraordinary cases I haven't considered, any boundary situations, what about UNICODE characters and encoding issues, etc, etc. There are many other questions that one may have, specific for the given project that is running, but it will be always a good think to have this kind of thinking - how I can make sure that my code is really solid!

The project that I am currently involved, has required high-quality since its very beginning. Therefore, every developer is responsible to write unit test and to run his/her code against it, and thereafter, while preparing the daily build, these unit tests are run automatically through the build process that is engaged. What is the benefit of this? Just to name a few, writing simple test cases helps you get a better understanding of the problem that you have to implement; it guides you whether the current implementation meets the functional requiremenets.

And if you are a software developer who is looking for testing tools, here is a very good site that you can find tons of free (open source) frameworks for unit test, performance tests, requirements tests and so forth:
http://www.opensourcetesting.org/

I highly recommend this site to all developers and QA engineers - there is something for each of you :0)