The Sapling Project

The Sapling Project

Me and Satish are doing a small campaign to plant and share saplings, free of cost to one and all in different parts of our city.

Do check out http://thesaplingproject.com/ for more details and to sign up for the saplings.

Hopefully if we manage to get more friends interested in the idea , we should be able to trigger similar endeavors in different cities all over India

Do lemme know your views/inputs .

Peace &  Breathe Easy :)

WordPress hacks: passing custom session variables in cforms

Many a times people configure and run their entire website using WordPress.

cforms is an awesome feature rich plugin for WordPress, offering convenient deployment of multiple Ajax driven contact forms throughout the website.
Many wordpress based websites use cforms to capture and store form submissions on their site.

Recently came across a requirement where client is running his website on wordpress and also using online marketing campaigns (google, adnetworks)  to drive traffic to his website.

Requirement was to track those custom variables (source, creative name) passed to his website.

Many analytics tools should be able to do this, however he wanted to store the data in surfer cforms submissions in database as well as take some action based on his submission.

This can be achieved using following Steps:

Step 1)   Edit header.php of your wordpress theme and add following lines at the start of the file

session_start();
$am_usrc=$_GET['source'];
$am_adunit=$_GET['adunit'];
if (isset($am_usrc)) {
$_SESSION["amSrc"] = $am_usrc;
$_SESSION["amUnit"] = $am_adunit;
}

Note the variable names and use them as per your variable names. Also you can store them in sessions/cookies/database as per your requirement.

Step 2) Now define the variable names in `lib_aux.php` file from plugins/cforms directory in following manner

### get variables from session and assign to your temp variables
$sessCampaignSRC = $_SESSION["amSrc"];
$sessCampaignAdUnit = $_SESSION["amUnit"];

$m  = str_replace( ‘{Referer}’,        $_SERVER['HTTP_REFERER'], $m );
$m  = str_replace( ‘{PostID}’,        $pid, $m );
$m     = str_replace( ‘{Form Name}’,    $cformsSettings['form'.$no]['cforms'.$no.'_fname'], $m );
$m     = str_replace( ‘{Page}’,        $page, $m );
$m     = str_replace( ‘{Date}’,        $date, $m );
$m     = str_replace( ‘{Author}’,        $find->display_name, $m );
$m     = str_replace( ‘{Time}’,        $time, $m );
$m     = str_replace( ‘{IP}’,            cf_getip(), $m );
$m     = str_replace( ‘{BLOGNAME}’,    get_option(‘blogname’), $m );

$m     = str_replace( ‘{CurUserID}’,    $CurrUser->ID, $m );
$m     = str_replace( ‘{CurUserName}’,    $CurrUser->display_name, $m );
$m     = str_replace( ‘{CurUserEmail}’,$CurrUser->user_email, $m );

$m     = str_replace( ‘{Permalink}’,    $permalink, $m );
$m     = str_replace( ‘{Title}’,        $find->post_title, $m );
$m     = str_replace( ‘{Excerpt}’,        $find->post_excerpt, $m );

### define your custome variables campaignSRC and campaignAdUnit to store the values from temporary variables
$m = str_replace( ‘{campaignSRC}’, $sessCampaignSRC, $m );
$m = str_replace( ‘{campaignAdUnit}’, $sessCampaignAdUnit, $m );

Note: the variable names and session retrieval … you can get them from cookies if you’ve stored them in cookie files
Also make sure variables used have unique names without conflicting with cforms variable names

Step 3) Use the above mentioned custom variable names in cforms while configuring hidden variables and their values.

{campaignSRC}
{campaignAdUnit}

Configure your form accordingly and insert into your normal post and you are done :-)

Working example of the same can be found here on following two links

Sample Click through url : http://mayavi.info/?source=google&adunit=mayavi_ads

Form url :  http://mayavi.info/index.php/lamp/cforms-test.html

Check the view source of form page and you’ll be able to see the above two tracking parameters in your hidden variables.

cforms test

  1. (valid email required)
 

cforms contact form by delicious:days

Contribute to drizzle full-time, employed at Rackspace Mosso

Rackspace had launched their cloud computing, cloud hosting service Mosso last year. We are hosting at Rackspace for quite sometime, although haven’t been able to try out Mosso.

Rackspace has always tried to contribute to opensource in some or other manner. (e.g. Custom Nagios modules,  documenting various technologies used,  and many more ).
Some may argue that its their business … However contribution in any format is welcome :-)

Rackspace Mosso has gone one step ahead and is offering to support Drizzle (A Lightweight SQL Database for cloud and Web) Development in their capacity. Mosso is willing to employ fulltime developers and let them completely work on Drizzle Database development.

Adrian Otto wrote on Drizzle mailing List:

” I was speaking with Eric Day at the developer conference, and I mentioned that Rackspace is wiling to employ full time developers for the specific purpose of furthering the Drizzle project’s mission. He suggested that I email you on this list becuase he expected there would be interest in this offer. If you work on the project now part time, and want to make it a full time job working exclusively on the Drizzle project, let me know. The Rackspcae Cloud believes in open source, and we want to do our part to make Drizzle a wild success.”

Personally even though I’ve been a big admirer and user of MySQL for the last +10 years, recent developments with MySQL are not looking great and sooner or later I’ll look for replacement.

Drizzle is looking very promising and its manifesto of keeping it “simple, reliable, fast and scalable Database” is wonderful for Web or Next generation Cloud Applications.

IMO Rackspace Mosso has got it right and is willing to put money on the future winning horse. (Drizzle is definitely looking very much future of lightweight Web/Cloud Database.)
It’s logical for cloud services to offer the best, fast and scalable options to its clients and Drizzle will no doubt cater to that specific need.

It looks like Mark Callaghan (Google) likes the idea, along with Jeremy Zawodny and Don MacAskill (SmugMug).

Twitter Search results alongside google results using greasemonkey

Lots of people/blogs have discussed whether twitter’s search (Real time) can pose threat to Google or not.  I’ll not get into details of the same again.

IMHO it will be difficult to pose threat to search engines however real time search results from twitter cannot be ignored certainly.

Especially when the real time news/discussions about events on twitter are far much relevant than the indexed news from search engines.
(The news items will take a while to get indexed and appear on the front page.)

We have seen the power of twitter when terrorists attacked the Mumbai hotels. Lots of news channels combined were not able to provide actual happenings as twitter #mumbai was providing.

Mark Carey (@mthacks ) has written the cool greasemonkey script to show twitter search results along side Google results.

I’ve installed it and following is the sample results page :-)

Twitter Search Alongside Google Results

Twitter Search Alongside Google Results

Marc has written blogpost about the same :

http://mt-hacks.com/20090302-realtime-twitter-search-results-on-google.html

How to accomplish this ?

1) You would need Greasemonkey Add on for firefox  — Install from here (If you dont have it) and restart firefox

2) from Userscripts.com install `Twitter search results on google` script written by Marc Carey (@mthacks)

3) Above script loads 5 results from the google search results … However if you want 10 results and along side google search results then …

a) Edit above Greasemonkey script by accesing

Tools –> Greasemonkey –> Manage User Script –> Edit `Twitter Search Results on Google script`

Choose your favourite editor and replace this code with above script

4) Now Google search results will have twitter search along side it …

Please note :

Search engine results for facts/past events are far much superior to Twitter …

Whereas Twitter results may contain current action/buzz across world but can contain lot of noise also

Argument: Is open source software secure enough ?

I’ve heard this argument by many microsoft/closed source technology evangelist that Open Source softwares are not secure enough.

And any one can easily find the flaw in the software and use it for his benefit.

This week there was an argument on slashdot about the same.

According to the Linus’s Law, “given enough eyeballs, all bugs are shallow”. More formally: “Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix will be obvious to someone.” — this rule was formulated by ESR (Eric S. Raymond).

Open Source due to its very own nature of revealing all catches attention of all users/hackers/programmers across the world using that software. (Pls Note: Hackers always have good intentions.)

The source code is validated by many learned people and if any flaw is found it is quickly reported and fixed.
If a certain OSS is subject to vulnerability continuously then it looses its charm and people quickly migrate to more secure alternatives.
(For example: Most of the new installations of mail servers are based on qmail/postfix rather than Sendmail)

In case of closed source (for e.g. windows) it takes long time to report flaw and much longer to fix it.

I dont hate microsoft, infact i use windows XP for most of my day job and happy with it. But I feel much flexibility with my linux. Most importantly if something is going wrong I know where to check and what could be the reasons. (syslogs are also great friend)

But talking about security NO OSS is less secure than any closed source software just because it is open in nature or for that matter any other reason.

Lots of learned independent developers/testers/reviewers have gone through the codes/designs/outcomes of the OSS and have contributed to the security threats/bugs/potential problems.

Collective intelligence (worldwide) is always superior to a closed group of people.

As someone suggested it is easy to experience than arguing over this.

Best is to deploy for yourself and run weekly penetrative testing to see the possible results.

There is no security from stupid actions of users/administrators, however assuming security by obfuscation/closed source is nothing but stupidity.

I’ve been personally using OSS for years now and absolutely happy with the way it has helped me in learning things.

Collective intelligence (worldwide) is always superior to closed group of people !

Career options in Business Intelligence

We have learned about the basics of business intelligence in the previous post.

Business Intelligence (Or BI) is a vast topic which covers various aspects of DSS (Decision Support System).

BI means attain complete wisdom from knowledge which will help taking the best possible decision yielding the best possible result.
To understand knowledge it would be better to have a look Hierarchy of knowledge from following chart.

knowledge discovery to wisdom -- based on Giarratano and Riley 1998

As you can clearly see that from the raw data across multiple systems (after filtering the noise) an information is gathered and stored.

i.e. processed data is referred as ‘information’ depicting how much we understand from the underlying data.

This information when used to solve problem becomes ‘Knowledge’ — Knowledge about knowledge becomes the ‘Meta Knowledge’ which in turn provides ‘wisdom’ to the system.

Broadly “Business Intelligence Roadmap” defines following process for complete project life cycle of BI system.

  1. Justification
    • Business case Assessment
  2. Planning
    • Interprise Structure Evaluation
    • Project planning
  3. Business alalysis
    • Project Requirements Definition
    • Data Analysis
    • Application Prototyping
    • Meta Data Repository Analysis
  4. Design
    • Database Design
    • ETL Design
    • Meta Data Repository Design
  5. Construction
    • ETL Development
    • Application Development
    • Data Mining
    • Meta Data Repository Development
  6. Deployment
    • Implementation
    • Release Evaluation

To complete above BI project lifecycle following team structure is required:

Role Major Responsibilities
Application lead developer Designing and overseeing the development of the access and analysis application (e.g., reports, queries)
BI infrastructure architect Establishing and maintaining the BI technical infrastructure (in some organizations, overseeing the nontechnical infrastructure as well); usually reports to the strategic architect on the extended team
Business representative Participating in modeling sessions, providing data definitions, writing test cases, making business decisions, resolving disputes between business units, and improving the data quality under the control of the business unit represented by this role
Data administrator Performing cross-organizational data analysis, creating the project-specific logical data models, and merging the logical data models into an enterprise logical data model
Data mining expert Choosing and running the data mining tool; must have a statistical background
Data quality analyst Assessing source data quality and preparing data-cleansing specifications for the ETL process
Database administrator Designing, loading, monitoring, and tuning the BI target databases
ETL lead developer Designing and overseeing the ETL process
Meta data administrator Building or licensing (buying), enhancing, loading, and maintaining the meta data repository
Project manager Defining, planning, coordinating, controlling, and reviewing all project activities; tracking and reporting progress; resolving technical and business issues; mentoring the team; negotiating with vendors, the business representative, and the business sponsor; has overall responsibility for the project
Subject matter expert Providing business knowledge about data, processes, and requirements

You can pick up any of the specialization and work towards achieving it. I would try to update this list with other possibilities and details.

I’ve been trying to get data for average salaries earned by BI experts in india, however here is the data from UK market which clearly shows the growth potential.

This document is prepared with the help of following excellent book:
Business Intelligence Roadmap: The Complete Project Lifecycle for Decision-Support Applications — buy here

I’ve written this post on my wordpress.com blog which I’ll try to migrate completely here.

Typical girl response when proposed

Many of you’ll agree with me when I tell you how difficult is to propose a girl you like and what to expect back from them :-)

(I’m assuming in most of the cases man has to take an initiative and propose.)

Typical girl answers are (In my limited knowledge on this matter ;-) ) :

Man proposes girl

Man proposing girl

  • Hmmmmm ………
  • I love you ………
  • I just like you …. (nothing more than that)
  • Can we be just friends please ?
  • I’ve never thought about you in this manner …
  • How could you ?
  • You are very important to me … (thats it … nothing more)
  • My parents/family will not like this .. (n I dont want to go against their wishes)
  • Please give me some more time ….
  • You’ll get someone better than me …
  • Sorry I’m already committed (or like someone else) …. If only you had met/asked me earlier ..
  • This is not the correct age for falling in love … we should wait for few more years …
  • You are not of type/I’m not of your type
    (You dont fit into my concept of boyfriend/husband)
  • You are like my brother … and I’ve never thought about you in any other manner than that …

Please feel free to add reasons based on your experience :-)

IPL 2009 schedule

IPL 2009 Teams

IPL 2009 Teams

Satish aka bombaylives has sent Following IPL 2009 schedule to me. I would be supporting Mumbai Indians for 2009 IPL.

Update : After pakistan tragedy: ipl schedule is bound to change … I’ll update this as soon as I receive new one …

What about you ?

No. Match Date Time Ground
1 Bangalore Royal Challengers Vs Kolkata
Knight Riders
18-Apr-09 8:00 PM Bangalore
2 Kings XI Punjab Vs Chennai Super Kings 19-Apr-09 5:00 PM Mohali
3 Delhi Daredevils Vs Rajasthan Royals 19-Apr-09 8:30 PM Delhi
4 Kolkata Knight Riders Vs Deccan Chargers 20-Apr-09 4:00 PM Kolkata
5 Mumbai Indians Vs Bangalore Royal
Challengers
20-Apr-09 8:00 PM Mumbai
6 Rajasthan Royals Vs Kings XI Punjab 21-Apr-09 8:00 PM Jaipur
7 Deccan Chargers Vs Delhi Daredevils 22-Apr-09 8:00 PM Hyderabad
8 Chennai Super Kings Vs Mumbai Indians 23-Apr-09 8:00 PM Chennai
9 Deccan Chargers Vs Rajasthan Royals 24-Apr-09 8:00 PM Hyderabad
10 Kings XI Punjab Vs Mumbai Indians 25-Apr-09 8:00 PM Mohali
11 Bangalore Royal Challengers Vs Rajasthan
Royals
26-Apr-09 8:00 PM Bangalore
12 Chennai Super Kings Vs Kolkata Knight Riders 26-Apr-09 4:00 PM Chennai
13 Mumbai Indians Vs Deccan Chargers 27-Apr-09 8:00 PM Mumbai
14 Kings XI Punjab Vs Delhi Daredevils 27-Apr-09 4:00 PM Mohali
15 Bangalore Royal Challengers Vs Chennai Super
Kings
28-Apr-09 8:00 PM Bangalore
16 Kolkata Knight Riders Vs Mumbai Indians 29-Apr-09 8:00 PM Kolkata
17 Delhi Daredevils Vs Bangalore Royal
Challengers
30-Apr-09 8:00 PM Delhi
18 Deccan Chargers Vs Kings XI Punjab 1-May-09 8:00 PM Hyderabad
19 Rajasthan Royals Vs Kolkata Knight Riders 1-May-09 4:00 PM Jaipur
20 Chennai Super Kings Vs Delhi Daredevils 2-May-09 8:00 PM Chennai
21 Bangalore Royal Challengers Vs Deccan
Chargers
3-May-09 4:00 PM Bangalore
22 Kings XI Punjab Vs Kolkata Knight Riders 3-May-09 8:00 PM Mohali
23 Mumbai Indians Vs Delhi Daredevils 4-May-09 4:00 PM Mumbai
24 Rajasthan Royals Vs Chennai Super Kings 4-May-09 8:00 PM Jaipur
25 Bangalore Royal Challengers Vs Kings XI
Punjab
5-May-09 8:00 PM Bangalore
26 Chennai Super Kings Vs Deccan Chargers 6-May-09 8:00 PM Chennai
27 Mumbai Indians Vs Rajasthan Royals 7-May-09 8:00 PM Mumbai
28 Delhi Daredevils Vs Chennai Super Kings 8-May-09 4:00 PM Delhi
29 Kolkata Knight Riders Vs Bangalore Royal
Challengers
8-May-09 8:00 PM Kolkata
30 Rajasthan Royals Vs Deccan Chargers 9-May-09 8:00 PM Jaipur
31 Chennai Super Kings Vs Kings XI Punjab 10-May-09 8:00 PM Chennai
32 Deccan Chargers Vs Kolkata Knight Riders 11-May-09 4:00 PM Hyderabad
33 Rajasthan Royals vs Delhi Daredevils 11-May-09 8:00 PM Jaipur
34 Kings XI Punjab Vs Bangalore Royal
Challengers
12-May-09 8:00 PM Mohali
35 Kolkata Knight Riders Vs Delhi Daredevils 13-May-09 8:00 PM Kolkata
36 Mumbai Indians Vs Chennai Super Kings 14-May-09 8:00 PM Mumbai
37 Delhi Daredevils Vs Deccan Chargers 15-May-09 8:00 PM Delhi
38 Mumbai Indians Vs Kolkata Knight Riders 16-May-09 8:00 PM Mumbai
39 Delhi Daredevils Vs Kings XI Punjab 17-May-09 8:00 PM Delhi
40 Rajasthan Royals Vs Bangalore Royal
Challengers
17-May-09 4:00 PM Jaipur
41 Deccan Chargers Vs Mumbai Indians 18-May-09 8:00 PM Hyderabad
42 Kolkata Knight Riders Vs Chennai Super Kings 18-May-09 4:00 PM Kolkata
43 Bangalore Royal Challengers Vs Delhi
Daredevils
19-May-09 8:00 PM Bangalore
44 Kolkata Knight Riders Vs Rajasthan Royals 20-May-09 8:00 PM Kolkata
45 Mumbai Indians Vs Kings XI Punjab 21-May-09 4:00 PM Mumbai
46 Chennai Super Kings Vs Bangalore Royal
Challengers
21-May-09 8:00 PM Chennai
47 Delhi Daredevils Vs Kolkata Knight Riders 22-May-09 8:00 PM Delhi
48 Kings XI Punjab Vs Deccan Chargers 23-May-09 8:00 PM Mohali
49 Delhi Daredevils Vs Mumbai Indians 24-May-09 8:00 PM Delhi
50 Chennai Super Kings Vs Rajasthan Royals 24-May-09 4:00 PM Chennai
51 Deccan Chargers Vs Bangalore Royal
Challengers
25-May-09 4:00 PM Hyderabad
52 Kolkata Knight Riders Vs Kings XI Punjab 25-May-09 8:00 PM Kolkata
53 Rajasthan Royals Vs Mumbai Indians 26-May-09 8:00 PM Jaipur
54 Deccan Chargers Vs Chennai Super Kings 27-May-09 8:00 PM Hyderabad
55 Bangalore Royal Challengers Vs Mumbai
Indians
28-May-09 4:00 PM Bangalore
56 Kings XI Punjab Vs Rajasthan Royals 28-May-09 8:00 PM Mohali
First semi-final 30-May-09 8:00 PM Mumbai
Second semi-final 31-May-09 8:00 PM Mumbai
Final 1-Jun-09 8:00 PM Mumbai

Life …. in four photos

Just got this in email forward ….


First Pic

Break of Dawn — New lease of life, embarking upon a New Voyage……
A Child Flying Kite — Young Blood, Aspiring to Fly High with Enormous Zest n Zeal…Coz U Know, Sky is The Limit……
A Small Tree — Need to Nurture…….
Two Birds Hovering Above — There r People Around to Take Ample Care of You, You r Actually Carefree…….

Second Pic

Daylight — You r Almost Halfway Through in This Voyage Called Life…..
Couple — You Have a Better half of Yours to Lean Upon n Speak Your Heart Out to……
Grown-up Tree — You Have Been Nurtured Profusely to Stand Tall n Rigidly in The Storms That May, Otherwise, Let U Down…….. .
A Small Tree — You, Together With Your Better half, Have Given a New Lease of Life to Another Breaking Dawn (Your Child)………
One Bird Hovering Above — There r Comparatively Less People around You to Take Care of You, Unlike during Your Wonder Childhood Years…….

Third Pic

Fall of Dusk — Twilight is setting Upon, Life Has Come a Full Circle….
An Old Man — It’s a Race Against Time Now On, It’s The Beginning of The End of The Voyage……
Ageing Tree — Signifies The Above Two Things, Second One Being The Personification of This……..
Grown Tree — Your Kids Have Grown Up; It’s High Time You Start Supporting Them With Tender Care Rather Than Clashes……….
One Bird — Self Explanatory, I Guess???
Grave — In Course of The Voyage You Have Lost Loved Ones n You Also Start to Anticipate Your Ultimate Fate n Destiny……….

Fourth Pic

Nightfall — Voyage is Over, Darkness is Looming Over, High Time to Say Good Bye….
Starry Sky — There’s Still Happiness Around, Thanks to The Aesthetic Memories Left by You n The Good Work Done Too….. .
Grown-up Tree — Your Kids r Walking in Your Shoes now, It’s For Them to Follow Your Footsteps Drawing Inspiration From Your Exemplary Life..
Grave With Two Crosses — You r United with Your Soul mates n RIPS……..