<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4416197698262481504</id><updated>2012-02-16T15:28:48.575-08:00</updated><category term='popfly'/><category term='mobile'/><category term='Python'/><category term='yahoo'/><category term='cvs'/><category term='javascript'/><category term='java'/><category term='tool'/><category term='development'/><category term='tutorial'/><category term='deployment'/><category term='digital asset management'/><category term='kunerilite'/><category term='game'/><category term='C++'/><category term='c#'/><category term='objective-c'/><category term='design-pattern'/><category term='job'/><category term='web-app-security'/><category term='ibm'/><category term='WebGoat'/><category term='web2.0'/><category term='jarpa'/><category term='software'/><category term='compare'/><category term='trend'/><category term='javaME'/><category term='eclipse'/><category term='programming language'/><category term='freelance'/><category term='software testing'/><category term='FlashLite'/><category term='widget'/><category term='.NET'/><title type='text'>Software Development and Management</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-8875339882072326522</id><published>2011-11-24T18:08:00.001-08:00</published><updated>2011-11-24T18:08:49.425-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='digital asset management'/><category scheme='http://www.blogger.com/atom/ns#' term='cvs'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Production Workflow for Game Development</title><content type='html'>&lt;p&gt;There is a discussion forum on how to use Source/Version Control System for Game Assets:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.gamedev.net/topic/513765-asset-management/"&gt;http://www.gamedev.net/topic/513765-asset-management/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After going through the various discussion, I propose the following:&lt;/p&gt;  &lt;p&gt;1. Version control to be used by programmers only:&amp;#160; &lt;br /&gt;The programmers will check-in everything including the integrated game asset to work well with their version of code.&lt;/p&gt;  &lt;p&gt;2. File server to be used by artist for their daily work:    &lt;br /&gt;The artists' artwork in progress should be loaded and saved from/into the mapped folder and not in their local PCs.    &lt;br /&gt;The file server need to be backup regularly to allow the artist to fall back on any over-written artwork.&lt;/p&gt;  &lt;p&gt;3. Digital Asset Management to be used to upload final artwork cum source by artist only.&amp;#160; &lt;br /&gt;This system will allow artists to browse through the company digital library and re-use digital assets.    &lt;br /&gt;A list of open source DAM systems    &lt;br /&gt;&lt;a href="http://www.opensourcedigitalassetmanagement.org/reviews/available-open-source-dam/"&gt;http://www.opensourcedigitalassetmanagement.org/reviews/available-open-source-dam/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-8875339882072326522?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/8875339882072326522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=8875339882072326522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/8875339882072326522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/8875339882072326522'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2011/11/production-workflow-for-game.html' title='Production Workflow for Game Development'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-2966773639901894612</id><published>2011-01-27T17:23:00.001-08:00</published><updated>2011-01-27T17:23:22.202-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='compare'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><category scheme='http://www.blogger.com/atom/ns#' term='objective-c'/><title type='text'>Compare C# with Objective C and Java</title><content type='html'>&lt;p&gt;A good article that makes the comparison on these three popular object oriented programming languages is available from &lt;a href="http://create.msdn.com/en-US"&gt;Microsoft App Hub&lt;/a&gt; (formally known as Creators Club for XNA):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://create.msdn.com/en-US/education/catalog/article/intro_to_c_sharp"&gt;Introduction to C# from Objective-C and Java&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I have created a blog on learning C# for beginners: &lt;a href="http://mpgddspf.blogspot.com/"&gt;Software &amp;amp; Programming Fundamentals&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/04/programming-basic.html"&gt;Programming Basic&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/04/develop-console-program.html"&gt;Getting Started - Console Program and Problem Solving&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/04/c-windows-forms.html"&gt;Windows Forms        &lt;br /&gt;&lt;/a&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/04/c-net-variables.html"&gt;Variables&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/04/c-netconditionallogic.html"&gt;Conditional Logic&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/05/calculator.html"&gt;Calculator App Dev process&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/05/c-net-loops.html"&gt;Loops - for, while, do&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/05/c-net-arrays.html"&gt;Arrays&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/05/c-net-strings.html"&gt;Strings&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/05/spf-review-1.html"&gt;Review 1 with answers&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/06/spf-review-2-with-answers.html"&gt;Review 2 with answers&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/05/revision-exercises-on-loops.html"&gt;Revision Exercises on &amp;quot;Loops&amp;quot;&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/05/cnet-events.html"&gt;Events&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/06/c-net-graphics-extra.html"&gt;Graphics&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/06/simple-lot-drawing-for-teams-extra.html"&gt;Simple Lots Drawing Program (Extra)&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/06/simple-hangman-program.html"&gt;Simple Hangman Program (Extra)&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/06/flickering-in-net-graphics.html"&gt;Flickering in .NET Graphics&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/06/spf-additional-exercise-ae1.html"&gt;Additional Exercise #1&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/06/spf-additional-exercise-ae2.html"&gt;Additional Exercise #2&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/07/spf-revision-jul-2010.html"&gt;Full Revision from variables to arrays&lt;/a&gt;       &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;[ Classes and OOP ]      &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/07/vehicle-class.html"&gt;Introduction on Class&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/07/exercise-human-class.html"&gt;Exercise: Human&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/07/computer-class.html"&gt;More detail on class&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/07/simplified-cookie.html"&gt;Properties of class&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/08/object-oriented-programming.html"&gt;OOP&lt;/a&gt;       &lt;br /&gt;-&lt;a href="http://mpgddspf.blogspot.com/2010/08/performance-consideration.html"&gt; Performance considerations&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/08/testing.html"&gt;Testing&lt;/a&gt;       &lt;br /&gt;- &lt;a href="http://mpgddspf.blogspot.com/2010/08/data-driven-unit-testing.html"&gt;Data Driven Unit Testing&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-2966773639901894612?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/2966773639901894612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=2966773639901894612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/2966773639901894612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/2966773639901894612'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2011/01/compare-c-with-objective-c-and-java.html' title='Compare C# with Objective C and Java'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-542731624890926886</id><published>2011-01-25T17:38:00.001-08:00</published><updated>2011-01-25T17:38:18.737-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><category scheme='http://www.blogger.com/atom/ns#' term='javaME'/><title type='text'>Developing Java ME Games using Netbeans IDE 6.9.x</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;I have created a new blog on how to develop Java ME games using Netbeans 6.9.x:&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a title="http://mpgddmgd.blogspot.com/" href="http://mpgddmgd.blogspot.com/"&gt;http://mpgddmgd.blogspot.com/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-542731624890926886?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/542731624890926886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=542731624890926886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/542731624890926886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/542731624890926886'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2011/01/developing-java-me-games-using-netbeans.html' title='Developing Java ME Games using Netbeans IDE 6.9.x'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-1948832343508113513</id><published>2009-12-28T20:15:00.001-08:00</published><updated>2009-12-28T20:15:59.078-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='trend'/><category scheme='http://www.blogger.com/atom/ns#' term='freelance'/><title type='text'>Freelance Developers Trends</title><content type='html'>&lt;p&gt;From oDesk’s Singapore Freelancer listing [ &lt;a href="http://www.odesk.com/users?q=Singapore&amp;amp;to=yes"&gt;link&lt;/a&gt; ], the top developer is Alex N and he is affiliated with Jupiter/ BeHappy.&amp;#160; He is an experienced RoR, Java developer.&lt;/p&gt;  &lt;p&gt;From oDesk’s oConomy page [ &lt;a href="http://www.odesk.com/community/oconomy"&gt;link&lt;/a&gt; ], the average size per project is 494.7 hours and the average rate is $9.95 / hour.&lt;/p&gt;  &lt;p&gt;There are more statistics in the oConomy page such as distribution by job category, etc.&lt;/p&gt;  &lt;p&gt;With the bad economy and uncertainty ahead, the number of freelancers will surely increase further.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-1948832343508113513?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/1948832343508113513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=1948832343508113513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/1948832343508113513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/1948832343508113513'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2009/12/freelance-developers-trends.html' title='Freelance Developers Trends'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-1598263453688843359</id><published>2009-09-16T01:35:00.001-07:00</published><updated>2009-09-16T01:35:18.204-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='FlashLite'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Deployment of Flash Lite Applications</title><content type='html'>&lt;p&gt;With the end in mind, what do we deploy after we complete testing our Flash Lite applications?&lt;/p&gt;  &lt;p&gt;If it is a simple application with just one swf file, then copying the file to a Symbian S40/S60 handphone in its default location, the application may just work out of the box.&amp;#160; But if the application has more files and does not want to reside in the default location, then we need to deploy the files as NFL for S40 and SIS for S60 (plus signing).&lt;/p&gt;  &lt;h3&gt;Nokia Flash Packaging Tool&lt;/h3&gt;  &lt;p&gt;Nokia forum has a online tool just for this purpose:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.forum.nokia.com/Technology_Topics/Web_Technologies/Flash_Lite/flashpackager.html" href="http://www.forum.nokia.com/Technology_Topics/Web_Technologies/Flash_Lite/flashpackager.html"&gt;http://www.forum.nokia.com/Technology_Topics/Web_Technologies/Flash_Lite/flashpackager.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_BTzuSFCPfIw/SrCjPGd2pBI/AAAAAAAAB7I/iM4WznxoFGc/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_BTzuSFCPfIw/SrCjQfJhS6I/AAAAAAAAB7M/zW2PUn9UVeo/image_thumb%5B1%5D.png?imgmax=800" width="644" height="479" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Start by clicking on the “SIS” or “NFL” tab.&amp;#160; After that, fill up the information in the sub tabs.&lt;/p&gt;  &lt;h3&gt;Create SIS Step by Step&lt;/h3&gt;  &lt;p&gt;The following guide from Nokia library provides a step by step tutorial on how to generate a SIS package using the tool.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://library.forum.nokia.com/index.jsp?topic=/Flash_Lite_Developers_Library/GUID-E08FE0A9-B2BA-420E-AECC-84D887D415F9.html" href="http://library.forum.nokia.com/index.jsp?topic=/Flash_Lite_Developers_Library/GUID-E08FE0A9-B2BA-420E-AECC-84D887D415F9.html"&gt;http://library.forum.nokia.com/index.jsp?topic=/Flash_Lite_Developers_Library/GUID-E08FE0A9-B2BA-420E-AECC-84D887D415F9.html&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Create NFL Step by Step&lt;/h3&gt;  &lt;p&gt;The following guide from Nokia library provides a step by step tutorial on how to generate a NFL package using the tool:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://library.forum.nokia.com/index.jsp?topic=/Flash_Lite_Developers_Library/GUID-E08FE0A9-B2BA-420E-AECC-84D887D415F9.html" href="http://library.forum.nokia.com/index.jsp?topic=/Flash_Lite_Developers_Library/GUID-E08FE0A9-B2BA-420E-AECC-84D887D415F9.html"&gt;http://library.forum.nokia.com/index.jsp?topic=/Flash_Lite_Developers_Library/GUID-E08FE0A9-B2BA-420E-AECC-84D887D415F9.html&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-1598263453688843359?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/1598263453688843359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=1598263453688843359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/1598263453688843359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/1598263453688843359'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2009/09/deployment-of-flash-lite-applications.html' title='Deployment of Flash Lite Applications'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_BTzuSFCPfIw/SrCjQfJhS6I/AAAAAAAAB7M/zW2PUn9UVeo/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-3638874090874017133</id><published>2009-09-10T16:13:00.001-07:00</published><updated>2009-09-10T16:13:30.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='web2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><category scheme='http://www.blogger.com/atom/ns#' term='ibm'/><title type='text'>Yet Another High Level Programming Language – IBM’s EGL</title><content type='html'>&lt;p&gt;“Simplify Web 2.0 with IBM Rational EGL Community Edition” that is the promise from this latest release of an Enterprise Tool to the open source community.&lt;/p&gt;  &lt;p&gt;The language is declarative and it will auto generate into Java and Javascript for deployment.&lt;/p&gt;  &lt;p&gt;As an example of how the codes look like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;handler MyRuiHandler type RUIhandler { initialUI = [ addressForm, map ]&amp;#160; };&lt;/p&gt;    &lt;p&gt;addressField TextField { text = “my home address”, width = 250&amp;#160; };&lt;/p&gt;    &lt;p&gt;goButton Button { text = “Go!”, onClick&amp;#160; ::= goButton_clicked };&lt;/p&gt;    &lt;p&gt;addressForm Box { children = [ addressField, goButton ] };&lt;/p&gt;    &lt;p&gt;map GoogleMap { width = “500px”, height = “300px”};&lt;/p&gt;    &lt;p&gt;function goButton_clicked (e Event in )&lt;/p&gt;    &lt;p&gt;addressses String[] = [ addressField.text];&lt;/p&gt;    &lt;p&gt;map.showAddresses(addresses, addresses);&lt;/p&gt;    &lt;p&gt;end&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For more information, refer to the EGL Community Edition Hub:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www-949.ibm.com/software/rational/cafe/community/egl/ce" href="http://www-949.ibm.com/software/rational/cafe/community/egl/ce"&gt;http://www-949.ibm.com/software/rational/cafe/community/egl/ce&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-3638874090874017133?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/3638874090874017133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=3638874090874017133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/3638874090874017133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/3638874090874017133'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2009/09/yet-another-high-level-programming.html' title='Yet Another High Level Programming Language – IBM’s EGL'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-7668490481432774321</id><published>2009-09-09T19:03:00.001-07:00</published><updated>2009-09-09T19:03:24.781-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='FlashLite'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='kunerilite'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='widget'/><category scheme='http://www.blogger.com/atom/ns#' term='jarpa'/><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='javaME'/><title type='text'>Developing Application for Mobile Devices</title><content type='html'>&lt;p&gt;Symbian Developer Network published the following two useful papers:&lt;/p&gt;  &lt;h5&gt;1. Multi-Language Programming – Part I overview&lt;/h5&gt;  &lt;p&gt;&lt;a title="http://developer.symbian.com/main/downloads/papers/Multi_Language_Programming_Part1_Overview.pdf" href="http://developer.symbian.com/main/downloads/papers/Multi_Language_Programming_Part1_Overview.pdf"&gt;http://developer.symbian.com/main/downloads/papers/Multi_Language_Programming_Part1_Overview.pdf&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This paper covers the pro and con of C++, Java ME, Flash Lite,&amp;#160; Python, Web runtime (widgets) and .NET compact framework.&amp;#160; &lt;/p&gt;  &lt;p&gt;It also lists the pro &amp;amp; con, supporting tools and packaging for development with 2 languages – Java &amp;amp; Flash, C++ &amp;amp; Flash, C++ &amp;amp; Widgets and Java &amp;amp; C++.&lt;/p&gt;  &lt;h5&gt;2. Multi-Language Programming – Part 2 extending Flash Lite with Java ME or Symbian C++&lt;/h5&gt;  &lt;p&gt;&lt;a title="http://developer.symbian.com/main/downloads/papers/MLP_Paper+2_v1.0.pdf" href="http://developer.symbian.com/main/downloads/papers/MLP_Paper+2_v1.0.pdf"&gt;http://developer.symbian.com/main/downloads/papers/MLP_Paper+2_v1.0.pdf&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This paper illustrated two examples of combining two programming languages for mobile application development: &lt;/p&gt;  &lt;p&gt;1) FlashLite for UI and interface with Java ME (using Jarpa); and &lt;/p&gt;  &lt;p&gt;2) FlashLite for UI and interface with C++ (using KuneriLite).&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Jarpa&lt;/u&gt;&lt;/strong&gt; facilitates the launching of application and the communication between two runtimes to enable access to additional functionality.&amp;#160; &lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Kunerilite&lt;/u&gt;&lt;/strong&gt; is a Rapid Application Development toolkit to allow flash Lite in accessing native Symbian APIs such as accelerometer, camera, bluetooth, GPS, file system and etc.&lt;/p&gt;  &lt;p&gt;These two papers are worth reading to have an overview of the strengths and limitations of each of the programming languages and then based on the specification of our project, to make decision on which one or two languages to use.&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-7668490481432774321?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/7668490481432774321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=7668490481432774321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/7668490481432774321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/7668490481432774321'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2009/09/developing-application-for-mobile.html' title='Developing Application for Mobile Devices'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-7059790282618059211</id><published>2008-06-30T23:47:00.001-07:00</published><updated>2008-06-30T23:55:57.273-07:00</updated><title type='text'>Web-Based Hosted and Open-Source Test Management Tools</title><content type='html'>&lt;p&gt;Branded Tools such as IBM Rational and HP Mercury are comprehensive, flexible but "expensive".&amp;nbsp; Big corporate such as banks and defense organizations may choose to use them purely for their brand and support.&amp;nbsp; But for small software development companies that need to improve on their software testing &amp;amp; bug tracking process, they need an option to start small (cheaply) and later on the ability to scale up =&amp;gt; hence, web-based hosted test management tools may be one key option for them to consider.&amp;nbsp; The other option is to evaluate a suitable open source test management tool, setup it up and build up in-house "experts" to support the tool.&lt;/p&gt; &lt;h4&gt;Web-Based Hosted Test Management Tools&lt;/h4&gt; &lt;p&gt;Testmanagement: &lt;a title="http://www.testmanagement.com/" href="http://www.testmanagement.com/"&gt;http://www.testmanagement.com/&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;" QaTraq is one of the leading software test case management tools available today. QaTraq provides the rock-solid foundation that IT teams need to create and update test scripts, test cases and test results. QaTraq provides you with instant access to a wide variety of reports which improve the visibility of your testing and pin-pointing test case execution progress. QaTraq encourages a structured approach to test management and test case management which will help to increase productivity and improve visibility of your case execution progress. "&lt;/p&gt; &lt;p&gt;&lt;u&gt;Features:&lt;/u&gt; (1) User role based (test mgr, test lead, test analyst &amp;amp; tester); (2) Test plan, design, test scripts and test cases; (3) Test results and reporting; (4) full version control; and (5) excel &amp;amp; XML inport/export.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Zephyr: &lt;a title="http://www.getzephyr.com/products/test_management_tools.php" href="http://www.getzephyr.com/"&gt;http://www.getzephyr.com/&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;" Zephyr is based around the concept of Desktops &amp;amp; Dashboards. Every role in a Test Department has a customized Testing Desktop with relevant applications that allow them to do their jobs faster and better, as they all share data from a centralized repository and communicate via a collaborative backbone. Dashboards are automated and live, keeping the whole company updated on every aspect of testing and product quality."&lt;/p&gt; &lt;p&gt;&lt;u&gt;Features:&lt;/u&gt; (1) Role-based web desktop by Department or by project; (2) Resource, project and document management; (3) Metric and reporting; (4) Test cases creation, execution and repository; and (5) Defect tracking (Bugzilla)&amp;nbsp; integration.&lt;/p&gt;&lt;/blockquote&gt; &lt;h4&gt;Open-source Test Management Tools:&lt;/h4&gt; &lt;p&gt;From &lt;a href="http://www.opensourcetesting.org/survey.php"&gt;Opensourcetesting&lt;/a&gt;, the three most popular open-source testing tools are TestLink, Selenium and Watir.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;img alt="graph showing tool popularity" src="http://www.opensourcetesting.org/images/ost_survey.jpg"&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;TestLink: &lt;a title="http://www.teamst.org/" href="http://www.teamst.org/"&gt;http://www.teamst.org/&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;" TestLink enables easily to create and manage Test cases as well as organize them into Test plans. These Test plans allow team members to execute Test cases and track test results dynamically, generate reports, trace software requirements, prioritize and assign tasks.&lt;/p&gt; &lt;p&gt;The tool has web based interface with &lt;a href="http://www.php.net"&gt;PHP&lt;/a&gt; and background database &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt;, &lt;a href="http://www.postgresql.org/"&gt;Postgres&lt;/a&gt; or MS-SQL. It cooperates with known Bug tracking systems as is Bugzilla, Mantis, etc."&lt;/p&gt; &lt;p&gt;&lt;u&gt;Features:&lt;/u&gt; (1) Organize tests into projects to allow collaborations; (2) Requirement-based testing; (3) Import/export test cases to/from XML format; (4) Organized tests by test plans; (5) integrate with bug tracking system such as Bugzilla, &lt;a href="http://www.mantisbt.org/"&gt;Mantis&lt;/a&gt;, Jira, TrackPlus, Eventum, Trac, Seapine, Redmine; and (6) Reporting (bugs, progress, failure rates and etc).&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Selenium: &lt;a title="http://selenium.openqa.org/" href="http://selenium.openqa.org/"&gt;http://selenium.openqa.org/&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;" Selenium is a test tool for web applications. Selenium tests run directly in a browser, just like real users do. It runs in Internet Explorer, Mozilla and Firefox on Windows, Linux, and Macintosh, Safari on the Mac."&lt;/p&gt; &lt;p&gt;&lt;u&gt;Features:&lt;/u&gt; (1) Firefox plugin allows you to record and playback tests in the browser; (2) Remote Control mode to test a wider range of web-applications; and (3) Selenium Grid to allow scaling by adding hardware.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Watir:&amp;nbsp; &lt;a title="http://wtr.rubyforge.org/" href="http://wtr.rubyforge.org/"&gt;http://wtr.rubyforge.org/&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;" Watir is a simple open-source library for automating web browsers.&lt;/p&gt; &lt;p&gt;Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page.  &lt;p&gt;Watir is a Ruby library that works with Internet Explorer on Windows. Watir is currently being ported to support &lt;a href="http://wtr.rubyforge.org/platforms.html"&gt;Firefox and Safari&lt;/a&gt;. "  &lt;p&gt;&lt;u&gt;Features:&lt;/u&gt; (1) Generate test result reports; and (2) Use excel or Ooo for data driven tests. &lt;/p&gt;&lt;/blockquote&gt; &lt;h4&gt;References: &lt;/h4&gt; &lt;ol&gt; &lt;li&gt;&lt;a title="http://www.dmoz.org/Computers/Programming/Software_Testing/Test_Management/" href="http://www.dmoz.org/Computers/Programming/Software_Testing/Test_Management/"&gt;http://www.dmoz.org/Computers/Programming/Software_Testing/Test_Management/&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-7059790282618059211?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/7059790282618059211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=7059790282618059211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/7059790282618059211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/7059790282618059211'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2008/06/web-based-hosted-and-open-source-test.html' title='Web-Based Hosted and Open-Source Test Management Tools'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-13586803776555524</id><published>2008-05-01T18:31:00.001-07:00</published><updated>2008-05-15T06:06:47.873-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software testing'/><title type='text'>Software Testing</title><content type='html'>&lt;p&gt;Reports:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.compuware.com/dl/Gartner2007MQanalysis.pdf"&gt;Magic Quadrant for IT Project and Portfolio Management 2007&lt;/a&gt; (Gartner)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Terminologies:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Software_testing"&gt;Software Testing&lt;/a&gt;: It is the process used to assess the quality of computer software.  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Testbed"&gt;Test Bed&lt;/a&gt;: a development environment that is shielded from the hazards of testing in a live or production environment.  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Test_automation"&gt;Test Automation&lt;/a&gt;: It is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions. Commonly, test automation involves automating a manual process already in place that uses a formalized testing process. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;IBM Rational Testing Suite:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.watchfire.com/products/appscan/default.aspx"&gt;AppScan&lt;/a&gt;: It automates web application security audits to help ensure the security and compliance of websites. Named the worldwide market-share leader according to Gartner and IDC, our AppScan product suite offers a solution for all types of web application security testing needs - outsourced, individual scans and enterprise-wide analysis - and for all types of users - application developers, quality assurance teams, penetration testers, security auditors and senior management. [Standard Edition: scans and tests for all common web application vulnerabilities - including those identified in the WASC threat classification - such as SQL-Injection, Cross-Site Scripting and Buffer Overflow.]  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Rational_ClearCase"&gt;ClearCase&lt;/a&gt;: It is a software tool for revision control (e.g. &lt;u&gt;configuration management&lt;/u&gt;, SCM) of source code and other software development assets. It is developed by the Rational Software division of IBM. ClearCase forms the base of version control for many large and medium sized businesses and can handle projects with hundreds or thousands of developers, but the price is quite steep for smaller companies.&amp;nbsp; Rational supports two types of SCM configurations, UCM, and base ClearCase. UCM provides an out-of-the-box SCM configuration while base ClearCase supplies all the basic tools to make it very configurable and flexible. Both can be configured to support a wide variety of SCM needs.&amp;nbsp; ClearCase can run on a number of platforms including Linux, Solaris and Windows. It can handle large binary files, large numbers of files, and large repository sizes. It handles branching, labeling, and versioning of directories.  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/IBM_Rational_ClearQuest"&gt;ClearQuest&lt;/a&gt;: It is a &lt;u&gt;workflow automation tool&lt;/u&gt; (in particular &lt;u&gt;bug tracking system&lt;/u&gt;) from the Rational Software division of IBM. The tool can be linked to Microsoft Project to create ordered steps for resources assigned to specific goals.&amp;nbsp; The product was originally designed for tracking defects (bugs) in software development projects. In addition to its capabilities to track bugs ClearQuest allows organizations to organize tasks related to new features.&amp;nbsp; ClearQuest also integrates well with Rational ClearCase revision control system. This allows to correlate source code change sets with ClearQuest records (i.e. bugs), simplifying some aspects of bug tracking and source code management.  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/IBM_Rational_Functional_Tester"&gt;Functional Tester&lt;/a&gt;: RFT is a &lt;u&gt;GUI test automation tool&lt;/u&gt;. The tool provides capabilities to record a user’s interactions with an application and create a script representing the same. The user can modify the script to enhance or make specific changes if required. The user can play back this script to repeat the same sequence of actions that was performed during recording. The user can create a script to represent a test case. This test case can be considered to have passed if the script executes without any failure, else it is a failed test case.&amp;nbsp; In an iterative development cycle, multiple builds of the application are delivered in short time frames. Manually testing the existing and new functionality in each of the new builds can be a challenge. RFT provides the ability to create a test harness to replay test cases on multiple builds to ensure that both existing and new functionality work as designed.  &lt;li&gt;&lt;a href="http://www.ibm.com/developerworks/downloads/r/rpt/learn.html?S_TACT=105AGY59&amp;amp;S_CMP=13"&gt;Performance Tester&lt;/a&gt;: It is a load and performance testing solution for teams concerned about the scalability of their Web-based applications. Combining multiple ease-of-use features with granular detail, Rational Performance Tester simplifies the test-creation, load-generation and data-collection processes that help teams ensure the ability of their applications to accommodate required user loads.  &lt;li&gt;&lt;a href="http://www-306.ibm.com/software/awdtools/tester/robot/"&gt;Robot&lt;/a&gt;: [Win] It is a test automation tool for functional testing of client/server applications.  &lt;p&gt;Test automation tool for QA teams for testing client/server applications. Enables defect detection, includes test cases and test management, supports multiple UI technologies.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Other Testing Products:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/WinRunner"&gt;HP/Mercury Interactive WinRunner&lt;/a&gt;: [Win] It is an automated &lt;u&gt;functional GUI testing tool&lt;/u&gt; that allows a user to record and play back UI interactions as test scripts.&amp;nbsp; As a Functional test suit, it works together with HP QuickTest Professional and supports enterprise Quality Assurance.&amp;nbsp; HP WinRunner software is standard, functional testing software for enterprise IT applications. It captures, verifies and replays user interactions automatically, so you can identify defects and determine that your business processes work as designed.&amp;nbsp; The software implements a proprietary Test Script Language (TSL) that allows customization and parameterization of user input.&amp;nbsp; &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/LoadRunner"&gt;HP/Mercury Interactive LoadRunner&lt;/a&gt;: [Win] It is a &lt;u&gt;performance and load testing product&lt;/u&gt; by Hewlett-Packard (since it acquired Mercury Interactive in November 2006) for examining system behaviour and performance, while generating actual load. LoadRunner can emulate hundreds or thousands of concurrent users to put the application through the rigors of real-life user loads, while collecting information from key infrastructure components (Web servers, database servers etc). The results can then be analysed in detail, to explore the reasons for particular behaviour.&amp;nbsp; Consider the client-side application for an automated teller machine (ATM). Although each client is connected to a server, in total there may be hundreds of ATMs open to the public. There may be some peak times — such as 10 a.m. Monday, the start of the work week — during which the load is much higher than normal. In order to test such situations, it is not practical to have a testbed of hundreds of ATMs. So, given an ATM simulator and a computer system with LoadRunner, one can simulate a large number of users accessing the server simultaneously. Once activities have been defined, they are repeatable. After debugging a problem in the application, managers can check whether the problem persists by reproducing the same situation, with the same type of user interaction.&amp;nbsp; Working in LoadRunner involves using three different tools which are part of LoadRunner. They are Virtual User Generator (VuGen), Controller and Analysis.  &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/JMeter"&gt;JMeter&lt;/a&gt;: [Java, cross platform] It is an Apache Jakarta project that can be used as a &lt;u&gt;load testing tool&lt;/u&gt; for analyzing and measuring the performance of a variety of services, with a focus on web applications.&amp;nbsp; JMeter can be used as a unit test for JDBC database connections, FTP, LDAP, Webservices, JMS, and generic TCP connections. JMeter can also be configured as a monitor, although this is typically considered an ad-hoc solution in lieu of advanced monitoring solutions.&amp;nbsp; While JMeter is classified as a "load generation" tool, this is not a complete description of the tool. JMeter supports assertions to ensure the data received is correct, per thread cookies, configuration variables and a variety of reports.  &lt;li&gt;Microsoft Visual Studio Team Edition for Software Testers: It provides Web testing, load testing, unit testing, code coverage, and other testing tools.  &lt;li&gt;&lt;a href="https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&amp;amp;cp=1-11-201-200^9570_4000_100__"&gt;HP/ SPI-Dynamics WebInspect&lt;/a&gt;: Security Scanner.  &lt;li&gt;&lt;a href="http://parasoft.com/jsp/products/home.jsp?product=WebKing&amp;amp;itemID=86"&gt;Parasoft WebKing&lt;/a&gt;: Security Scanner.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Certifications:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.bcs.org/upload/pdf/istqbsyll.pdf"&gt;Certified Tester Foundation Level Syllabus&lt;/a&gt;:  &lt;p&gt;The Foundation Level qualification is aimed at anyone involved in software testing. This includes&lt;br&gt;people in roles such as testers, test analysts, test engineers, test consultants, test managers, user&lt;br&gt;acceptance testers and software developers. This Foundation Level qualification is also appropriate&lt;br&gt;for anyone who wants a basic understanding of software testing, such as project managers, quality&lt;br&gt;managers, software development managers, business analysts, IT directors and management&lt;br&gt;consultants. Holders of the Foundation Certificate will be able to go on to a higher level software&lt;br&gt;testing qualification.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-13586803776555524?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/13586803776555524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=13586803776555524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/13586803776555524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/13586803776555524'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2008/05/software-testing.html' title='Software Testing'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-8936065586466906589</id><published>2007-11-03T19:26:00.001-07:00</published><updated>2007-11-03T20:25:12.985-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web-app-security'/><category scheme='http://www.blogger.com/atom/ns#' term='WebGoat'/><title type='text'>Web Application Security</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.google.com/puahhl/Ry0ts22GulI/AAAAAAAAAC4/wlWHHdvHVWA/image14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 20px 0px 0px; border-right-width: 0px" height="242" alt="image" src="http://lh5.google.com/puahhl/Ry0ttW2GumI/AAAAAAAAADA/p9-TVFCTf5A/image_thumb8.png" width="244" align="left" border="0"&gt;&lt;/a&gt; The Open Web Application Security Project (OWASP) is an open-source application security project. The OWASP community works to create freely-available articles, methodologies, documentation, tools, and technologies on Web Application Security.&lt;/p&gt; &lt;p&gt;OWASP maintains the &lt;a href="http://www.owasp.org/index.php/OWASP_Guide_Project"&gt;OWASP Guide&lt;/a&gt; (to Building Secure Web Application) and the &lt;a href="http://www.owasp.org/index.php/OWASP_Top_Ten_Project"&gt;OWASP Top 10&lt;/a&gt; awareness (to list the ten most critical web application security flaws) documents.&lt;/p&gt; &lt;h2&gt;Building Secure Web Application&lt;/h2&gt; &lt;p&gt;In the OWASP Guide (version 2.1), users are guided through the technologies involved in web applications, security framework &amp;amp; policy, secure coding principles and many more security related topics. &lt;/p&gt; &lt;p&gt;&lt;u&gt;How serious is web applications security flaws?&lt;/u&gt; Web applications have the ability to make a skilled attacker rich! &lt;/p&gt; &lt;p&gt;Each chapter in the guide is organized into 1) Best practices, 2) Secure patterns and 3) Anti-patterns (i.e. non-secured patterns). &lt;/p&gt; &lt;p&gt;The following figure (extracted from the guide) illustrate what web technologies are covered: &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.google.com/puahhl/Ry0xom2GuzI/AAAAAAAAAEo/F98P4Vs6i-k/image41%5B3%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="138" alt="image" src="http://lh6.google.com/puahhl/Ry0tum2GuoI/AAAAAAAAAEw/sRKQRO7tzeg/image41_thumb%5B2%5D.png" width="240" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;u&gt;Web applications development:&lt;/u&gt; with cumulated generic knowledge, new tools enable entry level developers to build complicated web applications with ease but unaware of the security implications of their codes. &lt;/p&gt; &lt;p&gt;&lt;u&gt;Policy:&lt;/u&gt; Organizations that have security buy-in from the highest levels will generally produce applications that meet basic information security principles. Most organizations produce information security policies derived from &lt;a href="http://www.computersecuritynow.com/"&gt;ISO 17799&lt;/a&gt; (risk-based Information Security Management framework). The OWASP Guide is useful as a suitable control for application procurement and in-house development, as part of a wider compliance program. &lt;/p&gt; &lt;p&gt;&lt;u&gt;Policy - Development:&lt;/u&gt; to employ a &lt;em&gt;development methodology&lt;/em&gt; and some set of &lt;em&gt;coding standards or conventions&lt;/em&gt;. All code and test changes must be able to be &lt;em&gt;versioned and capable of being reverted&lt;/em&gt;. &lt;/p&gt; &lt;p&gt;&lt;u&gt;Secure Coding Principles:&lt;/u&gt; &lt;/p&gt; &lt;p&gt;1) Minimize attach surface area - eg remove a search function and provide a site map instead; &lt;/p&gt; &lt;p&gt;2) Secured defaults - eg password complexity should be enabled by default and allowing users to simplify their use to turn off the complexity but increasing their risk; &lt;/p&gt; &lt;p&gt;3) Principles of least privilege - i.e. grant permission based on need only; &lt;/p&gt; &lt;p&gt;4) Principle of defense in depth - eg multi-tiered validation; &lt;/p&gt; &lt;p&gt;5) Fail securely; &lt;/p&gt; &lt;p&gt;6) External systems are insecure - third party partners should be considered external and treated as such; &lt;/p&gt; &lt;p&gt;7) Separation of duties - eg administrator can turn on/off an application but should not be able to log on to the application as a super user; &lt;/p&gt; &lt;p&gt;8) Do not trust security through obscurity; &lt;/p&gt; &lt;p&gt;9) Simplicity; and &lt;/p&gt; &lt;p&gt;10) Fix security issues correctly. &lt;/p&gt; &lt;p&gt;&lt;u&gt;Threat Risk Modeling:&lt;/u&gt; When you start a web application design, it is essential to apply threat risk modeling to channel resources and time in focusing on the real risks. OWASP recommends Microsoft’s threat modeling process - two different approaches for writing up threats: One is a &lt;u&gt;threat graph&lt;/u&gt; and the other is a &lt;u&gt;structured list&lt;/u&gt;. &lt;/p&gt; &lt;p&gt;For identifying threats - &lt;strong&gt;STRIDE&lt;/strong&gt; (&lt;u&gt;S&lt;/u&gt;poofing Identity, &lt;u&gt;T&lt;/u&gt;ampering with Data, &lt;u&gt;R&lt;/u&gt;epudiation, &lt;u&gt;I&lt;/u&gt;nformation Disclosure, &lt;u&gt;D&lt;/u&gt;enial of Service &amp;amp; &lt;u&gt;E&lt;/u&gt;levation of Privilege). &lt;/p&gt; &lt;p&gt;For rating risk - DREAD (&lt;u&gt;D&lt;/u&gt;amage, &lt;u&gt;Reproducibility&lt;/u&gt;, &lt;u&gt;Exploitable&lt;/u&gt;, &lt;u&gt;A&lt;/u&gt;ffected Users &amp;amp; &lt;u&gt;Discoverable&lt;/u&gt;). &lt;/p&gt; &lt;p&gt;&lt;u&gt;Yahoo! Developer Network on Web Application Security:&lt;/u&gt; Most of the cases of user data making its way into the wrong hands stems from application bugs or security holes. Here are some basic guidelines for building safe Internet applications: &lt;/p&gt; &lt;ul&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Never store passwords in clear text - use hash function(password)&lt;/strong&gt;. Instead, use a hashing algorithm to create a signature of the user's password for storage. To authenticate user, simply apply the same algorithm to the password received from login page and compare with what have stored.  &lt;li&gt;&lt;strong&gt;Never store username in cookies for identification - use unique (random) key generated based on login userid &amp;amp; password (&amp;amp; random(time))&lt;/strong&gt;. This makes it difficult for a hacker to guess or forge.  &lt;li&gt;Check parameters pass to SQL statements in application. Untreated user input can easily be hijacked to clear out your database. PHP has a function called &lt;a href="http://www.php.net/manual/en/function.mysql-real-escape-string.php"&gt;mysql_real_escape_string()&lt;/a&gt; that will prevent most attacks of this type. Refer to &lt;a href="http://msdn2.microsoft.com/en-us/library/ms998271.aspx"&gt;MSDN&lt;/a&gt; for preventing SQL injection on ASP .net.  &lt;li&gt;Purge unused/unnecessary user data from your system regularly. This limits the damage that could be done if an attacker gains control of your system. &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;h2&gt;Top 10 web application security flaws (2007)&lt;/h2&gt; &lt;p&gt;Extracted from the Top 10 (2007) document: &lt;/p&gt; &lt;p&gt;A1 – Cross Site Scripting (XSS)&lt;br&gt;XSS flaws occur whenever an application takes user supplied data and sends it to a web browser without first validating or encoding that content. XSS allows attackers to execute script in the victim’s browser which can hijack user sessions, deface web sites, possibly introduce worms, etc. &lt;/p&gt; &lt;p&gt;A2 – Injection Flaws&lt;br&gt;Injection flaws, particularly SQL injection, are common in web applications. Injection occurs when user-supplied data is sent to an interpreter as part of a command or query. The attacker’s hostile data tricks the interpreter into executing unintended commands or changing data. &lt;/p&gt; &lt;p&gt;A3 – Malicious File Execution&lt;br&gt;Code vulnerable to remote file inclusion (RFI) allows attackers to include hostile code and data, resulting in devastating attacks, such as total server compromise. Malicious file execution attacks affect PHP, XML and any framework which accepts filenames or files from users. &lt;/p&gt; &lt;p&gt;A4 – Insecure Direct Object Reference&lt;br&gt;A direct object reference occurs when a developer exposes a reference to an internal implementation object, such as a file, directory, database record, or key, as a URL or form parameter. Attackers can manipulate those references to access other objects without authorization. &lt;/p&gt; &lt;p&gt;A5 – Cross Site Request Forgery (CSRF)&lt;br&gt;A CSRF attack forces a logged-on victim’s browser to send a pre-authenticated request to a vulnerable web application, which then forces the victim’s browser to perform a hostile action to the benefit of the attacker. CSRF can be as powerful as the web application that it attacks. &lt;/p&gt; &lt;p&gt;A6 – Information Leakage and Improper Error Handling&lt;br&gt;Applications can unintentionally leak information about their configuration, internal workings, or violate privacy through a variety of application problems. Attackers use this weakness to steal sensitive data or conduct more serious attacks. &lt;/p&gt; &lt;p&gt;A7 – Broken Authentication and Session Management&lt;br&gt;Account credentials and session tokens are often not properly protected. Attackers compromise passwords, keys, or authentication tokens to assume other users’ identities. &lt;/p&gt; &lt;p&gt;A8 – Insecure Cryptographic Storage&lt;br&gt;Web applications rarely use cryptographic functions properly to protect data and credentials. Attackers use weakly protected data to conduct identity theft and other crimes, such as credit card fraud. &lt;/p&gt; &lt;p&gt;A9 – Insecure Communications&lt;br&gt;Applications frequently fail to encrypt network traffic when it is necessary to protect sensitive communications. &lt;/p&gt; &lt;p&gt;A10 – Failure to Restrict URL Access&lt;br&gt;Frequently, an application only protects sensitive functionality by preventing the display of links or URLs to unauthorized users. Attackers can use this weakness to access and perform unauthorized operations by accessing those URLs directly. &lt;/p&gt; &lt;h2&gt;Learning Web Security - WebGoaT V5&lt;/h2&gt; &lt;p&gt;&lt;a href="http://lh4.google.com/puahhl/Ry0tvG2GupI/AAAAAAAAADY/kKj-eI9J3jY/image%5B8%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 20px 0px 0px; border-left: 0px; border-bottom: 0px" height="143" alt="image" src="http://lh6.google.com/puahhl/Ry0tvm2GuqI/AAAAAAAAADg/BiwBTjvuGSA/image_thumb%5B3%5D.png" width="230" align="left" border="0"&gt;&lt;/a&gt; WebGoat is a deliberately insecure web application created to teach web application security lessons. In each lesson, users are guided to demonstrate their understanding of a security issue by exploiting a real flaw in the application.&lt;/p&gt; &lt;p&gt;Lessons covered are listed below&lt;/p&gt; &lt;ul&gt; &lt;ul&gt; &lt;li&gt;HTTP Basics  &lt;li&gt;HTTP Splitting and Cache Poisoning  &lt;li&gt;How to Exploit Thread Safety Problems  &lt;li&gt;How to Discover Clues in the HTML  &lt;li&gt;How to Exploit Hidden Fields  &lt;li&gt;How to Exploit Unchecked Email  &lt;li&gt;How to Bypass Client Side JavaScript Validation  &lt;li&gt;How to Force Browser Web Resources  &lt;li&gt;How to Bypass a Role Based Access Control Scheme  &lt;li&gt;How to Bypass a Path Based Access Control Scheme  &lt;li&gt;LAB: Role based Access Control  &lt;li&gt;Using an Access Control Matrix  &lt;li&gt;How to Exploit the Forgot Password Page  &lt;li&gt;How to Spoof an Authentication Cookie  &lt;li&gt;How to Hijack a Session  &lt;li&gt;Basic Authentication  &lt;li&gt;LAB: Cross Site Scripting  &lt;li&gt;How to Perform Stored Cross Site Scripting (XSS)  &lt;li&gt;How to Perform Reflected Cross Site Scripting (XSS)  &lt;li&gt;How to Perform Cross Site Trace Attacks (XSS)  &lt;li&gt;Buffer Overflow (TBD)  &lt;li&gt;&lt;a href="http://www.owasp.org/index.php/HTTPOnly"&gt;HTTPOnly&lt;/a&gt; Test  &lt;li&gt;How to Perform Command Injection  &lt;li&gt;How to Perform Parameter Injection  &lt;li&gt;How to Perform Blind SQL Injection  &lt;li&gt;How to Perform Numeric SQL Injection  &lt;li&gt;How to Perform String SQL Injection  &lt;li&gt;How to Perform Log Spoofing  &lt;li&gt;How to Perform XPATH Injection Attacks  &lt;li&gt;LAB: SQL Injection  &lt;li&gt;How to Bypass a Fail Open Authentication Scheme  &lt;li&gt;How to Perform Basic Encoding  &lt;li&gt;Denial of Service from Multiple Logins  &lt;li&gt;How to Create a SOAP Request  &lt;li&gt;How to Perform WSDL Scanning  &lt;li&gt;How to Perform Web Service SAX Injection  &lt;li&gt;How to Perform Web Service SQL Injection  &lt;li&gt;How to Perform DOM Injection Attack  &lt;li&gt;How to Perform XML Injection Attacks  &lt;li&gt;How to Perform JSON Injection Attack  &lt;li&gt;How to Perform Silent Transactions Attacks  &lt;li&gt;How to Add a New Lesson  &lt;li&gt;The Challenge&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;&lt;a title="http://www.owasp.org/index.php/.Net_Security_Tools" href="http://www.owasp.org/index.php/.Net_Security_Tools"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;u&gt;Installation and startup:&lt;/u&gt; download the window zip file (~42 Meg), unzipped. &lt;strong&gt;Disconnect your PC from the Internet&lt;/strong&gt; before executing the "webgoat_8080.bat" file. &lt;/p&gt; &lt;p&gt;In the browser, point the URL to "&lt;a title="http://localhost:8080/" href="http://localhost:8080/"&gt;http://localhost:8080/&lt;/a&gt;" to confirm that TOMCAT is running:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.google.com/puahhl/Ry0tv22GurI/AAAAAAAAAE0/9HqpnBh322E/image4%5B1%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="51" alt="image" src="http://lh6.google.com/puahhl/Ry0twm2GusI/AAAAAAAAAE4/Fhaqm1BTZDU/image4_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In the browser, point the URL to "&lt;a title="http://localhost:8080/WebGoat/attack" href="http://localhost:8080/WebGoat/attack"&gt;http://localhost:8080/WebGoat/attack&lt;/a&gt;" and login using userid = guest, password = guest:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.google.com/puahhl/Ry0txG2GutI/AAAAAAAAAE8/RmVMgpItxLg/image%5B9%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="100" alt="image" src="http://lh6.google.com/puahhl/Ry0txm2GuuI/AAAAAAAAAFA/jkfbz2iOpHg/image_thumb%5B4%5D.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Click on "Start WebGoat", then click on "Show Params" and "Show Cookies". For each lesson, click on "Show Java" to go through the App codes:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.google.com/puahhl/Ry0tyW2GuvI/AAAAAAAAAFE/r0_-sW-aZTM/image12%5B1%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="151" alt="image" src="http://lh5.google.com/puahhl/Ry0tzW2GuwI/AAAAAAAAAFI/Q-1u9nJpkW4/image12_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Follow the instruction given in each stage of the lesson as illustrated above, read the lesson plan to learn more:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.google.com/puahhl/Ry0t0G2GuxI/AAAAAAAAAFM/XiSBGYo3oEM/image%5B10%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="198" alt="image" src="http://lh3.google.com/puahhl/Ry0t022GuyI/AAAAAAAAAFQ/zJePYsrQyt4/image_thumb%5B5%5D.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Use the tips to fully understand the steps involved for each lesson, example:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Tip #1: Use CR (%0d) and LF (%0a) for a new line&lt;/p&gt; &lt;p&gt;Tip #2: The Content-Length: 0 will tell the server that the first request is over.&lt;/p&gt; &lt;p&gt;Tip #3: A 200 OK message looks like this: HTTP/1.1 200 OK&lt;/p&gt; &lt;p&gt;Tip #4: Try: language=?foobar%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2047%0d%0a%0d%0a&amp;lt;html&amp;gt;Insert undesirable content here&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Just copy and paste the following segment &lt;u&gt;"?foobar%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2047%0d%0a%0d%0a&amp;lt;html&amp;gt;Insert undesirable content here&amp;lt;/html&amp;gt;"&lt;/u&gt; into the textbox.&lt;/p&gt; &lt;p&gt;Good to have a copy of the ASCII reference code - %20 represent space.&lt;/p&gt; &lt;p&gt;(From &lt;a title="http://game-editor.com/tutorials/images/ascii.jpg" href="http://game-editor.com/tutorials/images/ascii.jpg"&gt;http://game-editor.com/tutorials/images/ascii.jpg&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;&lt;img height="240" alt="http://game-editor.com/tutorials/images/ascii.jpg" src="http://game-editor.com/tutorials/images/ascii.jpg" width="207"&gt;&lt;/p&gt; &lt;p&gt;Proceed with the rest of the lessons....&lt;/p&gt; &lt;p&gt;Books and References&lt;/p&gt;Book: &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FDevelopers-Guide-Web-Application-Security%2Fdp%2F159749061X%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1193902190%26sr%3D1-1&amp;amp;tag=softwdeveland-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Developer's Guide to Web Application Security&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=softwdeveland-20&amp;amp;l=ur2&amp;amp;o=1" width="1" border="0"&gt;  &lt;p&gt;&lt;/p&gt; &lt;p&gt;OWASP Guide: &lt;a title="http://www.owasp.org/index.php/OWASP_Guide_Project" href="http://www.owasp.org/index.php/OWASP_Guide_Project"&gt;http://www.owasp.org/index.php/OWASP_Guide_Project&lt;/a&gt;&lt;/p&gt; &lt;p&gt;OWASP Top 10 2007: &lt;a title="http://www.owasp.org/index.php/OWASP_Top_Ten_Project" href="http://www.owasp.org/index.php/OWASP_Top_Ten_Project"&gt;http://www.owasp.org/index.php/OWASP_Top_Ten_Project&lt;/a&gt;&lt;/p&gt; &lt;p&gt;OWASP WebGoat: &lt;a title="http://www.owasp.org/index.php/OWASP_WebGoat_Project" href="http://www.owasp.org/index.php/OWASP_WebGoat_Project"&gt;http://www.owasp.org/index.php/OWASP_WebGoat_Project&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Yahoo! Developer: &lt;a title="http://developer.yahoo.com/security/" href="http://developer.yahoo.com/security/"&gt;http://developer.yahoo.com/security/&lt;/a&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-8936065586466906589?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/8936065586466906589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=8936065586466906589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/8936065586466906589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/8936065586466906589'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2007/11/web-application-security.html' title='Web Application Security'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-4335013828056678788</id><published>2007-10-31T23:07:00.001-07:00</published><updated>2007-11-03T20:17:20.785-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design-pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='yahoo'/><title type='text'>Yahoo! Design Patterns</title><content type='html'>&lt;p&gt;At Yahoo! Developer Network, Yahoo! shared their Design Patterns.&lt;/p&gt; &lt;p&gt;Each pattern has four primary components:  &lt;/p&gt;&lt;ol&gt; &lt;li&gt;a title  &lt;/li&gt;&lt;li&gt;a problem  &lt;/li&gt;&lt;li&gt;a context  &lt;/li&gt;&lt;li&gt;a solution &lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;User Need To&lt;/h2&gt; &lt;p&gt;The Design Patterns are categorized by the need of user to perform certain actions such as:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/#"&gt;Search&lt;/a&gt;  &lt;ol&gt; &lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=searchpagination"&gt;Search Pagination&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/#"&gt;Navigate&lt;/a&gt;  &lt;ol&gt; &lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=breadcrumbs"&gt;Breadcrumbs&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/#"&gt;Links&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=alphafilterlinks"&gt;Alphanumeric Filter Links&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/parent.php?pattern=tabs"&gt;Tabs&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=moduletabs"&gt;Module Tabs&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=navigationtabs"&gt;Navigation Tabs&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/#"&gt;Read&lt;/a&gt;  &lt;ol&gt; &lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=grid"&gt;Page Grids&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/parent.php?pattern=pagination"&gt;Pagination&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=itempagination"&gt;Item Pagination&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=searchpagination"&gt;Search Pagination&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/#"&gt;Select&lt;/a&gt;  &lt;ol&gt; &lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=autocomplete"&gt;Auto Complete&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=calendar"&gt;Calendar Picker&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/#"&gt;Interact&lt;/a&gt;  &lt;ol&gt; &lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/parent.php?pattern=invitation"&gt;Invitation&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=cursorinvitation"&gt;Cursor Invitation&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=dropinvitation"&gt;Drop Invitation&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=tooltipinvitation"&gt;Tool Tip Invitation&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=hoverinvitation"&gt;Hover Invitation&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/parent.php?pattern=transition"&gt;Transition&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=animate"&gt;Animate&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=brighten"&gt;Brighten&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=collapse"&gt;Collapse&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=crossfade"&gt;Cross Fade&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=dim"&gt;Dim&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=expand"&gt;Expand&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=fadein"&gt;Fade In&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=fadeout"&gt;Fade Out&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=selfhealing"&gt;Self-Healing&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=slide"&gt;Slide&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=spotlight"&gt;Spotlight&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/#"&gt;Give Feedback&lt;/a&gt;  &lt;ol&gt; &lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/parent.php?pattern=ratingsreviews"&gt;Ratings &amp;amp; Reviews&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=architectureofreview"&gt;Architecture Review&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=ratinganobject"&gt;Rating an Object&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=writingareview"&gt;Writing a Review&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/#"&gt;Customize&lt;/a&gt;  &lt;ol&gt; &lt;li&gt;&lt;a href="http://developer.yahoo.com/ypatterns/parent.php?pattern=dragdrop"&gt;Drag and Drop&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;One Example - &lt;a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=votetopromote"&gt;Vote to promote&lt;/a&gt;&lt;/h2&gt; &lt;table border="0" cellpadding="2" cellspacing="0" width="400"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="74"&gt;Problem&lt;/td&gt; &lt;td valign="top" width="324"&gt;The user wants to promote a particular piece of content in a community pool of submissions. This promotion takes the form of a vote for that item, and items with more votes rise in the rankings to be displayed with more prominence.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="74"&gt; &lt;p&gt;Use When&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="324"&gt; &lt;ul&gt; &lt;li&gt;Users in the community have the ability to submit content to a 'pool' of resources.  &lt;/li&gt;&lt;li&gt;Some democratic form of judgment is needed, to allow the community to compare the subjective quality of one submission to another.  &lt;/li&gt;&lt;li&gt;A sizeable-enough community is required. Ideally, popular submissions in the pool should receive significantly more (dozens, hundreds?) votes than non-popular ones, in order to make comparisons meaningful.&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="74"&gt; &lt;p&gt;&lt;a&gt; &lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;Solution  &lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="324"&gt; &lt;ol&gt; &lt;li&gt;Provide a voting mechanism, attached to each candidate item in the community pool. Clicking this mechanism counts as a vote in favor of that item's promotion.  &lt;ul&gt; &lt;li&gt;User gets only one vote per item.  &lt;/li&gt;&lt;li&gt;Display a user's vote back to them, so they can tell what they've voted for.  &lt;/li&gt;&lt;li&gt;Users may change their vote after it is cast.&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Highlight popular items  &lt;ul&gt; &lt;li&gt;Display them on the property's Main Page  &lt;/li&gt;&lt;li&gt;Display them first in Search results&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Prominently display the number of votes that an item has received  &lt;/li&gt;&lt;li&gt;Try to ensure that users are voting on items that they &lt;a href="http://www.themulife.com/?p=256"&gt;have actually consumed&lt;/a&gt; (read, watched, listened to.)  &lt;ul&gt; &lt;li&gt;On article pages, place vote controls after the article.  &lt;/li&gt;&lt;li&gt;Consider withholding the vote mechanism on high-level listing pages. Make readers click down to an article page before voting.  &lt;/li&gt;&lt;li&gt;Provide a stand-alone voting mechanism that third-party publishers can include on destination sites. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;h2&gt;Books and References&lt;/h2&gt; &lt;p&gt;Yahoo! Design Patterns: &lt;a title="http://developer.yahoo.com/ypatterns/" href="http://developer.yahoo.com/ypatterns/"&gt;http://developer.yahoo.com/ypatterns/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-4335013828056678788?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/4335013828056678788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=4335013828056678788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/4335013828056678788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/4335013828056678788'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2007/10/yahoo-design-patterns.html' title='Yahoo! Design Patterns'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4416197698262481504.post-2796962924123390611</id><published>2007-10-27T18:53:00.001-07:00</published><updated>2008-12-13T01:46:26.840-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='popfly'/><title type='text'>Microsoft Popfly Block Basic Tutorial</title><content type='html'>&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_BTzuSFCPfIw/RyJu3G2GudI/AAAAAAAAABg/yh_dFuJ9U9E/s1600-h/1.JPG"&gt;&lt;img alt="" src="http://3.bp.blogspot.com/_BTzuSFCPfIw/RyJu3G2GudI/AAAAAAAAABg/yh_dFuJ9U9E/s320/1.JPG" align="left" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.popfly.ms/Home.aspx"&gt;Microsoft Popfly&lt;/a&gt; is currently Beta (as at 18 Oct 2007). This quickstart will focus on the overview and then creating a new BLOCK. Refer to the &lt;a href="http://popflyteam.spaces.live.com/Blog/cns%2151018025071FD37F%21266.entry"&gt;beta release notes&lt;/a&gt; for requirements and stuff supported.&lt;/p&gt; &lt;h2&gt;Menu and stuff&lt;/h2&gt; &lt;p&gt;After sign in, there is a menu bar with four items on it: Create Stuff, My Stuff, Find Stuff and Other Stuff.&lt;/p&gt; &lt;table border="0" cellpadding="2" cellspacing="0" width="400"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;a href="http://3.bp.blogspot.com/_BTzuSFCPfIw/RyJwiG2GueI/AAAAAAAAABo/h-IIEcaOwP4/s1600-h/2.JPG"&gt;&lt;img alt="" src="http://3.bp.blogspot.com/_BTzuSFCPfIw/RyJwiG2GueI/AAAAAAAAABo/h-IIEcaOwP4/s200/2.JPG" border="0" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="200"&gt;This is the start of creating stuff such as Mashup, Web Page and Block. Popfly Explorer enables us to share our Visual Studio Projects onto the popfly space with other users.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;a href="http://2.bp.blogspot.com/_BTzuSFCPfIw/RyJwv22GufI/AAAAAAAAABw/1HoqWl_OPqw/s1600-h/3.JPG"&gt;&lt;img alt="" src="http://2.bp.blogspot.com/_BTzuSFCPfIw/RyJwv22GufI/AAAAAAAAABw/1HoqWl_OPqw/s200/3.JPG" border="0" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="200"&gt;This is where we keep track of projects created and our profile.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;a href="http://1.bp.blogspot.com/_BTzuSFCPfIw/RyJw8m2GugI/AAAAAAAAAB4/55JY6f66Vzs/s1600-h/4.JPG"&gt;&lt;img alt="" src="http://1.bp.blogspot.com/_BTzuSFCPfIw/RyJw8m2GugI/AAAAAAAAAB4/55JY6f66Vzs/s200/4.JPG" border="0" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="200"&gt;This is where we search for stuff and people.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;a href="http://1.bp.blogspot.com/_BTzuSFCPfIw/RyJxFm2GuhI/AAAAAAAAACA/YVVFBEAFO8Q/s1600-h/5.JPG"&gt;&lt;img alt="" src="http://1.bp.blogspot.com/_BTzuSFCPfIw/RyJxFm2GuhI/AAAAAAAAACA/YVVFBEAFO8Q/s200/5.JPG" border="0" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_BTzuSFCPfIw/RyJxFm2GuhI/AAAAAAAAACA/YVVFBEAFO8Q/s1600-h/5.JPG"&gt;&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="200"&gt;This is where we share our stuff.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt; Getting Started&lt;/h2&gt; &lt;p&gt;The easiest way is to go straight to mashup and start linking BLOCKs to create customised project. There is no programming at all and need only setting the parameters =&amp;gt; watch &lt;a href="http://video.google.com/videosearch?q=popfly+mashup+video"&gt;popfly mashup videos&lt;/a&gt; to see how it works.&lt;br /&gt;Now we will focus on creating a customised BLOCK: Create Stuff &amp;gt; Block, it will take us to the page for creating Block.  A block is a piece of code that is contained in a single JavaScript file (.js) that provides methods for user generated code to invoke.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_BTzuSFCPfIw/RyJ5c22GuiI/AAAAAAAAACI/riinf3GjTr0/s1600-h/6.JPG"&gt;&lt;img alt="" src="http://2.bp.blogspot.com/_BTzuSFCPfIw/RyJ5c22GuiI/AAAAAAAAACI/riinf3GjTr0/s200/6.JPG" align="right" border="0" /&gt;&lt;/a&gt; On the left side, there are existing blocks that are used for the Mashup. We can search for something (eg "google") related in the search box, then drag and drop into the BLOCK creator page.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_BTzuSFCPfIw/RyKG4m2GujI/AAAAAAAAACQ/h3a3SWVAxcc/s1600-h/7.JPG"&gt;&lt;img alt="" src="http://1.bp.blogspot.com/_BTzuSFCPfIw/RyKG4m2GujI/AAAAAAAAACQ/h3a3SWVAxcc/s200/7.JPG" align="left" border="0" /&gt;&lt;/a&gt; On the top right hand corner, click on Save to save your block.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;h2&gt;Books and References&lt;/h2&gt; &lt;p&gt;&lt;a href="http://www.amazon.com/gp/search?ie=UTF8&amp;amp;keywords=popfly&amp;amp;tag=softwdeveland-20&amp;amp;index=books&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Popfly books&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4416197698262481504-2796962924123390611?l=softwaredevelopmentandmanagement.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwaredevelopmentandmanagement.blogspot.com/feeds/2796962924123390611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4416197698262481504&amp;postID=2796962924123390611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/2796962924123390611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4416197698262481504/posts/default/2796962924123390611'/><link rel='alternate' type='text/html' href='http://softwaredevelopmentandmanagement.blogspot.com/2007/10/microsoft-popfly-block-tutorial_27.html' title='Microsoft Popfly Block Basic Tutorial'/><author><name>PUAH Hock Leng@SG</name><uri>http://www.blogger.com/profile/02843067645232677846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_BTzuSFCPfIw/RyJu3G2GudI/AAAAAAAAABg/yh_dFuJ9U9E/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
