<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Alkpone.com</title>
	
	<link>http://www.alkpone.com</link>
	<description>Narcissism and minimalism, quite a challenge...</description>
	<lastBuildDate>Mon, 08 Mar 2010 21:03:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Alkpone" /><feedburner:info uri="alkpone" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Software Architects are just customs … officer.</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/vVgqjftoILA/</link>
		<comments>http://www.alkpone.com/2010/03/software-architects-are-just-customs-officer/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 21:00:38 +0000</pubDate>
		<dc:creator>Alban Seurat</dc:creator>
				<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=103</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2010/03/software-architects-are-just-customs-officer/";</script>
Obviously, this title is a little provocative and there is a lot of shortcut  . I am myself doing architecture and software development, and I have a recurrent  rhetorical question tickling in my head; where does a particular artifact should be build.
Indeed, a common pattern in software development is too find the right boundaries, [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2010/03/software-architects-are-just-customs-officer/";</script><p style="text-align: left;"><a rel="attachment wp-att-109" href="http://www.alkpone.com/2010/03/software-architects-are-just-customs-officer/pton51l/"><img class="size-medium wp-image-109 aligncenter" src="http://www.alkpone.com/wp-content/uploads/2009/08/pton51l-300x300.jpg" alt="custom" width="300" height="300" /></a></p>
<p style="text-align: left;">Obviously, this title is a little provocative and there is a lot of shortcut <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I am myself doing architecture and software development, and I have a recurrent  rhetorical question tickling in my head; where does a particular artifact should be build.</p>
<p style="text-align: left;">Indeed, a common pattern in software development is too find the right boundaries, the right frontier, the right position, the right size:</p>
<ul>
<li>Where should I decompose my software into service,</li>
<li>Where this module should be separated from another,</li>
<li>Where is the frontier between meta-data (configuration, …) and data.</li>
<li>Where is particular class should settle, in the GUI part, the back-end part, …</li>
</ul>
<p>Mostly, we agree on principles, the hardest part is too put them in practice. Most the times, the remaining question is, where is the limit, the position, the size of a particular artifact (services, class, module, methods, …).</p>
<p>Manager has to deal with numbers, status, deadlines, very concrete facts. Architects has on different mindset; Principles, Patterns, more vague concepts even if they are often well described. Amusingly, one of this principles is to continue to code to not being too much in an ivory tour and forget all this numbers (sizing, deadlines, pragmatism, …).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2010/03/software-architects-are-just-customs-officer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2010/03/software-architects-are-just-customs-officer/</feedburner:origLink></item>
		<item>
		<title>Single Sign-On : What brings it for you ?</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/LU873PnGhyI/</link>
		<comments>http://www.alkpone.com/2009/10/single-sign-on-what-brings-it-to-you/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 21:17:14 +0000</pubDate>
		<dc:creator>Alkpone</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=349</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/10/single-sign-on-what-brings-it-to-you/";</script>Buzz word, we are all talking buzz word, SSO is one of them. What is Single Sign-On by the way?
A brief description would say that Single Sign-on is a solution to allow an end-user to use different applications using the same credentials. To give you an example, when I use modern web sites like Facebook, [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/10/single-sign-on-what-brings-it-to-you/";</script><p>Buzz word, we are all talking buzz word, SSO is one of them. What is Single Sign-On by the way?</p>
<p>A brief description would say that Single Sign-on is a solution to allow an end-user to use different applications using the same credentials. To give you an example, when I use modern web sites like Facebook, Dailymotion, yahoo I can use OpenID to connect to any of these applications. OpenID keeps my user information and I may connect to any of theses websites with my OpenID ID <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Another incarnation of SSO in the enterprise world is described by OASIS using SAML. Security Assertion Markup Language is an XML based standard for exchanging authentication and authorization data between security domains, that is, between an identity provider (a producer of assertions) and a service provider (a consumer of assertions).</p>
<p><span id="more-349"></span><img title="More..." src="http://www.alkpone.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p style="text-align: center;"><a rel="attachment wp-att-357" href="http://www.alkpone.com/2009/10/single-sign-on-what-brings-it-to-you/sso/"><img class="aligncenter" title="sso" src="http://www.alkpone.com/wp-content/uploads/2009/10/sso.jpg" alt="sso" width="429" height="285" /></a></p>
<p>During the design of your application, security is one of the concern which should be handled before even writing a line of code. A simple pattern to allow to interact within an SSO compliant environment is to manipulate a Cookie object which will be linked to a Session object needed to  keep information across different user request. It&#8217;s a common pattern for web design but it could be applied to any application.</p>
<p>Whether you are using a SSO being able to keep session state for you (in a Servlet environment for example), or managing your session yourself using a database for instance, the Identity server will be able to link a particular user to this session object.</p>
<p>In a web environment, you can use CAS for example to centralize your authentication and authorization (<a href="http://www.ibm.com/developerworks/web/library/wa-singlesign/" target="_blank">source</a>):</p>
<p style="text-align: center;"><img title="CAS" src="http://www.ibm.com/developerworks/web/library/wa-singlesign/figure1.gif" alt="" width="547" height="220" /></p>
<p>The following are the main steps in the authentication protocol.</p>
<ol>
<li>The user attempts to access an application.  The user is redirected to the CAS login URL. The user is presented with a username/password dialog box.</li>
<li>The user enters ID and password details and CAS attempts to authenticate the user. If authentication fails, the target application never hears about it &#8212; the user remains at the CAS server.</li>
<li>If authentication succeeds, then CAS redirects the user back to the target application, appending a parameter called a <em>ticket</em> to the URL. CAS then attempts to create an in-memory cookie called a <em>ticket-granting cookie</em>. This is done to allow for automatic re-authentication later &#8212; if present, then it indicates that the user has already successfully logged in and the user avoids having to re-enter his username and password.</li>
<li>The application then validates that this is a correct ticket and represents a valid user by calling the CAS <code>serviceValidate</code> URL and passing the ticket and service name as parameters. CAS checks that the supplied ticket is valid and is associated with the requested service. If validation is successful, CAS returns the username to the application.</li>
</ol>
<p>Using the username, you can provision your rights and roles from it. Either you can redo the same operation on every request or keeping this information within the current session. The link between the &#8220;cookie&#8221; and the session is then established. The session store the credentials necessary to access to any resources protected by security.</p>
<p>This pattern might be used within any environment. <a href="http://cwiki.apache.org/confluence/display/SHIRO/Index" target="_blank">Apache Shiro</a> (previously JSecurity) has been driven by this approach where authorization, authentication and session management are available within the same framework.</p>
<p style="text-align: center;"><img title="Shiro" src="http://cwiki.apache.org/confluence/download/attachments/122079/SecurityManagerMultiRealm.png" alt="" width="486" height="472" /></p>
<p>Adding Session Management within a security framework allow to take advantages of powerful features very easily. You can, for example, use Shiro in any environment (web or non web) where clustered or distributed sessions are desired. If sessions are federated across multiple applications, the user&#8217;s authentication state can be shared too. Log in once to any application and the others all recognize that log-in. Very simple in mind and very powerful to use, the only drawback of this framework is that is not compatible with JaaS, the java authentication and authorization standard.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2009/10/single-sign-on-what-brings-it-to-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2009/10/single-sign-on-what-brings-it-to-you/</feedburner:origLink></item>
		<item>
		<title>How-To: Mount an Ubuntu 9.04 on Debian 4 / Xen 3.2</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/Ofh4S3HC0dw/</link>
		<comments>http://www.alkpone.com/2009/09/how-to-mount-an-ubuntu-9-04-on-debian-4-xen-3-2/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 21:24:05 +0000</pubDate>
		<dc:creator>Alkpone</dc:creator>
				<category><![CDATA[How-To]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=325</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/09/how-to-mount-an-ubuntu-9-04-on-debian-4-xen-3-2/";</script>Why choosing XEN Hypervisor for your virtualization.
Two reason, on Linux, it&#8217;s the most advanced open-source virtualization system. Even if KVM is under heavy development, many features are still missing. Second reason is that Xen has a paravirtualization.
The first part of the How-To would be to explain how to install Debian and Xen. I&#8217;ve done this [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/09/how-to-mount-an-ubuntu-9-04-on-debian-4-xen-3-2/";</script><p>Why choosing XEN Hypervisor for your virtualization.</p>
<p>Two reason, on Linux, it&#8217;s the most advanced <strong>open-source</strong> virtualization system. Even if KVM is under heavy development, many features are still missing. Second reason is that Xen has a <a href="http://en.wikipedia.org/wiki/Paravirtualization" target="_blank">paravirtualization</a>.</p>
<p><em>The first part of the How-To would be to explain how to install Debian and Xen. I&#8217;ve done this many times and I will probably do a How-To someday to explain how to create this first step. Let&#8217;s assume you are hosted on OVH (European Hosting Provider) and everything is already in place. <span id="more-325"></span></em></p>
<p>The first step would be to prepare the LVM to allow to expand easily your partitions.</p>
<blockquote><p>umount /dev/md2</p></blockquote>
<p><em>Let&#8217;s assume we have an RAID array and you already have well partitioned your disks (like OVH does)<br />
</em></p>
<p>We create dedicated volumes for our Ubuntu Server 9.04</p>
<blockquote><p>pvcreate /dev/md2</p>
<p>vgcreate /dev/md2 &lt;GROUP_NAME&gt;</p>
<p>lvcreate /dev/md2 &#8211;name &lt;VOLUME_NAME&gt; &#8211;size &lt;SIZE&gt; &lt;GROUP_NAME&gt;</p>
<p>mkfs -t ext3 /dev/&lt;GROUP_NAME&gt;/&lt;VOLUME_NAME&gt;</p></blockquote>
<p>This will create the dedicated LVM volume for your Virtual Machine Ubuntu 9.04.</p>
<p>Next you will install directly without reboot your operating system from debian. Do prepare your installation you need to mount the volume group within your local file system.</p>
<blockquote><p>mkdir /mnt</p>
<p>mount /dev/&lt;GROUP_NAME&gt;/&lt;VOLUME_NAME&gt; /mnt</p></blockquote>
<p>Now, we will prepare the installation scripts :</p>
<blockquote><p>http://ftp.us.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.15_all.deb</p>
<p>dpkg &#8211;install  debootstrap_1.0.15_all.deb</p></blockquote>
<p>Now, we have the scripts needed to install Ubuntu within a directory (our LVM partition).</p>
<blockquote><p>debootstrap &#8211;arch amd64 jaunty /mnt http://archive.ubuntu.com/ubuntu</p></blockquote>
<p>This phase will take few minutes, it will install Ubuntu 9.04. Once this done,  the next steps will be used to configure the target ubuntu system.</p>
<p>The first operation we need to do is to create a virtual terminal to allow xen to connect to this particular VM. We will modify <code>/mnt/etc/event.d/xvc0</code></p>
<blockquote><p># xvco &#8211; getty<br />
#<br />
# This service maintains a getty on xvco from the point the system is<br />
# started until it is shut down again.</p>
<p>start on stopped rc2<br />
start on stopped rc3<br />
start on stopped rc4<br />
start on stopped rc5</p>
<p>stop on runlevel 0<br />
stop on runlevel 1<br />
stop on runlevel 6</p>
<p>respawn<br />
exec /sbin/getty 38400 xvc0</p></blockquote>
<p>This will allow to start getty process to allow <code>xen console</code> to connect to this terminal. Now we need to create the terminal itself within the <code>/dev</code> filesystem.</p>
<blockquote><p>mknod /mnt/dev/xvc0 c 204 191</p></blockquote>
<p>Next step is to allow network connectivity by modifying the file <code>/mnt/etc/network/interfaces</code></p>
<blockquote><p># The loopback network interface<br />
auto lo<br />
iface lo inet loopback</p>
<p>auto eth0<br />
iface eth0 inet static<br />
address &lt;IP_DOMU&gt;<br />
netmask 255.255.255.255<br />
post-up /sbin/ip route add default dev eth0</p></blockquote>
<p>We need to setup now, the minimum file system needed to make our virtual machine working, we will modify the regular file <code>/mnt/etc/fstab</code></p>
<blockquote><p>proc            /proc           proc    defaults        0       0<br />
/dev/hda1       /               ext3    defaults,errors=remount-ro 0       1</p></blockquote>
<p>We can now configure the password for root and umount the VM filesystem</p>
<blockquote><p>chroot /mnt passwd</p>
<p>umount /mnt</p></blockquote>
<p>We are now going to create the configuration for xen to allow our system to run. We assume the xen configuration use vif-route to manage routing between Dom0 and DomU Operating System.</p>
<blockquote><p>kernel=&#8221;/boot/&lt;YOUR CURRENT KERNEL&gt;&#8221;<br />
memory = &#8220;2048&#8243;<br />
maxmem = &#8220;3072&#8243;<br />
name = &lt;DOM0_NAME&gt;<br />
vcpus=2<br />
vif = [ 'ip=XXX' ]            # replace with DomU&#8217;s IP<br />
netmask = &#8220;255.255.255.0&#8243;<br />
gateway = &#8220;XXX&#8221;                       # Dom0<br />
disk = [ 'phy:/dev/&lt;LVM_GROUP_NAME&gt;/&lt;LVM_VOLUME_NAME&gt;,hda1,w' ]<br />
root = &#8220;/dev/hda1&#8243;<br />
extra=&#8217;console=xvc0 xencons=xvc0&#8242;</p></blockquote>
<p>We can now create the VM with this configuration file set within <code>/etc/xen/&lt;VM_NAME&gt;</code></p>
<blockquote><p>xm create /etc/xen/&lt;VM_NAME&gt;</p>
<p>xm console VM_NAME</p></blockquote>
<p><em>Note: You might want to make your vm starting in the same times than the Host. In some configuration you will have an /etc/xen/auto directory where you can put your configuration file.</em></p>
<p>You can now use your Ubuntu on top of Xen 3.2 / Debian 4.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2009/09/how-to-mount-an-ubuntu-9-04-on-debian-4-xen-3-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2009/09/how-to-mount-an-ubuntu-9-04-on-debian-4-xen-3-2/</feedburner:origLink></item>
		<item>
		<title>Why Mac OS X is my operating system</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/6Ywe-swNkj8/</link>
		<comments>http://www.alkpone.com/2009/09/why-mac-os-x-is-my-operating-system/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 20:58:54 +0000</pubDate>
		<dc:creator>Alban Seurat</dc:creator>
				<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=178</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/09/why-mac-os-x-is-my-operating-system/";</script>Back in 2001, when Steve Jobs released Mac Os X, I was enthusiastic. 
At last, one operating system based on UNIX with all its powerful tools been available and still the best User Interface we can have. In this period, Linux was far away from Ubuntu 9.04 and Windows 2000, well, Windows, except with cygwin, [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/09/why-mac-os-x-is-my-operating-system/";</script><p>Back in 2001, when Steve Jobs released Mac Os X, I was enthusiastic. <a rel="attachment wp-att-179" href="http://www.alkpone.com/2009/09/why-mac-os-x-is-my-operating-system/macosxarch/"><img class="alignright size-medium wp-image-179" src="http://www.alkpone.com/wp-content/uploads/2009/08/macosXarch-300x224.gif" alt="macosXarch" width="300" height="224" /></a></p>
<p>At last, one operating system based on UNIX with all its powerful tools been available and still the best User Interface we can have. In this period, Linux was far away from Ubuntu 9.04 and Windows 2000, well, Windows, except with cygwin, they were no way to have a real powerful command line (ok I&#8217;m a geek <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). I remember saying to my friends that it was a good move from Apple.<span id="more-178"></span></p>
<p>Before Jobs came back to Apple, Mac OS 7/8 was a ugly OS based on the same approach than Win 3.1. That was six years after Windows  95 and the first preemptive scheduler offered to the end users.</p>
<p>In a great move, Jobs ask to its kernel developers to not been tight to any processor&#8230; 2005, Mac on Intel! Second great decision. Then, you were able to make run Windows and Linux (Ok, it was possible before, but with an very slow emulator.)</p>
<p>Apple had always had the strategy to package software with hardware altogether. Like its slogan (Think different), this approach has been partially deprecated during the 90&#8217;s where the industry focused on only its core business. Even company like Sony re-focus their activity on what is the most profitable and left aside plenty of products.  Many (and probably myself) had said during this period that Apple was dead. Keeping an exotic software (or hardware depending on people view) was too much expensive and prevent the company to sell their configuration.</p>
<p>Since, Steve jobs came back and with him, its desire to create products where all details are polished. Having this approach to bundle a complete solution (hard/software) make Apple force today.</p>
<p>To conclude, we have here a good hardware and a good software extremely well finalized (most of the times…). Therefore, the reasons why Mac OS X is my primary operating system today are quite simple : Unix tooling with a GUI focused on real user experience.</p>
<p>Maybe, Apple surf on the geek mode, maybe it&#8217;s just temporary, Windows 7 will be released soon and many people seems astonished. Still, no real Unix tooling <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and you should look at this <a href="http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars" target="_blank">link</a>. Future might be bright for Apple.</p>
<p>N.B: I took the liberty to post a french picture of Mac OS X architecture, I&#8217;d like the old style of it <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2009/09/why-mac-os-x-is-my-operating-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2009/09/why-mac-os-x-is-my-operating-system/</feedburner:origLink></item>
		<item>
		<title>Spring DM Server : OSGI for the Plebs</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/49dFOD-qmbI/</link>
		<comments>http://www.alkpone.com/2009/09/spring-dm-server-osgi-for-the-plebs/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 19:05:49 +0000</pubDate>
		<dc:creator>Alban Seurat</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=238</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/09/spring-dm-server-osgi-for-the-plebs/";</script>As you will probably discover, OSGI community is a very vibrant community. I will continue my articles around OSGi with some thought on the Spring flavor of OSGI as a plaform.
Spring DM Server is a product based on Spring OSGI open source project which have a goal (like always with Spring) to  encapsulate OSGI plateform [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/09/spring-dm-server-osgi-for-the-plebs/";</script><p>As you will probably discover, OSGI community is a very vibrant community. I will continue my articles around <a href="http://www.alkpone.com/2009/08/distributed-osgi-an-elegant-way-to-distribute-our-software/" target="_blank"><code>OSGi</code></a> with some thought on the Spring flavor of OSGI as a plaform.</p>
<p>Spring DM Server is a product based on Spring OSGI open source project which have a goal (like always with Spring) to  encapsulate OSGI plateform to let you focus on your business code.<img src="http://www.alkpone.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p>Then, here an insight of what Spring brings to OSGI&#8230;</p>
<p><span id="more-238"></span>Usually, OSGi services (obviously we are in the SOA world) has to be declared by using an API, OSGI Dynamic Service allow you to declare by configuration your service but you can&#8217;t manage services dependencies (half of the path has been done, &#8220;dommage&#8221;). Here an example how to declare and get service reference within OSGI :</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">class</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AActivator+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Activator</span></a> <span class="kw2">extends</span> BundleActivator <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">public</span> <span class="kw4">void</span> start<span class="br0">&#40;</span>BundleContext context<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; MySecondService s2 = context.<span class="me1">getService</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; context.<span class="me1">getServiceReference</span><span class="br0">&#40;</span>MySecondService.<span class="kw2">class</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, <span class="kw2">null</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; MyServiceImpl s1 = <span class="kw2">new</span> MyServiceImpl<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; s1.<span class="me1">setMySecondService</span><span class="br0">&#40;</span>s2<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; context.<span class="me1">registerService</span><span class="br0">&#40;</span>MyService.<span class="kw2">class</span>, s1, <span class="kw2">null</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>It almost enough, still, you need to write some code and your application need to have OSGI jar during your test. Also, if you don&#8217;t want to deploy you application within different environment (OSGI, regular JEE, plain J2SE&#8230;), it will be difficult.</p>
<p>Here comes Spring and its magical IoC pattern (ok , it is not a patent of Spring <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). Soon I will write a long article around Dependency Injection pattern.</p>
<p>By applying the IoC pattern, you can define and make the dependencies of your OSGI service within a simple XML file. The benefices are evident, no more code attached to OSGi, less code to write (and maintain), and automatic management of dependencies (in theory&#8230;).</p>
<p>In addition of the OSGI platform, Spring DM Server comes with Tomcat to help you deploy your web application. If you don&#8217;t need the full JEE stack, Spring DM could be the solution. It allow you to use old plain War and also a new concept based on OSGI (quite similar to Tomcat Webclass loader) which allow a War to use (by using OSGI dependencies) shared jar. Much more powerful than the old Tomcat approach where you where literally in a sandbox. Here you can manage what can be shared/exposed to your wars.</p>
<p><a rel="attachment wp-att-248" href="http://www.alkpone.com/2009/09/spring-dm-server-osgi-for-the-plebs/dmserver_graphic_small2/"><img class="aligncenter size-full wp-image-248" src="http://www.alkpone.com/wp-content/uploads/2009/09/dmServer_graphic_small2.jpg" alt="dmServer_graphic_small2" width="400" height="196" /></a></p>
<p>I will not go too much in details on Spring DM, the idea here is really to focus on the OSGi part. So, at least too related things are missing which make developer being frustrated.<br />
First, they are no way to set a start level within the application context files of Spring OSGI configuration. The second issue, more related to OSGI itself, mandate developer to use PAR (&#8220;multiple bundle&#8221; packaging made in Spring) to deploy your application, which is dangerous; you tend to tight yourself to a particular application server.</p>
<p>Nothing is perfect in this world, Java and its class-path make developer life difficult with the Jar Hell, OSGI came with a new buzz word, the &#8220;bundle dependencies hassle&#8221;.</p>
<p>You can find Spring DM OSGI (or Spring DM Kernel) within <a href="http://felix.apache.org/site/apache-felix-karaf.html" target="_blank">Felix Karaf</a>, a Apache project in incubation which has the goal to create core services on top of OSGI (Provisionning, Dynamic declaration (Spring DM), SSH Access, and many other killer features).</p>
<p><a rel="attachment wp-att-245" href="http://www.alkpone.com/2009/09/spring-dm-server-osgi-for-the-plebs/karaf/"><img class="aligncenter size-medium wp-image-245" src="http://www.alkpone.com/wp-content/uploads/2009/09/karaf-300x81.png" alt="karaf" width="300" height="81" /></a></p>
<p>Karaf was first developed within Apache ServiceMix project (the Apache ESB). So, there is still many thing related to it. However, Karaf seems to be a really promising project as it cover many issue needed in the entreprise world OSGI itself had let aside (Its primary plateform was the Mobile industry).</p>
<p>With almost all major vendor adopting OSGI, Spring OSGI (open source project) or Spring DM Server (Spring product) could play a great part. Spring philosophy (I hope it will stay this way&#8230;) to focus on the principal (<a href="http://www.alkpone.com/2009/08/the-kiss-principle/" target="_blank">KISS Principle</a>) might be a good solution for small and medium business who need to develop web application without all the payload of JEE.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2009/09/spring-dm-server-osgi-for-the-plebs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2009/09/spring-dm-server-osgi-for-the-plebs/</feedburner:origLink></item>
		<item>
		<title>Wordpress: How-to add a meta-box in the post page</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/d-7PqQdvWXk/</link>
		<comments>http://www.alkpone.com/2009/08/wordpress-how-to-add-a-meta-box-within-the-post-page/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 21:37:49 +0000</pubDate>
		<dc:creator>Alban Seurat</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=186</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/wordpress-how-to-add-a-meta-box-within-the-post-page/";</script>Typically, I had to do this to modify the DZone plug-in which had some ugly configuration to modify the post subpanel in the Wordpress administration page.
Then, here the few things you need to do to create a beautiful meta-box within any Wordpress post page  
This code will works for any version of Wordpress 2.x. [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/wordpress-how-to-add-a-meta-box-within-the-post-page/";</script><p>Typically, I had to do this to modify the DZone plug-in which had some ugly configuration to modify the post subpanel in the Wordpress administration page.</p>
<p>Then, here the few things you need to do to create a beautiful meta-box within any Wordpress post page <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em>This code will works for any version of Wordpress 2.x. Since wordpress 2.5, a new API has been defined to allow easily to add admin meta-box but if you want to create a plug-in compatible with older version of wordpress, here is the way&#8230;</em></p>
<p><span id="more-186"></span>First in your plug-in page add this piece of code. It will direct wordpress to listen any event of adding more stuff in the post page :</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#8216;dbx_post_advanced&#8217;</span>, on_meta_boxes_added<span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>This step done, you need to write a php function which will handle this &#8220;event&#8221; :</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span> <span class="kw2">function</span> on_meta_boxes_added<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/function_exists"><span class="kw3">function_exists</span></a><span class="br0">&#40;</span><span class="st0">&#8216;add_meta_box&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; add_meta_box<span class="br0">&#40;</span><span class="st0">&quot;divId&quot;</span>, <span class="st0">&quot;DivName&quot;</span>, <span class="st0">&quot;write_meta_box_content&quot;</span>, <span class="st0">&quot;post&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&lt;fieldset id=<span class="st0">&quot;divId&quot;</span> <span class="kw2">class</span>=<span class="st0">&quot;dbx-box&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;h3 <span class="kw2">class</span>=<span class="st0">&quot;dbx-handle&quot;</span>&gt;DivName&lt;/h3&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;&lt;div <span class="kw2">class</span>=<span class="st0">&quot;dbx-content&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">&lt;?php</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> write_meta_box_content<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;&lt;/div&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/fieldset&gt;&lt;?php</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>You just had now to write your own &#8220;write_meta_box_content&#8221; function.<br />
Of course, using Wordpress 2.5+, by adding an &#8220;event&#8221; to the action &#8220;do_meta_boxes&#8221; you can add meta-boxes everywhere they are used.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">add_action<span class="br0">&#40;</span><span class="st0">&#8216;do_meta_boxes&#8217;</span>, on_meta_boxes_added, <span class="nu0">10</span>, <span class="nu0">3</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> on_meta_boxes_added<span class="br0">&#40;</span><span class="re0">$page</span>, <span class="re0">$type</span>, <span class="re0">$post</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;$page admin of $type contains $post <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Here, as you can see, my admin post page look good now <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em><a rel="attachment wp-att-210" href="http://www.alkpone.com/2009/08/wordpress-how-to-add-a-meta-box-within-the-post-page/picture-1-2/"><img class="aligncenter size-medium wp-image-210" title="Dzone plugin" src="http://www.alkpone.com/wp-content/uploads/2009/08/Picture-11-300x240.png" alt="Dzone plugin" width="300" height="240" /></a><br />
</em><br />
For those of you who would like to have the modified plug-in working directly here is the link :<br />
<a rel="attachment wp-att-233" href="http://www.alkpone.com/2009/08/wordpress-how-to-add-a-meta-box-within-the-post-page/dzone-widget/">dzone-widget</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2009/08/wordpress-how-to-add-a-meta-box-within-the-post-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2009/08/wordpress-how-to-add-a-meta-box-within-the-post-page/</feedburner:origLink></item>
		<item>
		<title>Distributed OSGi, an elegant way to distribute software</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/7wK2xhKxqQE/</link>
		<comments>http://www.alkpone.com/2009/08/distributed-osgi-an-elegant-way-to-distribute-our-software/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 17:40:33 +0000</pubDate>
		<dc:creator>Alban Seurat</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=149</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/distributed-osgi-an-elegant-way-to-distribute-our-software/";</script>Before talking about distribution, I will talk a little about OSGi.
This platform was primarily intended to work on mobile device. Therefore, it has been design to be light and focusing on the principal (KISS Principle).
Every developer who had used Java programming more than just some Hello World tests, will understand the Jar Hell and the [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/distributed-osgi-an-elegant-way-to-distribute-our-software/";</script><p>Before talking about distribution, I will talk a little about OSGi.</p>
<p>This platform was primarily intended to work on mobile device. Therefore, it has been design to be light and focusing on the principal (<a href="http://www.alkpone.com/2009/08/the-kiss-principle/" target="_blank">KISS Principle</a>).</p>
<p>Every developer who had used Java programming more than just some Hello World tests, will understand the Jar Hell and the fun with the Class-path.<br />
OSGi has too primary goals, first its modular system which allow to manage module (they call it Bundle) life-cycle, module version management and module dependencies. It&#8217;s particularly important for applications who need to run with small memory to only load what is necessary.<br />
The second important goal of the core of OSGi is its service registry, once again focus on the minimum and just allow a module to register its services on the registry in a really purely manner.<span id="more-149"></span></p>
<p>The OSGi consortium create many default service, some very generic (logging, security, web server), other more dedicated to a mobile platform (Power Management, Device Access, &#8230;).</p>
<p><a rel="attachment wp-att-151" href="http://www.alkpone.com/2009/08/distributed-osgi-an-elegant-way-to-distribute-our-software/osgi31644/"><img class="aligncenter size-full wp-image-151" title="osgi31644" src="http://www.alkpone.com/wp-content/uploads/2009/08/osgi31644.gif" alt="osgi31644" width="255" height="191" /></a></p>
<p>Today, OSGi specification has spread to the enterprise world, most Application Server vendor bundle their infrastructure with OSGi within its core (JBoss, WebSphere, Glassfish, Jonas, Spring DM…).</p>
<p>As you probably know, or you starting to understand, OSGI seat right on top of the JVM and act as a kernel in our application. What will you say, if, now, without having to change one line of code, you can distribute your bundle on separated node. Nice on paper, DOSGi bring you that.</p>
<p>Today, only one implementation of OSGI 4 R4.2 (which contains DOSGi) is implemented by Apache CXF based on Web Services. I&#8217;m pretty sure tomorrow, other implementation will emerge with more performing RPC-like protocols.</p>
<p>At the OSGi service level, you will be able to discuss transparently with another service without knowing where the service is hosted. You just have to choose only at deployment phase where you want to distribute or not some of your services.</p>
<p>Going a step ahead, Eclipse Foundation is working on two promising project around this approach. Since Eclipse RCP choose OSGi for managing its plug-in on client, they had remove completely the old client/server paradigm. You can just using a service wherever it is hosted.</p>
<p>There are two different projects on Eclipse Incubation around this approach :</p>
<ul>
<li><a href="http://www.eclipse.org/riena/" target="_blank">Eclipse Riena</a> : This framework being develop is the foundation to develop <em>multi-tier</em> application by exposing services in a transparent way.</li>
<li><a href="http://www.eclipse.org/corona/" target="_blank">Eclipse Corona</a> : Using events and actions on top of OSGi, this project aims to deliver a very efficient interaction between eclipse clients and server side to allow collaboration tools.</li>
</ul>
<p>For those of you who are Netbeans addict, I know there are some, really, somewhere in the back of the classroom <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Hopefully for you guys, <a href="http://eppleton.sharedhost.de/blog/?p=701" target="_blank">people from the Netbeans community</a> are doing some research to make OSGi bundle first class citizen in your favorite RCP <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2009/08/distributed-osgi-an-elegant-way-to-distribute-our-software/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2009/08/distributed-osgi-an-elegant-way-to-distribute-our-software/</feedburner:origLink></item>
		<item>
		<title>DRY or SOFT ?</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/vyyQt0kR0iY/</link>
		<comments>http://www.alkpone.com/2009/08/dry-or-soft/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 10:16:01 +0000</pubDate>
		<dc:creator>Alban Seurat</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=106</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/dry-or-soft/";</script>The dry principle, Don&#8217;t Repeat yourself is the second principles in my series of architecture principle I will write on.
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
I&#8217;m often talking about &#8220;meaning&#8221;, every piece of software should have only one meaning, other says responsibility. Therefore, if we have applying correctly [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/dry-or-soft/";</script><p>The dry principle, <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself" target="_blank">Don&#8217;t Repeat yourself</a> is the second principles in my series of architecture principle I will write on.</p>
<p><em>Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.</em></p>
<p>I&#8217;m often talking about &#8220;meaning&#8221;, every piece of software should have only one meaning, other says responsibility. Therefore, if we have applying correctly this pattern, every times we have to made a change into our software, we don&#8217;t have to re-factor the whole stack. Exception of the cross-cutting concern (i18n, security, logging, …), modifying a module should not impact another module.</p>
<p>I&#8217;m not fan of code generator (someday i will write an article on that <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ), but for the sake of this principle, I think i would prefer having some code generation than having to copy/paste code. As long as the code generated is NEVER modified, it&#8217;s fine.</p>
<p><span id="more-106"></span>A simple example I have used lately, I&#8217;ve made some test on GWT (Google Web Kit) to see if it&#8217;s mature enough to be used in my company.</p>
<p>When in GWT, you want to publish a &#8220;service&#8221; to your GUI you have to use 2 interfaces:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">interface</span> EchoService <span class="kw2">extends</span> RemoteService <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> echoString<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> stringToEcho<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>and</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">interface</span> EchoServiceAsync <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw4">void</span> echoString<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3AString+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> stringToEcho, AsyncCallback async<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>You write the first piece of code, which will be a simple RPC service usable within GWT, and the framework could generate for you (to allow async call) the second interface. It&#8217;s preventing you to have to write yourself this piece of code. It seems really minor but the principle is really well understandable with this simple case.</p>
<p>Talking of copy/paste, another part related with the DRY principle is to apply the OnceAndOnlyOnce pattern. Sometimes, I&#8217;m saying to myself, I should create a driver which deactivate copy/paste on developper computer <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Copy/Paste; there are two major issue by using the copy/paste &#8220;approach&#8221;, first you likely hand up having more bugs in your software.  I&#8217;m pretty sure, that if Gartner <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  made some analysis on the bug causes in the software industry, copy/paste will certainty be in the top 3.<br />
Have you already try to make a software evolve when most of the code is a crappy copy/paste with just few changes between copy. Believe me, you will, one day, and this day, your week (and maybe more) will be boring <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . You end up having to re-factor all the code with the certain probability to introduce a bug. We have to factorize upfront!</p>
<p>DRY doesn&#8217;t mean &#8220;being lazy&#8221;, although lazy could be a pattern it&#8217;s not the subject here <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . We should don&#8217;t hesitate to always refactore our code, every times we add some portion of code <em>even</em> it&#8217;s not ours.</p>
<p>Steve Balmer like to put word in your head just with just a <em>little </em>insistence <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , I would  apply its pattern :  &#8220;Factorize, Factorize, Factorize!!!&#8221; your code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2009/08/dry-or-soft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2009/08/dry-or-soft/</feedburner:origLink></item>
		<item>
		<title>Apple Buying guide</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/Cx7Jahiz39w/</link>
		<comments>http://www.alkpone.com/2009/08/apple-buying-guide/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 11:08:03 +0000</pubDate>
		<dc:creator>Alban Seurat</dc:creator>
				<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=84</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/apple-buying-guide/";</script>As all Apple user, you fill frustrated because you don&#8217;t know when you will buy your new equiment if a new one will come  . Hopefully, macrumors has created a guide for you : http://buyersguide.macrumors.com/. It&#8217;s time to buy a MacBook pro with Snow Leopard on It  
]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/apple-buying-guide/";</script><p><a rel="attachment wp-att-87" href="http://www.alkpone.com/2009/08/apple-buying-guide/picture-1/"><img class="size-full wp-image-87 alignleft" title="MacRumors" src="http://www.alkpone.com/wp-content/uploads/2009/08/Picture-1.png" alt="MacRumors" width="253" height="72" /></a>As all Apple user, you fill frustrated because you don&#8217;t know when you will buy your new equiment if a new one will come <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> . Hopefully, macrumors has created a guide for you : <a href="http://buyersguide.macrumors.com/" target="_blank">http://buyersguide.macrumors.com/</a>. It&#8217;s time to buy a MacBook pro with Snow Leopard on It <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2009/08/apple-buying-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2009/08/apple-buying-guide/</feedburner:origLink></item>
		<item>
		<title>The KISS Principle</title>
		<link>http://feedproxy.google.com/~r/Alkpone/~3/DP60r84Zi8c/</link>
		<comments>http://www.alkpone.com/2009/08/the-kiss-principle/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 18:40:37 +0000</pubDate>
		<dc:creator>Alban Seurat</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://www.alkpone.com/?p=63</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/the-kiss-principle/";</script>I will write a series of article around architecture principles I follow.
Often, in the software industry, it&#8217;s hard to say &#8220;STOP, this software doesn&#8217;t need more&#8221;. We have a tendency as human to  wants more and we apply this pattern (Yes, I have said the word &#8220;pattern&#8221;   ) to our software.
Therefore, following the [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://www.alkpone.com/2009/08/the-kiss-principle/";</script><p>I will write a series of article around architecture principles I follow.</p>
<p>Often, in the software industry, it&#8217;s hard to say &#8220;STOP, this software doesn&#8217;t need more&#8221;. We have a tendency as human to  wants more and we apply this pattern (Yes, I have said the word &#8220;pattern&#8221; <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) to our software.</p>
<p>Therefore, following the <a href="http://en.wikipedia.org/wiki/KISS_principle" target="_blank">KISS principle</a> could be against nature. Every times I starting to design a component, writing some code, creating a information system architecture, I keep saying to myself, &#8220;do we really need this ?&#8221;, &#8220;Is that is not too much complicated ?&#8221;, &#8220;Is there something simpler to do the same job ?&#8221;&#8230;</p>
<p>I will become evangelist here. I see this principle as the prime principle <img src='http://www.alkpone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Before thinking of DRY or SOLID principles which are very important, as a whole, we should always keep modesty and try to add only what is really needed to our software. When i mean &#8220;add&#8221;, I mean, features, 3rd Parties libraries, source codes , commentaries&#8230;</p>
<p>By the way, I like this quote on the wiki link :</p>
<blockquote><p>The principle most likely finds its origins in similar concepts, such as <a title="Occam's razor" href="http://en.wikipedia.org/wiki/Occam%27s_razor">Occam&#8217;s razor</a>, and <a title="Albert Einstein" href="http://en.wikipedia.org/wiki/Albert_Einstein">Albert Einstein</a>&#8217;s maxim that &#8220;everything should be made as simple as possible, but no simpler&#8221;.<sup id="cite_ref-1"><a href="http://en.wikipedia.org/wiki/KISS_principle#cite_note-1"><span>[</span>2<span>]</span></a></sup> <a title="Leonardo Da Vinci" href="http://en.wikipedia.org/wiki/Leonardo_Da_Vinci">Leonardo Da Vinci</a>&#8217;s &#8220;Simplicity is the ultimate sophistication&#8221;, or <a title="Antoine de Saint Exupéry" href="http://en.wikipedia.org/wiki/Antoine_de_Saint_Exup%C3%A9ry">Antoine de Saint Exupéry</a>&#8217;s &#8220;It seems that perfection is reached not when there is nothing left to add, but when there is nothing left to take away&#8221;.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.alkpone.com/2009/08/the-kiss-principle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.alkpone.com/2009/08/the-kiss-principle/</feedburner:origLink></item>
	</channel>
</rss>
