<?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>equivocal ramblings</title>
	<atom:link href="http://www.kevinfrancis.net/journal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kevinfrancis.net/journal</link>
	<description>the occasional journal of kevin francis</description>
	<lastBuildDate>Tue, 09 Apr 2013 06:56:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>My First 2012</title>
		<link>http://www.kevinfrancis.net/journal/2012/12/my-first-2012/</link>
		<comments>http://www.kevinfrancis.net/journal/2012/12/my-first-2012/#comments</comments>
		<pubDate>Mon, 31 Dec 2012 11:53:58 +0000</pubDate>
		<dc:creator>Kevin Francis</dc:creator>
				<category><![CDATA[Brilliance]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.kevinfrancis.net/journal/?p=285</guid>
		<description><![CDATA[Inspired by @bearwithclaws&#8216; and @cheeaun&#8216;s own posts, I thought I should sit down and reflect on 2012. This year has seen a number of firsts for me: Quit my job and founded a company! Pair programmed with @kamal, @bearwithclaws, and very briefly @sengming &#8212; a tremendous learning experience for me in Rails, JavaScript, and CSS. [...]]]></description>
				<content:encoded><![CDATA[<p><em>Inspired by <a href="http://twitter.com/bearwithclaws">@bearwithclaws</a>&#8216; and <a href="http://twitter.com/cheeaun">@cheeaun</a>&#8216;s own posts, I thought I should sit down and reflect on 2012.</em></p>

<p>This year has seen a number of firsts for me:</p>

<ul>
<li>Quit my job and founded a company!</li>
<li>Pair programmed with <a href="http://twitter.com/kamal">@kamal</a>, <a href="http://twitter.com/bearwithclaws">@bearwithclaws</a>, and <em>very</em> briefly <a href="http://twitter.com/sengming">@sengming</a> &#8212; a tremendous learning experience for me in Rails, JavaScript, and CSS. Between them, they&#8217;ve helped redefine how I think as a developer.</li>
<li>Learnt Ruby, and Ruby on Rails.</li>
<li>Attended <a href="http://reddotrubyconf.com/">Red Dot Ruby Conf</a> for the first time. This was really fun thanks to the guys at <a href="http://says.com">SAYS</a>, <a href="http://www.linkedin.com/in/aaronchipper">Aaron Chipper</a>, and of course, the regular crew from Fluent Space and <a href="http://webcamp.my/">WCKL</a> :)</li>
<li>Vacationed overseas for the first time (despite having travelled internationally dozens of times for work) at <a href="http://www.sripanwa.com">Sri Panwa</a> in Thailand.</li>
</ul>

<p>It&#8217;s been a good year, all things considered. I think a lot of it had to do with my actively spending time slowing life down, stopping to smell the metaphorical roses if you will.</p>

<p>Here&#8217;s to 2013, and new beginnings.</p>

<p>P.S.: <a href="http://twitter.com/kamal">@kamal</a> I still remember the way you used to grip that glass of water oh so firmly during those first few days when I stumbling around in Ruby :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2012/12/my-first-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shockingly Good Facebook Virus/Trojan Attack Attempt</title>
		<link>http://www.kevinfrancis.net/journal/2011/07/shockingly-good-facebook-virustrojan-attack-attempt/</link>
		<comments>http://www.kevinfrancis.net/journal/2011/07/shockingly-good-facebook-virustrojan-attack-attempt/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 03:02:04 +0000</pubDate>
		<dc:creator>Kevin Francis</dc:creator>
				<category><![CDATA[Memes]]></category>
		<category><![CDATA[Morons]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.kevinfrancis.net/journal/?p=265</guid>
		<description><![CDATA[So this morning a friend of mine sent me a bunch of messages on facebook, claiming that I was caught doing some funny stuff on video (entirely possible really): By now I was suspicious, cause Amin doesn&#8217;t actually type messages out like a teenage girl (for the most part). So I clicked the link, and [...]]]></description>
				<content:encoded><![CDATA[<p>So this morning a friend of mine sent me a bunch of messages on facebook, claiming that I was caught doing some funny stuff on video (entirely possible really):</p>

<p><a href="http://www.kevinfrancis.net/journal/wp-content/uploads/2011/07/fb-virus-attack1.png"><img src="http://www.kevinfrancis.net/journal/wp-content/uploads/2011/07/fb-virus-attack1.png" alt="" title="fb-virus-attack1" width="260" height="400" class="aligncenter size-full wp-image-267" /></a></p>

<p>By now I was suspicious, cause Amin doesn&#8217;t actually type messages out like a teenage girl (for the most part). So I clicked the link, and found this page next:</p>

<p><a href="http://www.kevinfrancis.net/journal/wp-content/uploads/2011/07/fb-virus-attack31.png"><img src="http://www.kevinfrancis.net/journal/wp-content/uploads/2011/07/fb-virus-attack31.png" alt="" title="fb-virus-attack3" width="661" height="618" class="aligncenter size-full wp-image-268" /></a></p>

<p>This is brilliant! A message that you need to update your Flash Player, very common for new installs of Windows. What makes it more convincing is the comments list &#8212; people from my Friends List, and that of the original victim appear to be egging me on to download the Flash Update and install it!</p>

<p><a href="http://www.kevinfrancis.net/journal/wp-content/uploads/2011/07/fb-virus-attack4.png"><img src="http://www.kevinfrancis.net/journal/wp-content/uploads/2011/07/fb-virus-attack4.png" alt="" title="fb-virus-attack4" width="661" height="524" class="aligncenter size-full wp-image-269" /></a></p>

<p>I suspect I&#8217;m going to be getting an increased number of desperate please for help within the next few days from people who worry if their antics have been caught on video, and as a result upgraded their Flash Player. Sigh.</p>

<p><b>UPDATE:</b> Thanks to <a href="http://www.kevinfrancis.net/journal/2011/07/shockingly-good-facebook-virustrojan-attack-attempt/comment-page-1/#comment-1243">Sophie Hamilton</a>, I have more info on it at <a href="http://www.malwarecity.com/blog/trojanfakeavlvt-plays-you-like-in-movies-1114.html">Malware City</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2011/07/shockingly-good-facebook-virustrojan-attack-attempt/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Building a SOAP Server with Zend_Soap_Server and Returning Arrays of ComplexTypes</title>
		<link>http://www.kevinfrancis.net/journal/2011/06/building-a-soap-server-with-zend_soap_server-and-returning-arrays-of-complextypes/</link>
		<comments>http://www.kevinfrancis.net/journal/2011/06/building-a-soap-server-with-zend_soap_server-and-returning-arrays-of-complextypes/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 04:23:01 +0000</pubDate>
		<dc:creator>Kevin Francis</dc:creator>
				<category><![CDATA[Brilliance]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Lazy Web]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.kevinfrancis.net/journal/?p=242</guid>
		<description><![CDATA[ZendFramework is awesome but suffers from a peculiar lack of thorough examples and documentation. To save you all some time scouring the internet fruitlessly, I will document how to use Zend_Soap_Server, and Zend_Soap_AutoDiscover in combination with Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex (try saying that really fast a few times!). A Complete Example No one ever put together a full [...]]]></description>
				<content:encoded><![CDATA[<p>ZendFramework is awesome but suffers from a peculiar lack of thorough examples and documentation.</p>

<p>To save you all some time scouring the internet fruitlessly, I will document how to use <code>Zend_Soap_Server</code>, and <code>Zend_Soap_AutoDiscover</code> in combination with <code>Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex</code> (try saying that really fast a few times!).</p>

<h2>A Complete Example</h2>

<p>No one <strong>ever</strong> put together a full example in the documentation, their blog posts, the official Zend samples or anywhere else I searched yesterday. It&#8217;s always snippets here and there, and they don&#8217;t fit together well. So let me save you some trouble. I figure your reaching this page means you&#8217;ve already passed the first test which is to know the classes you need, which is why the search brought you here :)</p>

<p>I&#8217;m binding my webservice to a class, as that would be the logical choice in most cases.</p>

<pre><code>/* these are required for it all to work */
require("Zend/Soap/Server.php");
require("Zend/Soap/Wsdl.php");
require("Zend/Soap/Wsdl/Strategy/ArrayOfTypeComplex.php");
require("Zend/Soap/AutoDiscover.php");


/* my system makes use of a global prefix, feel free to do as needed */
$serviceURL = WWWPREFIX . '/webservices/myservice';


public class MyService {
     /**
     *
     * @param integer $UserID
     * @return array
     */
    function GetCoupons($UserID) {
        // do some work here
        $coupons = array(new Coupon(), new Coupon());
    }
}

// Generate WSDL relevant to code
if (isset($_GET['wsdl'])){
    $autodiscover = new Zend_Soap_AutoDiscover('Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex');
    $autodiscover-&gt;setClass('MyService');
    $autodiscover-&gt;handle();
} else {
    $server = new Zend_Soap_Server($serviceURL . "?wsdl");
    $server-&gt;setClass('MyService');
    $server-&gt;setObject(new MyService());
    $server-&gt;handle();
}
</code></pre>

<p>There are a few points of interest in the code block above (which is a completely functional service btw):</p>

<ul>
<li>Notice the <code>PHPDoc</code> block above the function? If you don&#8217;t get that right, it won&#8217;t work at all</li>
<li>The <em>return type of <strong><code>array</code></strong></em> because we&#8217;re returning an <em><code>array</code></em> of objects</li>
<li>The <code>Zend_Soap_AutoDiscover</code> bit at the bottom? That&#8217;ll auto-generate your <code>WSDL</code> for you</li>
</ul>

<p>There, you&#8217;re done. It should all just work, complete with WSDL auto-generation. If you&#8217;re looking to make use of an existing WSDL file, you can use the secondary method of binding to methods/functions as outlined over at the <a href="http://framework.zend.com/manual/en/zend.soap.server.html">official documentation on <code>Zend_Soap_Server</code></a>.</p>

<p>Say thank you Uncle Kevin :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2011/06/building-a-soap-server-with-zend_soap_server-and-returning-arrays-of-complextypes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>I Was Going to Write Something More Meaningful But I Suddenly Realised That I Have to Leave in 7 Minutes</title>
		<link>http://www.kevinfrancis.net/journal/2010/12/i-was-going-to-write-something-more-meaningful-but-i-suddenly-realised-that-i-have-to-leave-in-7-minutes/</link>
		<comments>http://www.kevinfrancis.net/journal/2010/12/i-was-going-to-write-something-more-meaningful-but-i-suddenly-realised-that-i-have-to-leave-in-7-minutes/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 09:54:08 +0000</pubDate>
		<dc:creator>Kevin Francis</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://kevinfrancis.net/journal/?p=224</guid>
		<description><![CDATA[So maybe next time, eh?]]></description>
				<content:encoded><![CDATA[<p>So maybe next time, eh?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2010/12/i-was-going-to-write-something-more-meaningful-but-i-suddenly-realised-that-i-have-to-leave-in-7-minutes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instapaper</title>
		<link>http://www.kevinfrancis.net/journal/2010/05/instapaper/</link>
		<comments>http://www.kevinfrancis.net/journal/2010/05/instapaper/#comments</comments>
		<pubDate>Sat, 15 May 2010 14:25:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://kevinfrancis.net/journal/?p=221</guid>
		<description><![CDATA[Instapaper is one of the best web-based tools I&#8217;ve used in a long long while. I love the recommendations &#8212; I just skim the headlines and click Read Later. The Google Reader integration is awesome too. It just integrates so well into my daily routine. Instapaper, an example of a tool that does one thing, [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.instapaper.com/">Instapaper</a> is one of the best web-based tools I&#8217;ve used in a long long while. I love the recommendations &#8212; I just skim the headlines and click <em>Read Later</em>. The <em>Google Reader</em> integration is awesome too. It just integrates so well into my daily routine.</p>

<p>Instapaper, an example of a tool that does one thing, and does it well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2010/05/instapaper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>He&#8217;s Definitely Not Getting a Zonda</title>
		<link>http://www.kevinfrancis.net/journal/2009/06/hes-definitely-not-getting-a-zonda/</link>
		<comments>http://www.kevinfrancis.net/journal/2009/06/hes-definitely-not-getting-a-zonda/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 06:53:35 +0000</pubDate>
		<dc:creator>Kevin Francis</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Morons]]></category>

		<guid isPermaLink="false">http://kevinfrancis.net/journal/2009/06/hes-definitely-not-getting-a-zonda/</guid>
		<description><![CDATA[&#8220;I want a 350Z&#8221;, Sanjev said to me. &#8220;Well, I want a Zonda&#8220;. We were discussing dreams for one reason or another while waiting for the phone-shop dude to finish sticking on a screen protector for me. It took him about fifteen minutes from start to end, which really built up my expectations. From the [...]]]></description>
				<content:encoded><![CDATA[<p>&#8220;I want a 350Z&#8221;, Sanjev said to me. &#8220;Well, I want a <a href="http://en.wikipedia.org/wiki/Pagani_Zonda">Zonda</a>&#8220;. We were discussing dreams for one reason or another while waiting for the phone-shop <em>dude</em> to finish sticking on a screen protector for me. It took him about fifteen minutes from start to end, which really built up my expectations. From the care he showed in positioning it (3 retries!) I thought to myself, &#8220;this is going to be the best screen protector ever!&#8221;.</p>

<p>I was wrong. He positioned it too far right, and somewhere along the way managed to leave a mark on the top left edge.</p>

<p>As we walked away, I was ranting about how badly done it was, and Sanjev turned and said sardonically, &#8220;Well he&#8217;s definitely not getting a Zonda&#8221;. I have to agree.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2009/06/hes-definitely-not-getting-a-zonda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVNKit + Subclipse Problems</title>
		<link>http://www.kevinfrancis.net/journal/2009/05/svnkit-subclipse-problems/</link>
		<comments>http://www.kevinfrancis.net/journal/2009/05/svnkit-subclipse-problems/#comments</comments>
		<pubDate>Thu, 21 May 2009 17:35:47 +0000</pubDate>
		<dc:creator>Kevin Francis</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Lazy Web]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://kevinfrancis.net/journal/?p=199</guid>
		<description><![CDATA[If you&#8217;re experiencing difficulty getting Subclipse working with SVNKit, install the very latest. One of the dependencies pulled in will list an SVNKit beta. Install that one and it&#8217;ll suddenly show up as a provider. This is true as of Eclipse Ganymede and Subclipse 1.6.2 (installed with CollabNet Desktop). Just thought to save someone else [...]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;re experiencing difficulty getting Subclipse working with SVNKit, install the very latest. One of the dependencies pulled in will list an SVNKit beta. Install <em>that</em> one and it&#8217;ll suddenly show up as a provider.</p>

<p>This is true as of Eclipse Ganymede and Subclipse 1.6.2 (installed with CollabNet Desktop). Just thought to save someone else several hours of their life :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2009/05/svnkit-subclipse-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Google Accounts</title>
		<link>http://www.kevinfrancis.net/journal/2009/05/on-google-accounts/</link>
		<comments>http://www.kevinfrancis.net/journal/2009/05/on-google-accounts/#comments</comments>
		<pubDate>Tue, 19 May 2009 15:34:30 +0000</pubDate>
		<dc:creator>Kevin Francis</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://kevinfrancis.net/journal/?p=197</guid>
		<description><![CDATA[I have several domains running Google Apps for Domains. I also have a GMail/Google account. I&#8217;ve always found it odd that I cannot link my kevin@kevinfrancis.net account to my Google account in some way. It&#8217;s a bit funny to have to keep what appears to be multiple Google accounts sitting around&#8230; I wonder if OpenID [...]]]></description>
				<content:encoded><![CDATA[<p>I have several domains running Google Apps for Domains. I also have a GMail/Google account. I&#8217;ve always found it odd that I cannot link my kevin@kevinfrancis.net account to my Google account in some way.</p>

<p>It&#8217;s a bit funny to have to keep what <em>appears</em> to be multiple Google accounts sitting around&#8230; I wonder if OpenID will factor into this in the future?</p>

<p><strong>Update:</strong> Turns out that Google has fixed this now, by making Google Apps accounts first-class citizens, like gmail accounts. There is a downside though &#8212; you can only be logged into a maximum of 3 Google Accounts at the same time :(</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2009/05/on-google-accounts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firefox Scaling Zoom Kills Performance</title>
		<link>http://www.kevinfrancis.net/journal/2009/03/firefox-scaling-zoom-kills-performance/</link>
		<comments>http://www.kevinfrancis.net/journal/2009/03/firefox-scaling-zoom-kills-performance/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 17:13:47 +0000</pubDate>
		<dc:creator>Kevin Francis</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://kevinfrancis.net/journal/?p=180</guid>
		<description><![CDATA[I&#8217;m rather insistent about scaling zoom being set by default 120% of my copy of Firefox. I achieve this with the NoSquint plugin add-on. Of late I&#8217;d been noticing that Firefox page scrolling was really really really bad. Turns out this is caused by scaling zoom &#8212; turn the default page zoom to 100% and [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m rather insistent about scaling zoom being set by default 120% of my copy of Firefox. I achieve this with the NoSquint <del datetime="2009-03-01T17:05:35+00:00">plugin</del> add-on. Of late I&#8217;d been noticing that Firefox page scrolling was really really really bad.</p>

<p>Turns out this is caused by scaling zoom &#8212; turn the default page zoom to 100% and performance is really good, with scrolling being smooth and uniform.</p>

<p>Also, I today discovered that I&#8217;ve been right to avoid using the word <em>performant</em> &#8212; <a href="http://weblogs.asp.net/jgalloway/archive/2007/05/10/performant-isn-t-a-word.aspx">performant is not a word</a>! Seems this is quite endemic to the technology industry as I&#8217;ve seen this word being used in everything from white papers to published books&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2009/03/firefox-scaling-zoom-kills-performance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Safari 4 Scaling Zoom</title>
		<link>http://www.kevinfrancis.net/journal/2009/02/safari-4-scaling-zoom/</link>
		<comments>http://www.kevinfrancis.net/journal/2009/02/safari-4-scaling-zoom/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 13:10:10 +0000</pubDate>
		<dc:creator>Kevin Francis</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Lazy Web]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://kevinfrancis.net/journal/?p=178</guid>
		<description><![CDATA[Finally, Safari has page scaling in the v4 Beta. Sadly though it appears to exhibit strange behaviour with GMail for instance &#8212; When I zoom in, it also scales the width of the entire page, which means I now have to scroll left and right :( Now, whilst this may or may not be the [...]]]></description>
				<content:encoded><![CDATA[<p>Finally, Safari has page scaling in the v4 Beta. Sadly though it appears to exhibit strange behaviour with GMail for instance &#8212; When I zoom in, it also scales the width of the entire page, which means I now have to scroll left and right :(</p>

<p>Now, whilst this may or may not be the best thing for scaling zoom to do, my question is rather about whether it&#8217;s the <em>right</em> thing to do&#8230;</p>

<p>Page scaling <em>should</em> in theory scale <strong>everything</strong> right? Thoughts anyone? Perhaps you&#8217;re familiar with the W3 recommendation on this matter&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevinfrancis.net/journal/2009/02/safari-4-scaling-zoom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
