Changes to the website

A couple of months ago I talked about adding AJAX features to my blog which would enable adding comments to every post right from the home page. As a prerequisite to it I added Captcha support to the feedback section of this blog. I learnt a valuable lesson from this exercise. Never start big on any thing you do, especially when you are working by yourself and not as a team. The scope of the project was so big that even though I wrote a lot of code to achive my target, it always felt like I was missing something. Hence I have decided that in the future I will do small incremental updates. Especially since the turn around time is not as fast as I would like it to be. Having made this decision, I have rolled back the Captcha support (commented out the code) until I find a real use to it. My blog is not target of any spam and hence there is no need to complicate the user experience and the codebase. I have been debating off and on about moving to community server, but everytime, I turn it down because that deprive me of any motivation to keep coding / enhancing the website. I do not have any good weekend projects in hand and hence until I come up with some I will keep playing around with enhancing this blog. Now I just hope I get this through my thick head and stop those urges of moving to community server.


Migration to Godaddy.com

It's been a long time since I started hosting this website on my home computer. I finally decided I wanted to go for a hosting solution. I mainly wanted to do this for better performance. I had noticed when accessing my website from work that it was a bit slow to respond. I did review my code multiple times to make sure that it did not have any big performance holes. I went ahead purchased a one month subscription which was suprisingly cheap at $6.99. Godaddy was very quick in responding and I was super excited to get access to the hosting server the very next day. I moved all the front-end code using ftp and started to port my backend (SQL Server 2005) to Godaddy's SQL Server 2000. Unfortunately this was a very bad experience for me. No 1. you cannot access the database server using a tool like enterprise manager (rightly so, they do not want any outside access for security reasons). I was impressed with the web based client that they had, but it would simply not do the job.

You can upload a csv file and import all the data from the file to your db. Unfortunately it was not as simple as it sounds. If you had foreign key constraints, obviously it would simply fail the insert statements. I tried a lot of different options, including generating dynamic insert statements (after removing all constraints, auto number on the primary key field) using custom queries that I wrote, but those kept getting complicated with every bug I fixed.

Some of the rows did get inserted into the Godaddy db, and I left the site hanging just to see what performance gains I had achieved. Interestingly it did not make all that big a difference and I decided that all that effort was simply not worth it.

In the end it may turn out that I did not know how to use the tool, or how to do a successful migration, but I think it does not have to be rocket science to migrate data from one machine to another. I have done many a conversion from different databases in the past but none were as painful as this one. This experience taught me a very useful lesson, no matter how powerful the web gets, the place for desktop applications will remain for a long time.

I still have the godaddy account, but I plan to cancel it within the next 10 days. Luckily I did not buy a whole year solutions (which I was planning to do intially), which left me this option of rolling back to my home computer.

Moral of the story for me was that if at all I had to port my solution to a hosting company, I would only do it if I had complete physical access to the machines even if it meant spending a lot more dollars. In this case as I said before it simply wasn't worth it.


Nanotechnology

Author: Lilly Wang

Nanotechnology is a hot topic these days.  Just imagine you now can control the construction of material on the molecule level, it is really an exciting step in both science and engineering. 

 

In regular organic reactions, the molecules tend to form a random state to achieve the maximum entropy for the stability.  In another word, the material won’t be stable if the structure is not in a random state.  In contrast to this, the nanotechnology basically builds up the structure with molecules aligned (ordered state).  And if the molecules are polar (meaning it has dipole), the material constructed in this way will create enhanced electrical and optical effects.  Also the way this type of material interacting with other material including human cells will be different since they are polar and have magnetic effects.

 

As a matter of fact, the nature has built material in this way much long before we found the nanotechnology.  Think about protein and DNA, they are all self-assembly, ordered structures that our bodies can create themselves.  Some of the techniques used these days borrow that idea.  When I was in graduate school, my dissertation was working on the synthesis of constructing aligned material (thin-layer) on gold surface.  Those good old days...

 

If you are interested in nanotechnology, the wikipedia site has really good coverage.  Maybe we can discuss more later ...

Wiki pedia nano technology link


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).


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.


What would I have done without FreeTextBox

Today when I was typing up my Internet Explorer bug entry, I messed up so many times that I had to retype some of it. I still ended up hand editing the entry from the backend for the hyperlinks and line breaks. At that point I decided I had enough and started googling for a free web based rich textbox. Here's what I found, a real diamond FreeTextBox. It was very very simple to include it in my project and here I am typing away using FreeTextBox with all the possible formatting at my finger tips.

WOW! it works in Firefox too, and no I am not a sales person for FreeTextBox.


Take two!

This is my second attempt at blogging. I had big plans when I had started this website the first time around about a year back. Today I don't want to make any promises to myself that I can't keep. I am going to use this blog to document anything new that I learn over the course of the day so I can refer back when need be.


Arrgggghhhhh!!!!

I completely messed up. I deployed my website using asp.net 2.0 precompiler command line utility without making backup of my work.

When you run the precompiler it deletes all the folders from the destination directory and then deploys the source. Before running this utility I forgot to take a backup of all my blog entries and ended up loosing all the hard work.


Finally I get to blog

Hello, This is my first blog and am very excited about it. I plan to discuss the software industry in general with more emphasis on .NET and Longhorn technologies.

I have written the code behind this blog with a lot of inspiration from BlogX by Chris Anderson. I had initially planned to store the blogs on SQL Server 2000, but after going through BlogX I used the idea of serializing objects to XML.

Hope it all works out.