Tuesday, December 19, 2006

Microsoft Office 2007 for a trial spin by the end of February

Microsoft has made the Enterprise version of Office 2007 for trial up until the end of February. This includes all Word, Excel, PowerPoint, Access, etc. At the end of the trial run, Office 2007 Enterprise will downgrade to a crippled edition that bars users from creating, changing, or saving documents and files. Users will still be able to view and print documents, however.

Download the free trial from here (~502.1 MB) (link) or check out the official trial site (link) for more information. You will need a trial licence key, which you can obtain from here.

Tuesday, December 12, 2006

"What the C or C++ Programmer Needs toKnow About C# and the .NET Framework" book by Charles Petzold

As I am coming from C++ background, long time ago while I was trying to catch up with .NET and C#, I would have died for a book like this:

"What the C or C++ Programmer Needs toKnow About C# and the .NET Framework" by Charles Petzold (link)

First thing you should note is the author - not everyone, but the famous Charles Petzold. Then you should notice that this book is completely free right now, so I really don't know what you are waiting for - just go there and download it :)

Monday, December 11, 2006

Service Unavailable error and IIS 6.0

Today I experienced very strange behavior from my local IIS 6.0. Everythime I accessed some web site previously working sound, I kept on getting this empty page saying "Service Unavailable". When I saw that all of my Web sites part of my current project are showing this same message, I tried to open a stand-alone and completely different Web app, but again the same message. Ok, that's was a clear indication that there was something wrong with the IIS6 installed on my local box. I hit the Internet and found the following KB article on MSDN site (link). This just rang up a bell that the problem can be rooted in the app pools I've been using. And it was a true suggestion - I had to change the identity under which my default ASP.NET 2.0 app pools were using (since the old one was not valid anymore). And now I have one greatly working IIS 6.0 up and running...

Tuesday, December 05, 2006

Exposing a MEX Endpoint

Today I found out the following. Let's say you have an Indigo service using the basic profile binding (BasicProfile) or any of the WS-* profiles. Then, you need a way to expose the metadata of your service to clients. Normally, you will define a new WS-MetatadataExchange (MEX) endpoint. But here is the trick. If your service is self-hosted, then if you specify a base address while opening the service, then you have this MEX endpoint created for you. Just point to the base address in your Web browser, and you will get the service description file or if you want the WSDL - just type the "?wsd" in the address bar. Here is a sample code that demonstrates this:

Uri baseAddress = new Uri( "http://localhost:8080/MEXAutoMetadataSvc" );

// NOTE: by specifying a base address, the MEX endpoint should be automatically populated especially for HTTP based profiles
myServiceHost = new ServiceHost( typeof( .. MEXAutoMetadataSvc ),
new Uri [] { baseAddress } );

//Open myServiceHost
myServiceHost.Open();

Now with this code running, if you go to http://localhost:8080/MEXAutoMetadataSvc you will see the description for this service.

Friday, December 01, 2006

Windows Vista and Office 2007 webcasts

If you want to ramp up with the cool and fascinating features that Vista and Office 2007 provide to us (developers), you may want to check out this site:

http://www.powertogether.com/

There, you will find a realm of online virtual labs and web casts, bundled up to give you one-stop-and-shop place to speed up with that technology, which IMO is really revolutionary. And don't get me wrong - I don't think of Windows Vista as of the new Microsoft OS with the very sleek UI, but also with all of its major improvements in security, connected systems development (and Microsoft .NET framework 3.0) and totally revamped way of interacting with your PC. I can tell you that having Vista on my desktop, I will never think of moving back to any previous OS.

As far as Microsoft Office 2007 is concerned, I will really recommend you just playing with it for couple of hours. Then send me back your comments. However, back on the link I gave you here, there is a good overview of what's into the developers toolbox for Office 2007 so it's worth to go there and master these.

Wednesday, November 08, 2006

Windows Vista released

Windows Vista RTM is finally here! Check out the official Vista blog for more info (link). You will love it - that's for sure! :)

Visual search engine - amazing!

Search is definitely a lucrative area, which is constantly evolving and looking for innovation. So today I ended up on this very cool search enginge like.com. Check it out! It is not rich of available items among which you can search of, but the idea behind it - to have visual search capabilities is really great. For instance, you can draw on a bag saying that you most like the shape of it and this guy will return you all the bags which have similar shape :) Cool, isn't it? Another thing is the ease of use - this engine is defintiely user-friendly and I am sure that even elderly people can deal with it - it is so easy and intuitive :) So be it - go to like.com and check it out.

Microsoft Visual Studio 2005 IDE Enhancements

Today I found these new add-ins for Visual Studio 2005. So basically what's included in the box, are the following add-ins:
  • Source Code Outliner : The Source Outliner tool is a Visual Studio extension that provides a tree view of your source code's types and members and lets you quickly navigate to them inside the editor.
  • Visual C++ Code Snippets:The Visual C++ Code Snippets tool lets you insert snippets in your code by using a pop-up menu that contains programming keywords. VB.NET and C# languages have this functionality in Visual Studio 2005.
  • Indexed Find : The Indexed Find tool is a Visual Studio extension that uses the Microsoft Indexing Service to provide improved Search capabilities to the integrated development environment (IDE). It sends the results of a search to the Output Window.
  • Super Diff Utility: The Super Diff Find tool is a Visual Studio extension that compares text files. It uses color coding and graphics to show the difference between the files in deleted text (red), changed text (blue), inserted text (green).
  • Event Toaster Utility: The Event Toaster tool is a Visual Studio extension that notifies users about specific events within the Visual Studio IDE.
Among my most favorite are the Source Code Outliner and Super Diff Utility.

You can download all of these from the link below:

[Microsoft Visual Studio 2005 IDE Enhancements] (link)

Tuesday, November 07, 2006

Microsoft .NET 3.0 Framework has been released!

Yes, it is here and waiting for us to start crunching up code that will spawn distributed systems, create more interactive user experiences and provide us with the ease of implementing business workflows. More about the relase and the latest bits can be found on the official Microsoft .NET 3.0 community site (link). Enjoy!

Monday, November 06, 2006

Ramping up with Microsoft .NET 3.0 Framework - resources

Searching for some .NET 3.0 related courseware, I found these clinics and online events, which turned out to be very useful to me. For now, these are free, but I will say to take advantage of this offer, because these courses can soon become paid.

Collection 5134 : Developing Rich Experiences with Microsoft® .NET Framework 3.0 and Visual Studio® 2005 (link)

Another cool place where you can find more hands-on demos about .NET 3.0 is the MSDN Virtual Labs (link) and last but definitely not least important is the official .NET 3.0 community site (link).

Visual Studio development on Windows Vista

Today I was playing with WCF on the newly installed Windows Vista, but the Web projects don't seem to work. While trying to create a new WCF Service, I got the following error:

Unable to create the Web 'http://<>'. An error occurred accessing your Windows SharePoint Services site files. Authors - if authoring against a Web server, please contact the Webmaster for this server's Web site. WebMasters - please see the server's application event log for more details.

The Vista OS is kinda new to me and I am still learning it - it is definitely far away more secure and interactive. The UI is super sleek and overall the way you work with the OS is very different than any previous Windows OS. Probably the closest match is Windows 2003 Server. However, because I am Visual Studio developer myself, I am pretty glued to Visual 2005 Studio as my most used IDE. Now, it seems that there are some things that you should pay attention while developing on Windows Vista - check out the official page for Visual Studio support on Windows Vista for more details (link). Basically what can be infurred from there is that VS2002 and VS2003 will not be supported on Vista, but that again doesn't mean that your Microsoft .NET 1.x/2.0 apps won't work there - just the opposite. This restriction is all about development, not application compatibility. The bottom line is that you have to get the Visual Studio 2005 SP1 and the Vista Support update in order to develop on Vista.

Wednesday, November 01, 2006

Windows Live Q&A

Amazing! This is something I've been recently thinking about. Internet is so powerful because of the huge information and the large user base. There is nothing in the world which can even get closer to it in regards to these parameters - no TV, no radio, no media. I am personally a believer that if people share their experience, they all bring value to the public and after all everyone can help the other. So I was on my way these days to buy a car. But if you are new to the area, what would you do? You will hit the first dealership that pops up on the brand web site or after couple of searches and that's all. But most of the times this will not give you the best value - the best quote I mean. Moreover, sometimes you may end up in not very favorable salesman who is just thinking about his commission. Now I've been thinking this - if I was able to see what have been the experiences of let's say event 10 people buying the same car in the same area, I would get a pretty good overview of the problem area.

So why I am telling you this and meanwhile the title of this post is Windows Live Q&A? Well, this service is all this about - you asking questions to the community and eventually getting answers. Of course, the answers are pretty subjective and the content is not 100% guaranteed, but we are grown-ups, right? And still the interesting thing with this service is that the more you answer questions, the more points you get and hence better personal rating. This is mainly used to show users how reliable are your answers (to my knowledge). More about this here. And now I am thinking about ways to monetize this service and reward the active and honest participants ... (is that a new advertisement type? p.s. which I personally will love:0)

Saturday, October 28, 2006

Windows Live Dev blog

Today I ended up on the Windows Live Dev blog (link) by chance. I read what these guys are publishing and I was amazed how many interesting things they got. The cool thing with this blog is that you receive very valuable information about different products part of the Windows Live group. For example the last post I see there is about how to do advanced searches with Live Search (check it out here). If you are a developer using or interested in some of the services out there, you will find posts about controls, SDKs, gadgets, Virtual Earth etc.

Tuesday, October 17, 2006

Some interesting features of Windows Live Search

Today I found this great feature available with Windows Live Search - that's the contextual suggestions that this search engine gives to you, when it finds something relevant to what you are looking for. For example, I was looking for "mazda3" and here is what I've got:

Now, as you see, on your right side there is a bunch of sites, among which are reviews and different trims of Mazda3.

But to go further more, I want to touch base here with another interesting and very cool service, part of the Windows Live - namely "Live Q&A". If you just switch real quick to it, you will se the following:

What this service brings to you is some user opinions and real-life experiences related to your search pattern. What this service brings to you is very obvious from this service motto: "Live QnA connects you to the best answers from the right people.". So what I've got here is a rated list of user reviews on the Mazda3, which may prove to be very useful to me.

Another very cool service part of Windows Live is Image. Besides its sleek way of doing previews while hovering a single image, it has many other useful gadgets such as the zoom-in/out panel at the top to control image sizes, the scratchpad (where you can drag & drop images). The search capabilities are fully integrated and are very sophisticated. For example, if you do a search on "John Kennedy", here is what you've got:

What's actually interesting here is the right side pane, which displays what? yeah, that's right - related people to John Kennedy. Sweet! Needless to say that the search is not just keyword based, but it does some relevancy checking and is contextual based.

Friday, October 13, 2006

Copy music from iPod to your PC

I've been recently trying to download some music off my iPod. Unfortunately, I couldn't find a way using iTunes. And this was the moment I searched for some help in Internet. And I found a great article on this topic (link). It seems like iTunes has no longer this ability to drop off music from your iPod. And what is the solution then? Put simply, this is the EphPod program which you can take for free from here. It actually does far more than simply copying your music - it can sync up your contacts, blogs, videos. And besides it is free, other cool thing is that it is working, which does not apply for some commercial software for the same purpose! :)

Wednesday, October 11, 2006

XML Notepad 2006

Check out this tool - really good one for manipulating XML files. Here is a great article, which shows what this tool can do for you - XML Notepad 2006 Design (link). You can download the tool from this link. One of the features that I most like is that integrated IntelliSense, using the current document schema - really cool one.

Visual Studio default shortcuts

I am using keyboard extensively while programming in Visual Studio. It is a great way to boost your productivity. Today I found this article on MSDN which shows all keyboard shortcuts, set on default with Visual Studio. Use them wisely :)

General Development Settings Default Shortcut Keys (link)

Sunday, September 17, 2006

Video Podcasts with Apple iPod

I recently downloaded the newest version of iTunes 7.0 and started exploring it. One of the most coolest feature I found is the ability to sync with video podcasts. So far I had some problems playing video on my iPod in general. Sometimes I just couldn't convert a movie to the iPod format, or sometimes the iPod just didn't play them at all. However, couple of days ago using this new feature about video podcasts, I managed to play video! So here is how you can access this new feature from iTunes. Just follow the steps shown on the following screenshot:

As a result, you will have to see this (or at lest this is what I get from iTunes):

From this point, just pick those you like and then sync up your iPod. From your iPod, just go to Videos -> Video Podcasts and enjoy the ride! :)

Just a quick note about iTunes 7.0. The current version is not very stable. It constantly crashes, while attempting to update my Outlook contacts and tasks if the connection to the mail server is not present. I am using Microsoft Exchange email account with cached mode enabled. Although Microsoft Outlook is working soundly in this case, every single time I start iTunes without having established connection to the Microsoft Exchange, this software just crashes with "Unhandled exception occurred". This drives me crazy and that's why I disabled contacts and tasks synchronization.

Saturday, September 02, 2006

Windows Live Services - full list

Windows Live - the Microsoft rival of Google, has taken a very fast pace forward. Currently it includes a total of 56 different services available on the Web (check out this link to see this list). Google on the other way are trying to compete with Microsoft Office by providing a free-of-charge word processor and spreadsheet, but in my honest opinion they are decades behind Microsoft. On the other way, Microsoft is pulling away the Office Live initiative (link), which gives you at your ease email, collaboration, Web publishing, etc.

I personally use Microsoft Live Writer (link) for RSS content management. Although still in beta, this program is really great. As you can see, I am using the Blogger service for RSS, but its Web interface is very simple and by no means is user friendly. Besides, it is Web based. It has happened several times that when I am done with the blog entry and I try to publish it, if my Internet connection experience some problems by this time, the whole post is gone - so long 30 minutes or so writing. Would be far away better if there has been something like autosave on every N seconds, correct? Because Windows Live Writer is Desktop based, I don't have this problem. Nevertheless, it provides very useful tools to format the blog entry with whatever styles you want. And here comes the great news - you can insert pictures to your blog although the blogging service (Blogger in my case) does not support publishing pictures. What it does with them - you are just prompted to setup a folder on the FTP where this program will upload the pictures. That's really sweet!

Traffic condition on Virtual Earth

While checking something on VE, I suddenly saw a new tab on the screen - "Traffic".

For Americans, this service is the life saver and they are so used to it. On my last trip to Seattle, we were on the road with a friend of mine and he wanted to know which streets are blocked so that he can better plan his route. Well, couple of clicks on his Pocket PC and voila - you see full fledged map showing you which streets have heavy traffic, or incidents, etc. I really wish we have this service down here in Bulgaria - it is really very useful.

Wednesday, August 23, 2006

Web control library project in Visual Studio 2005

Today I wanted to create a custom ASP.NET 2.0 control (not to be mistaken with Web user controls a.k.a. ASCX controls). For this reason, in Visual Studio 2003 I used to create a stand-alone Web control library which actually contains the new custom control (s). Because the whole Web project base is changed in Visual Studio 2005, you won't find a "Web Control Library" project in New Web Site dialogue. Finally I made it through! This project type is now located in Windows section - point to File | New | Project ... and choose this project as shown on the screenshot below:

And now you can start add your custom controls to the Visual Studio 2005 Toolbox by right-clicking on the specific tab. Then select "Choose items.." from the context menu. In the ".NET Framework Components" tab, locate the assembly file of your Web control library and choose the controls you want to use. And that's it ..

Google Calculator

Today I had to convert quickly from pounds to kilograms. Hence, I hit the Internet to see what the aspect ratio is between those two measurement units. I was really nicely surprised by Google, which provides a service called "Google Calculator" (link). Using it, you just have to type "1 pound in kilo" in the search criteria and you are all set! It is really small things that make people happy :-)

Thursday, August 17, 2006

CopySourceAsHtml add-in for Visual Studio 2005 / 2003

Yesterday I was writing a post and I wanted to send some sample code. However, it would have been great if the code keeps the formatting which it has in Visual Studio 2005. That said, I searched for an add-in and I found this one - CopySourceAsHtml (link). The most important one - it is free. So far it seems to be working nicely and integrates really seamlessly with VS2005. It also has version for VS2003 (for those of you who are still using it :) ).

Wednesday, August 09, 2006

ASP.NET 2.0 Tips, Tricks, Recipes and Gotchas (on ScottGu's Blog)

I found this very interesting post about ASP.NET 2.0 tips & tricks. Not surprisingly it is on ScottGu's blog - the ASP.NET 2.0 guy :). Really, lot's of valuable hints, resources, best practices and advanced topics can be found there. A must-read article for every ASP.NET 2.0 developer.

Thursday, August 03, 2006

Review: Flock browser

Today I ended up on this cool piece of software. Its name is Flock and is currently in beta. Basically, it is a new generation Internet browser, which has very handy integration with many famous Web services. It is based on the Mozilla technology. Although it is still in beta, I find it pretty stable. What I most like with it is that it has seamless integration with some popular Web 2.0 services like Flickr, Blogger, del.icio.us, which I personally adore. Actually, right now I am writing this post from the Flock browser itself, which on the other side will communicate with Blogger to publish the post.

What gives me the integration with del.icio.us? Well, I have tons of bookmarks and I am working on 3 machines - one at home, one at the office and my personal notebook. So I am indulged to sync my links among all these machines, which is really very tedious and boring task. Flock solves this using the del.icio.us service, which among all provides bookmark management to its clients. And it is free :)

Another story is the heap of pictures I got. I am currently using Yahoo!Photos for this purpose so every time I want to publish new album and pictures, I have to login there, create a new album, drag & drop the new pictures, etc. Now, I can to this with couple of clicks and drag & drops :) That is because Flock uses Flickr for photo management, which collaborates with Yahoo!Photos. Simple as that.

Well, the history shows that each Internet browser has it own particularities in regards to page rendering. Because my experience so far with Flock is not that much, I can't say whether it working sound. I read that it is based on Mozilla technologies so provided that most pages try to be compatible with Mozilla I guess that there won't be any problems. But will see ..

If you want to try out this browser, just go to its page and download it [link].

Thursday, July 13, 2006

Internet Explorer Developer Toolbar

Oh my! Today I found something really useful, something that I've seen for FireFox, but never so far for Internet Explorer. We are currently creating AJAX applications and we usually need some tools in order to see how is a given page rendered, how it will look like on 800 x 600 resolution, validate CSS and HTML, etc. As I pointed out, so far only the FF developers could benefit of such toolbox, but not anymore!

I tried Internet Explorer Developer Toolbar which is all this about. Among its features you will find:
-- Validate HTML, CSS, WAI, and RSS Web feed links.
-- Explore and modify the document object model (DOM) of a Web page.
-- Locate and select specific elements on a Web page through a variety of techniques.
-- Display image dimensions, file sizes, path information, and alternate (ALT) text.
-- Selectively clear the browser cache and saved cookies. Choose from all objects or those associated with a given domain.

Currently, it is in Beta 2 and is free. You can download it from here. Enjoy!

MSDN Webcast: What I Wish Developers Knew About Writing Queries in SQL Server 2005

MSDN Webcast: What I Wish Developers Knew About Writing Queries in SQL Server 2005 (Level 200) (link)

This webcast is really a masterpiece - that's all I can say about it. It really gives you a very good understanding how to diagnose and tune up your applications using SQL to manage their data. I also share the view of the author that there are many software developers that don't have this specific knowledge about writing effective SQL queries, probably because they haven't experienced performance hits. So far, I have projects behind my back where we had to squeeze out every possible second out, because of huge data load and requirement for good performance. I really know what SQL Server Profiler can do, and I really love it!

So this Web cast will give you a really very good idea and real demonstration how you should diagnose and tune your SQL queries so that you have optimal database performance. Highly recommend it!

Wednesday, July 12, 2006

SQL Server 2005 and Visual Studio 2005 integration - good demos

Today I ended up on these very cool demos. I usually like a lot that kind of quick HOWTOs, which are straight to the point and give you a good overview of the possibilities that bring you a given technology piece. Well, the demos I found today are really like that - most of them are like 5 to 7 minutes long, but give you a clear view of how to do the things. Nevertheless, I bet that you won't become a MSSQL 2005 guru after going thru all of them, but they will give you a good foundation what to expect from the collaboration between Microsoft SQL Server 2005 and Microsoft Visual Studio 2005 (from developer's perspective).

Anyhow, here is a link where you can view or download the content for offline browsing - SQL Server 2005 Developer Productivity Guided Tour [link].

Here is a quick overview of what this tour includes:

1. Web Application and SQL Server Database Creation (4 min. 34 sec.)
- Creating a New Web Application
- Adding a SQL Server Database
- Inspecting the SQL Server Database
2. Database Schema Creation and Data Input (6 min. 52 sec.)
- Creating Tables With the Database Diagram Designer
- Modifying Tables with the Table Explorer
- Populating the Tables with Test Data
3. Data Access via Stored Procedures and User-Defined Functions (7 min. 49 sec.)
- Creating a Stored Procedure
- Creating a User-Defined Function
4. Data Access and Data Binding in Web Applications (5 min. 41 sec.)
- Adding a New Form to a Web Application
5. Web Application Debugging (6 min. 23 sec.)

Wednesday, July 05, 2006

Mr. Eric Rudder live!

Eric Rudder - the VP of Development & Platform group from Microsoft is here in Sofia right now. I was lucky one to be able to participate in a live meeting with him in the office of Microsoft Bulgaria. We had a very open conversation and discussion over what's been around and what's hot in Microsoft world. We touched base on WCF, because one of its PM leads were there two - I was very nicely surprised to know that he is Bulgarian - I am so proud, because the guy really looked very knowledge :-). To me this was very interesting conversation, because as I already told you my master thesis was about distributed transactions and more specifically WS-AtomicTransaction and WS-Coordination, which are supported by WCF. I shoot couple of questions at the PM live and we decided to continue our conversation off-topic with the details I was particularly interested. I wanted to know more about the types of distributed transactions WCF supports. The theory defined many different types, but among them the most important ones are the flat and nested/hierachical transactions. Another one was about WS-BusinessActivity. It is interesting to know whether this specification will be implemented as part of WCF or will be in WF. I was told that WS-BA is not of topmost priority right now, because they are putting more effort into making WCF and WF collaborate together. Will see!
Eric Rudder is for sure a very versatile person. I personally like the fact that he has developer background but he also has very strong business feeling for sure. It was really great to see how passionate he is about software and technology! Obviously he has a very versatile knowledge and look in software industry. For example, we talked about SAP technology and how it compares to Microsoft technology stack. I actually pose him the question - "How would you convince me to use Microsoft technologies instead of SAP?". This was a tricky one :) . But he managed to explain us the pros and cons of both solutions and how Microsoft think can position itself thru the verticals as opposed to SAP. It is well-known that SAP has relatively high pricing especially for SMBs, where Microsoft is mainly targeted. However, I believe that with WF, WCF and the whole SOA paradigm in hands, Microsoft may provide to its clients very customizable and highly scalable business solutions based on Microsoft servers like BizTalk, SharePoint, SQL Server, etc. I believe that Microsoft .NET 3.0 could bring all that and thus be a potential rival to SAP.

Saturday, July 01, 2006

Atlas June CTP released

Today I saw that there is a new release of the famous AJAX library for ASP.NET 2.0 - namely Microsoft Atlas. I've used it in 3 projects so far and I haven't been disappointed. Now, as I can see from the release notes (here) the UpdatePanels are now truly *dynamic* - that is they can be added dynamically to page at runtime. Another change is in the Drag & drop functionality. I will give it a try these days. You can download this release from the Atlas web site (link).

Another thing worth mentioning related to Microsoft Atlas is the Microsoft Atlas Control Toolkit (check it out here). It gives you a bunch of free Web controls and components, which seamlessly integrate with ASP.NET 2.0 page model and brings valuable add-ons to your web applications. There is a very good article about this toolkit at ScottGu's blog(link).

Friday, June 30, 2006

Tech-Ed 2006 is online

If you missed Tech-Ed 2006, or want to catch up on some of the concepts you learned in Boston, check out these webcasts covering Windows Vista, the 2007 Microsoft Office system, management and operations, security, server infrastructure, and more. Check it out here.

Wednesday, June 28, 2006

Master of Science - completed

Yeah, last week I defended my master thesis and hence I hold now a Master of Science degree in Computer Sciences from University Of Sofia "St. Kliment Ohridski". I specialized in Distributed Systems, although the official programme is announced as "Distributed Systems and Mobile Technologies". I want to thank my girlfriend Mira for all the careful reviews she has done during the course of the writing, and for supporting me by that time!

My master thesis was about "Distributed transactions in Service-Oriented Architecture". I personally adore the concepts that SOA proclaims. From scientific point of view, most business systems pose the requirement to guarantee to its clients atomicity and consistency of the operations carried out thru them. And here comes the need for transaction control. Fortunately, the guys from WS-TX group from OASIS (link) have done a great job so now we have a bunch of specifications aimed to provide a unified coordination framework for a set of Web services. Web services are actually one concrete programming interface that complies with the SOA concepts. They are very compelling with the fact that they rely on widely spread open standards like WSDL, SOAP and UDDI. I won't go into to many details here, but having all these things in mind I decided some time ago to implement the specifications, defined by WS-TX. Namely, I was interested at WS-Coordination and WS-AtomicTransaction.

The introduction of my master thesis reviews some of the most popular transaction processing systems realizing distributed transactions. We identify the common problems that they all have in regards to interoperability and platform independence. Nonetheless, one of the primary goals of SOA is to boost code reuse thru loosely coupled interfaces. And this may serve as a elegant solution in which we will be able to combine the existing business systems in a loosely-coupled manner and having transaction control over autonomous services. This was basically the goal of the practical part of my master thesis - to show a sample solution which will be based on the SOA principles, providing distributed transactions to its clients. As a result, I implemented WS-Coordination protocol so that the concrete transaction models have a unified framework for coordination. The concrete transaction model I used followed the principles of two-phase commit protocol (2PC), provided by WS-AtomicTransaction specification. However, I'd like to say that the other transaction protocol WS-BusinessActivity, defined by WS-TX, is really very interesting one. It is best suited for long-time business transactions, which consume lots of resources for a long period of time. It tries to "relax" some of the well-known transaction properties ACID such as atomicity and isolation. I highly recommend reading this standard as well as the following article (link), which will give you a very good perspective what all these standards are all about. Here is a good place to express my gratitude to Mr. Dan House from IBM, involved with WS-TX group, who has been very responsive to all the questions I got about these specifications!

My master thesis is in Bulgarian so far, but I am planning to translate it in English (if I have some spare time). However, if someone of you is interested, you can always drop me a line and I will do the best of me to reply you. Following up this link, you can see just a short annotation of my thesis, which I believe will throw you some hints what it is all about.

Friday, June 16, 2006

Bill Gates going to retire from Microsoft?

Today while I was reading Microsoft presspass, I ended up on this article from yesterday. According to it, BillG will step out the role of Chief Software Architect to Ray Ozzie, who is currently CTO. This not will be one-time shot, rather it will be gradual and it is expected that by July 2008, all of Bill's responsibilities will be taken over by his successor. How is this going to change Microsoft? Will Ray Ozzie be able to follow and drive Microsoft as successfully as Bill has? Time will say. For sure, Ray Ozzie is very talented - check out this article to get a close view of his background. I gotta say that it is admiring - just to start with, he created Lotus Notes and Groove!

Thursday, June 15, 2006

Microsoft .NET Framework 3.0 - the idea

Today, I ended up on this interesting article, not suprisingly on Somasegar's web log (just for the record, he is the corporate vice president of the Developer Division at Microsoft). It shows what Microsoft plans are for the next generation of .NET platform. Put shortly, it will combine all of the existing .NET 2.0 functionality, but this time developers will have at their fingertips technologies like WPF, WF and WCF. According to this article, .NET 3.0 will be incorporated into Windows Vista, but for Windows XP and 2003 family - like an extension. Among these technologies, I am now reading about WCF - Windows CardSpace, formerly known as InfoCard. Put shortly, it is all about providing applications with standardized infrastructure for identity management. There will be some lectures on it on the incoming Microsoft Days on 21st - I hope that the presenters will give us a better and thorough view of this exciting technology.

Monday, June 12, 2006

Microsoft Days 2006 - Sofia, Bulgaria

Finally it is here! Every year Microsoft is presenting its newest technologies and platforms in a live exhibition here in Sofia, Bulgaria. The time has come . The event will be held on 21st and 22nd this month and will be in the famous movie theatre center Arena - Mladost. There we will be lectures showing great detail on Windows Vista, Windows Communication Foundation, BizTalk 2006, Microsoft CRM 3.0, so basically there will be something for each one beginning from IT administrators and ending up in hard core software geeks. Personally, I highly recommend this event, because after all we live in a technology era, where we should strive to be on the technology wave no matter of the specific vendor. I am always open to learn the innovative and new.

For those of you who can attend it, check out this site to see the program and the speakers. Keep in mind that the seats could easily run out, so don't hesitate to register ASAP here! :-)

Tuesday, June 06, 2006

Free download of Microsoft Virtual Server 2005 RC2

I've been using Virtual PC for a long time. It is so useful when you want to test your app on different Windows-based plaforms and OS. Virtual Server is its successor, having far more sophisticated hardware support and capabilities. So far, only MSDN subscribers could have had access to it, but hey, here comes the good news - the latest release - namely Virtual Server 2005 RC2 is now for free. Download it from here.

Monday, May 15, 2006

Virtual Desktop Manager for Windows XP

I've recently blogged about Compriz - the new Linux window manager. What really caught me there, was the great possibility to have different desktops with different applications on them. Well, today I occasionally ended up on the PowerToys for Windows XP page, where I found a similar tool that I've fell in love from the very first minute :-). It's name is "Virtual Desktop Manager" and can be found here. I really welcome the idea to have different desktops for different things I do and this tool allows me to accomplish this. I am usually with so many items opened and it's so hard to navigate between them. Definitely having different desktops for the different things I do will help me better organize my computer and work. On this page you will find some other useful tools like "Command Prompt From Here" and the famous TweakUI.

Hey, I know that this post is not very techy, but this tool really got me. I hope that it will give you a little bit of satisfaction and joy (as it did with me) :-).

Friday, May 05, 2006

Debugging OneWay Web methods

Damn, today I lost like 3 hours debugging for this one - I was not able to debug a Web method declared as OneWay. For those of you who are not aware, OneWay method is like calling a regular Request/Response Web method asynchronously. However, with OneWay Web method the ASP.NET will not wait for any return value from the Web method.

Well the first lesson learnt is: while debugging from the client side code, you cannot step into the server side code! Indeed, if you have a nice-and-tidy Request/Response Web method, you can step into the server side implementation right from the client side proxy. But taking into the account that the OneWay methods are executed asynchronously, obviously you can't do it in this way. What is your solution then? Well, you have to attach the target Web server's ASP.NET worker process (aspnet_wp.exe), set the breakpoints into your OneWay Web method and finally run the client side code (usually it is a Web form which calls your Web method). Simple as that! End of lesson 1.

And this is the place, where I am approaching the second lesson (in debugging XML Web services :-) ): in order to be able to debug your OneWay Web methods, your Web service should be compiled with ".NET" platform setting (not mentionting at all that the configuration MUST be DEBUG!). The case that I had was that there were couple class libraries included in the solution, which contained the business logic. The same class libraries were called by the Web methods. So far so good. The problem is that the build platform for these libraries is "Any CPU", which somehow is not compatible with the .NET debug configuration of the WEb services. So if I do NOT set the ".NET" platform to be active for the whole solution, then I am not able to hit my breakpoints in the OneWay Web method, otherwise - it is working nicely!

Ah, I am using Visual Studio 2005 Team System and of course, Microsoft .NET framework 2.0 - to give you an idea what is the development environment.

Well that's all folks - I hope that if someone of you ends up in the same problem, this could give him/her a solution! :-)

Tuesday, April 18, 2006

Distributed Atomic Transactions and Heuristic Outcomes

I've started working on my master thesis. To those of you who don't know, it is going to be about "Distributed Transactions in SOA". Pretty challenging and very interesting! There is still not much information about this, but in general the topic for distributed transactions has been around for like 20 years now. That said, there is a substantial research behind, but what is missing right now is the "glue", which will bring that knowledge to the SOA world.

I am planning to implement two different concurrency protocols - WS-AtomicTransation and WS-BusinessActivity. Nonetheless, WS-Coordination is the coordination protocol used in both of these concurrent protocols, so I have implement it as a pre-requisite. Well these protocols are still a work in progress by OASIS Web Services Transactions group (link).

Starting with WS-AtomicTransactions, I ended up on a problem, which occurred to be well-known in the distributed transactions and concurrency control namespace. It is called "heuristic outcomes" and it about the two-phase commit (2PC) protocol. Let's consider that after the first phase (the preparation phase), all participants reply with PREPARE/COMMIT message. Accordingly, the coordinator decides to commit the whole transaction and thus starts sending COMMIT message to all of the participants. But .. suddenly after he has sent the COMMIT message to 3 of the participants, an unexpected network outage occurs. So the remaining let's say 2 participants are waiting for their COMMIT message, but it doesn't arrive. To summarize - we have 3 participants which have already committed the transaction and another 2 which are wondering what to do (from here comes the term "heuristic outcomes", because the final decision of these 2 will make is somehow heuristic). Well, so far I haven't seen a resolution for this issue - it is rather relied upon that the logging system will be pretty sophisticated so that the administrator of your system will see this non-conformity and will manually "compensate" the COMMIT changes of the 3 participants and thus bring the whole system back in a consistent state.

Sunday, April 16, 2006

Query Notifications in ADO.NET 2.0

Query Notifications are a new feature part of ADO.NET 2.0. I gotta admit that the rationale behind it is really valuable - getting notifications back from the database server, when a given dataset of interest is changed. I've implemented the same functionality with MSSQL 2000 requiring periodical server polls, but this is really not very performant solution. With ADO.NET 2.0 and its Service Broker, you can have quick and elegant solution.

While the idea behind QN is really easy to understand, the documentation and examples are still kinda scarce. Not only this, but there turned out to be very small details, which may give you couple of hours in debugging in order to detect them.

To start with, here is a list of articles about Query Notifications in ADO.NET 2.0:

1. Query Notifications in ADO.NET 2.0 [link]
2. Using Query Notifications [link]
3. Enabling Query Notifications [link]
4. Using a Dependency to Detect Changes in the Server [link]

All of these will give you some very good understanding of what QN is all about. However, I found some problems with the examples in them, so don't be confused if you try them and they are not working - it is not you :)

Speaking of problems, one of the subtle things you should have in mind is that the query assigned to the SqlCommand object must be fully qualified (that is the table name should include the table owner, you should enumerate all interested columns in the SELECT clause rather than putting a simple * for ALL columns). Actually if you take a look at the following article:

5. Using SqlDependency for data change events [link]

you will see a bunch of things which the author has experienced (the same as me) while dealing with QN.

Another problem that I got was with my OnChangeEventHandler event handler. I initially received OnChange notifications although there were no DML operations on the monitored dataset. The info that I got from the SqlNotificationEventArgs parameter for this event was the following:

e.Source = Statement
e. Type = Subscribe
e.Info = Invalid

The reason for this was that my SELECT statement was using * for all the column names instead of fully qualifying the columns put in interest. I bet that if this is a problem, then the description of it should be somehow more descriptive and showing more symptoms of what actually caused the specific problem.

Another problem that I got was with the QN registration for the specific database you want to enable it. For this, you should check out the following article:

6. Using Query Notifications in .NET 2.0 to handle ad-hoc data refreshes [link]

SqlDependency is one way to use Query notifications in your application. What is worth noting about it, is that one SqlDependency is good only for a single notification. That said, after one notification has been generated through your SqlDepedency, you should re-create it if you want further changes to be captured. Another cool thing with SqlDependency, is that it can easily applied to ASP.NET cache object (check out article 1 for more information).

Thursday, April 06, 2006

SqlDateTime overflow problem and DATETIME columns allowing NULLs

Couple of hours spent in debugging and finally you see the problem is cased by a completely different reason. This was my today's experience.

So you have T-SQL insert statement for a table which has one of its columns defined as DATETIME which allows NULLs. You are passing an uninitialized variable for exactly this column in your INSERT (not purposely of course :) ), and the error you get is:

System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between
1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.


What do you do? Well, I was very confused seeing this message. I hit the Internet for a similar problem but I was totally deluded in stories that SqlDataType is not compatible with .NET DataTime type. Obviously I was on a wrong direction. Thus, after I reviewed my code, I saw that the value of the DateTime column, which allows NULLs is not actually NULL but rather DateTime.MinValue - indeed, and this is normal because each .NET variable once defined it is initialized with some default value (which in the DateTime case is DateTime.MinValue). Unfortunately, DateTime.MinValue doesn't really fit into the range of possible values for SqlDataTime.

What is the resolution? Well, I am using .NET 2.0, where there is a very neat generic type named Nullable. Check out this article for more info about it. Put shortly, using this type I am able to pass NULL values for the DATETIME column allowing nulls without getting the extremely confusing exception shown above.

Wednesday, April 05, 2006

LoginStatus control does the work

Today I was fighting with the well-known problem with Back button in Internet browsers for a session agnostic Web applications. Simply put, you have a Web app and at some point of time you want to sign out. Then you normally destroy the user's server side session, but the problem is that the user still can hit his Back button on the Internet browser and see a the cached content from the pages he/she has visited.

Well, this problem has been resolved long time ago - I remember it since the early ASP days. So normally what is done is to set the content expiration to immediate to *all* pages within your Web application. Of course, sometimes, this may be not desirable, but still in my cases it was essential not to give the user the possibility to go back. So the solution is to set 3 HTTP headers to all HTTP responses - Pragma, CacheControl and Expires.

Today, I had the same problem while implementing the logout functionality of our ASP.NET 2.0 based Web application (just to mention we are using very cool stuff like Microsoft Atlas, SQL 2005, Virtual Earth API - fascinating, isn't it?). Again, the old solution seems to be working (setting the aforementioned HTTP headers), but I somehow decided to try out the LogingStatus control. This control changes its state based on the current user status - if he is logged in it is a link which will allow him to Logout and if he is not authenticated - it will be "Login" link. And here are the good news - if you use this control, there is no need to set these headers to your whole application - it is done automatically to you when you use this control. Pretty sweet! :)

Monday, April 03, 2006

Cycle Clipboard Ring command

Visual Studio 2005 rules! Today I found the command named "Cycle Clipboard Ring" (on the Edit menu in VS2005 or using the default keyboard shortcut CTRL + SHIFT + V). While ago while I was so deep into the Visual Studio 6 development, I used a very popular tool named Visual Assist which was really like the paradise for all Visual C++ developers using VS6. So this tool had the same feature like "Cycle Clipboard Ring" I am referring now. I personally find it very useful to see a quick menu of all of your previously copied code blocks so that you can easily paste them. Love it!

Talking about "hidden" commands, there is one more I discovered today being very popular in Java IDEs in particular. This time this feature is part of ReSharper for Visual Studio 2005 (still a beta and not very stable thus, but still has very useful features without which I feel like I will get back in 1st grade :) ). Well this feature is named "GotoRecentFiles" and on the default keyboard scheme is accessed thru CTRL + E. This gives you a popup window with all of your recently accessed files. Sweet!

To some of you these features may not be very significant, but still when you deal with huge code bases, you want to minimize your time to switch between files and to somehow boost your productivity without dealing with routine things. I hope that this post will give some delight to those of you who are used to such kind of "widgets".

Friday, March 17, 2006

Team Foundation Server Released

Microsoft decided to split the VSTS product and to ship Team Foundation Server alone. The official release should be available within 3-5 days, as can be seen from this article. I am currently working on a project which uses VSTS for team collaboration and development, but still this platform seems to have some issues. I hope that this new release will be better one.

ASP.NET 2.0 quickstart videos

Today I found this very very valuable resource, where you can find useful videos covering HOWTOs for different features from ASP.NET 2.0 and the new Microsoft .NET 2.0 framework. I am sure that you will like this site - just don't miss it! :)

Enjoy!

Monday, March 13, 2006

Origami project

I don't know have you heard of it, but this is the latest craze in gadget world - Microsoft's Origami project. This device (said Microsoft) will be the next generation gadget, which will combine all the strengths of Tablet PC and Pocket PC. The official date when Microsoft announced this project was on 3rd March and I can tell you that this date had been the "most awaited day" for many people. However, it is too early to say when it will be made to the public (at least I haven't found such information yet), but still knowing what's coming up is valuable.

The official site of the project is this - check it out. I was personally amazed by the way the whole page is designed and the overall presentation to the viewer - it makes you somehow believe that this product will really change you life :-) .

Origami project will actually develop a ultra-mobile PC, which will be far away more than any personal assistant you have ever had, giving you versatile online connectivity thru Bluetooth, full fledged Microsoft office installed, exciting features like mapping, geocoding and GPS location tracking. The official OS which run on this device will be genuine Windows XP. The premium touch screen (which is really very very fancy, especially the keyboard!) and the whole user interface somehow resembles Tablet PC, but still if you compare the sizes the Origami device is far away smaller. If you want to know more technical details about this device, please go to the official Microsoft site, where you will find bunch of information about this topic - here.

Actually, there is a post on Channel9 about it, which I really recommend if you want to get some "hands-on" experience about what is it all about (see it here).

Free Microsoft beta exams

Folks,

There are 3 beta exams currently being free for a limited time:

71-547 PRO: Designing and Developing Web-based Applications by Using the Microsoft .NET Framework. Promo Code: PRO547
71-548 PRO: Designing and Developing Windows-based Applications by Using the Microsoft .NET Framework. Promo Code: BTA548
71-549 PRO: Designing and Developing Enterprise Applications by Using the Microsoft .NET Framework. Promo Code: 549BTA
(more information find here: http://www.microsoft.com/learning/offers/beta/)

Pay attention to the fact that if you take one of these, you will enter the lottary to win a smartphone! :-)

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!