Ivan Mitev In The Software Trenches

Technology weblog on .NET development and other things that make the world go round

September 19, 2005

Thesis ideas

I have been postponing graduating from my Masters degree in Computer Science at the Sofia University for a few years, but the deadline is close and the first thing for me to do is to come up with a decent idea. My Masters is in "Distributed Systems and Mobile Technologies" but the thesis may have little to do with this area. Nevertheless I find it to be a very interesting and hot field and actually I consider doing something with web services using .NET.

When I first thought about a thesis idea 2 years ago, I considered creating a GIS application, probably using ESRI web services. Now there are other options as Map Point (and Virtual Earth) and Google Maps, both of which have publics APIs.

But last week I ran into Amazon contest where one must build "an innovative and entrepreneurial application using Visual Studio 2005 with Amazon Web Services". There criteria points are creativity, AWS integration, commercial appeal, fit and polish. I made a quick search and found a lot of tutorials and sample code so there is enough info to get started. The technological problems are that I've not used web services before and I try to restrain from doing ASP.NET solution and tend to bring AWS to the desktop. But the real problem is that I have no idea what to do with AWS yet. Well, I have to figure this out soon because the applications are submitted until the end of the year. I don't really think I can do something to win the great prize but why not try to kill two rabbits with one shot. In fact there are even more rabbits here than the thesis and the contest. Two of those are hand-on experience with web services and VS.NET 2005, both of which seem pretty interesting.

September 17, 2005

Renewal

The habit of renewal as stated in Stephen Covey's classic The 7 Habits of Highly Effective People is about "continuous improvement that creates the upward spiral of growth". It is also known as "sharpening the saw" is a very important one for one's development in each area of one's life. For my programming skills I might consider spending some time in one of those areas:

Learn a new language: Ruby, Boo, Python or Eiffel
Try a new technology: Web, web, web (ASP.NET, Ruby on Rails)
Try a new technique: Test-driven development
Do things better: Get proficient with NAnt scripts
Try a new design technique: Learn about Inversion of Control (Spring.Net or Castle)

Well, this a nice list. I try to stick to the following peace of advice:

Feeling listless? Make a list!

Anders Hejlsberg on LINQ

Wow, you should really see Anders Hejlsberg revealing the Linq project and showing a few mind-blowing demos of it here. Now I see what was all this noise about! It is hard to explain why I am so excited, but you know that a demo speaks a thousand words :)

Book Reviewing

This week I was a reviewer of 3 of the chapters of the .NET book I blogged about here. That makes it a total of 5 reviewed chapters: Strings, Remoting, XML, Regular Expressions and last but not least .NET Framework Architecture.

I learned something from each of these chapters and actually Regular Expressions and .NET Remoting were about stuff I didn't know about. About the regex I realized after reading 77 pages how powerful and yet how complex this technique is. Unless you are a black-belt regular expression master I don't think in a complex scenario you can rely that your intent is imlpemented correctly by the regex. I used a regex once in the recent months to filter all the comments in C# files that started with two slashes (//) but were not XML comments (starting with ///). It worked like a charm but without the help of a friend and The Regulator I would have wasted at least half an hour. But you know, it is nice to see how much a single line regex can do...

Today another idea about the book struck me. It would be very nice to have a chapter about the future of .NET. I mean the the closer future: .NET 2.0, VS.NET 2005 and the further future: C# 3.0, Linq, VB 9 etc... I am not sure I will have time to do such a chapter (or to help in some way), but there is about a month to get it done.

September 16, 2005

ZBB (Zero B* Bounce)

The acronym ZBB stands for Zero Bug Bounce (as one can learn from Eric Gunnerson) .

Today I seemed to get rid off all bugs in the application that I was developing for the past month and reached the so called ZBB. It was a relatively simple app that I ported from C++ to C#. In fact I completely rewrote it since traditional C++/MFC programming is quite different from .NET programming with C#. I wonder why it took me so long - probably the most time went for understanding what the app did and how it did it. I don't find C++ very easy to ready, though the design of the code was pretty good and understandable. In the meanwhile I tried some new tools and got experience with some .NET classes I had not used much before: some WindowsForms controls, some registry manipulation, some XML. Not anything complex, but it was nice to get some real experience with those. Well, let's see what challenge will come next...

Another ZBB I reached today is Zero Blog Bounce - a term that I saw here. This applies to my work blogroll, the home blogs usually get ZBB on sundays :) Nice, one distraction less!

September 10, 2005

Amazon as book information source

Amazon is definitely the ultimate place for to me to search for books and to see what other people said about them. I also love features like the Wish List and the Listmania. Yesterday I updated my software books wishlist and my listmania for the software books, I truly recommend. Strangely, all items are rated with between 4 and 5 stars :)

Since US is quite far away and the shipping expenses are huge I checked Amazon UK to see what it is like there. I was surprised that their website does offer not exactly the same interface. There are a few features missing and definitely less books available.

September 08, 2005

Scott Hanselman on Code Generation

I just finished listening to and watching the MSDN Webcast: Code Generation: Architecting a New Kind of Reuse. The presenter was Scott Hanselman, who works at Corrilian. I was really fascinated what kind of things his company accomplishes with the technique of code generation. They develop .NET applications that talk to their old C code-based systems to provide a friendly GUI using ASP.NET. In order to automate and make their work more maintainable, they use declarative XML files and powered by CodeSmith they generate code, build scripts, config files, unit tests, Word documentation, CHMs etc...

I have read about similar things in real projects in the Pragmatic Programmer book, but at that time they seemed a bit like science-fiction. Though all the steps seemed achievable or even simple, I guess many of us would not even think of such approaches. Or will hesitate to enter such a challenge due to the supposed complexity increase of the system. But sometimes what seems complex, turns out to be the cleverest thing to do :)

Btw, this was my first time watching a MSDN Webcast. There are definitely a lot of good sessions offered at MSDN, if only one has the time.

September 01, 2005

VS.NET Productivity Add-Ins

Since, I've investigated and tried quite a few VS.NET 2003 Productivity Add-Ins I will just put a short list here. These are general purpose add-ins. Most of the are feature-rich in various areas where the default VS.NET functionality comes short.

The tools, I've tried (and all of which are truly awesome) are:
The tools, I've not tried yet (but seem worth mentioning) are:
These add-ins can make your VS.NET experience a lot more comfortable. If you are not using any of them, you are most likely wasting time and energy that can be invested in another direction. Some of them work well together, some not, but you can always enable one when you actually need it.