<?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>Iván Pazmiño</title>
	<atom:link href="http://www.pazmino.ec/feed" rel="self" type="application/rss+xml" />
	<link>http://www.pazmino.ec</link>
	<description>software stuff</description>
	<lastBuildDate>Fri, 18 May 2012 14:25:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Standarizing, ruling and guiding</title>
		<link>http://www.pazmino.ec/engineering/standarizing-ruling-and-guiding.html</link>
		<comments>http://www.pazmino.ec/engineering/standarizing-ruling-and-guiding.html#comments</comments>
		<pubDate>Fri, 18 May 2012 14:17:18 +0000</pubDate>
		<dc:creator>iapazmino</dc:creator>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[guidelines]]></category>
		<category><![CDATA[jee6]]></category>
		<category><![CDATA[policy]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[standard]]></category>

		<guid isPermaLink="false">http://www.pazmino.ec/?p=251</guid>
		<description><![CDATA[Finding the difference between a standar, a policy and a guideline.]]></description>
			<content:encoded><![CDATA[<p>More than once at work somebody has suggested the architecture area should write the standard for the queue&#8217;s configuration in the JBoss EAP 4.3 or other nonsense like writing the UML standard. The list doesn&#8217;t stop there but grows long and large. My rants on this matters have painted me some gray hairs and worsened my drinking habit.<span id="more-251"></span></p>
<p>Now that the team I&#8217;m in has finished the first JEE6 application here, we are going to write the new JEE6 standard using our new shiny application as the muse to inspire us. So, instead of waiting for the end of the day to go and drown mi anguish I&#8217;ll go all Freudian and talk my problem out till I get some answers.</p>
<p>First, JEE6 is not an standard. JEE6 is set of technology specifications which build a platform to develop enterprise applications. Second, a technical standard is of free implementation but we want people to use it for good or worst, so we actually want a policy. Then, writing the JEE6 standard is plain wrong. It&#8217;s sound most likely we are trying to write the JEE6 Policy here.</p>
<p>Now, as suggested by a colleague, the limits within this policy is applicable must be drawn. OK, this policy is for applications with Web interfaces, both graphical and services. So, from now on everybody here writes Web applications with the policies described in this document. What about exceptions? Well, we can&#8217;t foresee all of them right now so we should add them one by one as an addendum as they appear. Who should dictate addendum in, addendum out? No, can&#8217;t be a policy. We already have enough bureaucracy.</p>
<p>All this policy thing makes me think people here can&#8217;t judge right from wrong, but they do. And actually, they are really competent. So how about writing some guidelines from our experience that we think might work on most situations and trust their judgment for the specific problem solving. This will make the number of thinking engineers overcome in number the soldiers awaiting for an order. The document could also grow in guidelines with the new experiences from this engineers solving problems on their own. It will be nice to have a wiki entrance with your name explaining how to solve a certain problem and add it to another where you have a different way to solve the same problem.</p>
<p>Sounds like a plan. So, “Guidelines for Developing with JEE6 in Here” it is, and it should be written in a wiki.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pazmino.ec/engineering/standarizing-ruling-and-guiding.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrate FitNesse into Unity</title>
		<link>http://www.pazmino.ec/quickfixes/integrate-fitnesse-into-unity.html</link>
		<comments>http://www.pazmino.ec/quickfixes/integrate-fitnesse-into-unity.html#comments</comments>
		<pubDate>Thu, 03 May 2012 04:58:45 +0000</pubDate>
		<dc:creator>iapazmino</dc:creator>
				<category><![CDATA[quickfixes]]></category>
		<category><![CDATA[fitnesse]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unity]]></category>

		<guid isPermaLink="false">http://www.pazmino.ec/?p=230</guid>
		<description><![CDATA[How-to on creating a launcher in ubuntu's unity to start, stop and open FitNesse.]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a short how-to on creating a unity&#8217;s launcher to start, stop and open FitNesse.</p>
<p><a href="http://www.pazmino.ec/wp-content/uploads/2012/05/fitnesse-launcher.png"><img class="alignnone size-full wp-image-231" title="fitnesse-launcher" src="http://www.pazmino.ec/wp-content/uploads/2012/05/fitnesse-launcher.png" alt="" width="257" height="144" /></a></p>
<p><span id="more-230"></span></p>
<p>First thing to do is download the FitNesse jar file from the <a title="FitNesse dowload" href="http://fitnesse.org/FrontPage.FitNesseDevelopment.DownLoad">download page</a> and save it with +x permissions where you want to execute it from.</p>
<p>Then, you need to create a fitnesse.desktop file in ~/.local/share/applications with the execution permissions (+x) and the  following content:<br />
<code>[Desktop Entry]<br />
Name=FitNesse<br />
Comment=The fully integrated standalone wiki and acceptance test framework.<br />
Exec=/usr/local/lib/atdd/fitnesse.sh<br />
Icon=/usr/local/lib/atdd/FitNesseLogo.gif<br />
Terminal=false<br />
Type=Application<br />
StartupNotify=true<br />
X-Ayatana-Desktop-Shortcuts=OpenNewTab;ShutDown<br />
[OpenNewTab Shortcut Group]<br />
Name=Open In Firefox<br />
Exec=firefox -new-tab http://localhost:8081<br />
TargetEnvironment=Unity<br />
[ShutDown Shortcut Group]<br />
Name=Shut Down<br />
Exec=/usr/local/lib/atdd/fitnesse-shutdown.sh<br />
TargetEnvironment=Unity</code></p>
<p>This creates the launcher and some right-click options. The &#8220;/usr/local/lib/atdd&#8221; path is where the FitNesse jar is and the image for the icon is <a title="FitNesse Logo" href="http://fitnesse.org/files/images/FitNesseLogo.gif">FitNesse&#8217;s logo</a>. The fitnesse.sh and fitnesse-shutdown.sh files are a few bash commands to start and stop FitNesse, shown below for completeness. Once this file is ready, open the ~/.local/share/applications folder and drag the fitnesse.deskop file and drop it into the unity panel. And that&#8217;s it to get your customized launcher.</p>
<p>fitnesse.sh</p>
<p><code>#!/bin/bash<br />
fitnesse_home="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &amp;&amp; pwd )"<br />
port="8081"<br />
clear<br />
echo "Starting FitNesse in port $port"<br />
echo "FitNesse home is $fitnesse_home"<br />
echo "..."<br />
java -jar $fitnesse_home/fitnesse.jar -p $port</code></p>
<p>fitnesse-shutdown.sh<br />
<code>#!/bin/bash<br />
fitnesse_home="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &amp;&amp; pwd )"<br />
port="8081"<br />
clear<br />
echo "Shutting down FitNesse in port $port"<br />
echo "..."<br />
java -cp $fitnesse_home/fitnesse.jar fitnesse.Shutdown -p $port</code></p>
<p>Reference:</p>
<p><a href="askubuntu.com/questions/13758/how-can-i-edit-create-new-launcher-items-in-unity-by-hand">ask ubuntu, question 13758</a></p>
<p class="title"><a href="http://www.nautilus-actions.org/?q=node/377">Desktop file specification extension</a></p>
<p class="title"><a href="http://fitnesse.org/FitNesse.UserGuide.StartingAndStoppingFitNesse"><span class="page_title">Starting and stopping FitNesse</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pazmino.ec/quickfixes/integrate-fitnesse-into-unity.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuous reporting</title>
		<link>http://www.pazmino.ec/design/continuous-reporting.html</link>
		<comments>http://www.pazmino.ec/design/continuous-reporting.html#comments</comments>
		<pubDate>Thu, 19 Apr 2012 15:25:06 +0000</pubDate>
		<dc:creator>iapazmino</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[ci]]></category>
		<category><![CDATA[continuos integration]]></category>
		<category><![CDATA[continuos reporting]]></category>
		<category><![CDATA[refactor]]></category>

		<guid isPermaLink="false">http://www.pazmino.ec/?p=221</guid>
		<description><![CDATA[Continuous integration should not carry the burden of reporting since this breaks the single responsibility principle.]]></description>
			<content:encoded><![CDATA[<p>Continuous integration should not carry the burden of reporting since this breaks the single responsibility principle.</p>
<p><span id="more-221"></span><br />
At our current project we have six to ten souls constantly pushing changes to the source version control every day which necessarily causes some builds to fail. Since code auditing reports are run in the same CI server&#8217;s job they get lacerated by these fails and drops the continuous line report causing statistics to be damaged -specially when it takes more than the next integration attempt to fix the problem.</p>
<p>Finding our statistics broken due to code that failed to integrate automatically smells like the job has more than one purpose, and as code, it shouldn&#8217;t. So, the obvious solution is to refactor applying a variation of extract class, called extract job. The mechanics are very simple, remove from the job&#8217;s goals the site goal, living the install goal alone, and rename if necessary. Then, add a new job which will run only if the former has completed successfully, even if unstable, with the site goal.</p>
<p>Once responsibilities are separated you&#8217;ll enjoy of statistics that aren&#8217;t harmed by failing integration jobs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pazmino.ec/design/continuous-reporting.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The fruits of working out</title>
		<link>http://www.pazmino.ec/engineering/the-fruits-of-working-out.html</link>
		<comments>http://www.pazmino.ec/engineering/the-fruits-of-working-out.html#comments</comments>
		<pubDate>Fri, 30 Mar 2012 17:10:03 +0000</pubDate>
		<dc:creator>iapazmino</dc:creator>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.pazmino.ec/?p=213</guid>
		<description><![CDATA[This a little tale about some code which didn't exercise in order to work on the really important.]]></description>
			<content:encoded><![CDATA[<p>This a little tale about some code which didn&#8217;t exercise in order to work on the really important.</p>
<p>A couple of months ago our project entered in total-madness mode. We were weeks away from the release and some bugs were still pending &#8211; a few critical. So, the management solution was dictated: All of the resources (meaning the members of the development team) will work as long as 24 hours per day if necessary until the bugs list is reduced to zero.<span id="more-213"></span></p>
<p>This situation led to people trying to solve as many issues per day as possible. In this noble task of course unit test got in our way taking up to five seconds in running, but that wasn&#8217;t the worst of it, they sometimes failed! So facing such an uncooperative response from the unit tests, they were simply ignored and skipped. This caused the CI server to constantly whine by mail about unstable builds and not seldom even broken builds.</p>
<p><a href="http://www.pazmino.ec/wp-content/uploads/2012/03/test-report.png"><img class="alignnone size-medium wp-image-214" title="test-report" src="http://www.pazmino.ec/wp-content/uploads/2012/03/test-report-181x300.png" alt="" width="181" height="300" /></a></p>
<p>This situation went on for a week or so and more bugs started to show up, PMD and Findbugs reports started to rise and people couldn&#8217;t commit often because the code base was not to be trust anymore. WTF/minute rate was sky-high and all the effort was becoming counter productive. So, we realized the release was not going to be bug&#8217;s free because time was not enough to fix them all and that we needed to cool down our pace. We still worked many hours, but those hours went back to productive.</p>
<p><a href="http://www.pazmino.ec/wp-content/uploads/2012/03/pmd-report.png"><img class="alignnone size-medium wp-image-215" title="pmd-report" src="http://www.pazmino.ec/wp-content/uploads/2012/03/pmd-report-185x300.png" alt="" width="185" height="300" /></a></p>
<p>First thing we did, when thinking again, was to put those unit test back to operative. That, just that, fixed 25% of the current list of bugs which was huge move toward the goal. After that, new fixed bugs produced almost boomerang-free releases to QA. The release went live washed out of all the critical bugs on the application, the core module was released with zero known-bugs, and the total pending bugs was reduced to the 40% of the original list.</p>
<p>The release didn&#8217;t include a dream-like artifact, some even considered the project had failed, but a very decent one. It accomplishes its raison d&#8217;être very well and performs under the processing time restrictions. All thanks to working out our code regularly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pazmino.ec/engineering/the-fruits-of-working-out.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solving the Right Problem</title>
		<link>http://www.pazmino.ec/engineering/solving-the-right-problem.html</link>
		<comments>http://www.pazmino.ec/engineering/solving-the-right-problem.html#comments</comments>
		<pubDate>Wed, 01 Feb 2012 22:43:37 +0000</pubDate>
		<dc:creator>iapazmino</dc:creator>
				<category><![CDATA[engineering]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[teaching]]></category>

		<guid isPermaLink="false">http://www.pazmino.ec/?p=205</guid>
		<description><![CDATA[Education on computing science at under degree level should rely on specialization during the last years.]]></description>
			<content:encoded><![CDATA[<p>Have you noticed how many books on software development have a chapter/section devoted to guide the reader on how to spot the right problem to solve and avoid wasting time and effort? They are many I would say, and they tackle the issue from different angles &#8211; when gathering requirements, when planning next sprint/iteration, before coding &#8211; and providing several techniques &#8211; using examples, polishing user stories, avoiding to polish user stories.<span id="more-205"></span></p>
<p>This makes you feel a little bit like for fifty+ years there have been many of us struggling with the same problems and several have succeeded in their quests and have documented their findings. Making a software bible out of the best titles doesn&#8217;t sound right. Just to propose choosing the &#8220;best titles&#8221; should unleash the <a title="Wrath_of_God" href="http://mtg.wikia.com/wiki/Wrath_of_God">Wrath of God</a>. But we still need this one source where to concentrate knowledge and if there were someone to guide in the learning process&#8230; Dreamy.</p>
<p>These books you usually would read after you&#8217;re finished becoming an engineer. You know, after five years of preparing your brain to solve problems with Mathematics, Geometry and Physics, and, learning generalities on computing-related matters like networking, programming, IT auditing, etc, won&#8217;t get you too far on your first programming job when you discover you should not use JDBC but some JPA layer in the JEE architecture to make that query. Difficult.</p>
<p>Adding more years to school is not a solution. Actually everybody is trying to make it shorter and easier to become an engineer so more people want to be one, regardless of the sucky professionals they might spit out to the market. Plain irresponsible.</p>
<p>What if universities teach basics and generalities for three years and then you have to choose an specialization, let&#8217;s say on software development, so that you spend two years learning the many ways to point at and solve the right problem. This is not new, it&#8217;s what they do in Psychology. Mastering all about computers nowadays reaches far beyond the eyes can see and competitivity won&#8217;t forgive those who know a bit of everything. That&#8217;s knowing nothing.</p>
<p>Spending two years learning structural, object oriented, functional and more programming and how to test it will sure make a better programmer. Learn formal and agile methodologies to track your project growing will make you at least aware of the tools at your disposal. Learn TDD, BDD, specification by example and you will aim your effort to the right problem. Have a teacher assisting you in the learning process of something you chose to get good at and those two years will be a delightful journey.</p>
<p>What I mean is education on computing science at under degree level should rely on specialization during the last years.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pazmino.ec/engineering/solving-the-right-problem.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

