<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1512484981131643219</id><updated>2012-01-26T05:25:24.524-08:00</updated><title type='text'>Share Your Experience</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-4173375793099451865</id><published>2011-07-30T07:39:00.000-07:00</published><updated>2011-07-30T08:04:22.474-07:00</updated><title type='text'>Exploring NHibernate Projections and Transformers</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Its been a month since I am actively working with NHibernate queries using criteria API. Initially it was taking me long because I wasn't aware of many things but now I has started to prove its worth. I can feel that now I am more comfortable with NHibernate. As an attempt to preserve some of our legacy codes that contains SQL for reporting purposes I had an experience of writing some naughty queries around ICriteria API. During this porting work I was into a lot of NHibernate projections and Transformers.&lt;br /&gt;&lt;br /&gt;In criteria API projections help you do the aggregation and grouping. For example if you need to do&lt;i&gt; COUNT()&lt;/i&gt;, &lt;i&gt;SUM()&lt;/i&gt;, &lt;i&gt;AVG()&lt;/i&gt;, &lt;i&gt;GROUP BY&lt;/i&gt; then you are going make use of Projections. They key to make use of projections in criteria API is &lt;i&gt;SetProjection() &lt;/i&gt;method of &lt;i&gt;ICriteria.&lt;/i&gt;&amp;nbsp;Let's get to our first code example making use of &lt;i&gt;Projections &lt;/i&gt;and see how it works. Suppose we have table called &lt;i&gt;Product &lt;/i&gt;and we want to find number of products where product name contains word &lt;i&gt;'free'&lt;/i&gt;&amp;nbsp;through criteria API. If we do it via standard SQL then our SQL is going to be something like this&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;SELECT COUNT(*)&lt;br /&gt;FROM Product AS P&lt;br /&gt;WHERE P.Name LIKE '%free%'&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;and with Nhibernate criteria API it will be&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;int count = NHibernateHelper.CreateCriteria&amp;lt;Product&amp;gt;("P")&lt;br /&gt;            .Add(Restrictions.Like("P.Name", "free", MatchMode.Anywhere))&lt;br /&gt;            .SetProjection(Projections.RowCount())&lt;br /&gt;            .UniqueResult&amp;lt;int&amp;gt;();&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;If we look at the code what we have done is we used NHibernate fluent coding style to create a criteria object for Product entity. Then we added a restriction for name and finally for set the projection for RowCount. As the result of this query is going to be scaler value of integer type so we executed the query using &lt;i&gt;UniqueResult&lt;/i&gt;&amp;nbsp;generic&amp;nbsp;method by asking to return us the&amp;nbsp;scaler&amp;nbsp;value as integer value.&lt;br /&gt;&lt;br /&gt;So far we discussed very simple case of projection where we were needing number or rows. In real word queries are more complicated most of time then just having number of rows :). So before we go and discuss some complex cases of projections we need to have an idea of Nhibernate Transformers.&lt;br /&gt;&lt;br /&gt;Probably you can understand from the name that they have to &amp;nbsp;do something with transforming stuff from one shape to another. Yes you are right transformers helps you transform the results. In order to set a transformer you need to make use&amp;nbsp;&lt;i&gt;SetResultTransformer() &lt;/i&gt;method of criteria API. For example let's say we have two table called &lt;i&gt;Product&lt;/i&gt;&amp;nbsp;and&lt;i&gt;&amp;nbsp;OrderItem &lt;/i&gt;where one product can belong to many order items. Suppose we need to get all distinct products that's been sold. The SQL to this going to be something like&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;SELECT DISTINCT P.*&lt;br /&gt;FROM Product P JOIN OrderItems AS OI &lt;br /&gt;ON P.ProductId = OI.ProductId&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Now we in order to do this with NHibernate criteria API we are going to make use of a Transformer to get distinct product objects.&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;IList&lt;product&gt; products = NHibernateHelper.CreateCriteria&amp;lt;Product&amp;gt;("P")&lt;br /&gt;                .CreateCriteria("P.OrderItems", "OI", NHibernate.SqlCommand.JoinType.InnerJoin)&lt;br /&gt;                .SetResultTransformer(new NHibernate.Transform.DistinctRootEntityResultTransformer())&lt;br /&gt;                .List&amp;lt;Product&amp;gt;();&lt;br /&gt;&lt;/product&gt;&lt;/code&gt;&lt;/pre&gt;In above code the line&amp;nbsp;&lt;i&gt;SetResultTransformer(new NHibernate.Transform.DistinctRootEntityResultTransformer()) &lt;/i&gt;is setting transformer on criteria object that will make sure to emit list of unique products.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: 12px; line-height: 14px; white-space: pre;"&gt;&lt;/span&gt;&lt;br /&gt;Now that you have an idea of transformers we need to look at another and most probably the one that you are going to use a lot with projections is &lt;i&gt;AliasToBeanResultTransformer&lt;/i&gt;. This is very powerful transformer and it lets you map your custom objects in NHibernate criteria API queries. For example you may came accross a situation where you will be needing a custom column set instead of just complete NHibernate entity object. You may find yourself in such situation quite often while doing reporting related stuff. For example let's say we need to do a report on our &lt;i&gt;Order &lt;/i&gt;table where we have another table called Customer and one customer can have many orders. Suppose we want to find total number and amount of sales for every customer. The standard SQL to this is going to be something like this&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 14px; white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;SELECT COUNT(*)AS NumberOfSales, SUM(Charges) AS TotalSales, CustomerId AS CustomerId&lt;br /&gt;FROM Order&lt;br /&gt;GROUP BY CustomerId&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;Now when writing the&amp;nbsp;corresponding&amp;nbsp;NHibernate criteria query the&amp;nbsp;challenge&amp;nbsp;that we have is we got custom columns select clause. NHibernate doesn't allows to load unmapped data and in this case we have unmapped custom columns not NHibernate entities. So in order to get this done we are going to ask our new best friend&amp;nbsp;&lt;i&gt;AliasToBeanResultTransformer&lt;/i&gt;&amp;nbsp;to help us out. So in order to use this transformer the first thing that we need to do is to create our custom&amp;nbsp;wrapper&amp;nbsp;class to hold the data. Its going to be something like&lt;/div&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;  public class SalesData &lt;br /&gt;        {&lt;br /&gt;            public int NumberOfSales { get; set; }&lt;br /&gt;            public decimal TotalSales { get; set; }&lt;br /&gt;            public int CustomerId { get; set; }&lt;br /&gt;        }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;Now our Nhibernate query is going to be something like&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;IList&amp;lt;SalesData&amp;gt; sales = NHibernateHelper.CreateCriteria&amp;lt;Order&amp;gt;()&lt;br /&gt;                .SetProjection(Projections.ProjectionList().Add(Projections.RowCount(), "NumberOfSales")&lt;br /&gt;                .Add(Projections.Sum("Charges"), "TotalSales")&lt;br /&gt;                .Add(Projections.Property("CustomerId"), "CustomerId")&lt;br /&gt;                .Add(Projections.GroupProperty("CustomerId")))&lt;br /&gt;                .SetResultTransformer(Transformers.AliasToBean(typeof(SalesData)))&lt;br /&gt;                .List&amp;lt;SalesData&amp;gt;();&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;In above code the first thing that you will notice is &lt;i&gt;Projections.ProjectionList()&lt;/i&gt;. ProjectionList let's you add multiple projections as in our case we need four projections. The next thing that you will notice will be &lt;i&gt;Transformers.AliasToBean(typeof(SalesData))&lt;/i&gt; where Transformers.AliasToBean is a quick way to get an instance of under lying &lt;i&gt;AliasToBeanResultTransformer&lt;/i&gt; and secondly we are passing type of custom &lt;i&gt;SalesData&lt;/i&gt; class. That's it. When executed this query will return list of SalesData objects filled with data from your custom unmapped columns.&lt;br /&gt;&lt;br /&gt;Now that you have an idea of projections and transformers you will see that you will be able to do very complex reporting queries with these both awesome features of NHibernate criteria API.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-4173375793099451865?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/4173375793099451865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=4173375793099451865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4173375793099451865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4173375793099451865'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2011/07/exploring-nhibernate-projections-and.html' title='Exploring NHibernate Projections and Transformers'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-4907894951400188389</id><published>2011-06-21T09:26:00.000-07:00</published><updated>2011-06-21T09:27:50.883-07:00</updated><title type='text'>NHibernate and select one column only</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;You can make use of &lt;b&gt;Projections &lt;/b&gt;when it comes to selecting from specific columns. For example sometime you may need to select values only from Id column instead of loading complete matching rows.&lt;br /&gt;&lt;br /&gt;Lets quickly take a look at an example. Suppose we have a table called &lt;b&gt;Customer &lt;/b&gt;with columns Id, FirstName, LastName, Street, City, PostalCode, Country. Now when doing our query we only want to select all Ids less then value 10. We can accomplish this by doing&amp;nbsp;something&amp;nbsp;like this&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;IList&amp;lt;int&amp;gt; customerIds = session.CreateCriteria&amp;lt;Customer&amp;gt;()&lt;br /&gt;                .Add(Restrictions.Lt(&amp;quot;Id&amp;quot;, 10))&lt;br /&gt;                .SetProjection(Projections.Property(&amp;quot;Id&amp;quot;))&lt;br /&gt;                .List&amp;lt;int&amp;gt;();&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-4907894951400188389?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/4907894951400188389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=4907894951400188389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4907894951400188389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4907894951400188389'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2011/06/nhibernate-and-select-from-only-one.html' title='NHibernate and select one column only'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-4825212998680685446</id><published>2011-06-20T14:49:00.000-07:00</published><updated>2011-06-20T14:49:56.363-07:00</updated><title type='text'>Select by foreign key and NHibernate</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Recently I &amp;nbsp;came across NHibernate. We were thinking to replace our home grown&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; line-height: 15px;"&gt;&lt;em style="font-style: normal;"&gt;persistence code generator with an ORM. We had two options either Nhibernate or Entity Framework. After evaluating these two awesome frameworks we picked NHibernate.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; line-height: 15px;"&gt;&lt;em style="font-style: normal;"&gt;&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;i style="font-family: arial, sans-serif; font-style: normal; line-height: 15px;"&gt;So far we were using our custom written code generator which was emitting code modeled around Active Record pattern. During the development you will find yourself in a situation quite often where you will be needing to load some objects by some foreign key. This will be the case in many-to-one relation. For example load all products belonging to category with Id equal to 4. This is very easy when you are writing your custom query for example in our case before NHibernate we used to write text query. Then execute it as datareader,&amp;nbsp;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;iterate&lt;/span&gt;&lt;/span&gt;&lt;i style="font-family: arial, sans-serif; font-style: normal; line-height: 15px;"&gt;&amp;nbsp;over reader to create objects. Finally return&amp;nbsp;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;collection&lt;/span&gt;&lt;/span&gt;&lt;i style="font-family: arial, sans-serif; font-style: normal; line-height: 15px;"&gt;&amp;nbsp;of all &amp;nbsp;objects.&lt;/i&gt;&lt;br /&gt;&lt;i style="font-family: arial, sans-serif; font-style: normal; line-height: 15px;"&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i style="font-family: arial, sans-serif; font-style: normal; line-height: 15px;"&gt;Now when defining NHibernate mappings you will map your foreign key columns to properties returning object/objects of that related entity instead of just an id value. The reason behind this is that Nhibernate wants to make sure that when you are relating to some object then that object must exist&lt;/i&gt;&lt;i style="font-family: arial, sans-serif; font-style: normal; line-height: 15px;"&gt;&amp;nbsp;in database.&lt;/i&gt;&lt;br /&gt;&lt;i style="font-family: arial, sans-serif; font-style: normal; line-height: 15px;"&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;Anyway if you are reading this topic I am quite sure you are already aware of the case and are looking for solution. So let say we are making use of Northwind Database where we have two tables called Categories and Products. One category can have many products. We want to list all products belonging to category with id equal to 4. Here is how I managed to do it with Nhibernate.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style="background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; IList&amp;lt;Products&amp;gt; products = session.CreateCriteria&amp;lt;Products&amp;gt;("P")  &lt;br /&gt;           .CreateCriteria("Category", "C", NHibernate.SqlCommand.JoinType.InnerJoin)  &lt;br /&gt;           .Add(Restrictions.Eq("C.Id", 4))  &lt;br /&gt;           .List&amp;lt;Products&amp;gt;();  &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;Here is the SQL generated by NHibernate&lt;br /&gt;&lt;pre style="background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;NHibernate: SELECT this_.ProductID as ProductID6_1_, this_.Discontinued as Disconti2_6_1_&lt;br /&gt;, this_.ProductName as ProductN3_6_1_, this_.QuantityPerUnit as Quantity4_6_1_&lt;br /&gt;, this_.ReorderLevel as ReorderL5_6_1_, this_.UnitPrice as UnitPrice6_1_&lt;br /&gt;, this_.UnitsInStock as UnitsInS7_6_1_, this_.UnitsOnOrder as UnitsOnO8_6_1_&lt;br /&gt;, this_.CategoryID as CategoryID6_1_, this_.SupplierID as SupplierID6_1_&lt;br /&gt;, c1_.CategoryID as CategoryID10_0_, c1_.CategoryName as Category2_10_0_&lt;br /&gt;, c1_.Description as Descript3_10_0_, c1_.Picture as Picture10_0_ &lt;br /&gt;FROM Products this_ inner join Categories c1_ on this_.CategoryID=c1_.CategoryID &lt;br /&gt;WHERE c1_.CategoryID = @p0;@p0 = 4&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-4825212998680685446?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/4825212998680685446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=4825212998680685446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4825212998680685446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4825212998680685446'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2011/06/select-by-foreign-key-and-nhibernate.html' title='Select by foreign key and NHibernate'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-39482759076407825</id><published>2010-11-26T18:12:00.000-08:00</published><updated>2010-11-26T18:12:49.745-08:00</updated><title type='text'>My few weeks in freelance coding</title><content type='html'>Its been a while since I posted anything to my blog. In recent months I had some experience of doing some freelancing at &lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt; formally known as &lt;a href="http://www.rentacoder.com/"&gt;rentacoder.com&lt;/a&gt;. So I thought may be it would be good to blog about this experience that possibly might help some one else. Although I done this for a short period of time, almost a month and moreover I worked only on weekends. But it was quite nice. I learned a lot about freelancing for example how to bid, how to communicate with people and keep them in touch. I was able to earn reasonable money for few days that I spent with &lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt;. So here are few things that I want to share. I am going to place these points in question and&amp;nbsp;answer fashion.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1- Do I need to spend any money before I can go start looking for work on vworker.com?&lt;/b&gt;&lt;br /&gt;No, signup is totally free and you don't need to spend anything in order to get your self an account. &lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt; will charge you from earnings that you will make at vworker. At the time when I worked with them they were charging 15% of what ever your quote is.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2- How do I collect payments from &lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt;?&lt;/b&gt;&lt;br /&gt;Well they offer many methods which you can use in order to collect your payments. If you have &lt;a href="htpp://www.paypal.com/"&gt;PayPal&lt;/a&gt; account then its best because by default they charge you for &lt;a href="htpp://www.paypal.com/"&gt;PayPal&lt;/a&gt;. If you choose any other payment method then you may have to pay some extra charges. For example I used &lt;a href="http://www.westernunion.com/"&gt;Western Union&lt;/a&gt;. The charges they mentioned for it was $10 USD but when I received the payment they turned to be around $20 USD. This was kind of thing I didn't liked :(. They provide you options to configure certain amount limit after which you want your earnings to be dispatched to you. So provided that if there are any charges involved for your payment method, choose this limit wisely because if its is too low then you have to pay more for payment charges. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;3- How do I setup my profile?&lt;/b&gt;&lt;br /&gt;You have to fill in your details in your profile, I mean your professional details like your work experience, any reference links etc. In my personal opinion try to be domain specific, I mean don't try to show that you are jack of all. For example if you are web developer having major work experience in ASP.NET then stay with it and don't try to put every other technology that you know in your profile. I believe customers do prefer experts of jack of all. Don't forget to put reference links for your previous work in your profile if you have any. That increases clients trust in your abilities.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4- How to get good rankings?&lt;/b&gt;&lt;br /&gt;First of all go through posted projects and figure out projects that meets your work domain. Then initially try to pick the small projects. The reason is in small projects normally budgets tends to be low so there are higher chances that you can get the project without having no or low rankings due to sensation of low risk for employer. Secondly in small projects work boundaries are well defined so you will always certain about how to approach the work. This lowers the risk of getting stuck into the work. You will reach the deadline in time and hopefully get good rankings.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5- What is the best way to bid?&lt;/b&gt;&lt;br /&gt;Try to understand work requirements by reading work details. Figure out all possible things that needs to be fixed and your approach to cater them. Then go and place your detailed bid/reply to employer. Don't hesitate to reformulate the things and be descriptive for example tell him that you understand what he is looking for, what will be your approach and what will be work output. Make employer feel that you are interested in his/her work. Don't get embraced with bid counter showing a lot of bids placed, most of them are placed by sales guys or bots with canned messages like we are blah blah company and we can do this etc. So if you placed reasonable comment, it will make difference and you will get employer's response :). Lastly if you are not sure about any thing don't place bid, instead send employer a private message querying about the points you are not clear.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6- How much I should quote for work?&lt;/b&gt;&lt;br /&gt;Try to be fair. You may see maximum budget associated with work, but sometime that may not be correct. For example normally employers are not technical persons and are not aware of the work complexities. So sometime they are asking for something that is either too low or too high. In any case measure the work and get a fair estimate according to work.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7- Do I need to keep my employer updated with progress?&lt;/b&gt;&lt;br /&gt;Yes, that is very important thing to do. Your employer is not sitting next to you. He doesn't know what's happening on your side. So if he sees long delays in response he may get nervous and can create some trouble for you. The best way is too post about your progress when ever you are about to close you work session. This will make your employer keep faith in your abilities and he will be confident that you are making progress in his project. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;8- How much work I should try to take?&lt;/b&gt;&lt;br /&gt;Don't get yourself overwhelmed with lot of work. This can make you fail to achieve deadlines for some projects which can I turn cost you as a cut in your rankings or loss of work. In either way that is not a good thing. Try to get amount of work that you can deliver in time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;9- What is the best way to communicate with client, through &lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt; or too take him out and talk in private?&lt;/b&gt;&lt;br /&gt;Well there are different opinions and it really depends upon how you are comfortable. If you stay within &lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt; then there are some advantages for example your employer can't runaway. If you have any dispute with your employer then &lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt; representative can go through your communication log to resolve the conflict. So if there is no other intension involved like to take work from employer in private to save extra charges then using&amp;nbsp;&lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt; for communication is better option.&lt;br /&gt;Secondly if you are always grabbing the work through &lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt; then it means you are getting more and more success stories on your profile plus rankings. Lastly if you want to take employer out of&amp;nbsp;&lt;a href="http://www.vworker.com/"&gt;vworker.com&lt;/a&gt;&amp;nbsp;then you can do&amp;nbsp;communication&amp;nbsp;using allowed private&amp;nbsp;messengers.&lt;br /&gt;&lt;br /&gt;This is how I saw the&amp;nbsp;things, its not&amp;nbsp;necessary&amp;nbsp;that every one of you agree with me. So if you have something to add feel free to place comment and share your thoughts. I welcome your thoughts and suggestions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-39482759076407825?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/39482759076407825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=39482759076407825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/39482759076407825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/39482759076407825'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2010/11/my-few-weeks-in-freelance-coding.html' title='My few weeks in freelance coding'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-5339602278702526668</id><published>2009-06-30T07:14:00.001-07:00</published><updated>2009-06-30T09:33:19.540-07:00</updated><title type='text'>Find GEO location through IP address</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;a href="http://geoiptool.com/"&gt;Geo IP Tool&lt;/a&gt;  is a free service that helps you find geographical location via IP. I was trying to find out some service through which I can found the GEO information of customers via IP address. Below is a small helper code that can query &lt;a href="http://geoiptool.com/"&gt;Geo IP Tool&lt;/a&gt; against an IP. All you need is to place following helper class some where in your website. As you can see helper class only contains a single method GetLocationByIp of return type string. In fact it returns HTML containing returned information from &lt;a href="http://geoiptool.com/"&gt;Geo Ip Tool&lt;/a&gt;. Once you get the Geo information against an IP, all you need is to put it some literal control to be rendered.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Here is the &lt;span style="font-style: italic;"&gt;GeoIPTool&lt;/span&gt; class, you can place it in your App_Code folder of ASP.NET website. Once you are done with this change then you can use user control code posted in next code portion for demo purpose.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding: 10px; overflow: auto; background-color: rgb(230, 230, 230);"&gt;&lt;pre&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.Data;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.Configuration;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.Web;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.Web.Security;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.Web.UI;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.Web.UI.HtmlControls;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.Web.UI.WebControls;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.Web.UI.WebControls.WebParts;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.Net;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; System.IO;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;public&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;GeoIPTool&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; GetLocationByIP(&lt;span style="color:blue;"&gt;string&lt;/span&gt; ipAddress)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; geoiptoolurl = &lt;span style="color: rgb(163, 21, 21);"&gt;"http://www.geoiptool.com/?IP={0}"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; gflag = &lt;span style="color: rgb(163, 21, 21);"&gt;"http://www.geoiptool.com/flags/"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; p1 = &lt;span style="color: rgb(163, 21, 21);"&gt;"&lt;"&lt;/span&gt;+&lt;span style="color: rgb(163, 21, 21);"&gt;"table width=\"300\" height=\"300\""&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; p2 = &lt;span style="color: rgb(163, 21, 21);"&gt;" border=\"0\" cellpadding=\"4\""&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; p3 = &lt;span style="color: rgb(163, 21, 21);"&gt;" cellspacing=\"0\" class=\"tbl_style\"&gt;"&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;geoiptoolurl = &lt;span style="color:blue;"&gt;string&lt;/span&gt;.Format(geoiptoolurl, ipAddress);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;HttpWebRequest&lt;/span&gt; request = (&lt;span style="color: rgb(43, 145, 175);"&gt;HttpWebRequest&lt;/span&gt;)&lt;span style="color: rgb(43, 145, 175);"&gt;HttpWebRequest&lt;/span&gt;.Create(geoiptoolurl);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; (&lt;span style="color: rgb(43, 145, 175);"&gt;HttpWebResponse&lt;/span&gt; response = (&lt;span style="color: rgb(43, 145, 175);"&gt;HttpWebResponse&lt;/span&gt;)(request.GetResponse()))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; (&lt;span style="color: rgb(43, 145, 175);"&gt;StreamReader&lt;/span&gt; reader = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;StreamReader&lt;/span&gt;(response.GetResponseStream()))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; htmlResult = reader.ReadToEnd();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (!&lt;span style="color:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(htmlResult))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; sindex = htmlResult.IndexOf(p1+p2+p3);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                    &lt;/span&gt;htmlResult = htmlResult.Remove(0, sindex);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                    &lt;/span&gt;sindex = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt; eindex = htmlResult.IndexOf(&lt;span style="color: rgb(163, 21, 21);"&gt;""&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; geoLocationTable = htmlResult.Substring(sindex, eindex + 8);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (geoLocationTable.Contains(&lt;span style="color: rgb(163, 21, 21);"&gt;"/flags/"&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                        &lt;/span&gt;geoLocationTable = geoLocationTable.Replace(&lt;span style="color: rgb(163, 21, 21);"&gt;"/flags/"&lt;/span&gt;,gflag);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; geoLocationTable;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;                &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt;.Empty;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Following is the demo user control, in order to use this code first you need to create a new user control file with name Sample.ascx in your website and then replace all its contents with following code. Finally replace &lt;span style="color: rgb(255, 102, 102);"&gt;Your IP Here&lt;/span&gt; text in &lt;span style="font-style: italic;"&gt;GetLocationByIP&lt;/span&gt; call to your desired IP address.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding: 10px; background-color: rgb(230, 230, 230);"&gt;      &lt;pre&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;%&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;@&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; &lt;span style="color: rgb(163, 21, 21);"&gt;Control&lt;/span&gt; &lt;span style="color:red;"&gt;Language&lt;/span&gt;&lt;span style="color:blue;"&gt;="C#"&lt;/span&gt; &lt;span style="color:red;"&gt;ClassName&lt;/span&gt;&lt;span style="color:blue;"&gt;="Sample"&lt;/span&gt; &lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;%&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;script&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;="server"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;    &lt;span style="color:blue;"&gt;protected&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: rgb(43, 145, 175);"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;    {&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;        &lt;span style="color:blue;"&gt;string&lt;/span&gt; geoLocation = &lt;span style="color: rgb(43, 145, 175);"&gt;GeoIPTool&lt;/span&gt;.GetLocationByIP(&lt;span style="color: rgb(163, 21, 21);"&gt;"YOUR IP HERE"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;        &lt;span style="color:blue;"&gt;if&lt;/span&gt; (!&lt;span style="color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;.IsNullOrEmpty(geoLocation))&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;            GeoLocationHolder.Controls.Add(&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;LiteralControl&lt;/span&gt;(geoLocation));&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;"  &gt;    }&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;!--&lt;/span--&gt;&lt;span style=";font-family:&amp;quot;;color:blue;"  &gt;&lt;/script&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;&lt;&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;asp&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;color:blue;"   &gt;:&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;PlaceHolder&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt; &lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;="GeoLocationHolder"&lt;/span&gt; &lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;="server"&gt;&lt;!--&lt;/span--&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;PlaceHolder&lt;/span&gt;&lt;span style="color:blue;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Please feel free provide your feedback!&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-5339602278702526668?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/5339602278702526668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=5339602278702526668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/5339602278702526668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/5339602278702526668'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2009/06/find-geo-location-through-ip-address.html' title='Find GEO location through IP address'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-8633316069645346993</id><published>2009-06-30T05:27:00.000-07:00</published><updated>2009-06-30T05:37:54.615-07:00</updated><title type='text'>Jump to validation summary on large page</title><content type='html'>Validation summary is an awesome ASP.NET control that can list validation messages in a collective way. Some time if you have validation summary at bottom of a large page, in this case if some validation error occurs the user has to scroll down towards the bottom to view the pages.&lt;br /&gt;&lt;br /&gt;You can enhance user experience with Validation Summary control by automatically jumping to the error messages area when some error occurred. I am just explaining the steps to accomplish this.&lt;br /&gt;&lt;br /&gt;In ASP.NET there is a client side variable &lt;span style="font-style: italic;"&gt;&lt;span&gt;Page_IsValid&lt;/span&gt;&lt;/span&gt; that indicates whether the page is currently valid or not. The validation scripts keep this up to date at all times. So all you need is to wrap your validation summary within some div and place some anchor upon that. Finally write a small piece of javascript that checks &lt;span style="font-style: italic;"&gt;&lt;span&gt;Page_IsValid &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;and if its set to false simply jump to that named anchor. You can found a very helpful topic about &lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span&gt; ASP.NET &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;Validation available &lt;a style="color: rgb(51, 51, 51);" href="http://msdn.microsoft.com/en-us/library/aa479045.aspx"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-8633316069645346993?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/8633316069645346993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=8633316069645346993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/8633316069645346993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/8633316069645346993'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2009/06/jump-to-validation-summary-on-large.html' title='Jump to validation summary on large page'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-2308246167813462666</id><published>2009-06-30T04:31:00.000-07:00</published><updated>2009-06-30T05:21:13.760-07:00</updated><title type='text'>How to calculate column value as summation of all previouse values</title><content type='html'>This is the demonstration of how to calculate a column value that depends upon sum of all previous values in that column. For example check following two tables&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actual Data:&lt;/span&gt;&lt;br /&gt;&lt;table border="1" cellpadding="5" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;ProductId&lt;/th&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Quantity&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Product A&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Product B&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Product C&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-weight: bold;"&gt;Required Output:&lt;/span&gt;&lt;table border="1" cellpadding="5" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;ProductId&lt;/th&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Cal Quantity&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Product A&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Product B&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Product C&lt;/td&gt;&lt;td&gt;30&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SQL Server Query:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding: 5px; background-color: rgb(230, 230, 230);"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT&lt;/span&gt; P.ProductId, P.Name, &lt;span style="color: rgb(255, 102, 102);"&gt;SUM&lt;/span&gt;(PC.Quantity) &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; Cal Quantity&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;FROM&lt;/span&gt; Products &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; P &lt;span style="color: rgb(51, 102, 255);"&gt;LEFT OUTER JOIN&lt;/span&gt; Products &lt;span style="color: rgb(51, 102, 255);"&gt;AS&lt;/span&gt; PC&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;ON&lt;/span&gt; PC.ProductId &lt;= P.ProductId&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;GROUP BY&lt;/span&gt; P.ProductId, P.Name&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-2308246167813462666?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/2308246167813462666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=2308246167813462666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/2308246167813462666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/2308246167813462666'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2009/06/how-to-calculate-column-value-as.html' title='How to calculate column value as summation of all previouse values'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-6569119388205041860</id><published>2009-03-25T06:32:00.000-07:00</published><updated>2009-03-27T00:53:54.071-07:00</updated><title type='text'>Free Java MIDlet Manager for Windows Mobile Phones</title><content type='html'>Some java applications need &lt;span style="font-style: italic;"&gt;Java MIDlet Manger&lt;/span&gt; to run on your windows mobile devices. For example if you want to install and use &lt;span style="font-style: italic;"&gt;Opera Mini&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Gmail Client&lt;/span&gt; for windows mobiles then you need to have &lt;span style="font-style: italic;"&gt;Java MIDlet Manager&lt;/span&gt; installed on your device. You can download a free &lt;span style="font-style: italic;"&gt;MIDlet Manager&lt;/span&gt; avialable &lt;a style="font-style: italic;" href="http://dc124.4shared.com/download/36654580/e36c0375/Intent_MIDlet_Manager_11171023.cab?tsid=20090327-035311-61b15a5d"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-6569119388205041860?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/6569119388205041860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=6569119388205041860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/6569119388205041860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/6569119388205041860'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2009/03/free-java-midlet-manager-for-windows.html' title='Free Java MIDlet Manager for Windows Mobile Phones'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-4896858664104253686</id><published>2009-03-25T06:16:00.000-07:00</published><updated>2009-03-27T01:00:32.055-07:00</updated><title type='text'>Free JVM for Windows Mobile Phones</title><content type='html'>I was in need to run some java applications on my I-Mate  JAM and was having a hard time locating a free or open source JVM for it. After a lot of searching and striking my head against walls finally I found an open source JVM and that is &lt;a style="font-style: italic;" href="http://sourceforge.jp/projects/mysaifujvm/downloads/37970/jvm.0.4.5-bin.zip"&gt;Mysaifu JVM.&lt;/a&gt; Its an open source JVM available for free. It doesn't contain any &lt;span style="font-style: italic;"&gt;MIDlet Manager&lt;/span&gt; means you can not run some applications that require MIDlet Manger for example &lt;span style="font-style: italic;"&gt;Opera Mini&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;Gmail client&lt;/span&gt; for mobile phones. But still it could be very helpfull running other java applications on your PDA.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;1. How to install&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Copy the CAB file to \My Documents.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tap the CAB file. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Program is installed under \Program Files\Mysaifu JVM folder.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;2. How to uninstall&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Select "Mysaifu JVM" in "Settings - Remove Programs".&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-4896858664104253686?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/4896858664104253686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=4896858664104253686' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4896858664104253686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4896858664104253686'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2009/03/free-jvm-for-windows-mobile-phones.html' title='Free JVM for Windows Mobile Phones'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-1510837930762823768</id><published>2009-03-24T06:57:00.000-07:00</published><updated>2009-03-24T08:28:06.811-07:00</updated><title type='text'>How to build Bluetooth Remote Control for desktop machine</title><content type='html'>Some time ago I was searching for some .NET(CE)  stuff and read about the concept of an application that could allow to turn your mobile into a remote control for your desktop machine. I was very impressed by the concept and tried to wrote something similar that  could help me control Windows Media Player, PowerPoint slide show and some general windows operations like Logoff User, Shutdown and Restart, Volume Control etc.  I am planing to post it with complete source code but currently it needs some finishing steps like removing some unused code and some miner UI improvements. Hopefully I will get some time in near future to get things done.&lt;br /&gt;&lt;br /&gt;I developed it for my &lt;a href="http://www.gsmarena.com/i_mate_jam-963.php"&gt;I-Mate JAM&lt;/a&gt; running .NET CE(2.0). Currently .NET does not have any explicit support for bluetooth like java where there is a seperate API (Java Bluetooth API). Microsoft recommends use of sockets for this purpose, using sockets would be really time consuming task because that is relativly a low level programming task so I searched for some open source Bluetooth API that targets microsoft .NET and finally descided to use &lt;a href="http://32feet.net/"&gt;32feet.net&lt;/a&gt; API. Its an open source API for personal networking.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hardware Requirements&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Develoment Machine capable of running Visual Studio 2005&lt;/li&gt;&lt;li&gt;I-Mate JAM or equvalent PDA device that support Microsoft Bluetooth stack.&lt;/li&gt;&lt;li&gt;Bluetooth dongle for desktop machine, make sure that dongle supports Microsoft Bluetooth stack.&lt;/li&gt;&lt;li&gt;Data cable for PDA&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Softwares Requirements&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;ol&gt;&lt;li&gt;Visual Studio 2005 Professional Edition&lt;/li&gt;&lt;li&gt;.NET CE(2.0) on your PDA &lt;span style="font-style: italic;"&gt;(You can install .NET(CE) on I-Mate JAM from &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.microsoft.com/downloads/details.aspx?familyid=9655156b-356b-4a2c-857c-e62f50ae9a55&amp;amp;displaylang=en"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Microsoft ActiveSync &lt;span style="font-style: italic;"&gt;(You can get it from &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.microsoft.com/windowsmobile/en-us/downloads/eulas/eula_activesync45_1033.mspx?ProductID=76"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;32feet.net(InTheHand) API &lt;span style="font-style: italic;"&gt;(You can get it from &lt;/span&gt;&lt;a style="font-style: italic;" href="http://32feet.net/files/folders/releases/entry5523.aspx"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Setting up development environment&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install &lt;span style="font-style: italic;"&gt;Visual Studio 2005&lt;/span&gt; on development machine&lt;/li&gt;&lt;li&gt;Install &lt;span style="font-style: italic;"&gt;32feet.net&lt;/span&gt; on development machine. If your hardware is not working with API then you can try following &lt;a href="http://32feet.net/files/folders/documents/entry1118.aspx"&gt;workarund&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Now install &lt;span style="font-style: italic;"&gt;Microsoft ActiveSync &lt;/span&gt;on development machine as well.&lt;/li&gt;&lt;li&gt;Finally connect you PDA and machine with datacable and test the connection.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;How to control Media Player remotly via Bluetooth&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;First create a Windows form applicaton that will work as server on desktop machine. This applicaton will work as a Bluetooth listner. In &lt;span style="font-style: italic;"&gt;32feet.net &lt;/span&gt;samples there is a Remote sample you can use it as guide line.&lt;/li&gt;&lt;li&gt;Next you need to find out command messages for Windows Media Player, You can use spy++ for this purpose. For example what is the command message sent against volume up command.&lt;/li&gt;&lt;li&gt;Next you need to use import some win32 functions in your C# application for locating the running instance of Winodws Media Player and pass it the command message to performs that action.&lt;/li&gt;&lt;li&gt;Finally map some keys that listner recieves via bluetooth and then raises apperoperiate command message for Windows Media Player.&lt;/li&gt;&lt;li&gt;Now create Device Application 2.0 for your PDA or you can use the client part of remote sample available with 32feet.net.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Once client applicaton is setup properly all you need is to send those keys to desktop machine for wich you define mapping on server component. Once server module will reieve a mapped key for example you have mapped 9 to volume up then it will raise volume up command message for Winodws Media Player and hence will stepup the volume.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-1510837930762823768?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/1510837930762823768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=1510837930762823768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/1510837930762823768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/1510837930762823768'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2009/03/how-to-build-bluetooth-remote-control.html' title='How to build Bluetooth Remote Control for desktop machine'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-4605930716288781938</id><published>2008-07-21T08:15:00.000-07:00</published><updated>2008-12-09T22:11:43.905-08:00</updated><title type='text'>How Technology changed us</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YFFAk3YsgDk/SISoTOZq40I/AAAAAAAAACo/NMGElddT38s/s1600-h/image001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_YFFAk3YsgDk/SISoTOZq40I/AAAAAAAAACo/NMGElddT38s/s320/image001.jpg" alt="" id="BLOGGER_PHOTO_ID_5225486515893363522" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-4605930716288781938?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/4605930716288781938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=4605930716288781938' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4605930716288781938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/4605930716288781938'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2008/07/how-technology-changed-us.html' title='How Technology changed us'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YFFAk3YsgDk/SISoTOZq40I/AAAAAAAAACo/NMGElddT38s/s72-c/image001.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-2768238468862708236</id><published>2008-07-14T07:28:00.000-07:00</published><updated>2009-06-30T04:14:19.404-07:00</updated><title type='text'>Media Feeds for Piclens Plugin using .NET 2.0</title><content type='html'>&lt;span style="font-weight: bold;"&gt;About this post&lt;/span&gt;&lt;br /&gt;This post is about the "MediaRSS" standard and how you can use it for your own website. If you have never heard of it - never mind. But maybe you have heard of a really cool Firefox Plugin called "PicLens".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"PicLens"?&lt;/span&gt;&lt;br /&gt;"PicLens" is a incredible surface for some internet services, like YouTube, Google picture search, Flickr, Amazon, Deviant Art. Now you can have your favorite sites in Full-screen. 3D.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Media RSS&lt;/span&gt;&lt;br /&gt;The Piclens guys have implemented the "MediaRSS" standard - that means: Each site with an MediaRSS can be viewed in Piclens.&lt;br /&gt;If you are a webmaster, you should take a look at this site.&lt;br /&gt;&lt;br /&gt;Bellow is the Media Feeds Example for ASP.NET 2.0 C# you can create a file with name&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MediaRss.ashx&lt;/span&gt; on the root of your site and following line of code in the Head section of your pages.&lt;br /&gt;Put a Link tag with href="MediaRss.ashx" type="application/rss+xml" id="gallery" and that's all&lt;br /&gt;&lt;br /&gt;Bellow is the code of the &lt;span style="font-weight: bold;"&gt;MediaRss.ashx&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;%@ WebHandler Language="C#" Class="MediaRss" %&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Xml;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Web;&lt;br /&gt;&lt;br /&gt;[System.Web.Services.WebService(Namespace = "http://tempuri.org/")]&lt;br /&gt;[System.Web.Services.WebServiceBinding(ConformsTo = System.Web.Services.WsiProfiles.BasicProfile1_1)]&lt;br /&gt;public class MediaRss : IHttpHandler {&lt;br /&gt;&lt;br /&gt;string media = "http://search.yahoo.com/mrss";&lt;br /&gt;string atom = "http://www.w3.org/2005/Atom";&lt;br /&gt;&lt;br /&gt;public void ProcessRequest (HttpContext context)&lt;br /&gt;{&lt;br /&gt; XmlDocument xmlDocument = new XmlDocument();&lt;br /&gt; XmlDeclaration xmlDeclaration = xmlDocument.CreateXmlDeclaration("1.0", "UTF-8", "yes");&lt;br /&gt; xmlDocument.AppendChild(xmlDeclaration);&lt;br /&gt;&lt;br /&gt; XmlElement rssElement = xmlDocument.CreateElement("rss");&lt;br /&gt; rssElement.SetAttribute("version", "2.0");&lt;br /&gt; rssElement.SetAttribute("xmlns:media",media);&lt;br /&gt; rssElement.SetAttribute("xmlns:atom", atom);&lt;br /&gt; xmlDocument.AppendChild(rssElement);&lt;br /&gt;&lt;br /&gt; XmlElement channelElement = xmlDocument.CreateElement("channel");&lt;br /&gt; rssElement.AppendChild(channelElement);&lt;br /&gt;&lt;br /&gt; GenerateItems(channelElement, xmlDocument, context);&lt;br /&gt;&lt;br /&gt; context.Response.ContentType = "text/xml";&lt;br /&gt; xmlDocument.Save(context.Response.Output);&lt;br /&gt; context.Response.End();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void GenerateItems(XmlElement channelElement,XmlDocument xmlDocument,HttpContext context)&lt;br /&gt;{&lt;br /&gt; string[] imageFiles = Directory.GetFiles(context.Server.MapPath("~/Images/"));&lt;br /&gt; &lt;br /&gt; foreach(string imageFile in imageFiles)&lt;br /&gt; {&lt;br /&gt;     FileInfo fileInfo = new FileInfo(imageFile);&lt;br /&gt;&lt;br /&gt;     XmlElement itemElement = xmlDocument.CreateElement("item");&lt;br /&gt;&lt;br /&gt;     XmlElement titleElement = xmlDocument.CreateElement("title");&lt;br /&gt;     titleElement.InnerText = fileInfo.Name;&lt;br /&gt;&lt;br /&gt;     XmlElement linkElement = xmlDocument.CreateElement("link");&lt;br /&gt;     string link = "http://localhost/myapp/Images/" + fileInfo.Name;&lt;br /&gt;     linkElement.InnerText = link;&lt;br /&gt; &lt;br /&gt;     XmlElement thumbnailElement = xmlDocument.CreateElement("media","thumbnail",media);&lt;br /&gt;     thumbnailElement.SetAttribute("url", link);&lt;br /&gt;     XmlElement mediaElement = xmlDocument.CreateElement("media","content",media);&lt;br /&gt;     mediaElement.SetAttribute("url", link);&lt;br /&gt;     itemElement.AppendChild(titleElement);&lt;br /&gt;     itemElement.AppendChild(linkElement);&lt;br /&gt;     itemElement.AppendChild(thumbnailElement);&lt;br /&gt;     itemElement.AppendChild(mediaElement);&lt;br /&gt;&lt;br /&gt;     channelElement.AppendChild(itemElement);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static string Utf8BytesToString(byte[] InBytes)&lt;br /&gt;{&lt;br /&gt; System.Text.UTF8Encoding utf8encoder = new System.Text.UTF8Encoding(false, true);&lt;br /&gt; return utf8encoder.GetString(InBytes, 0, InBytes.Length);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public bool IsReusable {&lt;br /&gt; get {&lt;br /&gt;     return false;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-2768238468862708236?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/2768238468862708236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=2768238468862708236' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/2768238468862708236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/2768238468862708236'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2008/07/media-feeds-for-piclens-plugin-using.html' title='Media Feeds for Piclens Plugin using .NET 2.0'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-8687920849516864621</id><published>2008-07-11T00:54:00.001-07:00</published><updated>2008-07-11T00:54:05.377-07:00</updated><title type='text'>Free iPhone applications</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;strong&gt;Apple iTunes Remote&lt;br /&gt;&lt;/strong&gt;With Apple's new iTunes Remote app, you can control the music on your computer or Apple TV from your iPod touch or iPhone. Play, pause, skip, shuffle. See your songs, playlists and album art on your iPod touch or iPhone as if you were right in front of your computer. &lt;br /&gt;&lt;br /&gt;Remote works with your Wi-Fi network, so you can control playback from anywhere in and around your home.&lt;br /&gt;&lt;br /&gt;Features include:&lt;br /&gt;- Control the music on iTunes or Apple lV &lt;br /&gt;- See the album artwork on your Remote &lt;br /&gt;- Search your whole iTunes library &lt;br /&gt;- Control your AirTunes speakers &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;AIM&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Mobile AIM lets you stay in touch with your friends and family right from your iPhone or iPod Touch. The app lets you communicate whenever you want, wherever you are, in whatever way that suits you best. Connect with friends and family and keep track track of status and presence updates in real time. &lt;br /&gt;&lt;br /&gt;Features include: &lt;br /&gt;-Send and receive messages over WiF, EDGE, or 3G networks.&lt;br /&gt;-Connect to anyone on the AIM network worldwide, whether they're on AOL. AIM, ICQ, .Mac or MobileMe.&lt;br /&gt;-Manage your Buddy List feature, choose Favorites, or add a new buddy anytime.&lt;br /&gt;-Your changes are automatically synced with iChat and or Windows or Mac.&lt;br /&gt;-View expressions and update status &lt;br /&gt;-See who's available before you contact them &lt;br /&gt;-Send IMs and SMS text messages -- even from an iPod Touch &lt;br /&gt;-Take pictures with the built-in camera to use as your buddy icon &lt;br /&gt;&lt;br /&gt;You can get started by signing in using your existing AOL, AIM, .Mac or MobileMe name, or register for a free screen name right from your device.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Facebook&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Facebook for iPhooe makes it easy to stay connected and share information with friends. Use your iPhone to start a conversation with Face book Chat, check your friends' latest photo, and status updates, look up a phone number, or upload your own mobile photos to Facebook while on the go.&lt;br /&gt;&lt;br /&gt;Facebook promises even more features will be updated in the weeks and months ahead.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Google Mobile App&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;Google Mobile App for the iPhone or iPod Touch aims to make it fast and easy to search the Web. &lt;br /&gt;&lt;br /&gt;Find web pages, business listings, phone contacts and more with Iess typing than ever before via Google's intelligent query completion and handy search shortcuts which appear as you type. You'll get suggestions to help you complete your query, and can see the results on a map in a single click.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MySpace Mobile&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;If you spend large chunks of your life hanging out on MySpace, you're "going to love Myspace Mobile for iPhone" and the iPod touch.&lt;br /&gt;&lt;br /&gt;Features include:&lt;br /&gt;&lt;br /&gt;- Send and receive messages&lt;br /&gt;- Browse your network of friends and see their current status&lt;br /&gt;- Upload and share photos from your iPhone &lt;br /&gt;- Post comments on friends' profiles and photos&lt;br /&gt;- Stay up-to-date with bulletins&lt;br /&gt;- Search to find new friends&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-8687920849516864621?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/8687920849516864621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=8687920849516864621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/8687920849516864621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/8687920849516864621'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2008/07/free-iphone-applications.html' title='Free iPhone applications'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-973995490803266840</id><published>2008-07-10T03:07:00.001-07:00</published><updated>2008-07-10T03:09:59.403-07:00</updated><title type='text'>How to Troubleshoot web pages in IE</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Most of the Web Developers are using FireFox when developing their Web applications because their are number of plugins that can help them troubleshoot their pages. A good example for such plugin is FireBug.&lt;br /&gt;Personally as a web developer i can't work without FireBug because i can debug and fix my problems very easily with FireBug.&lt;br /&gt;&lt;br /&gt;As a cross browser developer i found many times my self in a situation where i need a FireBug like functionality for IE. After some surfing i found IEDevloper Toolbar, a good utility for this purpose made by Microsoft.&lt;br /&gt;&lt;br /&gt;IEDevloper Toolbar is not that strong and powerful as FireBug but still provide developer a good support for debugging.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;The Internet Explorer Developer Toolbar provides several features for exploring and understanding Web pages. These features enable you to:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;ul&gt;&lt;li&gt;Explore and modify the document object model (DOM) of a Web page.&lt;/li&gt;&lt;li&gt;Locate and select specific elements on a Web page through a variety of techniques.&lt;/li&gt;&lt;li&gt;Selectively disable Internet Explorer settings.&lt;/li&gt;&lt;li&gt;View HTML object class names, ID's, and details such as link paths, tab index values, and access keys.&lt;/li&gt;&lt;li&gt;Outline tables, table cells, images, or selected tags.&lt;/li&gt;&lt;li&gt;Validate HTML, CSS, WAI, and RSS web feed links.&lt;/li&gt;&lt;li&gt;Display image dimensions, file sizes, path information, and alternate (ALT) text.&lt;/li&gt;&lt;li&gt;Immediately resize the browser window to a new resolution.&lt;/li&gt;&lt;li&gt;Selectively clear the browser cache and saved cookies. Choose from all objects or those associated with a given domain.&lt;/li&gt;&lt;li&gt;Display a fully featured design ruler to help accurately align and measure objects on your pages.&lt;/li&gt;&lt;li&gt;Find the style rules used to set specific style values on an element.&lt;/li&gt;&lt;li&gt;View the formatted and syntax colored source of HTML and CSS&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="httphttp://www.microsoft.com/downloadS/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;amp;displaylang=en"&gt;  &lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloadS/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;amp;displaylang=en"&gt;&lt;span style="font-weight: bold;"&gt;Download&lt;/span&gt; &lt;b&gt;Internet Explorer Developer&lt;/b&gt; &lt;b&gt;Toolbar&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-973995490803266840?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/973995490803266840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=973995490803266840' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/973995490803266840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/973995490803266840'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2008/07/how-to-troubleshoot-web-pages-in-ie.html' title='How to Troubleshoot web pages in IE'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-6228139970895900033</id><published>2008-07-09T05:33:00.001-07:00</published><updated>2008-07-10T02:54:22.507-07:00</updated><title type='text'>Usefull plugins for FireFox 3</title><content type='html'>I mainly used FireFox for web development because of many cool plug ins that provide a boost to the development for example the FireBug, WebDeveloper etc. Recently i have installed and using FireFox 3. I found some very cool plugins and want to share them with you. Please check the following plugins.&lt;br /&gt;&lt;br /&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/downloads/file/33188/scribefire_blog_editor-2.2.9-fx+sm.xpi"&gt;&lt;img src="https://addons.mozilla.org/en-US/firefox/images/addon_icon/1730" style="max-width: 800px;" border="0" /&gt;&lt;/a&gt;&lt;b&gt; ScribeFire Blog Editor 2.2.9&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;ScribeFire is a full-featured blog editor that integrates with your browser and lets you easily post to your blog.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/downloads/file/32890/fireftp-0.99.2-fx.xpi"&gt;&lt;img src="https://addons.mozilla.org/en-US/firefox/images/addon_icon/684" style="max-width: 800px;" border="0" /&gt;&lt;/a&gt;&lt;b&gt; FireFTP 0.99.2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;FireFTP is a free, secure, cross-platform FTP client for Mozilla Firefox which provides easy and intuitive access to FTP servers.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/downloads/file/30400/codetch-0.4.1rc1-fx.xpi"&gt;&lt;img src="https://addons.mozilla.org/en-US/firefox/images/addon_icon/1002" style="max-width: 800px;" border="0" /&gt;&lt;/a&gt; &lt;b&gt;Codetch 0.4.1rc1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Get the feel of Dreamweaver in a Firefox extension. Edit your documents right next to your web pages as you surf.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-6228139970895900033?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/6228139970895900033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=6228139970895900033' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/6228139970895900033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/6228139970895900033'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2008/07/usefull-plugins-for-firefox.html' title='Usefull plugins for FireFox 3'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1512484981131643219.post-5846573891918528023</id><published>2008-07-09T02:58:00.000-07:00</published><updated>2008-07-09T03:36:28.614-07:00</updated><title type='text'>Test web site for different versions of IE</title><content type='html'>Most of the time web developers come into a situation facing problems with the different versions of Internet Explorer. Where their site works fine for a specific version of IE but have some problems with other version. I my self faced this situation several times when my site just works fine for IE 7 but has many issues when i test it in IE6.&lt;br /&gt;As we can only have a single version of Internet Explorer on our development machine and this issue creates a lot of panics for me. I have to configure different version of IE on different machines and then to test my code on these different machines for different IE versions.&lt;br /&gt;&lt;br /&gt;Thanks GOD at last i found a good tool that help me get rid of this problem.  This is the &lt;span style="font-weight: bold;" class="wikiword"&gt;IETester WebBrowser&lt;/span&gt;&lt;span class="wikiword"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="wikiword"&gt;IETester&lt;/span&gt; is a free &lt;span class="wikiword"&gt;WebBrowser&lt;/span&gt; that allows you to have the rendering and javascript engines of &lt;strong&gt;&lt;span class="wikiword"&gt;IE8&lt;/span&gt; beta 1, &lt;span class="wikiword"&gt;IE7&lt;/span&gt; IE 6 and &lt;span class="wikiword"&gt;IE5&lt;/span&gt;.5 on Vista and XP&lt;/strong&gt;, as well as the installed IE in the same process.&lt;br /&gt;&lt;br /&gt;Thanks to the &lt;a href="http://www.my-debugbar.com/"&gt;www.my-debugbar.com&lt;/a&gt;&lt;br /&gt;for creating such a cool WebBrowser and making it free for developers community. There is many more cool stuff available at &lt;a href="http://www.my-debugbar.com/"&gt;www.my-debugbar.com&lt;/a&gt;&lt;br /&gt;You can download latest version of &lt;span style="font-weight: bold;"&gt;IETester&lt;/span&gt; from &lt;a href="http://www.my-debugbar.com/ietester/install-ietester-v0.2.2.exe"&gt;&lt;span style="font-weight: bold;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1512484981131643219-5846573891918528023?l=shareyour-experience.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shareyour-experience.blogspot.com/feeds/5846573891918528023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1512484981131643219&amp;postID=5846573891918528023' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/5846573891918528023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1512484981131643219/posts/default/5846573891918528023'/><link rel='alternate' type='text/html' href='http://shareyour-experience.blogspot.com/2008/07/test-web-site-for-different-versions-of.html' title='Test web site for different versions of IE'/><author><name>Mazhar</name><uri>http://www.blogger.com/profile/15059408440304979274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
