<?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/"
	>

<channel>
	<title>dvrom.eu</title>
	<atom:link href="http://dvrom.eu/feed/" rel="self" type="application/rss+xml" />
	<link>http://dvrom.eu</link>
	<description>A multilingual blog on I.T., computers, software...and anything else...</description>
	<pubDate>Wed, 23 Dec 2009 19:23:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Building a 0-cost ad-free Simple Portfolio with drag&#8217;n'drop Album management</title>
		<link>http://dvrom.eu/2009/12/23/building-a-0-cost-ad-free-simple-portfolio-with-dragndrop-album-management/</link>
		<comments>http://dvrom.eu/2009/12/23/building-a-0-cost-ad-free-simple-portfolio-with-dragndrop-album-management/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 19:13:04 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[The Net]]></category>

		<category><![CDATA[Hosting]]></category>

		<category><![CDATA[The Cloud]]></category>

		<category><![CDATA[Web Portoflio]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=609</guid>
		<description><![CDATA[Somehow, I am not very good at <a href="http://theoatmeal.com/comics/computers" target="_blank">pretending I don't know anything about computers</a>, and I recently ended up building a essentially-simple but constraint-complex portfolio site.

Hoping that it could be useful for anybody else that frequently finds themselves in a <strong><i>"friend / relative / XXX" who is a "computer guy / gal "</i></strong> kind of role,  and who is expected to easily and quickly solve <strong>any</strong> computer related task, here goes one possible quick and simple solution for building the aforementioned portfolio site.

Building a portfolio website is certainly not the most complex of I.T. tasks nowadays, however, the constraints surrounding my business case did make it quite challenging:

<ul>
<li>My knowledge on Web Design and Website construction has not advanced since the early 00's (CSS effects, Flash and HTML5 remain quite a mystery to me)</li>
<li>The total cost of construction / hosting....and anything else, must be 0</li>
<li>No ugly side effects of free hosting (such as popups) are allowed</li>
<li>The portfolio must allow easy album management: uploading, coding and any other technical aspects are to remain transparent for the end user</li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Somehow, I am not very good at <a href="http://theoatmeal.com/comics/computers" target="_blank">pretending I don&#8217;t know anything about computers</a>, and I recently ended up building a essentially-simple but constraint-complex portfolio site.</p>
<p>Hoping that it could be useful for anybody else that frequently finds themselves in a <strong><i>&#8220;friend / relative / XXX&#8221; who is a &#8220;computer guy / gal &#8220;</i></strong> kind of role,  and who is expected to easily and quickly solve <strong>any</strong> computer related task, here goes one possible quick and simple solution for building the aforementioned portfolio site.</p>
<p>Building a portfolio website is certainly not the most complex of I.T. tasks nowadays, however, the constraints surrounding my business case did make it quite challenging:</p>
<ul>
<li>My knowledge on Web Design and Website construction has not advanced since the early 00&#8217;s (CSS effects, Flash and HTML5 remain quite a mystery to me)</li>
<li>The total cost of construction / hosting&#8230;.and anything else, must be 0</li>
<li>No ugly side effects of free hosting (such as popups) are allowed</li>
<li>The portfolio must allow easy album management: uploading, coding and any other technical aspects are to remain transparent for the end user</li>
</ul>
<p></br></p>
<h2>Transparent Album Management</h2>
<p>The most challenging requirement for me was to find a solution that offers easy and trivial album management.</p>
<p>FTP Uploading, remote directory creation or html coding were definitely out of the question, as all these tasks require specific knowledge that could not be imposed on the end user.</p>
<p>Fortunately enough, I stumbled upon <a href="http://jalbum.net" target="_blank">Jalbum</a>.</p>
<p>Jalbum offers free hosting for photo albums and, more importantly, jalbum also offers a great java client application that allows the user to easily create and manage the photo albums of their site.</p>
<p>Clicking, dragging and dropping are the only three basic operations needed to successfully use jalbum.</p>
<p>The client is freely downloadable, and it is possible to have a nice ad-free, popup-free 30 mb (more or less 200 photos, which is enough for the business case) account for free.</p>
<h2>Custom and <i>&#8220;nice looking&#8221;</i> Portfolio Website</h2>
<p>The business case required a nice flashy home page, and a top menu to connect the different albums.</p>
<p><a href="http://labs.adobe.com/technologies/flashcatalyst/" target="_blank">Flash Catalyst</a> came to the rescue when my complete ignorance of flash became a blocking issue towards providing a simple animation for the front page.</p>
<p>Although a bit buggy (perhaps due to the fact that it was still in a beta phase when I tried it), if equipped with a nice layered <a href="http://en.wikipedia.org/wiki/Adobe_Photoshop" target="_blank">PSD</a>, it is extremely simple to create nice flashy animations.</p>
<p>(<a href="http://blog.digitalbackcountry.com/2009/01/getting-started-with-flash-catalyst-tutorial/" target="_blank">Ryan&#8217;s &#8220;Geting Started with Flash Catalyst&#8221;</a> tutorial should get you towards the path of simple animations in only a couple of hours)</p>
<p>(As a side note, sadly enough, I had to find a Windows PC to use Flash Catalyst: the prerequisites state that &#8220;cannot install on a volume that uses a case-sensitive file system&#8221;, which unfortunately is the <a href="http://www.jms1.net/osx-case-sensitive-fs.shtml" target="_blank">(bad?) choice I made when installing MAC OS&#8230;</a>. Maybe <a href="http://getsatisfaction.com/adobe/topics/make_cs4_case_sensitive_installable" target="_blank">something to be solved in the future?</a>)</p>
<p>After fiddling around with Jalbum&#8217;s skins, I managed to modify <a href="http://jalbum.net/skins/skin/Imago" target="_blank">azarai&#8217;s great <i>Imago</i> skin</a>, inserting the different top menus, allowing for the desired effect of linking the albums together on one site.</p>
<h2>Hosting</h2>
<p>Jalbum&#8217;s hosting is not intended to allow for flexible and custom websites, but rather only for hosting of jalbum-friendly sites, which meant that it was not possible to host the front page together with the jalbum photo albums.</p>
<p>The last time I had searched for a nice free clean hosting solution, I believe the now extinct <a href="http://en.wikipedia.org/wiki/GeoCities" target="_blank">Geocities</a> was the best choice, which can give an idea of my knowledge on the current state of free hosting possibilities.</p>
<p>After some googling, I ended up setting up a <a href="http://code.google.com/appengine/" target="_blank">Google App Engine</a> account.</p>
<p>This option offered more than needed, and after downloading the <a href="http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Java" target="_blank">SDK</a>, creating my project and a simple &#8220;../appengine-java-sdk/bin/appcfg.sh update war&#8221;, the portfolio was up and running in the cloud.</p>
<p>I have to say, that I consider the final result to be not bad for a <a href="http://dorota-laskowska.appspot.com/" target="_blank">0-cost-sunday-morning-built portfolio</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/12/23/building-a-0-cost-ad-free-simple-portfolio-with-dragndrop-album-management/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mac friendly GPS Data Logging with eTrex Venture HC</title>
		<link>http://dvrom.eu/2009/09/14/mac-friendly-gps-data-logging-with-etrex-venture-hc/</link>
		<comments>http://dvrom.eu/2009/09/14/mac-friendly-gps-data-logging-with-etrex-venture-hc/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 18:38:13 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[Gadgets]]></category>

		<category><![CDATA[Geolocalization]]></category>

		<category><![CDATA[eTrex Venture HC]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=607</guid>
		<description><![CDATA[Although it offers much more than GPS data logging, the eTrex Venture HC is a good choice for GPS data logging needs.
Although cheaper and more limited (functionality wise) models can be found, the eTrex Venture HC is great value for money.
The 10.000 point logging capacity, excellent reception and 14 hour battery life, and the Garmin [...]]]></description>
			<content:encoded><![CDATA[<p>Although it offers much more than GPS data logging, the <a href="http://images.google.com/images?q=eTrex%20Venture®%20HC" target="_blank">eTrex Venture HC</a> is a good choice for GPS data logging needs.</p>
<p>Although cheaper and more limited (functionality wise) models can be found, the eTrex Venture HC is great value for money.</p>
<p>The 10.000 point logging capacity, excellent reception and 14 hour battery life, and the <a href="http://www8.garmin.com/macosx/" target="_blank">Garmin Mac-friendly software utilities</a>, were enough to convince me.</p>
<p>With <a href="http://www8.garmin.com/support/download_details.jsp?id=4332" target="_blank">Road Trip</a> for example, it is possible to export recorded data in GPX format.</p>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/09/14/mac-friendly-gps-data-logging-with-etrex-venture-hc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Displaying GPX data on Google Maps</title>
		<link>http://dvrom.eu/2009/09/14/displaying-gpx-data-on-google-maps/</link>
		<comments>http://dvrom.eu/2009/09/14/displaying-gpx-data-on-google-maps/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 18:31:17 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[Geolocalization]]></category>

		<category><![CDATA[Nice Tools]]></category>

		<category><![CDATA[Google Maps]]></category>

		<category><![CDATA[GPX]]></category>

		<category><![CDATA[KML]]></category>

		<category><![CDATA[KMZ]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=606</guid>
		<description><![CDATA[<a href="http://en.wikipedia.org/wiki/GPS_eXchange_Format" target="_blank">GPX</a> is a standard XML format used for describing GPS data.

One possible source for such information is, for example, a <a href="http://dvrom.eu/2009/09/14/mac-friendly-gps-data-logging-with-etrex-venture-hc/" target="_blank">GPS data logger</a>.

The path from GPX to Google Maps can be completed in 3 simple steps:]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/GPS_eXchange_Format" target="_blank">GPX</a> is a standard XML format used for describing GPS data.</p>
<p>One possible source for such information is, for example, a <a href="http://dvrom.eu/2009/09/14/mac-friendly-gps-data-logging-with-etrex-venture-hc/" target="_blank">GPS data logger</a>.</p>
<p>The path from GPX to Google Maps can be completed in 3 simple steps:</p>
<h3>1. Export the recorded tracks to GPX</h3>
<p>In my case, with the Venture HC, it is quite simple.</p>
<p>Connect the Venture HC to the Mac through the USB port, turn it on, fire up Road Trip and click on the &#8220;Receive&#8221; button. The recorded tracks should appear in the &#8220;Recently Read&#8221; folder. Simply copy the needed tracks into a created folder and then export the folder.</p>
<p><a href="http://dvrom.eu/wp/wp-content/uploads/roadtripbig.png" rel="shadowbox[roadtrip] " title="Road Trip"><img src="http://dvrom.eu/wp/wp-content/uploads/roadtripbigsmall.png" alt="Road Trip" title="Road Trip" class="aligncenter size full wp-image-41"/></a></p>
<h3>2. Convert the GPX file to KMZ</h3>
<p><a href="http://en.wikipedia.org/wiki/Keyhole_Markup_Language" target="_blank">KMZ files</a> are zipped versions of KML files, which is another XML based standard for representing GPS data.</p>
<p>In any case, the KMZ format is a format that Google Maps understands, so the GPX must be transformed to this format, with <a href="http://www.gpsvisualizer.com/" target="_blank">GPS Visualizer</a>, for example.</p>
<h3>3. Code the Map</h3>
<p>Couldn&#8217;t be easier:</p>
<pre>
    if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      map.setCenter(new GLatLng(49.613824,6.127625), 12);
      var kml = new GGeoXml("http://dvrom.eu/bike/2.kmz");
      map.addOverlay(kml);
    }
</pre>
<p>And, the final result, for example, a <a href="http://dvrom.eu/bike/2.html" target="_blank">bicycle route around luxembourg</a>.</p>
<p>The hard part of all this is producing relevant input data&#8230;.in some form of physical activity, of course&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/09/14/displaying-gpx-data-on-google-maps/feed/</wfw:commentRss>
		</item>
		<item>
		<title>My Top (free) Applications For Mac</title>
		<link>http://dvrom.eu/2009/09/12/my-top-25-free-applications-for-mac/</link>
		<comments>http://dvrom.eu/2009/09/12/my-top-25-free-applications-for-mac/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 21:30:19 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[Nice Tools]]></category>

		<category><![CDATA[Connect360]]></category>

		<category><![CDATA[cyberduck]]></category>

		<category><![CDATA[DivX for MAC]]></category>

		<category><![CDATA[Exif Viewer]]></category>

		<category><![CDATA[ffmpegX]]></category>

		<category><![CDATA[Flip4Mac]]></category>

		<category><![CDATA[Geotagger]]></category>

		<category><![CDATA[GIMP]]></category>

		<category><![CDATA[GPSPhotoLinker]]></category>

		<category><![CDATA[Little Snitch]]></category>

		<category><![CDATA[mamp]]></category>

		<category><![CDATA[MenuMeters]]></category>

		<category><![CDATA[MPEG Streamclip]]></category>

		<category><![CDATA[NeoOffice]]></category>

		<category><![CDATA[NTFS-3G]]></category>

		<category><![CDATA[TextWrangler]]></category>

		<category><![CDATA[TVUPlayer]]></category>

		<category><![CDATA[UnRarX]]></category>

		<category><![CDATA[utorrent]]></category>

		<category><![CDATA[VLC]]></category>

		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=604</guid>
		<description><![CDATA[Almost one year after jumping into the mac world, these are my must-have (free) apps for Mac OS X:

<center>
<table>
<tr>
<td>
<a href="http://www.nullriver.com/products/connect360" onMouseOver="javascript:highlight('connect360');" onMouseOut="javascript:unhighlight('connect360');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/connect360.png" name="connect360" alt="Connect360"/>
</a>
</td>
<td>
<a href="http://www.ffmpegx.com/" onMouseOver="javascript:highlight('ffmpegx');" onMouseOut="javascript:unhighlight('ffmpegx');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/ffmpegx.png" name="ffmpegx" alt="ffmpegx"/>
</a>
</td>
<td>
<a href="http://www.divx.com/en/products/software/mac/divx" onMouseOver="javascript:highlight('divx');" onMouseOut="javascript:unhighlight('divx');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/divx.png" name="divx" alt="DivX for MAC"/>
</a>
</td>
<td>
<a href="http://www.squared5.com/" onMouseOver="javascript:highlight('mpegstreamclip');" onMouseOut="javascript:unhighlight('mpegstreamclip');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/mpegstreamclip.png" name="mpegstreamclip" alt="MPEG Streamclip"/>
</a>
</td>
<td>
<a href="http://www.videolan.org/vlc/" onMouseOver="javascript:highlight('vlc');" onMouseOut="javascript:unhighlight('vlc');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/vlc.png" name="vlc" alt="vlc"/>
</a>
</td>
</tr>
<tr>
<td>
<a href="http://www.telestream.net/flip4mac-wmv/overview.htm" onMouseOver="javascript:highlight('flip4mac');" onMouseOut="javascript:unhighlight('flip4mac');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/flip4mac.png" name="flip4mac" alt="Flip4Mac"/>
</a>
</td>
<td>
<a href="http://cyberduck.ch/" onMouseOver="javascript:highlight('cyberduck');" onMouseOut="javascript:unhighlight('cyberduck');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/cyberduck.png" name="cyberduck" alt="Cyberduck"/>
</a>
</td>
<td>
<a href="http://www.barebones.com/products/TextWrangler/" onMouseOver="javascript:highlight('textwrangler');" onMouseOut="javascript:unhighlight('textwrangler');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/textwrangler.png" name="textwrangler" alt="TextWrangler"/>
</a>
</td>
<td>
<a href="http://www.gimp.org/" onMouseOver="javascript:highlight('gimp');" onMouseOut="javascript:unhighlight('gimp');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/gimp.png" name="gimp" alt="GIMP"/>
</a>
</td>
<td>
<a href="http://www.mamp.info/en/index.html" onMouseOver="javascript:highlight('mamp');" onMouseOut="javascript:unhighlight('mamp');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/mamp.png" name="mamp" alt="MAMP"/>
</a>
</td>
</tr>
<tr>
<td>
<a href="http://homepage.mac.com/aozer/EV/" onMouseOver="javascript:highlight('exifviewer');" onMouseOut="javascript:unhighlight('exifviewer');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/exifviewer.png" name="exifviewer" alt="Exif Viewer"/>
</a>
</td>
<td>
<a href="http://craig.stanton.net.nz/code/geotagger/" onMouseOver="javascript:highlight('geotagger');" onMouseOut="javascript:unhighlight('geotagger');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/geotagger.png" name="geotagger" alt="Geotagger"/>
</a>
</td>
<td>
<a href="http://www.earlyinnovations.com/gpsphotolinker/" onMouseOver="javascript:highlight('gpsphotolinker');" onMouseOut="javascript:unhighlight('gpsphotolinker');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/gpsphotolinker.png" name="gpsphotolinker" alt="gpsphotolinker"/>
</a>
</td>
<td>
<a href="http://developer.apple.com/TOOLS/Xcode/" onMouseOver="javascript:highlight('xcode');" onMouseOut="javascript:unhighlight('xcode');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/xcode.png" name="xcode" alt="XCode"/>
</a>
</td>
<td>
<a href="http://www.neooffice.org/neojava/en/index.php" onMouseOver="javascript:highlight('neooffice');" onMouseOut="javascript:unhighlight('neooffice');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/neooffice.png" name="neooffice" alt="NeoOffice"/>
</a>
</td>
</tr>
<tr>
<td>
<a href="http://www.obdev.at/products/littlesnitch/index.html" onMouseOver="javascript:highlight('littlesnitch');" onMouseOut="javascript:unhighlight('littlesnitch');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/littlesnitch.png" name="littlesnitch" alt="Little Snitch"/>
</a>
</td>
<td>
<a href="http://www.ragingmenace.com/software/menumeters/" onMouseOver="javascript:highlight('menumeters');" onMouseOut="javascript:unhighlight('menumeters');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/menumeters.png" name="menumeters" alt="Little Snitch"/>
</a>
</td>
<td>
<a href="http://www.unrarx.com/" onMouseOver="javascript:highlight('unrarx');" onMouseOut="javascript:unhighlight('unrarx');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/unrarx.png" name="unrarx" alt="UnRarX"/>
</a>
</td>
<td>
<a href="http://www.utorrent.com/" onMouseOver="javascript:highlight('utorrent');" onMouseOut="javascript:unhighlight('utorrent');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/utorrent.png" name="utorrent" alt="UnRarX"/>
</a>
</td>
<td>
<a href="http://macntfs-3g.blogspot.com/" onMouseOver="javascript:highlight('ntfs3g');" onMouseOut="javascript:unhighlight('ntfs3g');" target="_blank">
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/ntfs3g.png" name="ntfs3g" alt="ntfs3g"/>
</a>
</td>
</tr>
</table>
</center>
]]></description>
			<content:encoded><![CDATA[<p>Almost one year after jumping into the mac world, these are my must-have (free) apps for Mac OS X:<br />
<br /></br></p>
<h2><strong>Video</strong></h2>
<p></br></p>
<table>
<tr>
<td>
<a href="http://www.nullriver.com/products/connect360" onMouseOver="javascript:highlight('connect360');" onMouseOut="javascript:unhighlight('connect360');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/connect360.png" name="connect360" alt="Connect360"/><br />
</a>
</td>
<td>
<h3>1) <a href="http://www.nullriver.com/products/connect360" target="_blank">Connect 360</a></h3>
<p>Stream audio (iTunes) and video (anything playable on your Mac) directly to your Xbox 360.
</td>
</tr>
<tr>
<td>
<a href="http://www.videolan.org/vlc/" onMouseOver="javascript:highlight('vlc');" onMouseOut="javascript:unhighlight('vlc');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/vlc.png" name="vlc" alt="vlc"/><br />
</a>
</td>
<td>
<h3>2) <a href="http://www.videolan.org/vlc/" target="_blank">VLC</a></h3>
<p>This great video player works just as well on Mac OS X as it does on other platforms, and is able to play just about every video format out there.
</td>
</tr>
<tr>
<td>
<a href="http://www.ffmpegx.com/" onMouseOver="javascript:highlight('ffmpegx');" onMouseOut="javascript:unhighlight('ffmpegx');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/ffmpegx.png" name="ffmpegx" alt="ffmpegx"/><br />
</a>
</td>
<td>
<h3>3) <a href="http://www.ffmpegx.com/" target="_blank">ffmpegX</a></h3>
<p>Nice little video and audio encoder, great for embedding subtitles directly in the video for example.
</td>
</tr>
<tr>
<td>
<a href="http://www.divx.com/en/products/software/mac/divx" onMouseOver="javascript:highlight('divx');" onMouseOut="javascript:unhighlight('divx');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/divx.png" name="divx" alt="DivX for MAC"/><br />
</a>
</td>
<td>
<h3>4) <a href="http://www.divx.com/en/products/software/mac/divx" target="_blank">DivX for MAC</a></h3>
<p><a href="http://en.wikipedia.org/wiki/Jerome_Rota" target="_blank">The DivX origin story</a> is quite interesting, and the codec itself is still widely used.</td>
</tr>
<tr>
<td>
<a href="http://www.squared5.com/" onMouseOver="javascript:highlight('mpegstreamclip');" onMouseOut="javascript:unhighlight('mpegstreamclip');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/mpegstreamclip.png" name="mpegstreamclip" alt="MPEG Streamclip"/><br />
</a>
</td>
<td>
<h3>5) <a href="http://www.squared5.com/" target="_blank">MPEG Streamclip</a></h3>
<p>Another great tool for encoding, decoding and authoring video.
</td>
</tr>
<tr>
<td>
<a href="http://www.telestream.net/flip4mac-wmv/overview.htm" onMouseOver="javascript:highlight('flip4mac');" onMouseOut="javascript:unhighlight('flip4mac');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/flip4mac.png" name="flip4mac" alt="Flip4Mac"/><br />
</a>
</td>
<td>
<h3>6) <a href="http://www.telestream.net/flip4mac-wmv/overview.htm" target="_blank">Flip4Mac</a></h3>
<p>Allows to play Windows Media Video and Audio files on Mac OS X (also embedded WMV in web pages).
</td>
</tr>
</table>
<p></br></p>
<h2><strong>Blogging Tools</strong></h2>
<p></br></p>
<table>
<tr>
<td>
<a href="http://cyberduck.ch/" onMouseOver="javascript:highlight('cyberduck');" onMouseOut="javascript:unhighlight('cyberduck');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/cyberduck.png" name="cyberduck" alt="Cyberduck"/><br />
</a>
</td>
<td>
<h3>7) <a href="http://cyberduck.ch/" target="_blank">Cyberduck</a></h3>
<p>A great lightweight ftp client.
</td>
</tr>
<tr>
<td>
<a href="http://www.barebones.com/products/TextWrangler/" onMouseOver="javascript:highlight('textwrangler');" onMouseOut="javascript:unhighlight('textwrangler');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/textwrangler.png" name="textwrangler" alt="TextWrangler"/><br />
</a>
</td>
<td>
<h3>8&#41; <a href="http://www.barebones.com/products/TextWrangler/" target="_blank">TextWrangler</a></h3>
<p>A great text editor, with syntax highlighting.
</td>
</tr>
<tr>
<td>
<a href="http://www.gimp.org/" onMouseOver="javascript:highlight('gimp');" onMouseOut="javascript:unhighlight('gimp');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/gimp.png" name="gimp" alt="GIMP"/><br />
</a>
</td>
<td>
<h3>9) <a href="http://www.gimp.org/" target="_blank">GIMP</a></h3>
<p>Although I never liked the multi window GUI, It&#8217;s definitely the best free graphics editor, and it can run on X11 on Mac OS X.
</td>
</tr>
<tr>
<td>
<a href="http://www.mamp.info/en/index.html" onMouseOver="javascript:highlight('mamp');" onMouseOut="javascript:unhighlight('mamp');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/mamp.png" name="mamp" alt="MAMP"/><br />
</a>
</td>
<td>
<h3>10) <a href="http://www.mamp.info/en/index.html" target="_blank">MAMP</a></h3>
<p>The easiest way to get a Apache - MySQL - PHP test environment up and running on a Mac.
</td>
</tr>
</table>
<p></br></p>
<h2><strong>Geolocation</strong></h2>
<p></br></p>
<table>
<tr>
<td>
<a href="http://homepage.mac.com/aozer/EV/" onMouseOver="javascript:highlight('exifviewer');" onMouseOut="javascript:unhighlight('exifviewer');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/exifviewer.png" name="exifviewer" alt="Exif Viewer"/><br />
</a>
</td>
<td>
<h3>11) <a href="http://homepage.mac.com/aozer/EV/" target="_blank">Exif Viewer</a></h3>
<p>A nice little tool to view the EXIF information of a image file.
</td>
</tr>
<tr>
<td>
<a href="http://craig.stanton.net.nz/code/geotagger/" onMouseOver="javascript:highlight('geotagger');" onMouseOut="javascript:unhighlight('geotagger');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/geotagger.png" name="geotagger" alt="Geotagger"/><br />
</a>
</td>
<td>
<h3>12) <a href="http://craig.stanton.net.nz/code/geotagger/" target="_blank">Geotagger</a></h3>
<p>Works in combination with Google Earth to offer manual geotagging of image files.
</td>
</tr>
<tr>
<td>
<a href="http://www.earlyinnovations.com/gpsphotolinker/" onMouseOver="javascript:highlight('gpsphotolinker');" onMouseOut="javascript:unhighlight('gpsphotolinker');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/gpsphotolinker.png" name="gpsphotolinker" alt="gpsphotolinker"/><br />
</a>
</td>
<td>
<h3>13) <a href="http://www.earlyinnovations.com/gpsphotolinker/" target="_blank">GPSPhotoLinker</a></h3>
<p>A tool for automatically geotaging photos by reading previously saved geolocated logged data.
</td>
</tr>
</table>
<p></br></p>
<h2><strong>Other Niceties</strong></h2>
<p></br></p>
<table>
<tr>
<td>
<a href="http://developer.apple.com/TOOLS/Xcode/" onMouseOver="javascript:highlight('xcode');" onMouseOut="javascript:unhighlight('xcode');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/xcode.png" name="xcode" alt="XCode"/><br />
</a>
</td>
<td>
<h3>14) <a href="http://developer.apple.com/TOOLS/Xcode/" target="_blank">XCode</a></h3>
<p>Apple&#8217;s developer tools, and, amongst other things, the easiest way to get gcc on Max OS X.
</td>
</tr>
<tr>
<td>
<a href="http://www.neooffice.org/neojava/en/index.php" onMouseOver="javascript:highlight('neooffice');" onMouseOut="javascript:unhighlight('neooffice');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/neooffice.png" name="neooffice" alt="NeoOffice"/><br />
</a>
</td>
<td>
<h3>15) <a href="http://www.neooffice.org/neojava/en/index.php" target="_blank">NeoOffice</a></h3>
<p>Based on OpenOffice, but runs slightly faster.
</td>
</tr>
<tr>
<td>
<a href="http://www.obdev.at/products/littlesnitch/index.html" onMouseOver="javascript:highlight('littlesnitch');" onMouseOut="javascript:unhighlight('littlesnitch');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/littlesnitch.png" name="littlesnitch" alt="Little Snitch"/><br />
</a>
</td>
<td>
<h3>16) <a href="http://www.obdev.at/products/littlesnitch/index.html" target="_blank">Little Snitch</a></h3>
<p>An excellent (and above all discrete and not annoying) network monitor. Great for keeping an eye on what you are letting in and out.
</td>
</tr>
<tr>
<td>
<a href="http://www.ragingmenace.com/software/menumeters/" onMouseOver="javascript:highlight('menumeters');" onMouseOut="javascript:unhighlight('menumeters');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/menumeters.png" name="menumeters" alt="Little Snitch"/><br />
</a>
</td>
<td>
<h3>17) <a href="http://www.ragingmenace.com/software/menumeters/" target="_blank">MenuMeters</a></h3>
<p>A nice little system monitor that sits in the menu bar, allowing to get info on network, cpu and memory usage.
</td>
</tr>
<tr>
<td>
<a href="http://www.unrarx.com/" onMouseOver="javascript:highlight('unrarx');" onMouseOut="javascript:unhighlight('unrarx');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/unrarx.png" name="unrarx" alt="UnRarX"/><br />
</a>
</td>
<td>
<h3>18) <a href="http://www.unrarx.com/" target="_blank">UnRarX</a></h3>
<p>Mac OS X can not handle rar files out of the box, so UnRarX can be very useful.
</td>
</tr>
<tr>
<td>
<a href="http://www.utorrent.com/" onMouseOver="javascript:highlight('utorrent');" onMouseOut="javascript:unhighlight('utorrent');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/utorrent.png" name="utorrent" alt="UnRarX"/><br />
</a>
</td>
<td>
<h3>19) <a href="http://www.utorrent.com/" target="_blank">utorrent</a></h3>
<p>The best lightweight torrent client.
</td>
</tr>
<tr>
<td>
<a href="http://macntfs-3g.blogspot.com/" onMouseOver="javascript:highlight('ntfs3g');" onMouseOut="javascript:unhighlight('ntfs3g');" target="_blank"><br />
<img src="http://dvrom.eu/wp/wp-content/uploads/topapps/ntfs3g.png" name="ntfs3g" alt="ntfs3g"/><br />
</a>
</td>
<td>
<h3>20) <a href="http://macntfs-3g.blogspot.com/" target="_blank">NTFS-3G</a></h3>
<p>Enables write operations on NTFS filesystems on Mac OS X. Specially useful if dual os&#8217;ing.
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/09/12/my-top-25-free-applications-for-mac/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Adding a Drop Shadow to a Image with GIMP</title>
		<link>http://dvrom.eu/2009/08/28/adding-a-drop-shadow-to-a-image-with-gimp/</link>
		<comments>http://dvrom.eu/2009/08/28/adding-a-drop-shadow-to-a-image-with-gimp/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 18:36:39 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[Nice Tools]]></category>

		<category><![CDATA[GIMP]]></category>

		<category><![CDATA[Image Manipulation]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=601</guid>
		<description><![CDATA[Just as easy as resizing images with mogrify&#8230;
1. Download and install GIMP
2. Open Image

3. Filters -&#62; Light and Shadow -&#62; Drop Shadow

]]></description>
			<content:encoded><![CDATA[<p>Just as easy as <a href="http://dvrom.eu/2009/08/28/resizing-jpg-images-with-mogrify-on-mac/" target="_blank">resizing images with mogrify</a>&#8230;</p>
<p>1. Download and install <a href="http://www.gimp.org/" target="_blank">GIMP</a></p>
<p>2. Open Image</p>
<p><img title="Original Image" src="http://dvrom.eu/wp/wp-content/uploads/before.JPG" alt="Original Image" class="aligncenter size full wp-image-41"/></p>
<p>3. Filters -&gt; Light and Shadow -&gt; Drop Shadow</p>
<p><img title="Image with Shadow" src="http://dvrom.eu/wp/wp-content/uploads/after.JPG" alt="Image with Shadow" class="aligncenter size full wp-image-41"/></p>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/08/28/adding-a-drop-shadow-to-a-image-with-gimp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Batch Resizing JPG Images With Mogrify on Mac</title>
		<link>http://dvrom.eu/2009/08/28/resizing-jpg-images-with-mogrify-on-mac/</link>
		<comments>http://dvrom.eu/2009/08/28/resizing-jpg-images-with-mogrify-on-mac/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 18:00:32 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[Nice Tools]]></category>

		<category><![CDATA[Image Manipulation]]></category>

		<category><![CDATA[ImageMagick]]></category>

		<category><![CDATA[Mogrify]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=600</guid>
		<description><![CDATA[Couldn&#8217;t be easier!
Simply:
1. Install ImageMagick
2. Setup the needed environment variables:

export MAGICK_HOME="/opt/local/var/ImageMagick-6.5.3"
export PATH="/opt/local/var/ImageMagick-6.5.3/bin:$PATH"
export DYLD_LIBRARY_PATH="/opt/local/var/ImageMagick-6.5.3/lib"

3. Resize:

bash-3.2$ /opt/local/bin/mogrify -resize 525x700 image.jpg

(NOTE: Overwrites image (does not create a new image))
]]></description>
			<content:encoded><![CDATA[<p>Couldn&#8217;t be easier!</p>
<p>Simply:</p>
<p>1. Install <a href="http://www.imagemagick.org/" target="_blank">ImageMagick</a></p>
<p>2. Setup the needed environment variables:</p>
<pre>
export MAGICK_HOME="/opt/local/var/ImageMagick-6.5.3"
export PATH="/opt/local/var/ImageMagick-6.5.3/bin:$PATH"
export DYLD_LIBRARY_PATH="/opt/local/var/ImageMagick-6.5.3/lib"
</pre>
<p>3. Resize:</p>
<pre>
bash-3.2$ /opt/local/bin/mogrify -resize 525x700 image.jpg
</pre>
<p>(<strong>NOTE: Overwrites image (does not create a new image)</strong>)</p>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/08/28/resizing-jpg-images-with-mogrify-on-mac/feed/</wfw:commentRss>
		</item>
		<item>
		<title>97 Things Every Software Architect Should Know</title>
		<link>http://dvrom.eu/2009/08/24/97-things-every-software-architect-should-know/</link>
		<comments>http://dvrom.eu/2009/08/24/97-things-every-software-architect-should-know/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 19:50:12 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[Knowledge Source]]></category>

		<category><![CDATA[Michael Nygard]]></category>

		<category><![CDATA[Neal Ford]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=590</guid>
		<description><![CDATA[If you like good, easy-reading and free knowledge like me, you will surely find taking a look at <a href="http://97-things.near-time.net/wiki/97-things-every-software-architect-should-know-the-book" target="blank">97 Things Every Software Architect Should Know</a> worthwhile.

Every software project is different, and has it's own and unique needs, and as <a href="http://egarson.blogspot.com/" target="_blank">Edward Garson</a> points out in <a href="http://97-things.near-time.net/wiki/context-is-king-and-simplicity-its-humble-servant" target="_blank">Context is King</a>:

<i>"I feel there is a certain irony in trying to impart something about architectural ideals, when the very premise I wish to begin with is that effectively there are no ideals. If this is indeed the case, then surely there is nothing to write, I am a contradiction and by doing this I run the risk of the universe imploding or something like that."</i>

However:

<i>"But alas, <a href="http://en.wikipedia.org/wiki/The_Treachery_of_Images" target="_blank">ceci n'est pas une pipe</a>."</i>

I also believe that software engineering projects do share some common issues (or at least I hope for this, any <a href="http://www.nolledge.com/morale.html" target="_blank">morale</a> booster is welcomed: <a href="http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf" target="_blank">software engineering is such a challenging discipline that despair is frequent !</a>). 

"97 Things" points out some topics and solutions that should probably be applicable for any software engineering endeavor.

There are some <a href="http://www.michaelnygard.com/" target="_blank">big</a> <a href="http://www.nealford.com/" target="_blank">names</a> and many years of experience behind these tidbits of wisdom,  and in my short career so far, I have found many of the described issues in "97 Things" in past and present projects.

Because 97 things are too much for my short term memory, these are the top 3 things to know that I strive to remember:]]></description>
			<content:encoded><![CDATA[<p>If you like good, easy-reading and free knowledge like me, you will surely find taking a look at <a href="http://97-things.near-time.net/wiki/97-things-every-software-architect-should-know-the-book" target="blank">97 Things Every Software Architect Should Know</a> worthwhile.</p>
<p>Every software project is different, and has it&#8217;s own and unique needs, and as <a href="http://egarson.blogspot.com/" target="_blank">Edward Garson</a> points out in <a href="http://97-things.near-time.net/wiki/context-is-king-and-simplicity-its-humble-servant" target="_blank">Context is King</a>:</p>
<p><i>&#8220;I feel there is a certain irony in trying to impart something about architectural ideals, when the very premise I wish to begin with is that effectively there are no ideals. If this is indeed the case, then surely there is nothing to write, I am a contradiction and by doing this I run the risk of the universe imploding or something like that.&#8221;</i></p>
<p>However:</p>
<p><i>&#8220;But alas, <a href="http://en.wikipedia.org/wiki/The_Treachery_of_Images" target="_blank">ceci n&#8217;est pas une pipe</a>.&#8221;</i></p>
<p>I also believe that software engineering projects do share some common issues (or at least I hope for this, any <a href="http://www.nolledge.com/morale.html" target="_blank">morale</a> booster is welcomed: <a href="http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf" target="_blank">software engineering is such a challenging discipline that despair is frequent !</a>). </p>
<p>&#8220;97 Things&#8221; points out some topics and solutions that should probably be applicable for any software engineering endeavor.</p>
<p>There are some <a href="http://www.michaelnygard.com/" target="_blank">big</a> <a href="http://www.nealford.com/" target="_blank">names</a> and many years of experience behind these tidbits of wisdom,  and in my short career so far, I have found many of the described issues in &#8220;97 Things&#8221; in past and present projects.</p>
<p>Because 97 things are too much for my short term memory, these are the top 3 things to know that I strive to remember:</p>
<h3>1. Choose the most adequate technology</h3>
<p>Very often, the technology chosen to solve a certain problem is not the optimal solution.</p>
<p>As stated in <a href="http://97-things.near-time.net/wiki/don-t-put-your-resume-ahead-of-the-requirements" target="_blank">Don&#8217;t put your resume ahead of the requirements</a>, sometimes technologies are chosen just because they are <i>“newer than”</i> or <i>“cooler than”</i> other technologies that would be more adequate.</p>
<p>In other cases, the same technology is used over and over again. <a href="http://97-things.near-time.net/wiki/There%20is%20no%20one-size-fits-all%20solution" target="_blank">There is no one-size-fits-all solution</a>. In most cases this is caused by one of the greater dangers in software engineering: prioritizing component/architecture/code/design reuse over any other criteria. In many cases, the business case is adapted to use an existing solution, when it should be the other way around. I have not seen worse evil than corporate frameworks !</p>
<p>We should probably <i>”think outside the stack”</i> more often, and choose the best solution for each problem: <a href="http://97-things.near-time.net/wiki/Heterogeneity%20Wins" target="_blank">Heterogeneity Wins</a>.</p>
<p></br></p>
<h3>2. <a href="http://www.codinghorror.com/blog/archives/000111.html" target="_blank">KISS</a> and <a href="http://www.codinghorror.com/blog/archives/000113.html" target="_blank">YAGNI</a></h3>
<p><a href="http://en.wikipedia.org/wiki/KISS_principle" target="_blank">&#8220;Keep it Simple, Stupid&#8221;</a> and <a href="http://en.wikipedia.org/wiki/You_Ain't_Gonna_Need_It" target="_blank">“You Aren&#8217;t Gonna Need It !”</a> are two principles that aim to solve one of the most frequent pitfalls I encounter: unneeded complexity.</p>
<p>In <a href="http://97-things.near-time.net/wiki/simplify-essential-complexity-diminish-accidental-complexity" target="_blank">Simplify essential complexity; diminish accidental complexity</a> Neal Ford&#8217;s explains this error (in a developer context) perfectly:</p>
<p><i>&#8220;Developers are drawn to complexity like moths to flame, frequently with the same result. Puzzle solving is fun, and developers are problem solvers. Who doesn&#8217;t like the rush of solving some incredibly complex problem? In large-scale software, though, removing accidental complexity while retaining the solution to the essential complexity is challenging&#8221;</i></p>
<p>He also adds:</p>
<p><i>&#8220;Look at the percentage of code you have in a solution that directly addresses the business problem vs. code that merely services the boundary between the application and the users&#8221;</i></p>
<p>Know when to stop (<a href="http://97-things.near-time.net/wiki/perfect-is-the-enemy-of-good-enough" target="_blank">&#8220;Perfect&#8221; is the Enemy of &#8220;Good Enough&#8221;</a>), <a href="http://97-things.near-time.net/wiki/dont-be-clever" target="_blank">Don&#8217;t Be Clever</a>, <a href="http://97-things.near-time.net/wiki/make-sure-the-simple-stuff-is-simple" target="_blank">Make sure the simple stuff is simple</a> and remember that <a href="http://97-things.near-time.net/wiki/todays-solution-is-tomorrows-problem" target="_blank">You can&#8217;t future-proof solutions</a>, that <a href="http://97-things.near-time.net/wiki/Application%20architecture%20determines%20application%20performance" target="_blank">Application architecture determines performance</a> and that <a href="http://97-things.near-time.net/wiki/Scope%20is%20the%20enemy%20of%20success" target="_blank">Scope is the enemy of success</a> !</p>
<h3>3. Know the business case</h3>
<p>If you <a href="http://97-things.near-time.net/wiki/understand-the-business-domain" target="_blank">Understand The Business Domain</a> and realize that <a href="http://97-things.near-time.net/wiki/context-is-king-and-simplicity-its-humble-servant" target="_blank">Context is King</a>, you should be able to challenge client-requested system-constraining unneeded requirements and <a href="http://97-things.near-time.net/wiki/Seek%20the%20value%20in%20requested%20capabilities" target="_blank">Seek the value in requested capabilities</a> and <a href="http://97-things.near-time.net/wiki/quantify" target="_blank">Quantify</a> fuzzy demands.</p>
<p>Even though <a href="http://97-things.near-time.net/wiki/business-drives" target="_blank">Business Drives</a>, if we have enough knowledge on the domain, we can give the client what he needs, not what he wants, because <a href="http://97-things.near-time.net/wiki/your-customer-is-not-your-customer" target="_blank">Your Customer is Not Your Customer</a>.</p>
<h3>And everything else&#8230;</h3>
<p>These are just my top 3&#8230;but there are <a href="http://97-things.near-time.net/wiki/97-things-every-software-architect-should-know-the-book" target="_blank">many</a> <a href="http://97-things.near-time.net/wiki/other-things-software-architects-should-know" target="_blank">many</a> others.</p>
<p>Online and free&#8230;so there really is no excuse not to take a look !</p>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/08/24/97-things-every-software-architect-should-know/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Release It! Design and Deploy Production-Ready Software</title>
		<link>http://dvrom.eu/2009/08/18/release-it-design-and-deploy-production-ready-software/</link>
		<comments>http://dvrom.eu/2009/08/18/release-it-design-and-deploy-production-ready-software/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 19:48:00 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[Knowledge Source]]></category>

		<category><![CDATA[Michael Nygard]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=588</guid>
		<description><![CDATA[<a href="http://www.michaelnygard.com/" target="_blank">Michael Nygard</a> is a professional programmer and architect with over 15 years experience, and also the author of <a href="http://www.amazon.com/Release-Production-Ready-Software-Pragmatic-Programmers/dp/0978739213" target=”_blank”>"Release It! Design and Deploy Production-Ready Software"</a>.

Having encountered this book on many <a href="http://www.ibm.com/developerworks/java/library/j-javaresources.html?S_TACT=105AGX02&#038;S_CMP=EDU" target="_blank"><i>"Top Books a Software Engineer Must Read"</i></a> lists, I thought i'd give it a try.

This will not be a in-depth review, <a href="http://www.amazon.com/gp/product/0978739213?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0978739213" target="_blank">as there are already many out there</a>, but rather a summary of ideas that will stay with me after this first read.

Michael's book is all about the problematics related to successfully executing software systems in production, and although it is centered on high availability and large scale distributed systems, many of the discussed topics can be applied to any software system.

The book covers all the possible elements and layers of software engineering I can think of: management, delivery, testing, design, coding..., front-end, back-end, deployment, etc., and rather than trying to answer all the questions, it tries to point out the good direction in which to go.

This is certainly a book that I expect to come back to in the future, as the ideas and scenarios that will stay with me after this first read are only the ones which I can relate to, because I have encountered them in current and past projects.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.michaelnygard.com/" target="_blank">Michael Nygard</a> is a professional programmer and architect with over 15 years experience, and also the author of <a href="http://www.amazon.com/Release-Production-Ready-Software-Pragmatic-Programmers/dp/0978739213" target=”_blank”>&#8220;Release It! Design and Deploy Production-Ready Software&#8221;</a>.</p>
<p>Having encountered this book on many <a href="http://www.ibm.com/developerworks/java/library/j-javaresources.html?S_TACT=105AGX02&#038;S_CMP=EDU" target="_blank"><i>&#8220;Top Books a Software Engineer Must Read&#8221;</i></a> lists, I thought i&#8217;d give it a try.</p>
<p>This will not be a in-depth review, <a href="http://www.amazon.com/gp/product/0978739213?ie=UTF8&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0978739213" target="_blank">as there are already many out there</a>, but rather a summary of ideas that will stay with me after this first read.</p>
<p>Michael&#8217;s book is all about the problematics related to successfully executing software systems in production, and although it is centered on high availability and large scale distributed systems, many of the discussed topics can be applied to any software system.</p>
<p>The book covers all the possible elements and layers of software engineering I can think of: management, delivery, testing, design, coding&#8230;, front-end, back-end, deployment, etc., and rather than trying to answer all the questions, it tries to point out the good direction in which to go.</p>
<p>This is certainly a book that I expect to come back to in the future, as the ideas and scenarios that will stay with me after this first read are only the ones which I can relate to, because I have encountered them in current and past projects.</p>
<h2>Stability and Testing</h2>
<p>The first part of the book discusses stability, and what should be done in order to achieve a high availability 24/7 system that is able to meet strict <a href="http://en.wikipedia.org/wiki/Service_level_agreement" target="_blank">SLA</a> requirements.</p>
<p>One aspect that I could relate to, and I found to be of particular interest, was the topic of how to and what to exactly test when assuring the stability of your system.</p>
<p>For example, the book mentions the use of a <i>”nasty test harness”</i>: Your system should be mistreated and abused in all the possible ways you can imagine.</p>
<p>This is something I encountered in the past: the complexity of some projects made it not feasible to test the complete workflow of all test cases.</p>
<p>Instead, in a <a href="http://en.wikipedia.org/wiki/Reductio_ad_absurdum" target="_blank"><i>reductio ad absurdum</i></a> style, a certain time frame was established in which the system was punished in order to find a unstable system state.</p>
<p>If it is not possible to test for stability, then the search for instability could help find some weak spots in your system.</p>
<p>Another idea that I can relate to, and which I have witnessed, is that in an EAI / SOA / ESB scenario, where your system is forced to live and communicate with strange and alien systems, every integration point is a major risk in your system stability.</p>
<p>Unit tests, functional tests, integration tests, point to point tests, component tests&#8230;etc&#8230;all test the system&#8217;s behavior under normal or spec conditions, but do you know how your system behaves in out of spec conditions?</p>
<p>In effect, for every integration point, it is important to know what happens to your system if it receives unexpected or inexistent responses.</p>
<p>The same can be said in the other direction: how do the other systems react if your system sends out strange or inexistent responses?</p>
<p>Another topic which I found to be interesting was “Longevity Testing”. </p>
<p>The idea of longevity testing is to have production-like tests run in a production-like frequency against a long running production-like server, in order to detect otherwise undetectable system failures, such as the dreaded OutOfMemory exception (and avoid shameful quick fix production daily server restarts).</p>
<h2>Application Monitoring and Resource Use</h2>
<p>Having worked in the past in a <a href="http://www.urbandictionary.com/define.php?term=Winston%20Wolf" target="_blank">Winston Wolf</a> role, that is, as a <a href="http://dvrom.eu/2009/05/27/on-consultants-and-developers/" target="_blank">technical consultant</a>, I got to know the hard way just how important it is to be able to easily monitor and diagnose your system in production environments.</p>
<p>Michael&#8217;s book highlights this, and points out what vital parts of the system should be monitored.</p>
<p>One topic that is discussed, and that I can relate to, is probably the number one output of monitoring information that a software system in production relies on: logging.</p>
<p>In my experience, each time a real-time debug session is needed to fix a bug, and logging was not enough, a risk emerges: the system could not be telling us something important.</p>
<p>The simple fact of not logging certain information, could make fixing bugs that appear in production a long and weary task: sometimes data exports, message dumps and others are not possible, and reproducing production settings in a development environment for analysis can be a difficult or even a impossible task.</p>
<p><i>Release it!</i> also outlines how important it is to understand exactly how your system is using resources.</p>
<p>These resources vary from the <i>”big four”</i> (CPU, Memory, Storage, Bandwidth), to resource pools, threads, database connection pools, and any other resource.</p>
<p>Development and production metrics can help on understanding where our system can break, and even avoid future disasters.</p>
<p>After reading this book, one becomes resource-paranoid, which is probably a good thing.</p>
<p>Every time you will work with a connection pool, set an isolation level, start a transaction, or even set a JVM property, you will probably find yourself wondering what happens to your system if no connection is availablel, if the transaction fails or if your application server dies.</p>
<h2>Architecture, Patterns and Anti-Patterns</h2>
<p>Another significant topic treated in the book is system architecture, patterns and anti-patterns.</p>
<p>What will stick with me, and which is quite obvious, but I find never to be mentioned enough, is the idea that the more coupled your systems are in your landscape, the more risk for global failure.</p>
<p>And to this I would add, the more systems in your landscape the higher the risk.</p>
<p>The first rule in simplifying an integration scenario is to eliminate systems.</p>
<p>If, for whatever reasons (political and contractual are the most often and most unjustifiable ones) this is not possible, several patterns are presented to avoid tight coupling between systems, and examples of just how one strong dependency can bring down the whole system are described.</p>
<h2>Conclusion</h2>
<p><i>Release it!</i> is a great book for people who have some relevant experience in taking a software system to production.</p>
<p>The content exposed is vast enough to be useful in almost any software project, although readers working on high availability distributed systems will get the most out of it.</p>
<p>The book has a wonderful pace, and Michael gives some great real life examples of how systems can break in both a spectacular and frightening manner.</p>
<p>Easy reading and a valuable source of knowledge, not to be missed! </p>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/08/18/release-it-design-and-deploy-production-ready-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>flickr.photos.search through the Flickr API with PHP + REST + curl</title>
		<link>http://dvrom.eu/2009/07/25/how-to-call-flickr-through-the-flickr-api-with-php-rest-curl/</link>
		<comments>http://dvrom.eu/2009/07/25/how-to-call-flickr-through-the-flickr-api-with-php-rest-curl/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 15:23:23 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[The Net]]></category>

		<category><![CDATA[Flickr]]></category>

		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=586</guid>
		<description><![CDATA[1. Get a pair of Flickr API keys <a href="http://www.flickr.com/services/api/keys/" target="_blank">here</a>

2. Write the code to invoke the <a href="http://www.flickr.com/services/api/request.rest.html" target="_blank">REST</a> url through <a href="http://www.php.net/curl" target="_blank">curl</a>, <a href="http://www.php.net/simplexml" target="_blank">parse the xml</a>, and transform the result into a nice array:]]></description>
			<content:encoded><![CDATA[<p>1. Get a pair of Flickr API keys <a href="http://www.flickr.com/services/api/keys/" target="_blank">here</a></p>
<p>2. Write the code to invoke the <a href="http://www.flickr.com/services/api/request.rest.html" target="_blank">REST</a> url through <a href="http://www.php.net/curl" target="_blank">curl</a>, <a href="http://www.php.net/simplexml" target="_blank">parse the xml</a>, and transform the result into a nice array:</p>
<pre>
	$ch=curl_init();
	$curl_post_data = array(
		"method" => "flickr.photos.search",
		"api_key" => $api_key,
		"lat" => $lat,
		"lon" => $lon,
		"radius_units" => "km",
		"has_geo" => "1",
		"radius" => $radius,
		"accuracy" => $accuracy,
		"min_taken_date" => $min_taken_date,
		"max_taken_date" => $max_taken_date,
	);
	curl_setopt($ch, CURLOPT_URL, 'http://api.flickr.com/services/rest/');
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_POST, true);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $curl_post_data);
	$xmlstr=curl_exec($ch);
	curl_close($ch);
	$xml = new SimpleXMLElement($xmlstr);
	$totalresults=$xml->photos['total'];
	$photoresults = array();
	if ($totalresults!=0){
		foreach ($xml->photos->photo as $photo) {
			$photoinfotmp=array();
			$photoinfotmp['id']=$photo['id'];
			$photoinfotmp['owner']=$photo['owner'];
			$photoinfotmp['secret']=$photo['secret'];
			$photoinfotmp['server']=$photo['server'];
			$photoinfotmp['farm']=$photo['farm'];
			$photoinfotmp['title']=$photo['title'];
			$photoinfotmp['ispublic']=$photo['ispublic'];
			$photoinfotmp['isfriend']=$photo['isfriend'];
			$photoinfotmp['isfamily']=$photo['isfamily'];
			$photoinfotmp['url']="http://farm".$photoinfotmp['farm'];
                        $photoinfotmp['url']=$photoinfotmp['url'].$photoinfotmp['server'];
                        $photoinfotmp['url']=$photoinfotmp['url']."/".$photoinfotmp['id'];
                        $photoinfotmp['url']=$photoinfotmp['url']."_".$photo['secret'].".jpg";
			$photoresults[]=$photoinfotmp;
		}
	}
</pre>
<p><strong>NOTE: For some reason, invoking the REST url with file_get_contents or curl with GET instead of POST was returning incorrect results&#8230;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/07/25/how-to-call-flickr-through-the-flickr-api-with-php-rest-curl/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Self Flickring</title>
		<link>http://dvrom.eu/2009/07/23/auto-recerca-en-flickrself-flickringauto-busqueda-en-flickr/</link>
		<comments>http://dvrom.eu/2009/07/23/auto-recerca-en-flickrself-flickringauto-busqueda-en-flickr/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 18:07:06 +0000</pubDate>
		<dc:creator>David Valcárcel Romeu</dc:creator>
		
		<category><![CDATA[The Net]]></category>

		<category><![CDATA[Ego Surfing]]></category>

		<category><![CDATA[Flickr]]></category>

		<category><![CDATA[Self Flickring]]></category>

		<category><![CDATA[Self Googling]]></category>

		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://dvrom.eu/?p=584</guid>
		<description><![CDATA[When I first discovered google search some time ago, one of the first queries I issued was &#8220;David Valcárcel Romeu&#8221;, that is, me.
Regardless of the reasons why one would want to know the degree of one&#8217;s internet presence, such as ego or curiosity, the idea has come to be quite a common practice, and several [...]]]></description>
			<content:encoded><![CDATA[<p>When I first discovered <a href="http://web.archive.org/web/19981111183552/google.stanford.edu/" target="_blank">google search some time ago,</a> one of the first queries I issued was <a href="http://www.google.com/search?q=David+Valcárcel+Romeu" target="_blank">&#8220;David Valcárcel Romeu&#8221;</a>, that is, me.</p>
<p>Regardless of the reasons why one would want to know the degree of one&#8217;s internet presence, such as <a href="http://oscarwilde.projectx2002.org/Narcissus.htm" target="_blank">ego</a> or <a href="http://www.flickr.com/photos/dianejhu/3291546609/" target="_blank">curiosity</a>, the idea has come to be quite a common practice, and <a href="http://en.wikipedia.org/wiki/Egosurfing" target="_blank">several terms have even appeared to identify this trend</a>.<br /></br></p>
<p>New possibilities of querying the world wide web appear at almost the same frequency in which new ways to share information become available, and with the advance of the <a href="http://en.wikipedia.org/wiki/Semantic_Web" target="_blank">Semantic Web</a>, it is incredibly easy to explore the web in different ways.<br /></br></p>
<p>While thinking about this idea, I wondered if it would be possible to &#8220;self flickr&#8221; myself.<br /></br></p>
<p>For example, thanks to the flickr API, it is possible to query the flickr photo base in innovative ways, such as <a href="http://www4.wiwiss.fu-berlin.de/flickrwrappr/" target="_blank">integrating flickr content with a semantic web version of wikipedia</a>.<br /></br></p>
<p>As the moment of this writing, <a href="http://www.flickr.com/map/" target="_blank">flickr has over 80 million geotagged photos</a>.<br /></br></p>
<p>I myself have a  <a href="http://dvrom.eu/photos/" target="_blank">collection of photo&#8217;s that have been geotagged</a>.<br /></br></p>
<p>Could it be possible to find myself in someone else&#8217;s photo, somewhere in the background, inadvertently becoming part of the picture?<br /></br></p>
<p><a href="http://dvrom.eu/photos/photoindex.php" target="_blank">For each one of my photos, I created a link that allows to query flickr for photos that were taken at <i>more or less</i> the same time and at <i>more or less</i> the same place</a>.<br /></br></p>
<p><a href="http://dvrom.eu/2009/04/15/panoramio-like-gallery-with-google-maps-php-and-wordpress/" target="_blank">Timestamp and geolocation information is extracted from each photo</a>, and used as search criteria for the <a href="http://dvrom.eu/2009/07/25/how-to-call-flickr-through-the-flickr-api-with-php-rest-curl/" target="_blank">flickr API call</a>.<br /></br></p>
<p>For the moment, I have not managed to find myself in somebody else&#8217;s photo, although results are surprising: <a href="http://dvrom.eu/photos/flickrsearch.php?lang=en&#038;cat=Catalunya&#038;key=Catalunya_IMG_0520_JPG" target="_blank">some photos were taken at almost the same time and at almost the same place.</a><br /></br></p>
<p>In theory, the possibility of finding myself should increase day by day, as users continue to embrace photo geotagging technologies.<br /></br></p>
<p>Thinking ahead, it should be possible to include other photo sharing sites that offer querying APIs, and thinking even more ahead at a larger scale, one could even consider running queries continuously, and analyzing results with face detection applications for examples&#8230;<br /></br></p>
<p>The question that remains is if all this is just some sort of <i>egolized</i> form of amusement <i>à la</i> <a href="http://en.wikipedia.org/wiki/Where's_Wally%3F" target="_blank">Where&#8217;s Wally?</a>, or if this and similar ideas is something to bring up next time you run in to some idea-searching <a href="http://www.princetonreview.com/Careers.aspx?cid=214" target="_blank">VC&#8217;s</a>&#8230;<br /></br></p>
]]></content:encoded>
			<wfw:commentRss>http://dvrom.eu/2009/07/23/auto-recerca-en-flickrself-flickringauto-busqueda-en-flickr/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
