Friday, November 24, 2006

SimpleXML for JavaScript

I really did not realise that its been two months since I last posted anything. A lot has happened in the past two months, actually quite a lot has happened and I guess I never seem to get the time to update this blog. But then again like I've said in the last two posts, I will try and post on a regular basis. I had developed a SimpleXML library in JavaScript  but never got the time to post a link on this blog. Its hosted on http://code.google.com. I made it like a month back but due to work I've not been able to release it. Its a very important piece of software that I have developed but since there is no documentation its really hard to release it.

Anyhow if you've used SimpleXML in php its the exact same thing for JavaScript. You can view the code or download it using SVN. There are three simple functions.

simplexml_import_dom(dom);
simplexml_load_string(string);
simplexml_load_file(filename, callback);

  1. simplexml_import_dom(dom): takes a dom element and returns a SimpleXML object
  2. simplexml_load_string(string): takes xml as string and returns a SimpleXML object.
  3. simplexml_load_file(filename, callback): takes two parameters, first the url of XML file, and the name of the callback function, which will ba called once the file has been loaded.

There is a sample index.html that will give you a rough idea of how to use the library. I will try and give a little more detail and a few samples as and when I get a little more time.

Thursday, September 21, 2006

Mr. Google: The horrible monster


Yesterday I was watching click on bbcworld and saw this story about google the monster. Here is how Mr. Google looks according to the "The Google Book". This book was published in 1913.



Technorati Tags: google, monster

Monday, September 11, 2006

EnableVisualStyles in a usercontrol hosted on Internet Explorer

After wasting the complete day to figure out how to set the visual styles in a usercontrol hosted on internet explorer. I finally figured out how to set the style of the controls on the user controls to match the current theme.

System.Windows.Forms.Application.EnableVisualStyles()
<meta http-equiv="MSThemeCompatible" content="Yes" />

After finishing off with one task I am stuck on the next major hurdle and this one seems to be the tougher one. I see no real way to call JavaScript from the user control. I don't plan to use the COM methods to call JavaScript as that would make the usercontrol untrustworthy. Lets see if there is some way of calling JavaScript from the UserControl the managed way.

Sunday, August 27, 2006

Reflecting back on the past month

The past few months have simply gone by and I have not done much. I had to develop a few projects now that's more or less on hold. I guess I need a surge of energy to restart work. But then again its just a matter of time. Since the last time I posted time has more or less come to a standstill. I have a few more ideas in my mind and the old ideas are on hold. Lets see when any of my ideas see the light of day.

In my previous entries I had written about dotbeta. I am still hopeful that it will be completed once I restart work on it. I had written an article Speed up your AJAX based webapps, and the good part is that most hotshot Web 2.0 webapps are using the caching techniques I had written about. Though its not called prontoCache as I was thinking about. But then again I saw quite a few copycat articles to the one I had written within a week I wrote that article. There are a couple of other things I have learned while thinking and designing dotbeta, and I guess I will write about those tips and tricks once I launch dotbeta so that people actually have a way to look at those techniques in action.

The last time I wrote that article many people complained there there was nothing on dotbeta. This time around I will try and get something up and running before I post my next article with all the techniques I have learned over the past year.

And before I finish of with this post I just hope I can post a little more regularly. Lets see but I plan to post at least twice a week. Maybe about the articles I have come across on digg/slashdot/reddit or some other site, or just generally about the software or web application I've come across.

Technorati Tags: prontoCache

Friday, July 14, 2006

Not everyone thinks like a programmer

Whenever we as programmers design any application we tend to think like programmers and forget a few important things. I am not talking of very high end applications which go through a design phase for months. But I am talking about applications that are packaged in a few months time.

Why I wanted to write about this was 'cause I could see a marked difference the way programmers and non-programmers perceive things. Lets me take this CAPTCHA as an example. Whenever I type it down I would make sure I would match the case of the alphabet. This is normal practice if you've programmed in Java/C++ or for that matter most languages which are case sensitive. Recently I had a friend over who was trying to type in a CAPTCHA, and since he is not a programmer he simply typed in without thinking whether it was upper or lower case, and it worked. That is when I realized that had I designed such a system, at least in the very first version the CAPTCHA would be case sensitive, without realizing how much trouble a non programmer would have in understanding it.

The other place where I saw a marked difference the way we perceive things is in browsers. I have FireFox and IE on my system. Most of my friends who are programmers would automatically start FireFox, but the others will start IE no matter what I tell them. A programmer would like FireFox in lets say the second or the third time but with most non-programmers it takes a major effort to get them to use FireFox. And in most cases it becomes almost impossible to explain why they should use FireFox. But I guess thats another post. :)

Technorati Tags: , ,

Thursday, July 13, 2006

MSN and Yahoo! can talk to each other

MSN and Yahoo! messenger had signed up a deal to allow messages across their networks. And finally it seems like its really possible to do it. I had read about it on digg around a week ago, but at that time it was possible to do it using Yahoo! Messenger for mac. But now it is working for the windows version of Yahoo! Messenger. Here is a screenshot of the messages across the two networks.
As of now the speed seems to be a problem. It takes more than a minute to get a message across. But then again its just a beta and its like the first week, so these problems would exist in any case. I am waiting for the day when I can finally uninstall one of the IM's. I have always liked Yahoo! Messenger but Windows Live Messenger matches in most features now. So now its more of a personal choice rather than the number of features that each IM client provides.


Technorati Tags: , ,

Wednesday, June 07, 2006

I am back after a long break.

The past month has been like a roller coaster ride. Have been to many places met a few people but did not work much. Work wise I should have done a lot but have kept a lot of things on hold. Hopefully I am back again from my long slumber and I will try and keep this blog updated with more information as and when I do or find something new.

Tried out the new google spreadsheet program; it seems like a good option for me as I hate installing any application which I would never use. But as I get some data from clients in XLS format it's a good place for me to view it and even edit it. Plus the good part is that you can share the spreadsheet with your friends or clients. I tried to open a few XLS files and it works really great. For most of my work this program seems more than enough.

Also tried out google analytics and have installed it on this blog and http://viamatic.com/ and so far I have got really interesting results of what kind of people visit this blog. And the funny part is that I was expecting more people from India but most of the people who visit the blog are from US or Poland. This is kind of information which gives a good feedback of what people are expecting from a site or blog. Most people on the blog come through google while most people visiting viamatic.com tend to come directly and that is kind of amazing. This is kind of information that is really important when you are working on an ecommerce website. A few months back I was working on an ecommerce website and I could see how this information could be helpful to those guys.

I have been using the new yahoo mail for over 2 months now and they added a few more subtle changes to the interface. Though the changes are small but they make a major difference while working. I like it more than the other email programs though I wish they could cache the JavaScript forever and increase the response time. Will try and write a little more about these and other topics as and when I get time.

Technorati Tags: ,

Friday, May 19, 2006

Khanag a nice place to visit


Khanag - (Himachal Pradesh)
Originally uploaded by Vivek Jishtu.
During this trip we went to Khanag. Its a nice secluded place with a temple on the top. Its a nice open space surrounded by a forest from all over. Its one of the few places where you can really relax. The other two places that are somewhat like this have to be Triund and Jaw Bhagh near Hatu peak.

I hope to visit that place again someday. I had intially planned to go there 10 years back but could not go. Finally this time went there and it was really worth it.

Using images to submit a form. Bug/Feature in IE

Its been a very long time since I posted here. I have been out on a trip and after that busy with the projects. There is nothing new that I have explored in the last few days except for a feature/bug in IE that took a day to figure out.

If you use an image instead of a submit button.

input type="image" name="button1" value="test"..
instead of
input type="submit" name="button2" value="test"..
You will not get the name/value pair on the server in case of IE. Since I mostly use firefox I missed it out completely. Once all the images were changed it was tested on IE and it did not work. After trying out for hours and searching high and low on the internet I finally figure out that incase of an image IE will not send the name/value pair. Instead it will send out button1.x and button1.y, which are the coordinates where the user clicked. So I had to change the complete code to check for button1_x and so on. It was a real pain getting this thing. I guess that adds to the list of 1 more reason why I hate IE.

Thursday, April 27, 2006

Speed up your AJAX based webapps

UPDATE: I guess most people are not getting what this technique does in the first place. It sets the expiry of the JavaScript to years and not days. Once the JavaScript file is downloaded it is never downloaded again, ofcourse unless you force it by removing the file in the cache. If you visit the site often the JavaScript will not be removed from the cache. If you make any changes to the JavaScript you only need to change the version of the file and the new file will be downloaded. The older file is automatically removed from the cache when it is no longer requested. And just to add one more point this can be done on the WebServer itself without using this technique, but that has its own drawbacks. To further speed up the download you can gzip the JavaScript.


If you have developed an AJAX based web application you would know how many JavaScript files are required per webpage. If you use the prototype or dojo toolkit library you would know how big those JavaScript files can turn out to be.

I am currently developing a website fefoo.com, and I learned a few things about caching and how you can speed up your website for users who visit your site often. A website like digg takes up more than a minute to load on my dialup connection even though the main page is no more than a 27-32 KB. The real time is taken up by the JavaScript files. The solution for this problem is to cache the JavaScript files. Though caching improves the speed but it causes a problem when you have to update the JavaScript files, since the browser will not look for updated files if they have been cached.

Since your files are cached they will not be requested by the browser and you will not be able to send out updated JavaScript files. The solution to this problem is that you use a different name for your JavaScript file every time, or you can version control your directory. So for version 0.1 of your project http://testserver.com/javascript/0.1/test.js, and for 0.2 http://testserver.com/javascript/0.2/test.js

Thought this solution is good but it's still difficult to implement, and soon you will have multiple directories to take care of, and you will face problems when only one file needs to be changed.

After facing the trouble of a slow server and the JavaScript file being downloaded every time, I came up with this solution for PHP and .net based web application. You need to download getjs.php or getjs.aspx depending on your server. To load a script file use
<script src="getjs.php?file=test1&version=0.1" />
<script src="getjs.aspx?file=test2&version=0.2" />

In this example we load two files test1.js and test2.js. This solves two problems firstly it will work even if you have virtual hosting and secondly it solves the problem of multiple files. So if you wish to change only one file change the version from 0.1 to 0.2 and the new file will be downloaded and cached. In the next article I will try to tell you how this has been implemented, though if you know PHP or VB.net and have some idea about HTTP you won't face too many problems.

You can view a demo to see how you can improve your own web applications using prontoCache.
<?php
/*
* Author: Vivek Jishtu
* Copyright (c) 2006 Viamatic Softwares
*/

/**************************************************
This acts like a security measure also. So no
other extension except JavaScript can be downloaded.
**************************************************/

$filename = $_GET["file"]. ".js";
header("Content-Type: text/javascript");
if(!file_exists($filename)) {
echo "alert('The file [" .htmlspecialchars($_GET["file"], ENT_QUOTES). "] does not exist. Please inform webmaster.');";
exit;
}

$if_modified_since = preg_replace('/;.*$/', '', $HTTP_IF_MODIFIED_SINCE);
/**************************************************
The javascript never expires so if we get any
Request for a modified page we send back that
javascript has not been modified.
**************************************************/
if ($if_modified_since != "") {
header("HTTP/1.0 304 Not Modified");
exit;
}

/**************************************************
Set the cache such that it does not expire. In
this example we set it till 22nd Feb 2011.
You can change the date to whatever year you want,
any year in the future.
**************************************************/
header("Last-Modified: " . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header("Expires: Tue, 22 Feb 2011 05:00:00 GMT");
header("Cache-Control: public");

echo "/* prontoCached on ". gmdate('D, d M Y H:i:s', time()) . " */\r\n";
require_once($filename);
?>
The PHP Code
<%@ Page Language="VB" %>
<script runat="server">
'
' Author: Vivek Jishtu
' Copyright (c) Viamatic Softwares
'
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
'**************************************************
' This acts like a security measure also. So no
' other extension except JavaScript can be downloaded.
'**************************************************

Dim FileName As String = Me.MapPath(Request.QueryString("file") & ".js")
Response.ContentType = "text/javascript"

If Not My.Computer.FileSystem.FileExists(FileName) Then
Response.Write("alert('The file does not exist. Please inform webmaster.');")
Response.End()
Return
End If
'**************************************************
' The javascript never expires so if we get any
' Request for a modified page we send back that
' javascript has not been modified.
'**************************************************
If Request.Headers("If-Modified-Since") <> "" Then
Response.StatusCode = "304"
Response.StatusDescription = "Not Modified"
Response.End()
End If

'**************************************************
' Set the cache such that it does not expire. In
' this example we set it till 22nd Feb 2011.
' You can change the date to whatever year you want,
' any year in the future.
'**************************************************
Response.AddHeader("Last-Modified", DateToHTTPDate(Date.Now))
Response.AddHeader("Expires", "Tue, 22 Feb 2011 05:00:00 GMT")
Response.AddHeader("Cache-Control", "public")
Response.Write("/* prontoCached on " & Date.Now & " */" & vbCrLf)
Response.Write(My.Computer.FileSystem.ReadAllText(FileName))
Response.End()

End Sub

'Source for DateToHTTPDate from http://www.motobit.com/tips/detpg_net-last-modified/
Function DateToHTTPDate(ByVal OleDATE As Date) As String
On Error Resume Next
OleDATE = OleDATE.ToUniversalTime
Return engWeekDayName(OleDATE) & _
", " & Right("0" & Day(OleDATE), 2) & " " & engMonthName(OleDATE) & _
" " & Year(OleDATE) & " " & Right("0" & Hour(OleDATE), 2) & _
":" & Right("0" & Minute(OleDATE), 2) & ":" & Right("0" & Second(OleDATE), 2) & " GMT"
End Function

Function engWeekDayName(ByVal dt As Date) As String
Dim Out As String = ""
Select Case Weekday(dt, 1)
Case 1 : Out = "Sun"
Case 2 : Out = "Mon"
Case 3 : Out = "Tue"
Case 4 : Out = "Wed"
Case 5 : Out = "Thu"
Case 6 : Out = "Fri"
Case 7 : Out = "Sat"
End Select
Return Out
End Function

Function engMonthName(ByVal dt As Date) As String
Dim Out As String = ""
Select Case Month(dt)
Case 1 : Out = "Jan"
Case 2 : Out = "Feb"
Case 3 : Out = "Mar"
Case 4 : Out = "Apr"
Case 5 : Out = "May"
Case 6 : Out = "Jun"
Case 7 : Out = "Jul"
Case 8 : Out = "Aug"
Case 9 : Out = "Sep"
Case 10 : Out = "Oct"
Case 11 : Out = "Nov"
Case 12 : Out = "Dec"
End Select
Return Out
End Function

Public Function DateFromHTTP(ByVal HTTPDate As String) As Date
Dim Swd As String, d As String, Sm As String, y As String, h As String
Dim m As String, s As String, g As String, Out As Date
HTTPDate = LCase$(HTTPDate)

If Mid$(HTTPDate, 27, 3) = "gmt" Then
Swd = Left$(HTTPDate, 3)
d = Mid$(HTTPDate, 6, 2)
Sm = Mid$(HTTPDate, 9, 3)
y = Mid$(HTTPDate, 13, 4)
h = Mid$(HTTPDate, 18, 2)
m = Mid$(HTTPDate, 21, 2)
s = Mid$(HTTPDate, 24, 2)
Out = New Date(y, mFromSm(Sm), d, h, m, s)
Out = Out.ToLocalTime
End If

Return Out
End Function

Function wdFromSwd(ByVal Swd As String) As Integer
Dim Out As Integer
Select Case LCase$(Swd)
Case "sun" : Out = 1
Case "mon" : Out = 2
Case "tue" : Out = 3
Case "wed" : Out = 4
Case "thu" : Out = 5
Case "fri" : Out = 6
Case "sat" : Out = 7
End Select
Return Out
End Function

Function mFromSm(ByVal Sm As String) As Integer
Dim Out As Integer
Select Case LCase$(Sm)
Case "jan" : Out = 1 : Case "feb" : Out = 2
Case "mar" : Out = 3 : Case "apr" : Out = 4
Case "may" : Out = 5 : Case "jun" : Out = 6
Case "jul" : Out = 7 : Case "aug" : Out = 8
Case "sep" : Out = 9 : Case "oct" : Out = 10
Case "nov" : Out = 11 : Case "dec" : Out = 12
End Select
Return Out
End Function
</script>
The VB.net Code

Incase you have the rights to change the expiry of JavaScript on the webserver itself, you can still use the version technique to send out new versions of files using <script src="test1.js?version=0.1" />. The version parameter is there to make it clear, you can also use any random value if you want.


After looking at suggestions from people I guess the best option is to use <script src="test1.js?timestamp={timestamp('test1.js');}" />. This is a simplest way of doing it. To get the timestamp of a file is language/platform dependent. But anytime the file is modified the timestamp would be changed. Using this method you would not have to make changes in the version either.

Technorati Tags: , ,

Wednesday, April 26, 2006

require_once, #include in JavaScript

If you've ever used C/C++, you can include more code by simply using #include and that header file gets included. The same thing goes for PHP, if you divide your program into multiple files you can include the code using include/include_once or require/require_once. If you are looking for something similar in JavaScript, you won't find any way of including more code. This is when I came up with this code, though later on while searching on the net I could see samples using a similar approach. But in any case this might help you to include code in your JavaScript files.

function include(fileUrl) {
var script = document.createElement("script");
var head = document.getElementsByTagName('head').item(0);
script.src = fileUrl;
head.appendChild(script);
}

To include a file in your JS code you can use include("<url of js>"). If you look at the code, we are creating a new <script> tag in the <head> section of the document. This works in Firefox, IE & Opera, and I think it should work in other browsers also, but I have not tested it out.

You can use this approach to do remote scripting (aka AJAX). I will write more about using this for AJAX without using XmlHttp :), I know it would technically not be AJAX, but since AJAX is a hot word these days. It will provide a similar functionality like AJAX but it will be cross domain. That is another article that is coming soon.

Technorati Tags: ,

Monday, April 24, 2006

Template used on this blog

If you want you can use the template used on this blog on your own blog you are free to use it. Goto template and cut and paste this code in that section. You would need to change the links and the images.

If you use this template just link back to this blog. There is a link in the footer, please let it remain there. Other than that you are free to modify whatever you want.
Download the code for the template.

I hope somebody uses it. If you do don't forget to leave a comment and a link back to your blog.

Monday, April 17, 2006

Get a $90 rebate at dreamhost

I guess I can get my webhosting cheap if I get people to signup for dreamhost. I really like them and after a very stupid webhost "GoDaddy", dreamhost comes as a real surprise. They offer WebDAV, Shell accounts, 1TB bandwidth and nearly every other thing the other hosts provide. The best thing that they provide is a shell account. A shell account really gives you a lot of power to do things you can only imagine with the other hosts. They don't have the CPanel as the admin panel. They use their own setup. If you are a developer you will really like the features they provide. Dreamhost is not really for dummies but for a people who know the importance of shell/cvs/subversion while developing. I have not seen any webhost other than dreamhost which provides all three in the regular packages.

If that gets you excited you can get a rebate of $90 on the $120/year hosting plan by using the promo code VIVEK. So you get the yearly package for $30 with all the features plus more. You can also use this link to sign up http://www.dreamhost.com/r.cgi?146010 and I will get some extension in my hosting.

So next time you are looking for a host go with dreamhost. Atleast till I get the kind of service I am getting I would really like people to use their services. Incase I find a better host I will write about it. If you know of a better webhost do let me know. I guess I need another post on GoDaddy soon. Specially about the control panel.

Technorati Tags: , ,

Wednesday, April 12, 2006

Yeh! Pepsi TV kya hai? / What is Pepsi TV?

Again this is not a tech post, its something I was trying to figure out since I saw the advert on TV. And finally I guess I got my answer on CNBC, "I guess" 'cause I don't think the host was too sure but anyhow, Pepsi is not really launching a new channel all they are doing is to promote Pepsi while you drink TV. So nothing earth shattering there, but lets see how that advert turns out to be.

The other advert on these days is the Marinda advert, "Mouth ka sahi use karo" or something like that. That advert is pathetic in every possible sense. It is one of the worst adverts I have seen on TV. It just shows the actor like he is an arrogant idiot too full of himself. I don't mean that the actor is arrogant but the advert just shows it that way.

With all these adverts I cannot forget the new Coke advert with Ashwariya Rai, I really don't get that advert. Atleast that advert is not targeted towards me or people whome I know. It looks like a cheap advert done by a good for nothing agency.

While I am at bashing the adverts I need to shift my focus to Channel [V], they started becoming desi a few years back. At first using third grade actors seemed funny but since the whole channel is being run by these guys, the channel has lost its sheen and are loosing badly to VH1. Instead of starting a new channel with the desi content they destroyed the content they were showing which was quite good. In a way Channel [V] has gone 10 steps backwards.

Tuesday, April 11, 2006

A lot of work and little time

Lately I have been really busy with work. I guess a lot of things have piled up and it seems like they will never be completed. I just hope I can take out a little time soon. Its been a while since I blogged and also I have a few articles that I was going to post here, most of them are no where completion. I guess one of these days I will have to get up and stop being lazy and complete those articles. Its been like a month since I went to Slashdot and about a week since I last visited digg. Currently I feel disconnected :) from the world, without knowing whats the latest that is hapenning around the tech world.

Lets hope I can soon find some time to atleast visit these sites.

Wednesday, April 05, 2006

Red Bull won't give you any wings :)

This is just something I thought I had to write about. I really liked the advert of Red Bull energy drink, with the special reference to the Red Bull gives your wings. I had to try it out, so I shelled out Rs. 75 for one can while a normal can of soft drink costs Rs. 20+.

I tried it out I did not get any wings but yeh! I did have to run to the toilet as i got an upset tummy. I kept waiting for the wings to appear but nothing happend no extra surge of energy. Its a nice way to promote your drink but I don't plan to drink it again even if was for Rs. 15 a can. It was not the best tasting drink I have had so far.

Friday, March 31, 2006

Beware of a new form of SPAM greetings

Just yesterday I was going through an article which shows ways by which spammers try to evade bayesian filters to get into your inbox. Today I got a first hand experience of another new way of getting into the inbox by fooling the spam filters. I got a mail from greetings@reply.yahoo.com and if you look carefully this is just one of the email address which Yahoo! will not filter and the mail lands into your inbox. This mail is sent by Yahoo! Greetings so there is nothing to suspect. The DomainKey-Signature also points to Yahoo! Greetings so there is little to suspect in there.

Received: (qmail 14714 invoked from network); 30 Mar 2006 21:08:14 -0000
Received: from pre-smtp05-02.secureserver.net (HELO pre-smtp05-02.prod.mesa1.secureserver.net) ([64.202.166.15])
(envelope-sender )
by smtp03-01.prod.mesa1.secureserver.net (qmail-ldap-1.03) with SMTP
for <*****@yahoo.com>; 30 Mar 2006 21:08:14 -0000
Received: (qmail 957 invoked from network); 30 Mar 2006 21:08:14 -0000
Received: from unknown (HELO n30a.bullet.scd.yahoo.com) ([209.73.160.88])
(envelope-sender )
by pre-smtp05-02.prod.mesa1.secureserver.net (qmail-ldap-1.03) with SMTP
for <*****@yahoo.com>; 30 Mar 2006 21:08:13 -0000
Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=gcom1024; d=yahoo.com;
b=T3S7EetKgarz3oqISx7o81d04bWE3pSCjlhR/rymRp3TLcqTHOsvHZtLFMNcsTbV6TooBNE8zRwzPP6z0CqHriAgOPG5Izd+0j/rBu3Bh7hHje0er7KIgaVRJ2TUf0NoLPRqZFq5zmkQoRYuKQ1Eomch1W8m42T4eb0H3Yxo+L4=;
Received: from [66.218.69.3] by n30.bullet.scd.yahoo.com with NNFMP; 30 Mar 2006 21:08:12 -0000
X-yahoo-newman-property: greetings
X-yahoo-newman-id: null
Received: from [66.163.186.252] by t3.bullet.scd.yahoo.com with NNFMP; 30 Mar 2006 21:08:12 -0000
Received: from [127.0.0.1] by web8.greet.sc5.yahoo.com with NNFMP; 30 Mar 2006 21:08:12 -0000
Received: from [59.114.214.185] by web8.greet.sc5.yahoo.com; Fri, 31 Mar 2006 05:08:12 +0800
Date: Fri, 31 Mar 2006 05:08:12 +0800
From: greetings@reply.yahoo.com
Errors-To: greetings@reply.yahoo.com
Reply-To: alice99785412@hotmail.com
To: donate@viamatic.com
Subject: ªüªÚ ¦b "Yahoo!©_¼¯¶P¥d" ¬D¤F¤@±i¥d¤ù±Hµ¹§A¡A§Ö¬Ý³á¡I
X-Nonspam: None

"ªüªÚ" (alice99785412@hotmail.com)¦b "Yahoo!©_¼¯¶P¥d" ¿ï¤F¤@±i¥d¤ù±Hµ¹§A³á¡I

¥d¤ù»â¨ú¿ìªk¡G

½ÐÂI¿ï¥H¤Uºô§}«e©¹¦¬¨ú(30¤Ñ¤º¦³®Ä)¡C

http://tw.view.greetings.yahoo.com/greet/view?7FNQ948STKCXR

¦pªGµLªk³sµ²¡A½Ð¨ì http://tw.view.greetings.yahoo.com/pickup ¡A¨Ã±N¤U­±ªº¥N½X½Æ»s«á¶K¦bªÅ®æ¸Ì¡G

7FNQ948STKCXR

¯¬§A¦¬¥d´r§Ö¡I

Yahoo!©_¼¯¶P¥d»s§@¤p²Õ

-------------------------
"Yahoo!©_¼¯¶P¥d" ¥d¤ùºØÃþ»ô¥þ¡A±i¼Æ¶W¦h¡I §Ö¨ì http://tw.greetings.yahoo.com/ ¬D±i¥d¤ù±Hµ¹¿ËªB¦n¤Í§a¡I


So far so good. There is nothing to suspect in there. Since I could not understand much I opened the link and since it points to http://greetings.yahoo.com/ there was little to suspect. I opened the greeting card and there I saw nice little advertisments in the greeting card. It was in the extra message space that the greeting card companies provide.

The question on your mind would be how its different from normal spam. Firstly this mail will not be filtered using normal spam filters and it will land inside your inbox. Secondly if you open the card like I did, you have verified your email address with the spammer. Its like using web beacons without actually using them and the greeting card companies are helping the spammer here. If you remember there is a feature most greeting companies have that informs the sender when a greeting card is opened. And since I opened it they have an email address that has been verified.

So the next time you get a greeting card from an unknown person and even if the email is in your inbox do not open it.

Technorati Tags: ,

Opera Mini rocks. Opera Mini != Opera Mobile

The last time I really used opera was when I used Opera 3, 4 and 5. After that I started using firefox and never looked back. I have always had opera on my system, even today I have Opera 9 on my system but I rarely use it. The only reason I use Opera is for WAP sites.

Comming back to the point I have tried to surf the net using a mobile but in more senses it sucks. It is just too slow for comfort. I have Opera 7.x on my mobile and though for surfing once in a while its okay but using it for more than 10 minutes is a real torture.

That is where opera mini comes up. Just to clarify a little "Opera Mini" is not "Opera Mobile". Both of them are very different products. The opera mobile edition that comes with your mobile phone is nothing like Opera Mini. Opera mini really feels responsive and the best part is its free to download. Opera Mini is something like Google Web Accelerator. But unlike Web Accelerator it acts both like a browser as well as a proxy server.

Okay actually the free part is not the best part but it does'nt really hurt that its free. Google is built into the homepage and that explains why its free. Got to love google for that. But all I can say is that if you use a mobile to surf you really need to give Opera Mini a try. You won't regret it. And for once I have started using my mobile to really surf the net. And in a way its faster to surf using mini than surfing on a desktop machine. Most of the websites open and render up fine. Since the actual processing is done by the opera proxy servers the pages load up really fast. Its almost like using a 256KBps line on your mobile.

With Opera Mini, finally opera has a winner on its hands. And as more people start using it, they are bound to get loyal customers who won't mind being charged for a service like this as there is nothing like this so far.

To sum it up in simple words Opera Mini is a service while Opera Mobile is a product.

Technorati Tags: , ,

Tuesday, March 21, 2006

Finally another release of AJAX Yahoo! Mail

I never thought there would be another release of AJAX Yahoo! Mail, but then again it will be there as long as Yahoo! does not release the new and improved version to all the lesser mortals :)

If you've not tried it till now do give it a try if you use firefox. In any case this one can act like a very good example of converting a Web 1.0 application to Web 2.0 without changing much on the server side. I have been writing an article about how I made this extension which you can use as a base for your own applications to convert them to the latest buzzword AJAX :)

For once I am writing an article which is longer than 10 pages so it will take time. And for once I am also proof reading it. Don't want too many mistakes in there. I will either post it here or on viamatic.com, in any case stay tuned and you can do so by subscribing to this blog.

I am trying to make it like a tutorial for AJAX plus also how it can help you to convert your already developed web applications.

[ Install AJAX Yahoo! Mail [0.6] ] [ Screenshots ] [ AJAX Yahoo! Mail Forum ]

Technorati Tags: ,

Sunday, March 19, 2006

NuSoap with PHP5

For the past few days I have been working with SOAP on a number of platforms. I wanted to use NuSoap with PHP5 and here are a few steps which will allow you to do so. As PHP5 has an inbuilt support for webservices it will clash with the names in nusoap.php. To get over this rename the class soapclient to soap_client. Also rename the constructor soapclient to soap_client.

This is all that needs to be done. Once you do this you would be able to run NuSoap with PHP5.

Technorati Tags: , ,

Sunday, March 12, 2006

HijackThis: The spyware detection and removal tool

A friend left his laptop at my place to remove spyware from his system. The regular solution I would follow would be to install Spybot S&D, but his system was infected with more spware than what S&D could remove. So after searching for many utlitites on the net I finally found HijackThis, this is like the big daddy of all the spyware applications. You should only use it if you know what you are doing, but it works so well that I had to write about it. It took less than 2 minutes to remove all possible spyware from his system and the performance of his system really went up.

I tried it on my system and cleaned up a few services and statup items that I don't really need and I also saw a marginal performance increase on my system. If you feel you system is slow do give it a try but be sure of what you are removing or better still post the log file on one of the forums and ask for help in removing the spware.

Saturday, March 04, 2006

I won an IPod Nano

I almost forgot about it, I won an IPod nano plus some other goodies shown in the photograph for the extend firefox contest. And the other good news is that it has been downloaded by 135399 people. Wow! thats a huge number :)



Technorati Tags: , ,

Making a html page as googlepages homepage

UPDATE 2: You can try out Roberts way, I have also tried it and it works. Use META tags <meta HTTP-EQUIV="Refresh" CONTENT="0; URL=foo.html" /> in the first block of html and it works. A bit slow but at least Page Creator doesn't wipe it.

UPDATE 1: This hack no longer works. The new version of googlepages cleans all javascript inside CSS. Though my page still works :)

It's been almost 5 days since I have been trying to change the homepage of my googlepages to an html page. This seems like a trivial task, write a line of JavaScript and you are done. But it's a lot tougher than it seems, since you cannot use any JavaScript with the pages created with Google page creator. I searched a lot on this topic; I know it's not something to loose sleep about but then again such a trivial task umm... There has to be a way out and I was determined to find a way out.

Before I tell you how I achieved it and you start abusing me right left and center have a look at my hompage. And luckily for me if you were using Internet Explorer 6 or lower you would be redirected to index.htm. It can also work with some other browsers but I just wanted to prove that it can be done. Sorry it won't work with firefox I've tried a lot; damn those guys don't have that many bugs... err.. features in their browser.

It uses the bug/feature in Internet Explorer 6 to achieve it. Open Google page creator and select any field and click "Edit Html". Insert this code there.
<div id="expression" style="display: none; style="background: transparent url(javascript:window.location=document.all.expression.innerHTML);"
>index.htm</div>


If you have a look at source code of this page http://vivekjishtu.googlepages.com/home you will see I am using "eval", but after I created this page it stopped working. Though it works on this page but every other page I created "eval" was being stripped?

So finally I tried this magical line and it works in IE6, it can also work in another browser if you use document.getElementById instead of document.all. I have tried it out and it works, but this is just a concept to prove that somthing like this can be done.

Technorati Tags: , ,

Wednesday, March 01, 2006

Google Pages the second look

I know I might have trashed GooglePages on the first look. But as I have started using it, there is something about it that makes me say its awesome. Finally it is the best way to move your things from one place to the other. I really don't like the webhosting part but I really like the fact that I can use it like a web drive. So if you want to upload a file all it takes is a single click and you are done. No messy emails to take care of.

It is hard to describe why its better but only once you start using it will you know how easy it is to manage your files. That was the good part :), but there is also a problem, you cannot make directories. So if you have many files it will become difficult to manage things once the number of files increase.

They are most proabaly using the onBlur event to capture when you select any file to upload. It feels so natural, specially the way the file is uploaded in one click. No questions asked and almost no page refresh. No need for a FTP client, everything seems to go with the flow. I uploaded my site there and currently they have no adverts. But so far I have not been able to set index.htm as the default. Lets see when and how I can insert the javascript using the pages editor.

Making the blogger navbar a little cooler

I know many people hate the blogger bar, but removing it is most probably against the policy of blogger. You can only remove it if you are using a FTP based account and hosting it on your own servers. I have seen may people completely hiding the navbar but that is against the policy. While designing this new template I had tried to merge the navbar with the rest of the doucment but I failed miserably. So I came up with this.
<style>
#b-navbar { opacity: 0; filter: alpha(opacity=50); }
#b-navbar:hover { opacity: .65; filter: alpha(opacity=75); }
</style >
It will not remove the bar completely. It will only be visible on a mouseover event. It works in Firefox, Opera 9 and Safari. On IE it will show a translucent navbar, which looks better than the original bar. Add this code in the head tag of your blogger template. Incase you want to use this template on your own blog contact me.

Technorati Tags: ,

Monday, February 27, 2006

Never ever "GO" with GoDaddy

In the past few years I have used many webhosts but the most pathetic of all has to be GoDaddy. Never ever buy the GoDaddy webhosting. If you want an over restrictive account where you cannot do anything please go with it, otherwise stay clear of it no matter what. I have an ASP hosting and a Linux hosting account.

I could not load any ASP.net application on the webhost and at last I had to load wordpress to host my website. I would have been happy if PHP worked without errors, but it took me days to get wordpress up on the website. After going through many forums on wordpress and godaddy I finally figured out the hacks to install it on GoDaddy.

I would still be content if all this worked but no plugins can be loaded in wordpress 'cause of the over restrictive hosting policy. Then to top it all after every few pages you will see mysql errors on the website, 'cause the connection to the mysql server gets lost every now and then. All this when there is not much load on the website.

Once the site got slashdotted and all I could see was "Service not avaliable" and that too within the first hour of being slashdotted. And that was when I was using plain HTML around 3 months back. Had I got the PHP based scripts I doubt it could stand more than 100 people and most visitors would be reporting the now famous "mysql server error" which is normally caused by overoad.

The control panel on GoDaddy has to be the worst of all the webhosts I have used so far. It seems to timeout after every two minutes. It looks as if it was designed about 10 years back and never updated after that. I have been trying to create a subdomain and its already been 30 minutes since I started it. To add a subdomain you need to click atleast 10 times. After every option it has to confirm "Please review your sub domain information. If everything looks OK, click Add to add the sub domain to your hosting account." And the best part the domain is not created the moment you confirm but it becomes a "Pending Setup".

After all this frustration I finally shifted to dreamhost and so far the account is really good. Right now I only have one website there, I will soon shift the others when I get some free time.

Technorati Tags: ,

Sunday, February 26, 2006

And the Microsoft Oragami project is..

I still don't know what it is but as far as the story that is developing it seems like a tablet. Something like the Nokia 770. It could very easily be a small little device just like the Nokia 770. It does make sense for Microsoft to develop such a device, but then again it is just plain speculation and the real device could turn out to be something different.

So far the my next best guess has to be a device similar to Nokia 770 which runs a modified version of Win CE, with Wifi  and all the cool stuff you can think of. But then again it could also be a device like the Sony PSP. The reason to come into these markets seems like a good idea. Since they are still not fully developed it makes sense to put your money into these markets. But again this is pure speculation.

Technorati Tags: , , ,, ,

Saturday, February 25, 2006

What is the Microsoft Oragami Project?

My best guess is that Oragami would be a Blackberry like device or I could be horribly wrong, but I guess we would have to wait till march to know what actually this Oragami project turns out to be. Right now all you see is a flash presentation on the website.

Technorati Tags: , ,

Thursday, February 23, 2006

And another year comes to an end

Today has been just another normal day. I guess I don't feel anything different just the same old me but another year added to my life. Somehow this birthday has been like any other day of my life, the same old usual stuff nothing beyond the ordinary.

Google Pages first look

I just made a webpage on googlepages. For people who have no idea about HTML and want to make a webpage it might seem like a good place. What I hate about google is there simple color scheme. It looked fine for a while but now it sucks. It almost reminds me of AWT in java. The only reason why Java failed badly on the desktop was 'cause of AWT. By the time they launched Swing the boat had already sailed. The same goes for google, they are trying to build more and more tools with the stupid looking color scheme. Most of their tools look really cool when they are launched but soon loose there fizz after a few days.

Google has some very good products in its kitty but the only one google has actually developed and the one I like is GMail and search and sometimes googlenews. The other products just seem to be concepts which are cool but very few people actually use them more than once. I like there services like Google Earth and Blogger, but the truth is that they have bought it and not developed it.

With so many people who are capable of creating magic working for Google I just hope they are creating something that has not been seen so far. Guess with the money and the talent pool they have, google can create magical things. But still waiting for those killer applications.

Technorati Tags: , ,

Monday, February 20, 2006

Deltree in Windows XP

If you are like me and sometimes still use the command line to delete stuff and you miss the deltree command here is a batch file which does the same.

Save the contents in your %WINDOWS% directory and name it as deltree.bat
@echo off
del /s %1
rd /s %1
You can also use del /s /y if you do not want the prompt, but that could be a little dangerous.

The other problem I seem to face nearly everyday is the LS command. Since there is no inbuild LS in Windows XP here is a simple LS for windows.
@echo off
dir %1
These are batch files I use normally and I know its not something out of the world but it makes things simpler for me. So I thought I would share it.

Really cool concepts in WebSite design

I was surfing along today when I found these two amazing websites. You need to check them out. The first one is www.netdisaster.com this is a really cool concept. You need to try it out to believe me. It lets you vandalise any site you want.

The other site is basically a desktop inside your browser. I mean the guy has developed a complete desktop inside the browser. Though this site is made for IE only you still need to give it a shot. Just click and enjoy. It even crashes like the real windows.

Saturday, February 18, 2006

Somewhat unusual day today

I finally finised one of the projects. It is a really good feeling to do that. This is a pic of mine when I was a kiddo. I was playing around with my camera and clicked this picture from a photo frame in my parents room. This was taken in Shimla in 1989 after my winter vacation. If I remember correctly I had to go back to hostel after this pic. I have certainly changed since those days. Just being nostalgic. Also I have really started liking the DOM. And just figured out that nearly every language has a DOM library. I had downloaded these libraries around 3 years back but never used them as I thought it was a waste of time and I was better off using my own library. My own library was never this good but it was easy to use.

If there is a flavour of BASIC around I would have used it at some point of time. I was surfing the net and came across Rapid-Q. It is a basic compiler that, okay I know compiler is the wrong word for it but it was one of the few things after which I started EzBasic. Also went over to RealBasic, they are the guys who bought over rapidq in 2001. They also seem to have a new version of their cross compiler.

In the past few years I have worked on many languages but somehow I always seem to come back to BASIC. Most people who "consider" themselves to be on a higher level would not touch BASIC with a barge pole. But the best part of BASIC has to be the way it handles strings. It might be slow but the ease of using it is beyond anything I have used. Doing the same stuff in C/C++ is a real pain in the backside. The newer languages and frameworks seem to have learned it and have a string as a datatype. On the topic of strings one of the longest and the toughest class to implement in EzBasic has to be the string class. Just have a look at the code and you will be amazed at how things are managed inside when you use the string datatype in .Net of Java.

Friday, February 17, 2006

Frontpage will not be a part of Office 2007

Frontpage will not be included in Office 2007 when it is launched. This does not come as a surprise as they have launched express editions of Visual Studio which takes care of the web programmers. They are also launching expression studio for the web designers.

Anything and everything about CSS

If there is one thing which has taken time for me to get into my head it has to be CSS. The problem in this case had to be tables. Let me explain it in a little more detail. When I would design web pages earlier on, all I could think of was a table and pages would be laid out using tables. The only problem there was that tables were never meant to postion things on a webpage.

If you have used tables to postion things in the past it is really tough to unlearn so much stuff. Only once you let go of whatever you have learned and think from scratch that you can use CSS. All I can say is that once you start thinking beyond tables you can make really good looking and functional sites that can work across platforms and devices. If you've never used tables or you are just starting out CSS would not be all that daunting.

If you plan to learn CSS here are a few sources you need to check out.
  1. A List Apart: This is a site for people who make websites :) stole there tagline. Anyhow really cool samples and also ways to get over the tables hangover. The tables hangover is a realy tough one to get over with.
  2. Sitepoint: Another great site with great tips and tricks. Has some of the web designers who write for them. Great articles.
  3. CSS Play: This is a personal website but has great samples in a very clear and neat manner. The samples are simple and beautiful.
  4. CSS Zen Garden: This the one site which really started it all for me. You really need to see what designers are capable of using CSS. I do check this site often to see the crazy stuff designers are capable of.
  5. Quirks Mode: This is a personal website but this guy writes great stuff. CSS/JS and nearly everthing and anything to deal with web designing.
  6. Dean Edwards: This is again a personal website but this guy also writes a lot about CSS and again really cool stuff.
This are many others that I seem to be missing out right now. Will add them as and when I remember.

Technorati Tags: ,

Thursday, February 16, 2006

Office 12 will be 2007 Microsoft Office System

When the next version of Microsoft Office is released it will be know as 2007 Microsoft Office System. The year has been brought in front :), guess after launching Microsoft Office Live which after thinking a lot and reading a lot I finally figured out that it had nothing much to do with 2007 Microsoft Office System. Even though both of them seem to have a similar sounding name but they are totally different products.

The new Microsoft Office Live is meant for small business which have less than 10 employes. This service basically allows them to design there own website and also get email address with there domain name. Even google seems to be going that way when they launched a service to integrate your domain name to their email service, plus they also seem to be designing an AJAX enabled webpage editor.

As for the 2007 Microsoft Office System it is the Microsoft Office people have been using. In addition to the regular Word, Powerpoint etc. they are adding two new applications.

Technorati Tags: ,

Wednesday, February 15, 2006

Never ever forget the ContentType header when using POST

I have been working on this project that involves sending content from the client to a web server. Actually there are two different projects which were hung up because of one simple ContentType header. Here is the line of code that I was missing out which was causing so much problems for the past few days.
m_WebRequest.ContentType = "application/x-www-form-urlencoded"

I had to document it or else I would forget it as time passes by. This is a VB.net project but the same mistake can cause problems in an AJAX scenario when you are trying to post data. If for some wierd reason you feel that your post data is giving you trouble while it works fine in the web browser set the ContentType header.
Technorati Tags: , ,

Submitting a form while automating IE using vb.net

If you are planning to automate IE using VB.net and you have previously used WebBrowser control as an ActiveX control you could very well be surprised. You just might feel restricted using the System.Windows.Forms.WebBrowser control compared to the ActiveX Control. The first and the biggest problem you might face is that the System.Windows.Forms.WebBrowser is very strongly type checked, which makes things like in the example below impossible to achive.
AxWebBrowser1.Document.forms(0).q.value = "foxpose"
AxWebBrowser1.Document.Forms(0).submit()
Using the newer managed control you need to use the example given below.
WebBrowser1.Document.All("q").SetAttribute("value", "foxpose")
WebBrowser1.Document.Forms(0).InvokeMember("Submit")
This took quite a lot of my time yesterday. I hope this code somehow helps someone out when they are programming the new managed control in .NET 2.0 Incase you want a more detailed example just leave a comment and I will modify the post to include a more detailed example.


Technorati Tags: , ,

Tuesday, February 14, 2006

MSXML vb.net: Using MSHTML and IPersistStreamInit to load documents from memory

The basic code to load any string and convert it into a DOM tree which you can easily manipulate using VB.net or C#. Once you load the HTML code you can use getElementById and other functions to manipulate the document.This code can be used to parse a HTML document in VB.net


Private Function LoadHTML(ByVal value As String) As MSHTML.HTMLDocument
Dim clsDocument As New MSHTML.HTMLDocument
clsDocument.createDocumentFromUrl("about:blank", vbNullString)
DirectCast(clsDocument, IPersistStreamInit).InitNew()
Dim ptrValue As IntPtr = System.Runtime.InteropServices.Marshal.StringToHGlobalAuto(value)
Dim clsStream As System.Runtime.InteropServices.ComTypes.IStream = Nothing
CreateStreamOnHGlobal(ptrValue, True, clsStream)
' load the content into the browser..
DirectCast(clsDocument, IPersistStreamInit).Load(clsStream)
Return clsDocument
End Function


You also need to add the following code to the class you are going to use LoadHTML function.

Import System.Runtime.InteropServices
Public Enum HRESULT
S_OK = 0
S_FALSE = 1
E_NOTIMPL = &H80004001
E_INVALIDARG = &H80070057
E_NOINTERFACE = &H80004002
E_FAIL = &H80004005
E_UNEXPECTED = &H8000FFFF
End Enum
<ComVisible(True), ComImport(), Guid("7FD52380-4E07-101B-AE2D-08002B2EC713"), _
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IPersistStreamInit : Inherits IPersist
Shadows Sub GetClassID(ByRef pClassID As Guid)
<PreserveSig()> Function IsDirty() As Integer
<PreserveSig()> Function Load(ByVal pstm As ComTypes.IStream) As HRESULT
<PreserveSig()> Function Save(ByVal pstm As ComTypes.IStream, _
<MarshalAs(UnmanagedType.Bool)> ByVal fClearDirty As Boolean) As HRESULT
<PreserveSig()> Function GetSizeMax(<InAttribute(), Out(), _
MarshalAs(UnmanagedType.U8)> ByRef pcbSize As Long) As HRESULT
<PreserveSig()> Function InitNew() As HRESULT
End Interface

<ComVisible(True), ComImport(), Guid("0000010c-0000-0000-C000-000000000046"), _
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
Public Interface IPersist
Sub GetClassID(ByRef pClassID As Guid)
End Interface

Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As IntPtr, ByVal fDeleteOnRelease As Boolean, ByRef ppstm As UCOMIStream) As Long


I got the basic idea from Balaji's blog which he got inturn from sp!ke. This code has been slightly modified to work in Visual Studio 2005.

Technorati Tags: ,

EzBasic the project that could be

In a way I have forgotten a lot about EzBasic. I have spent around a good 3-4 years on getting the concept right. But with so many things happening I left it in between. The project still has a lot of potential but again like XUL since there are little or no examples no one has been able to see the real potential of the project.

I have always wished to get a working edition of EzBasic on linux using wine but without putting in some more time that is not really possible. I was also planning a XUL like language for EzBasic. But I guess this whole project will stagnate as I will never be able to devote the kind of time the project requires. I am still not saying that the project is dead but I will try to revive it as and when possible.

These days most of my effort is in designing and developing web based projects and EzBasic is not web based in any sense. It needs a few tweaks and EzBasic can be ready for primetime. The amount of memory that EzBasic takes makes designing applications like uTorrent possible without too much effort. Though I need to clarify that uTorrent is not made using EzBasic. I am just taking it as an example of a really tiny little application that just works.

I wish I had more time and I was a little less lazy :). I would certainly like to float a couple of samples that show the real power of EzBasic + JS + XUL. I just hope I can do it sometime. But incase something like this comes up it would really be mind blowing. The ability to design complex GUI's using simple to use tools.

I will only take up this project once I am done with the work I have currently in my hands.

Nothing great about today

When I left my job, the first thing I had decided was that I would keep a log of whatever I was doing. That is exactly where this blog fits. I had planned of writing down whatever happened during the day. Any special site I have visited or any event of that day. Guess with time I forgot all that and got busy with a lot of things.

At the end of all this I still fell that even though I never ever have time I am not getting much out of life. So I guess I really do need to document whatever I do with a greater detail as and when possible. So from today (i was going to write tomorrow) onwards I will document every tiny little detail of whatever I do.

These days I am creating a few plugings to convert POP3 into an Atom feed. Not only POP3, but you will be able to generate Atom feeds out of hotmail and yahoo accounts. I choose Atom as Gmail already has a Atom feed so makes it simpler to use it.

I wanted to write more about the inner workings of this project but I guess that would be for another day. I have not been able to work much on my own projects. Be it dotbeta, forum software or a couple of other software I am developing. I have my hands in way too many things and the end result is that I am not getting much. I need to concentrate on one project and complete it. Once a project is finished it is kind of fulfilling.

Most of the projects I am doing pay little or nothing but I guess the amount of things I am learning is quite immense. I am really hopeful of XUL as a platform. Somehow if it’s cleverly marketed and is presented in a manner a normal programmer can understand, it can hit big time. But the problem right now is the kinds of examples that can make people take notice of it are really small in number. I really wanted to create the XUL based backend that could be as an example for what the real power of XUL is. I need to finish of my pending projects before I can jump into it. Just wish some of the projects could come to a logical end.

This post is purely about the random thoughts as they come to my mind. So if by any chance you are reading about it all I can say is that I am surprised that someone could take the time to read all this.

Monday, February 13, 2006

Run IE7 Beta 2 Standalone in 5 easy steps

The IE7 Standalone mode is not offically supported so try this at your own risk. Use this only if you are a web designer and wish to see how your pages will render in IE7. If you want the full features of IE7 the best option is to install it without using this hack.

1) Download IE7 Beta2
2) Rename the file IE7B2P-WindowsXP-x86-enu.exe to IE7B2P-WindowsXP-x86-enu.cab
3) Open the file using WinZip or WinRar and extract the contents to any directory eg: c:\IE7
4) Create a new file IE7.vbs and copy the code given below into it. Save it into the directory where you extracted the files and save it as IE7.vbs


Option Explicit

Dim objFSO, objReg, objShell, tf, obj

const HKEY_CLASSES_ROOT = &H80000000
const HKEY_CURRENT_USER = &H80000001
const HKEY_LOCAL_MACHINE = &H80000002
const HKEY_USERS = &H80000003

Sub DeleteRegistryKey(LNGHKEY, strSubkey)
    Dim reg, aSubkeys, s
    Set reg = _
GetObject("WinMgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    reg.EnumKey LNGHKEY, strSubkey, aSubkeys
    If Not IsNull(aSubkeys) Then
        For Each s In aSubkeys
            Call DeleteRegistryKey(LNGHKEY, strSubKey & "\" & s)
        Next
    End If
    On Error Resume Next
        reg.DeleteKey LNGHKEY, strSubKey
    On Error GoTo 0
End Sub

Set objReg   = _
GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
Set objShell = CreateObject("WScript.Shell")
Set objFSO   = CreateObject("Scripting.FileSystemObject")

Call DeleteRegistryKey(HKEY_CLASSES_ROOT, _
"CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}")
Call DeleteRegistryKey(HKEY_CLASSES_ROOT, _
"Interface\{000214E5-0000-0000-C000-000000000046}")

objReg.SetStringValue HKEY_LOCAL_MACHINE, _
"SOFTWARE\Microsoft\Internet Explorer\Version Vector","IE","7.0000"

objFSO.MoveFile "SHLWAPI.DLL", "SHLWAPI.DLL.BAK"

Set tf = objFSO.CreateTextFile("IEXPLORE.exe.local", True)
tf.Write (" ")
tf.Close

objShell.Run ".\iexplore.exe about:blank"  ',, true
WScript.Sleep 7000

objFSO.MoveFile "SHLWAPI.DLL.BAK", "SHLWAPI.DLL"

objReg.SetStringValue HKEY_LOCAL_MACHINE, _
"SOFTWARE\Microsoft\Internet Explorer\Version Vector","IE",""
Call DeleteRegistryKey(HKEY_CLASSES_ROOT, _
"CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}")
Call DeleteRegistryKey(HKEY_CLASSES_ROOT, _
"Interface\{000214E5-0000-0000-C000-000000000046}")


5) Now double click IE7.vbs to use IE7. You can also create a shortcut for IE7.vbs

If you want to use a batch file instead of a VBScript file you can try this out. I take no credit for this script. I just converted the batch file into a VB Script, for more information check this out . The main reason for using a VB Script file was that when you use the batch file a console window remains open till IE7 is being executed. The other reason is that when IE7 is being extecuted IE6 will not work. If you use the VB Script you can use IE6 and IE7 at the same time.

Technorati Tags: ,

Thursday, February 09, 2006

New theme and colors

I junked the old theme and made this theme from scratch. The good thing about this theme is that it has no tables. It uses CSS to position all the elements on this page. If I was told to make a 3 column layout about an year back I would have used tables no matter what. This time I stuck to the basics and used no tables at all. I am no designer but I still like the simple design that it has turned out to be.

I have used a single font for the complete site. Plus the biggest reason for changing the theme was that the older design was fixed. Most designs that are fixed are designed for 800x600 resoution. This design is designed for any resolution and it can be easily handled by most handheld devices. I forgot to post this in the last post, but the other reason to junk wordpress.com was that most of the themes there are fixed which makes everything look so cramped.

In the earlier theme I had just pasted the adwords code, but this time around I have made sure that all the colors match, and the adwords look like a part of the site. On most sites adwords look more like an alien space ship on the site and less like a part of the site.

Technorati Tags: ,

Wordpress Vs Blogger

After remaining stuck with the old boring theme for around 1 year. I made the current theme from scratch. I had to decide between wordpress and this current blog. I tried to change the theme there but the maximum I could do with wordpress was to change a few themes and not design my own. I have used wordpress on viamatic and I use it more as a cms and less as a blog. But the account that they are giving at wordpress.com is nothing compared to the real thing.

If you want to build your own blog and wish to configure it the way you want blogger is somehow the right tool.

Technorati Tags: ,

Wednesday, February 08, 2006

XUL & AJAX a match made to last

I have talked about it earlier but never got the time to make it happen. In the next few days I will start the project once I launch dotbeta. I had worked on a site eastern serenity around 2 years ago. We had implemented a shopping cart a lot of other things from scratch. But in todays context the site is a little dated. It uses tables and it is not very well optimised for SEO. I will try to convert it into a table less website and also lets see how far my SEO tip and tricks work on that site. Currently it has a PR of 4. The site has a lot of very good content but very bad SEO. Lets see how far I go on with this project.

That is one part of the project, the other part is to convert the admin area into XUL based web application. It would be a showcase of how a web application can be converted to XUL and why it is productive. I will setup a domain where you could play around with the sample admin area completely developed using XUL and AJAX. Stay tuned using the Atom Feed


Technorati Tags: , ,

Stylish is a really cool extension

I guess you will be hearing about this extension sooner or later. I mean this extension seriously kicks ass. Will try and post something here or on viamatic maybe a stylesheet. I have heard so many people who have wanted it to happen but were never able to do. I hope I can get it out before I launch dotbeta. Its really sad and bad that I have still not launched dotbeta and nor put up content on viamatic.

Technorati Tags: , ,

Deepest Sender a cool blogging utility and Stylish umm..

Today was quite a long day. Its 2:30 AM in the morning. So it is definately loooong. Just got a free day pass on slashdot.org . I checked it out later that everyone was getting a free day pass. I was thinking of developing two extensions. One was a blogging utility but I found something very similar to what I was wishing for "Deepest Sender".

The other extension I was thinking of was a skinning extension. I found stylish and that was one of the cool little extension I wanted to develop. This extension is almost perfect. Even though I develop extensions but I don't use more than 3-4 but these two are a must have extension no matter what.

I hope to change the look and feel of my blog. Add a little more spice to the blog. I guess I will be blogging more now as I have finally found what I was looking for "Deepest Sender". Sounds like a U2 song. :)

Technorati Tags: , , ,

Monday, February 06, 2006

This is my pic

I was testing out blogger today. Wanted to see how I could upload a picture. If you see my picture here I was able to do what I wanted.


Technorati Tags: , ,

PR 6 to PR 0 and back again

I was a little shocked to see some of the pages on my site http://viamtic.com/ dropping from PR 6 to PR 0 in a day. I don't use any crazy methods to increase my PR. So last night I wasted nearly 2-3 hours to figure out the reason for the change in PR. Did quite a lot a research and was a little shocked to see such a drastic change. The page rank of this blog was down to 0 from 4.

When I woke up today I saw my page ranks restored to the original values. So I guess it was a temperory glich that was causing the problem.

Technorati Tags: , , , ,
,

Its 2:30 AM and I am awake

I just hope I can get dotbeta up and running as soon as possible. I hope I can get it up by tonight. A little wishfull thinking :)

Thursday, February 02, 2006

The rise and fall of foXpose

Before I talk about anything else I need to clarify a few things. foXpose != Expose nor is foXpose a copy of Quick Tabs.

foXpose was started in August '05 and finally saw the light of day sometime in November. It started out when we laid our hands on DeerPark and the new canvas component in it. We developed an extension which shows thumbnails in tabs and also another extension that would allow you to view all the tabs on a single page.

We named the thumbnails in a tab as Thumb Tab. No one liked the name and finally we had to change it to TabNail. Viamatic foXpose was another extension we had developed but never released as we thought that no one would use foXpose if they were using TabNail. Reluctantly we released foXpose as there was very little response to TabNail. Even today I feel TabNail is a much better concept than foXpose, and I still use TabNail more than foXpose.

The thing with TabNail is that it requires time to get used to, while foXpose runs without changing the way you work. It’s more on demand and less in your face. The other problem with TabNail is that it does not work with other popular tab extensions like TabMix Plus etc.

Internally foXpose was named as Xpose because it exposes hidden tabs. But we finally named it foXpose as it would be used with firefox. So the final question would be is it a copy of Expose. The simple answer NO. I have not used OSX till date. Earlier on its release we were going to name it EzTabs but had we named it EzTabs then we would be blamed that it is an exact copy of Quick Tabs. It is defiantly a funny world 



Technorati Tags: , ,

Friday, January 20, 2006

I just won one million pounds sterlings :)

Since the past few weeks I am getting a spam like this everyday. This is really stupid. But let me enjoy it while I can.

This is the mail that I got :)

The Suite 179 1007 West/Zuld,
L70 1NL Zwolle
Holland (Customer Services)

Ref: DEUK/9383/8161/99 Batch: GI/SE12-59 Government Accredited Licensed lottery promoters.

International Promotions/Prize Award Department Login to lottery.co.uk/res

We are please to announce you as one of the 10 lucky winners in the national lottery held on the 18th january, 2006. All 10 winning addresses were randomly selected from a batch of 50,000,000 international emails. Your email address emerged alongside 9 others as a category 2 winner in this year national lotto game draw Consequently, you have therefore been approved for a total pay out of �1,000,000 Dollars (one million pounds sterlings) only. In order to avoid unnecessary delays and complications please remember to quote your reference number and batch numbers: 1, Batch 7499-4206-5876 2, Ref: 739801527-Nll 3, lucky numbers 94-1-537-97-31-809 Please note that your lucky winning number falls within our European booklet representative office in Europe as indicated in your play coupon. In view of this, your �1,000,000 would be released to you by any of our payment offices in Europe. To file for your claim, please contact Advocate Patrick cox Telephone number +31 -6100- 234 82 Fax: +31-847-545-681 Email: bejesbejeslf@netscape.net Bejes law & Associates This will enable the office of bejes & asscociates to send the claims application form (A4) to you the Beneficiary.you can confirm your winnings when you LOGIN TO lottery.co.uk/res For security reasons, you are advised to keep your winning information confidential till your claims is processed and your money remitted to you in whatever manner you deem fit to claim your prize. This is part of our precautionary measure to avoid double claiming and unwarranted abuse of this program. Please be warned. Remember, all winnings must be claim not later than january 26nd, 2006, after this date, unclaimed funds will be returned to the national Lotto Good luck from me and members of staff of the NATIONAL LOTTERY.

Yours faithfully,
Mrs Maria Rooney

Online coordinator for THE NATIONAL LOTTERY Sweepstakes International Program.

Thursday, January 19, 2006

IFRAME if hidden and 100% height does not show

Like I said earlier let me show you how IE SUCKS big time. Lets say you have IFRAME that is hidden then you are in for many I really mean many problems. I tried out with height = 100% but it would just not work. I tried it on Opera and Firefox and they work really well.

Technorati Tags: , ,

IE Sucks bigtime

I could not say it louder. The javascript application that I am developing works in Opera, Firefox but after every few lines of code IE has to show its age. That stupid browser will make your life miserable. Be it from hiding the frame border to changing the style sheets. With IE there is always that special hack that does it.

Maybe in the next entry I should write in a little more detail about what all problems I have been facing using IE.

Technorati Tags: , ,

Another day another adventure

Lately I have little or no idea about the time or date. Its kind of strange and I was a little shocked to know that its already 19th. I am trying to get dotbeta up and going for the past few days but its turning out to be a huge task. I have not been able to put up much on this site. Guess I need to get back in shape before I loose it :)

Friday, January 06, 2006

Need to make EzBlogPad really fast

I guess waiting and watching does not help much. After waiting to get this made for around 3 months. I guess I finally need to put in a little more effort in it and get it done. Lets see when EzBlogPad finally see's the light.