<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MIH SWAT</title>
	<atom:link href="http://www.mihswat.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mihswat.com</link>
	<description>MIH SWAT - the official blog of MIH's Strategic Worldwide Applications and Technology Team.</description>
	<lastBuildDate>Mon, 23 Aug 2010 08:53:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Agile Planning Reviewed</title>
		<link>http://www.mihswat.com/2010/08/23/agile-planning-reviewed/</link>
		<comments>http://www.mihswat.com/2010/08/23/agile-planning-reviewed/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 08:53:22 +0000</pubDate>
		<dc:creator>Otavio Ferreira</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1492</guid>
		<description><![CDATA[Agile software development methods have reached great popularity among technology-based companies around the globe, arguably due to their effectiveness at managing the project stakeholders&#8217; expectations and goals. However, this positive outcome is directly related to the team members&#8217; ability to carry out the planning phases. And unfortunately the minimalistic theory frequently observed in agile processes [...]]]></description>
			<content:encoded><![CDATA[<p>Agile software development methods have reached great popularity among technology-based companies around the globe, arguably due to their effectiveness at managing the project stakeholders&#8217; expectations and goals. However, this positive outcome is directly related to the team members&#8217; ability to carry out the planning phases. And unfortunately the minimalistic theory frequently observed in agile processes tends to result in poorly written user stories.<span id="more-1492"></span></p>
<p>Agile methods are often described as &#8220;common sense&#8221;. For this reason <a href="http://en.wikipedia.org/wiki/Ken_Schwaber">Ken Schwaber</a> refuses being titled the Co-Creator of Scrum. Several software development practitioners such as <a href="http://en.wikipedia.org/wiki/Ivar_Jacobson">Ivar Jacobson</a>, <a href="http://en.wikipedia.org/wiki/Grady_Booch">Grady Booch</a>, and <a href="http://en.wikipedia.org/wiki/James_Rumbaugh">James Rumbaugh</a> all contributed to the set of principles that today form the Scrum framework.</p>
<p>However, having <a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">Scrum</a>, <a href="http://en.wikipedia.org/wiki/Extreme_programming">XP</a>, or any other method classified as common sense leaves a lot of room for interpretation by the individuals applying them. Thus, iteration planning efforts sometimes end up being superficial, not entirely committed to the system actors&#8217; real goals. As a practical consequence, user stories are found reduced to single sentences hanging on the white-board.</p>
<p>It is clear that <a href="http://www.mountaingoatsoftware.com/articles/27-advantages-of-user-stories-for-requirements">User Stories are not Use Cases or Requirement Statements</a>, as detailed by Mike Cohn, and highlighted as follows. Firstly, use cases are generally written as the result of a long analysis, whereas user stories are written as notes that will be used to initiate further analysis conversations. Secondly, requirement statements make costs visible only when all of them have been formally written in a lengthy document, whereas with user stories a complexity estimate is associated with each story immediately. Costs are then easily calculated by taking into account the velocity of the team.</p>
<p>Nonetheless, developers should not underestimate the complexity inherent in each story, and complementary theory can be found on this topic. Ron Jeffries breaks down the stories into three aspects: <a href="http://xprogramming.com/articles/expcardconversationconfirmation/">Card, Conversation, and Confirmation</a>.</p>
<p>Firstly, the card does not detail the story in depth, but successfully identifies it. Typically, team members and product owners adhere to the following template, popularized by Mike Cohn: “As an &lt;actor&gt;, I want to &lt;action&gt;, so that &lt;achievement&gt;”. Although <a href="http://blog.mountaingoatsoftware.com/advantages-of-the-as-a-user-i-want-user-story-template">advantages derived from using this template</a> have been listed, other agile evangelists have proposed enhancements. Elizabeth Keogh, for instance, came up with <a href="http://sirenian.livejournal.com/47679.html">a new user story format that better emphasizes business value</a>. One way or the other, templating has been the common approach, and teams should adopt one that will fit in smoothly within their environment.</p>
<p>Secondly, conversation is the activity that communicates the requirement from customers to developers during the product and sprint planning. At this stage, details such as dependencies and barriers are mapped out. As depicted by Jeffries, the conversation is largely verbal, but is often supplemented with documents. It is important to bear in mind that good communication is a key success factor in any software development project, and none of the artifacts produced throughout the process may substitute that.</p>
<p>Finally, stories are verified through confirmation or, more specifically, <a href="http://en.wikipedia.org/wiki/Acceptance_testing">acceptance testing</a>. All criteria taking into consideration ought to be defined during planning phases as well.</p>
<p>Although the theory presented above brings some structure to the loose perception of user stories, the writing itself remains vague. So William Wake advocates that agile practitioners should <a href="http://xp123.com/xplor/xp0308/">INVEST in good stories and SMART tasks</a>. Despite not being a particular fan of forced acronyms, I have to admit that some guideline will be welcome here.</p>
<p>Briefly, characteristics that form a good story description are the following:</p>
<ul>
<li>Independent</li>
<li>Negotiable</li>
<li>Valuable</li>
<li>Estimable</li>
<li>Small</li>
<li>Testable</li>
</ul>
<p>.<br />
Hence, a story should be independent from others, negotiable between customers and programmers, valuable to customers, estimable in terms of complexity, small for the sake of understandability, and testable on account of readiness confirmation. Further studies suggest that “Small” should be replaced with “Sized appropriately”, as the bottom of the product backlog may contain items that are not fully understandable by the team yet, also known as Epics.</p>
<p>Tasks, in their turn, should be:</p>
<ul>
<li>Specific</li>
<li>Measurable</li>
<li>Achievable</li>
<li>Relevant</li>
<li>Time-boxed</li>
</ul>
<p>.<br />
So a task needs to be specific by addressing one particular point, measurable in order to be tested against the <a href="http://www.scrumalliance.org/articles/105-what-is-definition-of-done-dod">definition of done</a>, achievable by the task owner, relevant to the story at hand, and time-boxed. This latter characteristic should not be perceived as a formal estimation in hours or days though, as it does not work. The raw material in Software Engineering is the developer&#8217;s own intellect, and nobody would be able to estimate its maturation time. The same applies to activities such as painting or novel writing. Civil Engineering, on the other hand, benefits from using raw materials that allow for accurate calculations, such as concrete and iron.</p>
<p>As a final note, during the planning, instead of defining longer iterations and allowing for bigger stories, you might be interested in giving the following set of constraints a try. SWAT has successfully built some of its software by adhering to them. Manageability goes through the roof!</p>
<ul>
<li>5-day sprints</li>
<li>5-point stories, or less</li>
<li>2-developer teams, up to 4</li>
</ul>
<p>.<br />
In conclusion, a better organized agile planning is more likely to drive the team towards the goals identified by project stakeholders. Theories and guidelines have been proposed, and I suggest bringing these concepts to the table when starting a new agile project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/08/23/agile-planning-reviewed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: The Art of Community by Jono Bacon</title>
		<link>http://www.mihswat.com/2010/08/16/book-review-the-art-of-community-jono-bacon/</link>
		<comments>http://www.mihswat.com/2010/08/16/book-review-the-art-of-community-jono-bacon/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 09:27:47 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Careers]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[jono bacon]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1580</guid>
		<description><![CDATA[I must confess that Jono Bacon actually caught me by surprise. While I was following the creation process of the book (O’Reilly invited UG leaders to send feedback) I could have never imagined I would one day have something so useful for someone who deals with communities on a day to day basis. In this [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://covers.oreilly.com/images/9780596157234/cat.gif" alt="cover" width="108" height="142" /></p>
<p>I must confess that Jono Bacon actually caught me by surprise. While I was following the creation process of the book (O’Reilly invited UG leaders to send feedback) I could have never imagined I would one day have something so useful for someone who deals with communities on a day to day basis. In this universe Jono is a well known figure, with vast experience in managing and participating in online communities, which credits him as a perfect candidate to write a book like this one.<span id="more-1580"></span></p>
<p>A book about how to manage and live amongst virtual communities has all the elements to be a boring book full of “do’s and don’t’s”, in summary a very repetitive and unpleasant book. However Jono proves his understanding of the communication channels (important part of any community) right off the bat in the book’s introduction. Here he showcases his writing strategy, <em>telling personal experiences</em>. Building on top of this premise the author goes throughout the book presenting us with new concepts or strategies and following it up with a real life example from his and others’ experience in communities. This makes the book a delightful read, easy and flowing, the kind of book you can pickup anywhere and have fun while you plow through the pages, perfect for the everyday life of lines and waiting. I recommend loading it up on your e-reader if you got one.</p>
<p>The book is incredibly broad and valid for numerous roles inside every community, from managers to members, volunteers, to the regular Open Source developer. Each level of the community stands to gain from this book and even people who work with or use the community, such as marketing people, and activists who need to learn how to communicate and win-over the communities. Each chapter dives into a different and fundamental aspect, like communication, building buzz, measuring, events and handling conflicts.</p>
<p>Anyone who has ever managed a community and looks at this table of contents will surely have a few flashbacks of various moments in their experience, I know I for one identified myself in quite a few situations, from my motivation to participate in the PHP community to the conflicts and the experience of contributing to Open Source. I usually like to give more details of each chapter when I do reviews like this one, but in this case that feels like I would be cheating the reader from the amazing experience of having Jono lead you through his experiences and concepts, so i’ll not do it.</p>
<p>In summary, if you have any involvement with virtual communities, be it as a manager, member or just someone who interacts with them, this book should have its place in your shelf. Buy it, read it, enjoy it an have fun while you learn to take your community to the next level.</p>
<blockquote><p><strong>The Art of Community</strong><br />
Author: Jono Bacon<br />
ISBN: 978-0-596-15671-8<br />
Pages: 400<br />
Year: 2009<br />
Publisher: O’Reilly<br />
<a href="http://oreilly.com/catalog/9780596157234/">On O’Reilly</a> | <a href="http://www.amazon.com/Art-Community-Building-Participation-Practice/dp/0596156715/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1280927284&amp;sr=8-1">On Amazon</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/08/16/book-review-the-art-of-community-jono-bacon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing Apps for Mobile</title>
		<link>http://www.mihswat.com/2010/08/10/developing-apps-for-mobile/</link>
		<comments>http://www.mihswat.com/2010/08/10/developing-apps-for-mobile/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 11:08:58 +0000</pubDate>
		<dc:creator>Dani Valentin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1561</guid>
		<description><![CDATA[One of the most fascinating presentations I attended last OSCON (you can read my review here) was entitled Building Mobile Apps with HTML, CSS and Javascript by Jonathan Stark. Jonathan is a consultant for mobile applications, a frequent conference speaker and often quoted when media speaks of trends for internet and mobile. As outlined in [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most fascinating presentations I attended last OSCON (you can read my review <a href="http://www.mihswat.com/2010/07/26/oreilly-oscon/">here</a>) was entitled  Building Mobile Apps with HTML, CSS and Javascript by <a href="www.jonathanstark.com">Jonathan Stark</a>. Jonathan is a consultant for mobile applications, a frequent conference speaker and often quoted when media speaks of trends for internet and mobile.<span id="more-1561"></span></p>
<p>As outlined in his talk, the very first question when developing for mobile is: what type of application do I want my product to have? Currently, there are three different types: Native, Web and SMS. Choosing one is based on the purpose of your project as well as the target audience.</p>
<ul>
<li><strong>Native:</strong> used when the aesthetics of the app is very important. Native is recommended when you want to access a core feature of the device, like a camera or GPS. And, because of their app stores, Native apps have the added advantages discoverability and visibility.  The disadvantage with this type of application is fragmentation, i.e. you must write a different application for each device.</li>
<li><strong>Web:</strong> used when the focus is on distribution. Web apps are available on any device enabled with Internet access and there is no need to download. Considering testing and supporting, web applications have an advantage since they do not need to go through all the bureaucracy of the app store. Updates are also up and running instantly. The main disadvantage of web apps is sand-boxing.</li>
<li><strong>SMS:</strong> rare and only used in markets where internet access on the phone is not available or prohibitively expensive. SMS apps don&#8217;t offer discoverability.</li>
</ul>
<p>Considering the above, Web applications are usually the best choice. They are cheaper to produce, more standardized and easier to distribute. According to Stark himself, &#8220;If you CAN build your app with HTML, CSS and JavaScript, then you probably should.&#8221;</p>
<p>In the second part of the talk, two interesting tools were demonstrated:</p>
<h1>jQTouch</h1>
<p><a href="http://jqtouch.com">jQTouch</a> is a jQuery plugin for mobile webkit browsers developed by David Kaneda. It Allows native animations, navigation and automatic customization of theme. Even if you will not actually using it in your application, it is a great tool for prototyping it.</p>
<p>To set jQTouch, you have to add in your page:</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/07/Screenshot-test.html-gedit.png"><img class="size-full wp-image-1567 alignnone" title="jQTouch" src="http://www.mihswat.com/wp-content/uploads/2010/07/Screenshot-test.html-gedit.png" alt="jQTouch" width="424" height="119" /></a></p>
<p>That means:</p>
<p>(1) adding hardcore structural design rules. This is required and you shouldn&#8217;t edit it<br />
(2) add your theme style file. There are some options in jQTouch website or you can write your own<br />
(3) initialize jQTouch after javascripts files are added. You can pass an object as a parameter with some values as icon and preloadImages</p>
<p>You can learn more from  the <a href="http://jqtouch.com">jQTouch website</a> or its <a href="http://code.google.com/p/jqtouch/">documentation</a>.</p>
<p>You can also see a quick overview in the video bellow:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/6X4K2MQsSeI&amp;hl=en_US&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/6X4K2MQsSeI&amp;hl=en_US&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h1>PhoneGap</h1>
<p><a href="http://phonegap.com">PhoneGap</a> is a framework for building cross-platform mobile apps. Using it, you can still take advantage of core features in iPhone, Android, Palm Symbian and Blackberry. It&#8217;s been recognized as a game-changer and its source code has been downloaded more than 200,000 times! Web applications can now compete with native applications when functionality is the main requirement.</p>
<p>For more information, you can visit the <a href="http://phonegap.com">PhoneGap</a> website.</p>
<p>To learn how to install it, check the video bellow:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/yuTqQyzyVvU&amp;hl=en_US&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/yuTqQyzyVvU&amp;hl=en_US&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/08/10/developing-apps-for-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Smarty Trap</title>
		<link>http://www.mihswat.com/2010/08/02/the-smarty-trap/</link>
		<comments>http://www.mihswat.com/2010/08/02/the-smarty-trap/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 07:47:01 +0000</pubDate>
		<dc:creator>Neil Broers</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[smarty]]></category>
		<category><![CDATA[template engine]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1534</guid>
		<description><![CDATA[Recently I went to Luke Welling's presentation entitled "PHP in the 21½th Century" at OSCON. He mentioned something interesting that got me thinking, something he calls "The Smarty Trap".]]></description>
			<content:encoded><![CDATA[<p>Recently I went to Luke Welling&#8217;s presentation entitled &#8220;PHP in the 21½th Century&#8221; at OSCON. He mentioned something interesting that got me thinking, something he calls &#8220;The Smarty Trap&#8221;. This trap occurs when someone decides to write a template engine with &#8220;a simple syntax that designers can understand&#8221; &#8211; it starts with some includes and printing a variable here and there. All goes well until he realizes he needs looping, so he builds loops into the language. And so it continues until the template engine is as complicated as any other programming language.<span id="more-1534"></span></p>
<p>This is probably the most common argument against template engines. People often say &#8220;but PHP IS a template engine&#8221;. Proponents of template engines will then counter argue that the syntax is simpler, but in some cases this is just not true&#8230;</p>
<p>We use Smarty in one of our products and in retrospect, we would most likely not have chosen to use it if we had to do it all again. However, based on our requirements and design decisions at the time, it was probably the right choice for then. When we started out, we opted for a MVC architecture where controllers pull data from models and push the data as arrays to the view. The advantage of this approach is that it keeps the templates simple because you&#8217;re only ever printing the contents of variables and occasionally looping over a dataset.</p>
<p>As our product evolved and became more complicated, this process became tedious and inefficient. Objects had to be converted to arrays and passed to the view. Sometimes this included a hierarchy of child objects. Then we started implementing lazy loading and iterators, the benefit of which quickly evaporated when we converted all of our objects to arrays.</p>
<p>We decided to instead pass either the model objects to the view or to use view helpers. The view then calls methods on the model or loops over the iterator, preserving the original objects and any lazy loading. All was well again, but of course the views started getting more and more complicated. To refer back to the argument, our templates have now become as complicated as embedded PHP code in HTML would have been. Add of course the additional overhead of the template engine and the cost of learning yet another language and suddenly a template engine doesn&#8217;t make an awful lot of sense anymore.</p>
<p>The problem is that requirements, design decisions and technologies all shift and evolve over time. It is not possible to predict where your product will be in 2 years, 5 years or even a few months from now. As software engineers, we try to accommodate change as much as possible by building safeguards into our code. However, at the end of the day, we cannot predict the future so we have to make peace with the fact that continuous re-factoring is as much a fact of life as change itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/08/02/the-smarty-trap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>O&#8217;Reilly OSCON</title>
		<link>http://www.mihswat.com/2010/07/26/oreilly-oscon/</link>
		<comments>http://www.mihswat.com/2010/07/26/oreilly-oscon/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 13:13:15 +0000</pubDate>
		<dc:creator>Dani Valentin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[o'reilly]]></category>
		<category><![CDATA[oscon]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1523</guid>
		<description><![CDATA[The 12th edition of O&#8217;Reilly OSCON (Open Source Conference) took place from 19 &#8211; 23 July in Portland, USA. In its first few years OSCON&#8217;s main goal was to help big companies realise the value of open source. Since that dream has become a reality, OSCON now focuses on defining, maintaining, and extending the identity [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mihswat.com/wp-content/uploads/2010/07/oscon_logo.gif"><img class="aligncenter size-full wp-image-1525" title="oscon_logo" src="http://www.mihswat.com/wp-content/uploads/2010/07/oscon_logo.gif" alt="" width="233" height="127" /></a></p>
<p>The 12th edition of O&#8217;Reilly OSCON (Open Source Conference) took place from 19 &#8211; 23 July in Portland, USA. In its first few years OSCON&#8217;s main goal was to help big companies realise the value of open source. Since that dream has become a reality, OSCON now focuses on defining, maintaining, and extending the identity of what it means to be open source. It&#8217;s also an excellent forum for discussing what future possibilities lie ahead.<span id="more-1523"></span></p>
<p>OSCON is usually organized as following: The first  2 days of the conference are made up of tutorials and summits. Tutorials last 3,5 hours and feature 2 different themes each day. For summits, you usually have 2 different topics to choose from (this year they were cloud computing and scala) and it lasts a whole day.</p>
<p>For the last 3 days there are 40 minute sessions happening simultaneously in 13 different rooms. In addition, the first hour of the day is filled with keynotes of 10 minutes each. You don&#8217;t have to attend both tutorials/summits and sessions as you can choose what you want to do when registering. Themes covered by the sessions include: business, cloud computing, community, databases, education, gvernment, health, java, mobile, perl, PHP, Python, Ruby and tools &amp; techniques. And I won&#8217;t even talk about the unofficial activities.</p>
<p>I decided to go to OSCON this year for many reasons. Firstly the variety of subjects was really impressive. I have never seen a conference with so many quality sessions happening at the same time with such well known speakers as Chris DiBona, Sebastian Bergmann and Tim Bray. Sessions were really exciting, specially the ones talking about mobile development and javascript programming. And, last but not least, I have always been found of open source in general. I can honestly say that the conference definitely delivers &#8211; it was the best conference I&#8217;ve been to so far.</p>
<p>As always, there is some room for improvement. Simple things like indicating level of dificulty in sessions and tutorials. Some rooms were too small for sessions and lunch(!), but nothing too critical. I would recommend it to anyone I know and would be really happy to go back again.</p>
<div id="attachment_1526" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mihswat.com/wp-content/uploads/2010/07/22072010002.jpg"><img class="size-medium wp-image-1526" title="Welcome" src="http://www.mihswat.com/wp-content/uploads/2010/07/22072010002-300x225.jpg" alt="Welcome" width="300" height="225" /></a><p class="wp-caption-text">Welcome</p></div>
<p style="text-align: center;">
<div id="attachment_1527" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mihswat.com/wp-content/uploads/2010/07/21072010001.jpg"><img class="size-medium wp-image-1527" title="Board" src="http://www.mihswat.com/wp-content/uploads/2010/07/21072010001-300x225.jpg" alt="Board" width="300" height="225" /></a><p class="wp-caption-text">Board</p></div>
<p style="text-align: center;">
<div id="attachment_1528" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mihswat.com/wp-content/uploads/2010/07/22072010007.jpg"><img class="size-medium wp-image-1528" title="Exibitors" src="http://www.mihswat.com/wp-content/uploads/2010/07/22072010007-300x225.jpg" alt="Exibitors" width="300" height="225" /></a><p class="wp-caption-text">Exibitors</p></div>
<p style="text-align: center;">
<div id="attachment_1529" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mihswat.com/wp-content/uploads/2010/07/19072010005.jpg"><img class="size-medium wp-image-1529" title="Badges" src="http://www.mihswat.com/wp-content/uploads/2010/07/19072010005-300x225.jpg" alt="Badges" width="300" height="225" /></a><p class="wp-caption-text">Badges</p></div>
<p style="text-align: center;">
<p>Conference Website: <a href="http://www.oscon.com/">http://www.oscon.com/</a><br />
Slides from sessions and tutorials this year: <a href="http://www.oscon.com/oscon2010/public/schedule/proceedings">http://www.oscon.com/oscon2010/public/schedule/proceedings</a><br />
Photos: <a href="http://www.flickr.com/photos/oreillyconf/sets/72157624428101453/">http://www.flickr.com/photos/oreillyconf/sets/72157624428101453/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/07/26/oreilly-oscon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Drizzle &#8211; the forecast looks good</title>
		<link>http://www.mihswat.com/2010/07/23/drizzle-forecast-looks-good/</link>
		<comments>http://www.mihswat.com/2010/07/23/drizzle-forecast-looks-good/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 07:52:13 +0000</pubDate>
		<dc:creator>Neil Broers</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1501</guid>
		<description><![CDATA[Drizzle is a relatively new project with the aim of producing a lightweight relational database system based on MySQL. ]]></description>
			<content:encoded><![CDATA[<p>Drizzle is a relatively new project with the aim of producing a lightweight relational database system based on MySQL. <span id="more-1501"></span>From the Drizzle website:</p>
<blockquote><p><em>&#8220;Drizzle is a community-driven project based on the popular MySQL DBMS that is focused on MySQL&#8217;s original goals of ease-of-use, reliability and performance. The Drizzle team is removing non-essential code, refactoring the remaining code, switching to a microkernel architecture (with well-defined APIs) and generally making Drizzle into a lean, mean query-running machine.&#8221;</em></p></blockquote>
<p>One of the biggest drivers for the lean kernel and quick bootstrapping of Drizzle is to make it an ideal database to use on cloud architectures. It is important to note that due to this, windows compatibility was removed from Drizzle.</p>
<p>It is quickly apparent that creating a stripped down version of MySQL wasn&#8217;t their only goal as the system includes a comprehensive plugin architecture. This allows many options for integration.</p>
<p>Pluggable authentication allows you to use plugins to authenticate using something like LDAP or HTTP. A pluggable query filter allows you to block or filter queries before they get executed. With the pluggable query cache (still in development), you could even plug in something like memcache. Even SQL functions are pluggable, allowing you to write custom functions.</p>
<p>Drizzle can be installed using apt-get, RPM&#8217;s or can be easily compiled from source. Installation is made even simpler because there is no bootstrap step and no system tables that need to be created.</p>
<p style="text-align: left;">Starting up Drizzle is simple, with the only required parameter being the data directory:<em> drizzled &#8211;datadir=/my/data/path</em></p>
<p>Plugins can be installed using apt-get and need to be enabled when starting up the daemon, for example:<em> &#8211;plugin-add=md5,pbxt</em></p>
<p>Drizzle is still in alpha and major new changes are introduced on a daily basis, so its not quite ready for your production environment, but it&#8217;s certainly worth keeping an eye on this project.</p>
<p>For more information, visit the <a href="http://drizzle.org/wiki/Main_Page">project wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/07/23/drizzle-forecast-looks-good/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Optimisation and Performance</title>
		<link>http://www.mihswat.com/2010/07/12/web-optimisation-and-performance/</link>
		<comments>http://www.mihswat.com/2010/07/12/web-optimisation-and-performance/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 10:41:46 +0000</pubDate>
		<dc:creator>Tyrone Visagie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1462</guid>
		<description><![CDATA[There are many things that affect the performance of a web application. A typical web application is normally shown as something like this. In actual fact, there are multiple layers within each section that can affect the speed of a web application and bottlenecks can occur at almost all of these layers. There are a [...]]]></description>
			<content:encoded><![CDATA[<p>There are many things that affect the performance of a web application. A typical web application is normally shown as something like this.</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/07/typical1.jpg"><img class="alignleft size-medium wp-image-1482" title="typical[1]" src="http://www.mihswat.com/wp-content/uploads/2010/07/typical1-300x40.jpg" alt="" width="300" height="40" /></a></p>
<p>In actual fact, there are multiple layers within each section that can affect the speed of a web application and bottlenecks can occur at almost all of these layers. There are a few techniques that can be used to improve the application’s speed. In order to fully understand the reasoning behind these techniques, a better understanding of the way things work is needed. <span id="more-1462"></span></p>
<p>To keep this manageable, this will be split up into a series of topics.</p>
<h2>Networking Basics</h2>
<p>To start off with, we can take a look at a very high level view of the protocols used in internet traffic.</p>
<p>There are 2 main protocols used on the internet – UDP (User Datagram Protocol) and TCP (Transmission Control Protocol). Depending on what is required, either one of these two is used.</p>
<p>TCP is optimised for accurate delivery, rather than fast delivery. There is a time penalty for ensuring that messages are arranged in the correct order and that lost messages are resent.  To guarantee the reliability of the packet transmission, TCP uses a 3 way handshake to establish TCP socket connections over the network.</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/07/tcp-connection-establishment.jpg"><img class="alignleft size-medium wp-image-1465" title="tcp-connection-establishment" src="http://www.mihswat.com/wp-content/uploads/2010/07/tcp-connection-establishment-300x199.jpg" alt="" width="300" height="199" /></a></p>
<p>TCP Handshake &#8211; <a href="http://condor.depaul.edu/~jkristof/technotes/tcp.html">Source</a></p>
<p>Host A (initiating host) sends a SYN(chronise) packet to Host B with a SEQ(uence) number attached). Host B will then send and SYN-ACK(nowledgement) to Host B. Host A will send an ACK to Host B. If all these steps go smoothly, a connection will be established. If a failure happens in the transmission of the data, the host can request the packet with the given sequence number again. The same sort of handshake is done to signal the end of transmission and tear down the connection. This is what is done with every new connection that is made and the establishing and tearing down process makes TCP a lot more bloated and time consuming than UDP. The TCP header is significantly bigger to allow it to handle all of these requirements.</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/07/tcp-segment-format.jpg"><img class="alignleft size-medium wp-image-1472" title="tcp-segment-format" src="http://www.mihswat.com/wp-content/uploads/2010/07/tcp-segment-format-300x117.jpg" alt="" width="300" height="117" /></a></p>
<p>TCP Header &#8211; <a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol">Source</a></p>
<p>UDP behaves in the following manner:</p>
<p>UDP is the other major underlying communication protocol of the Internet. It does not use a handshake to establish a &#8220;connection”. The protocol retains no state information of messages sent. Packets are sent on a “best effort” principle. There is no final check to guarantee that the packet that was sent made it to its final destination.  As a result of this, the UDP header is smaller than the TCP header.<br />
<a href="http://www.mihswat.com/wp-content/uploads/2010/07/udp3.gif"><img class="alignleft size-medium wp-image-1475" title="udp3" src="http://www.mihswat.com/wp-content/uploads/2010/07/udp3-300x109.gif" alt="" width="300" height="109" /></a></p>
<p>UDP Header &#8211; <a href="http://en.wikipedia.org/wiki/User_Datagram_Protocol">Source</a></p>
<p>Despite TCP being a lot slower than UDP, it ensures integrity and reliability of the datagrams and the bulk of applications on the internet require this.</p>
<p>Since most traffic requires the use of TCP, there has been a lot of work in trying to optimize the use of it. An interesting example of this is an initiative by Google called SPDY (pronounced speedy). Basically, the goal of this is to speed up page load sizes by overcoming some of the shortcomings of the current implementation of HTTP. These include:</p>
<ul>
<li>Allowing many concurrent requests to be run on a single TCP sessions. This will prevent the tear-down of the session and the creation of a new session for the next request.</li>
<li>Add compression to the headers</li>
<li>Add priorities to requests so that content that is considered more important is delivered earlier.</li>
</ul>
<p>At the moment this only works on a beta Chrome client and an in-memory server that is capable of sending HTTP and SPDY responses. It should be noted, that SPDY is not meant as a replacement for HTTP, but it enhances it. All request-response functionality remains the same. More information can be found <a href="http://www.chromium.org/spdy/spdy-whitepaper">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/07/12/web-optimisation-and-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Rich Snippets explained</title>
		<link>http://www.mihswat.com/2010/07/05/google-rich-snippets-explained/</link>
		<comments>http://www.mihswat.com/2010/07/05/google-rich-snippets-explained/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 09:15:31 +0000</pubDate>
		<dc:creator>Rafiq Phillips</dc:creator>
				<category><![CDATA[Semantic web]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1419</guid>
		<description><![CDATA[When searching the web, search engine results pages (SERPs) traditionally contain three bits of information about a page: The page title. The description of the page (found within the meta description tag) or an excerpt of the page containing the keywords you searched for. The URL of the web page. In Google&#8217;s ongoing pursuit of [...]]]></description>
			<content:encoded><![CDATA[<p>When searching the web, search engine results pages (SERPs) traditionally contain three bits of information about a page:</p>
<ol>
<li>The page title.</li>
<li>The description of the page (found within the meta description tag) or an excerpt of the page containing the keywords you searched for.</li>
<li>The URL of the web page.</li>
</ol>
<p><span id="more-1419"></span></p>
<p>In Google&#8217;s ongoing pursuit of organizing the world&#8217;s information and providing users with a better search experience, they have now introduced even more information into the SERPS &#8211; Rich Snippets. So what exactly do these Rich Snippets look like? Before showing you examples of different <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=99170">Google Rich Snippets</a> let&#8217;s look at what is required for a specific web page to be &#8216;rich snippet friendly&#8217;.</p>
<blockquote><p>With rich snippets, webmasters with sites containing structured content—for example, review sites or business listings—can label their content to make it clear that each labeled piece of text represents a certain type of data: for example, a restaurant name, an address, or a rating. This information doesn&#8217;t affect the appearance of your content on your own pages, but it does help Google better understand and present information from your page. For example, it can be used to create rich snippets to be displayed on a search results page.</p></blockquote>
<p>To ensure your site is rich snippet ready all you need to do is use any of the following structured data formats: <a href="http://www.w3.org/TR/2010/WD-microdata-20100624/">microdata</a>, <a href="http://microformats.org/">microformats</a>, or <a href="http://en.wikipedia.org/wiki/RDFa">RDFa</a>. These structured data formats allow machine-readable data to be embedded in HTML documents in an easy-to-write manner. They are designed for humans first and machines second and it will in no way change the look of your web pages, only give machines like Googlebot a better understanding of the data on your web pages. From an SEO perspective this could <em>increase the CTR (Click Through  Rate)</em> to your site from the SERPs even though your site may not be  first on the page.</p>
<p>Now let&#8217;s have a look at various forms of Google Rich Snippets using structured data formats:</p>
<p><strong>Facebook Friends</strong></p>
<div id="attachment_1426" class="wp-caption aligncenter" style="width: 394px"><a href="http://www.mihswat.com/wp-content/uploads/2010/07/facebook-rich-snippet.png"><img class="size-full wp-image-1426 " title="facebook-rich-snippet" src="http://www.mihswat.com/wp-content/uploads/2010/07/facebook-rich-snippet.png" alt="View a persons Facebook Friends straight from Google SERPs" width="384" height="64" /></a><p class="wp-caption-text">View a persons Facebook Friends straight from Google SERPs</p></div>
<p><strong>Reviews and Ratings</strong></p>
<div id="attachment_1428" class="wp-caption aligncenter" style="width: 358px"><a href="http://www.mihswat.com/wp-content/uploads/2010/07/review-rich-snippet.png"><img class="size-full wp-image-1428 " title="review-rich-snippet" src="http://www.mihswat.com/wp-content/uploads/2010/07/review-rich-snippet.png" alt="Avatar Ratings and Review Rich Snippet" width="348" height="57" /></a><p class="wp-caption-text">Avatar Ratings and Review Rich Snippet</p></div>
<p><strong>LinkedIn Location and Job Title</strong></p>
<div id="attachment_1430" class="wp-caption aligncenter" style="width: 359px"><a href="http://www.mihswat.com/wp-content/uploads/2010/07/rich-snippet-linkedin.png"><img class="size-full wp-image-1430 " title="rich-snippet-linkedin" src="http://www.mihswat.com/wp-content/uploads/2010/07/rich-snippet-linkedin.png" alt="LinkedIn Rich Snippet" width="349" height="59" /></a><p class="wp-caption-text">LinkedIn Rich Snippet</p></div>
<p>Implementing structured data into your website will not require learning a new programming language as it uses simple attributes in HTML tags (often &lt;span&gt; or &lt;div&gt;) to assign brief and descriptive names to items and properties. Only a small amount of web development is required to enable your sites to displayed in Google SERPs with rich snippets included.</p>
<p>Its that simple &#8211; what are you waiting for?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/07/05/google-rich-snippets-explained/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Graphical Models continued</title>
		<link>http://www.mihswat.com/2010/06/25/graphical-models-continued/</link>
		<comments>http://www.mihswat.com/2010/06/25/graphical-models-continued/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 09:04:08 +0000</pubDate>
		<dc:creator>Jeanne-Marié Roux</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1377</guid>
		<description><![CDATA[In my previous post about graphical models, the basic idea behind graphical models were discussed. The question now,  how does probability theory and graph theory interact in graphical models? In Graph 1, above,  we have a very simple graphical model.  X1, X2 and X3 are random variables, representing events. Each node in the graph will [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous post about graphical models, the basic idea behind graphical models were discussed. The question now,  how does probability theory and graph theory interact in graphical models?<span id="more-1377"></span></p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/bn_htt.png"><img class="size-medium wp-image-1380 alignleft" title="bn_htt" src="http://www.mihswat.com/wp-content/uploads/2010/06/bn_htt-300x53.png" alt="" width="300" height="53" /></a></p>
<p>In Graph 1, above,  we have a very simple graphical model.  <em>X<sub>1</sub>, X<sub>2</sub> </em>and <em>X<sub>3</sub></em> are<a href="http://en.wikipedia.org/wiki/Random_variable"> random variables</a>, representing events. Each node in the graph will be associated with such a random variable, and nodes are connected with a directed or undirected edge. The edges between the nodes indicate that there is a connection between the events. From the definition of a random variable, each <em>X<sub>i</sub> </em>therefore has a number of realisations (observations of a random variable), each with a different probability. The joint distribution of the 3 variables is given, in this example, by</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/htt_eq1.png"><img class="size-medium wp-image-1385 alignleft" title="htt_eq" src="http://www.mihswat.com/wp-content/uploads/2010/06/htt_eq1-300x19.png" alt="" width="300" height="19" /></a></p>
<p>The <a href="http://en.wikipedia.org/wiki/Probability_distribution">probability distribution</a> of <em>X<sub>1</sub></em> may be given by</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/normaldistr_eq.png"><img class="size-medium wp-image-1397 alignleft" title="normaldistr_eq" src="http://www.mihswat.com/wp-content/uploads/2010/06/normaldistr_eq-300x97.png" alt="" width="240" height="78" /></a></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">Using this probability distribution, we find that</p>
<p style="text-align: left;"><a href="http://www.mihswat.com/wp-content/uploads/2010/06/px1ex_eq-1.png"><img class="size-medium wp-image-1416 alignleft" title="px1ex_eq-1" src="http://www.mihswat.com/wp-content/uploads/2010/06/px1ex_eq-1-300x23.png" alt="" width="300" height="23" /></a></p>
<p>Note that there are some <a href="http://library.thinkquest.org/11506/prules.html">properties</a> and <a href="http://library.thinkquest.org/11506/prules.html">rules</a> of probability that all probability distributions have to obey by, and thus also the functions, which may otherwise be arbitrarily chosen. In statistics there are two types of random variables: discrete (set of realisations is countable) and continuous (set of realisations is uncountable), but the theory that will be covered will remain true for both types, and thus we will only deal with the discrete case.  <em> </em></p>
<p>For graphical models to be useful, there must be some independencies between the variables. For instance, imagine that <em>X<sub>1</sub> </em>is my grandfather&#8217;s genes, <em>X<sub>2</sub></em> my father&#8217;s genes and <em>X<sub>3</sub></em> my genes. Considering these, we know that my genes will depend on my father&#8217;s genes, which in turn is dependent on my grandfather&#8217;s genes. If we have no certainty as to my father&#8217;s genes, then to have any indication of my genes, we&#8217;ll need to know what my grandfather&#8217;s genes are. However, if we know my father&#8217;s genes, knowing my grandfather&#8217;s genes will be of no value, simplistically. So, my genes are conditionally independent of my grandfather&#8217;s genes, with that condition being that we know my father&#8217;s genes. When looking at the graphical model for this scenario, it is as in Graph 1. The edges between the nodes indicate the dependencies, and the arrow-heads indicate the direction of the dependence. This type of graphical model is known as a Bayesian Network (BN), since the edges are directed. BNs must be acyclic and are also known as directed <a href="http://en.wikipedia.org/wiki/Directed_acyclic_graph">acyclic graphs</a>. There is another type of graphical model known as Markov Random Fields (MRF), in which the edges are not directed [the arrowheads fall away], and although the dependence is still indicated, there is not as much information as in a BN. However, MRFs have their own advantages, and there are probability distributions that can only be represented by MRFs and some that can only be represented by BN.  The two types can be converted to each other, with BN to MRF being more popular because it is easier.  The <a href="http://en.wikipedia.org/wiki/Glossary_of_graph_theory#Directed_acyclic_graphs">moral graph</a> of a BN is the MRF that it will convert to, where after the probability distributions still need to be allocated.</p>
<p>The detail surrounding the interaction between probability theory and graph theory  are  lengthy discussions, if all factors are taken into consideration.  Thus, a quick summary is given.</p>
<p>For BN, the factor</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/bn_exp.png"><img class="size-medium wp-image-1381 alignleft" title="bn_exp" src="http://www.mihswat.com/wp-content/uploads/2010/06/bn_exp-300x88.png" alt="" width="180" height="53" /></a></p>
<p>will result in a graph having the connection Thus, in BN, the heads of the arrows point to the variable that is conditioned on (the variable who&#8217;s probability we want to find, given the other variables).</p>
<p>For MRFs, the factor <a href="../wp-content/uploads/2010/06/x2gx1_eq.png"><img title="x2gx1_eq" src="../wp-content/uploads/2010/06/x2gx1_eq.png" alt="" width="89" height="31" /></a> will result in the resultant graph having the connection</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/mrf_exp.png"><img class="size-medium wp-image-1382 alignleft" title="mrf_exp" src="http://www.mihswat.com/wp-content/uploads/2010/06/mrf_exp-300x88.png" alt="" width="180" height="53" /></a></p>
<p>Thus, in MRF, edges are drawn between variables that are found together in a factor.</p>
<p>There are three basic canonical graphs which graphical models are built up of. The associated joint probability distributions are</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/htt_eq1.png"><img class="size-medium wp-image-1385 alignleft" title="htt_eq" src="http://www.mihswat.com/wp-content/uploads/2010/06/htt_eq1-300x19.png" alt="" width="300" height="19" /></a></p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/ttt_eq.png"><img class="size-medium wp-image-1384 alignleft" title="ttt_eq" src="http://www.mihswat.com/wp-content/uploads/2010/06/ttt_eq-300x22.png" alt="" width="300" height="22" /></a></p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/htt_eq.png"><img class="size-medium wp-image-1383 alignleft" title="htt_eq" src="http://www.mihswat.com/wp-content/uploads/2010/06/htt_eq-300x19.png" alt="" width="300" height="19" /></a></p>
<p>These distributions illustrate the three scenarios of conditional independencies &#8211; the one thing that is necessary in graphical models, seeing as if there are no independencies / conditional independencies, then using graphical models has no advantage over any other modelling technique. To see exactly why the variables are conditionally independent, one would have to go into detail discussing <em>d-separation</em> for BNs and <em>graph separation</em> for MRFs. The definitions of these techniques are:</p>
<p><em>d-separation:</em><br />
If <em>A, B </em>and <em>C</em> represent groups  of nodes, then the nodes in group  <em>A</em> and group <em>B</em> are said to be conditionally independent of each other if, for every path between <em>A</em> and <em>B</em>,</p>
<ul>
<li>there is a node in <em>C</em> that is on the path between <em>A </em>and <em>B</em> where the arrows meet either head-to-tail or tail-to-tail, or</li>
<li>there is a node that is not in <em>C</em> and none of this node&#8217;s descendants are in <em>C</em> that is on the path between <em>A </em>and <em>B</em> where the arrows meet head-to-head.</li>
</ul>
<p>Note that the definitions of the different connections will be given in the next section.</p>
<p><em>graph separation:</em></p>
<p>If a group of nodes <em>C</em> separates the group of nodes in <em>A</em> and group in <em>B</em>, then the nodes in <em>A</em> and <em>B</em> are conditionally independent, given <em>C</em>.</p>
<p>The graph for the BN associated with</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/htt_eq1.png"><img class="aligncenter size-medium wp-image-1385" title="htt_eq" src="http://www.mihswat.com/wp-content/uploads/2010/06/htt_eq1-300x19.png" alt="" width="300" height="19" /></a> is</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/bn_htt1.png"><img class="size-medium wp-image-1390 alignleft" title="bn_htt" src="http://www.mihswat.com/wp-content/uploads/2010/06/bn_htt1-300x53.png" alt="" width="300" height="53" /></a></p>
<p>with <em>X<sub>2</sub></em> having a head-to-tail connection, and for the MRF</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/mrf_incomplete.png"><img class="size-medium wp-image-1391 alignleft" title="mrf_incomplete" src="http://www.mihswat.com/wp-content/uploads/2010/06/mrf_incomplete-300x53.png" alt="" width="300" height="53" /></a></p>
<p>Thus, from the definitions, <em>X<sub>1</sub></em> and <em>X<sub>3</sub></em> are conditionally independent, given<em> X<sub>2</sub></em>. This can be seen from the joint distribution as well.</p>
<p>The graph for the BN associated with</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/ttt_eq1.png"><img class="aligncenter size-medium wp-image-1386" title="ttt_eq" src="http://www.mihswat.com/wp-content/uploads/2010/06/ttt_eq1-300x22.png" alt="" width="300" height="22" /></a> is</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/bn_ttt.png"><img class="size-medium wp-image-1392 alignleft" title="bn_ttt" src="http://www.mihswat.com/wp-content/uploads/2010/06/bn_ttt-300x53.png" alt="" width="300" height="53" /></a></p>
<p>with <em>X<sub>2</sub></em> having a tail-to-tail connection, and for the MRF</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/mrf_incomplete.png"><img class="size-medium wp-image-1391 alignleft" title="mrf_incomplete" src="http://www.mihswat.com/wp-content/uploads/2010/06/mrf_incomplete-300x53.png" alt="" width="300" height="53" /></a></p>
<p>Therefore, <em>X<sub>1</sub></em> and <em>X<sub>3</sub></em> are conditionally independent, given <em>X<sub>2</sub>. </em> Again, this can be seen from the associated joint distribution.</p>
<p>The last case to consider is when <em>X<sub>2</sub></em> has a head-to-head connection, in a BN.<br />
The graph of the BN associated with</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/hth_eq.png"><img class="size-medium wp-image-1387 alignleft" title="hth_eq" src="http://www.mihswat.com/wp-content/uploads/2010/06/hth_eq-300x23.png" alt="" width="300" height="23" /></a> is</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/bn_hth.png"><img class="size-medium wp-image-1393 alignleft" title="bn_hth" src="http://www.mihswat.com/wp-content/uploads/2010/06/bn_hth-300x53.png" alt="" width="300" height="53" /></a></p>
<p>and for the MRF is</p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/mrf_complete.png"><img class="size-medium wp-image-1394 alignleft" title="mrf_complete" src="http://www.mihswat.com/wp-content/uploads/2010/06/mrf_complete-300x202.png" alt="" width="300" height="202" /></a></p>
<p><a href="http://www.mihswat.com/wp-content/uploads/2010/06/mrf_complete.png"><br />
</a></p>
<p>From these  graphs, it is clear that in the BN, <em>X<sub>1</sub></em> and <em>X<sub>3</sub></em> are conditionally independent, given <em>X<sub>2</sub></em>. However,  this is not the case in the MRF, seeing as all the nodes are connected.  It is this difference that causes information to be lost when converting  from a BN to a MRF.</p>
<p>Although the probability theory was not covered in depth, a feel of  how the probability theory and graph theory works together in a  graphical model was introduced.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/06/25/graphical-models-continued/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A world of convergence</title>
		<link>http://www.mihswat.com/2010/06/20/a-world-of-convergence/</link>
		<comments>http://www.mihswat.com/2010/06/20/a-world-of-convergence/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 17:58:14 +0000</pubDate>
		<dc:creator>Jacques van Niekerk</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[convergence]]></category>
		<category><![CDATA[futurism]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Jacques van Niekerk]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1368</guid>
		<description><![CDATA[The launch of the iPad caused yet another wave of Apple hysteria around the globe, not least in media and technology companies such as ours. Having used the device now for almost two months, I find that it has added a new dimension to my views on what convergence means in the technology and media [...]]]></description>
			<content:encoded><![CDATA[<p>The launch of the <a href="http://www.apple.com/ipad/">iPad</a> caused yet another wave of Apple hysteria around the globe, not least in media and technology companies such as ours. Having used the device now for almost two months, I find that it has added a new dimension to my views on what convergence means in the technology and media industries.<span id="more-1368"></span></p>
<p>Many, including myself, saw the iPad as a &#8220;a big iPod Touch&#8221;. It took only a few hours of use to completely dispel that belief. The iPad manages to combine a great deal of hardware into a single well designed piece of electronics. Sitting in front of a desktop computer, I look around and notice that all the following is combined into one: screen, CPU case, keyboard, mouse, and in the next version of the device the webcam will be integrated as well.</p>
<p>How did they do this ? Well &#8211; the device has become controller, input mechanism and output mechanism in one. By integrating the screen, and adding motion, position and touch sensors, it has become possible to use software to control what the device does with the input it receives. It is not necessary for the sensor that registers keystrokes to be JUST a keyboard anymore  &#8211; it can morph into the tip of a paintbrush or a controller for a weapon in a game. Similarly with other components &#8211; the screen can become a window on the world, it can be a placid pond, it can be a web browser, a calculator, a paint palette.</p>
<p>Of course the iPad can be used in many ways &#8211; as an entertainment device for pre-packaged content such as movies and TV series, or as a device for consuming interactive entertainment in the form of games. It makes the (in my opinion ill-conceived) concept of <a href="http://en.wikipedia.org/wiki/Netbook">netbooks</a> immediately redundant. It is serviceable for use as a limited business tool. And yes &#8211; for many it is an adequate replacement for print media, in particular magazines and books.</p>
<p>This post is not about the iPad. I am using the iPad to demonstrate that a device with many sensors, and a catholic approach to receiving input, can be used as a generic tool. The hardware itself becomes a generic substrate which is given concrete expression by the software running on the device. The iPad is the first of these devices, a primal ancestor of what is to come. I predict that increasing miniaturisation and the eventual arrival of practical nano-technology and programmable biology, will make &#8220;generic&#8221; hardware a common reality in ways which we cannot foresee yet. <a href="http://en.wikipedia.org/wiki/Internet_of_things">The Internet of Things</a> will be the operating system for all our software.</p>
<p>In summary &#8211; convergence means more than the universal consumption of media on <a href="http://en.wikipedia.org/wiki/Internet_protocol">IP</a> based devices. In the medium to long term convergence will come to mean the universal configurability of all devices, to deliver whatever function we wish them to deliver.</p>
<p>Ten years ago something like the iPad would have been considered science-fiction. Today&#8217;s science fiction will be the must-have product in two year&#8217;s time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/06/20/a-world-of-convergence/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
