Showing posts with label on. Show all posts
Showing posts with label on. Show all posts

Wednesday, March 11, 2015

Agiles perspective on failure

In the fall of 2011 I did some research regarding agile and failure for a presentation at Much Ado About Agile 2011 in Vancouver. The research was focused by a blog post by Philippe Kruchten describing some of the agile elephants. He listed "commercial interests censoring failure" and "using Elitism as a defense (against failure)" as two of the elephants. I consulted my brother-in-law Dr. Jason Ediger who is a psychologist to learn a bit more about the psychology of failure. After a brief explanation of what agile is, he responded with this:

"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

Read more »

Monday, March 9, 2015

Updates on Authentication for Gmail IMAP POP and SMTP

We’d like to highlight some recent and upcoming changes around 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
Read more »

Wednesday, March 4, 2015

Top 50 e Learning Super Heroes on Planet Earth!


Congratulations to ALL that made the Top 50 e-Learning Super Heroes list! The results are based on 1861 voters from around world.

If you didnt make it, please revisit and enjoy the complete list (220) of Top e-Learning Movers and Shakers in 2013 (TEMS13) or the TEMS13 Award Winners and various Top 10 Lists


Before, going any further, I would like to personally congratulate and thank all the sponsors for their wonderful support during the TEMS13 project! International Medical University, International Medical College (New), iBerry, WizIQ and Listly...Thank you! 



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. 

However, due to practical reasons (e.g. No time to check 1600+ social media profiles!) and the fact that these scores had to be calculated manually using Google Spreadsheet, only the following two gamified rules were applied:
  • 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!

*The TEMS13 Details sheet only contains 90+ of the 220 nominees filtered out based on TEMS13 results and number of votes for each hero. CLICK HERE to access the full list (unfiltered with cases of double, triple and quadrupedal voting).

*The votes per nominee might vary from the Listly results, as the double, triple, quadruple votes by one person has been (mostly) deleted. You can vote up to 4 times if you login as Twitter, Facebook, LinkedIn and Google+. However, that is unacceptable and such incidents have been deleted where discovered.


WINNER!


Oops, I won again! Yeah! Al-Hamdulilla! Thank you!

Though, since I am not eligible for any prices (except for having fun and playing) the 1st Prize goes to Juan Domingo Farnós (200 British Pounds). Congrats! We are thrilled that you have won it! 



Also, we would like to take the opportunity to thank iBerry for being the sponsor of the 1st Prize. Congrats!

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)!

WOW! what an impact Impact Votes (IV) made on the results! Here are the Top 10 based on IV only:

  1.   Zaid Ali Alsagoff (30 IV)
  2.   Jane Hart (27 IV)
  3.   Stephen Downes (25 IV)
  4.   George Siemens (23 IV)
  5.   Steve Wheeler (20 IV)
  6.   Tom Kuhlmann (19 IV)
  7.   Alec Couros (16 IV)
  7.   Grainne Conole (16 IV)
  9.   Jane Bozarth (15 IV)
 9.   Jay Cross (15 IV)

Only number one remained the same, but for the rest of the e-Learning Super Heroes it had a rising impact. Congrats! The TOP 10 IV LIST IS...WOW!


TEMS14?

iBerry has already indicated that it will be willing to sponsor another around of TEMS in 2014! If it does happen, I will for sure cook up more gamified scoring items (e.g. Google search of the e-Learning Super Heros name), and try to make it more fun and relevant than this years edition. I am still learning! 

However, I will for sure not participate as a nominee in 2014, if I am the host, Twitter DJ and promoter of TEMS14! It was cool to win the treble this this year (TEMS13, IV rank and e-Learning Super Hero of the Year Awards), but thats it! 

Thank you everyone for all the support! Everyone who participated, voted and celebrated the 220 e-Learning Super Heroes in TEMS13 deserves a BIG SUPER HERO HUG AND CONGRATULATIONS! 

WE ROCK :)
Read more »

Tuesday, March 3, 2015

Monetize Videos on Youtube to Earn Money

If you want to earn money from google adsense without any blog or website you can earn money from youtube with uploading your videos on youtube and monetize them with youtube monetization program.
Friends in this post i will tell you how to monetize your videos with youtube monetization program. To monetize your videos you will have to apply for youtube monetization program and get a Google Adsense account.

Read More about: How to Apply for Youtube MonetizationProgram and get Google Adsense Account

When you have your adsense account after getting approved for monetization program. Follow these steps

1: Sign in to your youtube account.

2: Click on Upload Video

3: Upload a video

(Note: Never use any copyright video to monetize. Videos like movie trailers, songs or any other copyright material is not allowed for monetization by youtube.)

5: Chose your video title,  description, tags and thumbnail.
google adsense tutoria

6: wait till your video uploaded successfully.

7: Now Click on Monetization Tab right next to Basic Infos.

8: Click on Monetize with ads, Ads format and Syndication.
Monetize your videos on youtube

9: Click Save

Now your video is applied for monetization and will get approval within 24 hours.  Some times it takes only 10 to 15 minutes, some times it takes up to 24 hours.
how to monetize videos on youtube


Don’t forget to share my post with your friends if you think its helpful. If you have any questions don’t hesitate to ask. Just comment and ask I will solve your issues.
Read more »

Monday, February 16, 2015

A first experiment on D3 bar chart in pentaho CDE Queried output on Bar Chart with few limitations

Hi Guys,

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 example
 Step 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>  


Image 2 : With sort check box disable


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 1:  Ascending

Image 2 : Descending
Default:

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/










Read more »

Tuesday, February 3, 2015

CyanogenMod on HP Touchpad step by step Guide and Tutorial

How to install CyanogenMod On HP Touchpad 

Custom ROM for HP TouchPad .
Step By Step Tutorial. 

how to install Cyanogenmod 9  Tutorial .

Credit : RolandDeschain79

Welcome to the CyanogenMod the Easy Way installation guide for the HP TouchPad.

1) Start by downloading and installing Java from this link Here:

2) Download, extract and open the Novacom files and Read ME.

Run and install the UniversalNovacomInstaller-1.3 software onto your PC.

Downloaded Novacom files & Read Me Here:
Downloaded Novacom mirror & Read Me Here:

Once the installation has completed navigate to the install directory on your PC. The Default path will be C:/Program Files/ Palm, Inc.

Once there Paste the files located in the “Add to Palm, Inc folder” here.

Note* OS X, users should put these files into /opt/nova/bin.

Click the picture below to see the location:


3) Choose One of the following versions of CyanogenMod. Download your chosen package and extract it to your PC. Next attach your HP TouchPad to your PC with the USB cable and place it into USB Drive Mode(WebOS) or MTP mode(Android). Open the extracted folder and transfer the cminstall folder into the Internal Storage of your HP TouchPad; the location the opens when the USB is attached to the PC/Mac. Make sure that the folder is named "cminstall". Once complete disconnect the TouchPad from USB cable.

CyanogenMod Installation Package Downloads:

A.CyanogenMod 10 Jelly Bean (CM10-20130418)cminstall package Download:

Note! This one folder now contains all 4 needed files!

B.CyanogenMod 9 Ice Cream Sandwich (CM9-20130714)cminstall package Download:
C.CyanogenMod 7 Gingerbread (CM7Alpha3.5) cminstall package Download:

(Thanks to Mpgrimm2 for Dev hosting the files)

4.Installation:

Once the cminstall files are on The HP TouchPad, it’s time to reboot into WebOS Recovery mode(aka USB mode).

If you are currently running WebOS you must disconnect the USB cable from the PC.

On your PC look for the USB icon in the bottom right corner, click it and eject the HP TouchPad.
In WebOS Reboot the device by going into Settings/Device Info/ and select “Reset options” choose restart.

or

In Android Reboot the device by holding down the power button and select Reboot/OK.
As soon as the screen goes dark hold down the volume up button until you enter WebOS Recovery mode(aka USB Mode). Note* the large USB symbol that should be on the screen. If you miss it just reboot again and hold down the Volume up button right away. Now connect your USB cable to the PC.

Open a Command Prompt or Terminal

On your PC:

Open a command prompt by going to the start button and typing CMD into the search window (enter)

Or

Open a command prompt by Opening the Palm, Inc folder, Hold [Shift] & [Right Click] then select "open Command window here"

On your Mac: 

Mac OS X users will need to start a Terminal window. This can be found in the /Applications/Utilities folder.

Using the Command Prompt or Terminal

-Next either type or copy and paste the following into the command prompt (without the part in brackets)

cd (enter)

cd program files (enter)

cd palm, inc (enter)

(Only type One of the Following lines below.)

Note:The ACMEInstaller3 can and should be used to install all versions of CyanogenMod.

On your PC

novacom.exe boot mem:// < ACMEInstaller3 (Upgrade from CM7 to CM9)

novacom.exe boot mem:// < ACMEInstaller3 (Upgrade from CM9 to CM10 or install CM10)
novacom.exe boot mem:// < ACMEUninstaller (uninstall CyanogenMod, All versions)

Installation on Mac 

novacom boot mem:// < ACMEInstaller3 (Upgrade from CM7 to CM9)
novacom boot mem:// < ACMEInstaller3 (Upgrade from CM9 to CM10 or install CM10)
novacom boot mem:// < ACMEUninstaller (uninstall CyanogenMod, All versions)
Note: Mac OS X users will enter the commands without the ".exe" extension.
-You will see the lines of text scrolling on the HP TouchPad while CyanogenMod is installing. Now disconnect the USB cable from the HP TouchPad. Once this is complete you will be greeted with the Moboot menu and CyanogenMod will boot for the first time. You will be taken through a series of menus to setup the device. Congratulations you have now installed CyanogenMod onto your HP TouchPad, Have Fun.

Nevertells upgrade advice for installing CM10 over CM9 here:
Nevertells Advice for Installing CyanogenMod the Old Fashioned Way

(Optional) Automated Installers/Uninstallers/Toolkits [Threads]:
There are now two great threads about automated installers that can make your Android experience almost effortless.

Touchpad Toolkit - Android automated installer

All the TouchPad PC files in a few simple clicks!

Notes(Important):

1)Note: If you are unable to find the Play Store after you install CyanogenMod, then you will need to reflash your gapps package. Click Here for the how to video!

2)Note: Once running CyanogenMod for the first time, you may need to enable MTP(Media Transfer Protocol) This will enable the TouchPad to transfer files and charge using the USB cable. To Enable MTP mode, Go to settings/storage, look for the three dots in the upper right hand corner of the screen, tap computer connection, and make sure there is a check next to MTP.

Gapps Downloads:

GOO.IM: All Gapps Downloads!

Gapps Mirrors:

CyanogenMod 10.0.x, 4.1.1, gapps-jb-20121011-signed:
CyanogenMod 9.0.x, 4.0.3-4, gapps-ics-20120429-signed:
CyanogenMod 7.1-2.x, 2.3.5-7, gapps-gb-20110828-signed:

3)Note: When using the acmeinstaller2/3, the Rom and Gapps files must begin with update-xxxx. If update- is not present the Rom and gapps may not install. You can add update- to the Rom & Gapps file names if it is missing.

CyanogenMod package contents explained:

There are currently three versions of CyanogenMod provided here to install. I would highly recommend installing CyanogenMod 9 (CM9) for first time users. CM9 has reached a good level of maturity and stability. CyanogenMod 10 (CM10) is currently a very functional unofficial Preview build but still has a couple bugs. CyanogenMod7 (CM7) also works well but is a little dated and not well supported like CM9/CM10 are.
-You will need 4 files to install CyanogenMod. The first two files can vary depending on the version you choose to install. CyanogenMod 9 is used here for Example:

1)update-cm-9-20120707-NIGHTLY-tenderloin-signed.zip (Installs your Android Operating System)

2)update- gapps-ics-20120429-signed (Installs your Gapps Package, Play Store & Applications)

3)moboot_0.3.5 (Installs your Boot Menu options)

4)update-CWM6_tenderloin-20121215 (Installs ClockWorkMod6 recovery)




Special thanks to Author  RolandDeschain79
Read more »

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;travel var 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;i var 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












Read more »