Google Maps API
Finally it's time to explore the world from my computer. The power of Google Maps is at the hands of the Developer. This opens up tremendous opportunities to do interesting things. I will blog about my attempts later.
WebParts: A Portal Framework
I prototype should be my new nickname. Have been prototyping lot of the new ASP.NET 2.0 feature list. Some are not even documented. But there are some good folks at M$ who care to put that on their blogs so that mortals like me can leech. The MSDN-2 is pretty barren at the moment with only stubs for the various sections. Hopefully that will change soon with an imminent shipping date for VS 2005.
One of the coolest and certainly rich feature is WebParts: A complete portal framework. I think it's fun leaving aside the long-hours-of-internet-search-for-documentation. Fortunately WebParts leverages the SharePoint portal framework so some of the undocumented stuff can be found there. I am particularly curious about the SharePoint SmartParts. With WebParts in place, we don't even need a SharePoint portal anymore. SmartParts can be hosted on a vanilla IIS with ASP.NET 2.0.
My MSN is the place to be if you still don't know what WebParts is all about. You will need a Microsoft Passport account like Hotmail to really see the
Personalization feature of WebParts.
I wonder how is
DotNetNuke pitted against WebParts. A comparison should be in order.
www.hibernate.org - Why This Project Is Successful?
Some good things to learn from this project. Pretty general and will apply to any project, may be just leaving out the open-source part :)
My FireFox extensions
Over time I have found these firefox extensions to be extremely useful. For my own records, in case I decide to do a reformat+OS install, I am listing my set of plugins:
- ForecastFox
- Download Manager Tweak
- FlashGot
- GoogleBar
- IEView
- Mouse Gestures
- Tab Clicking Options
- Gmail Notifier
- AdBlock
- Aardvark
- BlogThis
- Sage
If there are more out there which people have found to be useful, I would certainly want to know.
The Artima Developer CommunityThis is a fantastic weblog for all great articles on OO design. I was referred here by the Team System website for the article
How to Use Design Patterns. The article is an interview of Erich Gamma on how to / how not to Design Patterns. In many ways this is the most misunderstood topic in OO design.
The resources section in that article points to two books
- Head First Design Patterns
- Refactoring to Patterns
Great find for the day!!!
'You've got to find what you love,' Jobs says
This article is a must read for everyone. I thoroughly enjoyed it and has made me realize a couple of things. Hope it helps others as well.
The 80-20 rule of Software design
My Manager at the company where I intern was just back from TechEd 2005. We had a long discussion about the various tools, technologies that were introduced and some of the sessions that he attended. I particularly liked one of the comments that he made about software design. This was something he picked up in one of the Cabana sessions. A Cabana session is gathering of small group of people who discuss/debate on a particular topic.
He pointed out that no one should strive to design with a goal to meet 100% of the needs. This is particularly true when one is developing a framework/ platform/ library for general use. It is just not possible to encompass all possible cases. There is a balance that has to be maintained about the extensibility/scalability of the design and the needs of the customer. This balance is 80-20, where 80% of the cases can be handled and rest 20% is left untouched.
Extensibility is good to a certain extent but cannot be stretched to any extent. Beyond a certain point it is upto to the customer to probably redesign/rethink the approach to accommodate within the confines of the software design. If the needs are such that the design cannot handle, it only shows that the library/tool is not fit for the requirements at hand. It is a sign of looking at other possibilities. But this will get handled anyway during the prototyping stage. Hopefully.
Will Team System 2005 render NUnit useless?
Previously the most widely used tool for Unit testing with C# was NUnit. However with the introduction of the Team System 2005 by Microsoft, TDD has become tigthly integrated. It is now possible to do a wide variety of tasks:
- Point and click Test stub creation
- Visualize the code coverage
- Integrated Test Manager (TestRunner)
- Custom test list creation
- Both Manual and Automated testing support
- .... probably some more that I have missed
With such an integration, I wonder if any C# developer would continue using NUnit. Probably only to support the existing tests. But any new development will most probably use the Team System tools. The testing tools already look promising and they should only get better by the November 7 release of Visual Studio 2005.
Why do we think so often of abstraction?
I read somewhere that Computer Science is the science of abstraction. As a developer we continuously try to hide the details so as to deal with the problem at hand more easily. Such details are essential to get the work done but beyond that it is the ease of programmability that takes over control. Abstraction is definitely a key element in developing software.
Abstraction exists at different levels and at each level we try to provide ease of programmability. As we go to the architecture level, we need abstraction not just to hide details but to hide the variability of the system. Take the case of interacting with different kinds of databases to store data. At the backend layer, we don't want to deal with database specific code because it is possible to change the database at the later date, say for performance reasons. Thus we try to hide this fact by providing a layer of abstraction. Here we are trying to abstract the variability of the database.
Ease of programmability and hiding variability seem the only two compelling reasons for abstraction.
The "Metro" document format
If you have not already heard about it, here it is: Microsoft is coming up with a new XML-based document format called Metro. The name sounds cool but is the technology?
PDFZone carried out an interview with Adrian Ford, CTO of Global Graphics, the Microsoft partner that is working to bring up the Metro specification and also a prototype implementation.
Metro is planned for the Longhorn release and would also change the print subsystem of Windows. There will be new capabilities added that would allow richer printing. Ford discusses some of this in this
interview. I am sure some of this work has rubbed on the Office 12 XML formats.
Some say the Metro format is in direct competition to Adobe's PDF. I feel, in the end, both will co-exist.
Outlook Add-ins
Discovered the
TechEd blog today. Will follow it till it gets over on June 10. Some of the videos are available via
podcast.
Developing Outlook add-ins has become much more easier with the Visual Studio Tools for Office System. I squeezed in a half hour to quickly develop a small add-in that just displays the number of tasks. However I also learnt the architecture and how add-ins were developed earlier (COM add-ins). I think it would be cool to have a FeedReader right inside Outlook 2003. Most of the necessary tools and UI are already available. One of these days I should take this path and explore little more.
Visual C# Developer Center : C# Programming Videos
I am always curious to know what is in store for the coming version of the .NET platform. I found this link out of a search for such information. Anders talks about the new C# 3.0. I guess lot of it is influenced from the C-omega language. Check out for more.
High on Avalon
The best way to get upto speed with a new technology is to start a Pet-Project. Just this time, the technology was Avalon, the new Presentation subsystem for Windows Longhorn and the project, a Blogger Client. I always wanted my own blogger client which would have all the nice features I wanted.
I have divided the project into 2 stages. In the first stage, the client would only be able to read news using the Atom API. This is because I blog mostly on Blogger.com and they support Atom. I got hold of
Atom.NET that provides a library for reading/writing Atom feeds. That taken care I started exploring XAML. Here is the basic interface I came up with. Notice the cool Gel button on the top-right corner. Enjoyed creating that.
The Atom.NET library returns the blog entry text as HTML. To display it well I need a WebBrowser control. Unfortunately Avalon still does not have a WebBrowser control but Windows Forms has one. But how would I use a WinForms control in Avalon? Enter the
WindowsFormsHost class that supports embedding a WinForms control inside Avalon. Did a little bit of configuration to disable the context menu on the IE control and there I had it: a neatly embedded IE control inside an Avalon Application.
Next I will spend some more time understanding Styles/Themes in Avalon. That would spruce up the App.
Webcast is my Movie time
The greatest revelation for me after coming to US is the ability to watch Webcasts without always downloading them. This is a great benefit because there are many cool things that I get to learn just by watching these webcasts. The webcasts that I am talking about are primarily on .NET technologies and everything concerning it. Some of my favorite shows are .NET Rocks, MSDN TV, the .NET Show and any other On-Demand webcasts that are put up on MSDN and other places.
MSDN TV:
http://msdn.microsoft.com/msdntv/archive.aspx.NET Rocks:
http://www.dotnetrocks.com/the .NET Show:
http://msdn.microsoft.com/theshow/
Team System 2005 is amazing
Microsoft has a great new Visual Studio lined up for developers. I feel they have brought a product that they must have been using internally for a long time. My internship at Landmark has given a great platform to explore the new .NET Framework 2.0, ASP.NET 2.0, Visual Studio Team System and ofcourse Visual Studio 2005 Beta 2. It is just so enjoyable to use these products and develop software. Want to get nose deep into this!
Check out:
http://lab.msdn.microsoft.com/teamsystem/On the site you will find links to On-Demand Webcasts that present the features of Team System 2005. A must see for all eager developer minds.