GAE seems like a better Cloud Computing Platform over EC2

GAE lets me create upto 10 free applications and the deployment process is so easy and smooth.  Especially with the ease of Mercurial, all I have to do is, hg push and deploy, take a break and my app updates are up!  I am able to focus completely on development over worrying about all the setting up and deployment issues with.  Plus my app can serve upto 100,000 users for free!

What Cloud Computing platform are you using or planning to?

Safari, Firefox, Internet Explorer wouldn’t open HTTPS pages

Today, my login attempt at facebook failed - I was sure I typed in my password right, but the actual error was not with facebook, and it was with my comp’s date/time settings.  Yep, Both, safari and Firefox reported “expired certificate” issue to https:// sites.  I was wondering, even to facebook?  Then I remembered something (about someone’s bday) and lol the time reported by my PC clock was Sunday, 1st January.  Aha!  That must be it.  Apparently, the PC’s internal/battery clock-time needs repair.  And how I solved the issue for the time being?  I wrote a program called ”TimeSync” - which corrects the PC clock based upon the current UTC time from Google App Engine!



Do-Not-Open-Attachments-from-Facebook-Login

Recently I got a suspicious looking email that had an zip/archive attachment.  The from address read “Facebook-Manager” to make it look legit.  My email client downloaded this email and the attachment was immediately removed by my Anti-Virus.  Here are some KEY points:

* Facebook does not update your password for any reason.

* Except you nobody knows your password (unless you tell them), and not even facebook has the actual password that you will be typing in.  Wondering how?  Because, all passwords are digest-encrypted and stored in their database.  “What the hell does digest-encrypted mean??” - Let’s say your password is the most unguessable “password” ( LOL ).  Facebook stores it as “5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8”.  This is SHA1 encrypted (it is not named after me).  So, anyways, the point is, it is a ONE-WAY-encryption!  It is impossible even for a computer to deduce how that 5b-blah-blah was arrived at.

* Facebook verifies if your password is correct only at the time of login and only when the digest-encryption of the password you enter at login matches the digest-encryption in the database. So your password is never seen in plain-text and it is impossible for a human to that’s already encrypted.

So, the only way to know your password is by getting it from you making you type or say in places other than FaceBook.com.  Do you disagree?

View In Browser/Browse with key shortcut - alternative for Ctrl+F5

At work I use Visual Studio 2008 for web development.  I do not always like the Ctrl+F5 option, since it opens up my default browser (in my case, Google Chrome).  Same is the case with, “View in Browser” from the solution explorer.  But then sometimes I want to start the page in Firefox or IE for cross browser unit testing.  This is where I like the “Browse with...” option in the solution explorer.  If you are like me who uses this option quite frequently and want to save a few mouse clicks, go to Tools->Options… Environment->Keyboard (make sure “Show all settings” is checked) and type in “File.BrowseWith” in the show commands containing filter and assign a nice keyboard shortcut.  You may also notice that File.ViewInBrowser already has a keyboard shortcut of Ctrl+Shift+W - I saw this to be redundant.  So I removed the shortcut for this and assigned this to File.BrowseWith.  Now everytime I make changes to a .aspx file, I hit Ctrl+Shift+W to choose to browse in the browser I want to test!

JavaScript Class Template for Object Oriented People

JavaScript, being a dynamic language, does have all those Object Oriented Paradigms and following is the template that I use to write my JavaScript classes.

function MyClass() { // MyClass = function() won’t work

var p = “”;

function a() {
alert( p );
};

//
MyClass.prototype.test = function( s ){
p = s;
a()
};

}; // End of Class: MyClass //

Usage of MyClass:


var x = new MyClass();
x.test("Hello World!");

As you can note, we have a public method: test(), a private method a() and also, a private variable: p.

Here is another interesting syntactic sugar for writing a public method:

function MyClass() { // MyClass = function() won’t work

var method=MyClass.prototype;

....
....

method.test = function( s ){
p = s;
a()
};
....
}

So, what is stopping us from writing JavaScript the OO way?

A portable development web server - Lighty2Go - Wow

I was just wondering if I could get a portable version of lighttpd but Google gave me more than I asked for. A complete stack of Lighty (lighttpd web server), MySQL, PHP on windows, given away free, again!

Just wow.  Here is where you get it: http://lighty2go.com/

Just Got Subversion installed on my Host Monster account (svn+ssh)

Thanks to Jonathan Booth for hosting the following file with bells, whistles and SEO support.  This helped me get Subversion installed, up and running on my HostMonster account for netrcs.com

http://sharpstep.com/cgi-bin/code2html?filename=Articles/HostMonster-svn/svn-install.sh

Most of all the create svn user shell script is the best piece!

Later, the following section educated me a few things on how Putty, .ppk file, Subversion/config file, TortoisePlink and an empty passphrase wink—all play a significant role in setting up a smooth svn+ssh:// access.
http://www.sharpstep.com/Articles/HostMonster-svn/#client_install

I’m very excited with the value-additions SVN will give me in the development of my current project: TakeMyScreen.com

Right now, I’m looking for a way to change the svn+ssh:// based access to https:// - That would be lovely, won’t it?

What I wrote to myself to keep motivated

See every step in detail on a new path to success, listen every words of your master on a path he went through, get up and run so you are sure you are making real success and not just dreaming.

WSS 3.0: Where are my custom fields in the new, edit and display forms of a list?

The Problem

Last week, I was doing a self study on WSS, SharePoint Designer 2007 and their relatives, for one of our internal requirements.  With only a few customizations needed, there was one piece where WSS really got me mad.  For our internal Project Management Office dashboard, we created a great WebPart thats pulls custom field values created in the Projects List.  Creating Custom Fields are very straight forward and designing a DataViewWebPart (DVWP for short) in SharePoint Designer 2007 is much fun too.  But then, the custom fields that I created did not make their way to the View/Edit forms of the list (DispForm.aspx and EditForm.aspx respectively).

I fired open SharePoint Designer 2007 only to find that the ListFormWebPart is rendered at runtime that it doesn’t allow you to edit from within SharePoint Designer 2007.  That is disallowed at designed.  Either have it embedded in there or delete it entirely.  I was also not comfortable with using Custom List Web Part, as I expected SharePoint to detect the fields while I design it.

I wanted to test this behaviour for other lists as well.  I added a new custom field and I was able to see my new custom field work in the display and edit pages for all other normal lists.  But it didn’t make any sense on why custom fields don’t appear for “Projects List”.  Where are my custom fields gone from the display, new and edit pages?

As I was also working on a few customizations to documents related to the project, spending a few hours on webcasts, articles, research and all the possible distractions, I found that “Content Types” were a pretty interesting concept.  Only then i recollected seeing this term elsewhere.  In one of my attempts to duplicate the frozen WebPart, I made use of what is known as the “Custom List Web Part” that asked for three inputs:  1) The List, 2) List Content Type and 3) an option group for new / edit / display.

Getting back to doing the same, I figured that “Project” was listed (the only item listed) in the Content Type drop down of that dialog.  The question is where are these Content Types coming from.

The solution

OK, let’s jump right into the solution.  To get your custom fields show up on some of the list that don’t behave as you expected in regards to the custom field, the first thing you need to check and conclude is the Content Type attached to this list.  Content Types are site level columns definitions for consistent use in your lists throughout the site.  They provide a great abstraction to enforce consistency in the field design of your lists and workflows.

To check and redefine the content type attached to your list, get to your list and do the following:

List Settings->Advanced Settings : Turn on Allow management of content types.  (it’s turned off by default).

Click OK to get back to the list.  You should now see the section: Content Types.  In that section you should see at least one content type (in my case, it was “Project” as I was using a “Projects List").  Now this Content Type has a few column definitions and since this is the default content type for my list, the display, new and edit pages have dutifully obliged to restrict to only those column definitions. *Sigh*. Now go ahead and click to edit your content type and you should see options to add columns from existing column definitions.  TADA! and your next screen should have all your great custom fields (or columns) ready to be added as part of this content type.  If you do not like to tamper with the site wide content type, go ahead and create one, but remember, the new content type must manually be set as your default content type in order for display, new and edit pages to work.

Here is a good link I later found on this issue:  http://office.microsoft.com/en-us/sharepointserver/HA101106061033.aspx

Hope this helps!

------ Other links ----

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.availablecontenttypes.aspx
andrew_may’s “SharePointBeta2WhatAreContentTypes”
cliffgreen’s sharepoint-webs-web-service-createcontenttype-and-updatecontenttype

http://msdn.microsoft.com/en-us/library/aa543576.aspx
http://msdn.microsoft.com/en-us/library/lists.lists.createcontenttype.aspx

Ajane! A new way to develop if you are planning on a Web 2.0 site

Why wouldn’t anyone come up something beyond Orbited.  Ajax and Comet have emerged to take over the Operating System platform.  Now one of the neat challenges in any lively business application, for that matter, is the networking possibilities and speed.  Due to issues such as Cross-site scripting, Ajax Architectural expertise, only a few Web 2.0 applications score over others.  Sites like LinkedIn, Meebo and a few more sites not mentioned here have a slick integration of Ajax but had there been a technology for the Web to contact as smoothly like any other Networking Chat application could, the Web 2.0 world would be full of great Social networking apps.

Ajane comes to the rescue.  Ajane will change the way you develop Web 2.0 sites that need communication to a Live TCP server, giving a different perception with just your existing, HTML, JavaScript/JQuery skills.  Suddenly, your small Web app could contact an IRC server from the browser without going through your own server.  With a good designer, (or an ExtJS developer), you could come up with a great Chat application with Ajane doing the networking work for you. Exciting and Enthralling to me!

More updates to Ajane are on the way. Look out!

XStandard

XStandard Lite seems a good XHTML compliant WYSIWYG editor.  But I’m still looking for something that has rich features and the goodness of Table-less design in all accounts.  Content Management Systems like Typolight have a nice way of abstracting the flow, are a good option but then it needs quite a good visualization (unless you are a designer/programmer or such class) which requires a little bit of training.

Out of the box : Success and failure

The definition of success and failure depends from individual to individual.  According to me, Success comes from the joy of influencing my subjectiveness and/or being influenced by other’s opinions about a single objective truth.  Success is achieved from many different ways, that’s all.

Appearance, Actions, Words, Art, Science, Spirituality, and the list grows endlessly.

Starting from the ground up, you can influence non-living things - the very act of moving an object, juggling few bottles etc.  At that point in time, one may say that those objects are under influence.  As we move up, influencing people seems the trickier part.  This is again in relation to situation, on whom one is trying to influence etc.  Very subjective!

Now, it is in my opinion that we are in constant search of those whom we can influence, or we can eventually influence.  What are we trying to influence?  Truth!  A larger objective!  And, only in the most subjective form each one of us have experienced.  Einstein being one of the most successful person at that.  Darwin to an extent but most agree he failed.

The secret being in the mental act of not concluding things!  So the next time your opinions are not accepted, be patient until they are.  The answer to the question “how long should one be patient?” may/may not be answered before the results themselves are successful, however.  And sometimes, it might not be in the same form that we may expect as well.  Since it is a “may/may not be” situation on the answer and the results are subjective, I guess it is logical to keep one’s hopes quite high!

Thanks!

Links for Personal development!

Here are some great links that I’ve found for personal development:

I find Steve Pavlina’s the most inspiring ones.  Simple on the outside, mind blowing when intuitively seen smile

http://www.stevepavlina.com/blog/2005/04/30-days-to-success/
http://www.stevepavlina.com/blog/2005/05/how-to-become-an-early-riser/
http://jon.gaia.com/blog/2006/3/how_to_have_a_36_hour_day
the_four_best_ways_to_sit_at_your_computer

I stumbled upon Lori’s blog and love all the quotes as I relate them to my recent personal experiences.  One word: Lovely.

“In Love with Life”.
“I am living my heaven NOW and it is fabulous!”

http://inspire2act.gaia.com/

Life is supposed to be having fun with while we travel it!

Spreading Love!

Clean URL Site setup

As you might have known, my entire site runs on ExpressionEngine and my current setup is to have clean URLs both for human readability and SEO.  I have used the following approach to achieve this.

1. Do a normal install.  At the end of the install you will have URLs with index.php
2. Setup auto mode and check PATH_INFO value.  Since in my case PATH_INFO is empty, I have to use ORIG_PATH_INFO as provided by my hosting.
3. To remove index.php the first step is to configure your .htaccess file:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]

4. The next step is to logon to Administration panel, get to System Preferences -> General Configuration and empty the index page setting (that is, if you see index.php, remove it)
5. Go ahead and thoroughly test your site with confidence! ( This is not optional smile j/k )

Tech Help: If you don’t understand any of the above steps, get someone with PHP & .htaccess knowledge and/or read this documentation link from ExpressionEngine: Remove index.php from URLs using File and Directory Check Method

Hope this helps in tweaking and hacking your site!

Getting the most out of your team

Imagine you lead a small custom apps team with 7 developers or less, with each representing a part (puzzle piece) as in a jigsaw puzzle.  On a project that has stern deadlines, the project tasks are broken down into iterations.  Each iteration would have tasks under them.  It is common that you assign many individual tasks divided to each team member.  This is distribution.  However, there is an even better way to get most out of your team members.  Just like how a single puzzle piece is so unique both by its shape and the part of the picture it contains, you should make each team member feel that their part/role is as important as the overall big picture.  Even if a single part of the puzzle is missing, the big picture isn’t complete.  This also means knowning each team member’s strength and weaknesses (as in a jigsaw piece).

On the technical front, it is usually the person’s overall technical knowledge and about the project.  Both may not be the same!  It is important that all team member understands the overall big picture and how it would eventually be solved.  For an individual member, it is the awareness about the surrounding pieces.  And for a leader, it is the awareness of placement of each piece in the puzzle along their adjacent pieces.  Scale this out to small teams to bigger operations as well.  Interestingly, anyone could practice/could’ve already been practising this model even if they haven’t played a jigsaw puzzle before though smile

The advantages are:
- Resource allocation is at its best.
- Depending upon the member’s potential, the same member can play the role of two or more (at very adjacent places in the puzzle).
- Each member knows what should be asked and to whom.

Things to remember in this model:
- Team Leaders/Managers must ensure each team member’s awareness of both the entire big picture and the person’s individual role at every single iteration/task allocation.
- Got to stay away from the distribution model as it is very easy fall for it at time-constraint situations (Distribution model saves the situation but ends up exchanging legs for hands, for example).
- A visual representation that is circulated to the team on top of written task allocation always helps!