<?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>Tiago&#039;s Tech Blog</title>
	<atom:link href="http://www.tiagoespinha.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tiagoespinha.net</link>
	<description>My life, ideas, news and applications</description>
	<lastBuildDate>Tue, 05 Feb 2013 10:45:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<image>
  <link>http://www.tiagoespinha.net</link>
  <url>http://www.tiagoespinha.net/favico.jpg</url>
  <title>Tiago&#039;s Tech Blog</title>
</image>
		<item>
		<title>libgdx and Vector2 mutability</title>
		<link>http://www.tiagoespinha.net/2012/11/libgdx-and-vector2-mutability/</link>
		<comments>http://www.tiagoespinha.net/2012/11/libgdx-and-vector2-mutability/#comments</comments>
		<pubDate>Wed, 07 Nov 2012 20:48:27 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[Quickies]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[libgdx]]></category>
		<category><![CDATA[quickies]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=574</guid>
		<description><![CDATA[Here&#8217;s a quick post to rant about something that&#8217;s been affecting me for the last couple of days. Recently I find myself toying around with libgdx to work on a game that I&#8217;ve been meaning to develop for a while. The problem with this library is that apparently, all Vector2 functions affect the actual vector ...]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Here&#8217;s a quick post to rant about something that&#8217;s been affecting me for the last couple of days.</p>
<p style="text-align: justify;">Recently I find myself toying around with libgdx to work on a game that I&#8217;ve been meaning to develop for a while. The problem with this library is that apparently, all Vector2 functions affect the actual vector on which they are invoked. This goes against the Java standard of immutability for non-primitive types and is incredibly annoying, especially because these functions will also return the vector for chaining.</p>
<p style="text-align: justify;">Why is this annoying? Well, when you&#8217;re used to the Java standard, you don&#8217;t expect any functions to affect the actual object. Think for example about Java&#8217;s String.split. This will never affect the String itself, especially because the String is immutable. Affecting the String would mean creating a new instance of that string with the change applied to it.</p>
<p style="text-align: justify;">Frankly, I&#8217;m not sure what happens in the backstage but this stinks.</p>
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=574" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2012/11/libgdx-and-vector2-mutability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turmeric SOA &#8211; Lessons learned</title>
		<link>http://www.tiagoespinha.net/2012/09/turmeric-soa-lessons-learned/</link>
		<comments>http://www.tiagoespinha.net/2012/09/turmeric-soa-lessons-learned/#comments</comments>
		<pubDate>Fri, 28 Sep 2012 08:21:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Open source]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[eBay]]></category>
		<category><![CDATA[Intalio]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[Software as a service]]></category>
		<category><![CDATA[Turmeric SOA]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=564</guid>
		<description><![CDATA[As soon as I picked up on Turmeric SOA as the engine that powers my research, one of my supervisors warned me: be careful, or you&#8217;ll be caught in technology hell. As much as I hate to admit it, this has inevitably happened. The point is&#8230; I&#8217;m using Turmeric SOA which is open-source and open-source ...]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">As soon as I picked up on Turmeric SOA as the engine that powers my research, one of my supervisors warned me: be careful, or you&#8217;ll be caught in technology hell. As much as I hate to admit it, this has inevitably happened. The point is&#8230; I&#8217;m using Turmeric SOA which is open-source and open-source is great for research. Everything is so open that I can afford to publish literally everything I do. This means that all the claims I make with my research can be easily verified independently by other researchers.</p>
<p style="text-align: justify;">I love this transparency.</p>
<p style="text-align: justify;">The problem comes when the transparency is the result of emptiness. More specifically, Turmeric SOA is open but its documentation lacks vastly. In the inception of its open-sourcing by Intalio, Inc. their software engineers were working night and day to adapt the wiki pages (which apparently are the only public form of documentation) from mentioning &#8220;EBAY&#8221; to mentioning &#8220;TURMERIC&#8221;. However, as the dust began to settle and eBay decided to go in-house with the open-sourcing, the work done on Turmeric SOA has greatly diminished and what once was a promising open project is now a graveyard. eBay&#8217;s software engineers keep a low key and aren&#8217;t exactly supportive of other people using Turmeric SOA which is very disappointing. It seems common sense that if a project is open-sourced, the main goal should be for it to get a large user-base. The more people contributing and using a piece of software, the more ideas and bugs will be found and thus, the more refined the project will become.</p>
<p style="text-align: justify;">This has not happened. As an outsider, eBay&#8217;s stance on open-source seems that of a beach-goer who&#8217;s too afraid to go for a dive and instead just keeps probing the water with their toes. This is bad. It&#8217;s bad for eBay because it will inevitably taint their reputation with open-source, it&#8217;s bad for the community who now get a half-baked services platform and it&#8217;s bad more specifically for me. Now I have to deal with a promising but ultimately difficult to use platform. Most everything I do with Turmeric SOA requires copious amounts of manual debugging in order to figure out what&#8217;s happening and ultimately, these debugging sessions reveal that what was advertised as a feature, really isn&#8217;t one.</p>
<p style="text-align: justify;">In sum, the lesson learned is: be wary of large open-source projects. Unless there is a strong community around it, you&#8217;re gonna have a real tough time.</p>
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=564" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2012/09/turmeric-soa-lessons-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The cross-discipline conundrum (or how we can&#8217;t always learn from other disciplines)</title>
		<link>http://www.tiagoespinha.net/2012/07/the-cross-discipline-conundrum-or-how-we-cant-always-learn-from-other-disciplines/</link>
		<comments>http://www.tiagoespinha.net/2012/07/the-cross-discipline-conundrum-or-how-we-cant-always-learn-from-other-disciplines/#comments</comments>
		<pubDate>Tue, 10 Jul 2012 14:22:03 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=549</guid>
		<description><![CDATA[I was cycling home one day and this thought popped into my mind: I&#8217;m trying to address the issues of multi-tenancy in software systems. In other words, that is to say that I&#8217;m trying to make it easier for several software systems to co-exist, as tenants, in the same piece of hardware. When we think ...]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">I was cycling home one day and this thought popped into my mind: I&#8217;m trying to address the issues of multi-tenancy in software systems. In other words, that is to say that I&#8217;m trying to make it easier for several software systems to co-exist, as tenants, in the same piece of hardware. When we think about it from a software perspective, it is definitely novel &#8211; big names out there like Microsoft, VMWare, Salesforce, etc are working hard on this (each in their own way of course) and it&#8217;s a rather hot topic. Companies provide their employees with Microsoft Azure training and there&#8217;s this growing need to fit more (tenants) in less (hardware). Come to think of it, it&#8217;s a bit like what&#8217;s happening in big cities all over the world.</p>
<p style="text-align: justify;">Wait a minute.</p>
<p style="text-align: justify;"><strong>That&#8217;s exactly what&#8217;s happening in big cities all over the world!</strong></p>
<p style="text-align: justify;">And why does this matter, you ask. Well, we&#8217;ve been doing this with people and cities for the best part of a century, so maybe some of the problems we face in software have already been dealt with in the &#8220;physical world&#8221;. &#8220;Sure, Tiago, that&#8217;s obvious! Why are you still writing this blog post and not out there reading books on urbanization?&#8221;. Yeah, yeah, yeah&#8230; have you read the title of the post? How we <strong>can&#8217;t</strong> always learn from other disciplines.</p>
<p style="text-align: justify;">Multi-tenancy in software engineering presents its own challenges. How can you compare the concept of software versioning to any concept of the physical world? Same goes for concepts like deploying several instances of the same piece of software in different servers. Surely we can&#8217;t deploy the same person across several buildings (well, quantum physics says we can, but let&#8217;s stick to classical mechanics for the purpose of this post) and we definitely don&#8217;t want to have a tenant with a bathroom on one street, the bedroom two blocks away and finally the living room in a different town. That doesn&#8217;t work for people, it&#8217;s not convenient, but it works for software. Software doesn&#8217;t care if it has to invoke method foo() in its own memory stack or if it has to wrap its request in SOAP and have it traverse all over the world to have it executed.</p>
<p style="text-align: justify;">So what&#8217;s the point of this post, really? While it&#8217;s always good to have a broad cross-disciplinary view and keep an open mind and an eye out for other fields which might be (metaphorically) solving the same problems as yourself, it&#8217;s also very important to identify genuine problems in your field. Sure, resorting to metaphors is perfect to learn from other fields but these don&#8217;t always apply perfectly and when they don&#8217;t apply perfectly, my theory is that they are no good.</p>
<p style="text-align: justify;">In other news, I just submitted my paper to WCRE 2012 <img src='http://www.tiagoespinha.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  let&#8217;s see how convincing am I with my maintenance techniques for distributed systems&#8230;</p>
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=549" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2012/07/the-cross-discipline-conundrum-or-how-we-cant-always-learn-from-other-disciplines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing the way I use my Mac</title>
		<link>http://www.tiagoespinha.net/2012/07/changing-the-way-i-use-my-mac/</link>
		<comments>http://www.tiagoespinha.net/2012/07/changing-the-way-i-use-my-mac/#comments</comments>
		<pubDate>Mon, 09 Jul 2012 09:58:46 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=555</guid>
		<description><![CDATA[I'm a browser person. Pretty much everything I do sits inside the browser: e-mails, RSS feeds, reading the news, facebook, etc... everything happens inside the browser. ]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">I never thought I would come to write such a post one day, but the truth of the matter is: the way I used to use my computer wasn&#8217;t sustainable. Whoa! It seems you really can use the word sustainable wherever you want&#8230;</p>
<p style="text-align: justify;">I&#8217;m a browser person. Pretty much everything I do sits inside the browser: e-mails, RSS feeds, reading the news, facebook, etc&#8230; everything happens inside the browser. When I need to find a scientific paper, what do I do? That&#8217;s right! I use my browser to go to Google Scholar where I then search for what I&#8217;m looking for. Nowadays I&#8217;m even having some Google Docs action ever since I started sharing documents with my fiancée which require the capability of simultaneous collaborative editing. Sadly, all of this can only happen in the browser. Microsoft, with all its might, still hasn&#8217;t figured out a way to make Microsoft Office collaborative. But I digress.</p>
<p style="text-align: justify;">The point is, those of you who are lazy and like to keep things at hand (like me), probably end up with at least 10 tabs open at all time. And your work flow is something like &#8220;open tab&#8221;, &#8220;search for something&#8221;, &#8220;close tab&#8221; and that would be peachy if it wasn&#8217;t for all the <del>bugs</del> features present in nowadays&#8217; browsers. For example, if you close a tab in Chrome, Chrome will still keep that tab stored just in case you made a mistake and want to bring it back to life. Similarly, all your path within a tab is stored, in case you want to push the back button to go to where you where before. Now, when you put these two together (a whole path plus saving all the closed tabs), this brings up quite a massive memory requirement. In the beginning it might not be noticeable, but Chrome (and Firefox, Safari, etc) can grow above 1Gb of memory quite fast.</p>
<p style="text-align: justify;">When that happens, your computer will start swapping memory to the hard-drive and eventually you&#8217;ll start to feel sluggishness in everything you do.</p>
<p style="text-align: justify;">How can I fix that? This was my first thought. And if I can&#8217;t drive web-browser developers to do something about it and truly make their code more memory friendly, that means I have to change the way I use my Mac. It started with GMail. I&#8217;m an avid GMail user but GMail&#8217;s web interface is loaded with resource-hogging javascript. This meant that GMail had to go and give way to a more resource friendly Thunderbird. A purpose-built application which, despite only serving one task, it&#8217;s always there whenever I need it. It also notifies me whenever I receive a new e-mail and I can even replace Outlook which I was using for my university e-mail! Something about two birds and a stone comes to mind&#8230;</p>
<p style="text-align: justify;">Not requiring to have my e-mail open in the browser anymore, this meant I could just close the browser whenever I don&#8217;t need it. This has been the biggest change in my behavior. Nowadays, I open the browser, check whatever I want to check, and afterwards, the way of the dinosaurs it goes again. This means that the memory usage of the browser never goes up like mad anymore, my computer is always snappy and all the frustration of dealing with a slow as molasses computer is gone.</p>
<p style="text-align: justify;">Nota bene, I have 8Gb of RAM in my Mac, I&#8217;ve had it this way for a while now, and if history has taught me anything, that is that no amount of RAM is enough when you use the browser continuously, without ever closing it or restarting your computer. Period.</p>
<p style="text-align: justify;">Lesson learned? How happy you feel about your computer&#8217;s speed has a strong correlation (and causation) with how often you close your browser.</p>
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=555" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2012/07/changing-the-way-i-use-my-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Quickies] Why can&#8217;t I move (certain) applications to the SD card?</title>
		<link>http://www.tiagoespinha.net/2012/01/quickies-why-cant-i-move-certain-applications-to-the-sd-card/</link>
		<comments>http://www.tiagoespinha.net/2012/01/quickies-why-cant-i-move-certain-applications-to-the-sd-card/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 13:56:59 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Quickies]]></category>
		<category><![CDATA[android move to SD]]></category>
		<category><![CDATA[Android OS]]></category>
		<category><![CDATA[move applications to SD card]]></category>
		<category><![CDATA[quickies]]></category>
		<category><![CDATA[SD card]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=539</guid>
		<description><![CDATA[Following up on the previous &#8220;quickies&#8221; format, I decided to answer a question that goes unanswered through a quick Google search. This quickie has to do with the Android OS platform. Question: Why can&#8217;t I move certain applications to the SD card? Answer: The &#8220;move to SD card&#8221; feature of Android MUST be explicitly enabled ...]]></description>
				<content:encoded><![CDATA[<p>Following up on the previous &#8220;quickies&#8221; format, I decided to answer a question that goes unanswered through a quick Google search. This quickie has to do with the <em>Android OS</em> platform.</p>
<p><strong>Question</strong>: Why can&#8217;t I move certain applications to the SD card?</p>
<p><strong>Answer</strong>: The &#8220;move to SD card&#8221; feature of Android MUST be explicitly enabled by the developers of each application. This is the reason why for some apps, the &#8220;move to SD card&#8221; button is greyed out.</p>
<p>Hope that helps anyone who&#8217;s ever asked Google this question!</p>
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=539" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2012/01/quickies-why-cant-i-move-certain-applications-to-the-sd-card/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Quickies] Galaxy S2 MIUI 1.12.30 Camera Force Closes</title>
		<link>http://www.tiagoespinha.net/2012/01/quickies-galaxy-s2-miui-1-12-30-camera-force-closes/</link>
		<comments>http://www.tiagoespinha.net/2012/01/quickies-galaxy-s2-miui-1-12-30-camera-force-closes/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 21:29:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Quickies]]></category>
		<category><![CDATA[Camera FC]]></category>
		<category><![CDATA[Camera Force Close]]></category>
		<category><![CDATA[FC]]></category>
		<category><![CDATA[Force Close]]></category>
		<category><![CDATA[Galaxy S2]]></category>
		<category><![CDATA[Galaxy SII]]></category>
		<category><![CDATA[MIUI Camera]]></category>
		<category><![CDATA[MIUI Camera FC]]></category>
		<category><![CDATA[MIUI FC]]></category>
		<category><![CDATA[MIUI Force Close]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=535</guid>
		<description><![CDATA[I&#8217;ve tagged this post as a &#8220;quickie&#8221; as I just want to share the solution to a problem I&#8217;ve been having with my recently bought Galaxy S2. This solution was found indirectly and from my extensive search through the Internet, I haven&#8217;t found anyone describing either this problem or the solution to it. Problem: When ...]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">I&#8217;ve tagged this post as a &#8220;quickie&#8221; as I just want to share the solution to a problem I&#8217;ve been having with my recently bought Galaxy S2. This solution was found indirectly and from my extensive search through the Internet, I haven&#8217;t found anyone describing either this problem or the solution to it.</p>
<p style="text-align: justify;"><strong>Problem</strong>: When using the MIUI 1.12.30 ROM on the Samsung Galaxy S2, the camera will freeze and eventually force close while attempting to record video.</p>
<p style="text-align: justify;"><strong>Solution</strong>: The solution to this problem is so simple that &#8220;it hurts&#8221;. If you&#8217;re running MIUI, your kernel will most certainly have the ClockworkMod (CWM) flashed onto it. You will have to go into CWM (i.e. Shutdown phone then power it up with the combo Volume Up + Power + Home), then into the &#8220;advanced&#8221; menu and choose the &#8220;fix permissions&#8221; option.</p>
<p style="text-align: justify;">After you&#8217;ve done this, reboot the phone et voilà! It&#8217;s really that easy!</p>
<p style="text-align: justify;">I&#8217;ve found this <a href="http://forum.cyanogenmod.com/topic/32601-camera-keeps-force-closing/page__p__278856__hl__camera__fromsearch__1">solution</a> through having a similar problem in CyanogenMod. In their forums they explain how to fix it for CM7.1 so I decided to give it a try on MIUI. Turns out the problem is the same.</p>
<p style="text-align: justify;">Hope this saved you some time!</p>
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=535" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2012/01/quickies-galaxy-s2-miui-1-12-30-camera-force-closes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WSO2 PHP&#8217;s WSF Library (or whatever the damn it is called&#8230;) and Turmeric SOA</title>
		<link>http://www.tiagoespinha.net/2011/09/wso2-phps-wsf-library-or-whatever-the-damn-it-is-called-and-turmeric-soa/</link>
		<comments>http://www.tiagoespinha.net/2011/09/wso2-phps-wsf-library-or-whatever-the-damn-it-is-called-and-turmeric-soa/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 08:48:27 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[SOA]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP SOAP]]></category>
		<category><![CDATA[PHP WSF]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[WSF]]></category>
		<category><![CDATA[WSF-PHP]]></category>
		<category><![CDATA[wsfphp]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[WSO2 PHP]]></category>
		<category><![CDATA[WSO2 WSF]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=519</guid>
		<description><![CDATA[The title of this post is verbose enough about the feelings I have regarding the naming of this library. It&#8217;s as if WSO2 took a page from Microsoft&#8217;s book regarding names. What&#8217;s next? A Home Edition? Maybe throw in Professional, Business and Ultimate versions too for good measure. Don&#8217;t take me wrong, I have no ...]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.tiagoespinha.net/wp-content/uploads/2011/09/762791717WSO2pic.jpg" rel="lightbox[519]" title="762791717WSO2pic"><img class="alignleft size-full wp-image-523" title="762791717WSO2pic" src="http://www.tiagoespinha.net/wp-content/uploads/2011/09/762791717WSO2pic.jpg" alt="" width="250" height="102" /></a>The title of this post is verbose enough about the feelings I have regarding the naming of this library. It&#8217;s as if WSO2 took a page from Microsoft&#8217;s book regarding names. What&#8217;s next? A Home Edition? Maybe throw in Professional, Business and Ultimate versions too for good measure.</p>
<p style="text-align: justify;">Don&#8217;t take me wrong, I have no special feelings towards names themselves, it&#8217;s just how difficult it makes to search for people working on the same things and facing the same problems. What do I Google for? WSO2? WSF? PHP? Any combination of these? It&#8217;s only made worse by these guys developing frameworks in several platforms, which means I end up finding completely unrelated results from a different implementation, in a different technology.</p>
<p style="text-align: justify;">But, naming rants aside, I thought it would be a good idea to share my experience with getting this library up and running on PHP. I came across this library when converting Apache Stonehenge&#8217;s web application to use Turmeric&#8217;s instances of Stonehenge&#8217;s web services, and it gave me quite some headaches. For this reason, and so that other people in the future don&#8217;t have to go through the same painful experiences, I decided to write this blog post. Keep reading if I got your attention&#8230;<span id="more-519"></span></p>
<p style="text-align: justify;">First and foremost, I should warn that I&#8217;m also gonna write the Linux walkthrough and it does expect you to have some basic Linux knowledge. Nothing too advanced, you just need to know your way around a Linux system in a command line. If you meet this criterion, this walkthrough should be a walk in the park (no pun intended there).</p>
<h3 style="text-align: justify;">Setting up the library</h3>
<p style="text-align: justify;">To begin with, you must download the WSF PHP library <strong>sources</strong>. You should be able to find it <a href="http://wso2.com/products/web-services-framework/php/">here</a> somewhere. At the time of writing, the latest version is 2.1.0. Make sure you download the <strong>sources</strong>. Sadly, the binaries only include DLL&#8217;s for the Windows installation, which means that us, Linux users, must compile our own binaries by hand. No biggie though, it&#8217;s easier than it sounds.</p>
<p style="text-align: justify;">After you&#8217;ve downloaded the library, the next thing you should do is &#8220;cd&#8221; into the directory. Then, normally you&#8217;d just do ./configure followed by a make and make install, but there&#8217;s a caveat: it&#8217;s VERY recommended that you specify a prefix when you do ./configure. The prefix will tell WSO2 where to place the binaries after you compile and &#8220;install&#8221;, and this is extremely useful for WSF as you&#8217;ll need a clean directory featuring only the binary files of this library. You&#8217;ll understand why in a minute.</p>
<p style="text-align: justify;">In sum, you should do:</p>
<blockquote>
<pre>./configure --prefix=/usr/local/bin/apache2/php/wsf-php/
 make
 [sudo] make install</pre>
</blockquote>
<p style="text-align: justify;">In my example you&#8217;ll see that I&#8217;m telling &#8220;make&#8221; to install the library in /usr/local/bin/apache2/php/wsf-php/ and in the last step I&#8217;ve also accounted for those of you who, like me, use Ubuntu. If you use Ubuntu, make sure you add the sudo before the make install command (without brackets).</p>
<p style="text-align: justify;"><strong>Troubleshooting: </strong>If you installed PHP through Ubuntu&#8217;s packages, it is possible that everything went fine at this point. If it did (i.e. if you got no errors in neither of the stages) then excellent. Move on. Skip this section. If, on the other hand, you got an error about a missing php-config, then you need to specify the path to this binary in the ./configure step. First you should know where your PHP installation lies (and you&#8217;re entirely on your own for this one) and once you know where it is, your php-config binary is inside &lt;path_to_php&gt;/bin/. Once you figured out where that is, you should go back to those three steps above, except your ./configure should look like:</p>
<blockquote>
<pre>./configure --prefix=/usr/local/bin/apache2/php/wsf-php/ --with-php-config=&lt;path_to_php&gt;/bin/php-config</pre>
</blockquote>
<p style="text-align: justify;">After this, don&#8217;t forget of course, to do the make and make install steps.</p>
<p style="text-align: justify;">With that done, you should now have the compiled library in /usr/local/bin/apache2/php/wsf/ (or in whichever folder you specified as prefix). You also want to have a look at the final lines of the &#8220;make install&#8221; step and look for a reference to a wsf.so file. That&#8217;s THE library that PHP will load and you&#8217;ll need to know exactly where it is. In my case, the library sits in /usr/local/bin/apache2/php/lib/php/extensions/no-debug-non-zts-20090626/wsf.so . My guess is that the make install step is smart enough to put it in the equivalent folder inside your PHP&#8217;s installation. Anyhow, copy this directory.</p>
<p style="text-align: justify;">The next step involves editing your php.ini file. Again, you should know where this is. After you found it, add the following lines to it:</p>
<blockquote>
<pre>extension=/usr/local/bin/apache2/php/lib/php/extensions/no-debug-non-zts-20090626/wsf.so
wsf.home="/usr/local/bin/apache2/php/wsf-php/"</pre>
</blockquote>
<p style="text-align: justify;">From that you can see that I put the path to the .so file as an extension that PHP must load, and I specified an entry called &#8220;wsf.home&#8221; that will tell WSF where its &#8220;auxiliary&#8221; files are. This is the path you used as the prefix during the compiling process. These are the two most essential parameters that need to be configured to get WSF up and running, there&#8217;s more but I&#8217;m aiming at the quickest way possible to get it running, with as little configuration as possible.</p>
<p style="text-align: justify;">After you&#8217;ve added those lines, you should restart your Apache et voilà! Your PHP installation should now have loaded the WSF library. If you want to be sure that everything is up and running, you can check the contents of /tmp/wsf_php_server.log . If everything went well, this log should have no errors.</p>
<h3 style="text-align: justify;">Creating a client and using it</h3>
<p style="text-align: justify;">Now comes another <strong>tricky part</strong>. Great, now your library is up and running, but how do you <strong>use it</strong>?</p>
<p style="text-align: justify;">I&#8217;m gonna provide another quick and simple explanation of how to get a client up and running for an existing service. This assumes, of course, that you already have a service running somewhere which provides you with a WSDL file and SOAP ports that you can invoke.</p>
<p style="text-align: justify;">Provided you have that, you need to copy a folder in the WSF sources to somewhere safe and accessible by PHP (by accessible, I mean, PHP/Apache should have at least read and execute permissions). The folder you need is &lt;WSF_sources&gt;/scripts/. Copy it somewhere you know it won&#8217;t get deleted by an overzealous system administrator and keep it accessible. I would keep it out of public access via Apache but that&#8217;s entirely up to you. It&#8217;s the next step that is <strong>important</strong>.</p>
<p style="text-align: justify;">Now that you copied this folder (and all its contents) to somewhere safe, you need to go back to your php.ini and add the folder to its include_path definition. In my case, I just uncommented the already existing line and added my scripts folder to it. In the end it looked like:</p>
<blockquote>
<pre>include_path = ".:/php/includes:/usr/local/bin/apache2/php/scripts/"</pre>
</blockquote>
<p style="text-align: justify;">After you&#8217;ve added/uncommented this line, be sure to restart Apache once more. This line will just tell PHP where it can find scripts that WSF will need whenever you&#8217;re using its libraries.</p>
<p style="text-align: justify;">With that out of the way, the next step consists of creating a PHP classmap of all the operations and types you have in your WSDL file. My advice is that you obtain the WSDL file in advance and store it somewhere in your hard-drive. After you&#8217;ve done this, just go to the scripts folder and do:</p>
<blockquote>
<pre>php wsdl2php.php &lt;path_to_your_wsdl_file&gt;</pre>
</blockquote>
<p style="text-align: justify;">It can happen at this step that Linux will tell you it can&#8217;t find PHP. If that&#8217;s the case, instead of starting off with just &#8220;php&#8221;, use the full path instead.</p>
<p style="text-align: justify;">By doing this step, you&#8217;ll see a bunch of PHP code scrolling through your console. If that was the case, repeat the command and redirect the output to a file, e.g. &gt; somefile.php.</p>
<p style="text-align: justify;">This somefile.php is now your client. It includes a PHP class for every type in your WSDL and an action for every SOAP port. It also includes, at the very end, a sample of how you&#8217;d invoke every action. By looking at that you can probably get a good idea of how WSF works, and that&#8217;s pretty much it. I assume that if you&#8217;re messing around with PHP, you do have enough knowledge to get rid of these sample invokations and just use this file as something you import and use in your PHP application. That&#8217;s not going to be covered in this tutorial.</p>
<p style="text-align: justify;">If you do have questions or ran into trouble while following these steps, please do leave me a comment and I&#8217;ll try to answer as soon as possible. I hope this has somehow helped you, reader. I know I wish I had found something like this post when I first started messing around with WSF!</p>
<p style="text-align: justify;">Till the next post!</p>
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=519" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2011/09/wso2-phps-wsf-library-or-whatever-the-damn-it-is-called-and-turmeric-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Black and white icons for Caffeine</title>
		<link>http://www.tiagoespinha.net/2011/09/black-and-white-icons-for-caffeine/</link>
		<comments>http://www.tiagoespinha.net/2011/09/black-and-white-icons-for-caffeine/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 18:47:50 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Apple Caffeine]]></category>
		<category><![CDATA[Caffeine]]></category>
		<category><![CDATA[Caffeine black and white]]></category>
		<category><![CDATA[Caffeine black icons]]></category>
		<category><![CDATA[Mac Caffeine]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=505</guid>
		<description><![CDATA[This is gonna be a quick and short post about a tool I use on my Mac called &#8220;Caffeine&#8220;. This tool essentially allows me, at the click of a button, to disable the display&#8217;s dim and eventual turn off function. It&#8217;s useful when you&#8217;re reading something and you won&#8217;t be touching the keyboard or the ...]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">This is gonna be a quick and short post about a tool I use on my Mac called &#8220;<a href="http://lightheadsw.com/caffeine/">Caffeine</a>&#8220;. This tool essentially allows me, at the click of a button, to disable the display&#8217;s dim and eventual turn off function. It&#8217;s useful when you&#8217;re reading something and you won&#8217;t be touching the keyboard or the mouse, but you&#8217;d still like the screen to be on. It&#8217;s useful also when I&#8217;m playing along a guitar tab and I can&#8217;t afford to stop playing just to get the screen back on.</p>
<p style="text-align: justify;">Anyway, this tool places an icon on the status bar. The only problem is that this icon is in color and it just stands out in my status bar like a sore thumb. SO! I created a new icon set. You can get it by clicking <a href="http://www.tiagoespinha.net/wp-content/uploads/2011/09/icons.zip">here</a>. Scroll down to have a look at the icons before you download it.</p>
<p style="text-align: justify;">All you have to do is copy them to <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">/Applications/Caffeine.app/Contents/Resources/ </span>et voilà! I&#8217;ve included two more icons (not shown here) for the right click behavior.</p>
<p style="text-align: justify;">Icons:<br />
<a href="http://www.tiagoespinha.net/wp-content/uploads/2011/09/active.png" rel="lightbox[505]" title="active"><img class="alignleft size-full wp-image-507" title="active" src="http://www.tiagoespinha.net/wp-content/uploads/2011/09/active.png" alt="" width="22" height="20" /></a><a href="http://www.tiagoespinha.net/wp-content/uploads/2011/09/inactive.png" rel="lightbox[505]" title="inactive"><img class="alignleft size-full wp-image-508" title="inactive" src="http://www.tiagoespinha.net/wp-content/uploads/2011/09/inactive.png" alt="" width="22" height="20" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">This is what it looks like in action:<br />
<a href="http://www.tiagoespinha.net/wp-content/uploads/2011/09/Screen-Shot-2011-09-11-at-8.40.20-PM.png" rel="lightbox[505]" title="Screen Shot 2011-09-11 at 8.40.20 PM"><img class="alignleft size-full wp-image-509" title="Screen Shot 2011-09-11 at 8.40.20 PM" src="http://www.tiagoespinha.net/wp-content/uploads/2011/09/Screen-Shot-2011-09-11-at-8.40.20-PM.png" alt="" width="562" height="22" /></a></p>
<p style="text-align: justify;">and<br />
<a href="http://www.tiagoespinha.net/wp-content/uploads/2011/09/Screen-Shot-2011-09-11-at-8.40.48-PM.png" rel="lightbox[505]" title="Screen Shot 2011-09-11 at 8.40.48 PM"><img class="alignleft size-full wp-image-510" title="Screen Shot 2011-09-11 at 8.40.48 PM" src="http://www.tiagoespinha.net/wp-content/uploads/2011/09/Screen-Shot-2011-09-11-at-8.40.48-PM.png" alt="" width="562" height="21" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=505" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2011/09/black-and-white-icons-for-caffeine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Turmeric SOA, open-source and the Apache Software Foundation</title>
		<link>http://www.tiagoespinha.net/2011/08/on-turmeric-soa-open-source-and-the-apache-software-foundation/</link>
		<comments>http://www.tiagoespinha.net/2011/08/on-turmeric-soa-open-source-and-the-apache-software-foundation/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 21:32:37 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[SOA]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apache DB]]></category>
		<category><![CDATA[Apache Derby]]></category>
		<category><![CDATA[Apache PMC]]></category>
		<category><![CDATA[Apache Software Foundation]]></category>
		<category><![CDATA[ASF]]></category>
		<category><![CDATA[PMC]]></category>
		<category><![CDATA[Program Management Committee]]></category>
		<category><![CDATA[Service Oriented Architectures]]></category>
		<category><![CDATA[Turmeric]]></category>
		<category><![CDATA[Turmeric SOA]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=490</guid>
		<description><![CDATA[It&#8217;s been a while since I posted something on this blog, partly due to my laziness, but also due to a chronic lack of time and patience to come home after an intellectually intense day of work and still have the peace of mind to gather my thoughts and put them in words. Today was, ...]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.tiagoespinha.net/wp-content/uploads/2011/08/Service-Oriented-Architecture-SOA-For-Dummies.jpg" rel="lightbox[490]" title="Service Oriented Architecture SOA For Dummies"><img class="alignleft size-full wp-image-496" title="Service Oriented Architecture SOA For Dummies" src="http://www.tiagoespinha.net/wp-content/uploads/2011/08/Service-Oriented-Architecture-SOA-For-Dummies.jpg" alt="" width="194" height="240" /></a>It&#8217;s been a while since I posted something on this blog, partly due to my laziness, but also due to a chronic lack of time and patience to come home after an intellectually intense day of work and still have the peace of mind to gather my thoughts and put them in words. Today was, luckily, one of those days. Not because it was a particularly easy day at work (reengineering someone else&#8217;s code with little to non-existing documentation is <strong>never</strong> an easy job) but perhaps the intense gym session loosed my brains just enough for organized and coherent thought to just happen. In any case, I digress.</p>
<p style="text-align: justify;">This post has three main themes. I will be talking about a platform for SOA applications called Turmeric (funny name, I know. I&#8217;m using for SOA the same I use in my lentil soup), open-source in general and finally, the Apache Software Foundation and some recent events I&#8217;ve been involved in.</p>
<p style="text-align: justify;"><span id="more-490"></span></p>
<p style="text-align: justify;">I shall begin with <a href="https://www.ebayopensource.org/index.php/Turmeric/HomePage">Turmeric SOA</a>. Turmeric SOA, despite the strange choice of name, is actually an industry grade platform for web services. Why is it industry grade, you ask? Is it because the developers so claim? Not really. The industry grade designation is actually made by me &#8211; the project (and its developers) do not claim anything about it being industry ready or anything of that kind. I should mention, however, that Turmeric SOA is the <strong>open-source</strong> version of the platform that powers eBay. Yes, you read that right, THE eBay. In my book, if a platform handles the millions of customers all over the world that eBay does, that platform is pretty much as industry-grade as it gets these days.</p>
<p style="text-align: justify;">Why am I talking about Turmeric SOA? Why am I even involved in Turmeric SOA?</p>
<p style="text-align: justify;">It&#8217;s very simple really and it all points back to my work as a Ph.D. student at the <a href="http://www.st.ewi.tudelft.nl/~tiago/">Delft University of Technology</a>. My research, in broad terms consists of analyzing and coming up with new ways of helping the maintenance, reengineering and testing of Service Oriented Architectures. In this description, I&#8217;ve cleverly omitted the keyword that defines my research, mostly because it&#8217;s a vague buzzword that means different things to different people (in case you&#8217;re wondering, the word is <em>multi-tenancy</em>). In any case, my research involving SOA only makes sense if I have a software system on which I can investigate and demonstrate my claims and this is where it all gets hairy.</p>
<p style="text-align: justify;">The fact is that for most companies, SOA simply means exposing some of their data through an API built on top of SOAP or REST, et voilà. All of a sudden they can claim that they are a company of the future because they have a SOA system. This, however, couldn&#8217;t be farther from what an actual SOA system should be. We can even take the etymological angle and look at what SOA means: Service Oriented <strong>Architecture</strong>. I&#8217;ve emphasized the word &#8220;architecture&#8221; as I believe that is the keyword in the SOA acronym. Your SOA system should be built using an architectural style consistent with that of services that communicate with each other. It should be oriented towards/based on services, and not a monolithic blob with one tiny service gateway that allows me to query some data, even if that data is provided in a platform-agnostic manner. To people who have such monolithic SOA-wannabe systems, I ask: can I slice part of your software and place it elsewhere in the world with an Internet connection on both ends? If I can&#8217;t, what if your user-base or your business grow to a point where one server no longer cuts it? What do you do then? Keep buying bigger motherboards with more CPU and RAM sockets?</p>
<p style="text-align: justify;">Let&#8217;s get real here. Your software system is service-oriented if I can grab all the pieces that compose it and spread it all over the world. The only thing I should have to tell the software system is: &#8220;you have service A deployed at this endpoint, service B at this other endpoint, etc etc&#8221; and then it would automagically just work, regardless of whether the services are running in the same application server or in each other&#8217;s antipodes in completely opposite timezones.</p>
<p style="text-align: justify;">So why am I bringing this up? Well, as it stands it&#8217;s difficult enough to find open-source systems that are truly built around a service-oriented architecture. For most of these services, SOA is an afterthought. It&#8217;s something those open-source ERP developers woke up one day and thought &#8220;hey, wouldn&#8217;t it be cool if our ERP had some SOA features?&#8221; &#8211; and alas, the result is invariably slamming some poorly engineered JAXWS or Axis2 solution on top of already existing business logic and inevitably making a mess of a perfectly fine (albeit, poorly scaling) software system.</p>
<p style="text-align: justify;">From my own experience, this is the summary of most open-source ERP systems out there that claim to have some kind of SOA functionality.</p>
<p style="text-align: justify;">This doesn&#8217;t cut it for us. This is not what the SOA paradigm truly stands for and these systems are ultimately useless for my research. There&#8217;s only one web service! How the hell is it supposed to communicate with anything? Its business logic is ultimately still relying on local method calls.</p>
<p style="text-align: justify;">Then out of this hell comes another frightening fact. Even the web service platforms out there are useless on their own. I was chatting with a friend of mine &#8211; who&#8217;s not a computer scientist &#8211; the other day, and I was struggling to explain to her what exactly my problem was without using terms such as JAXWS, Turmeric, web services or SOA. I think I came up with a clear laymen explanation involving the process of building a car. So, my problem right now is that I need a very specific type of car, say, one that is rocket propelled. There are, of course, brands out there that have rocket propelled cars but there&#8217;s no way on Earth that these guys are gonna let me even LOOK at their car, set aside open the hood and disassemble its engine. Yet, my research consists of analyzing the problems and challenges of maintaining a rocket propelled car. But I have no car, and no means to get one. This is a pretty big inconvenience. Not even me promising this car brand that I won&#8217;t build a competitor car, or destroy their car will convince them to let me pop the hood &#8211; and so, Houston, we have a problem.</p>
<p style="text-align: justify;">The solution to this problem is seemingly simple. I can just build my own rocket propelled car and hope for the best. But then we run into a more essential problem: I&#8217;m not a car maker, nor does my department pay me to make cars. Also, if by the end of my Ph.D. I&#8217;ve only built a rocket propelled car, they&#8217;re not gonna be happy.</p>
<p style="text-align: justify;">I could also cut some corners and build a mockup of a rocket propelled car. Sure, maybe it doesn&#8217;t have a gearbox and the steering wheel is made of cardboard, but hey! It&#8217;s a rocket propelled car! This would be swell, if it wasn&#8217;t for the fact that even the free tools I can get out there to make cars are pretty&#8230; well&#8230; horrible. Stepping back out of the metaphor world, the problem is that the technologies available allow me to build simple web services. I can just grab Java&#8217;s Metro project (aka JAXWS) and very easily deploy a web service, but that&#8217;s just what it is. A web service, accessible via SOAP, amidst nothingness. There&#8217;s nothing I can query to know that this service is there, there&#8217;s no platform managing this service and telling me that it has <em>this many</em> services and that <em>this particular one</em> is one of them, there&#8217;s no statistics or runtime information being kept on this service, there&#8217;s basically&#8230; nothing. Just a Java class with a &#8220;WebService&#8221; sticker on it.</p>
<p style="text-align: justify;">These tools make it difficult to build something that even resembles a real world SOA system (i.e. a rocket propelled car). They&#8217;re the tiniest building blocks that you can think of. The sand in the car&#8217;s windshield or the iron ore in the chassis&#8217; stainless steel. Sure, I can melt the sand, add some caustic soda and fashion my own windshield out of it. I can melt the iron ore and through some process I don&#8217;t even know, make steel. But how long is this going to take me? And will the final result be a faithful representation of what actual companies in this line of work have made? Or just a silly toy example that doesn&#8217;t fully represent the pains and benefits of such a system?</p>
<p style="text-align: justify;"><a href="http://www.tiagoespinha.net/wp-content/uploads/2011/08/TurmericLogo.jpg" rel="lightbox[490]" title="TurmericLogo"><img class="alignright size-full wp-image-498" title="TurmericLogo" src="http://www.tiagoespinha.net/wp-content/uploads/2011/08/TurmericLogo.jpg" alt="" width="214" height="117" /></a>That&#8217;s where Turmeric comes in. My first impression when I started using Turmeric was that of confusion. I thought to myself &#8220;well, that&#8217;s another platform with an awful lot of features that no one&#8217;s ever going to use&#8221;, but I was wrong. Over time, with more thoroughly exploring this platform, it became clear that perhaps every single feature in Turmeric really stemmed from a real world use case, most likely from eBay. All those features, if you really think about it, you&#8217;ll end up realizing &#8220;oh yeah, they probably use this to achieve X and Y&#8221;. In other words, even if we don&#8217;t have the rocket propelled car, we have the exact tools that we need to build one. Knowing that if the toolset includes a door-shaped mould, it probably means that our car should have at least one door &#8211; for which other reason would those guys have built such a tool if they hadn&#8217;t built a door for their car before?</p>
<p style="text-align: justify;">This makes Turmeric a very good candidate to be used as the tooling for my research. But Turmeric isn&#8217;t, in my point of view, a very good candidate anymore. It&#8217;s evolved from that into an <strong>excellent</strong> candidate at that! Now it&#8217;s the time when I really have to shine a light on <strong>all</strong> the guys behind the task of open-sourcing eBay&#8217;s platform. Those guys form a small community of people who usually hang around #turmeric-dev at irc.freenode.net and who just happen to be extremely friendly and helpful. Every time I hit a road bump with Turmeric, these guys go out of their ways to help me achieve the things I&#8217;m trying to achieve and I think that&#8217;s a lot more than I could have ever asked for.</p>
<p style="text-align: justify;">Quickly moving to the topic of open-source, since Turmeric SOA is actually an open-source project, this made me ever so fond of open-source stuff. It&#8217;s really nice to see all these people dedicated in making such a tremendous contribution that is open-sourcing a platform from eBay to the good of the community. I love that. I love being able to &#8211; should I need &#8211; download a relational database management system from Apache without having to pay for it. I love seeing projects like Ubuntu flourish, showing companies that even software is all about the people it&#8217;s built to and with a little help, even an open-source can kick big corporations in their royal butts.</p>
<p style="text-align: justify;">All this to say that I&#8217;ve learned a whole lot over the last few days. Amongst the things I&#8217;ve learned is for example, git. The cool kids&#8217; versioning system. As Turmeric nowadays relies on Git for its version management, I thought now would be a good time to learn it and see what advantages it brings over SVN &#8211; and boy, does it leave SVN in its rear view mirror! I&#8217;ve grown so much accustomed to it that I&#8217;ve started moving my projects to Git as well and I&#8217;ve been trying to influence other people around me to use it (Andy, if you&#8217;re reading this, wink wink, nudge nudge <img src='http://www.tiagoespinha.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). The saddest part of it all is that, in my opinion, you don&#8217;t really fully understand the advantages it brings until you really give it a try with real source code that you must maintain in collaboration with other people.</p>
<p style="text-align: justify;">Going on a bit of a tangent, Git (and open-source) has also enabled me to propose some enhancements to David Carver&#8217;s (Turmeric SOA&#8217;s top man) IRC bot that idles around #turmeric-dev &#8211; all via the clever features of Github, forking and pull requesting.</p>
<p style="text-align: justify;"><a href="http://www.tiagoespinha.net/wp-content/uploads/2011/08/46833_425136126860_586946860_5624931_1569623_n.jpg" rel="lightbox[490]" title="46833_425136126860_586946860_5624931_1569623_n"><img class="alignleft size-full wp-image-499" title="46833_425136126860_586946860_5624931_1569623_n" src="http://www.tiagoespinha.net/wp-content/uploads/2011/08/46833_425136126860_586946860_5624931_1569623_n.jpg" alt="" width="254" height="259" /></a>To finalize, the Apache Software Foundation. I&#8217;m gonna make it short and sweet. As of a couple of days ago, my fellow open-sourcers at Apache Derby decided to vote me to become a PMC (Program Management Committee) member for the Apache DB project. I have, of course, accepted and it is a post I will do my best to honor and live up to. I started off as a Google Summer of Code student at Apache Derby, then got promoted to committership, this year I had the privilege to mentor Siddharth Srivastava and now I&#8217;m becoming a PMC member. Life&#8217;s good.</p>
<p style="text-align: justify;">It&#8217;s late now, time for sleep. If you&#8217;ve read it all the way down here, thank you! You&#8217;re brave!</p>
<p style="text-align: justify;">Good night!</p>
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=490" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2011/08/on-turmeric-soa-open-source-and-the-apache-software-foundation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Idea for Google/Bing</title>
		<link>http://www.tiagoespinha.net/2011/03/idea-for-googlebing/</link>
		<comments>http://www.tiagoespinha.net/2011/03/idea-for-googlebing/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 21:17:37 +0000</pubDate>
		<dc:creator>tiago</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Bing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google ideas]]></category>
		<category><![CDATA[Google results]]></category>
		<category><![CDATA[Google search]]></category>
		<category><![CDATA[Idea]]></category>
		<category><![CDATA[Improve Google]]></category>
		<category><![CDATA[Result Based Engines]]></category>
		<category><![CDATA[Search Engines]]></category>

		<guid isPermaLink="false">http://www.tiagoespinha.net/?p=447</guid>
		<description><![CDATA[I just had this idea that could truly revolutionize search engines. Let&#8217;s start with the motivation: What do we usually rely on search engines for? Answer-finding, correct? We are part of a generation that mindlessly presses CTRL + T to open a new tab in our browser of choice, points it to www.google.com and types ...]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">I just had this idea that could truly revolutionize search engines. Let&#8217;s start with the motivation:</p>
<p style="text-align: justify;"><a href="http://www.tiagoespinha.net/wp-content/uploads/2011/03/google_logo-copy1.jpg" rel="lightbox[447]" title="google_logo copy"><img class="alignright size-full wp-image-455" style="border: 1px solid black;" title="google_logo copy" src="http://www.tiagoespinha.net/wp-content/uploads/2011/03/google_logo-copy1.jpg" alt="" width="216" height="120" /></a>What do we usually rely on search engines for? Answer-finding, correct? We are part of a generation that mindlessly presses CTRL + T to open a new tab in our browser of choice, points it to <a href="http://www.google.com" target="_blank">www.google.com</a> and types away whatever question we need an answer for. Then comes the tedious process of sorting through all the results in hopes of truly finding the answer to what we&#8217;re looking for. Typically, in a good day, we will find a link that contains the answer to our question, use the answer and ditch the browser tab. Does this sound like something you do more than once a day? Well, then read on.</p>
<p style="text-align: justify;">What if we could make this process better? Oftentimes, I&#8217;ll require the answer to my question more than once and most of the times I just can&#8217;t be bothered with bookmarking the page. Even because, most of the times, I forget that I bookmarked something and I end up going to Google to search for something I already have an answer for, buried within my bookmarks. So there&#8217;s clearly a problem here. I&#8217;m wasting time more than once to find answers for the same information and &#8211; drawing on my recently developed and work-in-progress Dutch skills - <em>dat kan niet</em>.<span id="more-447"></span></p>
<p style="text-align: justify;">Why don&#8217;t we make search engines smarter? Let&#8217;s look at an example.</p>
<p style="text-align: justify;">I&#8217;m a hobbyist guitar player and every now and then, I&#8217;ll go to Google and search for &#8220;soldier of love tab&#8221;. Then I&#8217;ll search through all the guitar tab sites and I finally find that one tab that is actually well written and faithful to the original song. Brilliant. I open it, I play it by myself once, I pretend to be an epic guitarist by playing along to the MP3 of the original and I close the tab feeling proud that I can play the guitar. But then, the next weekend comes and my girlfriend comes to visit. Of course, being the romantic guy that I am, I want to play for her but damn&#8230; it&#8217;s going to take me long to find that really good guitar tab again and alas, the mood is killed. BUT! What if the first time around, I could have told Google &#8220;<em>this link contains the exact answer for &#8216;soldier of love tab&#8217;</em> &#8221; so that whenever I searched again for this (or similar, e.g. &#8216;soldier of love chords&#8217;) string, Google would tell me &#8220;<em>hey, you&#8217;ve searched for something similar before and you have previously defined answers for this question</em>&#8220;. Wouldn&#8217;t this be great?</p>
<p style="text-align: justify;">Wouldn&#8217;t it also be great if I could even mark specific segments of a result page as containing the answer for my question? Maybe sometimes I&#8217;d search &#8220;how to list <a href="http://ant.apache.org/" target="_blank">ant</a> targets on the command line?&#8221; and I&#8217;d select a specific snippet of a website where it says &#8220;<em>ant -p</em>&#8221; as the answer to my question. Then, whenever I&#8217;d search for it again, Google would give me <strong>THE answer</strong> rather than links to <strong>potential answers</strong>.</p>
<p style="text-align: justify;">Then we could get crazy with it. Make it anonymously social! &#8220;<em>Other users have searched for a similar question, these are the links they selected as answers</em>&#8220;. Users, by adopting this technique for themselves, would be helping each other as well and soon, the millions (billions?) of people using conventional search engines could eventually turn Google from a <strong>result-based</strong> search engine into an <strong>answer-based</strong> one.</p>
<p style="text-align: justify;">We would all spend less time searching and we&#8217;d all turn more productive by literally having the answers to everything we need at our fingertips.</p>
<p style="text-align: justify;">That was the basic gist of my idea. Please, Google or Bing engineers, if you read this, you can take this idea. For free. I claim no royalties, copyrights or trademarks&#8230; but it&#8217;d be pretty cool if you told me about it in case you use it. Also, in roughly 3.5 years I&#8217;ll be finished with my Doctorate degree and I&#8217;ll be probably looking for a job. Keep that in mind, will you? <img src='http://www.tiagoespinha.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
 <img src="http://www.tiagoespinha.net/?feed-stats-post-id=447" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.tiagoespinha.net/2011/03/idea-for-googlebing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
