<?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>Thu, 04 Feb 2010 08:04:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Campus Party 2010</title>
		<link>http://www.mihswat.com/2010/02/04/campus-party-2010/</link>
		<comments>http://www.mihswat.com/2010/02/04/campus-party-2010/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 08:02:33 +0000</pubDate>
		<dc:creator>Dani Valentin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[campus party]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[lessig]]></category>
		<category><![CDATA[mitnick]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1091</guid>
		<description><![CDATA[
From 25th till the 31st january, the 3rd. edition of Campus Party Brazil took place in São Paulo. The event, that is said to be the biggest one in technologic innovation, internet and eletronic entertainment, has been held since 1997 and happens in four different countries annually: Brazil, Spain, Mexico and Colombia.
In Brazil, it started [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mihswat.com/wp-content/uploads/2010/02/3220322628_b249845af2.jpg"><img class="alignnone size-full wp-image-1093" title="Campus Party" src="http://www.mihswat.com/wp-content/uploads/2010/02/3220322628_b249845af2.jpg" alt="" width="400" height="300" /></a></p>
<p>From 25th till the 31st january, the 3rd. edition of Campus Party Brazil took place in São Paulo. The event, that is said to be the biggest one in technologic innovation, internet and eletronic entertainment, has been held since 1997 and happens in four different countries annually: Brazil, Spain, Mexico and Colombia.<span id="more-1091"></span></p>
<p>In Brazil, it started in 2008, after 12 editions in Spain, and it was the second country to host it. It receives about 6000 participants every year, most of them camping in the event and participating in talks and debates that happen 24 hour a day. It is divided in 12 areas of interest, including development, robotics and security.</p>
<p>It has had speakers such as <a href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a> and <a href="http://www.stevenberlinjohnson.com/">Steven Johnson</a>. This year, there were 3 big international names: <a href="http://en.wikipedia.org/wiki/Kevin_mitnick">Kevin Mitnick</a>, <a href="http://www.linkedin.com/in/scottgoodstein">Scott Goodstein</a> and <a href="http://www.lessig.org/">Lawrence Lessig</a>.</p>
<p>The first to speak was Kevin Mitnick on the second day of the event. Mitnick was a famous cracker that was arrested in 1995. At that time he was the most wanted computer criminal in the U.S. Today he has a security company, <a href="http://mitnicksecurity.com/">Mitnick Security</a>, of course. His talk, entitled The art of Deception, was mostly about social engineering and how people should learn to say no.</p>
<p> </p>
<p>The next day, it was Scott Goodstein&#8217;s turn. He was responsile for Barack Obama&#8217;s online campaign in 2008. He talked about the importance of cellphones in the campaign and defended the mobilization of small and specific groups so they can call friends and create something bigger.</p>
<p>Lawrence Lessig did the last presentation, Friday  afternoon. The Stanford Law School professor founded <a href="http://creativecommons.org/">Creative Commons</a>, an alternative license to copyright. He talked about intellectual property, how the internet changed access to culture and how current copyright law harnesses creativity.</p>
<p>Swat member, <a href="http://rafaeldohms.com.br/en/">Rafael Dohms</a> also gave a talk in the event, Awakening to PHP, an introduction to PHP.</p>
<p>Most videos of the event are available in their Youtube channel : <a href="http://www.youtube.com/campusparty">http://www.youtube.com/campusparty</a> (most of them in Portuguese).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/02/04/campus-party-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Users or Products?</title>
		<link>http://www.mihswat.com/2010/01/27/users-or-products/</link>
		<comments>http://www.mihswat.com/2010/01/27/users-or-products/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 13:42:49 +0000</pubDate>
		<dc:creator>Theo</dc:creator>
				<category><![CDATA[SWAT]]></category>
		<category><![CDATA[Social impact]]></category>
		<category><![CDATA[products]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[strategy]]></category>
		<category><![CDATA[users]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1066</guid>
		<description><![CDATA[Coming back from a week in India, I was left with a few lasting impressions, which could be summed up in one word: ubiquity. Of people. Of noise. The organised chaos that is Delhi traffic. And energy &#8211; something that seems to have reached a frenetic level quite shocking to a laid-back Capetonian. This energy [...]]]></description>
			<content:encoded><![CDATA[<p>Coming back from a week in India, I was left with a few lasting impressions, which could be summed up in one word: ubiquity. Of people. Of noise. The organised chaos that is Delhi traffic. And energy &#8211; something that seems to have reached a frenetic level quite shocking to a laid-back Capetonian. This energy translated into some excited and stimulating debate in the classroom, which is where I found myself with 50 other <a href="http://www.naspers.com/">Naspers </a>employees at 8am sharp on the first Monday of 2010. For three days, we discussed mostly Internet and technology cases under the guidance of two HBS strategy professors, <a href="http://drfd.hbs.edu/fit/public/facultyInfo.do?facInfo=bio&amp;facEmId=banand">Bharat Anand</a> and <a href="http://drfd.hbs.edu/fit/public/facultyInfo.do?facInfo=bio&amp;facId=251462">Felix Oberholzer-Gee</a>.<span id="more-1066"></span></p>
<p>Many interesting concepts and theories were discussed, but what stayed with me was that no matter what service or product you are providing or building, the focus should always be on the user. In fact, a consumer-oriented approach is the only way to build a long term competitive advantage (barring of course government-supported <a href="http://www.mg.co.za/article/2009-10-28-competition-body-urges-penalty-for-telkom">monopolies like Telkom</a>, which is finally facing real competitive forces). This is why companies like <a href="http://www.amazon.com">Amazon</a>, who are obsessive in their <a href="http://phx.corporate-ir.net/phoenix.zhtml?p=irol-irhome&amp;c=97664">mission</a> to please consumers and make every business decision based on whether the intended results are &#8216;good&#8217; for these users, are <a href="http://seekingalpha.com/article/182533-amazon-continues-to-pull-away-from-the-competition">streaking ahead of the competition</a>.</p>
<p>Having a user-focused strategy, as opposed to a product/service-focused one, has several benefits:<!--more--></p>
<ul>
<li>More time. Focusing on technologies and trends, which change quickly and are difficult to predict, causes companies to constantly chase the next big thing, and can cause stagnation when a standard is slow to emerge and market players stay on the sidelines before investing (as could be seen with the <a href="http://www.pcworld.com/article/142584/hd_dvd_vs_bluray_disc_a_history.html">Bluray vs. HD-DVD battle</a>). Focusing on user behaviour, which changes relatively slowly and is easier to predict, allows forward-thinking companies to focus their energies on satisfying user needs. For instance, in the case of the next-gen DVD saga, companies lost track about how user behaviour was shifting to wanting video anytime and anywhere (online, mobile and TV &#8211; the so-called &#8216;three screens&#8217;) while deciding which physical format to back.</li>
<li>Network effects. Product-focused companies design a product with the aim to sell it &#8211; which is where it ends. As long as the user can be convinced to part with cash to purchase said product, the product cycle is completed. A better approach can be to build a product/service that harnesses network effects, i.e. the more users you acquire, the more benefit they derive from using your product or service. The classic example of direct network effects is an online auction service &#8211; the more buyers you have, the more sellers are attracted to the platform, which in turn attract more buyers as the number of items increase. Such networks are incredibly hard to break, which is why <a href="http://www.ebay.com/">eBay</a> in the US remains entrenched. As a bonus, indirect network effects in the form of complements can make your product even more valuable. <a href="http://www.apple.com/">Apple&#8217;s</a> iPod, with its thousands of add-ons, and the iPhone, with its hundreds of thousands of applications, are much <a href="http://www.nytimes.com/2009/12/06/technology/06apps.html?_r=2&amp;pagewanted=1&amp;partner=rss&amp;emc=rss">more desirable and valuable</a> in the eyes of consumers because of these complements.</li>
<li>Differentiation. When companies focus on product/service quality and number of features, there is a constant battle to be superior, have more, look better. This is both costly and difficult to maintain, especially when this is how your brand is defined (<a href="http://www.businessweek.com/globalbiz/blog/eyeonasia/archives/2009/09/walkman_vs_ipod.html">Sony</a> again comes to mind). As Ranjay Gulati <a href="http://blogs.bnet.com/mba/?p=1743&amp;tag=nl.e713">puts it</a>, “In a marketplace like today, customers have more choices and more information, and services start to look like each other, in what we call a sea of sameness. If you don’t have an ability to transcend beyond the features and functionality of my product versus yours, then you have a problem.” User-focused companies don&#8217;t concentrate and obsess about rivals, but rather think about users and their needs. Instead of competing on a product-by-product, segment and geographical basis, they design their products and services around user habits and requirements. In the end, it&#8217;s your users you want to be happy, not your engineers or developers.</li>
</ul>
<p>Gulati <a href="http://blogs.bnet.com/mba/?p=1743&amp;tag=nl.e713">goes further</a> to say that there are three keys to transcending the &#8217;sea of sameness&#8217; and become customer-centric:</p>
<ol>
<li><strong> </strong>Ask the right questions (i.e. &#8220;What problems are customers dealing with?” and “What are the issues happening in the life of my customers?”)</li>
<li>Make the creative leap &#8211; by asking the right questions to figure out the innovations that will best serve your customers.</li>
<li>Get your organization aligned around what customers want, rather than around product and geography.</li>
</ol>
<p>So ask yourself: is your awesome new service with its long list of kick-ass features, or the shiny product that will change consumer electronics forever, actually satisfying some basic need? Will it delight your users, make their lives better or easier?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/01/27/users-or-products/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing RESTful Semantic Web Services</title>
		<link>http://www.mihswat.com/2010/01/14/introducing-restful-semantic-web-services/</link>
		<comments>http://www.mihswat.com/2010/01/14/introducing-restful-semantic-web-services/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 14:22:40 +0000</pubDate>
		<dc:creator>Otavio Ferreira</dc:creator>
				<category><![CDATA[Semantic web]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[restful]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1052</guid>
		<description><![CDATA[Web services are key elements in the fields of distributed software engineering and code reuse. They also play a very important role on the Semantic Web by providing data to semantic software agents, as described by Tim Berners-Lee:
&#8220;The real power of the Semantic Web will be realized when people create many programs that collect Web [...]]]></description>
			<content:encoded><![CDATA[<p>Web services are key elements in the fields of distributed software engineering and code reuse. They also play a very important role on the Semantic Web by providing data to semantic software agents, as described by Tim Berners-Lee:</p>
<blockquote><p>&#8220;The real power of the Semantic Web will be realized when people create many programs that collect Web content from diverse sources, process the information and exchange the results with other programs. The effectiveness of such software agents will increase exponentially as more machine-readable Web content and <strong>automated services</strong> become available. The Semantic Web promotes this synergy: even agents that were not expressly designed to work together can transfer data among themselves when the data come with semantics.&#8221;</p>
</blockquote>
<p><span id="more-1052"></span></p>
<p>Despite the ever-growing number of available  Web services, they are rarely described formally, which keeps them from joining the third phase of the Web. Service descriptions, if any, are typically informal, written in natural language and therefore available to human consumption only. Tim Berners-Lee highlights the need for semantically described Web services as follows:</p>
<blockquote><p>&#8220;Many automated Web-based services already exist without semantics, but other programs such as agents have no way to locate one that will perform a specific function. This process, called <strong>service discovery</strong>, can happen only when there is a common language to describe a service in a way that lets other agents understand both the function offered and how to take advantage of it.&#8221;</p>
</blockquote>
<p>Considering the above vision, it is reasonable to conclude that any given service should be offered the opportunity to join the Semantic Web, regardless of the technologies and protocols it relies on. There are basically two groups of services, namely RPC and RESTful. They represent completely different approaches to implementing Web services, but Semantic Web researchers should be able to address both equally.</p>
<p>The problem is that <strong>only</strong> RPC services have been covered by authors writing about the Semantic Web. In fact, the term Web Service is frequently used as synonymous with RPC. This may be the result of the strong SOAP protocol promotion carried out by the software industry, especially large enterprises such as <a href="http://www.ibm.com/developerworks/webservices/library/ws-best1/">IBM</a> and <a href="http://www.microsoft.com/soa/">Microsoft</a>.</p>
<p>I would like to introduce a new concept: <a href="http://www.fullsemanticweb.com/blog/ontologies/restfulgrounding/">RESTful Semantic Web Services</a>. The proposed set of protocols to formally describe a RESTful SWS includes HTTP, WADL, OWL-S, and URI. The following table compares this protocol stack with the one powering RPC SWS:</p>
<table border="1">
<tbody>
<tr>
<td><strong>Group</strong></td>
<td><strong>Access</strong></td>
<td><strong>Syntax</strong></td>
<td><strong>Semantics</strong></td>
</tr>
<tr>
<td>RPC</td>
<td><a href="http://en.wikipedia.org/wiki/Simple_Object_Access_Protocol">SOAP</a></td>
<td><a href="http://www.w3.org/TR/wsdl">WSDL</a></td>
<td><a href="http://www.w3.org/Submission/OWL-S/">OWL-S</a></td>
</tr>
<tr>
<td>RESTful</td>
<td><a href="http://www.w3.org/Protocols/">HTTP</a></td>
<td><a href="http://www.w3.org/Submission/wadl/">WADL</a></td>
<td><a href="http://www.w3.org/Submission/OWL-S/">OWL-S</a></td>
</tr>
</tbody>
</table>
<p>_</p>
<p>It is important to bear in mind that both semantic and syntactic descriptions have to be provided by any given service. Only then will the service be considered to be fully described. Semantics and syntax allows software agents to automatically discover and invoke the service.</p>
<p>The OWL-S protocol had to be extended in order to allow for RESTful SWS, because its original specification covered RPC SWS only. Fortunately, OWL-S defines an abstract layer that enables software engineers to create multiple <em>grounding</em> strategies. A more detailed description of OWL-S goes beyond the scope of this blog post, but <em>grounding</em> can be seen as an approach to mapping a semantic description to a syntactic one.</p>
<p>The extension proposed is classified as Web ontology, and it&#8217;s been named <a href="http://www.fullsemanticweb.com/blog/ontologies/restfulgrounding/">RESTfulGrounding</a>. The page describing this ontology contains the full paper that introduced RESTful SWS to the academic community in 2009. It also contains the ontology description in OWL and a proof-of-concept on a Web service provided by Yahoo.</p>
<p>(Post also published at <a href="http://www.fullsemanticweb.com/blog/2009/12/19/introducing-restful-semantic-web-services/">FullSemanticWeb.com</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/01/14/introducing-restful-semantic-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Three almost sure things for 2010</title>
		<link>http://www.mihswat.com/2010/01/12/three-almost-sure-things-for-2010/</link>
		<comments>http://www.mihswat.com/2010/01/12/three-almost-sure-things-for-2010/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 14:22:20 +0000</pubDate>
		<dc:creator>Jacques van Niekerk</dc:creator>
				<category><![CDATA[SWAT]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[#mihswat]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Apple Tablet]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Natal]]></category>
		<category><![CDATA[prediction]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1040</guid>
		<description><![CDATA[January brings with it the usual proliferation of lists predicting technology trends for 2010. I&#8217;ll add to the swarm by providing a short list of events which I believe will have a significant impact on the Web As We Know It in the coming year.
The first item is the release of Apple&#8217;s Tablet. The impact [...]]]></description>
			<content:encoded><![CDATA[<p>January brings with it the usual proliferation of lists predicting technology trends for 2010. I&#8217;ll add to the swarm by providing a short list of events which I believe will have a significant impact on the Web As We Know It in the coming year.<span id="more-1040"></span></p>
<p>The first item is the release of <a href="http://news.google.com/news?hl=en&amp;q=apple+tablet&amp;um=1&amp;ie=UTF-8&amp;ei=zO5FS_KnHdP-4AbavMyiCA&amp;sa=X&amp;oi=news_group&amp;ct=title&amp;resnum=1&amp;ved=0CBEQsQQwAA">Apple&#8217;s Tablet</a>. The impact of this device will be to make it abundantly clear to the consumer that the Web is to be had without the need for a typical computing device &#8211; no laptop required here. The Apple tablet will be an elitist device outside the US (as is the iPhone), but may turn out to be <strong>the poster child for convergence</strong>. As the delivery mechanisms for all content becomes IP networks, the consumer will cease to think of print, television and web content as different from each other &#8211; all will be one, as demonstrated by the Apple Tablet.<br /> <a href="http://www.engadget.com/2009/11/11/project-natal-launching-in-november-2010-priced-for-impulse-bu/"><br /> Microsoft&#8217;s Project Natal</a> will be released into the wild. Forget augmented reality. This will be the first step towards <strong>extended reality</strong>, the blurring between virtual and real. The success of <a href="http://www.imdb.com/title/tt0499549/">Avatar, the movie</a> and the increasing availability of devices with <a href="http://news.bbc.co.uk/2/hi/technology/8447432.stm">three-dimensional displays</a> will contribute to the acceptance of extended reality as an everyday reality, because the display techniques they use appear to intrude into the &#8220;real&#8221; world.  This will smooth the road towards wide adoption of extended reality as a user interface mode. (Finally &#8211; a replacement for the <a href="http://en.wikipedia.org/wiki/Mouse_%28computing%29">mouse</a>.) 2010 will be the year we start adding reality to the &#8220;real world&#8221;.</p>
<p>And finally &#8211; this year will resolve the question of how the planet&#8217;s largest social and communications platforms can evolve to have viable business models. Both <a href="http://www.twitter.com">Twitter</a> and <a href="http://www.facebook.com">Facebook</a> have massive and growing user bases, but neither have a clear plan for exploiting this user base &#8211; the sheer number of users, and the wide global distribution of these users should offer unique opportunities. I believe that 2010 will be the year that a way is found to exploit the <a href="http://en.wikipedia.org/wiki/Mega-">mega</a>-nets &#8211; paving the way for planetary connectivity, and the <a href="http://en.wikipedia.org/wiki/Giga">giga</a>-net.</p>
<p>In summary, my three (almost) sure things for the year:</p>
<ul>
<li>Convergence, convergence, convergence. The medium is changing, and <a href="http://en.wikipedia.org/wiki/The_medium_is_the_message">so shall the message</a>.</li>
<li>Extended reality starts entering the mainstream.</li>
<li>A way is found to exploit mega-sized social and communications networks commercially.</li>
</ul>
<p> </p>
<p>There are a number of other trends which I believe will have a significant impact on the web-as-we-know-it: semantic markup is becoming ever more ubiquitous without anyone really noticing; cloud computing is maturing; entirely new modes of internet usage is establishing itself in developing countries. Mobile internet usage continues to increase. Broadband penetration will continue to grow, enabling more and more users to join social and communications networks &#8211; we will see the rise of the giga-net within a very few years.</p>
<p>But I believe the three most significant  changes in the WAWKI will be triggered by the three events I listed here. Your mileage might vary &#8211; tell us about it.</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2010/01/12/three-almost-sure-things-for-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Android Apps at MIH Internet</title>
		<link>http://www.mihswat.com/2009/12/23/android-apps-mih/</link>
		<comments>http://www.mihswat.com/2009/12/23/android-apps-mih/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 11:42:17 +0000</pubDate>
		<dc:creator>Rafiq Phillips</dc:creator>
				<category><![CDATA[MIH]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1009</guid>
		<description><![CDATA[With TechCrunch&#8217;s Robin Wauters and Michael Arrington speculating about the future of ICQ and in so doing giving many users, who have never heard of Naspers before,  some insight into our mobile and online investments. This post does not comment on their speculation but instead will focus on the various Google Android applications developed [...]]]></description>
			<content:encoded><![CDATA[<p>With <a href="http://www.techcrunch.com/2009/11/21/aol-icq-naspers/">TechCrunch&#8217;s Robin Wauters</a> and <a href="http://www.techcrunch.com/2009/12/13/google-dst-make-play-for-aols-icq/">Michael Arrington</a> speculating about the future of ICQ and in so doing giving many users, who have never heard of <a href="http://www.naspers.com">Naspers</a> before,  some insight into our mobile and online investments. This post does not comment on their speculation but instead will focus on the various Google Android applications developed by the companies MIH has invested in.<br />
<span id="more-1009"></span></p>
<h3>Nimbuzz for Android.</h3>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/CydwIWqPG1Q&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/CydwIWqPG1Q&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
<p>Nimbuzz is a mobile instant messaging and social networking client available on most mobile phone handsets including Google Android. Skype, Windows Live Messenger (MSN), Yahoo Messenger, <strong>ICQ</strong>, AIM, studiVZ, GoogleTalk, Facebook, MySpace, Jabber and many more are supported.</p>
<h3> News24 for Android</h3>
<p><img align="right" alt="News24 Android app" src="http://20fourlabs.com/files/2009/08/4-200x300.png" title="News24 android app" width="200" height="300" /><a href="http://20fourlabs.com/2009/08/17/news24-android-application-%E2%80%93-now-available/">News24</a> is the number 1 news site in South Africa. Features of the Andoid app include:</p>
<ul>
<li>Up to the second news, sport, finance, motoring and entertainment news</li>
<li>View current and 7 day weather forecast</li>
<li>Local restaurant search</li>
<li>Customisable homescreen widget – select content and set refresh rates</li>
<li>Share content, provide feedback &#038; choose start-up view</li>
<li>Easy tabbed navigation</li>
<li>Touchscreen or TrackBall interface &#8211; with haptic feedback (vibration) option</li>
<li>Read stories in portrait or landscape mode</li>
</ul>
<p></p>
<h3>MXit for Android</h3>
<p><a href="http://www.webaddict.co.za/2009/09/22/screenshots-mxit-android-screenshots/"><img align="right" src="http://www.webaddict.co.za/wp-content/uploads/2009/09/mxit-andoid-chat.png" alt="mxit android screenshots"  width="200" height="300"/></a><br />
MXit is an Instant messaging and social networking platform for mobile phones. Founded in South Africa it now has millions of users throughout the world.</p>
<p>This list of Android applications are all available to download in the Android Market Place. As the various companies develop and release new Android applications it will be updated here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2009/12/23/android-apps-mih/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Microsoft Web Developer Summit 2009</title>
		<link>http://www.mihswat.com/2009/12/21/microsoft-web-developer-summit-2009/</link>
		<comments>http://www.mihswat.com/2009/12/21/microsoft-web-developer-summit-2009/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 11:50:05 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Web Developer Summit]]></category>
		<category><![CDATA[MWDS]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1018</guid>
		<description><![CDATA[This year I was honored by being invited to participate as a member of the PHP Community in Microsoft&#8217;s Web Developer Summit. I used the opportunity to represent the huge PHP community in Brazil and highlight the community&#8217;s work.
Let me give you a glimpse of what the event tries to accomplish and tell you what [...]]]></description>
			<content:encoded><![CDATA[<p>This year I was honored by being invited to participate as a member of the PHP Community in Microsoft&#8217;s Web Developer Summit. I used the opportunity to represent the huge PHP community in Brazil and highlight the community&#8217;s work.<span id="more-1018"></span></p>
<p>Let me give you a glimpse of what the event tries to accomplish and tell you what came out of it in 2009. MSWDS is all about communication. It is a yearly event that allows Microsoft to get in touch with key players in the PHP community and interact with them on various levels. This means they get to ask us questions, and we rant and ask them questions. It is a an effective way of getting Microsoft and PHP to do better business together, which in turn means getting better tools and better performing PHP applications on Microsoft platforms. Both sides get to know more about how the other operates.</p>
<p>Over 3 days Microsoft and the PHP community shared notes, discussed various products and opinions and shared quite a few beers and dinners at the Redmond Commons Campus.</p>
<p><strong>Microsoft has been very active in the PHP area</strong> and even though this is often received with skepticism by the overall community their actions are generating a lot of benefits for the PHP community specifically and Windows users in general. You cannot be right all the time, so Microsoft is still making some mistakes, but it is worth looking at some of what they shared with us. The final day of the conference was held under a non-disclosure agreement and is therefore not included here.</p>
<p>One of the highlights of the event was a project led by <a href="http://blogs.msdn.com/garretts/">Garrett Serrack</a> describing the process and plans for making PHP and associated libraries easier to compile from source on Windows &#8211; a project that could give Windows a push as a viable platform for PHP, since custom PHP compilations are a big part of PHP sites. Also very interesting were the news of WebPI and IIS. IIS is working on being a centralized dashboard for system developers and administrators and new tools like the SEO toolkit are laying down a new track for innovation. The road ahead for this is still long, but Microsoft got a lot of feedback on the kind of deploy and maintenance oriented services we developers would like to see such as imporvements to WinCache to offer more features and make it share the spotlight with <a href="http://php.net/manual/en/book.apc.php">APC</a>.</p>
<p>The WebPI project made life for PHP application users a breeze &#8211; its simplicity and the application gallery makes it very simple to install a complete web platform and get a site up and running. The same is not true for developers. Solutions were gathered to address developer needs &#8211; amongst these are multiple side-by-side versions of PHP and other applications, automated testing and closed cycle solutions that can contribute back to our applications as well as make our life deploying and testing before releases much easier on this platform.</p>
<p>During our <em><strong>airing of grievances</strong></em> many topics came up which Microsoft really needs to address. The long lead time to new projects and solutions and all the bureaucratic red tape that needs to be cut was the starting point and showed Microsoft they are the ones slowing themselves down. We also highlighted the areas of the world that need more attention from Microsoft evangelists. Recurring topics such as drivers for SQL Server and better developer tools for IE7 and IE8 came up as well.</p>
<p>One matter that generated heated arguments was the <a href="http://www.codeplex.org/"><em>Codeplex Foundation</em></a>. The discussion was triggered by ill-timed and not unplanned comments of an &#8220;<em>info-mercial like</em>&#8221; nature. Unfortunately Microsoft is still a huge corporation and parts of it still does not understand that the developer community does not want marketing pitches. The message hit home and some sessions reverted from that format, but the Codeplex idea was still not palatable tomost of the people present. The topic was later brought up in a round-table discussion and disagreements were addressed, showing that Microsoft is willing to correct some mistakes.</p>
<p>Some sessions had .NET solutions at their heart and were not very effective in communication, some were interesting enough to generate in us the desire to <em>copy</em> them, but in my opinion these were not really in their right place for the objective of this event. New technologies such as  PowerShell, Azure and Silverlight got lots of attention and showed some in the room that these could be much more useful than they thought it could be.</p>
<p>Silverlight triggered further discussion with its use in Bing Maps &#8211; the latter is now live with very striking visual effects. Microsoft&#8217;s skill for naming projects was criticised many times especially after we figured out that the &#8220;ASP.NET Ajax Toolkit&#8221; was an ajax library that had nothing to do with ASP.NET. This was dully noted by MS for future naming.</p>
<p>Microsoft also had an opportunity to listen to the main players in the PHP community about the community itself, <a href="http://benramsey.com/">Ramsey</a> went over some concepts of user groups and I talked about the new organization of user groups in Brazil (<a href="http://www.slideshare.net/rdohms/php-community-in-brazil">simple slides</a>). We also had sessions by <a href="http://blog.tabini.ca/">Marco</a> and <a href="http://caseysoftware.com/">Keith</a> on uncons and community participation, as well as a few sessions on tools and frameworks/closed apps.</p>
<p>One of the sessions explained how we can get in touch with Microsoft and gave us some insight on the internal structure and roles of all Microsoft related posts. This session was great and also opened the floor to questions from both sides.</p>
<p>The end result of the summit was very positive, even though we may only start seeing concrete results in a few months or even a year. The important message i got out of the conference is that Microsoft is working hard on matching Linux as a viable deploy platform and development platform, but more than that they are looking to go one better and innovate. Investing in professionals that develop PHP and its related libraries is also a way that Microsoft can help PHP to be even more viable on Windows. I guess it is becoming more viable and you should give it a try.</p>
<p>I look forward to some of the new tools and features of current products that were showcased in open and closed sessions &#8211; I believe Microsoft has a chance of doing great things for the PHP community.</p>
<p>For the team that organised MSWDS all I can say is that you did more then an awesome job: the hotel was great, social events were a great opportunity to get into more detailed talks about the day&#8217;s topics. The whole event went down without a glitch &#8211; thank you very much for all the hard work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2009/12/21/microsoft-web-developer-summit-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two Approaches To Setting Up An Agile Team</title>
		<link>http://www.mihswat.com/2009/12/01/two-approaches-to-setting-up-an-agile-team/</link>
		<comments>http://www.mihswat.com/2009/12/01/two-approaches-to-setting-up-an-agile-team/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 07:41:02 +0000</pubDate>
		<dc:creator>Graeme Cumming</dc:creator>
				<category><![CDATA[SWAT]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[teams]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=896</guid>
		<description><![CDATA[The development team at DStv Labs, a division of DStv Online and MIH SWAT has recently been thrown together to look at some exciting projects in the New Media space. In keeping with the latest thinking around agile development frameworks, the DStv Labs team has adopted Scrum as the framework that will be used to [...]]]></description>
			<content:encoded><![CDATA[<p>The development team at <strong>DStv Labs</strong>, a division of <a href="http://www.dstvo.com/">DStv Online</a> and <a href="http://www.mihswat.com">MIH SWAT</a> has recently been thrown together to look at some exciting projects in the New Media space. In keeping with the latest thinking around agile development frameworks, the DStv Labs team has adopted <strong><a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">Scrum</a></strong> as the framework that will be used to deliver these projects.<span id="more-896"></span></p>
<p>For those not familiar with <strong>Scrum</strong>, let me summarise the key principles quickly:</p>
<p>1. A project team is setup usually consisting of between 5 and 9 resources.<br />
2. The resources within the team have the set of skills needed to develop products.<br />
3. There are defined roles within this setup, namely</p>
<ul>
<li>The <strong>Product Owner</strong>:      Manages a list of product features that require development. These      features are prioritized by the Product Owner.</li>
<li>The <strong>Scrum Master</strong>:      Ensures that the processes are followed and helps the team deliver the      product features by removing any impediments that prevent them from      delivering.</li>
<li>The <strong>Team</strong>:      Self organises around the product features and collectively work together      to deliver these product features.</li>
</ul>
<p>I&#8217;m simplifying the roles here of course &#8211; there are further responsibilities that are played by each role, but this is the essence.</p>
<p>4. The team produces working demonstrations of the product features at regular intervals (typically every two weeks).<br />
5. These working demonstrations are visible to the business, allowing the business to get a view on where the product is going and whether it needs refinement or a complete change in direction.<br />
6. The refinements or improvements are then fed back into the team, prioritised by the Product owner and driven through to demonstration once again.</p>
<p>The framework is <strong>agile</strong> in nature. Problems are quick to identify, and quick to change. Traditional project management methodologies would allow a project to proceed down a long and drawn-out development path and if the up-front analysis had not been 100% accurate, or if external factors had required a change to the project during development, this would be very difficult to accommodate. The Scrum process by contrast makes sense &#8211; it is a simple, logical way of delivering projects and caters for changing requirements.</p>
<p>That said, the question of how to setup the Scrum team and environment remains. As a new team, we are facing these questions and trying to figure out the best path to creating the esteemed &#8220;<strong>High Performance Team</strong>&#8220;. There are two schools of thought here. Let me deal with the first.<br />
As competent and experienced team members, there is a sense of &#8220;doing things right, from the start&#8221;. This includes everything from ordering the right development hardware, deciding on what software is appropriate, defining the practices and principles the team is going to follow, which languages are best suited for the projects that need to be developed, and what the collaboration environments need to look like. All good stuff, and completely necessary. The planning also includes discussion and decisions around how to test the code that is developed, how it is documented, how much of this is automated versus manual, which tools are best suited for testing, how new issues get logged and fed back into the team, and how much test coverage is considered acceptable. Again, all good stuff, and all appropriate to the work that is being done within the team. It is also a good idea to get the overall context of the project defined up front so that broad architecture decisions can be made. Where the team needs to be careful however, and we are all sometimes guilty of this, is when it comes to over-engineering a solution up-front. Chances are that this picture is changing, or will eventually change. Nothing wrong with good architecture up-front, but trying to understand too much detail too soon is probably wasted effort.</p>
<p>Lets take a look at the second school of though for a moment. The principles of Scrum and Agile development methodologies and practices suggest that the value lies in <strong>delivering small</strong>, <strong>incremental features</strong>, <strong>regularly</strong>. Mistakes and changes to project scope are inevitable and it is the ability of the team to correct these mistakes, and accept the changes in scope that makes them &#8220;High Performance Teams&#8221;. Through <strong>continuous feedback</strong> and team &#8220;retrospectives&#8221;, the gaps get filled, and the holes get plugged. The team continues to improve as a result and the delivery continues to speed up &#8211; well, from the initial stages anyway. Its a situation in which the team adapts the principles of Agile software development to suit their unique environment, the individual strengths and weaknesses and their team characters.</p>
<p>The point that I am trying to make here, is that there are two ways to try and achieve the &#8220;High Performance Team&#8221;. There is the &#8220;Lets build the 6-foot armour-plated robot with Augmented Reality vision&#8221;, or, the &#8220;Lets build the stick man and determine what he needs next&#8221; approach. There is a fine line between setting up a team that does everything right from the start, and a team that is <strong>setup to learn</strong> how to do what is right for them.</p>
<p>I was recently made aware of an agile development team based in the UK that has been together for the past 60 months. They deliver code weekly, have a number of visible metrics for how many bugs are in their system and how quickly they are resolved, what the velocity (capacity for delivery) of the team is, converted into monetary value, and a number of other &#8220;reporting&#8221; metrics. Incredibly useful information, and a sign that they are a &#8220;High Performance Team&#8221;, but I wonder how much of that was setup from the start, and how much of it &#8220;evolved&#8221; as the team progressed through their 60 months of development together?</p>
<p>To take the analogy used above, whilst it is important to have a team vision in place and to follow best practices where ever possible, I firmly believe that it is best to create the stick-man from day one, and get him running in an agreed direction, rather than spend too much time thinking and planning the 6-foot robot that potentially is only capable of taking a few steps at a time, and hopefully, in the right direction.</p>
<p>That being said, our team is in a good place. We are positioned nicely and are moving forward as a unit. Hopefully the discussions that our team have had, and the conclusions drawn here, can help you position and setup your own team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2009/12/01/two-approaches-to-setting-up-an-agile-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How did they do that ?</title>
		<link>http://www.mihswat.com/2009/11/16/how-did-they-do-that/</link>
		<comments>http://www.mihswat.com/2009/11/16/how-did-they-do-that/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 12:16:43 +0000</pubDate>
		<dc:creator>hegrobler</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=913</guid>
		<description><![CDATA[
Have you ever come across a website and saw some really interesting aspects of the user interface ? Maybe it was a site design that looks like a flash site but was not? Or maybe you came across a site that had a visually appealing menu.
Coming from mostly a backend-development background I get this feeling [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-914" src="http://www.mihswat.com/wp-content/uploads/2009/10/FacebookHideSample.bmp" alt="Sample Image" width="381" height="51" /></p>
<p>Have you ever come across a website and saw some really interesting aspects of the user interface ? Maybe it was a site design that looks like a flash site but was not? Or maybe you came across a site that had a visually appealing menu.<span id="more-913"></span></p>
<p>Coming from mostly a backend-development background I get this feeling often. Last week it happened when I saw the Hide option on Facebook. I have seen it a hundred times before but on that day I found myself wondering, so I recreated the sample in my own way from scratch.</p>
<p>The following questions came to mind while looking at Facebook’s implementation:</p>
<ol>
<li>how to make the hide option, appear next to feed item that the mouse is hovering over.</li>
<li>how to make the ‘menu’ item under the hide option appear and stay there when the Hide button is clicked</li>
<li>how to remove the selected options from the list without having to refresh the whole page</li>
<li>how to send the filter option to the server without posting back the whole page</li>
</ol>
<p style="padding-top:10px">I decided that I will use styling and jQuery to complete steps 1 – 3 and use a ajax call via jQuery to post the selected filter option back to the server.</p>
<p><strong>Note</strong> that you will need some prior knowledge of jQuery selectors in order to follow the code sample. See the following urls for some background information on this:</p>
<ul>
<li><a href="http://woorkup.com/2009/10/05/jquery-lesson-series-introduction-to-selectors/">http://woorkup.com/2009/10/05/jquery-lesson-series-introduction-to-selectors/</a></li>
<li><a href="http://docs.jquery.com/Selectors">http://docs.jquery.com/Selectors</a></li>
</ul>
<p style="padding-top:10px"><strong><span style="text-decoration: underline">The following are the steps I completed to make these options work:</span></strong></p>
<h4><strong><span style="text-decoration: underline">Create the folder structure:</span></strong></h4>
<p><strong><span style="text-decoration: underline"><img class="alignnone size-full wp-image-918" src="http://www.mihswat.com/wp-content/uploads/2009/10/filestructure.bmp" alt="filestructure" /></span></strong></p>
<ol>
<li>Download the latest query plug-in (jquery.js in the screenshot) from <a href="http://jquery.com/">http://jquery.com/</a></li>
<li>Create your project with necessary files. See the screen shot for my folder structure:</li>
</ol>
<p style="padding-top:10px"><strong><span style="text-decoration: underline">Import the style sheets and javascript files:</span></strong></p>
<p>1. Place the following statements in the index.php file to reference the style sheets and javascript files</p>
<pre>&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;How did they do that: Facebook Hide&lt;/title&gt;
        &lt;link type="text/css" rel="stylesheet" href="styles/default.css" /&gt;
        &lt;script type="text/javascript" src="js/jquery.js"&gt;&lt;/script&gt;
        &lt;script type="text/javascript" src="js/jquery.feedfilter.js"&gt;&lt;/script&gt;
        &lt;script type="text/javascript" src="js/hidebutton.js"&gt;&lt;/script&gt;
    &lt;/head&gt;
&lt;body&gt;</pre>
<p style="padding-top:10px"><strong><span style="text-decoration: underline">Create the news feed items:</span></strong></p>
<ol>
<li> The sample only shows one of the news feed entries for clarity sake. Repeat item-container div for each additional item you want.</li>
<li>Note the following things when reviewing the snippet
<ol>
<li>The class name for the feed item is <span style="color: #ff00ff">item-container</span>.</li>
<li><span style="color: #ff00ff">Hide-button</span> is a child element of <span style="color: #ff00ff">item-container</span></li>
<li><span style="color: #ff00ff">Hide-menu-header</span> and <span style="color: #ff00ff">hide-button-options</span> are child elements of <span style="color: #ff00ff">hide-button</span>.</li>
<li>The <span style="color: #ff00ff">hide-menu-header</span> relates to the Hide button on the screen shot and <span style="color: #ff00ff">hide-button-options</span> relate to the menu item under that.</li>
<li>The custom <span style="color: #ff00ff">user</span> attribute on the span. This is the id (in our case a fictional id x) of the user&#8217;s events that must be filtered. This is the value that will be posted back to the server during the ajax call.</li>
</ol>
</li>
</ol>
<pre>&lt;body&gt;
    &lt;center&gt;
        &lt;div class="item-container"&gt;
            &lt;div class="left"&gt;
                &lt;div class="left"&gt;
                    &lt;a class="left" href="/profile/sampleprofile"&gt;
                        &lt;img class="profile-pic" src="images/avatar.png" width="55px" height="55px" /&gt;
                    &lt;/a&gt;
                    &lt;div style="clear:both"&gt;&lt;/div&gt;
                &lt;/div&gt;
                &lt;div class="info"&gt;
                    &lt;p&gt;
                        &lt;strong&gt;
                            &lt;a href="/profile/sampleprofile"&gt;Bruce Banner&lt;/a&gt;
                        &lt;/strong&gt; posted on twitter
                    &lt;/p&gt;
                    &lt;div class="detail"&gt;
                        &lt;a href="#"&gt;8 hours ago&lt;/a&gt; | &lt;a href="#"&gt;comment&lt;/a&gt; | &lt;a href="#"&gt;like&lt;/a&gt;
                    &lt;/div&gt;
               &lt;/div&gt;
           &lt;/div&gt;
           &lt;div class="hide-button"&gt;
               &lt;div class="hide-menu-header"&gt;
                   &lt;input type="button" value="hide"/&gt;
               &lt;/div&gt;
               &lt;span class="hide-button-options" user="x"&gt;
                   &lt;input  type="button" value="Bruce Banner" /&gt;
               &lt;/span&gt;
          &lt;/div&gt;
      &lt;/div&gt;
...
&lt;center&gt;
&lt;body&gt;</pre>
<p><strong><span style="text-decoration: underline">Link up all the events to the appropriate elements:</span></strong></p>
<p>Add script to hidebutton.js. The $(document).ready(&#8230;) construct is used to ensure that the initialization is only run once the full DOM is loaded. Note that $(document).ready(&#8230;) will run as soon as index page is loaded because it is imported in index.php and is not wrapped by any functions.</p>
<p>The script calls three methods that in turn use jQuery selectors to find the appropriate elements by class name or id and then links events to them.</p>
<ul>
<li><span style="color: #ff00ff">initializeFeedItemHoverEvent</span><span style="font-family: monospace">: adds the </span><span style="color: #ff00ff">hover </span><span style="font-family: monospace">event to all elements that contain class </span><span style="color: #ff00ff">item-container <span style="color: #000000">(news feed entries)</span></span><span style="font-family: monospace">. There are 2 functions in this method. The first is fired when a mouse cursor is moved over the element and the second is fired when the mouse is moved away from the element</span></li>
<li><span style="color: #ff00ff">initializeHideMenuClick</span><span style="font-family: monospace">: adds a </span><span style="color: #ff00ff">click </span><span style="font-family: monospace">event to all </span><span style="color: #ff00ff">hide-menu-header</span><span style="font-family: monospace"> (hide menu button) items. It uses </span><span style="color: #ff00ff">$(&#8230;).parent</span><span style="font-family: monospace"> and </span><span style="color: #ff00ff">$(&#8230;).find</span><span style="font-family: monospace"> to find the appropriate elements relative to the current element. </span><span style="color: #ff00ff">$(this)</span><span style="font-family: monospace"> in this method relates to the hide menu button. It also uses </span><span style="color: #ff00ff">removeClass</span><span style="font-family: monospace"> and </span><span style="color: #ff00ff">addClass</span><span style="font-family: monospace"> to toggle the selected and unselected appearance of the hide menu button.</span></li>
<li><span style="color: #ff00ff">initializeHideSubMenuClick</span><span style="font-family: monospace">: Calls the </span><span style="color: #ff00ff">feedfilter</span><span style="font-family: monospace">() method (explained in the next step) on the appropriate hide button sub menu element. The feedfilter() method will use ajax to post the filter back to the server.</span></li>
</ul>
<p style="padding-top:10px">
<pre>//file: hidebutton.js
$(document).ready(function() {
    initializeFeedItemHoverEvent();
    initializeHideMenuClick();
    initializeHideSubMenuClick();
});

//Initialise the hover events over the newsfeed entries function initializeFeedItemHoverEvent(){
//Find all newsfeed items that have a class called item-container
$('.item-container').hover(function() {
        //Show the hide button when the mouse moves onto the item
        $(this).find('.hide-button').show();
    },
    function() {
        //When the mouse cursor leaves the newsfeed item,
        //hide the hide button and reset the styling to original
        var hideButton = $(this).find('.hide-button');
        hideButton.hide();
        resetStyles(hideButton);
        //Hide the submenu of the hide button
        $(this).find('.hide-button-options').hide();
    })
}

//Initialise the click on the hide menu item
function initializeHideMenuClick(){
    //Find the hide button the user clicked and toggle (show/ hide) submenu
    $('.hide-menu-header').click(function() {
        //Find parent with class 'hide-button' of the current element
        //from there find the child of the found element called 'hide-button-options'
        var element = $(this).parent('.hide-button').find('.hide-button-options');

        //Find out which class is set on the current element
        //and based on that set a different class
        if ($(this).attr('class') == 'hide-menu-header'){
            $(this).removeClass('hide-menu-header');
            $(this).addClass('hide-menu-header-selected');
            element.show();
        }
        else {
            $(this).removeClass('hide-menu-header-selected');
            $(this).addClass('hide-menu-header');
            element.hide();
        }
    })
}

//Initialise the click event on the hide sub menu
function initializeHideSubMenuClick(){
    //When the user clicks on the menu option then
    //call the feedfilter method in the  jquery.feedfilter.js file
    if ($(".hide-button-options").length &gt; 0) {
        $(".hide-button-options").feedfilter();
    }
}

//Hide the menu button and its sub menus
function resetStyles(hideButton){
    var menuHeader = hideButton.find(".hide-menu-header-selected");
    if (menuHeader != null){
        menuHeader.removeClass('hide-menu-header-selected');
        menuHeader.addClass('hide-menu-header');
    }
}</pre>
<p><span style="text-decoration: underline"><strong>Complete the server post back:</strong></span><br />
The following section describes the code that fires when a user clicks on the hide button sub menu option. It first extracts the user id that is stored in the custom <span style="color: #ff00ff">user </span>attribute and posts it back to the specified page.</p>
<p>Note the <span style="color: #ff00ff">if (response == &#8220;success&#8221;) {..}</span> section. It finds all the news feed items with a sub element that has a <span style="color: #ff00ff">user </span>attribute with the same value as the news feed item that the user chose to hide.</p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace;line-height: 18px;font-size: 12px">//jquery.feedfilter.js</span></p>
<pre>//Specifiy the feedfilter function definition
//What must happen when the user clicks the sub menu item
(function($) {
	$.fn.feedfilter = function() {

		this.click(function() {
			//Call setFeedfilter
            setFeedfilter($(this));
			return false;
		})

		function setFeedfilter(obj) {

            //Get the value of the user attribute on the current element
            //as the user clicked on the hide sub menu the current element is
            //the hide sub menu
            var user = obj.attr("user");
            var container = obj;
            var originalContent = container.html();

			$.ajax({
		    	type: "POST", //post back method
		    	url: "ajaxpostback.php", //page to post back to
		    	dataType: "json",
		    	data: {"userId": user}, //additional parameters
		    	beforeSend: function(xmlhttprequest) {
                                //change the content of the sub menu button to appear as a
                                //loading animated gif
		    		container.html('&lt;img src="\" alt="\"loading\"" /&gt;')
		    	},
		    	complete: function(xmlhttprequest, textStatus) {
                               //add any code here that should fire once the post back
                               //is completed
		    	},
		    	success: function(response) {
                               //add any code that must run once the postback is completed and
                               //successfull
		    		if (response == "success") {
                        $(".item-container .hide-button-options").each( function() {
                               var data = $(this).attr("user");
                               if (user == data)
                               {
                                   $(this).parent('div').parent('.item-container').hide();
                               }
                            }
                        );
		    		}
                    else
                    {
		    			alert(response);
		    		}
		    	},
		    	error: function(xmlhttprequest,status,error) {
		    		alert("There was a problem with filtering events.");
                    container.html(originalContent);
                    }
		    })
		}
	}
})(jQuery)</pre>
<p style="padding-top:10px"><strong><span style="text-decoration: underline">What happens on the post back page?</span></strong></p>
<p>I have not implemented the actual persisting of the filter setting but have shown how to retrieve the parameter value passed from the client side.</p>
<pre>&lt;?php
    //Persist $_POST["userId"];
    echo json_encode(array("success"));
?&gt;</pre>
<p style="padding-top:10px"><span style="text-decoration: underline"><strong>View the result</strong></span></p>
<p style="padding-top:10px">Browse to the index.php page and you should get something similar to the screenshot shown below.</p>
<p><img class="alignnone size-full wp-image-967" src="http://www.mihswat.com/wp-content/uploads/2009/10/result.bmp" alt="Code Sample Result" /></p>
<p style="padding-top:10px"><strong><span style="text-decoration: underline">What&#8217;s next?</span></strong></p>
<ul>
<li>Styling can be refined. I used some inline styles etc that can be moved to the style sheets.</li>
<li>Content is static at the moment. The news feed items would normally be generated from a data store of some sort</li>
<li>Add additional error handling</li>
<li>I used inline php and markup together to simplify the example. Best practice though, is to split your php code and markup. One approach would be to implement the Model View Controler (MVC) design pattern. A good option for this is to use the Zend Framework (<a href="http://framework.zend.com/">http://framework.zend.com/</a>). It implements the MVC pattern and has loads wrapper classes that wraps commonly used functionality to promote reuse.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2009/11/16/how-did-they-do-that/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZendCon 2009 PHP Conference &#8211; Review</title>
		<link>http://www.mihswat.com/2009/11/11/zendcon-2009-php-conference-review/</link>
		<comments>http://www.mihswat.com/2009/11/11/zendcon-2009-php-conference-review/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 13:55:15 +0000</pubDate>
		<dc:creator>Neil Broers</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[zendcon]]></category>
		<category><![CDATA[zendcon09]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=1000</guid>
		<description><![CDATA[October 2009 saw my return to San Jose for one of the top conferences on the PHP calendar - ZendCon.]]></description>
			<content:encoded><![CDATA[<p>October 2009 saw my return to San Jose for one of the top conferences on the PHP calendar &#8211; ZendCon. Other than taking place a month later and the conference venue shifting locations slightly, much of the format of this year&#8217;s ZendCon was the same as last year&#8217;s.<span id="more-1000"></span></p>
<p>Taking the organizational reigns this time around, Eli White takes over from Cal Evans who recently moved from Zend to iBuildings. Organization was mostly smooth, with a few minor hiccups &#8211; day 1 had a serious lack of power supply, leaving most attendees with dying laptops before lunch. Compounding the problem, no notepads or pens were provided on registration. Attendees who had registered early and received free netbooks reported that the netbooks came with European plugs instead of US ones. However, most of these issues were sorted out by day 2.</p>
<p>The speakers at this year&#8217;s ZendCon included some familiar stalwarts &#8211; Sebastian Bergmann was back and presented on topics including testing, quality assurance and continuous integration. Accompanying him, was Stefan Priebsch and Arne Blankerts, who together with Sebastian Bergmann makes up the newly formed PHP consulting company, thePHP.cc. Cal Evans was present in the capacity as a speaker and delivered a good presentation on design patterns. Of course,  Elizabeth Marie Smith was back and presented on PHP for the desktop using php GTk as well as a talk on SPL</p>
<p>Of all the speakers, two that stood out was Ilia Alshanetsky and Stefan Priebsch. I attended two of Ilia sessions, the first about premature optimization and the second on popular caching tools, APC and Memcache. His rapid delivery style and excellent knowledge crammed an almost overwhelming amount of content into a single one hour slot. Stefan Priebsch joined in on a code review tutorial session with Sebastian Bergmann and Arne Blankerts, but it was only when he presented on OOP best practices when he came into his own. Stefan is an engaging speaker and his OOP knowledge demands a lot of respect.</p>
<p>As usual, Twitter and the ZendCon IRC channel was abuzz with attendees tweeting during the conference and was a great way to keep a finger on the conference’s pulse.</p>
<p>The conference, however, wasn&#8217;t without negatives &#8211; drinks (soft drinks and coffee) were only served after every 2 talks and physically removed after the break, even though these weren&#8217;t refrigerated to begin with. In some instances, I had to leave the conference venue to purchase my own drinks.</p>
<p>This year there was no party or any afterhours activities arranged by the conference or sponsors other than the usual reception &#8211; this year sponsored by Adobe.</p>
<p>Regarding the format of the conference, I do feel that there are too many talks and the talks are too short &#8211; it is simply not possible (unless your name is Ilia Alshanetsky) to fit any meaningful amount of information into a one hour slot , especially the more advanced topics (which are of course the more interesting ones).</p>
<p>ZendCon 09 ended with a framework shootout &#8211; a representative of each of the more popular PHP frameworks were invited to appear in a panel discussion and the audience grilled them with questions. Of course, to liven things up, each panel member was provided with a toy gun. Although not particularly useful, it was highly entertaining and a great way to end the conference with.</p>
<p>For a list of conference speakers, talks, ratings and slides of this year’s ZendCon, check out the <a title="ZendCon Joind.in page" href="http://joind.in/event/view/44">ZendCon Joind.in page</a>.</p>
<div style="overflow: hidden;width: 1px;height: 1px">
<p class="MsoNormal">ctober 2009 saw my return to San Jose for one of the top conferences on the PHP calendar &#8211; ZendCon. Other than taking place a month later and the conference venue shifting locations slightly, much of the format of this year&#8217;s ZendCon was the same as last year&#8217;s.</p>
<p class="MsoNormal">
<p class="MsoNormal">Taking the organizational reigns this time around, Eli White takes over from Cal Evans who recently moved from Zend to iBuildings. Organization was mostly smooth, with a few minor hiccups &#8211; day 1 had a serious lack of power supply, leaving most attendees with dying laptops before lunch. Compounding the problem, no notepads or pens were provided on registration. Attendees who had registered early and received free netbooks reported that the netbooks came with European plugs instead of US ones. However, most of these issues were sorted out by day 2.</p>
<p class="MsoNormal">
<p class="MsoNormal">The speakers at this year&#8217;s ZendCon included some familiar stalwarts &#8211; Sebastian Bergmann was back and presented on topics including testing, quality assurance and continuous integration. Accompanying him, was Stefan Priebsch and Arne Blankerts, who together with Sebastian Bergmann makes up the newly formed PHP consulting company, thePHP.cc. Cal Evans was present in the capacity as a speaker and delivered a good presentation on design patterns. Of course,  Elizabeth Marie Smith was back and presented on PHP for the desktop using php GTk as well as a talk on SPL.</p>
<p class="MsoNormal">
<p class="MsoNormal">Of all the speakers, two that stood out was Ilia Alshanetsky and Stefan Priebsch. I attended two of Ilia sessions, the first about premature optimization and the second on popular caching tools, APC and memcache. His rapid delivery style and excellent knowledge crammed an almost overwhelming amount of content into a single one hour slot. Stefan Priebsch joined in on a code review tutorial session with Sebastian Bergmann and Arne Blankerts, but it was only when he presented on OOP best practices when he came into his own. Stefan is an engaging speaker and his OOP knowledge demands a lot of respect.</p>
<p class="MsoNormal">
<p class="MsoNormal">As usual, Twitter and the ZendCon IRC channel was abuzz with attendees tweeting during the conference and was a great way to keep a finger on the conference’s pulse.</p>
<p class="MsoNormal">
<p class="MsoNormal">The conference, however, wasn&#8217;t without negatives &#8211; drinks (soft drinks and coffee) were only served after every 2 talks and physically removed after the break, even though these weren&#8217;t refrigerated to begin with. In some instances, I had to leave the conference venue to purchase my own drinks.</p>
<p class="MsoNormal">
<p class="MsoNormal">This year there was no party or any afterhours activities arranged by the conference or sponsors other than the usual reception &#8211; this year sponsored by Adobe.</p>
<p class="MsoNormal">
<p class="MsoNormal">Regarding the format of the conference, I do feel that there are too many talks and the talks are too short &#8211; it is simply not possible (unless your name is Ilia Alshanetsky) to fit any meaningful amount of information into a one hour slot , especially the more advanced topics (which are of course the more interesting ones).</p>
<p class="MsoNormal">
<p class="MsoNormal">ZendCon 09 ended with a framework shootout &#8211; a representative of each of the more popular PHP frameworks were invited to appear in a panel discussion and the audience grilled them with questions. Of course, to liven things up, each panel member was provided with a toy gun. Although not particularly useful, it was highly entertaining and a great way to end the conference with.</p>
<p class="MsoNormal">
<p class="MsoNormal">For a list of conference speakers, talks, ratings and slides of this year’s ZendCon, check out the ZendCon Joind.in page: <a href="http://joind.in/event/view/44">http://joind.in/event/view/44</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2009/11/11/zendcon-2009-php-conference-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vacancies at SWAT</title>
		<link>http://www.mihswat.com/2009/11/03/vacancies-at-swat/</link>
		<comments>http://www.mihswat.com/2009/11/03/vacancies-at-swat/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 11:27:04 +0000</pubDate>
		<dc:creator>Jacques van Niekerk</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[SWAT]]></category>
		<category><![CDATA[Semantic web]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[architects]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[digital TV]]></category>
		<category><![CDATA[geeks]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[IP-TV]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Microsoft .Net]]></category>
		<category><![CDATA[oo]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Sao Paulo]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Social Graph]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[VOD]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.mihswat.com/?p=977</guid>
		<description><![CDATA[Would you like to work at SWAT ?
We have a few positions vacant at the moment &#8211; have a look:
In Sao Paulo, Brazil &#8211; we need a junior front-end developer. You are highly skilled in front-end development, with specific skills in CSS, HTML and Javascript. You are a competent programmer, but you prefer to work [...]]]></description>
			<content:encoded><![CDATA[<p>Would you like to work at SWAT ?<span id="more-977"></span></p>
<p>We have a few positions vacant at the moment &#8211; have a look:</p>
<p>In Sao Paulo, Brazil &#8211; we need a<strong> junior front-end developer</strong>. You are highly skilled in front-end development, with specific skills in CSS, HTML and Javascript. You are a competent programmer, but you prefer to work on the front-end. You will be working under the guidance of an experienced and expert engineer.  You like working with bright and clever people, and you are passionate about the web. The successful candidate will speak English, and will be a paulistano, or be willing to relocate to Sao Paulo.</p>
<p>In Johannesburg &#8211; we are looking for a <strong>senior technical architect</strong>. You will have the opportunity to establish the blueprint and create the framework for truly cutting edge media delivery platforms that will change the face of media in South Africa. And that is no exaggeration. You should have outstanding technical skills, including the ability to code as and when required. You must be able to interact with a team of highly skilled professionals. You will ideally have experience of VOD, digital TV, IP-TV and related technologies. A background as a developer is essential &#8211; you will have in-depth knowledge of the Microsoft .Net platform, but also wider knowledge of open source platforms and languages. You are comfortable dealing with executives and senior managers. You&#8217;re not only an ubergeek, but also an inspirational tech leader. This is a challenging position &#8211; but it represents a massive opportunity to the right person. Detailed requirements <a href="http://www.mihswat.com/wp-content/uploads/2009/11/Lead-Architect1.pdf">here.</a></p>
<p>In Cape Town &#8211; we are looking for a <strong>junior tester</strong>, who will devote a great deal of time to ensuring that a large corporate social network meets the right quality standards. You will be part of the SWAT core team &#8211; you must be prepared to work with some of the best developers, architects, geeks and web-heads you are ever likely to meet. Can you execute tasks on your own initiative, prepare and execute test plans ? More details on the position can be found <a href="http://www.mihswat.com/wp-content/uploads/2009/11/Junior-Tester.pdf">here. </a></p>
<p>Cape Town &#8211; we are looking for someone to play the role of <strong>Internet Evangelist</strong>. This role is available to anyone who is absolutely passionate about the web, who is capable of conveying this passion to diverse audiences, who learns quickly &#8230; and who can teach others. Your role will be to evangelise the use of Web technologies (and other Internet related technologies) into the larger group &#8211; the challenge is to make people from all non-internet businesses see the Internet as an opportunity not a threat. In addition you will perform tasks as assistant community manager for the corporate social network, and you will assist the Analyst in the team with research tasks. You must be willing to travel in South Africa and abroad, as required. To apply for this job, you will have to demonstrate passion, interest and knowledge of the Web and related technologies. You are a well-spoken, confident geek, web-head and proud to be a Web addict. </p>
<p>Finally, and also in Cape Town &#8211; we want to recruit a <strong>PHP developer</strong>. You will be have outstanding technical skills, wide experience in web based development, and you will be able to hold your own amongst an elite group of developers and architects. Javascript, Zend Framework, AJAX, OO, Web 2.0, REST, SOAP and UML will be old news to you. You are passionate about the web. If you think Twitter is silly, you don&#8217;t need to apply. More information <a href="http://www.mihswat.com/wp-content/uploads/2009/11/PHP-Developer1.pdf">here.</a></p>
<p>If you are interested in any of these positions, please send your CV to <a href="mailto:mkoch@mihinternet.com">Melanie Koch</a>. We look forward to hearing from you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mihswat.com/2009/11/03/vacancies-at-swat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
