Microsoft vs Linux vs Mac OS X

Author: Girish Bajaj

So which os do you think is better? Linux or Microsoft or Mac OS?
I know MS has better UI, and Linux does not, but Mac is becoming very popular and linux is very good at multi tasking.

I dont like working on MS because it hangs so often. So is linux good? Is Mac OS the ultimate OS since its got an awesome UI and based on linux?

Im going to install Linux at home now and check it out...


XML - handle with care

I have been working with XML for about 5 years now and I would like to share my pain points with you. One big thing I have learnt about XML is that you cannot use it anywhere and everywhere, because sooner or later you are going to have an XML hell. Let me give you some examples.

When I created this website about a year back I did not want to use a heavy backend for it. I searched around for a lightweight database and did find some (I know you are asking for the names of those light weight databases but it's been a year now. I shall dig up some materials and add a separate post later). After not finding any good one that works well with .NET I decided to use XML. After all XML is everyone's favorite. Today as this site stands, it is running off of SQL Server. WHY?

  • I invited a couple of friends to blog on the site, but as soon as I did that, I realized that I would have concurrency issues.
  • I have added features like entries by author and entries by category. Adding those features with XML would be difficult. A lot of custom code would be required.

Second, I created a project about 3 years back where I stored a lot of information in XML files. Later due to load that application had to be run on multiple machines. Soon we were heading towards XML hell. Individual machines had a bunch of XML files. Anytime you had to search for anything you had to go to each and every machine and search the directory with *.xml.

So what is the moral of the story? Do not use XML? No, use XML, but plan ahead. Sometimes it is very difficult. Projects start small and everything works fine, until it gets bigger and bigger and things get out of hand. I am not saying XML is at fault. I am saying we need to be very careful of when and where to use XML.

In both the above examples when the project started, it started small, I never thought of inviting a bunch of friends to blog on my site. I realized the problem sooner, so I could fix the issue before it took my site down. Like wise for the other project I migrated all the data to SQL Server just like this web site and things started turning around.


Why should I wear a seat belt?

Some people never like to wear their seat belt. If you are one of them just watch this video on youtube.com and see if it changes your mind.

Some people can be really sick, what the journalist said in the video was simply pathetic.

WARNING: the video is graphic (not nude), so watch it with caution


Added RSS support

I have added basic RSS support for this website. If you are using Firefox or IE7 you should see the orange RSS/Feeds button enabled.


.NET Gotchas and Generics

I have been following DnrTV for some time now, and I want to recommend the following 2 videos a must watch for anyone who is serious about .NET programming.

Both these videos are presented by Venkat Subramaniam. He is a very good teacher. He teaches OOP to undergrad students at the University of Houston. I am really thinking of taking a course with him.

Just checked DnrTV and he is back with another show this time on .NET in general. I am off to download the latest video. More later!

UPDATE: The latest show was just ok. It did have some good examples, but there was too much talk about dynamic languages than .NET. He is going to come back with another show on the language Ruby. It will be an interesting show to watch.


Finally a breather

Well, I finally wrapped up switching to SQL Server 2005 and cleaned up all the bugs as of last night. It took me a total of 3 late nights to migrate over (which is not bad considering a new business logic that talks to stored procedures to handle data), but switching to a database gave me simplicity and less coding out of the box. I no more have to worry about file locking and corruption issues any more.

Following are the features that I added after the migration:

  • List all entries by author
  • List all entries by category
  • Archive listing with count of entries per month
  • Ability to disable comments on an entry (administration)
  • Ability to delete a blog entry (administration)
  • Ability to delete comments (administration)
  • Ability to edit a comment (administration)
  • Creating a new user (administration)

Now that I have wrapped up V1, I have started thinking on some other super important / nice to have features. At this point the top priority items are:

  • Search
  • RSS

For the next couple of days I plan to review my code and see if I can improve the codebase, after which I will start working on Search / RSS.


Wohooo! moved to SQL Server

I have moved my existing XML file based blogging solution to SQL Server. This should allow multiple people to work with their blog entries. Also have added a couple of new features. You can now click on the "Category" (Tag in red) and read all entries by that category. Also you can click on the "Author" and read all entries by that author.

Some bugs may have crept in, please let me know if you find any.

Lilly, don't freak out, the entry you made yesterday shows the author as me :). I need to create a new user for you after which I will have to fix the author for that entry in the backend.

Thanks,


Decision on Community Server

After going back and forth on making a decision, I finally decided that I will stick to my existing code base. I really enjoy coding and did not want to take away the fun in coding my own solution as opposed to using a ready made solution. I know I would be reinventing the wheel, but that's what weekend coding is for.

The biggest change that I am planning on the site is moving the existing code of saving blog entries to XML file to saving them to a database. This is especially required since I have asked a couple of good friends of mine to enter their own blog entries here. File locking would simply kill the enthusiasm.

I am already through with the database schema and business logic and am currently testing the solution. Basically I have 3 tables Categories (used simply to tag blog entries), BlogEntries (stores all the blog entries entered by various authors) and Comments (any feedback received on a blog entry). Once I am done with testing, I have to migrate existing XML file entries to the database (this is going to be fun).


Smart Client or Asp.net?

Recently I have been being perplexed by the decision of using either Smart Client or ASP.net for a project that I need to set up in our company.  Here are some facts about the project:

  • The users of this system include intra-department personnel (which we have better control of the computers they use) and inter-department personnel (less or no control).
  • The system has both simple data entry forms such as  service request, and complex forms which require to use multiple attachments and multiple embedded images.
  • The system also has the workflow features which can notify the corresponding parties of any updates or new assigned action items.  By clicking on the link of the notification, it should bring the user directly to the form/report of the content.
  • For future scalability, the system should also be able to open to personnel in different countries (more accessibility).

My initial analysis concludes that I should have two versions for the project with Smart Client as the master and the ASP.Net as a support.  All forms should be available in Smart Client version, while the simple forms or reports should be available in webform version as well to benefit the users who only have web access.  The update/deployment of the application should be simplified by the click-one technology.

This seems to be all good until today.  I just realized the cost of using Smart Client:

  • All client machines need to install .Net framework.
  • All the users need to have administrator privilege of their machine.

In reality? It is very hard to achieve.  Not to say the IT department would not allow us to install the framework in all the machines, and would definitely not allow all users to have the administrator’s privilege, just think we have more than 100 machines in our department, what’s the cost of installing the framework as well as the application in each machine?

So back to square one – Smart Client or ASP.Net?

Here are some reference to smart client:

Smart Client Part I

Smart Client Part II

Smart Client Part III


Should I or shouldn't I?

I have been thinking of switching my website to Community Server 2.0 for a couple of days now. The look and feel would remain the same, only the codebase would change from my source code to CS source code. I will have some migration to do, but I'm thinking it won't be a big deal.

What do I gain?
They have a slew of features in the product. You get blogging, forums, photos, themes and whole bunch of other features out of the box.

What do I lose?
Well the website in it's current form is all hand coded by me. Although I have taken ideas from a whole bunch of other projects, the coding is all mine. Since the solution I have is not complete, it gives me the oppurtunity to add more features and learn new things as I go, but then I wonder is there really any point in reinventing the wheel.

Hmmm.... this is really difficult (I am leaning towards CS), hopefully I will make up my mind in a couple of days. By the way, for anyone who really wants to learn how solid software is built needs to look at the Community Server source code. Yup, it is free to download, although they have better configurations (like ability to deploy in a web farm) that comes at a price. For the rest of us, we should be pretty happy with the free version.