<?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-30550906</id><updated>2012-01-29T12:39:34.096-07:00</updated><category term='Linux Sucks'/><category term='OverSim'/><title type='text'>Dilum Bandara</title><subtitle type='html'>My world of technology, experiences, life, teaching, and everything else...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30550906.post-5675362766043731704</id><published>2011-12-09T11:47:00.000-07:00</published><updated>2011-12-09T11:49:53.172-07:00</updated><title type='text'>I Don't Understand What Anyone Is Saying Anymore</title><content type='html'>&lt;a href="http://blogs.hbr.org/pallotta/2011/12/i-dont-understand-what-anyone.html?utm_source=twitterfeed&amp;amp;utm_medium=twitter#.TuJXhGLhBdE.blogger"&gt;I Don't Understand What Anyone Is Saying Anymore by Dan Pallotta - Harvard Business Review&lt;/a&gt;&lt;br /&gt;Reminder of way we communicate not just in business but also in science  &amp;amp; engineering. Just had first hand experience at Globecom 2011. Bit  of though can overcome these &amp;amp; significantly enhance what we want to convey.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-5675362766043731704?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.hbr.org/pallotta/2011/12/i-dont-understand-what-anyone.html?utm_source=twitterfeed&amp;utm_medium=twitter#.TuJXhGLhBdE.blogger' title='I Don&apos;t Understand What Anyone Is Saying Anymore'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/5675362766043731704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=5675362766043731704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5675362766043731704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5675362766043731704'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/12/i-dont-understand-what-anyone-is-saying.html' title='I Don&apos;t Understand What Anyone Is Saying Anymore'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-1713257249927744809</id><published>2011-10-05T13:29:00.000-06:00</published><updated>2011-10-05T13:29:14.145-06:00</updated><title type='text'>Qiqqa - Best (free) document management tool for researches</title><content type='html'>I have being trying &lt;a href="http://www.qiqqa.com/64006"&gt;Qiqqa&lt;/a&gt; for few days &amp;amp; loving it. Even the free version has so many unique features that makes managing PDF-based articles easy &amp;amp; fun. It's probably the best (free) document management tool for researches.&lt;br /&gt;Want to try, go to &lt;a href="http://www.qiqqa.com/64006"&gt;http://www.qiqqa.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-1713257249927744809?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/1713257249927744809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=1713257249927744809' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1713257249927744809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1713257249927744809'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/10/qiqqa-best-free-document-management.html' title='Qiqqa - Best (free) document management tool for researches'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-7291486311797501891</id><published>2011-09-29T10:14:00.004-06:00</published><updated>2011-09-29T10:48:26.298-06:00</updated><title type='text'>Framework, Architecture, vs. Solution</title><content type='html'>&lt;div style="text-align: justify;"&gt;I always struggle to figure out whether to use the word framework, architecture, or solution while trying describe what we developed/designed. Here's the difference among those terms based on several sources:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Framework &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;&lt;b&gt;Underlying set of ideas&lt;/b&gt;: a set of ideas, principles, agreements, or rules that provides the basis or outline for something intended to be more fully developed at a later stage - Encarta World English Dictionary&lt;/li&gt;&lt;li&gt;&lt;b&gt;Context&lt;/b&gt;: the general background to, or context for, a particular action or event, e.g., legal framework - Encarta World English Dictionary&lt;/li&gt;&lt;li&gt;&lt;b&gt;System of interconnecting bars&lt;/b&gt;: a structure of connected horizontal and vertical bars with spaces between them, especially one that forms the skeleton of another structure - Encarta World English Dictionary&lt;/li&gt;&lt;li&gt;A &lt;b&gt;set of theories widely accepted enough&lt;/b&gt; to serve as the guiding principles of research within a particular discipline - Wikipedia&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Architecture &lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;&lt;b&gt;Building design&lt;/b&gt;: the art and science of designing and constructing buildings - Encarta World English Dictionary&lt;/li&gt;&lt;li&gt;&lt;b&gt;building style&lt;/b&gt;: a style or fashion of building, especially one that is typical of a period of history or of a particular place - Encarta World English Dictionary&lt;/li&gt;&lt;li&gt;&lt;b&gt;Structure of computer system&lt;/b&gt;: the design, structure, and behavior of a computer system, microprocessor, or system program, including the characteristics of individual components and how they interact, e.g., network architecture - Encarta World English Dictionary&lt;/li&gt;&lt;li&gt;&lt;b&gt;Both the process and product of planning, designing and construction &lt;/b&gt;- Wikipedia&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Solution (source Encarta World English Dictionary) &lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt; &lt;b&gt;Answer to puzzle&lt;/b&gt;: the answer to a puzzle or question&lt;/li&gt;&lt;li&gt;&lt;b&gt;Ending of something&lt;/b&gt;: the act of ending, breaking, or separating something &lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Thus, it seems &lt;b&gt;framework&lt;/b&gt; is concerned with defining the underlying ideas and framing the work (defining boundaries). For example, a software framework defines a set of classes and how they are interrelated. They may also define methods/functions without specifying how to implement them. According to 3rd definition, framework is also used to refer to underlying solution that can be used to build other things on top of it, e.g., .NET framework or OMNet++ simulation framework. Therefore, a framework is generic enough or extensible to be applicable under different scenarios. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Whereas an &lt;b&gt;architecture&lt;/b&gt; is concerned with both the design and how to execute them. For example, computer architecture is the practical art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals and the formal modeling of those systems (source - Wikipedia).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Solution&lt;/b&gt; is the ultimate outcome when a framework is translated into an architecture, and when that architecture becomes a reality.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Therefore, if we are referring to something conceptual (e.g., block diagram) we can consider it to be a framework. If we further extend the block diagram and talk about specific details of each block (e.g., what algorithms to use) and how to integrate them, then it's an architecture. If we go further and develop it, it becomes a specific solution. Framework is generic while solution is specific.&lt;/div&gt;&lt;br /&gt;Still confused - you are not the only one, e.g., see &lt;a href="http://redotheweb.com/2007/08/29/define-framework/"&gt;Define “Framework”&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-7291486311797501891?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/7291486311797501891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=7291486311797501891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/7291486311797501891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/7291486311797501891'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/09/framework-architecture-vs-solution.html' title='Framework, Architecture, vs. Solution'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-8534054919164858015</id><published>2011-09-16T06:24:00.000-06:00</published><updated>2011-09-16T06:24:29.818-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OverSim'/><title type='text'>OverSim - Messages</title><content type='html'>&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Messages could be used to communicate in application &amp;amp; overlay layers as well for RPC communication. A message file could contain one or more messages and end with .msg. Relevant header &amp;amp; source files will be automatically generated when you compile.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All messages are inherited from cMessage class &amp;amp;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;RPC calls - inherited from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BaseCallMessage&lt;/span&gt; class. Message name must end with word 'Call', e.g., &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MyRPCCall&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;packet MyRPCCall extends BaseCallMessage&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;RPC responce - inherited from &lt;/span&gt;BaseResponseMessage&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt; classes. Message name must end with word "Response', e.g., &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MyRPCResponce&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt; &lt;/span&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/30550906-8534054919164858015?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/8534054919164858015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=8534054919164858015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/8534054919164858015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/8534054919164858015'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/09/oversim-messages.html' title='OverSim - Messages'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-5978125532995198665</id><published>2011-09-16T06:20:00.001-06:00</published><updated>2011-09-16T06:20:30.180-06:00</updated><title type='text'>Waiting time paradox in exponential inter arrival times</title><content type='html'>See &lt;a href="http://mahalanobis.twoday.net/stories/3486587/"&gt;The waiting time paradox&lt;/a&gt; for an excellent illustration on waiting time paradox in exponential inter arrival times or Poisson arrivals.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-5978125532995198665?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/5978125532995198665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=5978125532995198665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5978125532995198665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5978125532995198665'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/09/waiting-time-paradox-in-exponential.html' title='Waiting time paradox in exponential inter arrival times'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-6369834986163961710</id><published>2011-09-16T06:12:00.004-06:00</published><updated>2011-09-16T06:24:14.095-06:00</updated><title type='text'>The Networking Philosopher's Problem</title><content type='html'>Must read for grad students in networking and anyone that teaches networking...&lt;br /&gt;&lt;a href="http://www.sigcomm.org/ccr/papers/2011/July/2002250.2002252"&gt;The Networking Philosopher's Problem&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-6369834986163961710?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/6369834986163961710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=6369834986163961710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6369834986163961710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6369834986163961710'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/09/networking-philosophers-problem.html' title='The Networking Philosopher&apos;s Problem'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-5606954964967990747</id><published>2011-07-31T21:23:00.005-06:00</published><updated>2011-07-31T21:24:31.565-06:00</updated><title type='text'>Remove Unwanted Blank Pages in MS Word</title><content type='html'>It can be annoying when you can't delete that extract blank page at the end of your word document. This happens after you add a table or section break. Following tip can be really useful.&lt;br /&gt;&lt;a href="http://www.techrepublic.com/blog/msoffice/remove-unwanted-blank-pages-inserted-after-a-word-table/341"&gt;Remove unwanted blank pages inserted after a Word table&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-5606954964967990747?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/5606954964967990747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=5606954964967990747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5606954964967990747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5606954964967990747'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/07/remove-unwanted-blank-pages-in-ms-word.html' title='Remove Unwanted Blank Pages in MS Word'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-3550094553702828845</id><published>2011-03-03T14:06:00.000-07:00</published><updated>2011-03-03T14:06:23.802-07:00</updated><title type='text'>Are graduate studies making us over qualified???</title><content type='html'>&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; text-align: justify;"&gt;When it clicks, a post graduate degree can carry us to new hights. But when it fails, we are over qualified &amp;amp; no one wants us... There is no gurantee that 4-6 years of scarifies will pay off.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; text-align: justify;"&gt;Read &lt;a href="http://www.linkedin.com/share?viewLink=&amp;amp;url=http%3A%2F%2Flnkd%2Ein%2FuenZVF&amp;amp;sid=s287530166&amp;amp;urlhash=hPkl&amp;amp;redirect=&amp;amp;trk=sae_i_m_so_val"&gt;They're Mad as Hell&lt;/a&gt; by Leonard Cassuto for a debatable discussion on reality. Read Comments as well.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;A must read for anyone thinking of becoming a graduate student... &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-3550094553702828845?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.linkedin.com/share?viewLink=&amp;url=http%3A%2F%2Flnkd%2Ein%2FuenZVF&amp;sid=s287530166&amp;urlhash=hPkl&amp;redirect=&amp;trk=sae_i_m_so_val' title='Are graduate studies making us over qualified???'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/3550094553702828845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=3550094553702828845' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/3550094553702828845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/3550094553702828845'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/03/are-graduate-studies-making-us-over.html' title='Are graduate studies making us over qualified???'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-5168882771092308770</id><published>2011-02-01T07:39:00.000-07:00</published><updated>2011-02-01T07:39:17.069-07:00</updated><title type='text'>Science &amp; Engineering Journal Abbreviations</title><content type='html'>&lt;div style="text-align: justify;"&gt;Ever wonder what should be the correct abbreviation (or what it stands for) of a journal when you write/read papers. Search abbreviations as you type at &lt;a href="http://scieng.library.ubc.ca/coden/"&gt;http://scieng.library.ubc.ca/coden/&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-5168882771092308770?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://scieng.library.ubc.ca/coden/' title='Science &amp; Engineering Journal Abbreviations'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/5168882771092308770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=5168882771092308770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5168882771092308770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5168882771092308770'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/02/science-engineering-journal.html' title='Science &amp; Engineering Journal Abbreviations'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-2507209689554120236</id><published>2011-01-03T16:59:00.000-07:00</published><updated>2011-01-03T16:59:33.926-07:00</updated><title type='text'>Should I Quit Before I Get Fired?</title><content type='html'>&lt;div style="text-align: justify;"&gt;I always thought it would be good to resign than getting fired (it has not happen to me so far &amp;amp; hope will never happen) because you can go to the next employer with your head up. But Job Journal recommends to hang in until you find a new job or get fired.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.jobjournal.com/thisweek.asp?artid=3101"&gt;Read more...&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-2507209689554120236?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.jobjournal.com/thisweek.asp?artid=3101' title='Should I Quit Before I Get Fired?'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/2507209689554120236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=2507209689554120236' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2507209689554120236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2507209689554120236'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/01/should-i-quit-before-i-get-fired.html' title='Should I Quit Before I Get Fired?'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-2707329242106796037</id><published>2011-01-01T14:22:00.002-07:00</published><updated>2011-01-01T14:24:35.435-07:00</updated><title type='text'>The Innovation Delusion</title><content type='html'>&lt;div style="text-align: justify;"&gt;"&lt;a href="http://www.todaysengineer.org/2010/Jul/innovation-delusion.asp"&gt;The Innovation Delusion&lt;/a&gt;" is a reminder that a country can't survive only through knowledge &amp;amp; innovation. I do realized this within few weeks that I came to USA. Yet unfortunately many people (both US &amp;amp; international) don't think it's probable. Only time will tell...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Read more &lt;a href="http://www.todaysengineer.org/2010/Jul/innovation-delusion.asp"&gt;at...&lt;/a&gt;&lt;span id="goog_1565665722"&gt;&lt;/span&gt;&lt;span id="goog_1565665723"&gt;&lt;/span&gt;&lt;a href="http://draft.blogger.com/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-2707329242106796037?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.todaysengineer.org/2010/Jul/innovation-delusion.asp' title='The Innovation Delusion'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/2707329242106796037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=2707329242106796037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2707329242106796037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2707329242106796037'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2011/01/innovation-delusion.html' title='The Innovation Delusion'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-5878477011758977372</id><published>2010-11-05T23:01:00.001-06:00</published><updated>2010-11-05T23:16:48.056-06:00</updated><title type='text'>Macro to Search Typos in Microsoft Word</title><content type='html'>&lt;div style="text-align: justify;"&gt;Most of us tend to type some funny words or break a word into multiple words which are not captured by the spell checker. Inability of the spell checker to understand the context leads to this issue. Here is a Word Macro to detect such errors which I developed while wiring my PhD proposal.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Macro searches for each word in the 'terms' array and move the cursor to the first occurrence allowing you to manually edit the word(s). It doesn't correct errors as some of the words are context sensitive and depends on the position of a sentence. You can always extend the to code to deal with common mistakes like writing 'in to' instead of 'into'. After each correction you need to rerun the macro. Simplest way to rerun is to assign a shortcut key to the macro. When all the words are searched you will see a message saying "Double Check Compete...!". Feel free to add your own words to the 'terms' array.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: x-small;"&gt;Sub Double_Check()&lt;br /&gt;&lt;span style="color: #e69138;"&gt;'&lt;/span&gt;&lt;br style="color: #e69138;" /&gt;&lt;span style="color: #e69138;"&gt; ' Double_Check Macro&lt;/span&gt;&lt;br style="color: #e69138;" /&gt;&lt;span style="color: #e69138;"&gt; ' This macro only points you to the first location of word that you may have misspelled or&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #e69138;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: x-small;"&gt;' written as multiple words. It doesn't correct errors as some of the words are context sensitive&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: x-small;"&gt;&lt;span style="color: #e69138;"&gt; ' (can be extended if needed). You need to rerun the macro until all erros are corrected.&lt;/span&gt;&lt;br style="color: #e69138;" /&gt;&lt;span style="color: #e69138;"&gt; '&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e69138;"&gt;'List of words that you have tendency to misspell or write as multiple words&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; terms = Array("&amp;nbsp; ", "all most", "all ready", "all together", "all ways", _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "before hand", "can not", "community wide", "data center", _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "et. al.", "far away", "fig,", "further more", "in to", _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "my self", "testbed", "Wide spread")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each my_item In terms&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Selection.Find.ClearFormatting&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With Selection.Find&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Text = my_item&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e69138;"&gt;'term to search&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Forward = True&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Wrap = wdFindContinue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .MatchCase = False&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e69138;"&gt;'case insensitive&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .MatchWholeWord = True&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End With&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Selection.Find.Execute = True Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #e69138;"&gt;' exit if a match&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next my_item&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox ("Double Check Complete...!")&lt;br /&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;You can add a shortcut key to Word by going to Customize Quick Access Toolbar button (on top left corner) &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;→&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt; More Commands... &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;→&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt; Customize &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;→&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt; Keyboard shortcuts. Press the Customize button. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-5878477011758977372?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/5878477011758977372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=5878477011758977372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5878477011758977372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5878477011758977372'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/11/macro-to-search-typos-in-microsoft-word.html' title='Macro to Search Typos in Microsoft Word'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-6951831616825226131</id><published>2010-10-30T06:20:00.001-06:00</published><updated>2010-10-30T06:21:17.851-06:00</updated><title type='text'>Response on OverSim</title><content type='html'>&lt;div style="text-align: justify;"&gt;Thanks everyone for the encouraging words on my OverSim tutorials. I got several positive blog comments &amp;amp; direct e-mails. It's seems time is right for a more formal tutorial. I'll try to expand the existing topics &amp;amp; add new ones within next couple of weeks. Please contribute by sending sample codes &amp;amp; suggestions that will help all of us.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-6951831616825226131?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/6951831616825226131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=6951831616825226131' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6951831616825226131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6951831616825226131'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/10/response-on-oversim.html' title='Response on OverSim'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-7458977242253456090</id><published>2010-09-17T15:24:00.004-06:00</published><updated>2010-09-22T07:38:29.422-06:00</updated><title type='text'>SnapIt Screen Capture</title><content type='html'>&lt;div style="text-align: justify;"&gt;Recently I was asked to reviews a screen capture utility called &lt;a href="http://www.digeus.com/products/snapit/snapit_screen_capture_3_5.html"&gt;SnapIt 3.7&lt;/a&gt;. I was bit skeptical as I was happy with screen capture feature in Microsoft OneNote. I'm happy to realize SnapIt provides much more features than OneNote. It's small &amp;amp; doesn't add any noticeable overhead, though I hate to add another icon to the task bar. To summarize it:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;supports hotkeys, auto-saving, clipboard, etc.&lt;/li&gt;&lt;li&gt;copies screenshots to the clipboard so works with any app&lt;/li&gt;&lt;li&gt;tracks capture history, auto-saves captured images&lt;/li&gt;&lt;li&gt;auto-names captured images&amp;nbsp; &lt;/li&gt;&lt;li&gt;can save in many formats, e.g., BMP, GIF, JPEG, PNG &amp;amp; TIFF&lt;/li&gt;&lt;/ul&gt;If you write a review &amp;amp; post it on your own blog/twitter/FB SnapIt may give you a licensed copy. So hurry up &amp;amp; contact &lt;a href="mailto:julia.taylor@digeus.com"&gt;Julia Taylor&lt;/a&gt; or visit &lt;a href="http://www.digeus.com/products/snapit/snapit_screen_capture_3_5.html"&gt;SnapIt&lt;/a&gt; site. &lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-7458977242253456090?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.digeus.com/products/snapit/snapit_screen_capture_3_5.html' title='SnapIt Screen Capture'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/7458977242253456090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=7458977242253456090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/7458977242253456090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/7458977242253456090'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/09/snapit-screen-capture.html' title='SnapIt Screen Capture'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-1016745602892805411</id><published>2010-06-23T17:49:00.007-06:00</published><updated>2010-08-18T13:21:26.603-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OverSim'/><title type='text'>Oversim - Key Overlay Functions</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;b&gt;Constructor&lt;/b&gt;&lt;br /&gt;Can be use to set message to NULL.Better not to skip defining the constructor.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Destructor&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Clear/delete messages in destructor using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cancelAndDelete()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: verdana;"&gt;. New version seems to be motivating to use a destructor  so &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;;"&gt;better not to skip.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void initializeOverlay(int  stage)&lt;/b&gt;&lt;/div&gt;Can be used to initialize the overlay node, read  parameter values, set key, set statistic collectors, start timers, etc.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;stage&lt;/span&gt; -&amp;nbsp; can be either &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MIN_STAGE_APP&lt;/span&gt;  (this module is  being created) or &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MAX_STAGE_APP&lt;/span&gt; (all  modules were  created). We typically need &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MIN_STAGE_APP to i&lt;/span&gt;nitialize application functions &amp;amp; variables.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;void finishOverlay()&lt;/b&gt;&lt;br /&gt;Called when module is terminating. Can be used to summarize stat. New OverSim version seems to be motivating us to delete messages in the destructor.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void joinOverlay()&lt;/b&gt;&lt;br /&gt;Define what to do when a node is added to system. Can be used to establish connections with successor/predecessor &amp;amp; identify fingers in Chord. Also indicate to the simulator that overlay is now ready.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NodeVector* findNode(const OverlayKey&amp;amp; key, int numRedundantNodes, int numSiblings)&lt;/b&gt;&lt;br /&gt;Is called by message forwarding function to determine potential next hops, e.g., finger node selection in Chord can go here. If asking node is a sibling (i.e., root) for the key, it will reply with list of siblings order according their closeness to the key.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;key - key to be located&lt;/li&gt;&lt;li&gt;numRedundantNodes -&amp;nbsp; Maximum number of next hop nodes to return&lt;/li&gt;&lt;li&gt;numSibling - number of siblings (potential nodes that could store the key) to return&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;bool isSiblingFor(const NodeHandle&amp;amp; node, const OverlayKey&amp;amp; key, int numSiblings, bool* err)&lt;/b&gt;&lt;br /&gt;Am I the root, i.e.., node responsible for storing the given key?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;node&lt;/span&gt; - Nodehandler of the node method is suppose to be called&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;key&lt;/span&gt; - key to be located&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;numSibling&lt;/span&gt; - number of siblings (potential nodes that could store key) being requested&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;err&lt;/span&gt; - return false if the range could not be  determined&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;int getMaxNumSiblings()&lt;/b&gt;&lt;br /&gt;Get the maximum number of siblings (nodes close to a key) that are maintained by this overlay&lt;i&gt;.&lt;/i&gt; Used by &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;isSiblingFor()&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-1016745602892805411?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/1016745602892805411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=1016745602892805411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1016745602892805411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1016745602892805411'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/06/oversim-key-overlay-functions.html' title='Oversim - Key Overlay Functions'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-6804153979716769876</id><published>2010-05-18T14:48:00.006-06:00</published><updated>2010-06-23T17:40:44.439-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OverSim'/><title type='text'>4. DHTTestApp &amp; DHT</title><content type='html'>DHTTestAPP &amp;amp; DHT work together where DHTTestAPP utilizes the DHT to store &amp;amp; retrieve &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(key, value)&lt;/span&gt; pairs. DHT utilize the underlying overlay to route queries.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DHTTestAPP&lt;/b&gt;&lt;br /&gt;Is a Tier2 application that periodically issue DHT put, get, &amp;amp; modify queries. The implementation consist of 2 modules:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;GlobalDhtTestMap - Provides a data structure &amp;amp; functions to maintain a global list of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(key, value)&lt;/span&gt; pairs. Random keys are taken from this list to issue DHT get &amp;amp; modify queries.&lt;/li&gt;&lt;li&gt;DHTTestApp - Issues DHT put, get, &amp;amp; modify queries after some delay derived from a truncnormal distribution.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Put messages - Use to add a random &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(key, value)&lt;/span&gt; pair into the DHT. A put message (represented as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DHTputCAPICall&lt;/span&gt;) consists of a random key, random value, expiration time (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ttl&lt;/span&gt;), &amp;amp; whether &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(key, value)&lt;/span&gt; pair can be modified. Then the message is send to the Tier1 application using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sendInternalRpcCall()&lt;/span&gt;  method, which will store &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(key,  value)&lt;/span&gt; pair in the DHT. When a successful response is received &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(key,  value)&lt;/span&gt; pair is added to the GlobalDhtTestMap.&lt;/li&gt;&lt;li&gt;Get messages - Pick a random key from the GlobalDhtTestMap &amp;amp; then issue a DHT get query to the Tier1 application using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DHTgetCAPICall()&lt;/span&gt; method. Tier1 application sends the appropriate value if it exists. If the key's validity has expired delete it from GlobalDhtTestMap otherwise consider get query as success.&lt;/li&gt;&lt;li&gt;Modify messages - Pick a random key from the GlobalDhtTestMap &amp;amp; then issue a DHT put query to the  Tier1 application. DHT entries are modified using a put message that will place an updated version of the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(key, value)&lt;/span&gt; pair into DHT.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;DHT&lt;/b&gt; &lt;br /&gt;Maintain the DHT with the support of the underlying overlay. The implementation consist of 2 modules:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;DHTDataStorage - Provides a data structure &amp;amp; functions to maintain DHT storage of a node. &lt;/li&gt;&lt;li&gt;DHT - Capable of storing &amp;amp; retrieving multiple &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(key, value)&lt;/span&gt;  pairs (e.g., same file in multiple peers) given that they have distinct kinds or IDs. Each entry has an expiration time &amp;amp; removed from the DHT when it expires.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sendInternalRPCCall() &lt;/span&gt;is used to communication between DHTTestApp&amp;nbsp; &amp;amp; DHT using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DHTputCAPICall&lt;/span&gt; &amp;amp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DHTgetCAPICall&lt;/span&gt; messages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-6804153979716769876?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/6804153979716769876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=6804153979716769876' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6804153979716769876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6804153979716769876'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/05/4-dhttestapp-dht.html' title='4. DHTTestApp &amp; DHT'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-1112617532148624021</id><published>2010-05-17T18:03:00.004-06:00</published><updated>2010-06-23T23:49:55.373-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OverSim'/><title type='text'>3. KBRTestApp</title><content type='html'>After developing your own application &amp;amp; overlay next you should play with the KBRTestApp. KBRTestApp is a Tier1 application that tests 3 operations:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;OneWayTest - Route an overlay message to a random key &amp;amp; measure one-way hop count &amp;amp; latency. When a message reaches the destination, receiver call a method in the sender to collect statistics (not over the network). A sequence number is attached to a message to prevent collecting statistics of duplicate ones. Intermediate nodes append their addresses to a message while it's being forwarded.&lt;/li&gt;&lt;li&gt;RPCTest - Send RPC call to a random key, wait for response, &amp;amp; then measure one-way hop count &amp;amp; latency. RPC context is used to keep track of destination &amp;amp; whether a message should be considered for statistics.&lt;/li&gt;&lt;li&gt;LookUpTest - Lookup a random key using RPC call &amp;amp; collect latency when response is received. Sends as an internal RPC (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sendInternalRpcCall&lt;/span&gt;) between two tiers (from application to overlay) using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;LookupCall&lt;/span&gt; messages.Context is used to carry additional data.&lt;/li&gt;&lt;/ol&gt;One or more tests can be selected by configuring the omnet.ini file. For each test application keeps track of number of messages send, received,  &amp;amp; lost. You can also configure either to lookup any random key (within a bound) or  only the existing ones. It's possible to issue messages while the network is in  init phase. Each message is issued after a delay derived from a truncnormal distribution with a given mean &amp;amp; std.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Next Step&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Extend KBRTest to  provide more functionality such as: &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Modify your &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MyOverlay&lt;/span&gt; &amp;amp; use it as the overlay for KBRTestApp.&lt;/li&gt;&lt;li&gt;Track hop count for messages &amp;amp; verify different routing types in  OverSim&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-1112617532148624021?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/1112617532148624021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=1112617532148624021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1112617532148624021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1112617532148624021'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/05/30-kbrtestapp.html' title='3. KBRTestApp'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-1484208368215286976</id><published>2010-05-17T13:58:00.005-06:00</published><updated>2010-08-18T13:23:01.376-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OverSim'/><title type='text'>Key Application Layer Functions</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Constructor&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;Can be use to set message to NULL&lt;span style="font-family: &amp;quot;;"&gt;. Better not to skip defining the constructor.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Destructor&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;Can be use to clear/delete messages using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cancelAndDelete()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: verdana;"&gt;. New version seems to be motivating to use a destructor so &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;;"&gt;better not to skip.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;void initializeApp(int stage)&lt;/b&gt;&lt;/div&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;;"&gt;&lt;/span&gt;&lt;br /&gt;Can be used to initialize the application, read  parameters from omnet.ini file, set statistic collectors, GUI display variables, start timers, set UDP port, etc.&lt;span style="font-family: &amp;quot;;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;;"&gt;stage&lt;/span&gt; - Indicate which stage your are in. &lt;span style="font-family: &amp;quot;;"&gt;MIN_STAGE_APP&lt;/span&gt; indicates this module is being created while &lt;span style="font-family: &amp;quot;;"&gt;MAX_STAGE_APP&lt;/span&gt; indicates all modules were created. We typically need &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MIN_STAGE_APP  to i&lt;/span&gt;nitialize application &amp;amp; variables.  &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;void finishApp()&lt;/b&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;span style="font-family: inherit;"&gt;Called when application is terminating. &lt;/span&gt;&lt;/span&gt;Can be used to summarize stat. New version seems to be motivating us to delete messages in  the destructor.&lt;br /&gt;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;void handleTimerEvent(cMessage* msg)&lt;/b&gt;&lt;/div&gt;Handle event timer. Use to generate new periodic messages, other events, or check for lost messages. Better not to generate messages until underlay is initialized (unless you need this specific behavior)&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void deliver(OverlayKey&amp;amp; key, cMessage* msg)&lt;/b&gt;&lt;br /&gt;Handle messages delivered from overlay. Called only at the node that is believed to be the application responsible for the key.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;key&lt;/span&gt; - Destination key&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg&lt;/span&gt; -&amp;nbsp; Dynamically cast &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg&lt;/span&gt; before using because message type is &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cPacket&lt;/span&gt;. Delete &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg&lt;/span&gt; if no longer needed. Latency can be determined from msg-&amp;gt;getCreationTime(). Use control data (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg-&amp;gt;removeControlInfo()&lt;/span&gt;) to extract hop  count using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;getHopCount()&lt;/span&gt; method.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul style="text-align: left;"&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;void  forward(OverlayKey* key, cPacket** msg, NodeHandle* nextHopNode)&amp;nbsp;&lt;/b&gt;&lt;/div&gt;Handle messages from overlay to be forwarded. Call in each intermediate node along the path. Can skip this if you  don't need to do anything. Useful for appending list of visited nodes or to look up local cache. Also useful while implementing malicious nodes that drop messages.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;key&lt;/span&gt; -  Destination key&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;nextHopNode&lt;/span&gt; - Node to be used as the next hop&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;void handleUDPMessage(cMessage* msg)&lt;/b&gt;&lt;br /&gt;Handle messages delivered directly through UDP.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg&lt;/span&gt; - Dynamically cast &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg&lt;/span&gt; before using because message  type is &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cPacket&lt;/span&gt;. Delete &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg&lt;/span&gt; if no longer needed.&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;bool handleRpcCall(BaseCallMessage* msg)&lt;/b&gt;&lt;/div&gt;Handle RPC call message from another node or upper layer. Use many predefined functions to easily handle the message.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Return true if RPC is handled &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;void handleRpcResponse(BaseResponseMessage*  msg, cPolymorphic* context, int rpcId, simtime_t rtt)&lt;/b&gt;&lt;/div&gt;Handle  RPC response from callee. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;  - &lt;/span&gt;Use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg-&amp;gt;getCallHopCount()&lt;/span&gt;to determine number of hops that call message took. Use control data (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg-&amp;gt;removeControlInfo()&lt;/span&gt; or &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg-&amp;gt;getControlInfo()&lt;/span&gt;) to extract response message's hop  count using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;getCallHopCount()&lt;/span&gt; method. To determine latency &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;context-&amp;gt;requestTime()&lt;/span&gt; can be used.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;context&lt;/span&gt; - Pointer to an optional state object.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;rpcId&lt;/span&gt; - RPC identifier.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;rtt&lt;/span&gt; - Round trip time for RPC call &amp;amp; corresponding response. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul style="text-align: left;"&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;void handleRpcTimeout(BaseCallMessage* msg, const TransportAddress&amp;amp; dest, cPolymorphic* context, int rpcId, const OverlayKey&amp;amp; destKey)&lt;/b&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;Handle RPC timeout event. Can be used to retry by generating new call or indicate failure. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dest&lt;/span&gt; - Destination node&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;context&lt;/span&gt; - Pointer to  an optional state object.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;rpcId&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; - &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; RPC identifier.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;destKey&lt;/span&gt; - Destination key&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;void BaseApp::handleNodeLeaveNotification()&lt;/b&gt;&lt;br /&gt;This method gets call when node waits some time before leaving (kill) the network. Delay in Seconds is set using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;**.gracefulLeaveDelay&lt;/span&gt;. Can be use to call any node clean up call &amp;amp; advice node not to issue any more messages. &lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-1484208368215286976?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/1484208368215286976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=1484208368215286976' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1484208368215286976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1484208368215286976'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/04/oversim-tier1-app-layer-functions-that.html' title='Key Application Layer Functions'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-1377315684312274816</id><published>2010-05-12T18:08:00.029-06:00</published><updated>2011-01-16T16:30:10.103-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OverSim'/><title type='text'>OverSim - Best/Necessary Practices</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;b&gt;General&lt;/b&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Declare each module in a separate file&lt;/li&gt;&lt;li&gt;Wrap simple modules through compound modules, even if there is only 1 simple module. This is where you connect in/out gates. Use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IOverlay&lt;/span&gt; or &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ITier&lt;/span&gt; interfaces&lt;/li&gt;&lt;li&gt;Use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;@class()&lt;/span&gt; property to tell compiler to use our own C++ definition of a simple module&lt;/li&gt;&lt;li&gt;Use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Define_Module()&lt;/span&gt;  method to add a module definition class to simulation&lt;/li&gt;&lt;li&gt;Better not to do anything until underlay is properly initialized. Overlay may be in the initialization phase&amp;nbsp; if you want to measure bootstrap phase. Can check using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;underlayConfigurator-&amp;gt;isInInitPhase() &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Applications&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Suppose our application name is &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;myapp&lt;/span&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;All applications must be stored in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/src/applications/&lt;/span&gt; within OverSim directory, e.g., &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/src/applications/myapp/&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Package name should be &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;oversim.applications.myapp&lt;/span&gt;  &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Each application must be extended from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BaseApp&lt;/span&gt;  class (.ned files &amp;amp; C++ classes)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;This will add default in/out gates &amp;amp; parameters to the module &amp;amp;, also C++generic methods such as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;initializeApp()&lt;/span&gt; or &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;deliver()&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Use the interfaces defined in ITier using keyword &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;like&lt;span style="font-family: inherit;"&gt;, e.g.,&lt;/span&gt; module myapp like ITier&lt;/span&gt;&lt;/li&gt;&lt;li&gt; Bind to a UDP port, if application is suppose to receive messages directly, use&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;  bindToPort()&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Port numbers between 1024-1034 are reserved&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&amp;nbsp;Implement required methods defined in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BaseApp&lt;/span&gt;. In minimum, following methods need to be implemented (&lt;a href="http://dilumb.blogspot.com/2010/04/oversim-tier1-app-layer-functions-that.html"&gt;click here for details&lt;/a&gt;):&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;initializeApp(int stage)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;finishApp()&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;handleTimerEvent(cMessage* msg)&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;deliver(OverlayKey&amp;amp; key, cMessage* msg)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li style="font-family: inherit;"&gt;If you want to use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;forward()&lt;/span&gt; method, e.g., to do caching, you need to use semi-recursive or recursive routing. I figiured out RPC calls don't call &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;forward()&lt;/span&gt; in intermediate nodes. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;forward( )&lt;/span&gt; will be called in source &amp;amp; destination node for all routing schemes&lt;/li&gt;&lt;li style="font-family: inherit;"&gt;Remove TTL timers for DHT entries, if you don't need keys to expire. There will be a seperate time for each key stored in the DHT thus consume lots of memory&lt;/li&gt;&lt;li style="font-family: inherit;"&gt;Use lookup messages only if you need to put multiple replicas. Otherwise, they just add unnecessary overhead&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Overlays&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Suppose our application name is &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;myoverlay&lt;/span&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;All overlays must be stored in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/src/overlay/&lt;/span&gt;  inside OverSim directory, e.g., /src/overlay/myoverlay/&lt;/li&gt;&lt;li&gt;Package name should be &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;oversim.overlay.myoverlay  &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Each application must be extended from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BaseOverlay&lt;/span&gt;  class (.ned files &amp;amp; C++ classes)&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;This will add default in/out gates &amp;amp; parameters to the module &amp;amp;, also C++ generic methods such as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;initializeOverlay()&lt;/span&gt; or &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;joinOverlay()&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Use the interfaces defined in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IOverlay&lt;/span&gt; using keyword &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;like&lt;/span&gt;&lt;/li&gt;&lt;li&gt; Bind to a UDP port if overlay is suppose to receive messages  directly, use&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; bindToPort()&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Port numbers between 1024-1034 are automatically used by overlay&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Implement required methods defined in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BaseOverlay&lt;/span&gt;. In minimum, following methods need to be implemented:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;initializeOverlay(int stage)&lt;/span&gt; -  Can be used to initialize the overlay node, read parameter values, set key, set statistic collectors, start timers, etc. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;stage&lt;/span&gt; can be either &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MIN_STAGE_APP&lt;/span&gt;  (this module is being created) or &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MAX_STAGE_APP&lt;/span&gt; (all  modules were created)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;finishOverlay()&lt;/span&gt; - Called when module is  terminating. Can be used to summarize stat, delete remaining  messages/timers, etc. New OverSim version seems to be motivating us to delete messages in the  destructor&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;joinOverlay()&lt;/span&gt; - Define what to do when a node is added to the system. Can be used to establish connections with successor/predecessor &amp;amp; identify fingers. Also indicate the simulator that overlay is now ready&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;NodeVector* findNode(const OverlayKey&amp;amp; key, int numRedundantNodes, int numSiblings)&lt;/span&gt; - Is called by message forwarding function to determine potential next hops, e.g., finger node selection in Chord can go here.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;bool isSiblingFor(const NodeHandle&amp;amp; node, const OverlayKey&amp;amp; key, int numSiblings, bool* err)&lt;/span&gt; - Am I the root, i.e.., node responsible for storing &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;key&lt;/span&gt;?&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int getMaxNumSiblings()&lt;/span&gt; - Maximum number of siblings (potential next hops) to be queried&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int getMaxNumRedundantNodes()&lt;/span&gt;  - Maximum number of redundant nodes (which store the same key) to be queried&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Make sure overlay is in correct state before issuing messages, e.g., it is not sufficient for Chord to be just initialized, it should be in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;READY&lt;/span&gt; state. Otherwise your calls to overlay will timeout. State can be checked using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;overlay-&amp;gt;getState()&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;b&gt;Messages&lt;/b&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;RPC messages are preferred over overlay &amp;amp; UDP messages because they are efficient &amp;amp; OverSim provides lot more functionality to easily dealt with them&lt;/li&gt;&lt;li&gt;Should be defined in the layer (Tier 1, overlay, etc.) that the message is being used by&lt;/li&gt;&lt;li&gt;File name ends with &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.msg&lt;/span&gt;&lt;/li&gt;&lt;li&gt;When you compile your application or overlay, message files will be automatically complied to generate appropriate classes&lt;/li&gt;&lt;li&gt;Use keyword &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;noncobject&lt;/span&gt; to indicate it's not a message class&lt;/li&gt;&lt;li&gt;Set messages length if statistics need to be collected. Without message length, latency don't make sense&amp;nbsp;&lt;/li&gt;&lt;li&gt;Make sure to delete messages that are no longer need (delete only once!)&lt;/li&gt;&lt;li&gt;The name of a RPC call message should end with the word &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Call&lt;/span&gt; while the name of a response message should end with the word &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Response&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Call messages are inhereted from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BaseCallMessage&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Response messages are inherited from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BaseResponseMessage&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sendInternalRPCCall()&lt;/span&gt; to communicate between layers in the same peer.&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DHTputCAPICall&lt;/span&gt;  &amp;amp; DHTgetCAPICall messages to communicate between tier2 &amp;amp; application&amp;nbsp;&lt;/li&gt;&lt;li&gt;Use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;LookupCall&lt;/span&gt; messages to communicate between application &amp;amp; overlay &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;Keys&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li style="text-align: justify;"&gt;Derive keys from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;OverlayKey&lt;/span&gt; class&lt;/li&gt;&lt;li style="text-align: justify;"&gt;When comparing keys it's more reliable to use a method like &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;isBetween( )&lt;/span&gt; rather than&amp;nbsp; comparators such as &amp;gt;, &amp;gt;=, &amp;lt;, and &amp;lt;=. Otherwise, it could lead to errors that are not abvious, e.g., 15 &amp;gt; 2 is not always true if address space circular and address range is [0-15].&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Overlay key can be accessed from upper layers using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;overlay-&amp;gt;getThisNode().getKey()&lt;/span&gt; function. &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/30550906-1377315684312274816?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://dilumb.blogspot.com/2010/04/oversim-tier1-app-layer-functions-that.html' title='OverSim - Best/Necessary Practices'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/1377315684312274816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=1377315684312274816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1377315684312274816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1377315684312274816'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/05/oversim-bestnecessary-practices.html' title='OverSim - Best/Necessary Practices'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-5005339660302183953</id><published>2010-05-12T15:41:00.087-06:00</published><updated>2010-05-17T13:36:20.743-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OverSim'/><title type='text'>2. OverSim - First Application &amp; Overlay</title><content type='html'>&lt;div style="text-align: justify;"&gt;OverSim has many sample applications &amp;amp; overlays that you can look at &amp;amp; understand. But, it's always better to build your own ones so you would understand things better. &lt;a href="http://www.oversim.org/wiki/OverSimDevelop"&gt;OverSimDevelop&lt;/a&gt; provides the steps necessary to build your first application &amp;amp; overlay. My objectives it to provide few additional details that would complete the picture.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;b&gt;Synopsis&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A node generates a ping messages &amp;amp; sends it to a randomly selected node. When the destination node gets the ping message, it replies with a pong message. As this process continuous messages are probabilistically dropped &amp;amp; statistics are collected.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Overview&lt;/b&gt; &lt;br /&gt;MyApplication randomly selects set of overlay nodes then send a ping message to each of them using the MyOverlay. Each overlay node maintains 2 pointers, one to the successor &amp;amp; another to the predecessor node. Ping messages are forwarded clockwise or anticlockwise based on these 2 pointers, e.g., message from node 8 to 2 (in a network with 10 nodes) will follow the path 8 → 7 → 6 → 5 → 4 → 3 → 2 (it will not take the path 8 → 9 → 0 → 1 → 2). The destination node directly (using an UDP connection) replies back to the sender, when it receives the ping message. After receiving its own ping, source node records statistics &amp;amp; then drop the ping message. If desired, ping messages can be dropped while they are being forwarded.&lt;br /&gt;The application is dependent on SimpleUnderlayNetwork and default routing (i.e., iterative routing) as defined in default.ini file. Later, RPC messages are used to discover set of neighbors of a given node.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MyApplication&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Periodically selects a random set of nodes then sends a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ping&lt;/span&gt; message to a each of those nodes&lt;/li&gt;&lt;ul&gt;&lt;li&gt;A message contains a type (i.e., &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ping&lt;/span&gt;) &amp;amp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;senderAddress&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;When a message reaches the destination, the receiving node changes the message type to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pong&lt;/span&gt; &amp;amp; send directly to the sender based on the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;senderAddress&lt;/span&gt; indicated in the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ping&lt;/span&gt; message.&lt;/li&gt;&lt;li&gt; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ping&lt;/span&gt; messages are delivered through overlay while &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pong&lt;/span&gt; messages are delivered directly through a UDP connection.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In the underlay level, even the overlay messages are delivered as UDP messages.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Application binds to a UDP port because it receives UDP messages&lt;/li&gt;&lt;li&gt;When a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pong&lt;/span&gt; message is received, the sender update message counter then delete the message&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&lt;b&gt;MyOverlay&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Join the overlay &amp;amp; establish a pointer to successor &amp;amp; predecessor &lt;/li&gt;&lt;li&gt;Forward messages&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Determine a potential next hop node based on overlay routing scheme, which is either through successor or predecessor&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Drop messages based on a given probability. Don't tell a next hop in the forward() method ,if message is being dropped&lt;/li&gt;&lt;li&gt;Node's IP address is derived from its key &amp;amp; has the format &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1.0.0.key&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Count the number of dropped messages&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Message delivery latency is calculated based on the distance between the 2 nodes on a 2D plane &amp;amp; packet size&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Messages&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Has a message type, 1 for ping &amp;amp; 2 for pong&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Include the address of the sender so that &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pong&lt;/span&gt; message can be send directly using UDP&lt;/li&gt;&lt;li&gt; RPC messages are used to request set of neighbors of a node &amp;amp; to reply with list of neighbors&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Next Step&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Extend MyOverlay &amp;amp; MyApplication to provide more functionality such as: &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Modify &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;joinOverlay&lt;/span&gt; &amp;amp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;findNode&lt;/span&gt; methods to support a circular address space &amp;amp; bidirectional routing&lt;/li&gt;&lt;li&gt;Track hop count for messages &amp;amp; verify different routing types in OverSim&lt;/li&gt;&lt;li&gt;Keep points to nodes that are faraway (2 or 4-hops) then observe reduction in hop count&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Then you can play with the KBRTestApp.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-5005339660302183953?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/5005339660302183953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=5005339660302183953' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5005339660302183953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5005339660302183953'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/05/oversim-first-application-overlay.html' title='2. OverSim - First Application &amp; Overlay'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-4891779542047317037</id><published>2010-04-18T18:11:00.003-06:00</published><updated>2010-05-17T14:49:38.914-06:00</updated><title type='text'>iPad Show Password Characters</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif; text-align: justify;"&gt;I had the chance to play with a iPad while I was in BestBuy today. As there is no office suite, I wanted to see whether I could run Google Docs. While I was entering password, it tends to show each character that I was entering before displaying *. For example, When I type 'abc' it first showed 'a' then '*', '*b' then '**', '**c' then change to '***'. Anyway, I couldn't login as my complex password was too much for iPad. Overall, I felt Safari was bit slow on it.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;I love the concept &amp;amp; how it feels. But, the ideal hand held computer that I want is still in design. I can wait couple of more years.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-4891779542047317037?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/4891779542047317037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=4891779542047317037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4891779542047317037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4891779542047317037'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/04/ipad-show-password-characters.html' title='iPad Show Password Characters'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-8957223721802010824</id><published>2010-04-17T12:31:00.008-06:00</published><updated>2010-05-17T06:18:30.656-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OverSim'/><title type='text'>1. Building P2P Simulators with OverSim - Where to Begin</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;This could be a series of blog posts about extending or developing your own OverSim applications &amp;amp; overlay networks.  OverSim has a minimal tutorial on writing your own application &amp;amp;  overlay network; however, it doesn't show the big picture. So, I'm wasting lots of time playing with  code &amp;amp;  trying to understand the rest. Good thing is, I like it more  &amp;amp; more as I understand. You need to change/develop only a few things,  but finding out which ones is a hell of a task. I hope this will not  only make my life easy but also will be useful to new comers. Here's what you need to do:&lt;/span&gt;&lt;/div&gt;&lt;ol style="font-family: Verdana,sans-serif; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;You need some background on &lt;a href="http://www.omnetpp.org/"&gt;OMNeT++&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt; OverSim extend OMNeT++. But sometime it has its  own way of doing things (to make your task  even simple) so&lt;/span&gt;&lt;span style="font-size: small;"&gt; understand the differences&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Develop several  OMNeT++ simulators. &lt;a href="http://www.omnetpp.org/doc/omnetpp40/tictoc-tutorial/"&gt;TicToc&lt;/a&gt; is a good one to start with. Extend it as you imagine.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Read &lt;a href="http://pdos.csail.mit.edu/papers/iptps:apis/main.pdf"&gt;Towards a Common API for Structured Peer-to-Peer Overlays&lt;/a&gt;, which is the basis for OvseSim's API. Here's a summary of the paper:&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Motivate multi-tier application design &amp;amp; define role of layers. OvseSim's overlay layer belongs to Tier 0 while its Application layer captures Tier 1 &amp;amp; 2&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;A &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;key&lt;/span&gt; is 160-bits long.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;root &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;is the node that is responsible for storing a given key &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;nodeHandler&lt;/span&gt; encapsulates an overlay node with an ID (within the same key space), IP address, &amp;amp; optionally a port no.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;msg&lt;/span&gt; (a message) contains application data which could be of arbitrary length &amp;amp; format.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;route(key k, msg m, nodeHandler hint)&lt;/span&gt; - Route message &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;m&lt;/span&gt; to root of key &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;k&lt;/span&gt;. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hint&lt;/span&gt; (optional) could be use to indicate first hop node in routing. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hint&lt;/span&gt; is useful when sending messages directly to the destination (given that you already know it).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;forward(key k, msg m, nodeHandle nextHop)&lt;/span&gt; - An up-call to application layer that provides flexibility while routing. Can be call in each intermediate &amp;amp; the destination nodes. Useful while implementing key caching, where application could check &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;m&lt;/span&gt; to see whether it already know the destination &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;k&lt;/span&gt;. If so, it can directly reply to sender &amp;amp; stop the propagation of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;m&lt;/span&gt; by setting &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;nextHop=&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;NULL&lt;/span&gt;. Also useful while implementing malicious nodes that drop messages.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;deliver(key k, msg m)&lt;/span&gt; - Up-call to application layer of the node that is the root of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;k&lt;/span&gt;. Called when &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;m&lt;/span&gt; is delivered to destination&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;localLookup(key k, int n)&lt;/span&gt; - A local-call to overlay to find out list of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;n&lt;/span&gt; nodes that can be used as candidates to reach key &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;k&lt;/span&gt;. Useful in protocols like Kademlia.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;neighborSet(int n)&lt;/span&gt; - A local-call to find out list of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;n&lt;/span&gt; neighboring nodes in the key space.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;replicaSet(key k)&lt;span style="font-family: Verdana,sans-serif;"&gt; - Return an ordered set of nodeHandlers on which replicas of object with key &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;k&lt;/span&gt; can be stored. Useful while replicating objects. Also useful as nodes join/leave.&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;update(nodeHandler n, bool join)&lt;/span&gt; - An up-call to indicate application layer that node &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;n&lt;/span&gt; has join/leave the overlay. Useful when aggregating/splitting key ranges as nodes leave/join. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;range(nodeHandler n)&lt;/span&gt; - Get the range of keys that node &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;n&lt;/span&gt; is responsible for. Useful in &lt;/span&gt;&lt;span style="font-size: small;"&gt;aggregating/splitting key ranges as nodes leave/join. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Read OverSim documentation. Be aware, it may not be up to date.&lt;/span&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.oversim.org/wiki/OverSimInstall"&gt;OverSimInstall&lt;/a&gt; - How to install OMNeT++, INET, &amp;amp; OverSim.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.oversim.org/wiki/OverSimUsage"&gt;OverSimUsage&lt;/a&gt; - How to simulate existing examples &amp;amp; plot data.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.oversim.org/wiki/OverSimDevelop"&gt;OverSimDevelop&lt;/a&gt; - How to add a new application &amp;amp; overlay protocol&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.oversim.org/chrome/site/doc/index.html"&gt;OverSimAPI&lt;/a&gt; - Module &amp;amp; API documentation, can't live without this. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Write your own code, extend existing code as you imagine. You are guaranteed to spend days here before building your real simulator.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Optional&lt;/span&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://doc.tm.uka.de/2007/OverSim_2007.pdf"&gt;OverSim: A Flexible Overlay Network Simulation Framework &lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.oversim.org/wiki/OverSimChurn"&gt;OverSimChurn&lt;/a&gt; - How to use different churn generators.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.oversim.org/wiki/OverSimKbrRouting"&gt;OverSimKbrRouting&lt;/a&gt; - Description of different KBR routing types&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-8957223721802010824?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/8957223721802010824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=8957223721802010824' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/8957223721802010824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/8957223721802010824'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/04/building-your-own-p2p-simulator-with.html' title='1. Building P2P Simulators with OverSim - Where to Begin'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-2314537796743602115</id><published>2010-02-26T09:21:00.001-07:00</published><updated>2010-03-04T22:24:24.896-07:00</updated><title type='text'>Why writing is harder than public speaking...</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Writing is harder than public speaking because you only have limited set of words to tell you entire story. So it makes sense to say, “A true genius can be identified by his/her writing”...&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Thus, I better be a good writer and a story teller if I want to go where I want to go...&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-2314537796743602115?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/2314537796743602115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=2314537796743602115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2314537796743602115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2314537796743602115'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/02/why-writing-is-hard-than-public.html' title='Why writing is harder than public speaking...'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-4030967230752077141</id><published>2010-02-21T10:40:00.002-07:00</published><updated>2010-02-21T10:41:25.820-07:00</updated><title type='text'>When a flaw appears in a theory, only then does science advance...</title><content type='html'>&lt;div  style="font-family:Verdana,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;"The eminence of a great scientist, is measured by the length of time that they obstruct progress in their field!" by Ven. Ajahn Brahmavamso. When a flaw appears in a theory, only then does science advance. &lt;/span&gt;&lt;/div&gt;&lt;div  style="font-family:Verdana,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://sundaytimes.lk/090503/Plus/sundaytimesplus_13.html" style="font-family: Verdana,sans-serif;"&gt;Read more&lt;/a&gt;&lt;span style="font-family:Verdana,sans-serif;"&gt; on to see why we many not be doing a good job as scientists.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-4030967230752077141?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sundaytimes.lk/090503/Plus/sundaytimesplus_13.html' title='When a flaw appears in a theory, only then does science advance...'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/4030967230752077141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=4030967230752077141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4030967230752077141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4030967230752077141'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2010/02/when-flaw-appears-in-theory-only-then.html' title='When a flaw appears in a theory, only then does science advance...'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-4561788496072641531</id><published>2009-12-11T16:51:00.011-07:00</published><updated>2009-12-16T17:40:10.114-07:00</updated><title type='text'>Seminar on Interviewing Skills for Grad Students</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fN_YO0_-XJk/Syl9cSniwBI/AAAAAAAAGr0/GBqvjqJdIJ8/s1600-h/all.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 150px;" src="http://3.bp.blogspot.com/_fN_YO0_-XJk/Syl9cSniwBI/AAAAAAAAGr0/GBqvjqJdIJ8/s400/all.jpg" alt="" id="BLOGGER_PHOTO_ID_5415997951877234706" border="0" /&gt;&lt;/a&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Last Monday I had the privilege of organizing and hosting a seminar on "Interviewing Skills for Grad Students." It was a huge success and some students were even standing. We had 5 exceptional presenters from industry and &lt;/span&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;academia&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;. Seminar covered basic interviewing skills, behavioral interviewing process, success factors in interviewing and carrier, differences in start-ups and R&amp;amp;D teams, interviewing process in academia for faculty/PostDoc positions, etc. Based on the follow-up server, it seems that students benefited a lot from being able to talk and share experiences of the presenters. &lt;br /&gt;Students from UMASS also joined the seminar over videoconferencing. All together we had ~40 students from both campuses. The seminar was sponsored by CASA Student Leadership Council (SLC). UMASS is a main partner of the &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.casa.umass.edu/"&gt;CASA&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;project. Generous support from all presenters, SLC leadership, and members was immensely helpful in making this event such a success.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-4561788496072641531?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/4561788496072641531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=4561788496072641531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4561788496072641531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4561788496072641531'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/12/seminar-on-interviewing-skills-for-grad.html' title='Seminar on Interviewing Skills for Grad Students'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_fN_YO0_-XJk/Syl9cSniwBI/AAAAAAAAGr0/GBqvjqJdIJ8/s72-c/all.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-2626829818326479043</id><published>2009-11-09T12:33:00.009-07:00</published><updated>2010-01-04T12:50:52.931-07:00</updated><title type='text'>Slowness, Unreliability, and Errors are Pervasive to Facebook</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Verdana,sans-serif;"&gt;Facebook (FB) is already part of life for millions of individuals across the globe. It's already among the Internet giants like Google, Yahoo, YouTube, Amazon, &amp;amp; e-Bay. It has evolved as both a social interaction tool &amp;amp; a real-time communication tool (many Yahoo &amp;amp; MSN messenger users have switched to FB because of the chat feature). Unfortunately, most users will agree that FB is nowhere close the standards set by Google, YouTube, &amp;amp; Amazon when it comes to responsiveness, reliability, &amp;amp; availability. Personally, I have experienced extremely slow page loading, many error messages, not allowing me to login or post messages, and show only subset of postings by others. Hence, I don’t depend on FB to contact others &amp;amp; have a low appreciation as a useful service.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Verdana,sans-serif;"&gt;FB seems to be relying on extensive JavaScript &amp;amp; extended variants of MySQL, PHP, &amp;amp; Memcached. It's understandable that FB has to handle so much data, users, &amp;amp; their relationships. Unfortunately, heir underlying architecture seems to be not scalable. MySQL &amp;amp; PHP may be extended only to a certain extent. May be FB needs to look into completely new approaches like what Google (MapReduce, GFS) &amp;amp; Amazon (Dynamo) have done. Alternatively, many poorly written 3rd partly applications are breaking FB than making it. I don't have a solution for these problems, but I feel this is a good opportunity for research in handling large-scale data objects in a multi-user interaction based distributed environment.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-2626829818326479043?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/2626829818326479043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=2626829818326479043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2626829818326479043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2626829818326479043'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/11/slow-unrealiable-and-errors-are.html' title='Slowness, Unreliability, and Errors are Pervasive to Facebook'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-1483621395716298279</id><published>2009-10-31T21:58:00.008-06:00</published><updated>2009-10-31T22:33:53.010-06:00</updated><title type='text'>Get Motivated by Tamara Lowe</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;After many years, I finally finished reading a nontechnical book.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Its "Get Motivated" by Tamara Lowe. Book is good &amp;amp; worth reading. According to her, motivation is based Drive, Needs, and Awards (what she called DNA). People have either Production or Connection drive, Stability or Variety needs, &amp;amp; Internal or External awards systems.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I think, I equally share all categories in DNA though the questionnaire in book categorized me into one of them. First few chapters were interesting &amp;amp; highly motivating but the middle was not. Nevertheless, as she said &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;in the last chapter &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;"Finish First, Finish Well" the book ended really well.&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;To be honest, I feel renewed and motivated than in the recent past.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-1483621395716298279?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.getmotivatedbook.com/' title='Get Motivated by Tamara Lowe'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/1483621395716298279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=1483621395716298279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1483621395716298279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1483621395716298279'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/10/get-motivated-by-tamara-lowe.html' title='Get Motivated by Tamara Lowe'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-8599023809207368056</id><published>2009-07-24T11:53:00.008-06:00</published><updated>2009-07-24T13:01:52.758-06:00</updated><title type='text'>Why model Packet Arrivals as a Poisson Process?</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;In queuing theory-based analysis, we always assume arrivals to be according to a Poisson process. "Why we do so, why not it's uniform or some other distribution?" This was a question raised by my supervisor &amp;amp; a colleague while I was preparing for my Qualifying Exam. As I was not able to answer well, my supervisor gave some hints. I was worried that the same question may come up during the exam so searched for an  answer on web. Unfortunately, no specific answer was found. So I'm trying to lay down an answer by adding bits &amp;amp; pieces from here &amp;amp; there &amp;amp; my supervisor's answer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It can be answered by looking at the properties of a Poisson Process. Recall that Poisson Processes are used to model statistically rare events.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;A counting process {&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;N&lt;/span&gt;&lt;sub  style="font-family:verdana;"&gt;&lt;span style="font-style: italic;"&gt;t&lt;/span&gt;&lt;/sub&gt;&lt;span style="font-family:verdana;"&gt;, &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;t&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; ≥ 0} is a Poisson process if:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;font-family:verdana;" &gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;N&lt;/span&gt;&lt;sub&gt;0&lt;/sub&gt; = 0&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;N&lt;/span&gt;&lt;sub&gt;t&lt;/sub&gt; has stationary independent increments &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;N&lt;/span&gt;&lt;sub&gt;&lt;span style="font-style: italic;"&gt;t&lt;/span&gt;1&lt;/sub&gt; - &lt;span style="font-style: italic;"&gt;N&lt;/span&gt;&lt;sub&gt;&lt;span style="font-style: italic;"&gt;s&lt;/span&gt;1&lt;/sub&gt; is independent from &lt;span style="font-style: italic;"&gt;N&lt;/span&gt;&lt;sub&gt;&lt;span style="font-style: italic;"&gt;t&lt;/span&gt;2&lt;/sub&gt; - &lt;span style="font-style: italic;"&gt;N&lt;/span&gt;&lt;sub&gt;&lt;span style="font-style: italic;"&gt;s&lt;/span&gt;2&lt;/sub&gt;&lt;/li&gt;&lt;li&gt;Memoryless&lt;/li&gt;&lt;li&gt;Inter arrival times are independently &amp;amp; identically distributed set of exponentially distributed random variables&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;P&lt;/span&gt;{&lt;span style="font-style: italic;"&gt;N&lt;/span&gt;&lt;sub&gt;Δ&lt;span style="font-style: italic;"&gt;t&lt;/span&gt;&lt;/sub&gt; = 1} = λ(Δ&lt;span style="font-style: italic;"&gt;t&lt;/span&gt;) + o(Δ&lt;span style="font-style: italic;"&gt;t&lt;/span&gt;)&lt;/li&gt;&lt;li&gt; P{&lt;span style="font-style: italic;"&gt;N&lt;/span&gt;&lt;sub&gt;Δ&lt;span style="font-style: italic;"&gt;t&lt;/span&gt;&lt;/sub&gt; = 2} = o(Δ&lt;span style="font-style: italic;"&gt;t&lt;/span&gt;)&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Property 2 (memoryless)  is the key. With uniform distribution if we say, "probability of an arrival of a packet is 0.1," if a packet doesn't arrive between [0 - 9]  it has to arrive at &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;t&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; = 10. In a natural system, such arrivals are not necessary. A packet may or may not arrive or if an Earthquake doesn't happen in Yellowstone National Park for last 9 years it doesn't necessary mean it must occur in the coming year. Hence this reflect the natural behavior &amp;amp;  makes the analysis easier.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Property 3 &amp;amp; 4 says that there will only be one arrival &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt; &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;at a time (no batch arrivals). This holds for a small time interval  Δ&lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;t &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;→ 0. Hence, we only need to worry about 1 arrival at a time. Even if 2 Earthquakes occur during 5 minutes, it will happen one after another. This further simplify the analysis.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Given these properties Poisson is a better &amp;amp; simple approximation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Please feel free to suggest any corrections or additions....&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-8599023809207368056?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/8599023809207368056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=8599023809207368056' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/8599023809207368056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/8599023809207368056'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/07/why-model-packet-arrivals-as-poisson.html' title='Why model Packet Arrivals as a Poisson Process?'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-4180434692195007795</id><published>2009-07-03T14:16:00.004-06:00</published><updated>2009-07-03T14:21:26.706-06:00</updated><title type='text'>Failed - But not forever...</title><content type='html'>We fail in many endeavors...&lt;br /&gt;But never quit trying...&lt;br /&gt;You may succeed either in the same or different area...&lt;br /&gt;Even if you succeed in a different area, it because of the previous failure....&lt;br /&gt;Here are some well-known failures that could inspire you...&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Y6hz_s2XIAU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Y6hz_s2XIAU&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-4180434692195007795?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/4180434692195007795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=4180434692195007795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4180434692195007795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4180434692195007795'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/07/failed-but-not-for-ever.html' title='Failed - But not forever...'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-4466367516286814605</id><published>2009-06-02T09:32:00.008-06:00</published><updated>2009-06-02T09:53:58.486-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux Sucks'/><title type='text'>Why Linux Sucks!  - Reality behind some issues in Linux</title><content type='html'>&lt;embed src="http://blip.tv/play/g5hw_ctqjp5n%2Em4v" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="420" height="255"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;div  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;An interesting presentation by Bryan Lunduke that talks about some of the realities behind Linux &amp;amp; it's future. I do agree that Linux needs a sustainable economic model. All the smart/nerdy developers can contribute while they are teens or while in college. But when you step into real life, you need some serious income. If there is a model that has some economic motives for those developers, we'll have tremendously better software &amp;amp; an OS while enabling those developers to do what they love to do...&lt;br /&gt;&lt;a href="http://lunduke.com/wp-content/uploads/2009/04/linux-sucks.odp"&gt;Slides are available&lt;/a&gt; at Bryan's web page.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-4466367516286814605?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/4466367516286814605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=4466367516286814605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4466367516286814605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4466367516286814605'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/06/why-linux-sucks-reality-behind-some.html' title='Why Linux Sucks!  - Reality behind some issues in Linux'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-1025778948410339017</id><published>2009-05-19T14:37:00.007-06:00</published><updated>2009-05-19T14:52:50.069-06:00</updated><title type='text'>A United Sri Lanka...</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fN_YO0_-XJk/ShMbpEPJY8I/AAAAAAAAD8Q/XBVspydMd6c/s1600-h/satellite-image-of-sri-lanka.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 100px; height: 159px;" src="http://3.bp.blogspot.com/_fN_YO0_-XJk/ShMbpEPJY8I/AAAAAAAAD8Q/XBVspydMd6c/s320/satellite-image-of-sri-lanka.jpg" alt="" id="BLOGGER_PHOTO_ID_5337640375690027970" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;Finally, the Sri Lankan war is over &amp;amp; everyone is in a single country...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I remember the impact of war as far as I remember anything in my childhood... I still remember how windows got scattered &amp;amp; fall down while I was in school due to the JOB bomb (1991). Finally, being able to hear that war is over is a dream come true...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Now it's our responsibility to the rebuild the country &amp;amp; make sure people in those areas are taken well care of.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Salute to the solders for all forms of sacrifices &amp;amp; president for the leadership...!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-1025778948410339017?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/1025778948410339017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=1025778948410339017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1025778948410339017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1025778948410339017'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/05/united-sri-lanka.html' title='A United Sri Lanka...'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_fN_YO0_-XJk/ShMbpEPJY8I/AAAAAAAAD8Q/XBVspydMd6c/s72-c/satellite-image-of-sri-lanka.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-6838546289155824586</id><published>2009-04-21T09:28:00.005-06:00</published><updated>2009-04-26T10:18:12.983-06:00</updated><title type='text'>Oracle to Buy Sun....</title><content type='html'>&lt;div style="text-align: justify; font-family: verdana;"&gt;I believed that proliferation of Linux affected Sun servers &amp;amp; Solaris lot more than Microsoft Windows... I guess it’s true now... according to the resent news that says “&lt;a href="http://www.sun.com/third-party/global/oracle/index.jsp"&gt;Oracle to Buy Sun&lt;/a&gt;”&lt;br /&gt;Linux enabled the opportunity for low to mid size businesses to run a stable OS on low cost hardware platforms such as x86. So most Sun users eventually migrated to Linux on HP &amp;amp; Dell servers. Though Sun focused more on data centers there may not be successful as IBM or SGI. Anyway, it would be much more interesting when Cisco comes to the server market very soon...&lt;br /&gt;Anyway I love Solaris, C/C++ NetBeans, &amp;amp; JXTA though I hate Java... Hope Oracle continues to maintain those...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-6838546289155824586?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sun.com/third-party/global/oracle/index.jsp' title='Oracle to Buy Sun....'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/6838546289155824586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=6838546289155824586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6838546289155824586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6838546289155824586'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/04/oracle-to-buy-sun.html' title='Oracle to Buy Sun....'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-4424283530659929099</id><published>2009-04-10T09:49:00.005-06:00</published><updated>2009-04-28T09:10:25.193-06:00</updated><title type='text'>Colorado Science and Engineering Fair</title><content type='html'>&lt;div style="text-align: justify; font-family: verdana;"&gt;I had the pleasure of serving as one of the special awards judge during the Colorado Science and Engineering Fair 2009, representing the IEEE Centennial Subsection. I was held at CSU on 9th April.&lt;br /&gt;It was amazing to see the type of research projects those junior &amp;amp; senior students had undertaken. Most of the ideas were new, interesting, &amp;amp; had gone through rigorous research methodology. Students had put tremendous effort &amp;amp; spent significant amount of time on those projects. It seems their teachers &amp;amp; parents have given them good guidance &amp;amp; support. It was an honor to meet such a dedicated set of students &amp;amp; talk to them. I’m sure that some of them can even compete with the projects that we do as graduate students…&lt;br /&gt;We should try to build the next generation of Sri Lankan students at least like this, that are more open minded, practical, &amp;amp; productive. Wish they have more time to do something that they like, rather than going to after school tuition classes. At least this is what I though during my school days. As academic we should promote the importance of self study &amp;amp; any form of research than tuition....&lt;br /&gt;Thanks Steven for giving me the opportunity to represent IEEE Centennial Subsection &amp;amp; other team members Heather &amp;amp; Vic.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-4424283530659929099?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.csef.colostate.edu/' title='Colorado Science and Engineering Fair'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/4424283530659929099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=4424283530659929099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4424283530659929099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4424283530659929099'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/04/colorado-science-and-engineering-fair.html' title='Colorado Science and Engineering Fair'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-6803156633105374918</id><published>2009-01-20T13:34:00.005-07:00</published><updated>2009-04-26T10:26:11.403-06:00</updated><title type='text'>Windows 7</title><content type='html'>&lt;div style="text-align: justify;"&gt;Finally, it seems that Microsoft has decided to do some changes to Vista (I guess the most commercially unsuccessful Microsoft OS release in spite of so much advertising). "&lt;span style="font-style: italic;"&gt;Over the past few years, you've asked us to make some changes to Windows. We listened closely,&lt;/span&gt;" &lt;span style="font-style: italic;"&gt;by Microsoft&lt;/span&gt;.&lt;br /&gt;Windows 7 is supposed to be faster, more reliable, &amp;amp; easier to do what you want. I would love to have a new OS that combine some of the few cool features in Vista &amp;amp; Plenty of good ones in XP. I hope that they remove the sudden black screen that appears when we try to install a new software, configure a driver or need to allow firewall access. Getting a sudden black screen is scary…. However, other than few minor improvements I didn't see any major improvements. It seems that new interface is becoming more like Mac.&lt;br /&gt;Anyway, Beta version is already available for techies to try. Unfortunately, I don't have a machine with 1GB of memory to install. Please share your experience if you really try it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-6803156633105374918?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.microsoft.com/windows/windows-7/' title='Windows 7'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/6803156633105374918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=6803156633105374918' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6803156633105374918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/6803156633105374918'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/01/windows-7.html' title='Windows 7'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-4198254080653096372</id><published>2008-12-27T08:43:00.014-07:00</published><updated>2009-05-19T14:57:41.787-06:00</updated><title type='text'>Small Basic for biginners</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fN_YO0_-XJk/SVZTX1L1GUI/AAAAAAAADaM/jBwUOAFMRsc/s1600-h/Small+Basic+IDE.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 267px; height: 181px;" src="http://1.bp.blogspot.com/_fN_YO0_-XJk/SVZTX1L1GUI/AAAAAAAADaM/jBwUOAFMRsc/s320/Small+Basic+IDE.jpg" alt="" id="BLOGGER_PHOTO_ID_5284502881644648770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center; font-family: verdana;"&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center; font-family: verdana;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center; font-family: verdana;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;Microsoft recently introduced Small Basic, a programming language for beginners. It's a strip down version of BASIC with only 15 key words. It seems to be a fun programming environment &amp;amp; definitely worth while trying. You can write both console &amp;amp; graphical interface enabled programs &amp;amp; even develop your own version of Logo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Some of the features include:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt; Its free&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt; 15 key words that support basic programming concepts including conditions &amp;amp; iterations&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt; Intellisense &amp;amp; context sensitive help&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt; Define variables on the fly, no need to explicitly define them&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt; Graphic programming&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt; Subroutines&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt; Third-party libraries can be plugged, API is given&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:verdana;"&gt;It even comes with a simple but comprehensive user guide that introduce basic programming concepts &amp;amp; Small Basic.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Though it's intended for beginners, even advanced develops can use it to write scripts that perform simple day to day tasks.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-4198254080653096372?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.msdn.microsoft.com/smallbasic' title='Small Basic for biginners'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/4198254080653096372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=4198254080653096372' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4198254080653096372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/4198254080653096372'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2008/12/small-basic-for-biginners.html' title='Small Basic for biginners'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_fN_YO0_-XJk/SVZTX1L1GUI/AAAAAAAADaM/jBwUOAFMRsc/s72-c/Small+Basic+IDE.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-2226524399568432268</id><published>2008-12-21T10:00:00.005-07:00</published><updated>2009-05-19T14:59:17.750-06:00</updated><title type='text'>CNRL Potluck</title><content type='html'>&lt;div face="verdana" style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fN_YO0_-XJk/SV0RufftxBI/AAAAAAAADbc/Ovq0ufApIEw/s1600-h/CNRLPotluck.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 272px; height: 181px;" src="http://2.bp.blogspot.com/_fN_YO0_-XJk/SV0RufftxBI/AAAAAAAADbc/Ovq0ufApIEw/s320/CNRLPotluck.JPG" alt="" id="BLOGGER_PHOTO_ID_5286401028029006866" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;We had a wonderful gathering yesterday. It was the first formal gathering of students &amp;amp; faculty working at &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.cnrl.colostate.edu/"&gt;CNRL&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; (Computer Networking Research Laboratory). We had food &amp;amp; desserts from around the world. For 7 graduate students, it was a really good gathering which included Prof. Jayasumana, friends &amp;amp; wife's.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;font-family:verdana;" &gt;Visit to my &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://picasaweb.google.com/dilumb/CNRLParty?feat=directlink"&gt;web album&lt;/a&gt;&lt;span style="font-family: verdana;" &gt; for some pictures of the event.&lt;br /&gt;Thanks a lot for everyone's help in making the potluck such a great&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; success....&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-2226524399568432268?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://picasaweb.google.com/dilumb/CNRLParty?feat=directlink' title='CNRL Potluck'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/2226524399568432268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=2226524399568432268' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2226524399568432268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/2226524399568432268'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2008/12/cnrl-potluck.html' title='CNRL Potluck'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_fN_YO0_-XJk/SV0RufftxBI/AAAAAAAADbc/Ovq0ufApIEw/s72-c/CNRLPotluck.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-1593809516695446055</id><published>2008-12-06T12:16:00.004-07:00</published><updated>2009-01-06T12:22:37.794-07:00</updated><title type='text'>GLOBECOM 2008</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fN_YO0_-XJk/SWOuOnybUFI/AAAAAAAADcE/MpLThcW6jXI/s1600-h/Globecom.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 256px; height: 192px;" src="http://3.bp.blogspot.com/_fN_YO0_-XJk/SWOuOnybUFI/AAAAAAAADcE/MpLThcW6jXI/s320/Globecom.JPG" alt="" id="BLOGGER_PHOTO_ID_5288261953684983890" border="0" /&gt;&lt;/a&gt;Last week, I attended my first conference in USA. It was in New Orleans, LA. I also presented a paper on VSN formation in one of the workshops (WMSN 2008). It was amazing to see such a large number of participants &amp;amp; parallel sessions on many aspects related to communication. I also met several Sri Lankans from around the world.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;New Orleans is a nice &amp;amp; interesting city. It is a historic city &amp;amp; has the oldest operational tramcar system. Of course, I went in a tramcar for the first time in my life. It reminded me the old CTB buses that we have in Sri Lanka. My hotel was in French Quarter so had direct access to most of interesting places in town. I went along the Mississippi riverbanks &amp;amp; saw several steam boats. Bourban street is definitely a worthwhile place to experience modern New Orlean's culture.&lt;br /&gt;Anyway, it was a nice experience &amp;amp; could have been even better if I didn't had an exam just after I return. See my &lt;a href="http://picasaweb.google.com/dilumb/NewOrleans?feat=directlink"&gt;album&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-1593809516695446055?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.comsoc.org/confs/globecom/2008/' title='GLOBECOM 2008'/><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/1593809516695446055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=1593809516695446055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1593809516695446055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/1593809516695446055'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2009/01/globecom-2008.html' title='GLOBECOM 2008'/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_fN_YO0_-XJk/SWOuOnybUFI/AAAAAAAADcE/MpLThcW6jXI/s72-c/Globecom.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-189977371605806989</id><published>2008-05-30T10:50:00.004-06:00</published><updated>2008-05-30T12:33:46.242-06:00</updated><title type='text'></title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;How to waste time trying to solve a problem that even a child can prove you it can't be done...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;At least now I want to continue writing on this blog.... I have messed up in the past trying to solve the wrong problem, solve the problem in a wrong way, or trying to solve a problem that can't be solved. So this time I simplify the problem and made sure that there is a answer. But again I failed after 1 week because..... This is what happened......&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;We were trying to see whether forming a circular link  in a sensor network can reduce the overall energy consumption. I did the calculation for a simplified case &amp;amp; figured out it can be done, if two nodes that wants to talk to each other is within a certain angle. Then I tried to solve the big problem by integrating over the whole sensor region. However I got stuck. I then went and talk to my supervisor and discussed about the problem. He said "we don't know whether nodes will follow the shorter or longer path along the circular link, so lets assume it goes through a shorter path 1/2 the time and 1/2 it goes through the longer path". It was more general than the specific angle that I derived and seams to be attractive. Fine, I'll go ahead &amp;amp; solve the problem again by integrating. After wasting a week (well I didn't remember integration much so had to do some background reading) I realized there is no solution &amp;amp; routing through the circular link is worse. Where things go wrong? Well, when my supervisor suggest the change, I never went back and did the &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;calculation for the simplified case. In three lines it can be proven that the new solution won't work (a kid who has a basic idea on geometry will prove this to me).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Lesson Learned:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;font-family:verdana;" &gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Do a simple calculation for boundary conditions&lt;br /&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;If it works go for the general case&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;If you do any changes in the middle make sure to do the simple calculation again (step 1)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Repeat step 2 and 3 until you are completely done&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;span style="font-family:verdana;"&gt;Well I at least I learn integration so one week is not totally lost....&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-189977371605806989?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/189977371605806989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=189977371605806989' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/189977371605806989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/189977371605806989'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2008/05/how-to-waste-time-trying-to-solve.html' title=''/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-5025735234149765268</id><published>2006-12-12T06:28:00.002-07:00</published><updated>2008-05-30T12:34:24.354-06:00</updated><title type='text'></title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Workshop on Porting Applications on the Computational Grid &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;The workshop was conducted as a collaborative effort from &lt;a href="http://www.ictp.it/"&gt;ICTP&lt;/a&gt;, SPIDER, &amp;amp; &lt;a href="http://www.blogger.com/www.ucsc.cmb.ac.lk"&gt;UCSC&lt;/a&gt;. Although we got highly competent resource personnel it is so disheartening to see such a bad response from the local research community. I am really not sure the reason for lack of interest. However it may be the feeling among most local scientists that computers can't support there conventional research, "it's not for us...", or "it's for the new generation...".&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;The whole objective of the workshop was to get researchers together &amp;amp; discuss about the possibility (or benefits) of porting their applications (if they already have such applications) to a Grid environment or development of new applications. The infrastructure is already in place &amp;amp; what we need is applications to run on top of those machines. All these are there for the benefit of the country &amp;amp; to the rest of the world.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;If they don't know how to program or port their research into a computational environment there are plenty of undergraduates following computer science &amp;amp; related subject doing projects at various levels. Most of the them love to carry out interdisciplinary research or projects.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;At the end of the day, the whole objective was to facilitate local scientific community with a better research infrastructure where they can run their applications much more effectively &amp;amp; at no cost. At least they should have been there to discuss about what they are doing. It is the time for even the senior researches to realize that their research can be enhanced with modern technology. They may have missed the modern era of information driven community but they can still be effective if they collaborative with local ICT initiatives.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-5025735234149765268?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/5025735234149765268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=5025735234149765268' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5025735234149765268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/5025735234149765268'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2006/12/workshop-on-porting-applications-on.html' title=''/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30550906.post-7417411330167795960</id><published>2006-11-10T00:56:00.003-07:00</published><updated>2008-05-30T12:34:10.084-06:00</updated><title type='text'></title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;IT Day 2006 - Mathara Rahula College&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Me &amp;amp; Samantha (another lecturer) was invited to deliver a speech at the 'IT Day' of the school. Samantha talked on 'New Trends in ICT' and my one was on 'Technology for a Better Tomorrow'. Samantha was talking about high-tec consumer electronic items, Sensor Networks, Grid Computing, Mobile Robots, new network technologies (WiMAX, CDMA, etc). I presented a case study on &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.horizonlanka.org/"&gt;HorizonLanka foundation&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; and explained how &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.mahavilachchiya.net/"&gt;Mahavilachchiya&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; become the most IT savvy village in the country while enhancing the villages' life through use of ICT. The important aspect about the event was the approach that we used while addressing students.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Previous speaker talked on e-Commerce but it was too theoretical &amp;amp; hardly none of the student could understand content, including me.  It was a good presentation but suites a more mature audience. The concept of knowing your audience was no there, it was totally outside the expectations of the students. Due to lack of interest on such technical content &amp;amp; standards students started shouting &amp;amp; having their own pocket meetings. It is pretty bad to see that the presenter was not in a position to read the students interest &amp;amp; some how the presentation went along for 1 ½ hours.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Then came Samanth's turn. He had to put lot of effort to get students attention back. He had to drastically change his content &amp;amp; had to look for real life examples that matches with the students world. He did a really good job &amp;amp; was able to get the attention of the audience. Unfortunately he also had to do the session for 1 hour. Students were too frustrated &amp;amp; keeping students sit in  one place for couple of hours was impractical &amp;amp; that actually made them not to listen at all.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Next, it was my turn. I had only 15 minutes &amp;amp; lunch should have been served few hours ago. I didn't know what to do but suddenly remember that I had a slide with over 50 logs form different vendors related to ICT. I just projected that. I'm pretty sure that everyone was thinking “what the hell is he going to do, now”. Although it was a negative 1st impression at least everyone was looking &amp;amp; trying to figure out the logos that they know. I guess this is my biggest success in getting the attention of the audience during my carrier as a lecture so far.  Then I started talking about the topic &amp;amp; always tried to explained only the relevance of new technologies for a better tomorrow. At time I may have used some hash worlds &amp;amp; statements but I guess none of those are out of the normal vocabulary of a school child.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;The things that I want to highlight is this. As lectures we always try to teach only the theoretical or technical stuff. But when you are talking to an audience who are just poking into the world of  ICT it will always fail. Too much of big terms, acronyms, &amp;amp; complex systems will keep them away from it rather than acquiring &amp;amp; making use of them. We should always start with very simple things. But I have seen some lectures think that as lectures they are suppose to teach only the advanced stuff. The stuff will be of no use if no one understands it &amp;amp; it actually ruins your reputations rather than earns it. We need to understand that the users &amp;amp; specially the background of villages and children. As teachers we should be flexible enough to understand the difference of an undergraduate &amp;amp; a kid in a rural village. Unless we change our strategy &amp;amp; adapt to their expectations we will never be able to build ICT enabled country. Local knowledge, understanding, &amp;amp; experience is the key for local success.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30550906-7417411330167795960?l=dilumb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dilumb.blogspot.com/feeds/7417411330167795960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30550906&amp;postID=7417411330167795960' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/7417411330167795960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30550906/posts/default/7417411330167795960'/><link rel='alternate' type='text/html' href='http://dilumb.blogspot.com/2006/11/finally-i-decided-to-write-on-my-blog.html' title=''/><author><name>Dilum Bandara</name><uri>http://www.blogger.com/profile/15389171156318371434</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp2.blogger.com/_fN_YO0_-XJk/SEBXBDVoVvI/AAAAAAAAA0E/9WIo-jsVDgQ/S220/DSCI0005.JPG'/></author><thr:total>2</thr:total></entry></feed>
