How to create a .ics file?

Whether you use calendars in your Apple products or Microsoft Products or web based systems like Google or Yahoo, the connecting thread is the .ics file. You import/export calendar information using the .ics files.

Traditionally you paid for the software that permitted you to create .ics files. Programs like MS Outlook or iOS. If you didn’t pay for the software, you had to pay for the connectivity to generate an .ics file from a web based calendar service.

I discovered, just today, that Sunbird 1.0 beta1, a standalone free calendar program by Mozilla foundation now lets you work offline and create .ics files. I just want to put in the good word. Does Sunbird handle time zone differences and daylight savings well? Well, I don’t know for sure but I think we have program that fills a sweet spot.

How to : Program a MS Excel Form

If you are trying to make an excel form, chances are you lost at the many objects lying around on your form and are baffled as to how all the pieces fit together.

They key thing in writing a form is understanding how many objects are used and what minimum code must support each object and action. If you are lost and dont know what piece of code to write next, here are some simple guidelines I follow myself in programming my forms for performing engineering calculations.

1. Throw all objects you want on a form. Inputs and Outputs.

2. For an engineering calculation, if any input parameter changes, all outputs must vanish. Otherwise your form risks the possibility of displaying the incorrect value from a previous calculation before the current calculation is performed.

3. Initialize the form using built in “UserForm_Initialize()” function.

4. Initialisation of the form can be performed by a separate macro which pouplates the initial values to be displayed.

5. Use the most common three buttons as set in 6, 7 and 8

6. “Close” button unloads the form

7. “Clear” button can be used to invoke the initialization macro or clear the all input and output fields by making them blank.

8. “Calculate” button begins the calculation sequences.

9. When starting a calculation, first step is to check the inputs.

10. Check the inputs one by one. If inputs are not correct dont perform the calculation. If inputs are correct, read and interpret the inputs alongside.

11. Perform calculations. Use UDFs as necessary.

12. Estimate results. Diplay results as Label Captions.

Have Fun!

How to : Edit Background Graphics in Powerpoint?

You have an PPT file from an older version of MS Office that opens in Office 2007. There are images on the master slide that seem to be not  editable. But you can hide them by selecting on “Hide Background graphics”. How do you edit whatever graphics that are controlled by the Background Graphics button?

Go to view, slide master then make sure you select the first slide in the list on the left. When you are on that first slide you can select and edit these types of background items.

How to : Access Yahoo Mail through Outlook?

Yahoo! old timers who can recollect the good old days when email was accessible through a client program can now feel happy again.

I was at one point in time paying Yahoo! to have POP access after they suddenly decided to withdraw the POP access to users that don’t pay.

According to this article, Yahoo!  has restored pop access, at least to a part of users in Singapore, Hongkong, India and UK.

When I tried to configure Outlook 2007 to POP my yahoo account, it worked.

To make it work for me, I had to configure my Profile to Yahoo! Asia.

When Outlook 2007 configured the account for the first time, it detected the following settings:

Incoming mail server settings
* POP server:
* Port: 110

Outgoing mail server (SMTP) settings
* SMTP server:
* Port: 25
* Use authentication

These settings worked flawlessly. However, I decided to use SSL even though it would a bit slower and manually corrected the setting as follows:

Incoming mail server settings
* POP server:
* Use SSL
* Port: 995

Outgoing mail server (SMTP) settings
* SMTP server:
* Use SSL
* Port: 465
* Use authentication

Everything is working fine. Thank you, Yahoo! for not making me cough up $20 for POP access this year. I wouldn’t have paid any way.

I just though I should write it down, in case there is some one else looking for instructions.

How to : Multiple login in yahoo messenger

You can have multiple instances of yahoo messenger which can be used to login with different IDs – without any download or patch .
To have multiple instances of yahoo messenger, follow these steps :
1. Go to Start —-> Run . Type regedit, then enter .
2.Navigate to HKEY_CURRENT_USER ——–> Software —>yahoo —–>pager—->Test
3.On the right page, right-click and choose new Dword value .
4.Rename it as Plural.
5.Double click and assign a decimal value of 1.

How to : Google Wave

Yes, Google wave is a significant improvement over email and I’m glad to be having it already.

Whenever a person opens Wave for the first time, he is greeted by a 2 minute video of Dr. Wave who gives a brief explanation of what wave is about. When I compare that with the welcome email I got when I first signed up for Yahoo! Mail, I’ve already watched technology come a long way.

For those who are not familiar with Google Wave, I’d like to recommend a few excellent articles.
1. Mashable’s Google Wave : A complete guide
2. Mashable’s The top 6 game changing features of Google Wave
4. Google’s own guide
5. List of Robots for Wave

There is even a Firefox addon, here.

Now briefly, let me write down a few things that are absolutely simplistic about wave – rephrazing Google’s own wave on wave.

1. Like you use gmail to send emails, you use wave to create and edit waves.
2. Think of a wave as document that you create and the document is available in a sever somewhere for another person to see.
3. You cant edit an email after you’ve sent it. But a wave is sitting there so that it can be edited any time. So hypothetically, you could have just one wave per person and keep on editing it to add more content. One wave can thus be equivalent to multiple emails.
4. Wave represents a closed set of users. Whatever is created remains within the closed set of users. A person who doesnt have a wave account, cannot send a email to a wave account.
5. A wave can be both a document and a conversation.
6. Like recipients for email, you have participants for wave. All participants on a wave can edit any part of the wave, at the same time.
7.  A wave can have blips in it. A wave with blips is a rough equivalent of an email thread. To quickly read through unread blips in a wave, hit the spacebar.
8. You can have your own wave profile to help to help your contacts recognize you on a wave.
9. You can use the playback feature lets to move through the history of a wave. Awesome!
10. Extensions let you add rich content and interactions to waves, or integrate with other systems.
11. To attach a file to a wave, start in edit mode. Then either:
* Click the paperclip and select the file from your desktop or
* To drag and drop right from the desktop into a wave, install Gears in your browser.
12. Google Wave’s spelling correction uses the context of your message to correct your spelling.
13. You can remove waves from your inbox in two main ways:
* Archive: takes a wave out of your inbox until someone updates it
* Mute: takes a wave out of your inbox unless someone adds a private reply to you
You can always find these waves again by searching for them.
14. Tags are an easy way participants can share organization of waves. Any participant can add or remove a tag.
15. You can create folders to organize your waves.

So there are the basics. Happy waving!

Howto: Access wifi at Delhi airport

Today, I am having an hour to kill at the new NewDelhi Airport. When I booted my laptop, my laptop detected two networks. But when I connected to either, internet connection didn’t happen by default.

Airtel’s network requires you to carry a mobile phone. When you start your browser it prompts you for a mobile number. The username and password are sent by SMS. You will need these login credentials to access the internet.

I’m done. I can kill the hour now. But I wonder if this would work for international passengers.

VBA support in OpenOffice.Org Calc

For many years till yesterday, I knew about OpenOffice.Org Calc. Today, I’m excited about it.

I tried OpenOffice many years ago. It could do few things back then, but I immediately dismissed as inadequate for my needs. I have always been a fan of what VBA could do for Excel.

Last week, I completed the most complex piece of VBA application I’d ever written. I am a VBA newbie and it took me a week  to finish my code that could be printed on 28 A4 pages. My spreadsheet till date works flawlessly on XP/Office 2003 like it is supposed to, but I wrote most of my code in Vista/Office 2007.

When I upgraded to Debian Squeeze, 3.1.1 came with it. I checked out the new version and was impressed that one could write macros in Python, Javascript, BeanShell in addition to BASIC.

I tried to open my most complex piece of VBA code in and I was bombarded with hundreds of repetitive error messages that I had to kill the spreadsheet from the command line. I was convinced that VBA and OOoCalc are not compatible, till I discovered this site by accident when trying to learn to write Javascript Macros in OOo.

OK. All I needed to add was “Option VBA Support 1″. That didn’t sound too difficult, so I tried opening my spreadsheet  again and had to again kill everything from command line.

Some thing was not right and I wasn’t being able to run VBA despite the promised compatibility.

So I decided to go slow. No matter how many times, I couldn’t run the macros when I opened the native excel file. So I decided to open the excel file with macros disabled. That let me open the spreadsheet, but nothing was working. I found that OOoCalc automatically had added “Option VBA Support 1″ to my modules.

I saved the file as .ODS and proceeded to debug by enabling macros again. This time, errors didn’t come in a flood.They came one at a time and it was easier to debug.

The first set of errors related to variables which did not have an explicit Dim statement. VBA in Excel seemed more forgiving in handling varaibles without proper Dim statements. But OOo Calc didn’t like it. So I ended up adding a few Dim statements for some variables.

The next set of errors was with Excel UDF names. OOo Calc likes to see Functions being invoked with uppercase letters. So if you’d used lower case letters in Excel, they would show up as errors. This could be easily fixed by use of find and replace feature.

With just these two things, fixed my new .ODS file worked perfectly. I then saved it as .xls and re-opened the .xls and everything was still working. Though OOo Calc  documentation still says that not all VBA features are supported, VBA runs well on OOoCalc for all practical engineering calculations. So now is the time for me to make the switch.

Now if you have difficulties, in getting  your VBA code to work  in OOo Calc, dont give up soon.

Howto: Change a menu in excel based on user input from another menu

Let us say there are three types of products:
Cakes, Drinks and Chocolates

Let us say each product type has varying number of sub-types:

  • Two different types of cakes: Cake A, Cake B
  • Four different types of drinks : Drink A, Drink B, Drink C, Drink D
  • Three different types of Chocolates : Chocolate A, Chocolate B, Chocolate C

Let us say we need to give the user two comboboxes, one to select the product type and one to select the product sub-type. In such a case,  the choices and number of choices displayed in the sub-type combobox will depend on the users choice of product type.

Macros can be used change one combobox based on the selection in another.

Let us start by setting up the first combobox.

  • Type values Cakes, Drinks and Chocolates in cells H4:H6.
  • Draw a combobox whose name is say Drop Down1
  • Right click the combobox. Select Format Control. Set the combobox to take inputs from range H4:H6 and return selection to H.

Let us next create the second combobox whose name is Drop Down 2. This combobox is still empty. To fill up this combobox we need four macros.

  • First macro menu_cakes fills the combobox if the user selects cakes.
  • Second macro menu_drinks fills the combobox if the user selects  drinks.
  • Third macro menu_chocolates fills the combobox if the user selects chocolates.
  • Fourth macro menu_product_selector decides which of these macros should be used depending on users selection.

Let us start creating these macros in the VBA editor.

  • Start the editor by pressing (Alt+F11).
  • Select Insert – > Module
  • Type in the code for the macros

Sub menu_cakes()
ActiveSheet.Shapes(“Drop Down 2″).Select
With Selection
.ListFillRange = “$J$4:$J$5″
.LinkedCell = “$J$2″
.DropDownLines = 2
.Display3DShading = False
End With
End Sub

Sub menu_drinks()
ActiveSheet.Shapes(“Drop Down 2″).Select
With Selection
.ListFillRange = “$K$4:$K$7″
.LinkedCell = “$K$2″
.DropDownLines = 4
.Display3DShading = False
End With
End Sub

Sub menu_chocolates()
ActiveSheet.Shapes(“Drop Down 2″).Select
With Selection
.ListFillRange = “$L$4:$L$5″
.LinkedCell = “$L$2″
.DropDownLines = 3
.Display3DShading = False
End With
End Sub

Sub menu_product_selector()
Dim n As Integer
n = Range(“H2″).Value
‘This is where the user input is taken into account
Select Case n
Case 1
Call menu_cakes
Case 2
Call menu_drinks
Case 3
Call menu_chocolates
Case Else
MsgBox “Error is selecting product from Menu”
End Select
End Sub

The last part is to tie-all these macros for execution.

We do this by right clicking on the product type combobox (Drop Down 1), selecting Assign Macro and asking it to run the macro menu_product_selector. This way every time the user makes a selection on this menu, it will invoke the macro menu_product_selector which in turn will invoke other macros that control the second combobox.

One assumption made is that all combobox objects will be on the activesheet. It is not a bad assumption to make as the user would definitely be present on the worksheet containing the comboboxes to make a selection.

Is there a better way of doing this?

Excel Howtos

Howto: Call one Excel Macro from another

If you have a spreadsheet that has multiple macros, it is possible to invoke one from the other. You need to use the statement “call [name of macro to be called]” each time you want a particular macro to be called.

eg: Body of macro0 could contain following code to invoke other macros

if x=1
call macro1
else if x=2
call macro2
call macro3

*Edited later*

This applies only to Macros and it does not seem to be possible to invoke macros using the call function from user defined functions.

Howto: Add buttons, checkboxes, comboboxes in Excel2007

Office 2003 had “Forms toolbar” that contained all the objects like buttons, checkboxes, comboboxes etc.

In Office 2007, this functionality has been moved to the Developer tab. You have to manually enable the Developer tab in the ribbon bar as follows.

  • Click on the oversized Office logo button in the upper left corner
  • Click on the Excel Options button to display the Excel Options dialog
  • Click on Popular in the list in the left hand side of the dialog.
  • Check ‘Show Developer tab in the Ribbon’
  • Click the OK button.

In the Developer tab now should appear in the Ribbon bar. If you open the developer tab, you can find the Controls section which has a drop-down menu labeled Insert where the form and ActiveX controls are placed.

Howto: Change values of individual cells through macros

To store number 3 in cell F3, use the following command in the body of the macro:

Range(“F3″).Value = 3

This would place the value 3 into cell F3 of the active worksheet of the active workbook.

To place the value in another workbook use the following command.

Workbooks(“BookName”).Worksheets(“SheetName”).Range(“F3″).Value = 3

The .Value property can also read a value from a cell.

x = Range(“F3″).Value

Whether .Value property is used to read a value or assign a value depends on which side of the equal sign it is placed.

However, this applies only to Macros and not user defined functions. Though  it is possible to read a value to a user defined function and it does not seem to be possible to assign a value to a cell.

How to : Mount an NTFS drive for read-write in Debian Lenny

Traditionally, Linux users mount NTFS partitions for read-write by first obtaining the libfuse2 and ntfs-3g packages and then manually editing the /etc/fstab file. This process required you to remember several things tedious and there was a risk of making the system non-bootable if the /etc/fstab file was incorrectly written.

Today, I was able to do the same thing with the help of a new module called disk-manage on Debian Lenny and Gnome.

Disk-manager detects, mount new unmounted partitions, including NTFS-partitions in real time without requiring a reboot. Disk-manager  can be also used to set mount point for the partitions.

To install disk-manager:

# apt-get install disk-manager

To start disk-manager

System->Administration->Disk Manager

Howto: Manually assigning X authorisation for Debian superuser

Today, while running Debian I noticed that I was able to run some programs as a normal user. But when I logged in as a super user, the program wont run.
$ gedit starts gedit
# gedit fails giving the following error
krishnanondebian:/home/krishnan# gedit
No protocol specified
cannot open display:
Run ‘gedit –help’ to see a full list of available command line options.

X authorisation for the superuser seems to be an issue that has been discussed several times. There is a sux command which is technically “su+x authorisation”. I didn’t know about the sux command so I took the longer route:

1. open a console and login as ROOT : su

2. see who can launch an “X program” : xauth list
if you get an error or the list is empty(you dont get anything) then continue to read on-probably this is you solution.

3. open a console and as USER see who is authorized to open the X programs : xauth list
This should give you something like this :
desktop/unix:0 MIT-MAGIC-COOKIE-1 395a5228d995d958a0cc59a5afe9d521 MIT-MAGIC-COOKIE-1 45891337dd1f30ea26f45bb6b70449b0
desktop:0 MIT-MAGIC-COOKIE-1 370116e6e873fc798aa4f1429f536219

4. now as ROOT add the ones (hostnames) you want to be able to launch X programs on your DISPLAY :

xauth add desktop/unix:0 . 395a5228d995d958a0cc59a5afe9d521

Do the same for the other entries as well(if you want to be able to launch from other hosts too-try adding all if you dont know which one is the correct one).Notice that the long numbers at the end are the same with the users before!ALSO NOTICE THE DOT “.” between the “desktop/unix:0″ and the number. Now you should be ok.Try to launch the program as ROOT. Should work

Source  :

Howto: Upgrade to Debian Squeeze

My first attempt to upgrade to Debian Squeeze failed. It was because I lost power in the middle of the upgrade and my PC got switched off. It was so bad that I could not get the installation to work again. I had to re-install.

I made a second attempt today and succeeded. Briefly, this is what happened.

18:45 hrs
I pop in the Debian 5.03 DVD 1 and start a vanilla install of Lenny with GNOME.
20:35 hrs
Debian Lenny  installation completes.
20:40 hrs
I edit the /etc/apt/sources.list file to change all instances of “lenny” to “squeeze” and all instances of “.in” to “.us”. This is the only preparatory step required. Nothing else is necessary as the entire squeeze installation happens by a download.
20.41 hrs
I use the update manager to check for updates. Smart Upgrade feature  identifies 1101 packages adding to 881 MB.
20:42 hrs
I begin to download the squeeze upgrades on my 512 KBPS connection
12:58 hrs
All 1101 package downloads complete and squeeze installation starts. Thankfully, I didn’t lose power this time.
01:25 hrs
Installation freezes when attempting to restart the hardware abstraction layer.
01:27 hrs
After waiting for two minutes, I press Enter a few times and Ctrl+c a few times. Disk whirls and installation continues.
01:35 hrs
Installation completes. Update Manager throws out a long list of dependency problems reproduced below. PC freezes again and wont power down.
01:36 hrs
I manually power down the machine, wondering if the upgrade worked
01:38 hrs
When I boot, I notice that the Vanilla installation of Squeeze is near perfect. Everything works flawlessly.

The addition of  multimedia drivers, third party software etc. are for another day.

Dependency problems during a normal squeeze install.
E: dbus: subprocess installed post-installation script killed by signal (Interrupt)
E: dbus-x11: dependency problems – leaving unconfigured
E: gconf2-common: dependency problems – leaving unconfigured
E: libgconf2-4: dependency problems – leaving unconfigured
E: gconf2: dependency problems – leaving unconfigured
E: libgnomevfs2-common: dependency problems – leaving unconfigured
E: libgnomevfs2-0: dependency problems – leaving unconfigured
E: libgnomevfs2-extra: dependency problems – leaving unconfigured
E: libedataserver1.2-11: dependency problems – leaving unconfigured
E: libcamel1.2-14: dependency problems – leaving unconfigured
E: libebook1.2-9: dependency problems – leaving unconfigured
E: libecal1.2-7: dependency problems – leaving unconfigured
E: python-evolution: dependency problems – leaving unconfigured
E: libgnome2-common: dependency problems – leaving unconfigured
E: gvfs: dependency problems – leaving unconfigured
E: libgnome2-0: dependency problems – leaving unconfigured
E: libbonoboui2-0: dependency problems – leaving unconfigured
E: libgnomeui-0: dependency problems – leaving unconfigured
E: libpanel-applet2-0: dependency problems – leaving unconfigured
E: python-gnomeapplet: dependency problems – leaving unconfigured
E: libgnome-desktop-2-11: dependency problems – leaving unconfigured
E: python-gnomedesktop: dependency problems – leaving unconfigured
E: gnome-media-common: dependency problems – leaving unconfigured
E: libgnome-media0: dependency problems – leaving unconfigured
E: python-mediaprofiles: dependency problems – leaving unconfigured
E: metacity-common: dependency problems – leaving unconfigured
E: libmetacity-private0: dependency problems – leaving unconfigured
E: python-metacity: dependency problems – leaving unconfigured
E: libtotem-plparser12: dependency problems – leaving unconfigured
E: python-totem-plparser: dependency problems – leaving unconfigured
E: python-gnome2-desktop: dependency problems – leaving unconfigured
E: python-gconf: dependency problems – leaving unconfigured
E: python-gnome2: dependency problems – leaving unconfigured
E: consolekit: dependency problems – leaving unconfigured
E: policykit: dependency problems – leaving unconfigured
E: hal: dependency problems – leaving unconfigured
E: xserver-xorg: dependency problems – leaving unconfigured
E: xserver-xorg-core: dependency problems – leaving unconfigured
E: xserver-xorg-input-kbd: dependency problems – leaving unconfigured
E: libebackend1.2-0: dependency problems – leaving unconfigured
E: libedata-book1.2-2: dependency problems – leaving unconfigured
E: libedata-cal1.2-6: dependency problems – leaving unconfigured
E: libegroupwise1.2-13: dependency problems – leaving unconfigured
E: libsoup-gnome2.4-1: dependency problems – leaving unconfigured
E: libgweather-common: dependency problems – leaving unconfigured
E: libgweather1: dependency problems – leaving unconfigured
E: libedataserverui1.2-8: dependency problems – leaving unconfigured
E: libexchange-storage1.2-3: dependency problems – leaving unconfigured
E: libgtkhtml3.14-19: dependency problems – leaving unconfigured
E: libgtkhtml-editor0: dependency problems – leaving unconfigured
E: evolution-data-server: dependency problems – leaving unconfigured

Howto: Automatically start a program in Debian

Some times, some of us may need to start a program when starting Debian. One example could be the instant messenger program Pidgin or it could be Vuze for people who want their downloads to start automatically.

GNOME has an elegant solution for this. Go to System -> Preferences -> Sessions and here you can add a list of programs you want to start with every session.

*Edited later*

In KDE4 there is a similar choice in Control center -> autostart.

If you are using KDE 3.5, which comes with Debian Lenny as a default, you will need to add the program manually to ~/.kde/Autostart

How to: Carry Wikipedia content on a USB pen drive

This instruction is meant for Windows users.

You’ll need atleast a 16 GB pendrive to carry Wikipedia.

Method 1 : Easy method
For those who are not willing to go through a lot of pain in learning new things, this is the simpler method

  1. First download the latest content from Wikipedia. This is a single file of size 5.1 GB as on today and downloading could take hours.
  2. The latest dump is presently at Copy the downloaded .bz2 file to, say C:\wikipedia.
  3. After this 5.1 GB download is complete, it is necessary to download the software that can read this huge file.
  4. The simplest is wikitaxi. Download Wikitaxi and unzip to the same folder, C:\wikipedia
  5. You should see two executable files now. The wikitaxi executable is the one that should be used to run wikipedia. The wikitaxi importer executable is the one we need to use to convert the .bz2 file downloaded into a .taxi file.
  6. Run the wikitaxi importer executable and let it convert the .bz2 file into a .taxi file. This takes a long time and produces a single 9.2 GB file with a .taxi extension.
  7. Once .taxi file is made run the wikitaxi executable and open the .taxi file. You should be able to browse  the content of wikipedia, but with a slightly different look.
  8. Now copy the C:\wikipedia folder to a pendrive and you have a portable version for personal reference.

Method 2: For the geeks

You probably don’t need to read this, but the best way is to clearly to host the entire content on the same platform that Wikipedia does.

  1. Install XAMPP on a pen drive
  2. Install Mediawiki on XAMPP
  3. Download the latest Wikipedia dump
  4. Import the dump to Mediawiki.

Voila! You have the portable and perfect replica of Wikipedia.

How to: Use SEO plugin

This is a sample post created after the installation of TGFI SEO plugin.

This sample post should help me verify if I’m able to configure meta data at an individual post level.

What this means is, after this posting this, if I access this post through its permalink and view the html source I should see some meta data for this post.

This plug-in sure doesn’t sound like big deal to me, because I am required to use the wordpress dashboard instead of a blog client. TGFI SEO plugin will give you yet another form just below the editor on which we can fill in the post level meta data for SEO.

One thing that must be done for the plugin to work is from the FAQ:

Q: The titles aren’t showing up for me, or seem to be partially working. What’s wrong?

A: Make you you have <?php wp_head(); ?> in your header.php file between your HTML <head> tags.

I hope it is worth the effort.

Solution to WordPress MU xmlrpc bug

If you are reading this, you probably landed here looking for a fix that will help you use a desktop client on WP-MU. Well, you are not alone.

My previous post on using Scribefire on WP-MU, certainly was not the most elegant way of solving the xmlrpc problem, but it worked then. When I upgraded to Firefox 3.5.1 and Scribefire 3.4.1, the fix stopped working. I was busy at work and could not sit down to study the problem, so I simply stopped posting to the other blogs I really want to write.

Thankfully, this weekend I could fix the problem. I know now that a fix was available since April ’09, but it perhaps took so long to show up in google or it was just my clumsy googling. Daniel Llewellyn has written this small piece of code which solves this problem elegantly.

To solve the problem (xmlrpc bug) so that you use desktop clients on WP-MU do the following:
1. Download the text file with Daniel’s code
2. Rename the text file as wpmublogger-getusersblogs.php
3. Upload the php file to your WP-MU installation to the mu-plugins folder under the wp-content folder.

Thats it and now you’re now ready to go. When I tested, Scribefire 3.4.1 detected all 7 blogs that were configured to a particular user account.

Thank you, Daniel, for sharing the trick. One small piece of code that solves a bug bothering so many WP-MU users.

How to : Twitter

In the recent past, people have told me that they don’t understand the point in using twitter.

With 3 tweets in 7 months so far, I dont really count as a (major) twitter user either. But, I thought I could always write up an explanation about the advantages to help people decide. So, here are a few things about twitter to help you understand why i think it is the next big thing.

To help those who’ve never used twitter, let me start by posting my Twittle screenshot.
Twittle is a light weight client software that I’ve been using to read news from OneIndia regularly.

One quick look at image tells the following:

1. 35 minutes ago, I was solving puzzles at

2. 5 minutes before I wrote about Greylabyrinth, tweeted about the arrest of Muthalik in Mysore.

3. 20 minutes before that Prakash wrote about a documentary he watched – in New Jersey, I suppose.

I know about all this without reading an email, without seeing a website or even a RSS feed. How cool is that?

Now, if you think of a twitter page as yet another webpage that you need to open to learn about what a friend is doing, then it perhaps doesn’t appear as attractive/intuitive. Now if you want to know what I’m doing, it does not matter if you have to type or into your browser, it feels like the same effort.

Now if you understand that you can get real time updates from me -and-your-other-friends-and-even-companies – by clicking this little “Twittle” icon sitting in the system tray, voila, Twitter worked its magic on you.

So twitter is about real time updates from multiple sources all delivered to an icon in your system tray. Like most services, twittering is only as fun as your client software or friends can make it. Now if you live in a cave and your friends help you kill your prey everyday, you’ll be better off learning about slingshots.

I use Twittle because I dont write much and I am mostly a “read only guy” – but if you have specific needs, you might want a client with at least a few more features like Pwytter.

Most of my friends who are online 24×7 still dont use twitter as they seem to think instant messengers are faster. But then, with instant messengers dont get you a webpage on which you can prove that you said or didn’t say something.

Twitter is the fastest way to publish information publicly but the penalty you pay is size, and I may add that the layout options on your twitter page are really limited.

Most of what is on blogs are for public consumption and most of instant messaging is not for public consumption.
To me, twitter is the perfect fill for the sweet spot between friends who are close enough to beat the crap out of us on messengers and those long distance old buddies who deserve more attention than our occasional email or blog post.

There is a lot of hype about Twitter right now. Many new services and applications are cropping up daily. You might want to spend some time on these and might want to differentiate those which will stand out in the long term. By the time you’re done evaluating, I’m sure you’d be a Twitter expert already.

If you bring twitter into your life, this is a list of things you’ll be doing.

Among others, the invisible power of twitter comes from:
1. Real time – as fast as few second updates delivered to your twitter client
2. Direct – straight from the horse’s mouth
3. Two way communication – better than just reading, you can respond quickly if you choose to
4. Brevity – yes, it is important to intelligent people.
5. Multiple devices to communicate with – Desktops, Laptops, Mobilephones, PDAs
6. Speed – dervied from 1, 4  & 5
7. Greater spontaneity and better thought tracking – derived from 6

So as you can see, there are clear advantages. There is actually more to it, but these are the key differences that matter to most people who just want to keep in touch with friends.

If reading all of this made you understand twitter any better, happy twittering!