Friday, October 24, 2008

dusk

the light, one evening, from my verandah:



Sunday, October 19, 2008

what makes entrepreneurs entrepreneurial

A great read:
http://www.khoslaventures.com/presentations/What_makes_entrepreneurs_entrepreneurial.pdf

The paper talks about Causal Reasoning and comes up with a concept called Effectual Reasoning in contrast that is an inherent quality of entrepreneurs. This scanned document also has bonus comments pencilled in by someone (someone from Khosla Ventures?).

Tuesday, October 14, 2008

motivation, or the lack of

Abraham Maslow was a renowned anthropologist, best known for his concepts of the Heirarchy of Human Needs.

Maslow's hierarchy of needsHuman needs are grouped into five categories with various priorities. The lower ones have to be satisfied before the higher needs can act as motivators. A hungry programmer can hardly be motivated to write good code.

One is always shifting between these levels, satisfying multiple needs simultaneously.

The need for self-actualization is notoriously insatiable. "Ultimately happy" is how Maslow described it, which in itself sounds dubious. One is always left wanting for more.

Peter Drucker, another renowned man and a management guru, disagreed with one tenet of this heirarchy. His argument was that as a want approaches fulfillment, its capacity to reward, to act as an incentive, diminshes greatly, while its capacity to deter and act as a disincentive increases.

If you put the two points together - the one about self-actualization being a danger zone, and the diminishing returns from the lower needs - you will see how being only in the upper level of the hierarchy can be dangerous business. Here there is a high chance of ennui setting in, becoming blasé, and getting engulfed in a universal demotivation.

Being grounded in the lower levels is how one can stay focussed on the matter at hand, on real progress. Perhaps this is what Steve Jobs meant when he said "Stay hungry, stay foolish".

missing from google's index

A few days ago, one of my posts went missing from Google's index.
Which was rather strange because I had checked a few hours after publishing it that it was turning up in Google searches and Google Analytics had already started showing me hits on my blog because of that post.

After some digging around I found out that pages get taken out if a spam site links to them and then those pages are inspected in detail before putting them back in the index. And, if the page links to a spam site, it is taken out immediately and kept out. The latter turned out to be the cause of the post going missing. A spam site had left a "backlink" to my post and the post was inadvertently showing the link to the spam site. So I went and disabled all backlinks and the next day my post was showing up again!

The curious thing is that links in comments and backlinks/trackbacks usually have a rel=nofollow set. So I can't imagine why that backlink would have had any affect, but mysterious are the ways of Google. ;-)

Wednesday, October 8, 2008

marketing essentials

I recently spent a couple of hours doing an online Marketing Essentials course from Harvard Business School. Here is what I figured is the gist:

1. Understand the fundamental need behind demands.
2. Meet customer needs. Then exceed expectations.
3. Keep the conversation with the customer going.
4. Embrace change.
5. Everyone is a marketer.

All else derives from the above.

[Update: added item 5]

Thursday, October 2, 2008

post photos from Nokia E71 to wordpress directly

That is what I initially wanted to do. But this is more about post images or videos to any service for that matter, from any Nokia phone that can run Share Online. But I've tried this for images only from my E71, using Share Online 3.0 to a PHP service.

One day I saw something funny on the road, drew my phone, took aim, and shot. And was inspired enough to want to set up a proper photoblog for candid shots, for all of half a day! But regardless of me eventually not putting up a photoblog, I decided to poke around to see if I could do this in principle. And here is the result of a day and a half of hacking about.

Share Online 3.0 comes pre-installed on the E71, but without Flickr as an option. Their FAQ pointed me to the configuration file to get Flickr in to SO. If you overlook the junk in it (that is the flickr icon, base64-encoded), it looks very simple. Publishing uses the Atom Post protocol and WSSE for authentication. Tweak the media_options section to add video/3gpp or video/mp4 if you like. Change the endpoint_path to your own service and point configure_file_URL back to this configuration file. And you're done.

Here's how my configuration file looked like: http://umangjaipuria.com/share/uj_configuration_file.cfg.
Copy the file over to your phone and open it. The E71 automatically recognized it as a Share Online service configuration and added "UJ" as a new service. Options -> Add new account on the phone will let you specify a username and password for the service.

Every request by Share Online to your service will have authentication requirements. There will be a HTTP_X_WSSE parameter in the http headers. It will look like this:
UsernameToken Username="user1", PasswordDigest="4bHGUQyK7n/2JtGo/Tbjsr0aFww=", Nonce="NrS4fnwVWDB5QiIVR0qtIQ==", Created="2008-10-02T06:30:33Z".
Parse the string to extract the various name/values pairs. WSSE authentication can be checked (PHP code here) with:
$mydigest = base64_encode(pack("H*",
sha1(base64_decode($nonce).$created.$correct_password)));

The string in $mydigest should be the same as the PasswordDigest field in the WSSE string.

The first time Share Online tries to get a list of actions possible with this service (the Update Service operation under Options). This is the only GET operation and thus, for all GET requests (upon successful authentication, of course) my service returns:
<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#">
<link rel="service.post" href="http://myserver.com/nokia_shareonline.php" type="application/atom+xml" title="my photoblog">
<link rel="service.feed" href="http://myserver.com/feed/atom/" type="application/atom+xml" title="my photoblog">
<link rel="alternate" href="http://myserver.com/" type="text/html" title="my photoblog">
</feed>

With Content-Type set to application/atom+xml.
This tells Share Online where to make POST requests, amongst other things.

Now, about that POST request. Log the HTTP_RAW_POST_DATA to see what the request actually contains. The Atom protocol, again. But for some strange reason, Share Online makes two POST requests to submit a photo. The first one is just the image and in this case the post xml will have this element:
<standalone xmlns="http://sixapart.com/atom/typepad#">1</standalone>
The next one actually contains the description and the title and tags that you had entered in Share Online. I'm not sure how to correlate the two - I guess you have to assume that only one client (per authenticated user) is submitting at a time and sequential posts are related.

Since I saw the SixApart.com link above, I guess this is the exact Atom protocol Share Online uses: http://www.sixapart.com/developers/atom/protocol/.

This can be made into a nifty little Wordpress plugin. Perhaps some other day, if I decide to set up that photoblog after all.

So far, I'm loving my E71! If you have any cool tips or tricks to share about the phone, please leave me a comment. And check back again soon - I'm going to write about the apps I've set up on it.