Tuesday, January 31, 2006
Delivering services or buying software?
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
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?
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?
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
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
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!
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
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 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
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
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
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
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
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
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)
Saturday, November 05, 2005
The manuscripts of Edsger W. Dijkstra
These days I had to implement a semaphore synchronization object in C#. To note, Microsoft .NET 1.0 and 1.1 don't have such kind of synchronization primitive in contrast to the new version 2.0 where it is available. However, while I was looking for some guidelines for semaphore as a concept, I found out that this synchronization primitive was invented by one of the founders of modern Computer Sciences - the same Edsger Dijkstra - respect!!! During my bachelor's degree, I used to hate this guy because he has so many theorems that our professors insisted on knowing their proofs by heard :)
Despite this, I found an archive containing the manuscripts of Dijkstra, some of which are even hand-written - really impressive and somehow touching! If you want to see them just go here.
The one that particularly is about semaphores (and which is hand-written) can be seen here:
Enjoy!
Friday, November 04, 2005
Google Print is up and running
How you can take benefit? Well, whenever you are looking for something, you just can search for it in Google Print and you will receive a list of books, which may help you with this. You have the possibility to see an electronic version of each book as well as to order a printout for yourself. Unfortunately, I didn’t find books like Code Complete 2 or Effective C++ (Third Edition), but I guess it is a question of publishing rights. More about Google Print can be found here.
I personally love reading and therefore for me this service is like а gift from God. I highly recommend to try it out at: http://print.google.com/
Thursday, November 03, 2005
Microsoft Win32 to Microsoft .NET Framework API Map
For all of you who have quite an experience with Windows 32 API, and who are now migrating to Microsoft .NET, here is something that you may find useful: Microsoft Win32 to Microsoft .NET Framework API Map. You can use this article whenever you are looking for something particular that exists in Win32 and you are wondering where it is situated in Microsoft .NET class library.
Here is the link to this article:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/win32map.asp
Best of luck!
Friday, October 28, 2005
Visual Studio 2005 and SQL Server 2005 released?!?!?
"Final release versions of Visual Studio 2005 and SQL Server 2005 are now available for MSDN subscribers to download. Redistributable packages, such as the .NET Framework 2.0, are also publicly available. (October 27, Download)"
(from http://msdn.microsoft.com, "News This Week" section)
P.S. Guess who is now downloading Visual Studio 2005 and SQL Server 2005 from MSDN Subscribers? ;-)
The New Generation of Microsoft Certifications
Technology Specialist: .NET Framework 2.0 Web Applications
Technology Specialist: .NET Framework 2.0 Windows Applications
Technology Specialist: .NET Framework 2.0 Distributed Applications
....
I am currently specializing in distributed systems and I find most of these quite relevant for my technology orientation. One thing is known for sure - I strive to start preparing for those exams! :)
For more information about the new certifications that Microsoft provides, go to http://www.microsoft.com/learning/mcp/newgen/