<?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>Simon Zambrovski &#187; Simon Zambrovski | Categry: software engineering</title>
	<atom:link href="http://simon.zambrovski.org/category/software-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>http://simon.zambrovski.org</link>
	<description>&#34;One Cannot Not Communicate&#34; - Watzlawick</description>
	<lastBuildDate>Tue, 15 Nov 2011 00:15:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>JEE5 Sun Certified Enterprise Architect</title>
		<link>http://simon.zambrovski.org/2011/10/jee5-sun-certified-enterprise-architect/</link>
		<comments>http://simon.zambrovski.org/2011/10/jee5-sun-certified-enterprise-architect/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 22:28:06 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[off-topic]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[exam]]></category>
		<category><![CDATA[JEE5]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SCEA]]></category>
		<category><![CDATA[Software Architect]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=414</guid>
		<description><![CDATA[Today I received the notification from Oracle about successful pass of the JEE5 Sun Certified Enterprise Architect ( SCEA) certification. The certification is given after passing three exams: a basic online multiple-choice exam on JEE Technologies and design patterns, an assignment with an architecture of a sample use-case and, finally, an online exam with questions [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://simon.zambrovski.org/wp-content/uploads/2011/10/scea_logo.png" alt="SCEA Logo" title="Sun Certified Enterprise Architect" width="300" height="207" style="float:left; margin:10px;" /><br />
Today I received the notification from Oracle about successful pass of the <strong>JEE5 Sun Certified Enterprise Architect</strong> (
<a  href="http://en.wikipedia.org/wiki/Sun_Certified_Enterprise_Architect" onclick="javascript:pageTracker._trackPageview('/external/en.wikipedia.org/wiki/Sun_Certified_Enterprise_Architect');" >SCEA</a>) certification. The certification is given after passing three exams: a basic online multiple-choice exam on JEE Technologies and design patterns, an  assignment with an architecture of a sample use-case and, finally, an online exam with questions about the assignment.<span id="more-414"></span></p>
<p>In comparison to other Sun Certifications, this one is not focusing on a test of how good you learn the API of a JEE Specification. The theory questions aim to test a general understanding of the JEE technologies, their usage areas and their purpose. There are also some questions testing your understanding of the advantages and caveats of JEE Stack. In general it was not very difficult &#8211; I spend several days on preparation and got my 89% (you only need 57% to pass).</p>
<p>The assignment part is pretty interesting. You have to submit a document describing the architecture of the system under development, which contains a set of UML 2 diagrams (class, sequence, deployment, use case). This part is a good excersize for any architect. In addition, you have to identify the main three threats and describe mitigation strategies for them. I found this part interesting, since I noticed that I&#8217;m usually not doing it on such level of detail, but judge about the risks based on my own experience. The second and the third parts are evaluated together. You can get at most 160 points and need 114 to pass (71%). I spend almost a week every evening for creation of the assignment and was happy of getting 140 point (87%).</p>
<blockquote><p>You are among the elite 1% of certified Java professionals who have gone on to achieve the Java Enterprise Architect certification.&#8221;</p></blockquote>
<p> That&#8217;s really funny.</p>
<p>At any rate, I enjoyed the preparation time, the exams and I&#8217;m glad about the result.</p>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2011/10/jee5-sun-certified-enterprise-architect/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Wiederverwendung bei SOA: Erfolgsfaktoren und Best Practices</title>
		<link>http://simon.zambrovski.org/2011/09/wiederverwendung_soa/</link>
		<comments>http://simon.zambrovski.org/2011/09/wiederverwendung_soa/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 20:11:51 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[software engineering]]></category>
		<category><![CDATA[OBJEKTspektrum]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[reuse]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=408</guid>
		<description><![CDATA[Die Ausgabe 05/2011 des OBJEKTspektrum Magazins mit dem Titelthema Wiederverwendung heute hat ein Artikel &#8220;Wiederverwendung bei SOA: Erfolgsfaktoren und Best Practices&#8221; von meinem Kollegen Stefan Zilske und mir publiziert. Bei der Einführung von Serviceorientierten Architekturen (SOAs) ist Wiederverwendung nur eines von vielen Zielen, die miteinander um Priorität konkurrieren. Wiederverwendung erreicht man also keinesfalls allein durch [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://simon.zambrovski.org/wp-content/uploads/2011/09/OBJEKTspektrum_5-20112.jpg" alt="" title="OBJEKTspektrum_5-20112" width="165" height="230" style="margin:10px; float:left;" /><br />
Die 
<a  href="http://www.sigs-datacom.de/fachzeitschriften/objektspektrum/aktuelle-ausgabe.html?tx_mwjournals_pi1[pointer]=0&#038;tx_mwjournals_pi1[mode]=1&#038;tx_mwjournals_pi1[showUid]=6941" onclick="javascript:pageTracker._trackPageview('/external/www.sigs-datacom.de/fachzeitschriften/objektspektrum/aktuelle-ausgabe.html');" >Ausgabe 05/2011 des OBJEKTspektrum</a> Magazins mit dem Titelthema Wiederverwendung heute hat ein Artikel &#8220;Wiederverwendung bei SOA: Erfolgsfaktoren und Best Practices&#8221; von meinem Kollegen 
<a  href="http://blog.holisticon.de/2011/08/wiederverwendung-bei-soa-erfolgsfaktoren-und-practices/" onclick="javascript:pageTracker._trackPageview('/external/blog.holisticon.de/2011/08/wiederverwendung-bei-soa-erfolgsfaktoren-und-practices/');" >Stefan Zilske</a> und mir publiziert. </p>
<p>Bei der Einführung von Serviceorientierten Architekturen (SOAs) ist Wiederverwendung nur eines von vielen Zielen, die miteinander um Priorität konkurrieren. Wiederverwendung erreicht man also keinesfalls allein durch die Wahl einer entsprechenden technischen Platt form, sondern nur in Verbindung mit vielen Entscheidungen auf organisatorischer Ebene. In diesem Artikel wollen wir die aus unseren Erfahrungen wichtigsten Vorgehensweisen und Erfolgsfaktoren beschreiben, die bei der Erreichung einer hohen Wiederverwendung innerhalb einer SOA kritisch oder hilfreich sind.</p>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2011/09/wiederverwendung_soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Black Belt Factory</title>
		<link>http://simon.zambrovski.org/2011/08/black-belt-factory/</link>
		<comments>http://simon.zambrovski.org/2011/08/black-belt-factory/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 23:34:43 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[black belt factory]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[e-learning]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=398</guid>
		<description><![CDATA[Around two months ago, I noticed a status change on the profile of a friend telling that he achieved a brown belt at BlackBeltFactory.com. I was interested and found out that BlackBeltFactory is the successor of the JavaBlackBelt. The site has been relaunched with many new offers. Let me introduce the site and tell why [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://simon.zambrovski.org/wp-content/uploads/2011/08/black_belt.png" alt="" title="black_belt" width="230" height="269" style="float:right; margin:10px;" /><br />
Around two months ago, I noticed a status change on the profile of a friend telling that he achieved a brown belt at BlackBeltFactory.com. I was interested and found out that 
<a  href="http://www.blackbeltfactory.com/" onclick="javascript:pageTracker._trackPageview('/external/www.blackbeltfactory.com/');" >BlackBeltFactory</a> is the successor of the JavaBlackBelt. The site has been relaunched with many new offers. Let me introduce the site and tell why I liked it so much. <span id="more-398"></span></p>
<p>The main idea of the BlackBeltFactory is to create an e-learning platform around computer engineering skills. The site provides so-called courses and workshops: real educational content to different subjects. In order to access the course material, you not only need the account at the site, but should also have a coach, helping you to consume the material. If you get one (I&#8217;ll tell you later how this works), you can study the content and solve excersises. On any questions you can contact the coach who is intended to help you, usually via skype or email.</p>
<p>Once you are done with studying &#8211; you should test yourself by registering to an exam. An exam is a set of online multiple-choice questions. In order to pass exams, you also require some contribution points. You get contribution points for any kind of community activity: connect you status update with twitter, edit questions, post comments, translate course materials &#8211; everything you do for the site and community gives you contribution points. In addition, you can create groups and invite people into them.</p>
<p>Every passed exam gives you some knowlegde points. For a number of knowlegde points earned, you get a belt. Belts have different colors: white, yellow, orange, green, blue, brown and finally black. For the black belt you not only need enough knowlegde points, but also have to be a successful coach for two other students, which means that they have to pass the exams and give you feedback.</p>
<p>After you get a blackbelt, you may offer coaching for money. You give 20$ + 15% of the coaching proce to BlackBeltFactory, but I suppose this is fair enough. The site gives you a possibility to create coaching offers (free or paid) and manage the students, who are looking for the coaches &#8211; a real e-learning marketplace.</p>
<p>I had an idea to 
<a  href="http://www.blackbeltfactory.com/ui#!User/zambrovski" onclick="javascript:pageTracker._trackPageview('/external/www.blackbeltfactory.com/ui?!User/zambrovski');" >get the black belt</a> by passing exams of subject I think I&#8217;m expert in, without taking all the courses. It turned out, that the exam questions are pretty good &#8211; you easily pass the subject you are good in, but you ultimatively fail in subjects where you have knowledge gaps. Another problem you face is the lack of contribution points. For this purpose, there exist a so-called belt track, a series of exams in which passing an exam enables the next one without spending contribution points. The exams are predefined but cover basic Java, OO, XML and Web technolgoies, so I could use the track to achieve the blackbelt quickly.</p>
<p>I like the site because I have the possibility to test my knowledge. The tests are not trivial, but reveales subjects you should deepen. On the other hand the site lives from the contributions. You can do anything &#8211; from commenting bad exam question to designing new questions, exams, courses &#8211; whatever. I also liked the education part, where you have to teach a Java fundamental course for free. That&#8217;s not trivial if a person you teach really starts from scratch, but very interesting and challenging. I also like the fact that you can do a lot without paying money &#8211; very good business model.</p>
<p>Sometimes, the site shows strange behaviour, but you can ever finish your work. At some places the site seems to be not following its own styleguide and look&#038;feel, but these are details. I&#8217;m a big fan of BlackBeltFactory.</p>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2011/08/black-belt-factory/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nordic Coding Spring 2011</title>
		<link>http://simon.zambrovski.org/2011/04/nordic-coding-spring-2011/</link>
		<comments>http://simon.zambrovski.org/2011/04/nordic-coding-spring-2011/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 09:04:26 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[mdsd]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[Kiel]]></category>
		<category><![CDATA[Nordic Coding]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=379</guid>
		<description><![CDATA[Last friday I was visiting the Nordic Coding event in Kiel, in Northern Germany. The event was a nice unwinder with three promiment speakers: Martin Lippert, Jan Köhnlein and Ralf Ebert. Moderated by Sven Efftinge from itemis the event was a full success with neary 50 visitors. After three talks, we relaxed by some finger [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://farm6.static.flickr.com/5310/5636139852_f5f0164d42_d.jpg" title="Sven Efftinge" class="alignnone" width="500" height="333" /><br />
Last friday I was visiting the 
<a  href="http://www.diwish.de/index.php?id=292" onclick="javascript:pageTracker._trackPageview('/external/www.diwish.de/index.php');" >Nordic Coding</a> event in Kiel, in Northern Germany. The event was a nice unwinder with three promiment speakers: Martin Lippert, Jan Köhnlein and Ralf Ebert. Moderated by 
<a  href="http://blog.efftinge.de/" onclick="javascript:pageTracker._trackPageview('/external/blog.efftinge.de/');" >Sven Efftinge</a> from 
<a  href="http://www.itemis.de/" onclick="javascript:pageTracker._trackPageview('/external/www.itemis.de/');" >itemis</a> the event was a full success with neary 50 visitors. After three talks, we relaxed by some finger food and a cold beer sposnoserd by DiWiSH and itemis.</p>
<p><img alt="" src="http://farm6.static.flickr.com/5265/5635564249_0aeccd01fd.jpg" title="Martin Lippert" class="alignnone" width="500" height="333" /><br />

<a  href="http://martinlippert.blogspot.com/2011/04/slides-from-nordic-coding-talk.html" onclick="javascript:pageTracker._trackPageview('/external/martinlippert.blogspot.com/2011/04/slides-from-nordic-coding-talk.html');" >Martin told about</a> the OSGi technology and the usage of it in big projects. He advertised the OSGi module system but also pointed on some pitfalls during design of the architecture. I was a little dissapointed, since it was a kind of entry-level talk, and its main emphasis was to recollect the importance of the service-oriented principle during system design. He pointed out the importance of loosly coupling and implicit dependency which foster maintainability of the system for many years. In the same time the fulfillment ofsuch architectural principles does not come for free.</p>
<p><img alt="" src="http://farm6.static.flickr.com/5302/5636148242_17136172f6.jpg" title="Jan Köhnlein" class="alignnone" width="500" height="333" /><br />

<a  href="http://koehnlein.blogspot.com/2011/04/eclipsecon-2011-slides.html" onclick="javascript:pageTracker._trackPageview('/external/koehnlein.blogspot.com/2011/04/eclipsecon-2011-slides.html');" >Jan Köhnlein made a talk</a> on DSLs in general and Xtext 2.0 in particular. The guys from itemis did a nice job in developing 
<a  href="http://blog.efftinge.de/2010/09/xbase-new-programming-language.html" onclick="javascript:pageTracker._trackPageview('/external/blog.efftinge.de/2010/09/xbase-new-programming-language.html');" >Xbase</a>, a new language which can be used inside of the user DSL. For me, it is a huge step towards ubiquitous application of DSLs in software projects. Xbase give the ability to specify behaviour inside of DSLs. It is statically typed, compiles to Java, supports closures and type inference, operator overloading, etc.. &#8211; many nice features to use a little more functional programming language features in your DSL. Especially the ability to mix Java Types with Types defined in your DSL in combination with higher-order functions seems very powerfull to me.</p>
<p><img alt="" src="http://farm6.static.flickr.com/5147/5635575239_ef70435c89.jpg" title="Ralf Ebert" class="alignnone" width="500" height="333" /><br />
Finally, 
<a  href="http://www.ralfebert.de/" onclick="javascript:pageTracker._trackPageview('/external/www.ralfebert.de/');" >Ralf Ebert</a> made a very decent presentation on Git &#8211; the popular distributed versioning system. I am a big fan of Git and use it for many things i develop and saw many different presentation on those &#8211; but Ralf&#8217;s was the best one. He explained very plastically the difference in usage of Git to other versioning systems like SVN or CVS. He also showed a nice demo by showing some interesting branching and merging scenarios by switching between two users (Alice and Bob) on his machine and developing a simple web application. It was fast, precise and understandable &#8211; very nice talk.</p>
<p>The next Nordic Coding is planned for the August 19th, 2011.<br />
<img alt="" src="http://farm6.static.flickr.com/5102/5636150850_c1743cabc8.jpg" title="Nordic Coding 2011" class="alignnone" width="500" height="168" /><br />
More pictures in 
<a  href="http://www.flickr.com/photos/sza/sets/72157626535012970/" onclick="javascript:pageTracker._trackPageview('/external/www.flickr.com/photos/sza/sets/72157626535012970/');" >my FlickR set&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2011/04/nordic-coding-spring-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Publishing on Bean Validation</title>
		<link>http://simon.zambrovski.org/2011/03/publishing-on-bean-validation/</link>
		<comments>http://simon.zambrovski.org/2011/03/publishing-on-bean-validation/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 09:13:38 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[bean validation]]></category>
		<category><![CDATA[Interceptor]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[jsr-303]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=368</guid>
		<description><![CDATA[As announced previously, the current Java Magazine 04/2011 (a German Java journal) contains an article written by my collegue Oliver Ochs and me on Bean Validation with JSR-303. The article discusses possibilities of usage of the JSR-303 standard beyond its standard scope of JEE 6. Among covered topics are validation on the service boundary, integration [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://simon.zambrovski.org/wp-content/uploads/2011/03/JM4.jpg" alt="" title="JM4" width="200" height="283" style="float:right; margin:10px;" /> As announced 
<a  href="http://simon.zambrovski.org/2011/02/bean-validation-everywhere/">previously</a>, the 
<a  href="http://it-republik.de/jaxenter/java-magazin-ausgaben/Contexts-and-Dependency-Injection-000438.html" onclick="javascript:pageTracker._trackPageview('/external/it-republik.de/jaxenter/java-magazin-ausgaben/Contexts-and-Dependency-Injection-000438.html');" >current Java Magazine 04/2011</a> (a German Java journal) contains an article written by my collegue 
<a  href="http://blog.holisticon.de/2011/03/artikel-tuersteher-fuer-bohnen/" onclick="javascript:pageTracker._trackPageview('/external/blog.holisticon.de/2011/03/artikel-tuersteher-fuer-bohnen/');" >Oliver Ochs and me</a> on Bean Validation with JSR-303. The article discusses possibilities of usage of the JSR-303 standard beyond its standard scope of JEE 6. Among covered topics are validation on the service boundary, integration with Spring and bean validation, usage of validation group for context-aware validation and others&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2011/03/publishing-on-bean-validation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bean Validation Everywhere</title>
		<link>http://simon.zambrovski.org/2011/02/bean-validation-everywhere/</link>
		<comments>http://simon.zambrovski.org/2011/02/bean-validation-everywhere/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 22:37:33 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[event]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[bean validation]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[jsr-303]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=359</guid>
		<description><![CDATA[I&#8217;m somehow running an extended advertisment campaign on Java Bean Validation (JSR-303). I just posted about it on TechJava, presented on an IT-Talk by ConceptPeople and wrote an article which will be posted in the upcomming Java Magazin. The slides of the presentation are available on the slideshare: Türsteher für Bohnen View more presentations from [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m somehow running an extended advertisment campaign on Java Bean Validation (JSR-303). I just posted about 
<a  href="http://www.techjava.de/topics/2011/02/validating-jface-databinding-jsr-303/" onclick="javascript:pageTracker._trackPageview('/external/www.techjava.de/topics/2011/02/validating-jface-databinding-jsr-303/');" >it on TechJava</a>, presented 
<a  href="http://blog.holisticon.de/2011/02/it-talk-tursteher-fur-bohnen-jsr-303-bei-conceptpeople/" onclick="javascript:pageTracker._trackPageview('/external/blog.holisticon.de/2011/02/it-talk-tursteher-fur-bohnen-jsr-303-bei-conceptpeople/');" >on an IT-Talk by ConceptPeople</a> and wrote an article which will be posted in the upcomming 
<a  href="http://it-republik.de/jaxenter/java-magazin-ausgaben/" onclick="javascript:pageTracker._trackPageview('/external/it-republik.de/jaxenter/java-magazin-ausgaben/');" >Java Magazin</a>. The slides of the presentation are available on the slideshare:</p>
<div style="width:425px" id="__ss_6867951"><strong style="display:block;margin:12px 0 4px">
<a  href="http://www.slideshare.net/zambrovski/trsteher-fr-bohnen" title="Türsteher für Bohnen" onclick="javascript:pageTracker._trackPageview('/external/www.slideshare.net/zambrovski/trsteher-fr-bohnen');" >Türsteher für Bohnen</a></strong><object id="__sse6867951" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=trsteherfrbohnen-110209161746-phpapp02&#038;stripped_title=trsteher-fr-bohnen&#038;userName=zambrovski" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse6867951" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=trsteherfrbohnen-110209161746-phpapp02&#038;stripped_title=trsteher-fr-bohnen&#038;userName=zambrovski" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more 
<a  href="http://www.slideshare.net/" onclick="javascript:pageTracker._trackPageview('/external/www.slideshare.net/');" >presentations</a> from 
<a  href="http://www.slideshare.net/zambrovski" onclick="javascript:pageTracker._trackPageview('/external/www.slideshare.net/zambrovski');" >zambrovski</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2011/02/bean-validation-everywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Packaging Eclipse-based RCP</title>
		<link>http://simon.zambrovski.org/2009/07/packaging-eclipse-based-rcp/</link>
		<comments>http://simon.zambrovski.org/2009/07/packaging-eclipse-based-rcp/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 20:57:49 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[enterprise systems]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[plug ins]]></category>
		<category><![CDATA[RCP]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=217</guid>
		<description><![CDATA[Just posted an article on packaging of RCP application on TechJava. I wanted to include more enterprise systems-related stuff in it, but somehow it is more about general RCP packaging. The main difference between standard packaging and the one described is the fact that the additional feature with framework plug-ins is used. At any rate, [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://www.techjava.de/wp-content/uploads/packaging.jpg" title="Packaging" style="margin:5px; float:left;" width="120" height="120" />Just posted an article on 
<a  href="http://www.techjava.de/topics/2009/06/packaging-eclipse-based-rcp-for-the-use-in-enterprise-context/" onclick="javascript:pageTracker._trackPageview('/external/www.techjava.de/topics/2009/06/packaging-eclipse-based-rcp-for-the-use-in-enterprise-context/');" >packaging of RCP application on TechJava</a>. I wanted to include more enterprise systems-related stuff in it, but somehow it is more about general RCP packaging. The main difference between standard packaging and the one described is the fact that the additional feature with framework plug-ins is used. At any rate, have a look on it&#8230; By the way, the TechJava blog is now aggregated in 
<a  href="http://www.planeteclipse.org/planet/" onclick="javascript:pageTracker._trackPageview('/external/www.planeteclipse.org/planet/');" >PlanetEclipse</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2009/07/packaging-eclipse-based-rcp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Common Navigator Framework</title>
		<link>http://simon.zambrovski.org/2009/04/eclipse-common-navigator-framework/</link>
		<comments>http://simon.zambrovski.org/2009/04/eclipse-common-navigator-framework/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 04:45:21 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[cnf]]></category>
		<category><![CDATA[common navigator framework]]></category>
		<category><![CDATA[content provider]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[non-resource]]></category>
		<category><![CDATA[platform]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=193</guid>
		<description><![CDATA[Just finished to correct mistakes (thanks to Francis) in the article I posted about the usage of the Common Navigator Framework (CNF). In doing so the article incorporates the information already covered in different blogs, but also focuses on the specific use case of providing a view of data structure completely unrelated to the Eclipse [...]]]></description>
			<content:encoded><![CDATA[<p>
<a  href="http://www.flickr.com/photos/mikebaird/3009401040/" onclick="javascript:pageTracker._trackPageview('/external/www.flickr.com/photos/mikebaird/3009401040/');" ><img style="margin: 10px; float:right;" title="Michael “Mike” L. Baird, http://bairdphotos.com/" src="http://www.techjava.de/wp-content/uploads/compas.jpg" alt="Michael “Mike” L. Baird, http://bairdphotos.com/" width="240" height="160" /></a><br />
Just finished to correct mistakes (thanks to 
<a  href="http://dev.eclipse.org/blogs/francis/" onclick="javascript:pageTracker._trackPageview('/external/dev.eclipse.org/blogs/francis/');" >Francis</a>) in 
<a  href="http://www.techjava.de/topics/2009/04/eclipse-common-navigator-framework/" onclick="javascript:pageTracker._trackPageview('/external/www.techjava.de/topics/2009/04/eclipse-common-navigator-framework/');" >the article I posted</a> about the usage of the Common Navigator Framework (CNF). In doing so the article incorporates the information already covered in different blogs, but also focuses on the specific use case of providing a view of data structure completely unrelated to the Eclipse platform resources. So the aim is not to add some content to the &#8220;Project Explorer&#8221; which is an example of resource-oriented CNF usage, but to provide a view on a completely own data model. This post fostered some communication with Francis regarding the CNF documentation provided in Eclipse, so I&#8217;m happy if my contributions can be valuable. As usual, this kind of content goes to 
<a  href="http://www.techjava.de/" onclick="javascript:pageTracker._trackPageview('/external/www.techjava.de/');" >TechJava&#8230;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2009/04/eclipse-common-navigator-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools for TLA+</title>
		<link>http://simon.zambrovski.org/2009/02/tools-for-tla/</link>
		<comments>http://simon.zambrovski.org/2009/02/tools-for-tla/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 07:16:04 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[software engineering]]></category>
		<category><![CDATA[tla+]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[leslie lamport]]></category>
		<category><![CDATA[sany]]></category>
		<category><![CDATA[tlatex]]></category>
		<category><![CDATA[tlc]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=151</guid>
		<description><![CDATA[As mentioned in the previous post on Fowlers DSL example,there are some tools available for the TLA+ specification language. In the following a short overview of currently available tools for TLA+ is given. The described tools are and are part of the TLA+ toolset available from the website. SANY &#8211; Syntax Analyser for TLA+ specifications [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin-left: 10px; margin-bottom: 10px; float:right;" title="werkzeug_small" src="http://simon.zambrovski.org/wp-content/uploads/2009/02/werkzeug_small.jpg" alt="werkzeug_small" width="200" height="162" />As mentioned in the 
<a  href="http://simon.zambrovski.org/2009/02/fowler%e2%80%99s-dsl-example-with-tla/">previous post</a> on 
<a  href="http://martinfowler.com/dslwip/Intro.html#TheStateMachineFramework" onclick="javascript:pageTracker._trackPageview('/external/martinfowler.com/dslwip/Intro.html?TheStateMachineFramework');" >Fowlers DSL example</a>,there are some tools available for the TLA+ specification language. In the following a short overview of currently available tools for TLA+ is given. The described tools are and are part of the TLA+ toolset available from the 
<a  href="http://research.microsoft.com/en-us/um/people/lamport/tla/tools.html" onclick="javascript:pageTracker._trackPageview('/external/research.microsoft.com/en-us/um/people/lamport/tla/tools.html');" >website</a>.</p>
<ul>
<li><strong>SANY</strong> &#8211; Syntax Analyser for TLA+ specifications</li>
<li><strong>TLC</strong> &#8211; A modelchecker / simulator for TLA+ specifications</li>
<li><strong>TLATeX</strong> &#8211; LaTeX typesetter for TLA+</li>
</ul>
<p>The <strong>PCal Translator</strong> is not covered in this post and will be introduced in a separate post, together with PCal language.</p>
<h2>SANY</h2>
<p>SANY is a syntax analyser for the TLA+ language. The purpose of it is to check the syntax of the specifications (including some static semantics) and provide the errors to the user. As all of the TLA+ Tools currently available, SANY is a command line tool and reports the errors back to the console. In fact SANY is a front-end of the compiler (lexer, parser, semantic analyser). In order to invoke it call:</p>
<pre class="brush: bash; title: ; notranslate">
java -cp %TLA_CLASSPATH% tla2sany.SANY fowler.tla
</pre>
<p>SANY is currently the only official way to find out, if the specification complies to the rules of the TLA+ language. It is absolutely a non-trivial program, basically because of the complexity of the TLA+ grammar. Especially, the parts responsible for precedence-checking and level-checking are use complex algorithms.</p>
<h2>TLATeX</h2>
<p>As noticed by 
<a  href="http://www.peterfriese.de/" onclick="javascript:pageTracker._trackPageview('/external/www.peterfriese.de/');" >Peter</a>, the language has a special notation, which could appear cryptic to someone who see them for the first time. The reason for this is pretty simple: TLA+ is a mathematical language and the ASCII version TLA+ is very close to LaTeX notation of the corresponding mathematical symbols. Everyone, who is aware of LaTeX can read and write TLA+ easily. For others, the ASCII specification can be translated into a TeX file and rendered to a DVI, PS or PDF. A piece of specification of the secret compartment (
<a  href="http://simon.zambrovski.org/wp-content/uploads/2009/02/fowler.tla">download full TLA file</a>), looks as follows rendered as PDF (
<a  href="http://simon.zambrovski.org/wp-content/uploads/2009/02/fowler.pdf" onclick="javascript:pageTracker._trackPageview('/downloads/wp-content/uploads/2009/02/fowler.pdf');" >download as PDF</a>).<br />
<img style="margin: 10px 30px;" title="rendered_tla" src="http://simon.zambrovski.org/wp-content/uploads/2009/02/rendered_tla.png" alt="rendered_tla" width="393" height="346" /><br />
The question of WYSIWYG editor support involves not only rendering of the symbols (that is the easiest part), but the input of these symbols by the user. Therefor, the ASCII version of TLA (we could also speak about ASCII encoding), which uses at least in certain areas know LaTeX-like encoding is a convenient way for editing specs. There are attempts to create WYSIWYG formula editors, which work pretty good, but the these have to be used with a mouse and the input speed is not comparable with the typing plain LaTeX. </p>
<p>The usage of TLATeX is simple. After the installation of TLA Tools, the TLATeX is invoked from the command line:</p>
<pre class="brush: bash; title: ; notranslate">
java -cp %TLA_CLASSPATH% tla2tex.TLA -shade fowler.tla
</pre>
<p>The tool produces a .tex file which can be included in the existing document. It also can be rendered directly if LaTeX is installed on machine.</p>
<h2>TLC</h2>
<p>TLC is a model checker for TLA+ specifications. It&#8217;s main purpose is to find bugs in specifications. For this purpose it creates the state-space described in the specification and checks the properties (safety and liveness). In contrast to SANY which is responsible for syntax and static semantics check TLC is checking the dynamic semantics of the specification. At this point  I only want to mention, how TLC is invoked. I&#8217;ll cover some advanced TLC topics in the later posts:</p>
<pre class="brush: bash; title: ; notranslate">
java -cp %TLA_CLASSPATH% tlc2.TLC fowler.tla
</pre>
<p>In addition to the TLA file, containing the specification itself, TLC requires a CFG file, which describes the model, that has to be checked. This fact appears unusual to the TLA beginners, but is easy to clarify. The specification of the system is a description of systems behavior. To a given behavior, several models can be constructed. In addition, specifications can be combined resulting in bigger specifications. In the specification, there are no real differencies between actions: (<code>Init</code>, <code>TypeInv</code>, <code>CloseDoor</code> or <code>Spec</code>). Thus, the user has to specify which of these actions are actulally the parts to check.</p>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2009/02/tools-for-tla/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fowler’s DSL example with TLA+</title>
		<link>http://simon.zambrovski.org/2009/02/fowler%e2%80%99s-dsl-example-with-tla/</link>
		<comments>http://simon.zambrovski.org/2009/02/fowler%e2%80%99s-dsl-example-with-tla/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 07:37:36 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[tla+]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[fowler]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[modeling]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://simon.zambrovski.org/?p=112</guid>
		<description><![CDATA[It seems to be popular to write Fowler&#8217;s DSL in all languages. I follow this idea and start a series of posts on TLA+ with Fowlers state-machine example coded in TLA+. TLA+ is a specification language developed by Leslie Lamport.  TLA+ is based on Temporal Logic of Actions, which combines logic of actions (denoting the [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 10px; float: left;" title="secret" src="http://simon.zambrovski.org/wp-content/uploads/2009/02/secret.jpg" alt="secret" width="150" height="150" />It seems to be 
<a  href="http://startbigthinksmall.wordpress.com/2008/11/26/fowlers-dsl-example-with-mgrammar-draft/" onclick="javascript:pageTracker._trackPageview('/external/startbigthinksmall.wordpress.com/2008/11/26/fowlers-dsl-example-with-mgrammar-draft/');" >popular</a> to write Fowler&#8217;s DSL in all languages. I follow this idea and start a series of posts on TLA+ with 
<a  href="http://martinfowler.com/dslwip/Intro.html#TheStateMachineFramework" target="_blank" onclick="javascript:pageTracker._trackPageview('/external/martinfowler.com/dslwip/Intro.html?TheStateMachineFramework');" >Fowlers state-machine example</a> coded in TLA+. 
<a  href="http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html" onclick="javascript:pageTracker._trackPageview('/external/research.microsoft.com/en-us/um/people/lamport/tla/tla.html');" >TLA+</a> is a specification language developed by 
<a  href="http://www.lamport.org/" onclick="javascript:pageTracker._trackPageview('/external/www.lamport.org/');" >Leslie Lamport</a>.  TLA+ is based on Temporal Logic of Actions, which combines logic of actions (denoting the state change of the system) with temporal operators. This specification language allows reasoning on dicrete systems and is quite powerful. It is even more intersting, that the language is equiped with a set of tools. The 
<a  href="http://research.microsoft.com/en-us/um/people/lamport/tla/tools.html" onclick="javascript:pageTracker._trackPageview('/external/research.microsoft.com/en-us/um/people/lamport/tla/tools.html');" >TLA+ Tools</a> include a Syntax Analyzer (SANY), a Simulator with Model Checker (TLC) and a pretty printer, for creating LaTeX-style representation of the source. The tools are implemented in Java and are published under MS-Research license. The source code of the tools is also available. Since TLA+ is developed by the father of LaTeX, its ASCII representation looks very similar to LaTeX, and is convenient for the input.</p>
<pre class="brush: bash; title: ; notranslate">
(* ************************************ *)
(* Controller of the secret compartment *)
(* of Mrs. H, who loves secrets!        *)
(* Following the example of M. Fowler,  *)
(* which can be found at:               *)
(* http://martinfowler.com/             *)
(* ************************************ *)
------------- MODULE fowler --------------
(* ************************************ *)
(* Variables                            *)
(* ************************************ *)
VARIABLE
  state, \* the state for display, only
         \* to be compliant with  Fowler
  light, \* state of the light
  draw,  \* state of the draw
  panel, \* state of the secret panel
  door   \* state of the entry door

TypeInv ==
(* ************************************ *)
(* Type invariance                      *)
(* ************************************ *)
  /\ state \in { &quot;idle&quot;,
                 &quot;active&quot;,
                 &quot;waitingForDraw&quot;,
                 &quot;waitingForLight&quot;,
                 &quot;unlockedPanel&quot; }
  /\ light \in { &quot;on&quot;, &quot;off&quot; }
  /\ draw \in { &quot;opened&quot;, &quot;closed&quot; }
  /\ door \in { &quot;locked&quot;, &quot;unlocked&quot;}
  /\ panel \in { &quot;locked&quot;, &quot;unlocked&quot; }

Init ==
(* ************************************ *)
(* Initial state                        *)
(* ************************************ *)
  /\ state = &quot;idle&quot;
  /\ light = &quot;off&quot;
  /\ draw  = &quot;closed&quot;
  /\ door  = &quot;unlocked&quot;
  /\ panel = &quot;locked&quot;
------------------------------------------
(* ************************************ *)
(* Actions                              *)
(* Note that the state variable is not  *)
(* used for the determination of the    *)
(* actual state, but only for display.  *)
(* This shows that this variable        *)
(* is not required in TLA+              *)
(* ************************************ *)

CloseDoor ==
(* ************************************ *)
(* Closes the door, to activate         *)
(* ************************************ *)
  /\ door = &quot;unlocked&quot;
  /\ door' = &quot;locked&quot;
  /\ state' = &quot;active&quot;
  /\ UNCHANGED &lt;&lt; panel, light, draw &gt;&gt;

LightOn ==
(* ************************************ *)
(* Switch on the light, if the draw is  *)
(* opened, this opens the secret panel  *)
(* ************************************ *)
  /\ light = &quot;off&quot;
  /\ light' = &quot;on&quot;
  /\ IF draw = &quot;opened&quot; THEN
       /\ state' = &quot;unlockedPanel&quot;
	   /\ panel' = &quot;unlocked&quot;
	   /\ door' = &quot;locked&quot;
	 ELSE
	   /\ state' = &quot;waitingForDraw&quot;
	   /\ UNCHANGED &lt;&lt; panel, door &gt;&gt;
  /\ UNCHANGED &lt;&lt; draw &gt;&gt;

OpenDraw ==
(* ************************************ *)
(* Open the draw, if the light is on,   *)
(* this opens the secret panel          *)
(* ************************************ *)
  /\ draw = &quot;closed&quot;
  /\ draw' = &quot;opened&quot;
  /\ IF light = &quot;on&quot; THEN
       /\ state' = &quot;unlockedPanel&quot;
	   /\ panel' = &quot;unlocked&quot;
	   /\ door' = &quot;locked&quot;
	 ELSE
	   /\ state' = &quot;waitingForLight&quot;
	   /\ UNCHANGED &lt;&lt; panel, door &gt;&gt;
  /\ UNCHANGED &lt;&lt; light &gt;&gt;

ClosePanel ==
(* ************************************ *)
(* Closes the secret panel and move the *)
(* system to initial state              *)
(* ************************************ *)
  /\ panel = &quot;unlocked&quot;
  /\ panel' = &quot;locked&quot;
  /\ light' = &quot;off&quot;
  /\ draw' = &quot;closed&quot;
  /\ door' = &quot;unlocked&quot;
  /\ state' = &quot;idle&quot;
------------------------------------------
Next ==
(* ************************************ *)
(* All possible actions                 *)
(* ***********************************  *)
  \/ CloseDoor
  \/ LightOn
  \/ OpenDraw
  \/ ClosePanel

Spec == Init /\ [][Next]_&lt;&lt; panel, light,
  draw, door, state &gt;&gt;

THEOREM Spec =&gt; []TypeInv

Inv ==
(* ************************************ *)
(* The panel is never unlocked          *)
(* by opened door                       *)
(* ************************************ *)
  \/ panel = &quot;unlocked&quot; =&gt; door = &quot;locked&quot;
  \/ door = &quot;unlocked&quot; =&gt; panel = &quot;locked&quot;
==========================================
</pre>
<p>In order to run a model checker, the configuration file <strong>fowler.cfg</strong> needs to be created. It says which part of the model is the specification, and what should be checked. In the example above, the specification action is called <strong>Spec</strong> and states, that if the <strong>Init</strong> action is executed, the <strong>Next</strong> action can always be executed by allowing stuttering steps by changing values of the variables <strong>panel, light, draw, door and state</strong>. The actual property we want to check is the fact, that the compartment is really safe, which means that the secret panel can be unlocked if and only if the door is closed. This is stated in the property <strong>Inv</strong> which has to be an invariant property of the system.</p>
<pre class="brush: bash; title: ; notranslate">
SPECIFICATION   Spec
INVARIANT       Inv
</pre>
<p>Running TLC on this specification, with configuration file provided above produced the following output:</p>
<pre class="brush: bash; title: ; notranslate">
TLC2 Version 2.01 of February 23, 2008
Model-checking
Parsing file fowler.tla
Semantic processing of module fowler
Finished computing initial states: 1 distinct state generated.
Model checking completed. No error has been found.
Estimates of the probability that TLC did not check all reachable states
because two distinct states had the same fingerprint:
calculated (optimistic):  2.927345865710862E-18
based on the actual fingerprints:  1.2569902552401487E-14
15 states generated, 9 distinct states found, 0 states left on queue.
The depth of the complete state graph search is 3.
</pre>
<p>This means, that it reached all states with very high probability and checked in every state the required property.<br />
<strong>The compartment of Martin is safe! Modelchecked by TLC.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://simon.zambrovski.org/2009/02/fowler%e2%80%99s-dsl-example-with-tla/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

