<?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>Tricode</title>
	<atom:link href="http://www.tricode.nl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tricode.nl</link>
	<description></description>
	<lastBuildDate>Tue, 21 Feb 2012 16:28:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Pance over nearshoring vanuit Skopje</title>
		<link>http://www.tricode.nl/2012/02/nearshoring-vanuit-skopje-macedonie/</link>
		<comments>http://www.tricode.nl/2012/02/nearshoring-vanuit-skopje-macedonie/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 09:07:03 +0000</pubDate>
		<dc:creator>Jasper Mulders</dc:creator>
				<category><![CDATA[Tricode medewerkers]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[distributed scrum]]></category>
		<category><![CDATA[nearshoring]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=9179</guid>
		<description><![CDATA[<p>Tricode biedt vanuit Skopje, Macedonië software ontwikkeling en applicatiemanagement op maat. Pance Gasteovski is field manager van het Tricode kantoor in Skopje. Hij is verantwoordelijk voor alle operationele zaken en...</p><p><p><a href="http://www.tricode.nl/2012/02/nearshoring-vanuit-skopje-macedonie/">Pance over nearshoring vanuit Skopje</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Tricode biedt vanuit Skopje, Macedonië software ontwikkeling en applicatiemanagement op maat.</p>
<p><img class="image_style alignleft size-full wp-image-6186" title="Pance Gasteovski" src="http://www.tricode.nl/wp-content/uploads/2010/10/pance-gasteovski.jpg" alt="" width="100" height="139" />Pance Gasteovski is field manager van het Tricode kantoor in Skopje. Hij is verantwoordelijk voor alle operationele zaken en dagelijks bezig met het motiveren en coachen van zijn mensen.</p>
<p>“<em><a title="Nearshoring naar Skopje. Macedonië" href="http://www.tricode.nl/portfolio/software-oplossingen/nearshoring/">Nearshoring</a> in combinatie met Agile heeft meer voordelen dan alleen kostenbesparing. Scrum motiveert mensen hun kijk op projecten te geven. En nieuwe inzichten uit een andere cultuur zorgen voor een frisse kijk op software ontwikkeling.</em>”</p>
<h2 align="left"><span id="more-9179"></span>Over nearshoring en Macedonië</h2>
<p align="left">Wij geven klanten het gevoel dat zij ‘gewoon’ met een bedrijf in Nederland te maken hebben. De kwaliteit is even hoog en afstand is geen issue. Daarom investeert Tricode veel in communicatie, opleiding en de sociale vaardigheden van onze Macedonische collega’s. Pance: “<em>De motivatie van het team in Skopje is bijzonder hoog. Dat zie je écht terug in het resultaat.</em>”</p>
<h2>Werken met Agile op verschillende locaties (distributed Scrum)</h2>
<p align="left">Ook in Macedonië werk Tricode met Agile. Dit vraagt elke dag om heldere projectdoelen voor elk teamlid, op elke locatie. Pance: “<em>We werken met moderne communicatiemiddelen, zoals video conferencing. Overleggen gaat immers veel beter als je elkaar in de ogen kijkt. En we hebben een uitwisselingsprogramma gelanceerd. Collega’s uit Macedonië werken een aantal weken in Nederland en andersom. Door te praten over Agile, Scrum en software ontwikkeling begrijpen collega’s uit andere culturen elkaar beter. En zij bouwen meteen aan een goede werkrelatie</em>”.</p>
<h2 align="left">De passie van Pance</h2>
<p align="left">Pance: “<em>De combinatie van mens en techniek is het leukste van mijn werk. Deze passie zie je ook terug in mijn opleidingen. Naast mijn master in IT software development volgde ik een studie MBA Management. Ik wil elke dag het beste uit onze mensen halen. Zowel op persoonlijk als op technisch vlak. Als dat lukt ben ik een gelukkig mens.</em>”</p>
<p align="left"><a title="Lees de blogs van Tricode medewerkers" href="http://www.tricode.nl/category/tricode-medewerkers/">Lees alle verhalen van Tricode medewerkers &gt;&gt;</a></p>
<div class="shr-publisher-9179"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2012/02/nearshoring-vanuit-skopje-macedonie/">Pance over nearshoring vanuit Skopje</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2012/02/nearshoring-vanuit-skopje-macedonie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developers Dennis &amp; Sander over scrum en Adobe CQ5</title>
		<link>http://www.tricode.nl/2012/02/developers-dennis-sander-over-scrum-en-adobe-cq5/</link>
		<comments>http://www.tricode.nl/2012/02/developers-dennis-sander-over-scrum-en-adobe-cq5/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 13:31:14 +0000</pubDate>
		<dc:creator>Jasper Mulders</dc:creator>
				<category><![CDATA[Tricode medewerkers]]></category>
		<category><![CDATA[Adobe CQ5]]></category>
		<category><![CDATA[ING]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Scrum master]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=8884</guid>
		<description><![CDATA[<p>&#8220;Tricode werkt met scrum, een methode om software in teamverband te ontwikkelen. Twee mensen van ING waren vast onderdeel van het projectteam. De intensieve samenwerking zorgde voor korte lijnen, snelle...</p><p><p><a href="http://www.tricode.nl/2012/02/developers-dennis-sander-over-scrum-en-adobe-cq5/">Developers Dennis &#038; Sander over scrum en Adobe CQ5</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="image_style alignleft size-full wp-image-8892" title="Dennis Kroesen" src="http://www.tricode.nl/wp-content/uploads/2012/02/thumb_dennis_kroesen.png" alt="" width="100" height="100" /><img class="image_style alignleft size-full wp-image-8891" title="Sander van Beek" src="http://www.tricode.nl/wp-content/uploads/2012/02/thumb_sander_van_beek.png" alt="" width="100" height="100" />&#8220;<em>Tricode werkt met scrum, een methode om software in teamverband te ontwikkelen. Twee mensen van ING waren vast onderdeel van het projectteam. De intensieve samenwerking zorgde voor korte lijnen, snelle beslissingen en een effectieve aanpak van test en oplevering.</em>”<em><br />
</em></p>
<h2 align="left">De rol van Dennis &amp; Sander bij het project voor ING</h2>
<p align="left">Sander en Dennis zijn allebei als developer bij het <a title="Lees meer over het project voor de ING" href="/portfolio/cases/ing-serviceportaal/">ING-project</a> betrokken. Ze werkten mee aan de ontwikkeling van een serviceportaal voor intermediairs op basis van het content management systeem Adobe CQ5.<span id="more-8884"></span></p>
<p>Sander is specialist in webapplicaties en weet alles van Java en PHP. Dennis heeft allround ontwikkelervaring. Naast Dennis en Sander bestond het ING-team van Tricode uit twee frontend developers en een scrum master.</p>
<h2 align="left">De uitdagingen</h2>
<p align="left">Sander: “<em>De krappe deadline van het project vroeg om een slimme werkwijze. We hebben gebruikgemaakt van handige tools om het ontwikkelproces te versnellen. Denk aan automatische installaties op de server en intelligente software waarmee we de status van het ontwikkelproces constant in de gaten hielden. En door scrum te gebruiken konden we elke drie weken een nieuwe versie van het product opleveren en meteen demonstreren aan onze teamgenoten van ING.</em>”</p>
<h2 align="left">En terugkijkend?</h2>
<p align="left">Beide jongens zijn tevreden over het resultaat. Dennis: “<em>Er staat een uitstekend platform gebaseerd op het vooruitstrevende CMS Adobe CQ5. En ING is tevreden, daar doen we het voor.</em>”</p>
<p align="left"><a title="Lees de blogs van Tricode medewerkers" href="http://www.tricode.nl/category/tricode-medewerkers/">Lees alle verhalen van Tricode medewerkers &gt;&gt;</a></p>
<div class="shr-publisher-8884"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2012/02/developers-dennis-sander-over-scrum-en-adobe-cq5/">Developers Dennis &#038; Sander over scrum en Adobe CQ5</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2012/02/developers-dennis-sander-over-scrum-en-adobe-cq5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tricode steunt &#8220;Velo Afrique&#8221;</title>
		<link>http://www.tricode.nl/2012/02/tricode-steunt-initiatief-velo-afrique/</link>
		<comments>http://www.tricode.nl/2012/02/tricode-steunt-initiatief-velo-afrique/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 09:14:01 +0000</pubDate>
		<dc:creator>Jasper Mulders</dc:creator>
				<category><![CDATA[Nieuws]]></category>
		<category><![CDATA[Rigas Parathyras]]></category>
		<category><![CDATA[UPC]]></category>
		<category><![CDATA[Velo Afrique]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=8955</guid>
		<description><![CDATA[<p>In 11 dagen 560 kilometer afleggen op een moutain bike dwars door Senegal! Dat is Velo Afrique. Op 2 maart 2012 gaan 30 deelnemers uit Nederland en België deze sportieve uitdaging...</p><p><p><a href="http://www.tricode.nl/2012/02/tricode-steunt-initiatief-velo-afrique/">Tricode steunt &#8220;Velo Afrique&#8221;</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><center><img class="image_style aligncenter size-full wp-image-8957" title="Velo Afrique:in 11 dagen 560 kilometer door Senegal" src="http://www.tricode.nl/wp-content/uploads/2012/02/cycling-velo-afrique.jpg" alt="" width="503" height="143" /></center>In 11 dagen 560 kilometer afleggen op een moutain bike dwars door Senegal! Dat is Velo Afrique. Op 2 maart 2012 gaan 30 deelnemers uit Nederland en België deze sportieve uitdaging aan. Door hun deelname wordt er geld ingezameld voor de bouw van een school in een arme wijk in Dakar.<br />
<span id="more-8955"></span><br />
<img class="image_style alignleft size-full wp-image-8956" title="Rigas Parathyras" src="http://www.tricode.nl/wp-content/uploads/2012/02/Rigas-Parathyras2.jpg" alt="" width="98" height="78" />Rigas Parathyras, IT Architect bij UPC afkomstig uit Griekenland, is ook een van de deelnemers. Rigas heeft met Tricode samengewerkt aan de realisatie van verkoopondersteunende webapplicaties voor UPC, zoals <a title="E-commerce" href="/portfolio/cases/upc-dealernet/" target="_self">UPC Dealernet</a>.</p>
<div class="clear_both"></div>
<p><img class="image_style alignright size-full wp-image-8958" title="Schelpen voor Velo Afrique" src="http://www.tricode.nl/wp-content/uploads/2012/02/thumb-shells-small.jpg" alt="" width="74" height="214" />Om fondsen te werven verkoopt Rigas met diverse kleuren beschilderde schelpen. Elke schelp, in totaal zijn er 1.000 stuks, is uniek genummerd en vertegenwoordigt een lotnummer. Na de tocht met Vélo Afrique ontvangt de persoon met het winnende lotnummer, het meest interessante voorwerp dat Rigas tijdens zijn tocht door Senegal heeft gezien en meegenomen.</p>
<p>Tricode steunt het initiatief van Rigas en heeft een schelp bij hem gekocht. Ook dit initiatief steunen? Surf naar <a title="Lees meer over Velo Afrique" href="http://sites.google.com/site/rigasp/veloafrique" target="_blank">Velo Afrique</a> om meer te lezen over dit initiatief.</p>
<div class="shr-publisher-8955"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2012/02/tricode-steunt-initiatief-velo-afrique/">Tricode steunt &#8220;Velo Afrique&#8221;</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2012/02/tricode-steunt-initiatief-velo-afrique/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webdeveloper René Pot over mobiele applicaties</title>
		<link>http://www.tricode.nl/2012/01/webdeveloper-ren%c3%a9-pot-over-mobiele-applicaties/</link>
		<comments>http://www.tricode.nl/2012/01/webdeveloper-ren%c3%a9-pot-over-mobiele-applicaties/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 08:40:00 +0000</pubDate>
		<dc:creator>Jasper Mulders</dc:creator>
				<category><![CDATA[Tricode medewerkers]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[ICD-10]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[mobile app]]></category>
		<category><![CDATA[RIVM]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Titanium]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=8572</guid>
		<description><![CDATA[<p>&#8220;Mobile is mijn passie. Ik vind het geweldig om elke dag met de nieuwste technieken op het gebied van mobiel internet te werken. Gelukkig kan ik bij Tricode mijn hart...</p><p><p><a href="http://www.tricode.nl/2012/01/webdeveloper-ren%c3%a9-pot-over-mobiele-applicaties/">Webdeveloper René Pot over mobiele applicaties</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="image_style alignleft size-full wp-image-8635" title="René Pot" src="http://www.tricode.nl/wp-content/uploads/2012/02/thumb_rene_pot.png" alt="" width="100" height="100" />&#8220;<em>Mobile is mijn passie. Ik vind het geweldig om elke dag met de nieuwste technieken op het gebied van mobiel internet te werken. Gelukkig kan ik bij Tricode mijn hart ophalen. Innovatie staat bij ons voorop.</em>&#8221;</p>
<div class="clear_both"></div>
<h2>De rol van René bij het project RIVM</h2>
<p>René is als webdeveloper betrokken bij de bouw van de mobiele applicatie (app) voor het <a title="Een crossplatform mobiele applicatie voor RIVM" href="http://www.tricode.nl/portfolio/cases/rivm/">RIVM</a>. Doel van de app: alle actuele ziektebeelden en diagnosen inzichtelijk maken voor medici.<span id="more-8572"></span></p>
<h2>De uitdagingen</h2>
<p>We moesten een grote hoeveelheid complexe informatie op een gebruiksvriendelijke manier in een crossplatform mobiele applicatie presenteren. Hoe maak je die vertaalslag? En welke tools en technieken zorgen voor het beste resultaat? René: “<em>Het is erg uitdagend om de beste oplossing voor ingewikkelde online vraagstukken te bedenken. Ik volg altijd de laatste ontwikkelingen in mijn vakgebied. Onze klanten waarderen dat extra stukje expertise. En mij geeft het veel energie!</em>”</p>
<h2>Over René</h2>
<p>René is webdeveloper bij Tricode. Hij is elke dag bezig met het ontwikkelen van internettoepassingen, ook in zijn vrije tijd. René: “<em>Tricode is toonaangevend op het gebied van webbased software ontwikkeling. We willen constant innoveren én de beste zijn. Precies ook mijn persoonlijke drijfveren</em>”.</p>
<p><a title="Lees de blogs van Tricode medewerkers" href="http://www.tricode.nl/category/tricode-medewerkers/">Lees alle verhalen van Tricode medewerkers &gt;&gt;</a></p>
<div class="shr-publisher-8572"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2012/01/webdeveloper-ren%c3%a9-pot-over-mobiele-applicaties/">Webdeveloper René Pot over mobiele applicaties</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2012/01/webdeveloper-ren%c3%a9-pot-over-mobiele-applicaties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eerste succes Veenendaal ICT een feit &#8211; Tricode en Bemet</title>
		<link>http://www.tricode.nl/2011/11/tricode-ondersteunt-bemet/</link>
		<comments>http://www.tricode.nl/2011/11/tricode-ondersteunt-bemet/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 10:30:43 +0000</pubDate>
		<dc:creator>Jasper Mulders</dc:creator>
				<category><![CDATA[Nieuws]]></category>
		<category><![CDATA[Bedrijvenkring Veenendaal]]></category>
		<category><![CDATA[Bemet]]></category>
		<category><![CDATA[ICT-netwerkborrel]]></category>
		<category><![CDATA[IT efficiency]]></category>
		<category><![CDATA[Promotie Veenendaal]]></category>
		<category><![CDATA[Veenendaal ICT]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=8494</guid>
		<description><![CDATA[<p>Dankzij de initiatieven van Bedrijvenkring Veenendaal en Promotie Veenendaal, hebben Bemet International en Tricode Professional Services elkaar leren kennen. Op de de eerste ICT-netwerkborrel, een regelmatig terugkerende netwerkbijeenkomst voor ICT-bedrijven...</p><p><p><a href="http://www.tricode.nl/2011/11/tricode-ondersteunt-bemet/">Eerste succes Veenendaal ICT een feit &#8211; Tricode en Bemet</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Dankzij de initiatieven van <a title="Bedrijvenkring Veeenendaal" href="http://www.bkveenendaal.nl/" target="_blank">Bedrijvenkring Veenendaal</a> en <a title="Promotie Veenendaal" href="http://www.promotieveenendaal.nl/" target="_blank">Promotie Veenendaal</a>, hebben <a title="Bemet" href="http://www.bemet.nl/" target="_blank">Bemet International</a> en Tricode Professional Services elkaar leren kennen.</p>
<p style="text-align: center;"><img class="image_style size-medium wp-image-8495 aligncenter" title="Tricode en Bemet" src="http://www.tricode.nl/wp-content/uploads/2011/11/Tricode-en-Bemet-300x200.jpg" alt="Tricode en Bemet" width="300" height="200" /></p>
<p>Op de de eerste ICT-netwerkborrel, een regelmatig terugkerende <a title="Netwerkbijeenkomst ICT-bedrijven Veenendaal" href="http://linkd.in/u4KIwd" target="_blank">netwerkbijeenkomst voor ICT-bedrijven</a> in Veenendaal, werd het eerste contact tussen beiden gelegd en bleek dat beide bedrijven wat voor elkaar kunnen betekenen. Het eerste succes van Veenendaal ICT is daarmee een feit.</p>
<p><span id="more-8494"></span></p>
<p>Bemet is softwareleverancier voor de maakindustrie en levert CAD/CAM, ERP en APM softwareoplossingen aan meer dan 800 bedrijven in binnen- en buitenland. Bemet ondersteunt bedrijven in het complete proces van offerteaanvraag tot en met de factuur.</p>
<p>Tricode ontwikkelt maatwerk software en levert ICT diensten, zoals het ontwerpen en realiseren van e-commerce sites, schaalbare software, mobiele applicaties en SaaS. Ook houdt het bedrijf zich bezig met het realiseren van applicatievirtualisatie, extreme performance en systeemintegratie. De doelstelling van Tricode is bedrijven efficiënter te laten werken om zo klanten beter van dienst te kunnen zijn. Ook Bemet zal in de toekomst nog efficiënter gaan werken door de samenwerking met Tricode.</p>
<h2>De samenwerking</h2>
<p>Bemet is ontwikkelaar en leverancier van de ERP-oplossing Plan-de-CAMpagne. Deze ERP-oplossing is momenteel toegankelijk via verschillende webtoepassingen. Bemet wil deze mogelijkheden verder uitbreiden en Plan-de-CAMpagne via nog meer applicaties beschikbaar stellen. Tricode zal Bemet in dit proces ondersteunen door het ter beschikking stellen van de meest efficiënte tools en technieken, zodat steeds meer informatie toegankelijk wordt via websites, smartphones, mobiele telefoons (webapps), scripting, slimme handterminals en externe pakketten.</p>
<p>Naast het breder toegankelijk maken van Plan-de-CAMpagne, begeleidt Tricode Bemet bij het moderner en efficiënter inrichten van de ontwikkeling. Tricode stelt hiervoor nieuwe tools en nieuwe technieken beschikbaar. Hierdoor zal Bemet beter gaan testen, beter gaan ontwikkelen en betere codes verkrijgen. Bemet zal zo nog efficiënter en effectiever gaan werken. En beter en sneller inspringen op de wensen van de klant.</p>
<p>Zowel Bemet als Tricode verheugt zich op de samenwerking. Anton van Zeijst, directeur van Bemet International, is van mening dat de overeenkomst tussen Bemet en Tricode het voorbeeld is dat het organiseren van ICT-netwerkbijeenkomsten in Veenendaal loont. ,,Het bezoeken van de ICT-netwerkbijeenkomsten zorgt ervoor dat ICT-bedrijven elkaar op een vrijblijvende manier beter leren kennen, relaties kunnen worden opgebouwd en een relevante bijdrage wordt geleverd aan de promotie en ontwikkeling van Veenendaal als ICT-stad”, aldus Van Zeijst.</p>
<p>Niels Donninger, sales accountmanager van Tricode, deelt deze mening en stelt: ,,Door het bezoeken van de ICT-netwerkbijeenkomst krijgen Veenendaalse bedrijven inzicht in de ICT-mogelijkheden die aanwezig zijn in Veenendaal. Bedrijven worden zo bewust van de mogelijkheden die de eigen stad biedt. Oplossingen zijn vaak dichter bij huis te vinden dan men in eerste instantie denkt. Dit komt ook de locale economie van Veenendaal ten goede.”</p>
<p>Voor meer informatie over Bemet International kan contact worden opgenomen met Bemet via tel. 0318-495858 of via marketing@bemet.nl . Geïnteresseerden die meer willen weten over Tricode, kunnen contact opnemen met Tricode via tel. 0318-559210 of via info@tricode.nl.</p>
<p>Bron: <a title="Tricode ondersteunt Bemet" href="http://www.veenendaalsekrant.nl/plaatsnamen/Veenendaal/eerste_succes_veenendaal_ict_een_feit_19222782.html" target="_blank">De Veenendaalse krant</a>, 13-11-2011</p>
<div class="shr-publisher-8494"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2011/11/tricode-ondersteunt-bemet/">Eerste succes Veenendaal ICT een feit &#8211; Tricode en Bemet</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2011/11/tricode-ondersteunt-bemet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sloepengame &#8211; Bedrijfsuitje 2011</title>
		<link>http://www.tricode.nl/2011/09/sloepengame-bedrijfsuitje-2011/</link>
		<comments>http://www.tricode.nl/2011/09/sloepengame-bedrijfsuitje-2011/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 10:50:07 +0000</pubDate>
		<dc:creator>Lisanne Kistemaker</dc:creator>
				<category><![CDATA[Bedrijfsuitjes]]></category>
		<category><![CDATA[Over tricode]]></category>
		<category><![CDATA[personeelsuitje]]></category>
		<category><![CDATA[sloepengame]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=9306</guid>
		<description><![CDATA[<p>Mobiele telefoon,GPS- ontvanger, regenjassen en een bootje; alle ingredienten voor een uitdagende sloepengame. Ook dit jaar zijn we er met alle collega’s en partners op uit getrokken voor een actief...</p><p><p><a href="http://www.tricode.nl/2011/09/sloepengame-bedrijfsuitje-2011/">Sloepengame &#8211; Bedrijfsuitje 2011</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Mobiele telefoon,GPS- ontvanger, regenjassen en een bootje; alle ingredienten voor een uitdagende sloepengame.</p>
<p>Ook dit jaar zijn we er met alle collega’s en partners op uit getrokken voor een actief en gezellig weekend. Net als vorig jaar had de bestemming met water te maken, geen zee dit jaar, maar wel de Loosdrechtse Plassen.<span id="more-9306"></span></p>
<p><img class="image_style alignright  wp-image-9308" title="personeelsuitje 2011 - GPS sloepengame" src="http://www.tricode.nl/wp-content/uploads/2012/02/personeelsuitje-2011-GPS-sloepengame.jpg" alt="" width="122" height="157" />Tegen lunchtijd verzamelden we met z’n allen bij het hotel. Na een lunch in het hotel werden we in groepen verdeeld. Met een GPS-ontvanger en mobiele telefoon werden alle groepen op pad gestuurd voor een GPS- tocht op de Loosdrechtse Plassen. Aan de hand van GPS-coördinaten werden de Loosdrechtse Plassen bevaren. Met het juist beantwoorden van vragen en opdrachten die we onderweg tegenkwamen konden nieuwe GPS- coördinaten ontcijferd en punten verdiend worden.</p>
<p>Via de mobiele telefoon kon de stand in de gaten gehouden worden en moesten foto’s gemaakt worden die later op de dag vertoond zouden worden. Na zo’n twee en een half uur, een ietwat bewolkte lucht en hier en daar een doorweekte collega kwamen toch alle bootjes weer op tijd terug in de haven.</p>
<p style="text-align: center;"><img class="image_style aligncenter wp-image-9309" title="personeeluitje 2011 - Sloepengame op het water" src="http://www.tricode.nl/wp-content/uploads/2012/02/personeeluitje-2011-Sloepengame-op-het-water.jpg" alt="" width="536" height="215" /></p>
<p>Het was inmiddels al tegen het einde van de middag en nadat iedereen weer was opgefrist en opgewarmd van een beker warme chocolademelk liepen we met elkaar naar de nabijgelegen brasserie Het Kompas. Na een welkomstdrankje was het tijd voor de de prijsuitreiking. Hier werd bekend dat het team ‘Das Boot’ de winnaar was van de sloepengame! Zij hadden de meeste vragen goed beantwoord en waren als een van de snelsten terug in de haven. Zoals het hoort werden de medailles omgehangen en was het tijd voor de Barbecue. Het weer zat niet mee, dus alles stond al netjes gebakken en gebraden voor ons klaar. De sfeer zat er goed in en de feestavond kon beginnen.</p>
<p>De DJ draaide muziek en al snel gingen de voeten van de vloer. Ook de casinotafels waren weer present, waar menigeen een potje blackjack of roulette speelde.</p>
<p style="text-align: center;"><img class="image_style aligncenter  wp-image-9310" title="personeelsuitje 2011 - Avondprogramma" src="http://www.tricode.nl/wp-content/uploads/2012/02/personeelsuitje-2011-Avondprogramma.jpg" alt="" width="528" height="146" /></p>
<p><img class="image_style alignright  wp-image-9311" title="personeelsuitje 2011 - glas champagne" src="http://www.tricode.nl/wp-content/uploads/2012/02/personeelsuitje-2011-glas-champagne.jpg" alt="" width="104" height="158" />Rond middernacht, toen iedereen wat drankjes en nog wat drankjes en soms nog een drankje op had ging iedereen hotelwaarts. Het was een lange en gezellige dag geweest en de volgende ochtend bij het ontbijt heerste dan ook een serene rust. Het was weer een erg gezellig weekend geweest en iedereen ging voldaan richting huis om nog even rustig aan te doen om de volgende dag weer uitgerust op het werk te verschijnen!</p>
<div class="shr-publisher-9306"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2011/09/sloepengame-bedrijfsuitje-2011/">Sloepengame &#8211; Bedrijfsuitje 2011</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2011/09/sloepengame-bedrijfsuitje-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distributed Fork Join</title>
		<link>http://www.tricode.nl/2011/08/distributed-fork-join/</link>
		<comments>http://www.tricode.nl/2011/08/distributed-fork-join/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 11:58:16 +0000</pubDate>
		<dc:creator>Robin van Breukelen</dc:creator>
				<category><![CDATA[Tech talk]]></category>
		<category><![CDATA[distributed computing]]></category>
		<category><![CDATA[distributed tasks]]></category>
		<category><![CDATA[Fork Join]]></category>
		<category><![CDATA[GigaSpaces]]></category>
		<category><![CDATA[multitask]]></category>
		<category><![CDATA[parallel coding]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=8422</guid>
		<description><![CDATA[<p>Being able to process large amounts of data becomes increasingly important for an increasing number of people and organizations. Processing data could mean a variety of things and differs per...</p><p><p><a href="http://www.tricode.nl/2011/08/distributed-fork-join/">Distributed Fork Join</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Being able to process large amounts of data becomes increasingly important for an increasing number of people and organizations. Processing data could mean a variety of things and differs per case. However in the most basic sense it means ‘doing something’ with your data.</p>
<p>Processing these large amounts of data is really not a problem until you put a time constraint into the mix. When you have to process your data within a certain time frame, a growing data set can become a problem. A number of solutions instantly come to mind when you face time-constrained data processing. E.g.:</p>
<ul>
<li>Code optimization</li>
<li>Scaling up your hardware</li>
<li>Database clustering</li>
</ul>
<p>The above solutions are a little traditional but they are being used a lot. Though we can also identify other solutions: running code in parallel and distributed computing. In this article we will focus on these two concepts.</p>
<p><span id="more-8422"></span></p>
<h2>Fork Join</h2>
<p>Ever since processors are able to we have been trying to optimize our code for this. Especially lately the number of cores a processor has is growing fast. How often haven’t you heard someone say; “the system is slow because modern software doesn’t handle multi-core processing very well”? Hardware vendors try to handle this by simply boosting the speed of a single core when needed (TurboBoost, TurboCore), so software that stresses one core a lot can get a small increase in processor speed. But it would be very nice if developers were able to make use of all the cores available. In Java 7, developers have access to JSR-166: a fork/join framework. What it allows the developer to do is to define a workload and then split the entire workload into smaller pieces which can execute separately. Then the results can be combined into one result.</p>
<p><img class="alignnone size-full wp-image-8424" src="http://www.tricode.nl/wp-content/uploads/2011/08/robin-11.jpg" alt="" width="505" height="289" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>Distributed Tasks</h2>
<p>In distributed computing you will attempt to leverage the processing capabilities of multiple nodes. Granted that the problem allows for such an approach multiple machines could be tasked with a small portion of the problem. Using a technology like GigaSpaces that allows easy implementations of the Map-Reduce pattern a problem could be split into smaller sub-tasks and then sent to multiple machines. The result of each of the machines would then have to be combined to form the full result.<br />
Graphically splitting up the work into smaller sub-tasks could look like:</p>
<p><img class="alignnone size-full wp-image-8425" src="http://www.tricode.nl/wp-content/uploads/2011/08/robin-2.jpg" alt="" width="484" height="348" /></p>
<p>Then when each of the nodes calculated its result, the results will have to be combined. Which could be displayed as:</p>
<p><img class="alignnone size-full wp-image-8426" src="http://www.tricode.nl/wp-content/uploads/2011/08/robin-3.jpg" alt="" width="484" height="348" /></p>
<p>With a technology like GigaSpaces (of course there are others that allow this as well) we could achieve the above with something called DistributedTasks.</p>
<h2>The problem</h2>
<p>For our problem scenario we will have a list, of a decent size, of files. Each holds 20,000 lines of comma separated values. Each line must be processed. Processing in our case means that we consider each individual line and extract the ‘id’ value and count how many occurrences it has in the entire data set. While this problem is not one you will come across in your work (most likely) there are a lot of similar cases imaginable that you will come across.</p>
<h2>A solution</h2>
<p>It would be very nice if you could leverage the power of a fork-join framework along with the power of multiple nodes. So, our basic setup will be: distribute all the files evenly across our cluster, then on each node process all available files, line by line. All this while maximizing our processor power. In the solution that I created I used GigaSpaces with Java 7. First there is the ‘client’, this is a class that gets a reference to the cluster and fires a DistributedTask into the cluster and then prints out the result:</p>
<pre class="brush:js">List results = gigaSpace.getClustered().execute(new CounterTask()).get();
for (Result r : results) {
System.out.println("Result " + r.getId() + " occurred " + r.getOccurrences() + " times");
}</pre>
<p>Let’s take a look at the class CounterTask, which is a distributed task. This task will execute on each of the nodes where a subset of all data is present.<br />
The following code snippet shows what the execute() method does of the CounterTask.</p>
<pre class="brush:js">Data[] allData = gigaSpace.readMultiple(new Data(), Integer.MAX_VALUE);

for (Data data : allData) {

List lines = readAllLines(data.getContents());

ForkJoinPool pool = new ForkJoinPool();

String[] lineArray = lines.toArray(new String[0]);

Map intermediateResults =

pool.invoke(new Counter(lineArray, 0, lineArray.length));

results.addAll(intermediateResults.values());

}

return results.toArray(new Result[0]);</pre>
<p>So, for each of the files (represented by the Data class) all lines inside the file are read into a list and a ForkJoinPool handles splitting the workload over the available processing power. For this the Counter class is used. Let’s take a look at that class. It implements a single method: compute() which return how many times an id occurs. Since we want to maximize our processing power we need to divide the work into smaller parts. However at one point splitting the task would only create more overhead and we should simply do our processing. The THRESHOLD variable is used to determine if we should split the task, or simply process the lines that is given:</p>
<pre class="brush:js">if (lines.length &gt;= THRESHOLD) {

int mid = start + (end - start) / 2;

Counter left = new Counter(lines, start, mid);

Counter right = new Counter(lines, mid, end);

left.fork();

Map rightAns = right.compute();

Map leftAns = left.join();

return merge(leftAns, rightAns);

. . .</pre>
<p>Notice that this method is called recursively by using the fork(), compute() and join() methods.</p>
<p>If we should simply do the work all lines are iterated and the number of times the ‘id ‘ value occurs is counted:</p>
<pre class="brush:js">. . .
} else {

Map results = new HashMap&lt;&gt;(10000);

for (String line : lines) {

Result result = new Result();

String id = line.substring(0, line.indexOf(","));

result.setId(id);

result.setOccurrences(1);

if (results.get(id) == null) {

results.put(id, result);

} else {

Result previousResult = results.get(id);

previousResult.increment(1);

results.put(id, previousResult);

}

}

return results;</pre>
<h2>Conclusion</h2>
<p>The solution application shows how we can distribute the workload across an entire cluster of machines using DistributedTask and on each of the nodes processing power is maximized using the fork-join framework. By no means should you always use this approach, I’ve used it purely to demonstrate how work can be divided and results retrieved. You should always first check if the problem you’re solving can be distributed or split into sub-tasks, or maybe even both like in our example, before you go all out with frameworks like this.</p>
<div class="shr-publisher-8422"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2011/08/distributed-fork-join/">Distributed Fork Join</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2011/08/distributed-fork-join/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qiy wint European Identity Award 2011</title>
		<link>http://www.tricode.nl/2011/05/qiy-wint-european-identity-award-2011/</link>
		<comments>http://www.tricode.nl/2011/05/qiy-wint-european-identity-award-2011/#comments</comments>
		<pubDate>Thu, 12 May 2011 07:25:00 +0000</pubDate>
		<dc:creator>Jasper Mulders</dc:creator>
				<category><![CDATA[Nieuws]]></category>
		<category><![CDATA[European Identity Award 2011]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[Qiy]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=8358</guid>
		<description><![CDATA[<p>“Qiy is the next big thing and the new privacy standard”. Met deze lovende woorden heeft de jury van Kuppinger Cole op de European Identity Conference in München de European...</p><p><p><a href="http://www.tricode.nl/2011/05/qiy-wint-european-identity-award-2011/">Qiy wint European Identity Award 2011</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>“Qiy is the next big thing and the new privacy standard”. Met deze lovende woorden heeft de jury van Kuppinger Cole op de European Identity Conference in München de European Identity Award 2011 voor privacy toegekend aan Qiy. <span id="more-8358"></span>Initiatiefnemer Marcel van Galen heeft de prijs op woensdag 11 mei in München in ontvangst genomen tijdens de druk bezochte internationale conferentie.Van Galen ziet de Europese Identiteitsprijs als erkenning en ondersteuning van zijn geesteskind. “Qiy is al jaren bezig met de ontwikkeling en nu wordt het breed opgepikt. De European Identity Conference legt enorm veel gewicht in de schaal. Het is een van de grootste en belangrijkste congressen ter wereld op het gebied van IT, risicomanagement, governance en internetprivacy. We zijn dan ook heel trots op de prijs. Het juiste signaal op het juiste moment rondom de internationale doorbraak van Qiy.”</p>
<p>Voor Qiy is deze erkenning ook een erkenning van alle inspanningen van medewerkers, partners en investeerders.</p>
<p>Tricode vervult als technische partner van Qiy al meer dan 3 jaar een belangrijke rol bij het ontwerpen, bouwen en technisch uitrollen van het <a title="Qiy" href="http://www.tricode.nl/portfolio/cases/qiy-digitale-ik/" target="_self">Qiy platform</a>. Wij combineren hierbij onder andere geavanceerde security-aspecten met semantische database-technologie, cloud-storage en Adobe Flex. In de toekomst willen we ons meer gaan toeleggen op het bouwen van applicaties voor het Qiy platform.</p>
<p>Tricode gelooft in de visie van Qiy en heeft geïnvesteerd in Qiy als obligatiehouder. Sinds april ontvangen daarnaast alle Tricode medewerkers het loonstrookje in hun persoonlijke Qiy account.</p>
<p>Lees voor meer informatie over Qiy en de toekenning van de identity award het artikel op de <a title="Qiy verovert de wereld" href="http://www.qiycorporate.nl/nl/nieuws/Qiy-verovert-de-wereld" target="_blank">Qiy website</a>.</p>
<div class="shr-publisher-8358"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2011/05/qiy-wint-european-identity-award-2011/">Qiy wint European Identity Award 2011</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2011/05/qiy-wint-european-identity-award-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pokeravond bij Tricode</title>
		<link>http://www.tricode.nl/2011/03/pokeravond-bij-tricode/</link>
		<comments>http://www.tricode.nl/2011/03/pokeravond-bij-tricode/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 12:44:33 +0000</pubDate>
		<dc:creator>Jasper Mulders</dc:creator>
				<category><![CDATA[Maandactiviteiten]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=9355</guid>
		<description><![CDATA[<p>Elke maand organiseert het personeel bij Tricode een maand evenement. Dit keer werd er een pokeravond georganiseerd. Sander Kramer maakte er de volgende video van:</p><p><p><a href="http://www.tricode.nl/2011/03/pokeravond-bij-tricode/">Pokeravond bij Tricode</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Elke maand organiseert het personeel bij Tricode een maand evenement. Dit keer werd er een pokeravond georganiseerd. Sander Kramer maakte er de volgende video van:</p>
<p style="text-align: center;">
<iframe src="http://player.vimeo.com/video/37171951?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="300"></iframe></p>
<div class="shr-publisher-9355"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2011/03/pokeravond-bij-tricode/">Pokeravond bij Tricode</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2011/03/pokeravond-bij-tricode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Version Control != Dependency Management</title>
		<link>http://www.tricode.nl/2011/02/version-control-dependency-management/</link>
		<comments>http://www.tricode.nl/2011/02/version-control-dependency-management/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 12:44:05 +0000</pubDate>
		<dc:creator>Patrick van Dissel</dc:creator>
				<category><![CDATA[Tech talk]]></category>
		<category><![CDATA[dependency management]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[VCS]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://www.tricode.nl/?p=8073</guid>
		<description><![CDATA[<p>This article was originally featured in the August of 2010 issue of phpArchitect. Are you using svn:externals, git-submodules or something similar with your Version Control System (VCS) of choice for...</p><p><p><a href="http://www.tricode.nl/2011/02/version-control-dependency-management/">Version Control != Dependency Management</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><em>This article was originally featured in the <a href="http://www.phparch.com/magazine/2010-2/august/" target="_blank">August of 2010 issue</a> of <a href="http://www.phparch.com/" target="_blank">phpArchitect</a>.</em></p>
<p><img class="image_style alignleft size-full wp-image-8089" title="version control =! dependency mgt" src="/wp-content/uploads/2011/01/jpg" alt="version control =! dependency mgt" width="196" height="130" />Are you using <a href="http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.advanced.externals" target="_blank">svn:externals</a>, <a href="http://book.git-scm.com/5_submodules.html" target="_blank">git-submodules</a> or something similar with your Version Control System (VCS) of choice for connecting third-party libraries to your PHP projects?</p>
<p>This article explores ways to handle dependencies in PHP projects, just like projects in other programming languages have done for ages.<span id="more-8073"></span></p>
<h2>Dependencies</h2>
<p>Many projects have some kind of external dependency, e.g. libraries, language extensions, system tools or other applications. All these dependencies need to be available for the project to work. In PHP, dependencies like language extensions can be checked to be loaded with calls to the “extension_loaded” or “get_loaded_extensions” functions. The availability of system tools and other application can be checked by calling the command with for example the PHP <a href="http://php.net/file_exists" target="_blank">file_exists</a> function in combination with <a href="http://php.net/is_executable" target="_blank">is_executable</a>. Availability of a required library can be checked by asking for it through the <a href="http://php.net/class_exists" target="_blank">class_exists</a> function when using auto-loading or simply <a href="http://php.net/require_once" target="_blank">require_once</a> the library and wait for it to fail.</p>
<p>For language extensions, system tools and applications, their availability should be checked. These are dependencies that should not be included in the project package, because they are often platform depended and there is a fair chance that these dependencies are already available on the system running the project. The previous paragraph explained ways of checking them. These checks can be easily executed from an install/release script and let the install fail when something is wrong.</p>
<p>But how about library dependencies? The distributed project package should already contain the required libraries or at least fetch them automatically. Fetching libraries automatically on install sounds good because then the project package for distribution is smaller, saving storage and bandwidth. But it makes your customers, during the installation of the project, depended on the availability of the required libraries from possibly 3rd parties. Think about it. If the current version of your project is still used 5 years from now, can you guarantee that the 3rd parties still provide that specific library version?</p>
<p>On the other hand, when the project is extendable with plugins and modules, fetching the those only when the customer chooses to use them is a fair solution. But the distributed project package should include all the default plugins and modules and all extensions should be fetched from your repository, so you have control over the availability.</p>
<h2>svn:externals</h2>
<p>How and when are required libraries included in your project?<br />
Many PHP projects, that use Subversion (<em>svn</em>) as their Version Control System (VCS) of choice, use the <a href="http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.advanced.externals" target="_blank">svn:externals</a> functionality to bind libraries to their project. It’s an easy solution; with every <em>svn checkout</em> or <em>svn update</em> the external libraries are also checked-out and updated into the local working copy. Meaning, it’s possible to directly edit and commit on the external libraries. And svn gives much freedom:</p>
<ul>
<li>Add an external pointing to the latest (HEAD) revision</li>
<li>Add an external pointing to a specific revision</li>
<li>Add an external from an external repository</li>
<li>Set the externals property anywhere in the project and including that external somewhere else in the project structure</li>
</ul>
<p>This means that there is no central location to configure the externals. Everyone working on the project should just know where it is set or search through the svn properties of all the project directories. Dependency management becomes magic “that just works”, or does it?</p>
<p>Ever tried to branch or tag a project that uses svn:externals for dependency management? First branching/tagging all the externals, then updating the svn:externals to those branched/tagged externals and finally create the branch/tag for the project. That’s not workable.</p>
<p>Branching/tagging can be made easier by applying the convention that externals should always point to tags. It’s easier branching/tagging because the externals will then always be pointing to a stable tag version. But svn still offers commit permission on the external that is pointing to a tag. Specifying the revision that the external should point to is the safest way to work with externals, this way the external will always be exact at that revision.</p>
<p>So what’s wrong with using a VCS for dependency management?</p>
<ul>
<li>No overview of external configuration, they can be defined and placed anywhere in the project</li>
<li>Externals must be controlled in the same type of VCS. There’s no way to add a git repository as external in svn, or a simple .tar.bz2-file</li>
<li>Committing on externals is possible</li>
</ul>
<h2>How do other programming language handle dependencies</h2>
<p>The most common lines of an “INSTALL” file of Linux C/C++ projects are</p>
<div>
<div id="highlighter_909847">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>1</div>
<div>2</div>
<div>3</div>
</td>
<td>
<div>
<div><code>$&gt; ./configure</code></div>
<div><code>$&gt; make</code></div>
<div><code>$&gt; sudo make install</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Ever tried that on a big project? Did “make” error-out the first time it ran? And the second time? Telling it missed a specific library and therefore could not continue? Dependencies! The project could not be compiled without having the correct dependencies available.</p>
<p>Java build tools like <a title="Apache Maven" href="http://maven.apache.org/" target="_blank">Apache Maven</a> and <a title="Apache Ant" href="http://ant.apache.org/" target="_blank">Apache Ant</a> with <a title="Apache Ivy" href="http://ant.apache.org/ivy/" target="_blank">Apache Ivy</a> went a step further. Maven defines the project in a <a title="POM Reference" href="http://maven.apache.org/pom.html" target="_blank">Project Object Model</a> (pom.xml) file, which describes the software project being built. Containing it’s dependencies on other projects/modules and external libraries, a list of the involved developers, links to the version control repository, issue tracker and more. Maven has a central repository which can be used to automatically fetch the project dependencies from, when they exist. Everyone can create their own Maven repository that can be used as a proxy to the central repository. This means the Java project can be build and all needed dependencies are automatically fetched from the central repository or any other repository that is provided in the Maven global settings or project POM configuration. Apache Ant with Apache Ivy works somewhat the same.<br />
This all leads to the fact that with a build tool like Maven, there is a single configuration file per project for defining dependencies. That’s easy and clear for everyone.</p>
<p>The C/C++/Java languages have the advantage to be compiled languages. If a required dependency is missing, the project won’t compile. PHP does not have this advantage. It will run any code until it fails. Therefore PHP projects need some checking for the availability of dependencies.</p>
<h2>So, how to apply this on PHP projects?</h2>
<p>There is nothing fully equivalent to Maven for PHP except Maven itself with a PHP plug-in. This is what the “Maven for PHP” project does. It’s probably also possible to use Apache Ant with Ivy or other build tools from other programming languages to build PHP projects with. But this has the disadvantage that the build tool is written in a different language than PHP, most probably has no support for PHP specific tools by default and wanting to extend it forces to use the language that the build tool is written in. This makes using a non-native PHP build tool a bit harder.</p>
<p>But there are native PHP tools that provide parts of the features that build tools like Apache Maven provides.<br />
We have <a title="Phing" href="http://phing.info/" target="_blank">Phing</a>, a build tool based on Apache Ant, which has many tasks by default for executing filesystem related commands. Optionally it also contains tasks for many commonly used tools and release methods in the PHP world, like; DbDeploy, FtpDeploy, JsMin, PearPackage, PharPackage, PhpCodeSniffer, PHPUnit and much more. It’s also very easy to extend, just create a PHP class which extends from the Phing Task class and implement a few functions. It can be made as complex as needed, but it’s all in PHP, your language of choice.<br />
For the repository part of a Maven like native PHP tool, we have PEAR for PHP4 and 5 packages and PEAR2 for PHP 5.3.1+ packages. PEAR and PEAR2 are “a framework, packaging and distribution system for reusable PHP Components”. There is a PEAR and PEAR2 framework specific repository, “Channel” in PEAR terms, at <a title="PEAR" href="http://pear.php.net/" target="_blank">http://pear.php.net</a> and <a title="PEAR2" href="http://pear2.php.net/" target="_blank">http://pear2.php.net</a> respectively. PEAR2 is the next-generation version of PEAR using the new PHP 5+ language features where possible, like namespaces and supports the Phar packaging format. PEAR2 also has a new installer, for installing packages and dependencies, called <a title="PEAR2 Pyrus" href="http://pear2.php.net/" target="_blank">Pyrus</a>. Pyrus is an easy to use installer which can easily be used standalone without installation from the command-line or be integrated into a project. Just like with Maven, it’s possible to create your own PEAR channel as a repository for projects and dependencies.</p>
<p>All this completes the combined feature list of Phing, PEAR/PEAR2 and Pyrus equal to that of Maven.</p>
<p>One drawback is that Phing does not (yet) has a task for installing dependencies from Pear/Pear2/Pyrus, but tasks doing just that can easily be written. When you do, please contribute it to the Phing project. The same is true for Version Control Systems other than CVS and Subversion, and everything else you want support for.</p>
<h2>To conclude</h2>
<p>For more information on referenced tools and a direct link to the “Extending Phing” documentation of Phing see the related url’s list. I also want to hint you on the article “Going Industrial” by Stéphen Périn, which was published in the phpArchitect issue of Januari 2010, for more interesting insights and hints on what tools and practices could be used to improve you PHP development life cycle.</p>
<h2>Requirements</h2>
<ul>
<li>PHP: 5.0.2+ (for Phing)</li>
<li>5.2+ (for Phar)</li>
<li>5.3.1+ (for Pyrus)</li>
</ul>
<h2>Related URLs</h2>
<ul>
<li><a title="Phing" href="http://www.phing.info/" target="_blank">http://www.phing.info</a></li>
<li><a title="PEAR" href="http://pear.php.net/" target="_blank">http://pear.php.net</a></li>
<li><a title="PEAR2" href="http://pear2.php.net/" target="_blank">http://pear2.php.net</a></li>
<li><a title="PHAR" href="http://php.net/phar" target="_blank">http://php.net/phar</a></li>
<li><a title="PHP Make" href="http://www.pake-project.com/" target="_blank">http://www.pake-project.com</a></li>
<li><a title="Wikipedia 'make'" href="http://en.wikipedia.org/wiki/Make_%28software%29" target="_blank">http://en.wikipedia.org/wiki/Make_%28software%29</a></li>
<li><a title="Apache Maven" href="http://maven.apache.org/" target="_blank">http://maven.apache.org</a></li>
<li><a title="Apache Ant" href="http://ant.apache.org/">http://ant.apache.org</a></li>
<li><a title="Apache Ify" href="http://ant.apache.org/ivy/">http://ant.apache.org/ivy/</a></li>
<li><a title="Extending Phing" href="http://phing.info/docs/guide/stable/chapters/ExtendingPhing.html">http://phing.info/docs/guide/stable/chapters/ExtendingPhing.html</a></li>
</ul>
<div class="shr-publisher-8073"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><p><p><a href="http://www.tricode.nl/2011/02/version-control-dependency-management/">Version Control != Dependency Management</a> - <a href="http://www.tricode.nl">Tricode</a></p></p>]]></content:encoded>
			<wfw:commentRss>http://www.tricode.nl/2011/02/version-control-dependency-management/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching using disk: basic
Object Caching 2173/2366 objects using disk: basic

Served from: www.tricode.nl @ 2012-02-22 20:44:39 -->
