Wednesday, March 11, 2015
Agiles perspective on failure
"The assumption of failure is built into the agile process. The traditional method is built on the presupposition that we can plan failure out of the process. We dont have to test for it because weve taken everything into account. Agile assumes that humans are going to fail. By its very nature, agile cant ignore (or censure) failure. If the accusation is that agile suppresses failures, then by definition - that is not agile. If agile is done properly then it cant* fail because it tests for failure all along. If you suppress failure, you guarantee it. Agile has a different perspective on failure. It doesnt see failures as catastrophic, but as expected. That difference in perspective allows us to celebrate failure rather than suppress it."
Pretty interesting comment dont you think?
Agile tests for failure all along in order to succeed. We arent hoping for, or even planning on failure, but we do test for it regularly by delivering frequently, having daily stand-ups, keeping project status visible, etc. We do all this so that we can discover and react to our failures quickly in order to succeed.
Subscribe to Winnipeg Agilist by Email
Monday, March 9, 2015
Updates on Authentication for Gmail IMAP POP and SMTP
Additional Scrutiny for Password Authentication
As previously announced, Google has begun increasing the security checks that occur when logging in with a user’s Google password. This includes access via Gmail IMAP, POP, and SMTP-MSA. It does not apply when authenticating with OAuth 2.0 via the XOAUTH2 mechanism.
If the checks detect anything suspicious about a password login attempt, our servers may deny login and return an error message requesting that the user first login to Google through a web browser. They may also require the user to explicitly enable “Less Secure Apps” on their account. Applications that perform password authentication to IMAP, POP, or SMTP are examples of "Less Secure Apps".
We strongly encourage developers to use OAuth 2.0 (via the XOAUTH2 mechanism for IMAP, POP, and SMTP) in order to better protect their users.
XOAUTH support ends May 5, 2015
The OAuth 1.0 XOAUTH authentication mechanism for Gmail IMAP and SMTP-MSA is deprecated and will stop being supported on May 5, 2015. Developers must migrate to XOAUTH2 in order to continue authenticating to Gmail after that date. You can migrate existing users without their intervention by following the instructions in this migration guide. Instructions for developing your XOAUTH2 code are in the XOAUTH2 documentation.
Posted by Jamie Nicolson, Gmail Software Engineer
Wednesday, March 4, 2015
Top 50 e Learning Super Heroes on Planet Earth!



E-LEARNING SUPER HERO OF 2013 AWARD?
While the TEMS13 Award was about winning MOST VOTES, the e-Learning Super Hero of 2013 Award goes beyond this as it takes into account WHO IS VOTING (Impact Votes). Also, nominees can gain 50 BONUS POINTS by being pro-active discovering, voting and celebrating their favorite e-Learning Super Heroes among the 220 nominees.The nominee with the highest score (based on a Gamified points system) becomes the e-Learning Super Hero of 2013 and wins the 1st Prize, which is £200 (British Pounds). The Top 3 wins free (commercial) Listly accounts for a year.
- Impact Votes (IV): Other nominees who voted for you. Each vote gives you an additional 10 points.
- Bonus Points: You vote for other nominees. 5 Points for each vote you gave (Max 50 points = 10 Votes).
*Zaid Ali Alsagoff is not eligible for any awards as he is the originator, organizer, promoter and Twitter MC for #TEMS13.
RESULTS?
Download PDF version!
WINNER!

In addition, Listly will upgrade the Top 3s Listly accounts to premium version for one year. Since, Juan Domingo Farnós, Mohamed Amin Embi and Alfredo Prieto already have won this for the TEMS13 Awards, Jane Hart, Stephen Downes and George Siemens will receive it for this round of awards. Thanks and Congrats!
IMPACT VOTES (IV)!
TEMS14?
Tuesday, March 3, 2015
Monetize Videos on Youtube to Earn Money



Monday, February 16, 2015
A first experiment on D3 bar chart in pentaho CDE Queried output on Bar Chart with few limitations
I love experimenting/Playing with Pentaho C-Tools where it took me to explore D3 bar chart with SQL query result set...
Not a big deal in implementing it, but want to share some thing with community folks.
What will you learn in this post ?
You will get an idea on how to implement D3 bar chart.
1) Passing query output to D3 chart code.
Limitations on the Example :
1) Query and Chart is not parametrized yet.
2) Y-Axis labels are not dynamic yet.
3) Tool tip is not implemented.
4) Not tested the bootstrap support.
5) and more.....
Readers are encouraged add your support to improve the sample of this in comment box...
Software setup :
a) C-Tools(CDE,CDF,CDA,CGG) - Version14.06.18 stable with bootstrap support.
b) Database server for a sample query - In this example postgres - foodmart database.
3) Install D3 components plug-in from market Place

Example 1 :
Step 1 : Layout : Create your layout .... Row---column--Html... Span 24 for this exampleStep 2 : Data Source :
Driver : org.postgresql.Driver
URL : jdbc:postgresql://localhost:5432/foodmart
UserName/Password : postgres/postgres
Query : query1
select distinct first_name as letter,salary as frequency from employee where salary!=20 limit 20
Step 3: Components
D3 Components - D3 component -
In properties for Custom Chart Script write below code.
Datasoruce : query1
function f(dataset){
var data = this.cdaResultToD3Array(dataset);
var margin = {top: 20, right: 20, bottom: 30, left: 40},
width = this.getWidth() - margin.left - margin.right,
height = this.getHeight() - margin.top - margin.bottom;
var formatPercent = d3.format(".0%");
var x = d3.scale.ordinal()
.rangeRoundBands([0, width], .1, 1);
var y = d3.scale.linear()
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickFormat(formatPercent);
var svg = d3.select("#"+this.htmlObject).append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
// Commenting this out, we have data already
// d3.tsv("/pentaho/api/repos/d3ComponentLibrary/static/custom/data/data.tsv", function(error, data) {
data.forEach(
function(d) {
d.frequency = +d.frequency;
}
);
x.domain(data.map(function(d) { return d.letter; }));
y.domain([0, d3.max(data, function(d) { return d.frequency; })]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", ".71em")
.style("text-anchor", "end")
.text("Frequency");
svg.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", function(d) { return x(d.letter); })
.attr("width", x.rangeBand())
.attr("y", function(d) { return y(d.frequency); })
.attr("height", function(d) { return height - y(d.frequency); });
d3.select("input").on("change", change);
var sortTimeout = setTimeout(function() {
d3.select("input").property("checked", true).each(change);
}, 2000);
function change() {
clearTimeout(sortTimeout);
// Copy-on-write since tweens are evaluated after a delay.
var x0 = x.domain(data.sort(this.checked
? function(a, b) { return b.frequency - a.frequency; }
: function(a, b) { return d3.ascending(a.letter, b.letter); })
.map(function(d) { return d.letter; }))
.copy();
var transition = svg.transition().duration(750),
delay = function(d, i) { return i * 50; };
transition.selectAll(".bar")
.delay(delay)
.attr("x", function(d) { return x0(d.letter); }
);
transition.select(".x.axis")
.call(xAxis)
.selectAll("g")
.delay(delay);
}
// });
}
NOTE :
1) As the code is a replica of build in Example in Pentaho D3 plug-in , the code depends on 2 column result set of data.....
Step 4: Save dashboard and test the output
Image 1 : With sort enabled - For this you need to write below HTML code for the column of this chart in layout section .
<label><input type="checkbox"> Sort values</label>


Example 2:
Why to wait ? Lets have a look at this static bar chart example in CDE( check this : http://jsfiddle.net/enigmarm/3HL4a/13/ )

Image 2 : Descending


To get the above static charts on CDE output... lets do this..
Hmmmm...!!! the same code I used from http://jsfiddle.net/enigmarm/3HL4a/13/ in CDE as an experiment..
Add HTML code at Row-Column-HTML
Add Css code at : Code Sinppet Css
Add D3 chart script code at : Custom chart script for D3 component.
Save your dashboard and preview it..
Are you eager to check it in CDE ? Download the examples here
Click Me folk...!!! :-)
References :
1) http://bl.ocks.org/Caged/6476579
2) http://bl.ocks.org/mbostock/raw/3885705/
3) http://bl.ocks.org/mbostock/3885304
4) http://bl.ocks.org/mbostock/raw/3885304/
5) http://jsfiddle.net/gregfedorov/Qh9X5/9/
6) http://jsfiddle.net/uedatakuya/tXPEV/light/
7) http://jsfiddle.net/weXNd/6/
Tuesday, February 3, 2015
CyanogenMod on HP Touchpad step by step Guide and Tutorial
How to install CyanogenMod On HP Touchpad

Saturday, January 31, 2015
PhoneGap Tutorial Parsing xml file using javascipt and displaying the data on the android and ios mobile screens
Title : I am going to explain u how to parse xml file and display data on your mobile screen.
Description : In todays world every business application need to contact webservices or xml services or xml files in the server and parse the files and need to display some results on the screen.for example take a live cricket score card : in the server we write a program where the score will be updated ball by ball,run by run in the web service , and the xml file also get updated with the live score and now the our application screen should also contact the webservice every 5 seconds and parse xml file and will update the live score for us , I will explain this with source code latter , for now i will explain you a simple example.
Here is the xml file which we are going to parse.
MakeMyTrip.com
MakeMyTrip.com is one of the good website providing Travel services to book oonline Flight,Hotel,Train and Bus tickets with guranteed lowest prices and provides new deals , offers and discount coupons every week and help you save money upto 20% while you travel.
travellogos/makemytrip-logo.jpg
GoIbibo.com
GoIbibo.com is one of the good website providing Travel services to book oonline Flight,Hotel,Train and Bus tickets with guranteed lowest prices and provides new deals , offers and discount coupons every week and help you save money upto 20% while you travel.
travellogos/goibibo_logo.png
Abhibus.com
Abhibus.com is one of the good website providing Travel services to book oonline Flight,Hotel,Train and Bus tickets with guranteed lowest prices and provides new deals , offers and discount coupons every week and help you save money upto 20% while you travel.
travellogos/abhibus-logo.png
Travelyaari.com
Travelyaari.com is one of the good website providing Travel services to book oonline Flight,Hotel,Train and Bus tickets with guranteed lowest prices and provides new deals , offers and discount coupons every week and help you save money upto 20% while you travel.
travellogos/travelyaari-com-logo-w240.png
Redbus.in
Redbus.com is one of the good website providing Travel services to book oonline Flight,Hotel,Train and Bus tickets with guranteed lowest prices and provides new deals , offers and discount coupons every week and help you save money upto 20% while you travel.
travellogos/logo_bc9228d_163.jpg
Expedia.co.in
Expedia.co.in is one of the good website providing Travel services to book oonline Flight,Hotel,Train and Bus tickets with guranteed lowest prices and provides new deals , offers and discount coupons every week and help you save money upto 20% while you travel.
travellogos/expedia-logo.png
Other websites
We Provide more websites that offer good Travel services to book oonline Flight,Hotel,Train and Bus tickets with guranteed lowest prices and provides new deals , offers and discount coupons every week and help you save money upto 20% while you travel.
travellogos/travel-agency-logos.jpg
Now we have to parse the above file using java script and display the results using html5. Here is the html and javascript code to parse this xml file.
Javascript file
function travel(){
if (window.XMLHttpRequest)
{ // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{ // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","Travel.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
travels = xmlDoc.getElementsByTagName("website");
alert("travels:"+travels.length);
var websites = [];
var description = [];
var logos = [];
for(var travel=0;travelvar websitename = travels[travel].getElementsByTagName("sitename")[0].childNodes[0].nodeValue;
websites.push(websitename);
var des = travels[travel].getElementsByTagName("Description")[0].childNodes[0].nodeValue;
description.push(des);
var images = travels[travel].getElementsByTagName("Image")[0].childNodes[0].nodeValue;
logos.push(images);
}
var listview = document.getElementById("container");
var ul = document.createElement("ul");
for(var i=0;ivar livalue= document.createTextNode(websites[i]);
var desvalue = document.createTextNode(description[i]);
var li = document.createElement("li");
var table = document.createElement("table");
var table1 = document.createElement("table");
var tr1 = document.createElement("tr");
var td1 = document.createElement("td");
var img = new Image();
img.src= logos[i];
img.setAttribute("width",60);
img.setAttribute("height",30);
img.setAttribute(onclick, "test()");
td1.appendChild(img);
tr1.appendChild(td1);
var tr2 = document.createElement("tr");
var td2 = document.createElement("td");
var td3 = document.createElement("td");
td2.appendChild(livalue);
td3.appendChild(desvalue);
tr1.appendChild(td2);
tr2.appendChild(td3);
table.appendChild(tr1);
table1.appendChild(tr2);
li.appendChild(table);
li.appendChild(table1);
ul.appendChild(li);
}
listview.appendChild(ul);
}
Html File
Minimal AppLaud App
Coupons Shop

