<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://planeteclipse.org/planet/">
	<title>Planet Eclipse</title>
	<link>http://planeteclipse.org/planet/</link>
	<description>Planet Eclipse - http://planeteclipse.org/planet/</description>

	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="http://www.birt-exchange.org/blog/2009-11-23/birt-exchange-devshare-contest-winner-for-october-2009-selected/" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-7718517813545203760.post-2954714831423198165" />
			<rdf:li rdf:resource="http://eclipsesource.com/blogs/?p=3512" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-7718517813545203760.post-8771918346401065122" />
			<rdf:li rdf:resource="http://bryanhunt.wordpress.com/?p=315" />
			<rdf:li rdf:resource="http://eclipsesource.com/blogs/?p=3508" />
			<rdf:li rdf:resource="http://overholt.ca/wp/?p=139" />
			<rdf:li rdf:resource="http://aniszczyk.org/?p=1494" />
			<rdf:li rdf:resource="http://blog.balfes.net/?p=912" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-12783252.post-5066708076208927645" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-35738028.post-3462736858304393152" />
			<rdf:li rdf:resource="http://blog.balfes.net/?p=909" />
			<rdf:li rdf:resource="http://www.richclient2.eu/2009_11_23/building-reports-of-your-local-information-pool-with-birt-and-remus/" />
			<rdf:li rdf:resource="http://eclipsesource.com/blogs/?p=3501" />
			<rdf:li rdf:resource="http://weblogs.sdn.sap.com/pub/wlg/16815" />
			<rdf:li rdf:resource="http://eclipsesource.com/blogs/?p=3465" />
			<rdf:li rdf:resource="http://dev.eclipse.org/blogs/francis/?p=50" />
			<rdf:li rdf:resource="http://tomsondev.bestsolution.at/?p=673" />
			<rdf:li rdf:resource="http://abstratt.com/blog/?p=162" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-14521551.post-3462683361680323868" />
			<rdf:li rdf:resource="http://aniszczyk.org/?p=1481" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-5914783.post-3941216540037745332" />
			<rdf:li rdf:resource="http://eclipsesource.com/blogs/?p=3460" />
			<rdf:li rdf:resource="http://dev.eclipse.org/blogs/lynngo/?p=95" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-1593219853242657843.post-4570423038606026877" />
			<rdf:li rdf:resource="http://live.eclipse.org/837 at http://live.eclipse.org" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-16474715.post-4955735196306313291" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-12783252.post-6886376998106934619" />
			<rdf:li rdf:resource="http://www.vogella.de/blog/?p=1367" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-3691419744299351480.post-7590137065453054295" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-24248206.post-7646231212825894582" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-1585332946379204379.post-8663238745444109871" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-20358640.post-5881425678804664588" />
			<rdf:li rdf:resource="http://aniszczyk.org/?p=1376" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-6917071644715743308.post-5371046026962224841" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-12783252.post-5456379783086885266" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-29853730.post-2675674978664078192" />
			<rdf:li rdf:resource="http://manuelselva.wordpress.com/?p=272" />
			<rdf:li rdf:resource="http://www.vogella.de/blog/?p=1371" />
			<rdf:li rdf:resource="http://dev.eclipse.org/blogs/wayne/?p=897" />
			<rdf:li rdf:resource="http://tasktop.com/blog/?p=1236" />
			<rdf:li rdf:resource="http://blog.balfes.net/?p=906" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-8878360187292205236.post-6785913037209843729" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-8878360187292205236.post-6283811247034822539" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-8878360187292205236.post-5124483376104390592" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-9210566578097047576.post-3287136601858913109" />
			<rdf:li rdf:resource="http://www.vogella.de/blog/?p=1335" />
			<rdf:li rdf:resource="http://kthoms.wordpress.com/?p=103" />
			<rdf:li rdf:resource="http://www.eclipse4sl.org/blog/?p=181" />
			<rdf:li rdf:resource="http://eclipseblog.ostroukhovs.com/?p=94" />
			<rdf:li rdf:resource="http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XV8RU" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-6917071644715743308.post-3491164495678211552" />
			<rdf:li rdf:resource="http://kthoms.wordpress.com/?p=99" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-18490491.post-2268531304258897056" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-4252978514266184993.post-4738462156890690686" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-4740251930569090138.post-6304278081418042329" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-18361809.post-434200439345987255" />
			<rdf:li rdf:resource="http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XUBYJ" />
			<rdf:li rdf:resource="http://www.coconut-palm-software.com/the_new_visual_editor/doku.php?id=blog:speaking_at_chitown_scala_meeting" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-24248206.post-3181933089302874735" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="http://www.birt-exchange.org/blog/2009-11-23/birt-exchange-devshare-contest-winner-for-october-2009-selected/">
	<title>Virgil Dodson: BIRT Exchange DevShare Contest Winner for October 2009 Selected</title>
	<link>http://www.birt-exchange.org/blog/2009-11-23/birt-exchange-devshare-contest-winner-for-october-2009-selected/</link>
	<content:encoded>&lt;p&gt;The winner of the DevShare Contributor of the Month Contest for October 2009 is &lt;a href=&quot;http://www.birt-exchange.org/userinfo.php?uname=bappoo&quot; target=&quot;_blank&quot;&gt;Paul Bappoo&lt;/a&gt; for his contribution to BIRT Exchange titled: &lt;a href=&quot;http://www.birt-exchange.org/modules/wfdownloads/singlefile.php?cid=11&amp;amp;lid=1058&quot; target=&quot;_blank&quot;&gt;BIRT - A Newbies Perspective&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Paul said, “I wrote this brief introduction to BIRT from a new user’s perspective because I had been invited to the IBM Maximo UK and Ireland user group meeting and in return for the invitation I promised to “give something back” to the group, rather than simply turn up and use it as an opportunity to sell my Maximo financial systems integration services to the group members. When I saw the BIRT demonstration I was very impressed and having spoken to some of the group members, I realised that BIRT was new to them and that a review would be useful to the group. So often busy people have little time to invest in learning a new technology or product so I hoped to solve this problem by creating a simple, quick to read overview. It would seem, from the feedback I have received that I was successful in this endeavor.”&lt;/p&gt;
&lt;p&gt;Paul has been a software consultant for over 20 years and has always been interested in computers, technology and business. He has been using BIRT for the last couple months from the perspective of writing about it. He has not yet had the chance to use BIRT for any serious business applications, but expects that to change in the near future as more opportunities open up.&lt;/p&gt;
&lt;p&gt;Since creating his first BIRT report, Paul has written a number of guides, reviews and tutorials on BIRT and set up &lt;a href=&quot;http://birtreporting.com/&quot; target=&quot;_blank&quot;&gt;BirtReporting.com&lt;/a&gt; as a vehicle to bring this material to a wider audience. Paul says, “I have been astounded by the positive reaction to this site and by the help and support being offered by Actuate. This has been great fun for me so far so winning this competition is icing on the cake!”&lt;/p&gt;
&lt;p&gt;Paul chose an iPod for his award.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It’s not too late…&lt;/strong&gt; to get your own DevShare article posted in time for the next month’s contest which closes on November 30th. If you’ve cooked up something that you can share with the BIRT Exchange community, please &lt;a href=&quot;http://www.birt-exchange.org/devshare/submit/&quot; target=&quot;_blank&quot;&gt;post it soon!&lt;/a&gt; You can create a tutorial like Paul, build a BIRT application, template or component, or write up some of the tips and solutions to problems you’ve run into during the past – anything that’s helped you use BIRT more effectively will probably be useful to others too.  And don’t forget the &lt;a href=&quot;http://www.birt-exchange.com/be/marketplace/&quot; target=&quot;_blank&quot;&gt;BIRT Exchange Open Marketplace&lt;/a&gt;. A code-based DevShare submission could be a good candidate for the Marketplace as well.&lt;/p&gt;
&lt;p&gt;The monthly DevShare contest rules and list of previous winners can be found &lt;a href=&quot;http://www.birt-exchange.org/wiki/DevShare_Contributor_of_the_Month_Contest/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.
&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-23T22:38:27+00:00</dc:date>
	<dc:creator>rgans</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-7718517813545203760.post-2954714831423198165">
	<title>Del Myers: What is Reverse Engineering?</title>
	<link>http://delaltctrl.blogspot.com/2009/11/what-is-reverse-engineering.html</link>
	<content:encoded>&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;OK, so I've said that this blog is going to be about reverse engineering in Eclipse. That leads to the question: &quot;What, exactly, is reverse engineering?&quot;* The answer might be broader than a lot of people think.&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;A lot of people think that reverse engineering has to do with taking prebuilt software, running a decompilation process over it, and trying to copy the original software for personal gain. That can be some of reverse engineering, but it isn't the bulk of it. Academic literature on reverse engineering actually has very little to do with that.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;The reality is that most developers do some kind of reverse engineering all the time. Whenever we think to ourselves, &quot;I wonder how/why the program did that?&quot; we are asking a reverse engineering question. We are trying to figure out from a previously engineered system the reasons that it was written the way it was, and why it does what it does.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;I think that this has become a lot more common place with the boom of Open Source Software and great tools like Eclipse. Personally, if I want to find out what a piece of code like &lt;/span&gt;&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;StringBuilder.append()&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: georgia;&quot; class=&quot;Apple-style-span&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt;does, I'm just as likely to simply press &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt;F3&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt; in Eclipse and go read the code as I am to go off and read the API documentation. If I want to understand how to use class &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt;X&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt; in my software, I'm just as likely to use &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt;Ctrl-Shift-G&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt; and search for references for how other people have done it, as I am to search through mailing lists or, again, go to the documentation.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt;These are all microcosms of reverse engineering, and we developers do them all the time. But there are still some pain-points, and things that could be improved. One big thing is that we have gotten used to using debuggers to set breakpoints and step through problem code. But what do you do if you don't know where the problem code is, and so you can't set a breakpoint? That's where some more advanced techniques can come in handy. I'll dedicate my next post to one possible technique in Eclipse.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: arial;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;font-family: georgia;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;*Personal point of interest: many people would have said here &quot;That &lt;i&gt;begs&lt;/i&gt; the question...&quot;. I just thought that I'd add an &quot;educational&quot; note about that, because it is something that kind of gets to me when I read it. I did a minor degree in philosophy, and &lt;i&gt;begging the question&lt;/i&gt; is actually a logical fallacy in which a person tries to prove a proposition by making reference to the original assumptions. There is a common example that shows up when people try to market products:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. The best products are the ones that most people buy.&lt;/div&gt;&lt;div&gt;2. How can you be sure that they are the best?&lt;/div&gt;&lt;div&gt;3. Because the most people have bought them, of course!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step 3 assumes the axiom is statement 1, and so does not actually answer the question in statement 2. Statement 2 was questioning the validity of 1, and 3 tried to answer 2 by resorting to the assumption (1) which was in question (2). Hence &lt;i&gt;begging the question&lt;/i&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, in reality when people say &quot;That begs the question&quot;, they really mean &quot;That leads to the question&quot;. I just wanted to educate the masses.&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7718517813545203760-2954714831423198165?l=delaltctrl.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-23T22:18:29+00:00</dc:date>
	<dc:creator>Del</dc:creator>
</item>
<item rdf:about="http://eclipsesource.com/blogs/?p=3512">
	<title>Chris Aniszczyk: EclipseRT Usage</title>
	<link>http://eclipsesource.com/blogs/2009/11/23/rich-ajax-platform/</link>
	<content:encoded>&lt;p&gt;As an Eclipse committer, I love to see Eclipse technology used in a variety of places.&lt;/p&gt;
&lt;p&gt;Last week, at the &lt;a href=&quot;http://wiki.eclipse.org/EclipseRT_Day#Agenda&quot;&gt;EclipseRT Day&lt;/a&gt; in Austin, Austin Riddle and Cole Markham from the &lt;a href=&quot;http://tcat.tamu.edu/&quot;&gt;Texas Center of Applied Technology&lt;/a&gt; gave a presentation on how EclipseRT technology is used in emergency management and threat simulation scenarios.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wiki.eclipse.org/images/1/1f/EclipseRT-Austin-TCAT.pdf&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/tcat-300x199.png&quot; title=&quot;EclipseRT&quot; height=&quot;199&quot; width=&quot;300&quot; alt=&quot;EclipseRT&quot; class=&quot;alignnone size-medium wp-image-3513&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They get bonus points for a Movember reference in their slides.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/stache.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/stache-300x199.png&quot; title=&quot;eclipse 'stache&quot; height=&quot;199&quot; width=&quot;300&quot; alt=&quot;eclipse 'stache&quot; class=&quot;alignnone size-medium wp-image-3516&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They also had the coolest &lt;a href=&quot;http://www.eclipse.org/rap&quot;&gt;Rich Ajax Platform&lt;/a&gt; (RAP) usage I have ever seen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/rap1.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/rap1-258x300.png&quot; title=&quot;EclipseRT RAP&quot; height=&quot;300&quot; width=&quot;258&quot; alt=&quot;EclipseRT RAP&quot; class=&quot;alignnone size-medium wp-image-3514&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cover flow widgets, sweet!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/rap2.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/rap2-281x300.png&quot; title=&quot;rap2&quot; height=&quot;300&quot; width=&quot;281&quot; alt=&quot;rap2 281x300 EclipseRT Usage&quot; class=&quot;alignnone size-medium wp-image-3515&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cool huh? Feel free to browse the &lt;a href=&quot;http://wiki.eclipse.org/images/1/1f/EclipseRT-Austin-TCAT.pdf&quot;&gt;slides&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I encourage anyone else in the community that is working on cool stuff using Eclipse technology to tell your story if you can.&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-23T19:28:33+00:00</dc:date>
	<dc:creator>Chris Aniszczyk</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-7718517813545203760.post-8771918346401065122">
	<title>Del Myers: So here is what this blog is really about</title>
	<link>http://delaltctrl.blogspot.com/2009/11/so-here-is-what-this-blog-is-really.html</link>
	<content:encoded>Wow, I haven't really kept up with the whole blogging thing here. I just noticed that my last post was in March. I plan on trying to do better than that from now on.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, maybe I need to take this blog in a new direction, or in any direction really. So, here is my plan. I'm going to start blogging about my work with Eclipse more. I'm a masters student at the university of Victoria. I've been working for the past year on problems related to reverse engineering. The inspiration has really come from the fact that I worked for a while as a programmer, writing Java software. Everyone knows how much time is spent in debugging software, and just scanning over source code trying to figure out how things work. So, I got the opportunity in my research group here--the &lt;a href=&quot;http://www.thechiselgroup.org&quot;&gt;CHISEL lab&lt;/a&gt;--to do some work on figuring out how to make that sort of process easier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You may have heard a little bit about the CHISEL group. It's the group that &lt;a href=&quot;http://www.ianbull.com&quot;&gt;Ian Bull&lt;/a&gt; graduated from. We do quite a lot of work in Eclipse because it is such a nice free and open platform. Ian worked on the &lt;a href=&quot;http://www.eclipse.org/gef/zest/&quot;&gt;Zest&lt;/a&gt; project as part of his Phd. work. I was actually lucky enough to help him a little bit in the coding and design of that project--we are very cooperative in our group.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, long story short, I've been working on my own project in Eclipse called &lt;a href=&quot;http://diver.sf.net&quot;&gt;Diver&lt;/a&gt;.  It stands for Dynamic Interactive Views for Reverse Engineering (I know, the last two letters are reversed--I was trying to be clever). It's a set of views that makes use of Eclipse's powerful Java Development Tools, and makes it easy to apply some reverse engineering techniques to day-to-day programming tasks. I think that Eclipse is the perfect environment to get this kind of work running in because it is built on such a good plug-in platform. It has been quite easy, in the whole scheme of things, to get my ideas integrated into the Eclipse platform, and to make use of the many powerful components that have already been implemented. For example, to do some of my Java reverse engineering, I didn't have to implement my own parsers and indexers into source code: I could just use the JDT. It's been a great way to get started.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, here is where this blog is going to go: I'm going to start talking a bit more about my project and about how reverse engineering can be done in Eclipse in general, and about some of the challenges that I came across while trying to implement my solution. Hopefully it will be helpful to people out in the Eclipse community.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7718517813545203760-8771918346401065122?l=delaltctrl.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-23T19:27:53+00:00</dc:date>
	<dc:creator>Del</dc:creator>
</item>
<item rdf:about="http://bryanhunt.wordpress.com/?p=315">
	<title>Bryan Hunt: Updating Ensemble for Restlet 2.0 (license beware)</title>
	<link>http://bryanhunt.wordpress.com/2009/11/23/updating-ensemble-for-restlet-2-0-license-beware/</link>
	<content:encoded>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;I attended a tutorial at &lt;a href=&quot;http://www.eclipsecon.org&quot; target=&quot;_blank&quot;&gt;EclipseCon&lt;/a&gt; 2009 on &lt;a href=&quot;http://www.eclipsecon.org/2009/sessions?id=385&quot; target=&quot;_blank&quot;&gt;ReSTful OSGi Web Applications&lt;/a&gt; which was based on the Ensemble project at NASA and &lt;a href=&quot;http://www.restlet.org&quot; target=&quot;_blank&quot;&gt;Restlet&lt;/a&gt; 1.x.  I recently started looking at Restlet 2.0 and updated the Ensemble code to work with the new API, cleaned up a possible threading issue, and added an OSGi service for extensibility.  I was hoping to share these changes in this post, but the open source &lt;a href=&quot;https://www.openchannelsoftware.com/project/print_license.php?group_id=368&amp;amp;license_id=61&quot; target=&quot;_blank&quot;&gt;license&lt;/a&gt; under which the Ensemble code was released is too prohibitive (private, non-comercial, use only) for my use.  I had assumed that it was released under &lt;a href=&quot;http://www.eclipse.org/org/documents/epl-v10.php&quot; target=&quot;_blank&quot;&gt;EPL&lt;/a&gt;, and I was wrong.&lt;/p&gt;
&lt;p&gt;The functionality provided by the Ensemble code is rather simple.  It provides an Eclipse extension point for registering a Restlet representation.  It also has the ability to handle the dynamic nature of OSGi bundles allowing extensions to come and go during runtime.  It’s too bad my work was for not.  Fortunately, a colleague has agreed to attempt to reproduce this functionality, and since he has not seen the Ensemble source code, nor discussed it with me, he will be able to release his code under EPL.&lt;/p&gt;
&lt;p&gt;Lesson learned: Always check the license before looking at the source code.&lt;/p&gt;
  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/bryanhunt.wordpress.com/315/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/bryanhunt.wordpress.com/315/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/bryanhunt.wordpress.com/315/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/bryanhunt.wordpress.com/315/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/bryanhunt.wordpress.com/315/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/bryanhunt.wordpress.com/315/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/bryanhunt.wordpress.com/315/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/bryanhunt.wordpress.com/315/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/bryanhunt.wordpress.com/315/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/bryanhunt.wordpress.com/315/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=bryanhunt.wordpress.com&amp;amp;blog=7500940&amp;amp;post=315&amp;amp;subd=bryanhunt&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-23T18:21:58+00:00</dc:date>
	<dc:creator>bryanhunt</dc:creator>
</item>
<item rdf:about="http://eclipsesource.com/blogs/?p=3508">
	<title>Chris Aniszczyk: Simplifying the Equinox P2 User Interface</title>
	<link>http://eclipsesource.com/blogs/2009/11/23/simplifying-the-equinox-p2-user-interface/</link>
	<content:encoded>&lt;p&gt;I’m not sure if people &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=295273&quot;&gt;noticed&lt;/a&gt; this last week, but there’s been discussion of providing a simplified p2 ui by refactoring out the Mylyn discovery user interface and pushing it down the stack.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/mylyndiscoveryui.png&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/mylyndiscoveryui-246x300.png&quot; title=&quot;Equinox P2 UI&quot; height=&quot;300&quot; width=&quot;246&quot; alt=&quot;Equinox P2 UI&quot; class=&quot;alignnone size-medium wp-image-3509&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mik Kersten alluded to this in his &lt;a href=&quot;http://tasktop.com/blog/eclipse/growing-open-source-ecosystems-install&quot;&gt;blog entry&lt;/a&gt; last week, where having a simple discovery and install mechanism can help grow an ecosystem. I think this enhancement would alleviate a common problem RCP developers have when it comes to providing a simpler user interface for their users. p2 does a great job in offering you a set of APIs to do many things, but in most cases… the operations and user interface should be simple.&lt;/p&gt;
&lt;p&gt;If you’re interested, please provide feedback on this &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=295273&quot;&gt;bug&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-23T17:39:49+00:00</dc:date>
	<dc:creator>Chris Aniszczyk</dc:creator>
</item>
<item rdf:about="http://overholt.ca/wp/?p=139">
	<title>Andrew Overholt: Eclipse Linux Tools 0.4.0 Release</title>
	<link>http://overholt.ca/wp/?p=139</link>
	<content:encoded>&lt;p&gt;The Eclipse Linux Tools team is proud to announce our 0.4.0 release.  This release is compatible with the Galileo releases of the Eclipse SDK (version 3.5.x) and CDT (version 6.0.x). It is available now from our update site:&lt;br /&gt;
&lt;/p&gt;&lt;center&gt;&lt;br /&gt;
http://download.eclipse.org/technology/linuxtools/update&lt;br /&gt;
&lt;/center&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://wiki.eclipse.org/Linux_Tools_Project/PluginInstallHelp&quot;&gt;Installation instructions&lt;/a&gt; are available.  &lt;a href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;classification=Technology&amp;amp;product=Linux+Tools&amp;amp;target_milestone=0.4&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_file_loc=&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;status_whiteboard=&amp;amp;keywords_type=allwords&amp;amp;keywords=&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0&quot;&gt;101 bugs&lt;/a&gt; were closed as part of this release including bug fixes and new features. Highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the first release of our SystemTap-powered C/C++ call graph functionality&lt;br /&gt;
&lt;a href=&quot;http://www.eclipse.org/linuxtools/new-0.4/images-0.4/callgraph.png&quot;&gt;&lt;img src=&quot;http://overholt.ca/wp/wp-content/uploads/2009/11/callgraph-small.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.eclipse.org/linuxtools/new-0.4/images-0.4/callgraph-link.png&quot;&gt;&lt;img src=&quot;http://overholt.ca/wp/wp-content/uploads/2009/11/callgraph-small2.png&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GProf integration courtesy of Xavier Raynaud of ST Microelectronics&lt;br /&gt;
&lt;a href=&quot;http://www.eclipse.org/linuxtools/new-0.4/images-0.4/gprof-view.png&quot;&gt;&lt;img src=&quot;http://overholt.ca/wp/wp-content/uploads/2009/11/gprof-small.png&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;improvements to the scripts to build the Eclipse SDK and run the SDK tests&lt;/li&gt;
&lt;li&gt;a largely re-written GNU Autotools feature which more cleanly integrates with the CDT&lt;br /&gt;
&lt;img src=&quot;http://www.eclipse.org/linuxtools/new-0.4/images-0.4/autotools-newconfigure.png&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The full list of highlights can be see on our &lt;a href=&quot;http://eclipse.org/linuxtools/new&quot;&gt;new and noteworthy page&lt;/a&gt;. That page also contains a list of community contributions to our 0.4 release from the following excellent individuals: Benjamin Drung, Matthias Klose, Niels Thykier, Marvin Schmidt, Nick Boldt, Jens Seidel, Andrew Gvozdev, and PurpleFloyd. Thanks to all for their hard work and contributions. As usual, we very much appreciate feedback, be it &lt;a href=&quot;https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Linux%20Tools&quot;&gt;bugs&lt;/a&gt;, on IRC (Freenode #eclipse-linux), or on our &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/linuxtools-dev&quot;&gt;mailing list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Committers participating in this release include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Elliott Baron&lt;/li&gt;
&lt;li&gt;Roland Grunberg&lt;/li&gt;
&lt;li&gt;Jeff Johnston&lt;/li&gt;
&lt;li&gt;Alex Kurtakov&lt;/li&gt;
&lt;li&gt;Andrew Overholt&lt;/li&gt;
&lt;li&gt;Xavier Raynaud&lt;/li&gt;
&lt;li&gt;Charley Wang&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
	<dc:date>2009-11-23T15:57:53+00:00</dc:date>
	<dc:creator>andrew</dc:creator>
</item>
<item rdf:about="http://aniszczyk.org/?p=1494">
	<title>Chris Aniszczyk: Jigsaw Versioning is Ridiculous</title>
	<link>http://aniszczyk.org/2009/11/23/jigsaw-versioning-is-ridiculous/</link>
	<content:encoded>&lt;p&gt;There was some activity on the &lt;a href=&quot;http://altair.cs.oswego.edu/pipermail/jsr294-modularity-eg/2009-November/000390.html&quot;&gt;JSR 294 mailing list&lt;/a&gt; this morning. The Jigsaw team came down from the mountains and has informed us that…&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;javac can compile source files belonging to modules inferred from the&lt;br /&gt;
modulepath and will enforce full module-private accessibility Real Soon&lt;br /&gt;
Now. Long-standing issues with bootstrapping the JDK have also been&lt;br /&gt;
addressed, such that modularized JDK libraries are used properly and&lt;br /&gt;
early in the build.&lt;/p&gt;
&lt;p&gt;The libraries are modularized by mechanisms in the Jigsaw module system&lt;br /&gt;
including but not limited to recursive virtual modules, per-method&lt;br /&gt;
dependencies, packages split across modules, and &lt;b&gt;structured&lt;br /&gt;
arbitrary-length versions.&lt;/b&gt; Sun finds these mechanisms useful for&lt;br /&gt;
compatibly restructuring vanilla packages in the JDK, and believes they&lt;br /&gt;
are applicable to clients of the JDK also.&lt;/p&gt;
&lt;p&gt;Clearly, the Jigsaw model goes some way beyond “named and versioned&lt;br /&gt;
JARs”. How it overlaps with the OSGi model – designed for new, dynamic,&lt;br /&gt;
service-oriented applications – is not clear. Since both Jigsaw and OSGi&lt;br /&gt;
are defined in the first instance outside the JCP, it does not appear&lt;br /&gt;
that JSR 294 is well-positioned to define a module system that unifies&lt;br /&gt;
them. It would be a lowest-common-denominator design with&lt;br /&gt;
well-intentioned but irksome compromises. There has been no clear&lt;br /&gt;
support in the EG for the Simple Module System proposal, and I would&lt;br /&gt;
like to take it no further.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I just about stopped reading when I hit the “structured arbitrary-length versions” feature.&lt;/p&gt;
&lt;p&gt;I dug a bit deeper in the Jigsaw Javadoc to see what this means exactly…&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/jigsawversion.png&quot;&gt;&lt;img src=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/jigsawversion.png&quot; title=&quot;Jigsaw Version&quot; height=&quot;328&quot; width=&quot;522&quot; alt=&quot;Jigsaw Version&quot; class=&quot;alignnone size-full wp-image-1495&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nice… “Vaguely &lt;a href=&quot;http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version&quot;&gt;Debian-like&lt;/a&gt; version strings, for now.”&lt;/p&gt;
&lt;p&gt;I had my &lt;a href=&quot;http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/&quot;&gt;rant&lt;/a&gt; on software versioning in general last week… this is a terrible idea in my book. Maybe I’m just in a bad mood because my inbox is under attack by &lt;a href=&quot;http://en.wikipedia.org/wiki/Stephenie_Meyer&quot;&gt;Stephanie Meyer&lt;/a&gt; who happened to release a book with the same title as my favorite open source project. In module systems, version numbers should encode compatibility to keep us sane when developing and talking about things. Let me give you an example from OSGi land. Let’s say you’re writing an application and need to depend on log4j…&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Require-Bundle: org.apache.log4j&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You go to deploy your bundle and things work great. Your users are happy. Now you have a colleague take your bundle and deploy it into another system and you get a bunch of crazy exceptions. What happened? Well, first you didn’t specify a version range on your depending for log4j so basically your assumption is that your bundle would work with any version of log4j. At development time, you were using log4j 1.1 and the first system you were deploying to happened to use log4j 1.1 too. However, when your colleague went to reuse your bundle (since we can easily do that now since we have modules), things blow up because the system they went to deploy your bundle happened to have log4j 1.2… and the log4j development team &lt;em&gt;unknowingly&lt;/em&gt; broke binary compatibility with the new release. To fix this problem… you can simply scope your depending on log4j…&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Require-Bundle: org.apache.log4j;version=[1.1, 1.2)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Let’s use another example from OSGi land… commons collections. Let’s say you needed commons collections… you were developing with version 2.1 and you decided to be smart and scope you version range this time because you thought you learned your lesson.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Require-Bundle: org.apache.commons.collections;version=[2.1, 2.2)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next what happened was that the commons collections development team released version 3.0 and declared it to be binary compatible with the 2.1 version. The potential environments your bundle can be deployed to is limited based on the scoped dependency above… even though your bundle would work fine in an environment where the commons collections 3.0 version was floating around. The ability to reuse your bundle was reduced.&lt;/p&gt;
&lt;p&gt;The crux of the problem here is that you don’t know how to scope your version ranges and in particular… versions really don’t convey anything to you as a module developer. In OSGi land, there’s a four segment version and a mantra of encoding compatibility in your version number. Each segment of the version means something. To get a good idea of how to handle versioning on a large scale, we have a fantastic set of &lt;a href=&quot;http://wiki.eclipse.org/Version_Numbering&quot;&gt;guidelines&lt;/a&gt; regarding versioning bundles at Eclipse. If everyone followed the same set of versioning guidelines, you can properly setup your dependencies and as a developer, you immediately can see meaning between what you’re developing against and what you may consume in the future.&lt;/p&gt;
&lt;p&gt;My recommendation to the Jigsaw team would be to reconsider their stance on treating module versions like nothing. I would like to see binary compatibility encoding in version numbers and given the fact that Maven is moving to the OSGi versioning scheme… Jigsaw might as well also. It would be nice in Java if we had a consistent way to talk about the versions of software we develop for people to reuse.&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-23T15:36:15+00:00</dc:date>
	<dc:creator>Chris Aniszczyk</dc:creator>
</item>
<item rdf:about="http://blog.balfes.net/?p=912">
	<title>Bob Balfe: My iPhone saved me almost $60 yesterday!</title>
	<link>http://blog.balfes.net/?p=912</link>
	<content:encoded>&lt;p&gt;I went to &lt;a href=&quot;http://www.herbphilipsons.com/&quot;&gt;Herb Phillipsons&lt;/a&gt; to buy this jacket and it was $199.  I used my iPhone and the application called &lt;a href=&quot;http://redlaser.com/&quot;&gt;RedLaser&lt;/a&gt; to see if I could get the jacket cheaper on the internet.  Sure as heck, most of the sites on the internet sold it for the same price but there was one site, &lt;a href=&quot;http://www.backcountry.com/&quot;&gt;BackCountry.com&lt;/a&gt;, that had it for &lt;strong&gt;$159&lt;/strong&gt;!  With the Oneida county tax the jacket at Herbs would have been close to $220.  The order on BackCountry totalled $159.16 and will be here in 7-14 days.  I just got an email saying my order has shipped.&lt;/p&gt;



&lt;p class=&quot;technorati-tags&quot;&gt;technorati tags: &lt;a href=&quot;http://technorati.com/tag/BackCountry.com&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;BackCountry.com&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/iPhone&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;iPhone&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/RedLaser&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;RedLaser&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-23T15:25:58+00:00</dc:date>
	<dc:creator>Bob Balfe</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-12783252.post-5066708076208927645">
	<title>Bjorn Freeman-Benson: These Percentages Are What Eclipse Needs</title>
	<link>http://eclipse-projects.blogspot.com/2009/11/these-percentages-are-what-eclipse.html</link>
	<content:encoded>I was reading the &quot;&lt;a href=&quot;http://howsoftwareisbuilt.com/2009/11/18/interview-with-greg-kroah-hartman-linux-kernel-devmaintainer/&quot;&gt;How Software Is Built&lt;/a&gt;&quot; interview with Greg Kroah and I was struck by his comment about the diversity of committers:&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;margin-left: 10px; padding-left: 50px;&quot;&gt;To give an example, for the 2.5 to 2.6 kernel development series, which took about two years, the top 30 people did 80 percent of the work. Now, the top 30 people do 30 percent of the work. The sheer number of developers has also increased. We were running a couple hundred developers, and now we’re running a couple thousand.&lt;/div&gt;&lt;br /&gt;This is the kind of change that the Eclipse community must find a way to enable so that Eclipse remains viable. I've been promoting one possible solution: hire developers at the Foundation, but there are certainly other solutions. The only thing that is not a solution is to continue on the current Tragedy of the Commons path.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/12783252-5066708076208927645?l=eclipse-projects.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-23T14:00:08+00:00</dc:date>
	<dc:creator>Bjorn Freeman-Benson</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-35738028.post-3462736858304393152">
	<title>Tonny Madsen: Eclipse Democamp in Copenhagen</title>
	<link>http://blog.rcp-company.com/2009/11/eclipse-democamp-in-copenhagen.html</link>
	<content:encoded>&lt;a href=&quot;http://eclipse.dk/&quot;&gt;eclipse.dk&lt;/a&gt; will have our first ever DemoCamp in Copenhagen on 10. December.&lt;br /&gt;&lt;br /&gt;&lt;a style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot; href=&quot;http://www.dr.dk/NR/rdonlyres/800A988C-ED94-4119-B398-1BA323F84F07/1507395/42f1dc1ae88b483ea91ef6e5d071760c_GallaJessen.JPG&quot;&gt;&lt;img width=&quot;200&quot; src=&quot;http://www.dr.dk/NR/rdonlyres/800A988C-ED94-4119-B398-1BA323F84F07/1507395/42f1dc1ae88b483ea91ef6e5d071760c_GallaJessen.JPG&quot; border=&quot;0&quot; height=&quot;73&quot; /&gt;&lt;/a&gt;IBM (at Lyngbyvej 2, 2100 KBH Ø by the Chokolade Frog) has provided the space for the event so we still have room for more people.&lt;br /&gt;&lt;br /&gt;The current presentations for the DemoCamp are very diverse:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Tonny Madsen, The RCP Company, What exactly is the new e4 &lt;/li&gt;&lt;li&gt; Jesper Steen Møller, XPath2, XML Catalog and XSLT tooling &lt;/li&gt;&lt;li&gt; Bent Agervold Jensen, ReportSoft, BIRT &lt;/li&gt;&lt;li&gt; Mikkel Heisterberg, Intravision, Signed plugins and how these works end-to-end in Lotus Notes &lt;/li&gt;&lt;li&gt; Jakob Lyng Petersen, Maconomy, Building a Generic Client for Business Professionals using Eclipse RCP &lt;/li&gt;&lt;li&gt; Ekkart Kindler, DTU, Model-based Software Engineering with the Eclipse Modeling Framework &lt;/li&gt;&lt;li&gt; Steen Brahe, Danske Bank, Use of the Graphical Modeling Framework in Danske Bank &lt;/li&gt;&lt;li&gt; Jan Schoubo, LEJLN platformen - Linux-Eclipse-Java-LEGO NXT - For absolute beginners &lt;/li&gt;&lt;/ol&gt;If you want to participate, update the &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Copenhagen&quot;&gt;wiki page at eclipse.org&lt;/a&gt; or mail me on &lt;a href=&quot;mailto:formand@eclipse.dk&quot;&gt;formand@eclipse.dk&lt;/a&gt;.&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;And yes, we do have space for one or two presentations more...&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/35738028-3462736858304393152?l=blog.rcp-company.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-23T13:40:00+00:00</dc:date>
	<dc:creator>Tonny Madsen</dc:creator>
</item>
<item rdf:about="http://blog.balfes.net/?p=909">
	<title>Bob Balfe: What office suite does your kids school use?</title>
	<link>http://blog.balfes.net/?p=909</link>
	<content:encoded>&lt;p&gt;I sent an email to our local technology director asking what software the district uses for email and office documents;  I was surprised to here they use GroupWise and not so surprised they use Microsoft Office.  But then I started thinking about this, they are &lt;strong&gt;paying&lt;/strong&gt; for the use of this software!  &lt;strong&gt;I&lt;/strong&gt; am paying for them to use this software through my taxes.  I guess the email can be many options but there are so many services out there that are dirt cheap I don’t know why they would choose GroupWise - I need to dig a little further on that one.&lt;/p&gt;
&lt;p&gt;As for Microsoft Office - I see no need for a school district to pay for an Office suite when free products like &lt;a href=&quot;http://symphony.lotus.com/software/lotus/symphony/home.nsf/home&quot;&gt;Lotus Symphony&lt;/a&gt; (which is based on &lt;a href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt;) and &lt;a href=&quot;http://www.openoffice.org/&quot;&gt;Open Office&lt;/a&gt; are available.  Microsoft probably gives schools very cheap licensing but I am sure (but not totally sure) it is &lt;strong&gt;not&lt;/strong&gt; &lt;strong&gt;free&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Then I started thinking about the different sites my school district uses to communicate between parents and teachers, they have basically created a “community” online but it is based on 1999 technology.  How cool would it be if something like &lt;a href=&quot;http://www.lotuslive.com&quot;&gt;Lotus Live&lt;/a&gt; was used for it?  I don’t know the details around the licensing of Lotus Live but I think this kind of stuff would be a good business opportunity for business partners to go and implement these kinds of vertical communities.&lt;/p&gt;
&lt;p&gt;There is an issue though - someone needs to get this idea out there and sell it.  I don’t think the education sector (at the high school level and lower) know too much about these areas.  One way is to educate politicians and have them get the message spread to the various school boards - is this an opportunity for &lt;strong&gt;change&lt;/strong&gt;?&lt;/p&gt;



&lt;p class=&quot;technorati-tags&quot;&gt;technorati tags: &lt;a href=&quot;http://technorati.com/tag/eclipse&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;eclipse&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Lotus+Live&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;Lotus Live&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Symphony&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;Symphony&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-23T13:18:13+00:00</dc:date>
	<dc:creator>Bob Balfe</dc:creator>
</item>
<item rdf:about="http://www.richclient2.eu/2009_11_23/building-reports-of-your-local-information-pool-with-birt-and-remus/">
	<title>Tom Seidel: Building reports of your local information pool with BIRT and Remus</title>
	<link>http://www.richclient2.eu/2009_11_23/building-reports-of-your-local-information-pool-with-birt-and-remus/</link>
	<content:encoded>&lt;p&gt;Collecting data and information in an information management system is only half the story. An important aspect is also the ability to create visualization or printable documents based on the data in such a system, in other words, reporting. Since a few builds we’re shipping the runtime of the Reporting engine &lt;a href=&quot;http://eclipse.org/birt/phoenix/&quot; target=&quot;_blank&quot;&gt;BIRT&lt;/a&gt; with the initial download. Since BIRT allows an easy integration of custom data sources we decided to write our own ODA driver (which is part of the &lt;a href=&quot;http://wiki.eclipse.org/Connectivity&quot; target=&quot;_blank&quot;&gt;Eclipse DTP Connectivity Framework&lt;/a&gt;) which lets you build queries that are executed against your local workspace. In the following I’ll show you how to use the integrated BIRT capabilities and two showcases how Reporting can fit into an information management system.&lt;a id=&quot;more-222&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;A Report is also information&lt;/h3&gt;
&lt;p&gt;You can now create new information units which are reports. Therefore your input can be your own BIRT Report file or you choose an installed template from the given list in the wizard.&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.richclient2.eu/wp-content/uploads/2009/11/report_wizard.png&quot; alt=&quot;report_wizard.png&quot; id=&quot;image220&quot; /&gt;&lt;/div&gt;
&lt;p&gt;There are already a few templates installed, I want to show two of them.&lt;/p&gt;
&lt;h3&gt;Report your worked time on a task&lt;/h3&gt;
&lt;p&gt;Remus provides functionalities for work time tracking on tasks, e.g. you can synchronize your tasks from Outlook and start working on the tasks. If you want to see how much time you have worked on a specific task you can create a report based on a template. The input of the report is a task with a work-log (see picture).&lt;/p&gt;
&lt;div align=&quot;left&quot; style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.richclient2.eu/wp-content/uploads/2009/11/editor_task.png&quot; alt=&quot;editor_task.png&quot; id=&quot;image221&quot; /&gt;&lt;/div&gt;
&lt;p align=&quot;left&quot;&gt;If we create a report based on that task the application will show the following:&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img width=&quot;746&quot; alt=&quot;report_worklog.png&quot; src=&quot;http://www.richclient2.eu/wp-content/uploads/2009/11/report_worklog.png&quot; id=&quot;image223&quot; height=&quot;512&quot; /&gt;&lt;/div&gt;
&lt;p align=&quot;left&quot;&gt;As you can see the report and the reports input are part of your local information pool.&lt;/p&gt;
&lt;h3&gt;Top posters on twitter&lt;/h3&gt;
&lt;p align=&quot;left&quot;&gt;A second example is to report your twitter stream. Remus can be also used as a twitter client and so the data can be processed within a report, See the Top-Poster Report for twitter.&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img width=&quot;746&quot; alt=&quot;report_twitter.png&quot; src=&quot;http://www.richclient2.eu/wp-content/uploads/2009/11/report_twitter.png&quot; id=&quot;image224&quot; height=&quot;518&quot; /&gt;&lt;/div&gt;
&lt;h3&gt;Editing report&lt;/h3&gt;
&lt;p align=&quot;left&quot;&gt;By default you cannot edit these reports unless you download via “Extras -&amp;gt; Install new software” the BIRT Editing Capabilities which shows you after the installation a small button under the editor which opens the report in edit mode (see picture).  Again, at the bottom you’ll find a button to jump back to the report in “view” mode.&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.richclient2.eu/wp-content/uploads/2009/11/edit_button.png&quot; alt=&quot;edit_button.png&quot; id=&quot;image225&quot; /&gt;&lt;/div&gt;
&lt;h3&gt;Create your own reports&lt;/h3&gt;
&lt;p align=&quot;left&quot;&gt;If you want to create your own reports the best way is to start either with an empty report or you modify the templates to your needs. It is really simple and the only thing which is Remus specific is the creation of the data sources and datasets. I’ll write some documentations in the next time but the only thing you have to know which nodes within an information-unit you want to show within your report (the picture shows an structure-definition of a task and the relevant nodes for the work-log report)&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://www.richclient2.eu/wp-content/uploads/2009/11/dataset.png&quot; alt=&quot;dataset.png&quot; id=&quot;image226&quot; /&gt;&lt;/div&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p align=&quot;left&quot;&gt;First I’m very happy that BIRT Reporting could be integrated into Remus that easily. I think it’s an essential feature and gives the user a powerful tool for a customized output of his information data. So try it out - it’s free and open source, see the project-website &lt;a href=&quot;http://remus-software.org/&quot; target=&quot;_blank&quot;&gt;http://remus-software.org &lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;table border=&quot;0&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;http://remus-software.org/images/stories/movie_run.png&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://www.richclient2.eu/wp-content/uploads/2009/11/MyFirstReport/MyFirstReport.html&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Creating a Report about the PlanetEclipse-Feed with BIRT in Remus.&lt;/strong&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content:encoded>
	<dc:date>2009-11-23T11:51:11+00:00</dc:date>
	<dc:creator>Tom Seidel</dc:creator>
</item>
<item rdf:about="http://eclipsesource.com/blogs/?p=3501">
	<title>Benjamin Muskalla: EclipseRT &amp; RAP around the world</title>
	<link>http://eclipsesource.com/blogs/2009/11/23/eclipsert-rap-around-the-world/</link>
	<content:encoded>&lt;p&gt;We’re all looking forward to talk about EclipseRT, Equinox and RAP at the DemoCamps around the world. In case you want to catch us and talk about Eclipse and related topics, just join one of the DemoCamps near you. Besides many other interesting talks, we’ll mostly cover EclipseRT, RAP and p2.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://wiki.eclipse.org/images/8/89/Eclipse-camp.gif&quot; title=&quot;Eclipse DemoCamps&quot; height=&quot;76&quot; width=&quot;90&quot; alt=&quot;Eclipse camp EclipseRT &amp;amp; RAP around the world&quot; class=&quot;alignnone&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a style=&quot;color: #084081; text-decoration: none;&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Ottawa&quot; target=&quot;_blank&quot; title=&quot;Eclipse DemoCamps November 2009/Ottawa&quot;&gt;Ottawa&lt;/a&gt;, ON, Canada – November 24 – Jeff McAffer (EclipseRT)&lt;br /&gt;
&lt;a style=&quot;color: #084081; text-decoration: none;&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Braunschweig/Hanover&quot; target=&quot;_blank&quot; title=&quot;Eclipse DemoCamps November 2009/Braunschweig/Hanover&quot;&gt;Braunschweig/Hanover&lt;/a&gt;, Germany – November 25 – Benjamin Muskalla (RAP)&lt;br /&gt;
&lt;a style=&quot;color: #084081; text-decoration: none;&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Stuttgart&quot; target=&quot;_blank&quot; title=&quot;Eclipse DemoCamps November 2009/Stuttgart&quot;&gt;Stuttgart&lt;/a&gt;, Germany – November 26 – Jordi Boehme Lopez (p2)&lt;br /&gt;
&lt;a style=&quot;color: #084081; text-decoration: none;&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Kaiserslautern&quot; target=&quot;_blank&quot; title=&quot;Eclipse DemoCamps November 2009/Kaiserslautern&quot;&gt;Kaiserslautern&lt;/a&gt;, Germany – November 26 – Holger Staudacher (RAP)&lt;br /&gt;
&lt;a style=&quot;color: #084081; text-decoration: none;&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Frankfurt&quot; target=&quot;_blank&quot; title=&quot;Eclipse DemoCamps November 2009/Frankfurt&quot;&gt;Frankfurt&lt;/a&gt;, Germany – November 26 – Benjamin Muskalla (EclipseRT,RAP)&lt;br /&gt;
&lt;a style=&quot;color: #084081; text-decoration: none;&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Vienna&quot; target=&quot;_blank&quot; title=&quot;Eclipse DemoCamps November 2009/Vienna&quot;&gt;Vienna&lt;/a&gt;, Austria – November 30 – Chris Anisczcyk and Jeff McAffer (RAP,EclipseRT)&lt;br /&gt;
&lt;a style=&quot;color: #084081; text-decoration: none;&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Karlsruhe&quot; target=&quot;_blank&quot; title=&quot;Eclipse DemoCamps November 2009/Karlsruhe&quot;&gt;Karlsruhe&lt;/a&gt;, Germany – December 3 – Markus Knauer, Benjamin Muskalla (EclipseRT)&lt;br /&gt;
&lt;a style=&quot;color: #084081; text-decoration: none;&quot; href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Hamburg&quot; target=&quot;_blank&quot; title=&quot;Eclipse DemoCamps November 2009/Hamburg&quot;&gt;Hamburg&lt;/a&gt;, Germany – December 4 – Jochen Krause (RAP)&lt;/p&gt;
&lt;p&gt;I’m really looking forward to see you at the DemoCamps, as always &lt;a href=&quot;http://eclipsesource.com/blogs/2009/05/27/democamp-walldorf-retrospective/&quot;&gt;it tends&lt;/a&gt; to be a lot of fun!&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-23T11:08:30+00:00</dc:date>
	<dc:creator>Benjamin Muskalla</dc:creator>
</item>
<item rdf:about="http://weblogs.sdn.sap.com/pub/wlg/16815">
	<title>Erwin Tenhumberg: Open AND Commercial: Ecosystems in the age of &quot;AND&quot;</title>
	<link>http://feedproxy.google.com/~r/SapWeblogsEclipse/~3/lW_fOD1_s0k/16815</link>
	<content:encoded>SAP's CTO Vishal Sikka is responding to a number of blogs and articles about his call for action to #FreeJava&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?a=lW_fOD1_s0k:ZgVOBMht54w:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?a=lW_fOD1_s0k:ZgVOBMht54w:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?i=lW_fOD1_s0k:ZgVOBMht54w:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?a=lW_fOD1_s0k:ZgVOBMht54w:7Q72WNTAKBA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?d=7Q72WNTAKBA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?a=lW_fOD1_s0k:ZgVOBMht54w:V_sGLiPBpWU&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?i=lW_fOD1_s0k:ZgVOBMht54w:V_sGLiPBpWU&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?a=lW_fOD1_s0k:ZgVOBMht54w:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/SapWeblogsEclipse?d=qj6IDK7rITs&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/SapWeblogsEclipse/~4/lW_fOD1_s0k&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2009-11-23T10:57:00+00:00</dc:date>
	<dc:creator>Vishal Sikka</dc:creator>
</item>
<item rdf:about="http://eclipsesource.com/blogs/?p=3465">
	<title>Elias Volanakis: Mixing Ruby, Java and Equinox OSGi – Part 1</title>
	<link>http://eclipsesource.com/blogs/2009/11/23/mixing-ruby-java-and-equinox-osgi-part-1/</link>
	<content:encoded>&lt;p&gt;The recent release of &lt;a href=&quot;http://jruby.org/2009/11/02/jruby-1-4-0.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;JRuby 1.4&lt;/a&gt; already ships as as an OSGi bundle. I’ve never mixed Ruby with Java before, so I took it as an opportunity to learn more. This blog explains how to write a &lt;strong&gt;Twitter Search UI &lt;/strong&gt;for Eclipse, using Ruby’s http and JSON libraries to talk to &lt;a href=&quot;http://twitter.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;twitter.com&lt;/a&gt;. Read on to learn how to install JRuby on your system, make it work with Equinox and mix Java with Ruby code.&lt;/p&gt;
&lt;p&gt;&lt;a style=&quot;text-decoration: none;&quot; href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/twitter_search.png&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/twitter_search.png&quot; title=&quot;twitter_search&quot; height=&quot;178&quot; width=&quot;411&quot; alt=&quot;twitter search Mixing Ruby, Java and Equinox OSGi Part 1&quot; class=&quot;aligncenter size-full wp-image-3493&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This post is split into multiple parts:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/2009/11/23/mixing-ruby-java-and-equinox-osgi-part-1/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Part 1 - JRuby Installation&lt;/a&gt;&lt;br /&gt;
Part 2 – Workspace Setup&lt;br /&gt;
Part 3 – Mixing Ruby with Java&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To complete the following you should have Java 1.6 (though 1.5 should work too) and Eclipse 3.5 installed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Part 1 – JRuby Installation&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a href=&quot;http://jruby.org/download&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://jruby.org/download&lt;/a&gt; and grab the “JRuby 1.4.0 Binary .zip”&lt;/li&gt;
&lt;li&gt;Unzip to a convenient location, such as &lt;strong&gt;c:\ruby&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;You should end up with &lt;strong&gt;c:\ruby\jruby-1.4.0&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Set the JRUBY_HOME variable to &lt;strong&gt;c:\ruby\jruby-1.4.0&lt;/strong&gt; and your PATH variable to &lt;strong&gt;%PATH%;c:\ruby\jruby-1.4.0\bin&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
The procedure will vary from OS to OS. On Windows Vista go to Control Panel &amp;gt; User Accounts &amp;gt; User Accounts and pick “Tasks: Change my environment variable”.
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/vista_env_1.png&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/vista_env_1.png&quot; title=&quot;vista_env_1&quot; height=&quot;323&quot; width=&quot;515&quot; alt=&quot;vista env 1 Mixing Ruby, Java and Equinox OSGi Part 1&quot; class=&quot;aligncenter size-full wp-image-3469&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Add JRUBY_HOME:&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/vista_env_2_jruby.png&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/vista_env_2_jruby.png&quot; title=&quot;vista_env_2_jruby&quot; height=&quot;151&quot; width=&quot;357&quot; alt=&quot;vista env 2 jruby Mixing Ruby, Java and Equinox OSGi Part 1&quot; class=&quot;aligncenter size-full wp-image-3470&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Add/modify the PATH variable:&lt;a style=&quot;text-decoration: none;&quot; href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/vista_env_3_path.png&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/vista_env_3_path.png&quot; title=&quot;vista_env_3_path&quot; height=&quot;151&quot; width=&quot;357&quot; alt=&quot;vista env 3 path Mixing Ruby, Java and Equinox OSGi Part 1&quot; class=&quot;aligncenter size-full wp-image-3471&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The end result should look like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/vista_env_4.png&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/vista_env_4.png&quot; title=&quot;vista_env_4&quot; height=&quot;213&quot; width=&quot;391&quot; alt=&quot;vista env 4 Mixing Ruby, Java and Equinox OSGi Part 1&quot; class=&quot;aligncenter size-full wp-image-3474&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;To check the installation of JRuby choose Start &amp;gt; &lt;strong&gt;cmd.exe &lt;/strong&gt; to open a shell. Then type:
&lt;pre&gt;C:\&amp;gt; &lt;strong&gt;jruby --version&lt;/strong&gt;
jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.6.0_17) [x86-java] C:\&amp;gt; &lt;strong&gt;gem --version&lt;/strong&gt;
1.3.5&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Ruby is famous for is it’s collection of libraries, called Gems. To talk to the Twitter APIs in JSON we will install an appropriate gem called &lt;strong&gt;json_pure&lt;/strong&gt;. In the shell type:
&lt;pre&gt;C:\&amp;gt; &lt;strong&gt;gem install json_pure&lt;/strong&gt;
JRuby limited openssl loaded. gem install jruby-openssl for full support.
http://jruby.kenai.com/pages/JRuby_Builtin_OpenSSL
Successfully installed json_pure-1.2.0
1 gem installed
Installing ri documentation for json_pure-1.2.0...
Installing RDoc documentation for json_pure-1.2.0...&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Continue to: Part 2 – Workspace Setup (coming soon)&lt;/p&gt;
&lt;p&gt;(&lt;a href=&quot;http://twitter.com/evolanakis&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;follow me on twitter&lt;/a&gt;)&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-23T00:44:29+00:00</dc:date>
</item>
<item rdf:about="http://dev.eclipse.org/blogs/francis/?p=50">
	<title>Francis Upton: An incompatibility between Ganymede and Galileo</title>
	<link>http://dev.eclipse.org/blogs/francis/2009/11/22/an-incompatibility-between-ganymede-and-galileo/</link>
	<content:encoded>&lt;p&gt;In working on &lt;a href=&quot;http://www.oaklandsoftware.com&quot;&gt;my company’s&lt;/a&gt; &lt;a href=&quot;http://www.mulesoft.com/mule-data-integrator-mapping-transformation&quot;&gt;product&lt;/a&gt; I saw that the correct icons were appearing when the product was run in Ganymede, but not Galileo.  The problem is captured in &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=295803&quot;&gt;bug 295803&lt;/a&gt; and has to do with the selection of the Navigator Content Extension (NCE) to provide the label when there are two NCEs that operate on the same content.  In my applications case, it was my app’s NCE and the NCE that takes care of resources.  In Ganymede, the higher priority of these NCEs has the first opportunity to provide the labels, but in Galileo, it’s the opposite, the lowest priority provides the labels, which is certainly not what you want.&lt;/p&gt;
&lt;p&gt;I think we should address the above bug in 3.5.2, as it’s a bad incompatible change.&lt;/p&gt;
&lt;p&gt;Here is the (amazingly pretty and elegant) code that I used to work around the problem:&lt;/p&gt;
&lt;pre&gt;        /*
         * Yum. Due to Eclipse bug 295803 we need to change the priority of the
         * NCE for our product. This only needs to happen on a 3.5.0 or 3.5.1
         * system. We sense this by the org.eclipse.ui.navigator bundle version
         * (in which the minor version lags one behind the main Eclipse
         * version.) Note that if this bug is fixed in 3.5.2, then the version
         * check needs to consider only CNF versions 3.4.0 and 3.4.1.
         */
        Bundle bundle = Platform.getBundle(&quot;org.eclipse.ui.navigator&quot;); //$NON-NLS-1$
        Dictionary headers = bundle.getHeaders();
        String version = (String)headers.get(&quot;Bundle-Version&quot;); //$NON-NLS-1$
        if (version.startsWith(&quot;3.4&quot;)) //$NON-NLS-1$
        {
            INavigatorContentService ncs = getNavigator()
                    .getNavigatorContentService();
            NavigatorContentDescriptor desc = (NavigatorContentDescriptor)ncs
                    .getContentDescriptorById(&quot;com.oaklandsw.transform.navigatorContent&quot;); //$NON-NLS-1$

            try
            {
                Field[] fields = desc.getClass().getDeclaredFields();
                for (int i = 0; i &amp;lt; fields.length; i++)
                {
                    if (fields[i].getName().equals(&quot;priority&quot;)) //$NON-NLS-1$
                    {
                        fields[i].setAccessible(true);
                        fields[i]
                                .set(desc,
                                     new Integer(Priority.LOWEST_PRIORITY_VALUE));
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Util.impossible(e);
            }
        }
&lt;/pre&gt;</content:encoded>
	<dc:date>2009-11-22T18:17:50+00:00</dc:date>
	<dc:creator>Francis Upton</dc:creator>
</item>
<item rdf:about="http://tomsondev.bestsolution.at/?p=673">
	<title>Tom Schindl: Release QxWT-0.8.2-RC2</title>
	<link>http://tomsondev.bestsolution.at/2009/11/22/release-qxwt-0-8-2-rc2/</link>
	<content:encoded>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;One week after release of RC1. We’ve just published RC2 of the Qooxdoo-GWT-Wrapper QxWT. You can fetch the release from &lt;a href=&quot;http://www.ufacekit.org/index.php?cat=02_Qooxdoo&amp;amp;page=03_Releases&quot;&gt;our project site.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;RC2 holds the following changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Completed Qooxdoo-FX-Support&lt;/li&gt;
&lt;li&gt;100% of the framework JavaDoc’ed (&lt;a href=&quot;http://www.ufacekit.org/qxwt/current/doc/&quot;&gt;online&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Removal of unneeded images to optimize jar-sizes&lt;/li&gt;
&lt;li&gt;Themes extracted into extra-jars to optimize jar-sizes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because of the modified packaging to make the example from &lt;a href=&quot;http://tomsondev.bestsolution.at/2009/11/13/release-qxwt-0-8-2-rc1/&quot;&gt;here&lt;/a&gt; run on RC2 you need to make the following adjustments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drop the following jars into your lib-directory:
&lt;ul&gt;
&lt;li&gt;org.ufacekit.qx.script.minjs-0.8.2-rc2.jar&lt;/li&gt;
&lt;li&gt;org.ufacekit.qx.theme.modern-0.8.2-rc2.jar&lt;/li&gt;
&lt;li&gt;org.ufacekit.qx.wrapper-0.8.2-rc2.jar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and the remove all &lt;span style=&quot;font-family: Courier;&quot;&gt;*-rc1.jar&lt;/span&gt;s
&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Adjust the GWT-Module-XML
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE module PUBLIC &quot;-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN&quot; &quot;http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/src/gwt-module.dtd&quot;&amp;gt;
&amp;lt;module rename-to='myfirstqxapp'&amp;gt;
  &amp;lt;!-- Inherit the core Web Toolkit stuff.                        --&amp;gt;
  &amp;lt;inherits name='com.google.gwt.user.User'/&amp;gt;
  &amp;lt;inherits name=&quot;org.ufacekit.qx.wrapper.QxScript&quot; /&amp;gt;
  &amp;lt;inherits name=&quot;org.ufacekit.qx.QxEngine&quot; /&amp;gt;
  &amp;lt;inherits name=&quot;org.ufacekit.qx.theme.modern.QxTheme&quot; /&amp;gt;
&lt;/pre&gt;
&lt;p&gt;to include &lt;span style=&quot;font-family: Courier;&quot;&gt;org.ufacekit.qx.theme.modern.QxTheme&lt;/span&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The source code of the example is now also available from our &lt;a href=&quot;https://svn.tomsondev.com/svn/qx/trunk/examples/MyFirstQxApp/&quot;&gt;SVN-Repository&lt;/a&gt;. So you only have the check it out and give it a spin. There’s currently a know problem on Linux which I’ve tracked down to a JS-Error in the Qooxdoo-Sources which will be fixed until the final release.&lt;/p&gt;
  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/tomsondev.wordpress.com/673/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/tomsondev.wordpress.com/673/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/tomsondev.wordpress.com/673/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/tomsondev.wordpress.com/673/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/tomsondev.wordpress.com/673/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/tomsondev.wordpress.com/673/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/tomsondev.wordpress.com/673/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/tomsondev.wordpress.com/673/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/tomsondev.wordpress.com/673/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/tomsondev.wordpress.com/673/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=tomsondev.bestsolution.at&amp;amp;blog=7995503&amp;amp;post=673&amp;amp;subd=tomsondev&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-22T15:02:27+00:00</dc:date>
	<dc:creator>tomeclipsedev</dc:creator>
</item>
<item rdf:about="http://abstratt.com/blog/?p=162">
	<title>Rafael Chaves: Eclipse Modeling Day in Toronto</title>
	<link>http://abstratt.com/blog/2009/11/20/eclipse-modeling-day-in-toronto/</link>
	<content:encoded>&lt;p&gt;Last Wednesday I attended the &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#Toronto&quot;&gt;Eclipse Modeling Day in Toronto&lt;/a&gt;. Coming all the way from Victoria, I must have been the participant that came from farthest. Except, of course, those folks from SAP AG and Itemis that were presenting. But I was really glad to be there. I finally had the chance to chat and discuss about Eclipse and Modeling face to face with people like Simon Kaegi (server-side OSGi), Kenn Hussey (MDT UML2), Eike Stepper (CDO), Ed Merks and (fellow Brazilian) Marcelo Paternostro (EMF), Lynn Gayowski and Ian Skerret (Eclipse Foundation). It’s weird: I have been part of the Eclipse Modeling community since 2006 (and the larger Eclipse community since 2002), but had never actually met any of those folks before. Also amusing was that even though I worked for IBM Ottawa for quite a few years, my first time at the Toronto Lab was many years later as an ex-IBMer living on the West Coast.&lt;/p&gt;
&lt;p&gt;The presentations I attended were in general very good. I had seen Ed Merks’ opening presentation on the web before, but this time I could ask questions. I got a better understanding of Xtext (great presentation!), CDO, and the Query, Validation and Transaction frameworks, some technologies I am considering adopting in the near future. I had a first time contact with the Papyrus 2.0 vision, which might provide an opportunity for increasing adoption of the TextUML notation by integrating the &lt;a href=&quot;http://abstratt.com/textuml/&quot;&gt;TextUML Toolkit&lt;/a&gt; into a larger modeling environment. And I liked the idea of a discussion panel at the end.&lt;/p&gt;
&lt;p&gt;I had to catch a flight back home that same night, so I could not attend the Eclipse RT Day on the following day nor could I see any of the demos at the &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Toronto&quot;&gt;DemoCamp&lt;/a&gt;. Speaking of which, I did manage to stay long enough to have a beer on the Foundation (thanks!), and chat with Christopher Nagy from &lt;a href=&quot;http://www.dexterra.com/&quot;&gt;Dexterra&lt;/a&gt;/Antenna Software, who made a quick ad hoc demo to Ian and myself of their Eclipse/GEF-based tool for authoring multiplatform mobile applications. Very impressive!&lt;/p&gt;
&lt;p&gt;As constructive criticism, I do agree with &lt;a href=&quot;http://eclipse-projects.blogspot.com/2009/11/how-to-improve-eclipse-x-day.html&quot;&gt;Bjorn&lt;/a&gt; that the format could use some tweaking. I sure had to miss some very promising presentations. Maybe with two presentation formats, a longer (for instance, 40-50 mins) and a shorter one (20-25 mins), we wouldn’t need two tracks. I am not sure presenters who came from Europe would have come had they had a shorter slot though. That being said, I was very satisfied with the event overall and am sincerely thankful to IBM Toronto for hosting the event, the Eclipse Foundation for organizing it, all the folks &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day/Session_Abstracts_Toronto&quot;&gt;presenting&lt;/a&gt; and the companies sponsoring them. Thank you very much! As Lawrence &lt;a href=&quot;http://eclipsetacy.blogspot.com/2009/11/eclipse-rt-day-toronto.html&quot;&gt;wrote&lt;/a&gt;, hope we will see more events like this in the future!&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-21T03:32:07+00:00</dc:date>
	<dc:creator>rafael.chaves</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-14521551.post-3462683361680323868">
	<title>Birt World: Accessing Spring Beans from the BIRT Designer</title>
	<link>http://birtworld.blogspot.com/2009/11/accessing-spring-beans-from-birt.html</link>
	<content:encoded>Recently I have described methods that can be used to access Spring Beans from the BIRT Engine.  These examples are intended to be illustrative and not comprehensive.  &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://birtworld.blogspot.com/2009/11/more-on-birt-and-spring.html&quot;&gt;More on BIRT and Spring&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://birtworld.blogspot.com/2009/11/calling-spring-objects-from-birt.html&quot;&gt;Calling Spring Objects from BIRT Expressions and Event Handlers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In both of these examples I used the BIRT engine to retrieve Spring objects within the scripting environment.  In this post I am supplying an example that illustrates how to implement your own menu in the expression builder, so Spring objects can be called within the BIRT Designer.  This will allow you to test your report prior to deployment.&lt;br /&gt;&lt;br /&gt;In this post:&lt;br /&gt;&lt;a href=&quot;http://birtworld.blogspot.com/2008/09/birt-231-adding-functions-to-expression.html&quot;&gt;BIRT 2.3.1 - Adding Functions to the Expression Builder&lt;/a&gt;&lt;br /&gt;I described how to implement the org.eclipse.birt.core.ScriptFunctionService.  The attached example is an implementation of this extension point.  When using this example the expression builder will appear as follows.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_GN1FyT5H8Kg/SwcumA2v_RI/AAAAAAAAAIQ/o0LXyHwFY6Q/s1600/expressionbuilder.PNG&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_GN1FyT5H8Kg/SwcumA2v_RI/AAAAAAAAAIQ/o0LXyHwFY6Q/s320/expressionbuilder.PNG&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 278px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406341108281113874&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice that there is now a SpringFunctions sub-category, which provides one method callBean.  This method takes a bean name and a method name and expects a returned string.  To keep the example simple no arguments are supported and the method must return a string.  The plugin.xml looks like the following:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_GN1FyT5H8Kg/Swcuu7yL_CI/AAAAAAAAAIY/2xUFGCB5rVU/s1600/ScriptFunctionService.PNG&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_GN1FyT5H8Kg/Swcuu7yL_CI/AAAAAAAAAIY/2xUFGCB5rVU/s320/ScriptFunctionService.PNG&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 238px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406341261538622498&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Provided with the example is a deployable J2EE application and the plugin that implements the ScriptFunctionService.  See the readme for details on setting up the example.  Also note that the deployable plugin is also attached in the example.  You will need to add this to your designer and your runtime.  This example works with both the Open Source BIRT designer and the Actuate BIRT designer.&lt;br /&gt;&lt;br /&gt;Also included is an example report with the following output.&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_GN1FyT5H8Kg/Swcu57rt_1I/AAAAAAAAAIg/FOh08jmnF8I/s1600/output.PNG&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_GN1FyT5H8Kg/Swcu57rt_1I/AAAAAAAAAIg/FOh08jmnF8I/s320/output.PNG&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 128px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406341450490052434&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This example is available at &lt;a href=&quot;http://www.birt-exchange.org/devshare/designing-birt-reports/1100-calling-spring-objects-from-the-expression-builder/#description&quot;&gt;Birt-Exchange&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/14521551-3462683361680323868?l=birtworld.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-21T00:09:16+00:00</dc:date>
	<dc:creator>Jason Weathersby</dc:creator>
</item>
<item rdf:about="http://aniszczyk.org/?p=1481">
	<title>Chris Aniszczyk: Movember – Day 20</title>
	<link>http://aniszczyk.org/2009/11/20/movember-day-20/</link>
	<content:encoded>&lt;p&gt;I am on day 20 of growing a moustache for &lt;a href=&quot;http://www.movember.com/&quot;&gt;Movember&lt;/a&gt;. I have decided to go against my stylist’s best wishes and help &lt;a href=&quot;http://eclipsesource.com/blogs/2009/10/31/come-on-eclipse-lets-grow-a-mo/&quot;&gt;raise money for prostate cancer research&lt;/a&gt; with my fellow &lt;a href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt; committers. We have raised over $2300 dollars so far! This week’s update includes a new &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=295192&quot;&gt;splash screen&lt;/a&gt; for Eclipse (thank you &lt;a href=&quot;http://eclipsesource.com/blogs/author/irbull/&quot;&gt;Ian Bull&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/splash.png&quot;&gt;&lt;img src=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/splash.png&quot; title=&quot;Movember Eclipse Splash Screen&quot; height=&quot;295&quot; width=&quot;455&quot; alt=&quot;Movember Eclipse Splash Screen&quot; class=&quot;alignnone size-full wp-image-1482&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As for my ’stache, here it is on day 20.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/movember-zx-day20.jpg&quot;&gt;&lt;img src=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/movember-zx-day20.jpg&quot; title=&quot;movember-zx-day20&quot; height=&quot;52&quot; width=&quot;242&quot; alt=&quot;movember-zx-day20&quot; class=&quot;alignnone size-full wp-image-1485&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Solid progress. Please &lt;a href=&quot;http://us.movember.com/mospace/295712/&quot;&gt;donate&lt;/a&gt;!&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-20T23:15:22+00:00</dc:date>
	<dc:creator>Chris Aniszczyk</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-5914783.post-3941216540037745332">
	<title>Ankur Sharma: source.&lt;library&gt; and output.&lt;library&gt;</title>
	<link>http://blog.ankursharma.org/2009/11/source-and-output.html</link>
	<content:encoded>&lt;div style=&quot;text-align: justify;&quot;&gt;The source and output properties in build.properties control the folders to be compiled and where to place the resulting output. The &lt;a href=&quot;http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.pde.doc.user/reference/pde_feature_generating_build.htm&quot;&gt;eclipse help&lt;/a&gt; briefly talks about it.&lt;br /&gt;&lt;/div&gt;&lt;pre class=&quot;brush: text&quot;&gt;    * source.&amp;lt;library&amp;gt; - lists source folders that will be compiled (e.g. source.xyz.jar=src/, src-ant/). If the library is specified in your plug-in.xml or manifest.mf, the value should match it;&lt;br /&gt;    * output.&amp;lt;library&amp;gt; - lists the output folder receiving the result of the compilation;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Source Folders and Output Folders&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Source and Output folder have already been discussed in &lt;a href=&quot;http://blog.ankursharma.org/2009/10/source-folders-and-srcincludes_11.html&quot;&gt;this&lt;/a&gt; post. Only the source folders gets compiled and the generated class files get stored in the corresponding output folder. A project can have one or more source folder. If a source folder does not have a output folder attached to it explicitly, its output will go to the default output folder. The &lt;code&gt;.classpath&lt;/code&gt; file stores all this information.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;source.. and output..&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The real syntax is source.&amp;lt;library&amp;gt; and output.&amp;lt;library&amp;gt; where &amp;lt;library&amp;gt; is generally the name of the jar. Here the second dot signifies the default library. Any source folder assigned to it gets it output reside in the root when the plug-in is build. The &lt;code&gt;output..&lt;/code&gt; entry tells the PDE Build where to pick the classes for &lt;code&gt;source..&lt;/code&gt; from. &lt;br /&gt;&lt;/div&gt;Typical entries look like this&lt;br /&gt;&lt;pre class=&quot;brush: text&quot;&gt;source.. = src/&lt;br /&gt;output.. = bin/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;When a plug-in with above entries is build the structure of the plug-in jar will look like this&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;org.example.sample_1.0.0&lt;br /&gt;│   plugin.xml&lt;br /&gt;│&lt;br /&gt;├───icons&lt;br /&gt;│       sample.gif&lt;br /&gt;│&lt;br /&gt;├───META-INF&lt;br /&gt;│       MANIFEST.MF&lt;br /&gt;│&lt;br /&gt;└───org&lt;br /&gt;    └───example&lt;br /&gt;        └───sample&lt;br /&gt;            │   Activator.class&lt;br /&gt;            │&lt;br /&gt;            └───actions&lt;br /&gt;                    SampleAction.class&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;More complex plug-ins have more than one source folder. org.eclipse.pde.core is one such plug-in. It is good practice to assign separate output folder for separate source folders. This is not mandatory.&lt;br /&gt;Lets assume &lt;code&gt;src&lt;/code&gt; and &lt;code&gt;src_an&lt;/code&gt; are the two source folders and their corresponding output folders are &lt;code&gt;bin&lt;/code&gt; and &lt;code&gt;bin_ant&lt;/code&gt;. Then a &lt;code&gt;build.properties&lt;/code&gt; like &lt;br /&gt;&lt;/div&gt;&lt;pre class=&quot;brush: text&quot;&gt;source.. = src/&lt;br /&gt;output.. = bin/&lt;br /&gt;source.ant_tasks/anttasks.jar = src_ant/&lt;br /&gt;output.ant_tasks/anttasks.jar = bin_ant/&lt;br /&gt;&lt;/pre&gt;will create a plug-in which will look something like this&lt;br /&gt;&lt;pre&gt;org.example.sample_1.0.0&lt;br /&gt;│   plugin.xml&lt;br /&gt;│&lt;br /&gt;├───ant_tasks&lt;br /&gt;│       anttasks.jar&lt;br /&gt;│&lt;br /&gt;├───icons&lt;br /&gt;│       sample.gif&lt;br /&gt;│&lt;br /&gt;├───META-INF&lt;br /&gt;│       MANIFEST.MF&lt;br /&gt;│&lt;br /&gt;└───org&lt;br /&gt;    └───example&lt;br /&gt;        └───sample&lt;br /&gt;            │   Activator.class&lt;br /&gt;            │&lt;br /&gt;            └───actions&lt;br /&gt;                    SampleAction.class&lt;br /&gt;&lt;/pre&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The contents of the &lt;code&gt;src_ant&lt;/code&gt; folder will get compiled and jared in to &lt;code&gt;anttasks.jar&lt;/code&gt; inside &lt;code&gt;ant_tasks&lt;/code&gt; folder because of the &lt;code&gt;source.ant_tasks/anttasks.jar = src_ant/&lt;/code&gt; entry.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Classpath vs source/output entries&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;The source folder and output folder information is already available in class path then why source/output entries are needed? The classpath entries are used to compile source code. But the PDE Build relies on the source/output entries while building (or exporting) the plug-ins. Suppose a plug-in A refers to a class C in plug-in B. Then while building the plug-in A PDE Build will look into &lt;code&gt;build.properties&lt;/code&gt; of plug-in B to locate the &lt;code&gt;C.class&lt;/code&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Rules of using source. and output. entries&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Every source folder should appear in a source. entry.&lt;/li&gt;&lt;li&gt;A source folder can appear in one and only one source. entry.&lt;/li&gt;&lt;li&gt;The source and output folders are specified as their path relative to the root of the project.&lt;/li&gt;&lt;li&gt;All source folders whose output folder is same should belong to same source. entry.&lt;/li&gt;&lt;li&gt;The corresponding output folders should be mentioned in the corresponding output.entry.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Note that &lt;i&gt;should&lt;/i&gt; in above rules means that rule is a good practice and not an obligation but if not followed the result of PDE Build might be unexpected.&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5914783-3941216540037745332?l=blog.ankursharma.org&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-20T22:22:28+00:00</dc:date>
	<dc:creator>Ankur Sharma</dc:creator>
</item>
<item rdf:about="http://eclipsesource.com/blogs/?p=3460">
	<title>Jeff McAffer: 20 days of Mommitting</title>
	<link>http://eclipsesource.com/blogs/2009/11/20/20-days-of-mommitting/</link>
	<content:encoded>&lt;p&gt;We’ve reached the 20th of Movember and its time for a progress report from this &lt;a href=&quot;http://ca.movember.com/mospace/466229&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Eclipse Mommitter&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shaved in the ’stache earlier in the week&lt;/li&gt;
&lt;li&gt;Kids just could not stop laughing&lt;/li&gt;
&lt;li&gt;Wife would not look at me or kiss me&lt;/li&gt;
&lt;li&gt;After a week there has been some progress.&lt;/li&gt;
&lt;li&gt;The kids have finally stopped laughing (though now “pull the ’stache is the game of the day)&lt;/li&gt;
&lt;li&gt;Wife will kiss me but still can’t really look at me&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here, judge for yourself.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://eclipsesource.com/blogs/wp-content/uploads/2009/11/IMG_0089_2-300x254.jpg&quot; title=&quot;Day 20 of Movember&quot; height=&quot;254&quot; width=&quot;300&quot; alt=&quot;Day 20 of Movember&quot; class=&quot;aligncenter size-medium wp-image-3461&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Its a little strange to be out in public with the new look. I spent much of the week on the road for the EclipseRT days in Austin and Toronto. Great events with lots of good people around. I particularly enjoyed that there were ample breaks between sessions and lots of good conversations. And it turns out that the whole Movember thing is a good ice-breaker. Even got a donation out of it! Valentin Baciu, another Mommitter of similar moustache design &lt;a href=&quot;http://ca.movember.com/mospace/466229&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;donated&lt;/a&gt; more to the cause. Thanks! The &lt;a href=&quot;https://www.movember.com/ca/donate/your-details/team_id/44681&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Eclipse Mommitter team&lt;/a&gt; is up to $2200 now. Pretty good effort but we could always use more &lt;a href=&quot;http://ca.movember.com/mospace/466229&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;donations&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-20T21:53:47+00:00</dc:date>
</item>
<item rdf:about="http://dev.eclipse.org/blogs/lynngo/?p=95">
	<title>Lynn  Gayowski: The Ottawa “Beer &amp; ‘Staches” DemoCamp - Nov. 24</title>
	<link>http://dev.eclipse.org/blogs/lynngo/2009/11/20/the-ottawa-beer-staches-democamp-nov-24/</link>
	<content:encoded>&lt;p&gt;After hosting a lively &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009&quot;&gt;DemoCamp&lt;/a&gt; in Toronto this past Wednesday, it’s time to prepare for the hometown event in Ottawa.  For those that have not signed up yet, we’re meeting Tuesday, November 24 at 7:00 pm.  Join fellow Eclipsers at Pub 101, 101 York St. (York &amp;amp; Dalhousie) for a steady stream of beverages, compliments of the Eclipse Foundation.  To register, just add your name to the &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Ottawa&quot;&gt;DemoCamp wiki&lt;/a&gt; or send me a message.&lt;/p&gt;
&lt;p&gt;There will be a demo on EclipseRT by Jeff McAffer and one on OpenSocial Gadgets in Eclipse by Boris Bokoski.  Also, we can still add 2 to 3 more demos if you have something cool to present.&lt;/p&gt;
&lt;p&gt;If any added incentive is needed, at least 3 participants from the &lt;a href=&quot;http://ca.movember.com/mospace/team/&quot;&gt;Eclipse Mommitters&lt;/a&gt; team - Kevin Barnes, Kenn Hussey and Jeff McAffer - will be in attendance and you can check out the spectacular progress of their moustache-growing for charity.  Spoiler alert: By some weird synergy, they all seem to have selected “trucker” style.  Photo ops are sure to abound.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dev.eclipse.org/blogs/lynngo/files/2009/11/team.jpg&quot;&gt;&lt;img width=&quot;300&quot; alt=&quot;&quot; src=&quot;http://dev.eclipse.org/blogs/lynngo/files/2009/11/team-300x90.jpg&quot; class=&quot;aligncenter size-medium wp-image-96&quot; height=&quot;90&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-20T20:23:29+00:00</dc:date>
	<dc:creator>Lynn Gayowski</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-1593219853242657843.post-4570423038606026877">
	<title>Lawrence Mandel: Eclipse RT Day Toronto</title>
	<link>http://eclipsetacy.blogspot.com/2009/11/eclipse-rt-day-toronto.html</link>
	<content:encoded>Yesterday was Eclipse RT Day Toronto at the IBM Toronto Lab. For those who missed it, there is quite a lot going on the runtime space. (A number of the presentation slides are available on the &lt;a href=&quot;http://wiki.eclipse.org/EclipseRT_Day#Toronto&quot;&gt;Eclipse RT Day page&lt;/a&gt;.) My interest is currently in server side equinox. I've first started playing with this technology about two years ago and my current product, Rational Insight, recently released v1.0, which includes a server side equinox based component. The runtimes are really coming along nicely and have been stable and usable for some time. For me the big takeaways from the day are:&lt;br /&gt;&lt;br /&gt;1. The required ancillary features, like filter support for server side equinox, security, and provisioning have now been or are currently being addressed.&lt;br /&gt;2. Tool support is growing for Eclipse RT.&lt;br /&gt;&lt;br /&gt;This one day event was really great. The two tracks kept everyone together for most of the day, there was low overhead for me as this was in Toronto (and where I work no less), and there was only a single day commitment, which is much easier on my schedule than a multi-day conference. Thanks to everyone who came down from Ottawa and other places to present and participate. I hope to see more of these events in the future.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1593219853242657843-4570423038606026877?l=eclipsetacy.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-20T19:32:55+00:00</dc:date>
	<dc:creator>Lawrence Mandel</dc:creator>
</item>
<item rdf:about="http://live.eclipse.org/837 at http://live.eclipse.org">
	<title>EclipseLive: Upcoming Event: Reminder - Overview of the Eclipse Development Process for Committers</title>
	<link>http://live.eclipse.org/node/837</link>
	<content:encoded>Event Date: November 24, 2009 5:00 pm GMT-8&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;mailto:webinar-committers@eclipse.org?subject=Register me for the committers webinar&quot;&gt;Register Now&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;   

&lt;div class=&quot;field field-type-text field-field-author&quot; id=&quot;author&quot;&gt;
  &lt;span class=&quot;field-item&quot;&gt;Wayne Beaton (Eclipse Foundation)&lt;/span&gt;
&lt;/div&gt;

&lt;div class=&quot;resource-icon&quot;&gt;&lt;img src=&quot;http://live.eclipse.org/files/ECLP_webinar.gif&quot; border=&quot;0&quot; /&gt; &lt;/div&gt;  

&lt;div id=&quot;abstract&quot;&gt;
	&lt;span class=&quot;field-label&quot;&gt;Abstract:&lt;/span&gt;  
	&lt;div class=&quot;field field-type-text field-field-author&quot;&gt;
	  &lt;span class=&quot;field-item&quot;&gt;&lt;p&gt;The Eclipse Development Process (EDP) is a process that exists to help you and your project be successful. We start with a discussion of the principles that underlie the EDP and why they are important to you as a committer. We then discuss the various processes that are in place to ensure that principles are maintained. More specifically, this talk discusses how the EDP will help you reach out to your community of users and adopters. It includes heavy discussion of community development, openness, transparency, IP cleanliness and more.&lt;/p&gt;

&lt;p&gt;Total running time will be approximately 1 hour&lt;/p&gt;

&lt;p&gt;9:00 am PST / 12:00 pm EST / 5:00 pm GMT - &lt;a href=&quot;http://www.timeanddate.com/worldclock/fixedtime.html?month=11&amp;amp;day=24&amp;amp;year=2009&amp;amp;hour=17&amp;amp;min=0&amp;amp;sec=0&amp;amp;p1=0&quot; target=&quot;&quot;&gt;Convert to other time zones&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks to Adobe for contributing their Adobe Acrobat Connect product to host this webinar.&lt;br /&gt;
&lt;img src=&quot;http://live.eclipse.org/files/images/adobeconnect.jpg&quot; height=&quot;10&quot; /&gt;&lt;/p&gt;
&lt;/span&gt;&lt;br /&gt;
	  &lt;span class=&quot;field-item&quot;&gt;&lt;a href=&quot;http://del.icio.us/post?url=http%3A%2F%2Flive.eclipse.org%2Fnode%2F18&amp;amp;title=Webinar&quot; rel=&quot;nofollow&quot; title=&quot;Bookmark this post on del.icio.us.&quot;&gt;&lt;img src=&quot;http://live.eclipse.org/modules/service_links/delicious.png&quot; alt=&quot;delicious&quot; /&gt; delicious&lt;/a&gt; | &lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http%3A%2F%2Flive.eclipse.org%2Fnode%2F18&amp;amp;title=Webinar&quot; rel=&quot;nofollow&quot; title=&quot;Digg this post on digg.com.&quot;&gt;&lt;img src=&quot;http://live.eclipse.org/modules/service_links/digg.png&quot; alt=&quot;digg&quot; /&gt; digg&lt;/a&gt; | &lt;a href=&quot;http://www.dzone.com/links/add.html?url=http%3A%2F%2Flive.eclipse.org%2Fnode%2F18&amp;amp;title=Webinar&quot; rel=&quot;nofollow&quot; title=&quot;Tag this post on DZone.&quot;&gt;&lt;img src=&quot;http://live.eclipse.org/modules/service_links/dzone.png&quot; alt=&quot;dzone&quot; /&gt; dzone&lt;/a&gt;&lt;/span&gt;
	&lt;/div&gt;
	
&lt;/div&gt;

&lt;div id=&quot;embedded&quot;&gt;
	  &lt;/div&gt;</content:encoded>
	<dc:date>2009-11-20T18:44:07+00:00</dc:date>
	<dc:creator>EclipseLive</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-16474715.post-4955735196306313291">
	<title>Doug Schaefer: Chrome OS, it is what it is</title>
	<link>http://cdtdoug.blogspot.com/2009/11/chrome-os-it-is-what-it-is.html</link>
	<content:encoded>I guess I got caught up in all the hype over Chrome OS. It's an idea I've bounced around for years as I mucked around learning about embedded Linux. Replace the standard Linux desktop UI with only a browser and throw it on a mobile device. With everything on the web these days, or at least a minimal amount to do something useful, why not?&lt;br /&gt;&lt;br /&gt;But I could never escape the idea that you had to have at least some local applications to do things when disconnected, or to take advantage of the CPU and graphics power using native tools for things like games and multimedia.&lt;br /&gt;&lt;br /&gt;So I downloaded a build of Chrome OS from gdgt.com to give it a try under VirtualBox. And, BTW, you got to love the tech community and how quickly they get activated when something cool comes along. While the release is about a year away, and the build shows it, you do get a sense of what Chrome OS, or Chromium OS which is it's proper name, is.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/_X6Gz24BqUwI/Swbfp9JvxTI/AAAAAAAAABw/c_t_MhVmkf4/s1600/2009-11-20_1325.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_X6Gz24BqUwI/Swbfp9JvxTI/AAAAAAAAABw/c_t_MhVmkf4/s400/2009-11-20_1325.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt; You log in with your Google account and, bang, you're in the Chrome browser looking at your Google stuff.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://3.bp.blogspot.com/_X6Gz24BqUwI/SwbgPoisR4I/AAAAAAAAAB4/bKpizjhIuZg/s1600/2009-11-20_1326.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_X6Gz24BqUwI/SwbgPoisR4I/AAAAAAAAAB4/bKpizjhIuZg/s400/2009-11-20_1326.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;But it is what it is. There's no application menu, no app market, or anything like that. Everything you do is over the web. I did notice an extensions mechanism, and maybe that's how you take advantage of the native environment, maybe not.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;When I had thought of a Web OS, this summer, my thoughts turned to the Eclipse Run-Time and using that in conjunction with the browser to have local apps written for the Eclipse platform. I would also think you'd want to launch 3D and multimedia content full screen, or something. But that's not what Chromium OS is. It's web or bust.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: left;&quot; class=&quot;separator&quot;&gt;So while Chromium OS is interesting, I'm way less excited about it. I think the door is still open for a netbook Linux platform that combines local native apps with the Web experience. Moblin is certainly making strides there for the consumer space. And I've been trying out the GNOME Shell which offers an experience much like Windows 7 for the power users. This story isn't finished yet.&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/16474715-4955735196306313291?l=cdtdoug.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-20T18:43:16+00:00</dc:date>
	<dc:creator>Doug Schaefer</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-12783252.post-6886376998106934619">
	<title>Bjorn Freeman-Benson: How to Improve Eclipse X Day</title>
	<link>http://eclipse-projects.blogspot.com/2009/11/how-to-improve-eclipse-x-day.html</link>
	<content:encoded>&lt;div style=&quot;font-size: 70%; font-style: italic;&quot;&gt;Some people thought my previous post was too negative, so I am trying again: same ideas, different wording.&lt;/div&gt;&lt;br /&gt;I attended and spoke at &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#New_York_City&quot;&gt;Eclipse Modeling Day&lt;/a&gt; in New York. The speakers were all knowledgeable and sincere: my favorite was &quot;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day/Session_Abstracts#Building_DSLs_with_Xtext&quot;&gt;Building DSLs with XText&lt;/a&gt;&quot; by Heiko Behrens of itemis.&lt;br /&gt;&lt;br /&gt;I think these &lt;a href=&quot;http://eclipsesource.com/blogs/2009/11/19/eclipsert-day-austin-2009/&quot;&gt;Eclipse X Days&lt;/a&gt; and &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Paris&quot;&gt;Eclipse Demo Camps&lt;/a&gt; and other smaller, frequent, regional events are the way to go - I think the pendulum is swinging away from expensive centralized annual conferences.&lt;sup&gt;1&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Along with the shift to local conferences is the shift away from powerpoint bullet presentations: in this era of ubiquitous information, there's no reason to go to a single location to watch presentations. You can &lt;a href=&quot;http://www.youtube.com/watch?v=OiIgYJ6mCZw&amp;amp;feature=related&quot;&gt;watch presentations&lt;/a&gt; at your desk, you can &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;read presentations&lt;/a&gt; on your iphone, ..., there's no shortage of &lt;a href=&quot;http://www.ted.com/&quot;&gt;great information&lt;/a&gt; available. People are going to a live presentation to do something other than what they can do at their computer.&lt;br /&gt;&lt;br /&gt;Thus the sole purpose of gathering people together at a Day or a Camp or a Conference is for &lt;span style=&quot;font-weight: bold;&quot;&gt;people to meet people&lt;/span&gt; and therefore the entire Day/Camp/Conference must be designed for maximal people meeting. Organizing for people meeting means that you wouldn't spread ten talks over two rooms because that splits the (already smallish) crowd into two. Two smaller sub-groups reduces the common experience base and thus reduces the hallway conversations... Etc. It's all about designing an experience for people to meet people.&lt;br /&gt;&lt;br /&gt;Shorter talks, single track, inducements to start conversations, ... that's what makes a great Day.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;font-size: 70%;&quot;&gt;&lt;sup&gt;1&lt;/sup&gt; With the recent price increase and travel and hotel costs, EclipseCon will cost more than $3,000 to attend whereas New Yorkers could attend Modeling Day for $4 in subway fare.&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/12783252-6886376998106934619?l=eclipse-projects.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-20T16:45:30+00:00</dc:date>
	<dc:creator>Bjorn Freeman-Benson</dc:creator>
</item>
<item rdf:about="http://www.vogella.de/blog/?p=1367">
	<title>Lars Vogel: Poll – Default launch configuration for Eclipse plugin  / RCP development</title>
	<link>http://www.vogella.de/blog/2009/11/20/launch-configuration-consolelog/</link>
	<content:encoded>&lt;div style=&quot;float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;&quot;&gt;
		
		&lt;/div&gt;&lt;p&gt;Eclipse shows errors during a launch via the log views in both the host and the target system and on the file system. In addition the developer can specify the flag “-consoleLog” in the launch configuration so see potential error messages in the console view. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=284704&quot;&gt;Bug 284704 &lt;/a&gt; had been opened asking if the “-consoleLog” flag could be included by default in a new launch configuration. &lt;/p&gt;
&lt;p&gt;What do you think? If you are a plugin or RCP developer please participate in the following survey:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; &lt;a href=&quot;http://www.surveymonkey.com/s.aspx?sm=5xQC1WSw_2bHjlqhjUdTeHRA_3d_3d&quot;&gt; Link to Survey &lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;——————————&lt;br /&gt;
Please note that this is my first attempt using SurveyMonkey, I hope this works well. I believe the survey &lt;strong&gt;will close after the first 100 answers&lt;/strong&gt;. If this number has not reached I’m planning to close the survey next week &lt;strong&gt;27. Nov. 2009&lt;/strong&gt;.&lt;/p&gt;
&lt;div style=&quot;clear: both;&quot;&gt; &lt;/div&gt;</content:encoded>
	<dc:date>2009-11-20T14:50:12+00:00</dc:date>
	<dc:creator>Lars Vogel</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-3691419744299351480.post-7590137065453054295">
	<title>Eclipse Enthusiasts Poznań: Eclipse Demo Camp in Poznań</title>
	<link>http://eclipser-blog.blogspot.com/2009/11/eclipse-demo-camp-in-poznan.html</link>
	<content:encoded>This year Eclipse DemoCamp will be hosted at Poznan University of Technology.&lt;br /&gt;&lt;br /&gt;Please refer to details &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Pozna%C5%84#Lectures&quot;&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Check out our special guest!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3691419744299351480-7590137065453054295?l=eclipser-blog.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-20T09:47:25+00:00</dc:date>
	<dc:creator>Christopher Daniel</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-24248206.post-7646231212825894582">
	<title>Sven Efftinge: Xtext in the automotive industry</title>
	<link>http://blog.efftinge.de/2009/11/xtext-in-automotive-industry.html</link>
	<content:encoded>&lt;a href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/Svw04lZ900I/AAAAAAAAANA/XSBSb3086sQ/s1600-h/P90053936.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/Svw04lZ900I/AAAAAAAAANA/XSBSb3086sQ/s400/P90053936.jpg&quot; alt=&quot;&quot; style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 267px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5403251799656092482&quot; /&gt;&lt;/a&gt;At this year's &lt;a href=&quot;http://www.blogger.com/www.eclipsecon.org/summiteurope2009/&quot;&gt;Eclipse Summit Europe&lt;/a&gt; there was a &lt;a href=&quot;http://www.eclipsecon.org/summiteurope2009/sessions?id=988&quot;&gt;very nice Xtext-related talk&lt;/a&gt; given by &lt;a href=&quot;https://www.xing.com/profile/Sebastian_Benz5&quot;&gt;Sebastian Benz&lt;/a&gt; who is working at BMW Car IT.&lt;br /&gt;The talk was about how they used &lt;a href=&quot;http://www.xtext.org/&quot;&gt;Xtext&lt;/a&gt; in order to develop a textual syntax and corresponding IDE for the &lt;a href=&quot;http://www.autosar.org/&quot;&gt;AUTOSAR&lt;/a&gt; standard. The name of the project is ARText and it is freely available to all AUTOSAR members as part of the &lt;a href=&quot;http://www.artop.org/&quot;&gt;Artop project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One of the biggest challenges when implementing the AUTOSAR standard is to create scalable solutions. AUTOSAR projects might become very, very big and in order to work with such huge projects the tools need to perform very well. In the modeling world people usually strife for repository-based (i.e. database-based) solutions as soon as projects get really big. However, the folks at BMW Car IT wanted to develop AUTOSAR projects in a traditional text-based manner and given all the good experiences with tools like JDT or IntelliJ, it's clear that text-based IDEs can scale very well.&lt;br /&gt;&lt;br /&gt;In order to implement the language they first had tried the old Xtext version from oAW, which was way too slow. Then, later, when the new &lt;a href=&quot;http://www.eclipse.org/Xtext&quot;&gt;TMF Xtext&lt;/a&gt; came around they gave it another try and saw that the performance had been improved significantly. Sebastian showed the following slide in his talk:&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_Ii_da0jTxAY/SwZahStRobI/AAAAAAAAANY/BBnEHjCb9Ho/s1600/performance.jpg&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_Ii_da0jTxAY/SwZahStRobI/AAAAAAAAANY/BBnEHjCb9Ho/s400/performance.jpg&quot; alt=&quot;&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 283px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406107930708779442&quot; /&gt;&lt;/a&gt;After that he explained how they have solved a couple of other problems, such as supporting different releases of the standard or making the language extendable. All the solutions looked very nice, they must have some very skilled people at BMW Car IT.&lt;br /&gt;&lt;br /&gt;He compared working with the state-of-the-art commercial graphical modeling tool (What's the name of it?) and the ARText IDE and found that the use of ARText reduces development time by about 40%.&lt;br /&gt;&lt;br /&gt;In the end there was this nice summary slide I don't want to withhold:&lt;br /&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SwZa6Up44GI/AAAAAAAAANg/FkPqBJSRRhI/s1600/summary.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_Ii_da0jTxAY/SwZa6Up44GI/AAAAAAAAANg/FkPqBJSRRhI/s400/summary.jpg&quot; alt=&quot;&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 283px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5406108360728174690&quot; /&gt;&lt;/a&gt;It was a very nice talk and of course a pleasure to see that Xtext is used by such smart people in such an interesting environment. And even better it seems that they've had as much fun using Xtext as we had and still have when developing (and using) it. :-)&lt;br /&gt;&lt;br /&gt;Btw.: If you have &lt;a href=&quot;http://blog.efftinge.de/2009/09/xtext-in-wind-energy.html&quot;&gt;other interesting applications&lt;/a&gt; of Xtext or Eclipse Modeling in general, please contact me. (Even if you don't want me to blog about it ;-))&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/24248206-7646231212825894582?l=blog.efftinge.de&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-20T09:03:54+00:00</dc:date>
	<dc:creator>Sven Efftinge</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-1585332946379204379.post-8663238745444109871">
	<title>Dave Carver: Individuals 149, IBM 132</title>
	<link>http://intellectualcramps.blogspot.com/2009/11/individuals-149-ibm-132.html</link>
	<content:encoded>&lt;a href=&quot;http://3.bp.blogspot.com/_KrN73FFeGok/SwXnpD0fb5I/AAAAAAAAAL8/Cvo5WJGlBS0/s1600/CompanyCommitters.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_KrN73FFeGok/SwXnpD0fb5I/AAAAAAAAAL8/Cvo5WJGlBS0/s400/CompanyCommitters.png&quot; alt=&quot;&quot; style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 199px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5405981620314271634&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://dash.eclipse.org/dash/commits/web-app/commit-count-loc.php?sortBy=activecommitters&amp;amp;show=&quot;&gt;Dash Company Committer Stats&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;Note: As Nick rightly points out in the comments, Dash is really a suite of related projects to help the community.  The stats shown above are only a small part of that suite.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It looks like for the first time in a while that IBM may not have the most active committers at eclipse.  It looks like the&lt;span style=&quot;font-weight: bold;&quot;&gt; Individuals&lt;/span&gt; will over take them this year.    Unfortunately I can't compare this to prior years numbers as the site is very slow, but it is a good sign that we have so many individuals committing at eclipse.     Personally, I take the &lt;a href=&quot;http://www.eclipse.org/dash&quot;&gt;DASH&lt;/a&gt; stats with a grain of salt.  Mainly because it is very easy to manipulate the total &lt;span style=&quot;font-style: italic;&quot;&gt;Lines of Code&lt;/span&gt; metric.    My own stats for the &lt;a href=&quot;http://www.starstandard.org/&quot;&gt;STAR Organization&lt;/a&gt; are probably over blown.  I know I haven't written that many lines of code.   Most of that has to come from the work with the PsychoPath processor, and creating the necessary test suite based on the W3C test suite for XQuery.   Much of that test suite code though I generated using XSLT and then tweaked as necessary.&lt;br /&gt;&lt;br /&gt;DASH is one of those projects I don't think the community takes advantage of enough. You can use DASH for all sorts of things.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Who is a commiter on what project&lt;/li&gt;&lt;li&gt;Is a person really a committer.&lt;/li&gt;&lt;li&gt;How active of a committer are they from a code stand point.&lt;/li&gt;&lt;li&gt;What projects do they have commit rights to.&lt;/li&gt;&lt;li&gt;What companies are contributing committers.&lt;/li&gt;&lt;li&gt;How active are those committers.&lt;/li&gt;&lt;/ul&gt;All of this is available through DASH.&lt;br /&gt;&lt;br /&gt;Stats and Metrics are interesting, depending on how you sort and play with the numbers, they can either back up your stance, or be used against you.     What does DASH say about you and your company?  Or what can you make it say?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1585332946379204379-8663238745444109871?l=intellectualcramps.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-20T01:57:49+00:00</dc:date>
	<dc:creator>David Carver</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-20358640.post-5881425678804664588">
	<title>Scott Lewis: ECF provides some additional REST</title>
	<link>http://eclipseecf.blogspot.com/2009/11/ecf-provides-some-additional-rest.html</link>
	<content:encoded>ECF was very fortunate to have &lt;a href=&quot;http://wiki.eclipse.org/Google_Summer_of_Code_ECF_Projects_for_2009&quot;&gt;4 Google Summer of Code projects&lt;/a&gt; coming out of the summer of 2009.  All of these innovative codebases will make it into ECF itself...and more importantly we have gained several excellent new committers.  &lt;br /&gt;&lt;br /&gt;Coming out of the GSOC project, we've just finished a major refactoring of the &lt;a href=&quot;http://wiki.eclipse.org/REST_abstraction_for_ECF&quot;&gt;REST API&lt;/a&gt;, to make it simpler, smaller, as well as better integrated with &lt;a href=&quot;http://wiki.eclipse.org/Getting_Started_with_Using_the_ECF_Remote_Services_API&quot;&gt;ECF remote services&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;The integration with ECF remote services is particularly interesting, because it provides both proxy-based/synchronous invocation, as well as full support for asynchronous invocation patterns (i.e. asynchronous-with-listener-callback and &lt;a href=&quot;http://en.wikipedia.org/wiki/Futures_and_promises&quot;&gt;futures&lt;/a&gt;).  With the integration with ECF remote services, the choice of synchronous/asynchronous invocation comes for &lt;span style=&quot;font-weight: bold;&quot;&gt;free&lt;/span&gt; for all REST-based remote services.  See &lt;a href=&quot;http://wiki.eclipse.org/REST_abstraction_for_ECF&quot;&gt;here&lt;/a&gt; to get the REST projects and use the API.  &lt;br /&gt;&lt;br /&gt;We are working on example code, and invite contributions from community members to this effort...so that we can continuously improve/simplify the API through community feedback, as well as get a wide range of example code and documentation from existing and new REST-based services.  See the &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/ecf-dev&quot;&gt;ecf-dev mailing list&lt;/a&gt; for feedback/discussion/coordination.&lt;br /&gt;&lt;br /&gt;The current test code uses the popular Twitter REST API...as an example of using the API to interoperate with non-OSGi, non-Eclipse, perhaps non-Java web service (I don't know/care how the Twitter service is actually implemented...which is what protocol-level interoperability is about).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/20358640-5881425678804664588?l=eclipseecf.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-19T18:10:34+00:00</dc:date>
	<dc:creator>Scott Lewis</dc:creator>
</item>
<item rdf:about="http://aniszczyk.org/?p=1376">
	<title>Chris Aniszczyk: Software Versioning is Ridiculous</title>
	<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/</link>
	<content:encoded>&lt;p&gt;Alright, I have to vent and go on a diatribe as its been awhile.&lt;/p&gt;
&lt;p&gt;I was in the process of updating my iPhone and was greeted with these updates.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/iphone.jpg&quot;&gt;&lt;img src=&quot;http://aniszczyk.org/wp-content/uploads/2009/11/iphone-200x300.jpg&quot; title=&quot;iPhone Update&quot; height=&quot;300&quot; width=&quot;200&quot; alt=&quot;iPhone Update&quot; class=&quot;alignnone size-medium wp-image-1454&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1.34? 1.7f? Why does Apple even bother showing the version number. I don’t even know what version of the software was previously installed. As a user, I only really care if there’s an update and what is included in that update. That’s it.&lt;/p&gt;
&lt;p&gt;The way software engineers treat version numbers is sad. Since the inception of software, we haven’t been able to come up with a reasonable versioning scheme that can be shared across technologies. Even worse, versions really mean nothing. On top of that, we confuse marketing version numbers with internal software version numbers. Here are some examples of what I’ve come across.&lt;/p&gt;
&lt;p&gt;Let’s start with Java. 1.0.3, 1.1.2, 1.4.2, 1.5.0, 1.6.0? Why both with the “1″ in the version number?&lt;/p&gt;
&lt;p&gt;Next up we have is Windows… 3.1, 2000, XP, ME and 7. Awesome.&lt;/p&gt;
&lt;p&gt;I remember when Netscape magically went from version 4 to 6. You know, we didn’t really need a version 5 because IE was already at version 6. We can’t let our competitors out version us.&lt;/p&gt;
&lt;p&gt;In Linux… 2.3, 2.4.0, 2.6.8, 2.6.8.1… it’s cool when you can start adding version segments. Linux also seems to suffer the Java problem where the first digit is meaningless… maybe Linus’ favorite number is 2. On the bright side, the second segment in the version number at least signifies whether the code is considered stable or not. I’ll give bonus points to Linux for that.&lt;/p&gt;
&lt;p&gt;SmallEiffel… -0.87, -0.79, -0.74… nice… software versions that start on the negative scale and apparently count down to zero.&lt;/p&gt;
&lt;p&gt;In areas where modules exist and there’s a goal of reusable components (think OSGi and Maven), there’s a standard version scheme with a recommended policy on how to handle version changes. The only problem is that not everyone follows the scheme given their experience where version numbers mean nothing. It also doesn’t help that version schemes may be different amongst similar component technologies.&lt;/p&gt;
&lt;p&gt;In the end, there really needs to be two types of versions, one for the marketing department and one for the development department. Confusing the two types is bad. It’s good to see that I’m not the only one that feels like this, there’s some funny commentary by Jeff Atwood on &lt;a href=&quot;http://www.codinghorror.com/blog/archives/000793.html&quot;&gt;versioning&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Shame on us in the software industry for letting this crap continue.&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-19T17:25:01+00:00</dc:date>
	<dc:creator>Chris Aniszczyk</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-6917071644715743308.post-5371046026962224841">
	<title>Andrew Eisenberg: Getting AspectJ Pointcut matching timer information in AJDT</title>
	<link>http://contraptionsforprogramming.blogspot.com/2009/11/getting-aspectj-pointcut-matching-timer.html</link>
	<content:encoded>Andy Clement has just added &lt;a href=&quot;http://andrewclement.blogspot.com/2009/11/aspectj-profiling-pointcut-matching.html&quot;&gt;pointcut match timing information to AspectJ&lt;/a&gt;.   A number of people have been asking to have this included in AJDT, and so I did a little work and made it available in the latest dev builds of AJDT for 3.4 and 3.5.&lt;br /&gt;&lt;br /&gt;Here's how to display timing information:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Select  &lt;em&gt;Verbose&lt;/em&gt; and &lt;em&gt;Pointcut matching timers&lt;/em&gt; from the AspectJ compiler preferences page (this can be either globally from Eclipse preferences or for a specific project from the project properties page):&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4117037827/&quot; title=&quot;compiler_prefs by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2708/4117037827_2f6e0b64ec_o.gif&quot; alt=&quot;compiler prefs&quot; border=&quot;1&quot; width=&quot;585&quot; height=&quot;231&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In the AJDT Event Trace View, ensure that you have &lt;em&gt;Compiler / Task list messages&lt;/em&gt; selected:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4117037871/&quot; title=&quot;event trace by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2522/4117037871_42ab26bc45_o.png&quot; alt=&quot;event trace&quot; border=&quot;1&quot; width=&quot;665&quot; height=&quot;373&quot; /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;And now on every project build (incremental or full), you will see pointcut matching times spit out to the event trace:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4117037945/&quot; title=&quot;output by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2552/4117037945_51e31b92ae_o.gif&quot; alt=&quot;output&quot; border=&quot;1&quot; width=&quot;1094&quot; height=&quot;441&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!  Questions can be sent to the &lt;a href=&quot;https://dev.eclipse.org/mailman/listinfo/ajdt-dev&quot;&gt;AJDT developer's mailing list&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6917071644715743308-5371046026962224841?l=contraptionsforprogramming.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-19T16:35:26+00:00</dc:date>
	<dc:creator>Andrew Eisenberg</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-12783252.post-5456379783086885266">
	<title>Bjorn Freeman-Benson: Another Way Not To Do XYZ Day</title>
	<link>http://eclipse-projects.blogspot.com/2009/11/another-way-not-to-do-xyz-day.html</link>
	<content:encoded>As you know from my previous post, I believe that XYZ Days (or ABC Camps, or PQR Conferences) are all about &lt;span style=&quot;font-weight: bold;&quot;&gt;people meeting people&lt;/span&gt;. So when I received an email advert for the &quot;&lt;a href=&quot;http://en.oreilly.com/gov2fall09&quot;&gt;Gov 2.0 Online Conference&lt;/a&gt;&quot;, I just cringed - it's basically a live webcast with an IRC back channel.&lt;br /&gt;&lt;br /&gt;I understand the desire to eliminate travel costs, but an IRC chat room is not a good way for people to meet. You need something more, something like &lt;a href=&quot;http://www.cisco.com/en/US/netsol/ns669/networking_solutions_solution_segment_home.html&quot;&gt;Telepresence&lt;/a&gt;. I know there have been dozens and dozens of research projects (and some products) over the years towards building a virtual conference room that provides the full range of communication bandwidth (including live video and the ability to drift in and out of conversations)... maybe the time is ripe and the bandwidth is available for a &lt;span style=&quot;font-weight: bold;&quot;&gt;people meeting people&lt;/span&gt; virtual conference technology to finally emerge.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/12783252-5456379783086885266?l=eclipse-projects.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-19T14:00:08+00:00</dc:date>
	<dc:creator>Bjorn Freeman-Benson</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-29853730.post-2675674978664078192">
	<title>Gorkem Ercan: Help for MIDP friends</title>
	<link>http://feedproxy.google.com/~r/Developing/~3/ymFWZNYv224/help-for-midp-friends.html</link>
	<content:encoded>eSWT developers usually come from two different backgrounds. Those who are familiar with desktop Java GUIs especially &lt;a href=&quot;http://www.eclipse.org/swt/&quot; target=&quot;_blank&quot;&gt;SWT&lt;/a&gt; that are starting to do mobile development or seasoned &lt;a href=&quot;http://en.wikipedia.org/wiki/Mobile_Information_Device_Profile&quot; target=&quot;_blank&quot;&gt;MIDP&lt;/a&gt; developers who are looking for advanced UI features for their applications. Looking at the questions coming from the later group of developers on forums, a common theme is about how to implement something that they could do with MIDP UI with eSWT. Here is some help for two cases that are asked often.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to fix the screen orientation to landscape or portrait? &lt;/b&gt;This feature is implemented on MIDP UIs using a &lt;a href=&quot;http://www.nokia.com/&quot; target=&quot;_blank&quot;&gt;Nokia&lt;/a&gt; specific Midlet Jad attribute &lt;a href=&quot;http://library.forum.nokia.com/topic/Java_Developers_Library/GUID-E56C1B89-5BC2-475B-A487-A514D1396D76.html&quot; target=&quot;_blank&quot;&gt;&lt;i&gt;Nokia-MIDlet-App-Orientation&lt;/i&gt;&lt;/a&gt;&lt;i&gt;. &lt;/i&gt;eSWT does not make use of the any of the Jad attributes that are present on the MIDP platform. Instead it provides APIs that enables developers to achieve the same results. This also allows eSWT applications to be easily portable between runtimes. eSWT’s way for achieving fixed screen orientation is using the &lt;a href=&quot;http://library.forum.nokia.com/index.jsp?topic=/Java_Developers_Library/GUID-84D00DFC-9B11-454C-8087-28B31515B926/org/eclipse/ercp/swt/mobile/Screen.html&quot; target=&quot;_blank&quot;&gt;Screen&lt;/a&gt; API. Here is a short snippet that fixes the orientation to portrait for all available screens.&lt;br /&gt;
&lt;pre style=&quot;background-color: #fbfbfb; border: 1px solid rgb(206, 206, 206); overflow: auto; padding: 5px; width: 510px;&quot;&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;1:     Screen[] screens = MobileDevice.getMobileDevice().getScreens();&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;2:     &lt;span style=&quot;color: blue;&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; i = 0; i &amp;lt; screens.length; i++) {&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;3:       screens[i].setOrientation(Screen.PORTRAIT);&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;4:     }&lt;/pre&gt;
&lt;/pre&gt;A good thing to remember is some devices may actually plug new screens, for the best results it is a good idea to listen for Screen changes using the listeners from &lt;a href=&quot;http://library.forum.nokia.com/topic/Java_Developers_Library/GUID-84D00DFC-9B11-454C-8087-28B31515B926/org/eclipse/ercp/swt/mobile/MobileDevice.html&quot; target=&quot;_blank&quot;&gt;MobileDevice&lt;/a&gt; APIs.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to put an eSWT application to background?&lt;/b&gt; On mobile platforms that support background applications MIDP developers achieve sending the application to background by removing the current Displayable. Here is an &lt;a href=&quot;http://wiki.forum.nokia.com/index.php/How_to_send_MIDlet_to_background&quot; target=&quot;_blank&quot;&gt;entry&lt;/a&gt; that explains how it is done on MIDP LCDUI. The same can be achieved for eSWT applications by setting the active &lt;a href=&quot;http://library.forum.nokia.com/topic/Java_Developers_Library/GUID-84D00DFC-9B11-454C-8087-28B31515B926/org/eclipse/swt/widgets/Shell.html&quot; target=&quot;_blank&quot;&gt;Shell&lt;/a&gt; to minimized. Here is how. &lt;br /&gt;
&lt;pre style=&quot;background-color: #fbfbfb; border: 1px solid rgb(206, 206, 206); overflow: auto; padding: 5px; width: 510px;&quot;&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;1:         Shell activeShell = display.getActiveShell();&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;2:         &lt;span style=&quot;color: blue;&quot;&gt;while&lt;/span&gt;(activeShell != &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt; ){&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;3:           activeShell.setMinimized(&lt;span style=&quot;color: blue;&quot;&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;4:           activeShell = display.getActiveShell();&lt;/pre&gt;&lt;pre style=&quot;background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;&quot;&gt;5:         }&lt;/pre&gt;
&lt;/pre&gt;The example snippet takes into account that you may actually have more than one top-level Shell, which the second one may get active once the currently active one is minimized. &lt;br /&gt;
&lt;br /&gt;
I will try to make more of similar kind of posts in the future. Please do comment if you have any suggestions for content. And of course. I continue to keep an eye on the &lt;a href=&quot;http://discussion.forum.nokia.com/forum/&quot; target=&quot;_blank&quot;&gt;Nokia forums&lt;/a&gt; and &lt;a href=&quot;http://www.eclipse.org/forums/index.php?t=thread&amp;amp;frm_id=33&quot; target=&quot;_blank&quot;&gt;Eclipse discussion boards&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/29853730-2675674978664078192?l=www.gorkem-ercan.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/JAkfvTaLLMPRvn1hhhXlWI3tWLI/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/JAkfvTaLLMPRvn1hhhXlWI3tWLI/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/JAkfvTaLLMPRvn1hhhXlWI3tWLI/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/JAkfvTaLLMPRvn1hhhXlWI3tWLI/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Developing?a=ymFWZNYv224:mb6NVwcYc8Q:EtZL8vNkiHE&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Developing?i=ymFWZNYv224:mb6NVwcYc8Q:EtZL8vNkiHE&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Developing?a=ymFWZNYv224:mb6NVwcYc8Q:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Developing?d=yIl2AUoC8zA&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Developing?a=ymFWZNYv224:mb6NVwcYc8Q:I9og5sOYxJI&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Developing?d=I9og5sOYxJI&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Developing?a=ymFWZNYv224:mb6NVwcYc8Q:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Developing?i=ymFWZNYv224:mb6NVwcYc8Q:F7zBnMyn0Lo&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/Developing/~4/ymFWZNYv224&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2009-11-19T10:23:44+00:00</dc:date>
	<dc:creator>gorkem</dc:creator>
</item>
<item rdf:about="http://manuelselva.wordpress.com/?p=272">
	<title>Manuel Selva: SWT FileDialog and Windows Hide Extensions For Known File Types</title>
	<link>http://manuelselva.wordpress.com/2009/11/19/swt-filedialog-and-windows-hide-extensions-for-known-file-types/</link>
	<content:encoded>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;This morning we encountered a strange difference while running the following code on two Windows workstations and directly clicking the OK button of the dialog.&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt; FileDialog dialog = new FileDialog(window.getShell(), SWT.SAVE);
 dialog.setText(&quot;Save as...&quot;);
 dialog.setFileName(&quot;C:\\Test\\toSave.test&quot;);
 dialog.setFilterPath(&quot;C:\\Test\\&quot;);
 dialog.setFilterExtensions(new String[]{&quot;*.sav&quot;});
 String path = dialog.open();
 System.out.println(path);
&lt;/pre&gt;
&lt;p&gt;The first workstation printed C:\Test\toSave.test while the second one printed C:\Test\toSave.test&lt;strong&gt;.sav&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;Of course the wanted behaviour is the second one !!!&lt;/p&gt;
&lt;p&gt;After investigations we identified the difference on the workstations causing this “SWT” difference: the first workstation HAS the windows folder option called Hide Extensions For Known File Types checked while the second one HASN’T !!!&lt;/p&gt;
&lt;p&gt;To fix the issue we had to modify the setFileName method call as following:&lt;/p&gt;
&lt;pre class=&quot;brush: java;&quot;&gt; dialog.setFileName(&quot;C:\\Test\\toSave.test.sav&quot;);
&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Conclusion&lt;/span&gt;: Looking back to the initial code, it seems logic to have to set a file name &lt;strong&gt;matching&lt;/strong&gt; the specified filter extensions.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/manuelselva.wordpress.com/272/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/manuelselva.wordpress.com/272/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=manuelselva.wordpress.com&amp;amp;blog=2529905&amp;amp;post=272&amp;amp;subd=manuelselva&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-19T09:41:42+00:00</dc:date>
	<dc:creator>Manuel</dc:creator>
</item>
<item rdf:about="http://www.vogella.de/blog/?p=1371">
	<title>Lars Vogel: Fresh (and free) icons for Eclipse applications</title>
	<link>http://www.vogella.de/blog/2009/11/19/icons-eclipse/</link>
	<content:encoded>&lt;div style=&quot;float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;&quot;&gt;
		
		&lt;/div&gt;&lt;p&gt;I always use the Eclipse icons for my applicatons. Recently one of my users complainted that my icons look “oldisch”….&lt;/p&gt;
&lt;p&gt;I quick call for help via &lt;a href=&quot;http://www.twitter.com/vogella&quot;&gt;twitter&lt;/a&gt; returned the following sites which provide free and fantastic looking icons. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://commons.wikimedia.org/wiki/Crystal_Clear&quot;&gt;http://commons.wikimedia.org/wiki/Crystal_Clear&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.famfamfam.com&quot;&gt;http://www.famfamfam.com &lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://iconlet.com&quot;&gt;http://iconlet.com&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.iconfinder.net/browse&quot;&gt;http://www.iconfinder.net/browse&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to everyone for the links. Hope this helps also others to spice up their applications. &lt;img src=&quot;http://www.vogella.de/blog/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;(Disclaimer: Of course these icons are not specific to Eclipse and could be used in other applications as well)&lt;/p&gt;
&lt;div style=&quot;clear: both;&quot;&gt; &lt;/div&gt;</content:encoded>
	<dc:date>2009-11-19T05:17:20+00:00</dc:date>
	<dc:creator>Lars Vogel</dc:creator>
</item>
<item rdf:about="http://dev.eclipse.org/blogs/wayne/?p=897">
	<title>Wayne Beaton: Get your IP Log in Order</title>
	<link>http://dev.eclipse.org/blogs/wayne/2009/11/18/get-your-ip-log-in-order/</link>
	<content:encoded>&lt;p&gt;Having a up-to-date (and correct) IP Log is important for projects and we’re trying to provide as much help as we can to make sure that they’re in order.&lt;/p&gt;
&lt;p&gt;I’ve been working with a couple of projects to help them get their IP Logs in order. In the process, I’ve managed to generalize a “review” script that run queries against the &lt;a href=&quot;https://bugs.eclipse.org/bugs&quot;&gt;Eclipse Bugzilla&lt;/a&gt; instance to help identify bugs and attachments that should potentially be referenced as contributions in a project’s IP Log. I’ve already used this script to identify a couple of contributions that I neglected to record for the &lt;a href=&quot;http://www.eclipse.org/examples&quot;&gt;Examples&lt;/a&gt; and &lt;a href=&quot;http://www.eclipse.org/ide4edu&quot;&gt;Eclipse IDE for Education&lt;/a&gt; (ide4edu) projects.&lt;/p&gt;
&lt;p&gt;The script is currently pretty rough. I haven’t made any linkage to it from any other &lt;a href=&quot;http://www.eclipse.org&quot;&gt;eclipse.org&lt;/a&gt; page, so you have to manually modify the URL to make it work for your project. It could probably also stand to have a little more prose added to better describe what it provides. You can see the results of running the script for &lt;a href=&quot;http://eclipse.org/projects/temporary/iplog_review.php?id=tools.mylyn&quot;&gt;Mylyn&lt;/a&gt;, and &lt;a href=&quot;http://eclipse.org/projects/temporary/iplog_review.php?id=technology.examples&quot;&gt;Examples&lt;/a&gt;. To try other projects, change the &lt;em&gt;id&lt;/em&gt; parameter value to the id of the project (e.g. &lt;em&gt;tools.mylyn&lt;/em&gt;, or &lt;em&gt;technology.examples&lt;/em&gt;). FWIW, it doesn’t work on &lt;em&gt;eclipse.platform&lt;/em&gt; as it requires too much server memory and it bails out. Close to a decade’s worth of bug reports will do that for you.&lt;/p&gt;
&lt;p&gt;Using this script to poke around a bit, I’ve noticed a few projects that still don’t quite get the iplog+ thing. Clearly, I need to do a better job of working with projects to get this right. &lt;/p&gt;
&lt;p&gt;The main benefit of using the Bugzilla &lt;em&gt;iplog&lt;/em&gt; flag is that we can use this information to automatically generate an IP Log for the project. However, the generation process is only as good as the data it’s provided with. Here are a few pointers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only actual &lt;em&gt;code&lt;/em&gt; contributions need to be included in the IP Log. &lt;/li&gt;
&lt;li&gt;Only contributions from non-committers need to be included in the IP Log&lt;/li&gt;
&lt;li&gt;Contributions that come from a developer &lt;em&gt;before&lt;/em&gt; they become a committer do need to be included in the IP Log; the tools are smart enough to handle this time-sensitivity (so committer-provided contributions erroneously flagged as iplog+ are ignored).&lt;/li&gt;
&lt;li&gt;Ideally, &lt;em&gt;attachments&lt;/em&gt; should be flagged as iplog+ rather than bugs (if an attachment is flagged, the bug itself almost certainly should not be). &lt;/li&gt;
&lt;li&gt;A bug might be flagged as iplog+ if the summary or one of the comments contains code that’s been rolled into the project’s source code repository.&lt;/li&gt;
&lt;li&gt;Marking the bug iplog+ means that the summary and every comment are potential contributions that will need to be manually filtered when the IP Log is generated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The page that results from the “review” script is read-only. You can’t actually change the iplog flag’s value from the page. But there are handy links that take you right to where you need to be if you decide that you do need to flag something. Hopefully this makes it easier. &lt;/p&gt;
&lt;p&gt;As always, I invite your feedback. If this page turns out to be useful, I’ll sort out how to better incorporate it into eclipse.org.&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-18T19:44:26+00:00</dc:date>
	<dc:creator>Wayne Beaton</dc:creator>
</item>
<item rdf:about="http://tasktop.com/blog/?p=1236">
	<title>Mik Kersten: Growing open source ecosystems: the install story</title>
	<link>http://tasktop.com/blog/eclipse/growing-open-source-ecosystems-install</link>
	<content:encoded>&lt;p&gt;At the Symbian Exchange &amp;amp; Expo conference, I presented a talk called &lt;i&gt;Coordinating contributions: lessons learned growing an OSS community&lt;/i&gt;, sharing my lessons learned from the AspectJ and Eclipse Mylyn communities.  The Symbian Foundation has adopted the EPL, Bugzilla, and an open development model.  What makes the Mylyn project an interesting data point is that with the same infrastructure, it has seen over 800 bug and enhancement reports resolved by patches from a very active contributor community.  That’s around 1/7 of our bugs resolved, and falls within the top two Eclipse projects for total contribution count. While Tasktop Technologies has provided the resources for maintaining, supporting and evolving the Mylyn frameworks, we have managed to create a very permeable and successful ecosystem for contributors. &lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://tasktop.com/blog/wp-content/uploads/2009/11/contribs.png&quot; title=&quot;&quot; height=&quot;375&quot; width=&quot;500&quot; alt=&quot;Modular Platform, Incentive Structure, Collaboration Tools&quot; class=&quot;size-full wp-image-1239&quot; /&gt;&lt;/div&gt;
&lt;p&gt;The talk broke the contribution problem up into three pillars: the modular platform that defines the landscape of interesting contributions, the incentive structure needed to drive contributors, and the collaboration tools that support the open development process.  While responding questions after the presentation, I was struck by how important the extension install story is to the first two pillars.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Open platforms need easy extension install&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If you release a cool tool and nobody can find or install it, does it still make a sound?  Not if the sound that you’re after is the roar of broad adoption.  One ingredient of an install story is the dependency management technology, which defines the modularity of extensions.  In Eclipse, this is a solved problem thanks to OSGi and the Equinox P2 provisioning system. &lt;/p&gt;
&lt;p&gt;Another ingredient is incentive structure.  The Eclipse Plug-in Central site provided a web portal for listing extensions, but was disconnected from an install story.  In contrast, consider the success of the market-driven incentives of Apple’s app store.  Or the seamless install process of iPhone apps and Firefox add-ons.  Incredible ecosystem growth can result when install technology, modularity mechanisms, and incentive structure line up.  While Eclipse provides a great generic install and dependency management mechanism, as the number of Mylyn integrations grew, we realized that a limiting factor of adoption was the discovery of integrations and ease of their installation.  In order to continue to support our growth and not overly bias our ecosystem to those extensions that were hosted on Eclipse.org, we needed to streamline Eclipse’s install experience for Mylyn connectors. So we created the &lt;a href=&quot;http://tasktop.com/blog/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3Rhc2t0b3AuY29tL2Jsb2cvZWNsaXBzZS9teWx5bi1jb25uZWN0b3ItZGlzY292ZXJ5&quot;&gt;Mylyn Connector Discovery&lt;/a&gt; tool.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://tasktop.com/blog/wp-content/uploads/2009/06/connector-discovery-small.png&quot; title=&quot;connector-discovery-small&quot; height=&quot;656&quot; width=&quot;400&quot; alt=&quot;connector-discovery-small&quot; class=&quot;aligncenter size-full wp-image-650&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Generalizing Mylyn Connector Discovery&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Since the release of Connector Discovery release with Eclipse Galileo, the listing has grown and received consistent praise from users and integrators. We’ve since seen many requests to generalize the mechanism to other install use cases ranging from Eclipse Pulsar SDK installs to the exciting new &lt;a target=&quot;&quot;&gt;Eclipse Marketplace&lt;/a&gt; effort.  The &lt;a target=&quot;&quot;&gt;SpringSource Tool Suite&lt;/a&gt; is a great example of how the Discovery UI can be leveraged for targeted extension install.&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://tasktop.com/blog/wp-content/uploads/2009/11/sts-extensions.png&quot; title=&quot;&quot; height=&quot;387&quot; width=&quot;452&quot; alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-1241&quot; /&gt;&lt;/div&gt;
&lt;p&gt;In response to this interest, we have generalized the code and are proposing to move it to the the Equinox P2 project, home of Eclipse install.  For details on that proposal see &lt;a target=&quot;&quot;&gt;Eclipse bug 295273&lt;/a&gt;.  What I hope we see in the Eclipse Helios release time frame is the Discovery mechanism as P2 API for special-purpose install workflows, with extensions for Mylyn Connectors, Eclipse Marketplace and more.  This Discovery install story is additionally relevant to Eclipse Rich Client Platform (RCP) install scenarios, which often need a simplified and tailored install experience.  &lt;/p&gt;
&lt;p&gt;While serving on the Eclipse board of directors, a concern I repeatedly raised was the repeated problems that arose from an incomplete install story.  The great thing about being part of a meritocratic ecosystem like Eclipse, which rewards participation, is the ability to put code and resources where your mouth is.  &lt;/p&gt;
&lt;p&gt;&lt;b&gt;The economics of extension listings&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A tension that surfaces around shared resources is the &lt;a target=&quot;&quot;&gt;Tragedy of the Commons&lt;/a&gt;.  This gets discussed repeatedly in Eclipse, and can happen in vendor neutral open source ecosystems when organizations attempt to derive value from common frameworks and tools without contributing enough back. As a result, those ecosystems tend to be lead by organizations that understand commercial open source enough to act with &lt;a target=&quot;&quot;&gt;enlightened self-interest&lt;/a&gt;.  But with the continually growing number of Mylyn integrations, we also needed to consider companies with a shorter-term outlook.  For example, like other projects, we see the pattern of vendors leveraging our frameworks in ways where they impose a significant support burden on the committers, and not contributing back in terms of patches or resources to help grow those frameworks.  While I believe that an open source project like Mylyn should welcome all integrations, an indefinitely increasing support burden is not scalable and can reduce the time available for innovation.  We need to avoid the Easter Island effect where everyone builds themselves self-serving heads without prioritizing the long-term health of the ecosystem within which they operate (see &lt;a target=&quot;&quot;&gt;Easter Island/Collapse of the Ecosystem&lt;/a&gt;).&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;img src=&quot;http://tasktop.com/blog/wp-content/uploads/2009/11/easter-island.jpg&quot; title=&quot;&quot; height=&quot;300&quot; width=&quot;450&quot; alt=&quot;&quot; class=&quot;aligncenter size-full wp-image-1250&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Discovery style extension listings provide a great opportunity to encourage meritocracy, one of the driving principles of a vendor-neutral development process like Eclipse’s, and help align the interests of a project with those leveraging on it.  For good references on meritocracy see &lt;a target=&quot;&quot;&gt;Chris Aniszczyk’s recent post&lt;/a&gt;.  In preparation for last June’s release of the Mylyn Connector Discovery, we worked with our community to create &lt;a target=&quot;&quot;&gt;listing criteria&lt;/a&gt; that achieve this balance.  To paraphrase here, committers can vote you into the listing if you contribute enough to the project to offset the additional burden that you impose on the committers.  If you are a vendor and are pulling your weight on the project by growing the frameworks and tools for all integrators to leverage, you can get your own section.  If you have a community-oriented open source integration, committers go an extra mile and offer you UI and API reviews in order to help encourage cross-ecosystem collaborations, which can yield a long-term benefit, as evidenced by our collaborations with Mozilla. The listing criteria are open to feedback and input on &lt;a target=&quot;&quot;&gt;Eclipse bug 279709&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To date, this meritocratic listing approach has worked extremely well for promoting high-quality extensions and contributions.  It has encouraged the growth and adoption of independent efforts such as the Mantis connector, reduced the adoption bias we had of connectors that were hosted on Eclipse.org, and provided a mechanism for promoting the latest round of commercial integrations needed to grow the Mylyn user base.  &lt;/p&gt;
&lt;p&gt;With a generalized Discovery mechanism in place, I hope that we see a similar trend for other special-purpose Eclipse extensions.  For example, the Eclipse Marketplace can use ranking in the Discovery listings for promoting members’ solutions.  Projects like Eclipse Pulsar can make their key contributors’ mobile SDKs trivial to install.  And the next round of innovative Eclipse projects can use this mechanism to help grow their ecosystem of extensions by promoting meritocracy.
&lt;/p&gt;&lt;div align=&quot;center&quot;&gt;
&lt;p class=&quot;smallParagraph&quot;&gt;&lt;a href=&quot;http://tasktop.com/blog/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3Rhc2t0b3AuY29t&quot;&gt;&lt;b&gt;Be more productive.&lt;/b&gt;&lt;/a&gt;&lt;b&gt; &lt;a href=&quot;http://tasktop.com/blog/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3Rhc2t0b3AuY29tL3Byb2R1Y3RzL2d1YXJhbnRlZS8=&quot;&gt; Guaranteed.&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
 &lt;img width=&quot;1&quot; style=&quot;display: none;&quot; src=&quot;http://tasktop.com/blog/wp-content/plugins/feed-statistics.php?view=1&amp;amp;post_id=1236&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2009-11-18T19:43:19+00:00</dc:date>
	<dc:creator>Mik Kersten</dc:creator>
</item>
<item rdf:about="http://blog.balfes.net/?p=906">
	<title>Bob Balfe: Facebook has Easter Eggs!</title>
	<link>http://blog.balfes.net/?p=906</link>
	<content:encoded>&lt;p class=&quot;GenericStory_Message&quot;&gt;From my buddy Mark:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class=&quot;GenericStory_Message&quot;&gt;&lt;em&gt;“Go to any Facebook page and click once in a white area just to get a blank timeline to do this with. Press up arrow, up arrow, down arrow, down arrow, left arrow, right arrow, left arrow, right arrow, B, A, then the Return key. If you left-click or right-click, scroll or push any keyboard key after that, a strange shining set of circular rings will appear on your screen.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://blog.balfes.net/wp-content/uploads/2009/11/fb-eastereggs.jpg&quot;&gt;&lt;img src=&quot;http://blog.balfes.net/wp-content/uploads/2009/11/fb-eastereggs.jpg&quot; title=&quot;fb-eastereggs&quot; height=&quot;349&quot; width=&quot;633&quot; alt=&quot;fb-eastereggs&quot; class=&quot;aligncenter size-full wp-image-907&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p class=&quot;GenericStory_Message&quot;&gt;&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;/blockquote&gt;



&lt;p class=&quot;technorati-tags&quot;&gt;technorati tags: &lt;a href=&quot;http://technorati.com/tag/Facebook&quot; class=&quot;technorati-link&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;Facebook&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-18T18:19:37+00:00</dc:date>
	<dc:creator>Bob Balfe</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-8878360187292205236.post-6785913037209843729">
	<title>Maarten Meijer: Industrial SQL Connector versatility</title>
	<link>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-versatility.html</link>
	<content:encoded>I just created a quick solution for &lt;a href=&quot;https://bugs.eclipse.org/150174&quot;&gt;https://bugs.eclipse.org/150174&lt;/a&gt; Eventum Mylyn connector using the Industrial SQL Mylyn connector  toolkit in under 60 minutes! Screenshots @ bug, details to follow here.&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb65TxEkI/AAAAAAAAF7s/JCXpt2NQIUg/s1600-h/eventum-repository-validated.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb65TxEkI/AAAAAAAAF7s/JCXpt2NQIUg/s320/eventum-repository-validated.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 311px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5377328653710463554&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb6ao30lI/AAAAAAAAF7k/-1DFc-4UdbM/s1600-h/eventum-repository-entered.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb6ao30lI/AAAAAAAAF7k/-1DFc-4UdbM/s320/eventum-repository-entered.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 311px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5377328645477487186&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_j0a2Zacz7c0/SqAb6FsqsqI/AAAAAAAAF7c/fsKaUvwd7n0/s1600-h/eventum-form-based-query.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_j0a2Zacz7c0/SqAb6FsqsqI/AAAAAAAAF7c/fsKaUvwd7n0/s320/eventum-form-based-query.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 260px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5377328639856259746&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb7I0o4-I/AAAAAAAAF70/ZDhSfqOxQcQ/s1600-h/eventum-tasklist-empty.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqAb7I0o4-I/AAAAAAAAF70/ZDhSfqOxQcQ/s320/eventum-tasklist-empty.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 155px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5377328657874871266&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A ZIP with basic code is available &lt;a href=&quot;http://bugs.industrial-tsi.com/mylyndb/industrial-eventum-0.1.0.zip&quot;&gt;here&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8878360187292205236-6785913037209843729?l=eclipsophy.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-18T14:01:51+00:00</dc:date>
	<dc:creator>Maarten Meijer</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-8878360187292205236.post-6283811247034822539">
	<title>Maarten Meijer: Industrial SQL Connector and Eventum</title>
	<link>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum.html</link>
	<content:encoded>When looking at the &lt;a href=&quot;http://www.eclipse.org/mylyn/&quot;&gt;Mylyn&lt;/a&gt; connector &lt;a href=&quot;https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;chfieldto=Now&amp;amp;product=Mylyn&amp;amp;query_format=advanced&amp;amp;remaction=&amp;amp;short_desc=%5Bconnector%5D&amp;amp;short_desc_type=anywordssubstr&amp;amp;order=votes%2Cbug_id&quot;&gt;Most Wanted List&lt;/a&gt; you'll see many issue tracker that do not have a dedicated connector to the Mylyn Eclipse Task based UI.&lt;br /&gt;&lt;br /&gt;Many of these are backed by databases to store all the complex relations and workflow. In the next several blogs I'm going to demonstrate how easy it is to connect Mylyn to any database backed issue tracker using the &lt;a href=&quot;http://wiki.eclipse.org/Mylyn/Incubator/Generic_SQL_Connector&quot;&gt;Industrial SQL Connector&lt;/a&gt;.&lt;br /&gt;For the example I will be using &lt;a href=&quot;http://dev.mysql.com/downloads/other/eventum/&quot;&gt;Eventum&lt;/a&gt;, created and used by MySQL, number 4 on the list. It is also OSS, so we can easily get it to play around with.&lt;br /&gt;This will not be a full fledged connector, but a quick start to get the task change notification directly from email into Eclipse as first step in making you &lt;a href=&quot;http://tasktop.com/blog/mylyn/rescue-inbox-from-bug&quot;&gt;more productive&lt;/a&gt;.&lt;br /&gt;&lt;h4&gt;Install Industrial SQL Connector&lt;/h4&gt;&lt;br /&gt;This connector can be installed from &lt;a href=&quot;http://bugs.industrial-tsi.com/mylyndb/&quot;&gt;http://bugs.industrial-tsi.com/mylyndb/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCSL_ZS2I/AAAAAAAAF8g/SxxSl4aXuOY/s1600-h/industrial-install.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCSL_ZS2I/AAAAAAAAF8g/SxxSl4aXuOY/s320/industrial-install.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 266px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378637472699337570&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Download empty MySQL connector Fragment&lt;/h4&gt;&lt;br /&gt;You can download a ready made empty MySQL connector Fragment as described &lt;a href=&quot;http://eclipsophy.blogspot.com/2009/08/connecting-mylyn-to-mysql-database.html#resources&quot;&gt;here&lt;/a&gt; and unzip it and rename some files, so we get this structure:&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTD6VjaUhI/AAAAAAAAF9A/xl1NPk1tzhE/s1600-h/eventum-fragment.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTD6VjaUhI/AAAAAAAAF9A/xl1NPk1tzhE/s320/eventum-fragment.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 301px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378639261972714002&quot; /&gt;&lt;/a&gt;&lt;br /&gt;I want to make this easier but need code from PDE, please vote for &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=288547&quot;&gt;bug 288547: Add a NewFragmentFromTemplateWizard with API to make Fragments from templates&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Install Eventum 2.2&lt;/h4&gt;&lt;br /&gt;Install this on you local machine following instructions provided &lt;a href=&quot;http://forge.mysql.com/wiki/Eventum/&quot;&gt;here&lt;/a&gt;, so you can inspect the database tables, create and test the queries.&lt;br /&gt;Then when you are &lt;em&gt;completely satisfied&lt;/em&gt; that it works, do you change and connect to the production database!&lt;br /&gt;Once the default install is completed use a database inspection tool like phpMyAdmin or soemthing else to familiarize yourself with the database structure. Luckily the Eventum designers used a very consistent naming scheme for TABLES and COLUMNS!&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCRtc39NI/AAAAAAAAF8Y/IJabL7_3Giw/s1600-h/eventum-database-structure.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTCRtc39NI/AAAAAAAAF8Y/IJabL7_3Giw/s320/eventum-database-structure.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 298px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378637464501482706&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Once completed you can log into the system and start creating some initial users, projects and issues.&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTCTHGDIJI/AAAAAAAAF8w/28TDziDEOZQ/s1600-h/eventum-list-of-issues.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTCTHGDIJI/AAAAAAAAF8w/28TDziDEOZQ/s320/eventum-list-of-issues.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 250px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378637488564936850&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqTD7oHW4UI/AAAAAAAAF9Q/__RrcWvIKsw/s1600-h/eventum-test-issue-1.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_j0a2Zacz7c0/SqTD7oHW4UI/AAAAAAAAF9Q/__RrcWvIKsw/s320/eventum-test-issue-1.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 250px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378639284135190850&quot; /&gt;&lt;/a&gt;&lt;br /&gt;While creating a user, a project and a test issue in the web interface, make notes of what backend database tables change and get filled, because the Industrial SQL Connector is all about mapping database tables to task fields. Databases are usually constructed with record ID's for the machine and record names or titles for us, the users. As Mylyn is about making us more productive, we will as a matter of policy retrieve the human-readable formats from the database and map those back into records using &lt;code&gt;JOIN&lt;/code&gt; statements. The preliminary mapping is as follows:&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Task Side&lt;/th&gt;&lt;th&gt;Eventum Table&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tasks&lt;/td&gt;&lt;td&gt;eventum_issue&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Products&lt;/td&gt;&lt;td&gt;eventum_project&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Issue Status&lt;/td&gt;&lt;td&gt;eventum_status, eventum_resolution&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Issue Priority&lt;/td&gt;&lt;td&gt;eventum_project_priority&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Comments&lt;/td&gt;&lt;td&gt;eventum_issue_history&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;People&lt;/td&gt;&lt;td&gt;eventum_user, eventum_issue_user&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h4&gt;Creating the Connector: step 1 creating extension&lt;/h4&gt;&lt;br /&gt;Open the fragment.xml and create extension &lt;code&gt;org.eclipse.mylyn.industrial.core.persistor&lt;/code&gt; and create a &lt;code&gt;persistor-config&lt;/code&gt;, add an &lt;code&gt;ibatis-config&lt;/code&gt;. Fill in the fields as below:&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTPc7ga7NI/AAAAAAAAF9Y/4tmVh_5WaI0/s1600-h/eventum-fragment-extension.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SqTPc7ga7NI/AAAAAAAAF9Y/4tmVh_5WaI0/s320/eventum-fragment-extension.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 251px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378651950904175826&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Creating the Connector: step 2 retrieving repository elements&lt;/h4&gt;&lt;br /&gt;Edit the file &lt;code&gt;maps/eventum-direct-db/RepositoryMapEventum.xml&lt;/code&gt; as follows.&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [19, 23, 27, 33]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;    PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;    &quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;    licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;    Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;    http://eclipsophy.blogger.com&lt;br /&gt;   &lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Repository&quot;&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;Legal issue owners and other legal values for fields are taken here&lt;br /&gt;from DISTINCT values in the database. An alternative would be a&lt;br /&gt;SELECT from any table containing legal users.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;!-- return a list of legal issue owners. --&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;legalOwners&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    SELECT DISTINCT usr_full_name FROM eventum_user&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;!-- return a list of legal products. --&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;legalProducts&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    SELECT DISTINCT prj_title FROM eventum_project&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;!-- return a list of legal issue status values. --&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;legalIssueStatus&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    SELECT DISTINCT sta_title FROM eventum_status&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;!-- return a legal list of priority values.&lt;br /&gt;    Note that in Mylyn these all need to be mapped to one of&lt;br /&gt;    &quot;P1&quot;, &quot;P2&quot;, &quot;P3&quot;, &quot;P4&quot; or &quot;P5&quot;. --&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;legalPriority&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    SELECT DISTINCT concat('P',pri_rank) FROM eventum_project_priority&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;lt;!-- this query will be executed when pressing the Validate Connection in&lt;br /&gt;the Repository Settings dialog --&amp;gt;&lt;br /&gt;&amp;lt;statement id=&quot;validate&quot; resultClass=&quot;boolean&quot;&amp;gt;SELECT TRUE &amp;lt;/statement&amp;gt;&lt;br /&gt;&amp;lt;!-- this query will be executed when pressing the Validate Connection in&lt;br /&gt;    the Repository Settings dialog --&amp;gt;&lt;br /&gt;&amp;lt;statement id=&quot;authenticate&quot; resultClass=&quot;boolean&quot;&amp;gt;&lt;br /&gt;    SELECT TRUE&lt;br /&gt;&amp;lt;/statement&amp;gt;&lt;br /&gt;&amp;lt;!-- This query will be executed when validation fails and the repository&lt;br /&gt;can be initialized or updated based on version (like local Derby) --&amp;gt;&lt;br /&gt;&amp;lt;statement id=&quot;initialize&quot; resultClass=&quot;string&quot; parameterClass=&quot;string&quot;&amp;gt;&lt;br /&gt;    $value$&lt;br /&gt;&amp;lt;/statement&amp;gt;&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This will give us a nice prefilled dialog in of the &lt;em&gt;Form Based Query&lt;/em&gt;:&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTU4HSnW7I/AAAAAAAAF9g/E3uz-Y2jZjU/s1600-h/eventum-form-based-query.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTU4HSnW7I/AAAAAAAAF9g/E3uz-Y2jZjU/s320/eventum-form-based-query.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 260px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378657915482102706&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Creating the Connector: step 3 mapping the task&lt;/h4&gt;&lt;br /&gt;Open the file &lt;code&gt;maps/eventum-direct-db/TaskMapEventum.xml&lt;/code&gt; and locate the query &lt;code&gt;getForKey&lt;/code&gt;. This query retrieves all mappable issue attributes give an issue ID to use as key.&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;http://eclipsophy.blogger.com&lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Tasks&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;select id=&quot;getForKey&quot; resultClass=&quot;ibatisTask&quot;&amp;gt;&lt;br /&gt; SELECT&lt;br /&gt; iss_id as taskId,&lt;br /&gt; concat('P',pri_rank) AS priority,&lt;br /&gt; usr_full_name AS owner,&lt;br /&gt; iss_summary AS summary,&lt;br /&gt; iss_description as notes,&lt;br /&gt; prj_title AS product,&lt;br /&gt; sta_title AS issueStatus,&lt;br /&gt; iss_created_date AS creationDate,&lt;br /&gt; iss_closed_date AS completionDateDate,&lt;br /&gt; iss_expected_resolution_date AS dueDateDate&lt;br /&gt; FROM eventum_issue&lt;br /&gt;  INNER JOIN eventum_issue_user ON isu_iss_id = iss_id &lt;br /&gt;  INNER JOIN eventum_user ON isu_usr_id = usr_id &lt;br /&gt;  INNER JOIN eventum_project ON iss_prj_id = prj_id &lt;br /&gt;  INNER JOIN eventum_status ON iss_sta_id = sta_id &lt;br /&gt;  INNER JOIN eventum_project_priority ON iss_pri_id = pri_id &lt;br /&gt;        WHERE iss_id LIKE #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;h4&gt;Creating the Connector: step 4 adding dynamic search&lt;/h4&gt;&lt;br /&gt;We also need to edit the statement in &lt;code&gt;searchForKey&lt;/code&gt; for the Form Based Query to make its selection:&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28, 29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49, 50,51,52]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;http://eclipsophy.blogger.com&lt;br /&gt;&lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Tasks&quot;&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;select id=&quot;searchForKey&quot; parameterClass=&quot;ibatisCriteria&quot; resultClass=&quot;string&quot;&amp;gt;&lt;br /&gt; SELECT DISTINCT iss_id as taskId FROM eventum_issue&lt;br /&gt; &amp;lt;dynamic&amp;gt; &lt;br /&gt; &amp;lt;isNotEmpty property=&quot;product&quot;&amp;gt;&lt;br /&gt;  INNER JOIN eventum_project  ON iss_prj_id = prj_id&lt;br /&gt; &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt; &amp;lt;isNotEmpty property=&quot;priority&quot;&amp;gt;&lt;br /&gt;  INNER JOIN eventum_project_priority ON iss_pri_id = pri_id&lt;br /&gt; &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt; &amp;lt;isNotEmpty property=&quot;issueStatus&quot;&amp;gt;&lt;br /&gt;  INNER JOIN eventum_status  ON iss_sta_id = sta_id&lt;br /&gt; &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt; &amp;lt;/dynamic&amp;gt;&lt;br /&gt; &amp;lt;dynamic prepend=&quot;WHERE&quot;&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;summary&quot; prepend=&quot;AND&quot;&lt;br /&gt;   removeFirstPrepend=&quot;true&quot;&amp;gt; iss_summary LIKE '%$summary$%'&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;creationDateBefore&quot; prepend=&quot;AND&quot;&lt;br /&gt;   removeFirstPrepend=&quot;true&quot;&amp;gt; iss_created_date &amp;lt;= #creationDateBefore#&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;creationDateAfter&quot; prepend=&quot;AND&quot;&lt;br /&gt;   removeFirstPrepend=&quot;true&quot;&amp;gt; iss_created_date gt;= #creationDateBefore#&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;product&quot;&amp;gt;&lt;br /&gt;   &amp;lt;iterate property=&quot;product&quot; conjunction=&quot;OR&quot; open=&quot;(&quot; close=&quot;)&quot;&lt;br /&gt;    prepend=&quot;AND&quot; removeFirstPrepend=&quot;true&quot;&amp;gt;&lt;br /&gt;    prj_title = #product[]#&amp;lt;/iterate&amp;gt;&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;priority&quot;&amp;gt;&lt;br /&gt;   &amp;lt;iterate property=&quot;priority&quot; conjunction=&quot;OR&quot; open=&quot;(&quot; close=&quot;)&quot;&lt;br /&gt;    prepend=&quot;AND&quot; removeFirstPrepend=&quot;true&quot;&amp;gt;&lt;br /&gt;    pri_rank = right(#priority[]#,1)&amp;lt;/iterate&amp;gt;&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt;  &amp;lt;isNotEmpty property=&quot;issueStatus&quot;&amp;gt;&lt;br /&gt;   &amp;lt;iterate property=&quot;issueStatus&quot; conjunction=&quot;OR&quot; open=&quot;(&quot; close=&quot;)&quot;&lt;br /&gt;    prepend=&quot;AND&quot; removeFirstPrepend=&quot;true&quot;&amp;gt;&lt;br /&gt;    sta_title = #issueStatus[]# &amp;lt;/iterate&amp;gt;&lt;br /&gt;  &amp;lt;/isNotEmpty&amp;gt;&lt;br /&gt; &amp;lt;/dynamic&amp;gt;        &lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Using the &lt;code&gt;&amp;lt;dynamic&amp;gt;&lt;/code&gt; tag in the SqlMaps query language, you can specify fully dynamic queries, that will do this:&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTk5mNBG8I/AAAAAAAAF9s/Qk3YDDlDOWg/s1600-h/eventum-form-based-query-dynamic.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_j0a2Zacz7c0/SqTk5mNBG8I/AAAAAAAAF9s/Qk3YDDlDOWg/s320/eventum-form-based-query-dynamic.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 290px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378675533146037186&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Creating the Connector: step 5 adding comments&lt;/h4&gt;&lt;br /&gt;When we have the basic task and attributes, we will not notice all activity that happens around a task. A Task or Issue usually has some sort of history associated with it, and this can be done by editing the file &lt;code&gt;maps/eventum-direct-db/CommentsMapEventum.xml&lt;/code&gt; as follows:&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [21,22,23,24,25,26,27,28, 29,30,31,32]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;http://eclipsophy.blogger.com&lt;br /&gt;&lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Comments&quot;&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;!--&lt;br /&gt; groupKey use : when you want Mylyn to concatenate strings in different&lt;br /&gt; records into one comment you can force that to happen by giving these&lt;br /&gt; strings the same groupKey.&lt;br /&gt;&lt;br /&gt; Leaving the the groupKey set to null, will concatenate all records into&lt;br /&gt; one Mylyn comment. This is counterintuitive!!&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;getForKey&quot;  resultClass=&quot;ibatisComment&quot;&amp;gt;&lt;br /&gt; SELECT&lt;br /&gt; his_created_date as groupKey,&lt;br /&gt; usr_email as author,&lt;br /&gt; usr_full_name as authorName,&lt;br /&gt; his_created_date as date,&lt;br /&gt; his_summary as text&lt;br /&gt; FROM eventum_issue_history&lt;br /&gt;  INNER JOIN eventum_user ON his_usr_id = usr_id&lt;br /&gt; WHERE his_iss_id = #value#&lt;br /&gt; ORDER BY his_id&lt;br /&gt; &amp;lt;/select&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;br /&gt;&lt;/pre&gt;Note the use of &lt;code&gt;groupKey&lt;/code&gt; in the statement. This construct will force all comments from the same date to be listed into one comment. Eventum issue edits result in multiple items being entered into the history using the same timestamp. Using &lt;code&gt;groupKey&lt;/code&gt; allows you to define or alter the grouping of comments. &lt;br /&gt;&lt;h4&gt;Creating the Connector: step 6 adding additional attributes&lt;/h4&gt;&lt;br /&gt;Sometimes we have additional attributes that can be mapped to the Mylyn common attributes listed in &lt;code&gt;TaskAttributeMapper.java&lt;/code&gt;. Open the file &lt;code&gt;maps/eventum-direct-db/TaskMapEventum.xml&lt;/code&gt; and go to query &lt;code&gt;additionalForKey&lt;/code&gt;.&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [20,21,22,23,24,25,26,27,28]&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;&quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;http://eclipsophy.blogger.com&lt;br /&gt;&lt;br /&gt;--&amp;gt; &lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Tasks&quot;&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;!--&lt;br /&gt; Keys for TaskData attributes used by Mylyn in the RepositoryTaskData structure&lt;br /&gt;&lt;br /&gt; listed in file /org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/data/TaskAttributeMapper.java&lt;br /&gt;&lt;br /&gt; There is a problem in ibatis where dot notation fields returned in a Map are parsed as bean properties.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;select id=&quot;additionalForKey&quot; resultClass=&quot;java.util.HashMap&quot;&amp;gt;&lt;br /&gt; SELECT&lt;br /&gt;  res_title as task_common_resolution,&lt;br /&gt;  usr_full_name as task_common_user_reporter&lt;br /&gt; FROM eventum_issue&lt;br /&gt;  INNER JOIN eventum_resolution ON res_id = iss_res_id &lt;br /&gt;  INNER JOIN eventum_user ON usr_id = iss_usr_id &lt;br /&gt; WHERE iss_id LIKE #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;[...]&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;br /&gt;By following the simple steps outlined above, it is very easy to create a read-only connector to any database backed issue tracker. The Tasks in Mylyn are filled using a direct mapping of database columns to task elements and is not very complicated. Not a single line of Java code was needed! There is a usable UI to queries, and the results are displayed in the Task Editor, allowing a local context to be attached to it.&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_j0a2Zacz7c0/SqTri-IrVRI/AAAAAAAAF90/NQ9EHtbL1KM/s1600-h/eventum-task-in-editor.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_j0a2Zacz7c0/SqTri-IrVRI/AAAAAAAAF90/NQ9EHtbL1KM/s320/eventum-task-in-editor.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 286px; height: 320px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5378682841014686994&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Connecting to database is easy when it is on the same LAN, slightly more involved when it is remote. My experience using a SSH tunnels using Putty (under Windows) or similar is that it can make a relatively secure connection easy to setup.&lt;br /&gt;The connector fragment including source project can be downloaded in a ZIP from &lt;a href=&quot;http://bugs.industrial-tsi.com/mylyndb/industrial-eventum-0.2.0.zip&quot;&gt;here&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8878360187292205236-6283811247034822539?l=eclipsophy.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-18T14:01:33+00:00</dc:date>
	<dc:creator>Maarten Meijer</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-8878360187292205236.post-5124483376104390592">
	<title>Maarten Meijer: Industrial SQL connector and Eventum: adding attachments</title>
	<link>http://eclipsophy.blogspot.com/2009/09/industrial-sql-connector-and-eventum_15.html</link>
	<content:encoded>Last time we covered Eventum task and comments, this time we'll make the attachments show up in Mylyn.&lt;br /&gt;&lt;h4&gt;Eventum attachments&lt;/h4&gt;&lt;br /&gt;We create an attachment in our Eventum test installation and see what happens. Two tables are involved in the handling of attachments: &lt;code&gt;eventum_issue_attachment&lt;/code&gt; containing the meta information like date created and creator, and &lt;code&gt;eventum_issue_attachment_file&lt;/code&gt; containing actual data, filename, mime type and filesize.&lt;br /&gt;&lt;h4&gt;Modifying the repository-config settings&lt;/h4&gt;&lt;br /&gt;We must edit fragment.xml and set the &lt;code&gt;can-get-attachments&lt;/code&gt; property to true.&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtsLdN8sI/AAAAAAAAGCE/IqX4zmq1FT4/s1600-h/project-step23.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtsLdN8sI/AAAAAAAAGCE/IqX4zmq1FT4/s320/project-step23.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 147px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5382062897953108674&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h4&gt;Creating the attachment data query&lt;/h4&gt;&lt;br /&gt;To return the attachment meta-data we must edit CommentsMapEventum.xml and set the  &lt;code&gt;getAttachmentForKey&lt;/code&gt; query as follows:&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;   PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;   &quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;   licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;   Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;   http://eclipsophy.blogger.com&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Comments&quot;&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;select id=&quot;getAttachmentForKey&quot;  resultClass=&quot;ibatisAttachment&quot;&amp;gt;&lt;br /&gt;&amp;lt;!-- meta data only, return the blob data separately --&amp;gt;&lt;br /&gt;SELECT&lt;br /&gt; usr_email as author,&lt;br /&gt; iaf_filetype as ctype,&lt;br /&gt; iat_created_date as date,&lt;br /&gt; iat_description as description,&lt;br /&gt; iaf_filename as filename,&lt;br /&gt; iaf_id as id,&lt;br /&gt; iaf_filesize as size,&lt;br /&gt; iat_iss_id as taskId,&lt;br /&gt; '' as url&lt;br /&gt;FROM eventum_issue_attachment&lt;br /&gt; INNER JOIN eventum_user ON iat_usr_id = usr_id&lt;br /&gt; INNER JOIN eventum_issue_attachment_file ON iat_id = iaf_iat_id&lt;br /&gt;WHERE iat_iss_id = #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;Creating the attachment BLOB query&lt;/h4&gt;&lt;br /&gt;To return the attachment binary BLOB we must edit CommentsMapEventum.xml and set the &lt;code&gt;getAttachmentDataForKey&lt;/code&gt; query as follows:&lt;br /&gt;&lt;pre class=&quot;brush: xml; highlight: [12,13,14,16,17,18,19,20,21]&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE sqlMap&lt;br /&gt;   PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map 2.0//EN&quot;&lt;br /&gt;   &quot;http://ibatis.apache.org/dtd/sql-map-2.dtd&quot; &amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;   licensed under ECL, to connect Mylyn to SQL databases&lt;br /&gt;   Copyright 2009 Maarten Meijer, all right reserved.&lt;br /&gt;   http://eclipsophy.blogger.com&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;sqlMap namespace=&quot;Comments&quot;&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;resultMap id=&quot;attachmentDataMap&quot; class=&quot;ibatisAttachment&quot;&amp;gt;&lt;br /&gt;&amp;lt;result property=&quot;blob&quot; column=&quot;iaf_file&quot; jdbcType=&quot;BLOB&quot; javaType=&quot;[B&quot;/&amp;gt;&lt;br /&gt;&amp;lt;/resultMap&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;select id=&quot;getAttachmentDataForKey&quot; resultMap=&quot;attachmentDataMap&quot;&amp;gt;&lt;br /&gt;&amp;lt;!-- return the blob data --&amp;gt;&lt;br /&gt;SELECT iaf_file&lt;br /&gt;FROM eventum_issue_attachment_file&lt;br /&gt;WHERE iaf_id = #value#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/sqlMap&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;The attachment displays nicely but...&lt;/h4&gt;&lt;br /&gt;We can see the attachments in the Task Editor, an image uploaded using the web interface, but when we right-click we see several actions that do not work.&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtroQXdtI/AAAAAAAAGB8/TlOzfcQik3U/s1600-h/project-step24.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_j0a2Zacz7c0/SrDtroQXdtI/AAAAAAAAGB8/TlOzfcQik3U/s320/project-step24.png&quot; alt=&quot;&quot; style=&quot;display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand; width: 320px; height: 278px;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5382062888503965394&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Open With Browser&lt;/b&gt; will not work, as the Eventum attachments are stored in a database, so they have no web url and cannot be shown in the browser. This is reported under &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=249021&quot;&gt;bug 249021&lt;/a&gt;. This action should be dimmed when no URL is present.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Open With/Default Editor&lt;/b&gt;This functionality was recently added, but does not take into account the case where no URL is present. This is in the works under &lt;a href=&quot;https://bugs.eclipse.org/bugs/show_bug.cgi?id=220314&quot;&gt;bug 220314&lt;/a&gt; and should be dimmed when no URL is present.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Make Local Copy and Open in Browser&lt;/b&gt; this is Industrial Connector functionality present to remedy the problems above, but is not a really neat solution.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/8878360187292205236-5124483376104390592?l=eclipsophy.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-18T14:00:59+00:00</dc:date>
	<dc:creator>Maarten Meijer</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-9210566578097047576.post-3287136601858913109">
	<title>David Bosschaert: Altering OSGi Service Lookups with Service Registry Hooks</title>
	<link>http://coderthoughts.blogspot.com/2009/11/altering-osgi-service-lookups-with.html</link>
	<content:encoded>&lt;div lang=&quot;en-GB&quot;&gt;OSGi Services are &lt;i&gt;&lt;b&gt;great&lt;/b&gt;&lt;/i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;. They can solve many problems very elegantly. Take for instance SPI patterns. SPI patterns are used to make implementations pluggable. This type of pattern outside OSGi often comes with a bunch of external configuration (e.g. in META-INF/services) that makes it hard to manage and gives you a once-off chance to choose your implementation that you're stuck with for the rest of the VM lifecycle. OSGi Services provide a much more elegant way to solve this. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;In many cases clients simply want to use some functionality and don't particularly care how that functionality was created. When using OSGi Services the functionality is looked up in the OSGi Service Registry which is a directory of these. Services can be looked up by implemented interface (like a phone book) or by provided attribute (like the yellow pages). How the service got there is not interesting to the client and he's not involved in that. What if the service gets replaced while the client is active? No problem, the OSGi Service Programming model is actually built around this dynamicity. You don't need to stop service consumers when you are replacing or updating the service, they are automatically rebound.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;The Service Registry also provides us with an attribute based selection mechanism which is very nice if there are multiple implementations to choose from. As an example, take a system where every available printer is represented in the Service Registry as a Service that implements the &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;org.acme.Printer&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; interface. Each printer will have additional properties registered that help with the selection:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://4.bp.blogspot.com/_JTmY6gtOOjs/SwPR2s5E6sI/AAAAAAAAARc/2HRdqC9jsnk/s1600/img1.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_JTmY6gtOOjs/SwPR2s5E6sI/AAAAAAAAARc/2HRdqC9jsnk/s400/img1.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When looking for a Printer OSGi allows you to use an LDAP-style filter to select the printer you want. So if you want a printer that can do A3 you would use this LDAP filter:&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; class=&quot;code-western&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span&gt;(&amp;amp;(objec&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New,monospace; font-size: small;&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;tClass=org.acme.Printer)(paper-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;size=A3))&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;br /&gt;or if you want a printer in a location that starts with 'b' you do this:&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; class=&quot;code-western&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span&gt;(&amp;amp;(objectClass=org.acme.Printer)(location=b*))&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;This is all great and you can build your system on this using either plain OSGi code or component frameworks such as OSGi Blueprint or OSGi Declarative Services. However sometimes you may want to tweak the properties at a later date without having to rewrite your system. Assume that in your organisation all of a sudden the office numbering has changed, which would really mean that you'd have to update the 'location' attribute of all the printers. Or maybe you want to add some additional metadata to existing printers that influence the selection process, like their energy rating.  &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;Service Registry Hooks provide the building blocks that make this possible. &lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;I wrote a little bundle called &lt;i&gt;&lt;b&gt;ServiceJockey&lt;/b&gt;&lt;/i&gt; that uses these to manipulate service registrations and how they are looked up. BTW you can find details at the end of this posting about getting ServiceJockey, which is open source and available freely under the Apache License.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Service Registry Hooks: what are they?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;One of the driving factors for Service Registry Hooks (an OSGi standard introduced in the 4.2 Core specification) was the Remote Services (Distributed OSGi) work done in the OSGi Alliance. One of the things that implementations of the Remote Service spec need to know is what kind of services consumers are looking for so that they can go out to a discovery system to see if it might be available remotely. Eagerly registering all available remote services is clearly not scalable so we need a smarter mechanism to allow for &lt;i&gt;transparent&lt;/i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt; on demand discovery of remote services. This is what the &lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;ListenerHook &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;and &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;FindHook &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;provide us. Together they allow us to find out what service consumers are requesting making us to only look in a remote Discovery system for those that are relevant to the current framework. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Another problem was frequently brought up. What if you have an existing bundle that doesn't know anything about Remote Services? What is the default behaviour? Should all service lookups all of a sudden always include remote services? The Remote Services spec does include a special property that you can add to your filter to influence this (&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New,monospace; font-size: small;&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;service.imported&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;) but you clearly don't want to break up all your existing service consumers to add this extra property to their lookup filters.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;It turned out that there wasn't really a valid answer to that question applicable to all cases. If you're working on a system only using Remote Services for a select set of services it may make sense to default all other services consumers to &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;not&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; use Remote Services. On the other hand, maybe if you're building a Cloud-based infrastructure where services can move freely from one container to another the default behaviour could be that you do allow remote services for just about anything.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Since there isn't really a one-size fits-all here the Service Registry Hooks make it possible to provide a &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;policy&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; for this problem in a separate bundle. You can create &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;EventHooks &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;and &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;FindHooks &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;to influence what services consumers can see. This effectively allows you to add extra conditions to the lookup of service consumers without the need to modify those consumers.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Finally, &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;EventHooks &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;and &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;FindHooks&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;, together with the a &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;b&gt;ServiceListener&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;, allow you to proxy Service Registrations, where you provide a second registration of the same object with modified properties, hiding the original.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;The ability to provide an alternate registration on the fly and the possibility to impose extra conditions on existing service consumer lookups is what I built ServiceJockey around.&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://4.bp.blogspot.com/_JTmY6gtOOjs/SwPR4vKkr7I/AAAAAAAAARk/jBGn1vJTTRs/s1600/img2.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_JTmY6gtOOjs/SwPR4vKkr7I/AAAAAAAAARk/jBGn1vJTTRs/s640/img2.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;ServiceJockey doesn't replace the Service Object, it only effectively replaces the registration in the Service Registry plus it can put additional constraints on client lookups. But you could go further. If you wanted to actually replace or shadow the real service object and do some work when somebody uses it (maybe log it or something) you could put an additional object between the consumer and the original service object.&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;Because the Service Registry Hooks effectively modify some basic behaviour of the framework (the visibility of Services) they should really be started early in the Framework lifecycle. You can achieve that by giving them a low start level.  &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;font-style: normal; font-weight: normal;&quot;&gt;The Service Registry Hooks are available in Felix 1.8.0 and Equinox 3.5 and newer versions of these.&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;Altering Service Registrations&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;Let's start with a bundle that consumes (uses) a Printer. It isn't interested in which printer, as long as it can print A4:&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  BundleContext context = ... &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #3f7f5f;&quot;&gt;// from Activator.start()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  Filter filter = context.createFilter(&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;  &quot;(&amp;amp;(objectClass=org.acme.Printer)(paper-size=A4))&quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;);        &lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; ServiceTracker(context, filter, &lt;/span&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; Object addingService(ServiceReference ref) {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #3f7f5f;&quot;&gt;// print out some information on the printer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #3f7f5f;&quot;&gt;    // or use the printer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f0055;&quot;&gt;&lt;b&gt;super&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;.addingService(ref);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  }            &lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  };&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;st&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;.open();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;When I run this it's reporting both printers that I have in my system:&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;Printer:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;service.id: 27&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;name: p1&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;location: b283&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;capabilities: [Double-sided]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;paper-size: [A3, A4]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;Printer:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;service.id: 28&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;name: p7&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;location: a12&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;capabilities: [Colour, Staple]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;paper-size: [A4, Letter]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;So the client has arbitrary access to both of them. Now lets see if you can modify the client behaviour so that it only uses a printer with an Energy Rating &amp;lt; 50.  &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;But hold on, we don't even know about energy ratings yet! We need to add this information to the Printer registration &lt;b&gt;without changing the bundle(s) that register the Printers.&lt;/b&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt; Let's user Service Jockey to do this.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;Service Jockey uses the OSGi Extender Model. This means that it is driven from a data file in a bundle.  &lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;So I've got a bundle (called PrinterJockey) that contains META-INF/sj.xml:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-jockey&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&lt;i&gt;&quot;http://www.coderthoughts.org/schemas/sj/v1.0.0&quot;&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;proxy-registration&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(objectClass=org.acme.Printer)(name=p1))&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-property&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&lt;i&gt;&quot;energy-rating&quot;&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;75&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/add-property&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(objectClass=org.acme.Printer)(name=p7))&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-property&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;key&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&lt;i&gt;&quot;energy-rating&quot;&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;50&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-property&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/proxy-registration&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-jockey&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I will have to tell the Service-Jockey that my bundle contains configuration for it, for that I'm adding a header to the Manifest:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;Service-Jockey&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;: META-INF/sj.xml&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Lets run the Printer Consumer bundle  together with Service Jockey and my 'Printer Jockey' configuration bundle that contains the sj.xml file:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;id    State   Level Bundle&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;0 ACTIVE   0     org.eclipse.osgi_3.5.1.R35x_v20090827&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;1 ACTIVE   1     org.coderthoughts.servicejockey_0.0.1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;2 ACTIVE   1     PrinterJockey_1.0.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;3 ACTIVE  10    Printers_1.0.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;In my case the Printers bundle both registers and consumes the Printers, but that's because its a little test bundle. It's not really relevant. Note that the Printers bundle has a higher start level than the Jockey ones and therefore starts later.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;When I run my system again I can see that it's doing some work. Now my client reports these services:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Printer:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;service.id: 30&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;name: p1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;location: b283&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;capabilities: [Double-sided]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;paper-size: [A3, A4]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;energy-rating: 75&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;.ServiceJockey: Proxied&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Printer:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;service.id: 32&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;name: p7&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;location: a12&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;capabilities: [Colour, Staple]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;paper-size: [A4, Letter]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;energy-rating: 50&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;.ServiceJockey: Proxied&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Aha! I've got my energy rating in there! That's good. Remember that these are alternative registrations. The original ones haven't changed, they're just hidden.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt; Altering Client Side Lookups &lt;/span&gt;&lt;br /&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Now I want my client to only use the one that is rated &amp;lt;= 50.  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;That's done by adding another rule to the Service Jockey configuration. A rule that adds an extra filter to any matching lookup in a consumer.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;service-jockey&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #7f007f;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;xmlns&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;&lt;i&gt;&quot;http://www.coderthoughts.org/schemas/sj/v1.0.0&quot;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;restrict-visibility&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;     &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;bsn&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;.*&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;bsn&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(objectClass=org.acme.Printer)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;service-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;   &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;(energy-rating&lt;/span&gt;&lt;span style=&quot;color: #2a00ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;=50)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;add-filter&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;&amp;lt;/rule&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/restrict-visibility&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;proxy-registration&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;  ...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;proxy-registration&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: teal;&quot;&gt;&lt;span style=&quot;color: #3f7f7f;&quot;&gt;/service-jockey&lt;/span&gt;&lt;span style=&quot;color: teal;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;You can specify a regular expression to say what the Bundle Symbolic Name of the consumer bundle(s) is that the rule applies to. In my case .* matches anything. So it applies to any bundle that has OSGi Service consumers. By the way, there's also a &lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;/span&gt; tag.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span lang=&quot;en-GB&quot; style=&quot;font-size: small;&quot;&gt;You specify to what services the additional filter applies with the &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;tag and you specify the additional filter in &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;. In my case I'm adding the &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-family: Courier New,monospace;&quot;&gt;&lt;span lang=&quot;en-GB&quot;&gt;(energy-rating&amp;lt;=50) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;en-GB&quot;&gt;condition to any Printer Service returned to a consumer (the condition looks a bit dodgy because of the XML escaping of the '&amp;lt;' sign - you could use a CDATA section instead...).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Note that the Service Filter applies to any service returned to a service consumer, regardless of the filter used by the client itself looks like.  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Let's run the client again:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Printer:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;objectClass: [org.acme.Printer]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;service.id: 32&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;name: p7&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;capabilities: [Colour, Staple]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;location: a12&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;paper-size: [A4, Letter]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;energy-rating: 50&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;.ServiceJockey: Proxied&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot; style=&quot;margin-bottom: 0in;&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Bingo - it only selects the service I wanted it to select. Based on additional properties and criteria listed in my Service Jockey configuration file. I did not have to modify the Printer Service registration bundle or the Consumer bundle...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;br /&gt;Is it overkill?&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Seems like a lot of work for just adding a service property, is there not a lighter way to at least add values to Service Registrations? Well at least that was my initial impression. However looking at the ServiceJockey bundle, it's only 14kb. Besides that there is currently no other way to achieve this...  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt; Service Jockey - ride your service interactions&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I didn't show any of the code to actually use the EventHook and the FindHook. Have a look at the &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/ServiceJockey/src/org/coderthoughts/servicejockey/HidingEventHook.java&quot;&gt;HidingEventHook&lt;/a&gt; and &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/ServiceJockey/src/org/coderthoughts/servicejockey/HidingFindHook.java&quot;&gt;HidingFindHook&lt;/a&gt; source code for that.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: small;&quot;&gt;You can check out the source (Apache License) as an Eclipse Project &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/ServiceJockey&quot;&gt;from SVN here&lt;/a&gt;. If you fancy modifying the code, I would recommend you also &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/ServiceJockeyTest&quot;&gt;get the tests project&lt;/a&gt; and add new ones. The test bundle depend on the &lt;a href=&quot;http://code.google.com/p/mockito/&quot;&gt;Mockito bundle&lt;/a&gt; for its mock objects...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I'm sure the Service Jockey isn't perfect, because I only wrote it during an airplane flight so feel free to send patches :)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I also put a &lt;a href=&quot;http://coderthoughts.googlecode.com/files/org.coderthoughts.servicejockey_0.0.1.jar&quot;&gt;binary download of ServiceJockey here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Also in the source tree, Eclipse projects for the &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/Printers&quot;&gt;Printers&lt;/a&gt; and &lt;a href=&quot;http://coderthoughts.googlecode.com/svn/trunk/ServiceJockey/PrinterJockey&quot;&gt;PrinterJockey&lt;/a&gt; example bundles. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en-GB&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/9210566578097047576-3287136601858913109?l=coderthoughts.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-18T13:58:42+00:00</dc:date>
	<dc:creator>davidb</dc:creator>
</item>
<item rdf:about="http://www.vogella.de/blog/?p=1335">
	<title>Lars Vogel: Profiling Eclipse RCP applications with Eclipse TPTP</title>
	<link>http://www.vogella.de/blog/2009/11/18/profiling-eclipse-rcp-tptp/</link>
	<content:encoded>&lt;div style=&quot;float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;&quot;&gt;
		
		&lt;/div&gt;&lt;p&gt;I believe approx. one or two years ago I tried to profile an &lt;a href=&quot;http://www.vogella.de/articles/RichClientPlatform/article.html&quot;&gt;Eclipse RCP application &lt;/a&gt; with the &lt;a href=&quot;http://www.eclipse.org/tptp/&quot;&gt;Eclipse TPTP &lt;/a&gt;project. I believe at this point in time profiling an RCP application with TPTP was not possible. &lt;/p&gt;
&lt;p&gt;I learned from Eugene Chan that the TPTP release which is part of Eclipse Galileo allows to profile Eclipse RCP applications. &lt;/p&gt;
&lt;p&gt;I suggest you give it a try, it is as easy as profiling a standard &lt;img src=&quot;http://www.vogella.de/blog/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;  Java application. &lt;/p&gt;
&lt;p&gt;You find an updated description here: &lt;a href=&quot;http://www.vogella.de/articles/EclipseTPTP/article.html&quot;&gt;Eclipse TPTP Tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to Eugene Chan, Paul Slauenwhite and Kathy Chan from the TPTP team for feedback on the article. &lt;/p&gt;
&lt;div style=&quot;clear: both;&quot;&gt; &lt;/div&gt;</content:encoded>
	<dc:date>2009-11-18T04:36:12+00:00</dc:date>
	<dc:creator>Lars Vogel</dc:creator>
</item>
<item rdf:about="http://kthoms.wordpress.com/?p=103">
	<title>Karsten Thoms: Eclipse DemoCamp November 26th in Frankfurt</title>
	<link>http://kthoms.wordpress.com/2009/11/17/eclipse-democamp-november-26th-in-frankfurt/</link>
	<content:encoded>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Next week, Thursday Nov. 26th, there will be an &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Frankfurt&quot;&gt;Eclipse DemoCamp in Frankfurt&lt;/a&gt;, starting 05:30 PM until 09:00 PM at Saalbau Gallus. I am happy that my current project schedule allows me being in Frankfurt at this time. There are already over 40 registered attendees, this is quite impressing. There are 6 interesting talks presented at this DemoCamp:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Using &lt;a href=&quot;http://www.eclipse.org/Xtext/&quot;&gt;Eclipse TMF&lt;/a&gt; in a large scale modeling and implementation project&lt;/strong&gt; from &lt;a href=&quot;https://www.xing.com/profile/Nikolai_Busse2&quot;&gt;Dr. Nikolai Busse&lt;/a&gt; (Deutsche Börse Systems AG). The project Nikolai is talking about is the one I am working on most of this year. I already had the opportunity to talk about this project at the &lt;a href=&quot;http://www.codegeneration.net/cg2009/sessioninfo.php?session=64&quot;&gt;CodeGeneration 2009&lt;/a&gt; and &lt;a href=&quot;http://entwickler.com/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=wjax09&amp;amp;id=11245&quot;&gt;W-JAX 09&lt;/a&gt; conference. Nikolai will no doubt give an really interesting talk about an extraordinary project.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://code.google.com/p/redview/&quot;&gt;redView&lt;/a&gt; – dynamische Views für Business Applications&lt;/strong&gt; from &lt;a href=&quot;http://ekkescorner.wordpress.com/&quot;&gt;Ekkehard Gentz&lt;/a&gt;. Ekke has created a fascinating project using technologies like EMF, CDO, openArchitectureWare, UML2. Ekke is also a member on the openArchitectureWare team and it is always a pleasure to talk with him. Last time we met was last week at the W-JAX, but unfortunately I had to leave on thursday before his talk. Now I have the chance to see it finally.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JPA (&lt;a href=&quot;http://www.eclipse.org/eclipselink/&quot;&gt;EclipseLink&lt;/a&gt;) in OSGI Anwendungen &lt;/strong&gt;from &lt;a href=&quot;https://www.xing.com/profile/Karsten_Voigt3&quot;&gt;Karsten Voigt&lt;/a&gt; (IBM Global Business Services). EclipseLink will be the reference implementation of the JPA 2.0 standard. This framework has already a long history and many experience was put into it. Although Hibernate is most widely spreaded I think that EclipseLink will play a bigger role in the future. EclipseLink has smooth integration with EMF with &lt;a href=&quot;http://www.eclipse.org/modeling/emf/?project=teneo#teneo&quot;&gt;Teneo&lt;/a&gt;, which makes Domain Driven Design with JPA persistence really easy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.stg.tu-darmstadt.de/research/core/&quot;&gt;Eclipse Code Recommenders&lt;/a&gt; – How much can the IDE predict what you will write in the next seconds? &lt;/strong&gt;from &lt;a href=&quot;http://kthoms.wordpress.com/category/software-development/eclipse/feed/&quot;&gt;Marcel Bruch&lt;/a&gt; (TU Darmstadt). Marcel presents his research project where a more intelligent way for producing IDE proposals is developed. Sounds interesting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Das ist hier Usus… &lt;/strong&gt;from &lt;a href=&quot;https://www.xing.com/profile/Leif_Frenzel&quot;&gt;Leif Frenzel&lt;/a&gt; and &lt;a href=&quot;https://www.xing.com/profile/Stefan_Schuerle&quot;&gt;Stefan Schürle&lt;/a&gt; (adrena objects). They will present &lt;a href=&quot;http://code.google.com/p/projectusus/&quot;&gt;projectusus&lt;/a&gt;, which aims to provide Eclipse plugins that derive settings for Eclipse and code quality plugins like Checkstyle and EclEmma. The clue is that the settings try to match automatically what’s a project’s usus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RCP goes Web 2.0 – &lt;a href=&quot;http://www.eclipse.org/rap&quot;&gt;Eclipse Rich Ajax Platform&lt;/a&gt;&lt;/strong&gt; from &lt;a href=&quot;https://www.xing.com/profile/Benjamin_Muskalla&quot;&gt;Benjamin Muskalla&lt;/a&gt; (EclipseSource). Let’s see what RAP has new…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;6 talks are really a lot for a DemoCamp. Besides presentations also networking is important at a DemoCamp. Let’s hope there is enough space for talking. Ralph Müller from the Eclipse Foundation will be there (where on the world is he not?), some people from SAP, Heidelberger Services AG, some of my colleagues from &lt;a href=&quot;http://www.itemis.de&quot;&gt;itemis&lt;/a&gt;, and several others. And it will be the first time I meet Attila Bak in person, who I now from the &lt;a href=&quot;http://www.fornax-platform.org&quot;&gt;Fornax Project&lt;/a&gt; since some years already, but until now just via email.&lt;/p&gt;
&lt;p&gt;Maybe I can met YOU also there? Registering is easy, and the event is free of charge. To register, just enter yourself to the DemoCamp’s &lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Frankfurt&quot;&gt;Wiki page&lt;/a&gt;. To edit it, you’ll just need an account there. If you don’t want to open account just for that, just send me a mail and I’ll add you.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://kthoms.files.wordpress.com/2009/11/karsten-email.png&quot;&gt;&lt;img src=&quot;http://kthoms.files.wordpress.com/2009/11/karsten-email.png?w=156&amp;amp;h=15&quot; title=&quot;karsten-email&quot; height=&quot;15&quot; width=&quot;156&quot; alt=&quot;&quot; class=&quot;alignleft size-full wp-image-104&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/kthoms.wordpress.com/103/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/kthoms.wordpress.com/103/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=kthoms.wordpress.com&amp;amp;blog=6829080&amp;amp;post=103&amp;amp;subd=kthoms&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-17T21:05:40+00:00</dc:date>
	<dc:creator>kthoms</dc:creator>
</item>
<item rdf:about="http://www.eclipse4sl.org/blog/?p=181">
	<title>Eclipse4SL: Windows Azure Tools for Eclipse version 1.0 released</title>
	<link>http://www.eclipse4sl.org/blog/windows-azure/windows-azure-tools-for-eclipse-version-10-released/</link>
	<content:encoded>&lt;p&gt;Aligning with the general availability of the release candidate of Windows Azure SDK that was unveiled at the Professional Developer Conference today, we are pleased to release version 1.0 of the version 1.0 of the Windows Azure Tools for Eclipse &amp;amp; SDK for Java.&lt;/p&gt;
&lt;p&gt;The Eclipse tooling &amp;amp; SDKs are fully compatible with the new version of Windows Azure that has just been released today. We have also included new features that are described on the Microsoft Interoperability Blog:&lt;br /&gt;
&lt;a href=&quot;http://blogs.msdn.com/interoperability/&quot;&gt;http://blogs.msdn.com/interoperability/&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2009-11-17T20:01:33+00:00</dc:date>
	<dc:creator>admin</dc:creator>
</item>
<item rdf:about="http://eclipseblog.ostroukhovs.com/?p=94">
	<title>Eugene Ostroukhov: Release names</title>
	<link>http://eclipseblog.ostroukhovs.com/2009/11/17/release-names/</link>
	<content:encoded>&lt;p&gt;I wonder if I’m the only one who can’t remember fancy names for Eclipse releases – Europa, Ganymede, Galileo, Helios. I think it’s not really good that there’s no easy way to memorize them (I wonder if they were meant to be in alphabetical order – if not for “Ganymede” and “Galileo”). Eclipse releases annually – so why doesn’t it has name like “Eclipse 2007″?&lt;/p&gt;
&lt;p&gt;So:&lt;/p&gt;
&lt;table width=&quot;50%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Name&lt;/th&gt;
&lt;th&gt;Platform/JDT/PDE&lt;/th&gt;
&lt;th&gt;CDT&lt;/th&gt;
&lt;th&gt;WTP&lt;/th&gt;
&lt;th&gt;BIRT&lt;/th&gt;
&lt;th&gt;Site&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Callisto&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.eclipse.org/callisto/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Europa&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://eclipse.org/europa/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ganymede&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://eclipse.org/ganymede/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Galileo&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6.0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://eclipse.org/galileo/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Helios&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3.6&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://eclipse.org/helios/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;img width=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/ThoughtsAboutEclipseUi/~4/9jdFFuuJjEM&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2009-11-17T15:56:41+00:00</dc:date>
	<dc:creator>Eugene Ostroukhov</dc:creator>
</item>
<item rdf:about="http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XV8RU">
	<title>OpenNTF: New Release: File Explorer with Support for Favorites and Comp Apps</title>
	<link>http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XV8RU</link>
	<content:encoded>&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Manfred Lenz has contributed a Lotus
Notes sidebar plugin to &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XGA36&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;OpenNTF&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;.
This plugin is another file explorer with some differences to the &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/File%20Navigator&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;File
Navigator&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt; which was implemented
at the same time.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;1. It handles favorites of files and
directories which are handled at Eclipse level (not operating system level)&lt;/font&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;2. It allows to hide certain drives&lt;/font&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;3. It can be used in a composite applications
supporting property broker&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;As always you can install the plugin
via drag and drop from the &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/catalogs/a2cat.nsf/topicThread.xsp?action=openDocument&amp;amp;documentId=676A8D3CFB7A888185257671001F58BA&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Apache
catalog&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;. Or download the &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/Projects/pmt.nsf/downloadcounter?openagent&amp;amp;project=File%20Explorer&amp;amp;release=1.0.0&amp;amp;unid=2FE6A08FB1FF61AC862576700038C1BC&amp;amp;attachment=File%20Explorer.zip&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;zip
file&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt; directly. &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/Projects/pmt.nsf/852fcfa76eb36baa85256bae00100855/C2D88F8B73E164AA8625767000389240/$File/readme.pdf&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Here&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;
is the documentation.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src=&quot;http://www.openntf.org/blogs/openntf.nsf/Images/6F7748C77C7125E986257671001FEEE7/EntryMoreRichMime/M2?OpenElement&quot; alt=&quot;A picture named M2&quot; /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src=&quot;http://www.openntf.org/blogs/openntf.nsf/Images/6F7748C77C7125E986257671001FEEE7/EntryMoreRichMime/M3?OpenElement&quot; alt=&quot;A picture named M3&quot; /&gt;</content:encoded>
	<dc:date>2009-11-17T05:45:18+00:00</dc:date>
	<dc:creator>Niklas Heidloff</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-6917071644715743308.post-3491164495678211552">
	<title>Andrew Eisenberg: How type inferencing for Groovy in Eclipse is leading to all sorts of Groovy goodness</title>
	<link>http://contraptionsforprogramming.blogspot.com/2009/11/how-type-inferencing-for-groovy-in.html</link>
	<content:encoded>Of all of the recent improvements of Groovy-Eclipse since M1 has been released, the groovy type inferencing engine is the most pervasive and powerful.  This inferencing engine is able to take a groovy file or code snippet and infer the type of any or all of its expressions.  It now forms the core of several of the most prominent features of Groovy-Eclipse.  Everything that I describe here is currently available in the latest snapshot release of Groovy-Eclipse for Eclipse 3.5 and the update site is here:&lt;br /&gt;&lt;pre&gt;http://dist.codehaus.org/groovy/distributions/greclipse/snapshot/e3.5&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In this post, I am going to describe how the inferencing engine is currently used in Groovy-Eclipse and then I will dive a deep and describe how it is implemented.  I'll end the post by describing our plans for immediate the future.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;What type inferencing is used for&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Underlining statically indeterminate references&lt;/h3&gt;&lt;br /&gt;The Groovy editor now underlines all references that cannot be determined while editing.  This happens in a background thread while you type.  So, the following code (notice the mispelling of asImmutable):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def aList = []&lt;br /&gt;def otherList = aList.asImmutabl()&lt;br /&gt;otherList.asImmutable()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...will appear in the editor like this...&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110470080/&quot; title=&quot;underline by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2620/4110470080_8a8cf6f7a7_o.gif&quot; alt=&quot;underline&quot; border=&quot;1&quot; width=&quot;243&quot; height=&quot;49&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...and when the typo is fixed, the underlines go away...&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4109706667/&quot; title=&quot;nounderline by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;268&quot; alt=&quot;nounderline&quot; src=&quot;http://farm3.static.flickr.com/2695/4109706667_01c1e9bf1b_o.gif&quot; height=&quot;46&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Code is re-analyzed after every keystroke (well, actually, it is after every keystroke that is followed by 500ms of no keystrokes).  The type of every reference in the file is looked up using the inferencing engine.  Every reference that cannot be found is considered to be unknown and will be underlined.&lt;br /&gt;&lt;br /&gt;Of course, Groovy being a dynamic language, not all references can be statically linked to a type (other than Object).  This is especially the case when working with DSLs (such as Grails) that use metaprogramming to add new methods and fields to existing types.  Later, I'll describe our plans for extensibility.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Search&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Inferencing is used for Java Search as well.  Using the search short cut (CTRL-Shift-G or CMD-Shift-G on Mac) or running search from the Java Search dialog, references from and to Groovy code snippets can be located.  However, there are some difficulties here.  Compared to Java, Groovy is quite a bit more flexible in the ways that fields and methods can be referenced.  For example, this field is assigned a closure and referenced as if it were a method:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class Foo {&lt;br /&gt;  def x = { print it }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;x(&quot;Hello!&quot;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And this method is referenced in a way that is statically indistinguishable from a field:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class Foo {&lt;br /&gt;  def x() {  print &quot;Hello!&quot; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;x&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Furthermore, the spread operator and the use of default parameters makes the Java way of determining which method or field is referenced impossible.  So, Groovy search is significantly more liberal than Java search in what it considers a search match.  If a reference corresponds to any field, method, or property in the declaring type (regardless of parameter count and whether it is accessed as a field or method), then the match is considered successful.  This leads to the following scenarios.&lt;br /&gt;&lt;br /&gt;1. Performing search on the field declaration finds field references here:&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4109706725/&quot; title=&quot;searchForField by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;273&quot; alt=&quot;searchForField&quot; src=&quot;http://farm3.static.flickr.com/2527/4109706725_bfc2bc77e5_o.gif&quot; height=&quot;279&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Performing search on the method declaration finds exactly the same references:&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4109706789/&quot; title=&quot;searchForMethod by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;270&quot; alt=&quot;searchForMethod&quot; src=&quot;http://farm3.static.flickr.com/2715/4109706789_4c7a968d5e_o.gif&quot; height=&quot;331&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And, notice that references attached to the wrong type are not considered a match.&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110490950/&quot; title=&quot;searchNoResults by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;227&quot; alt=&quot;searchNoResults&quot; src=&quot;http://farm3.static.flickr.com/2508/4110490950_837049e7e8_o.gif&quot; height=&quot;280&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Content Assist&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Most of the internals of Groovy-Eclipse has been rewritten since the previous 1.5.7 release.  The most recent rewrite is of content assist.  Although the previous version worked (usually), there was always a noticeable lag while waiting for the content assist window to appear.  This previous implementation of content assist used a combination of Java classloading and Groovy AST matching in order to find all completion proposals available at a given location, which was both messy and slow.  Now, we have hooked into the inferencing engine and have completely rewritten proposal generation with extensibility in mind.  And we have made some remarkable improvements in performance.&lt;br /&gt;&lt;br /&gt;Using the following code snippet I performed content assist 5 times under the old implementation and the new and took the average of the last 3 of each:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def x&lt;br /&gt;x.hasProperty(&quot;foo&quot;).&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Old implementation&lt;/td&gt;&lt;td&gt;2315 milliseconds&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;New implementation&lt;/td&gt;&lt;td&gt;8 milliseconds&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;That's right...there is a 3 orders of magnitude speed up under the new implementation, making content assist a much more pleasant feature to use.  But please note that this is just the time for calculation of the proposals and it does not include the time required to actually pop up the window.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Open declaration&lt;/h3&gt;&lt;br /&gt;The implementation of open declaration (or &lt;em&gt;code select&lt;/em&gt; as it is called in JDT because it is a general mechanism to determine what the current selection refers to and is also used for things like calculating hovers) also uses inferencing.  Pressing F3 whenever the selection is any form of &quot;navigateToMe&quot; in the following code, the expected declaration will open:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110470268/&quot; title=&quot;navigateBefore by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;253&quot; alt=&quot;navigateBefore&quot; src=&quot;http://farm3.static.flickr.com/2739/4110470268_6b06a89dbb_o.gif&quot; height=&quot;140&quot; /&gt;&lt;/a&gt;  ---&amp;gt; &lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110470320/&quot; title=&quot;navigateAfter by werdnagreb, on Flickr&quot;&gt;&lt;img width=&quot;250&quot; alt=&quot;navigateAfter&quot; src=&quot;http://farm3.static.flickr.com/2606/4110470320_b32544c6ff_o.gif&quot; height=&quot;136&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Although Groovy-Eclipse M1 used type inferencing for code select, it was using the inferencing from content assist and was subject to the same mistakes, duplicate answers, and slowness that content assist had.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;How it works&lt;/h2&gt;&lt;br /&gt;The inferencing engine has unified the implementation of several of Groovy-Eclipse's most widely used features.  With this unification, we have been able to significantly reduce the amount of duplicated code, improve performance, and plan for extensibility.&lt;br /&gt;&lt;br /&gt;There are four interacting components of the inferencing engine:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;The Abstract Syntax Tree (or AST):&lt;/strong&gt; this is an abstract representation of the syntax of a groovy file expressed hierarchically.  The code to work on can be obtained either from the disk, or it can be the latest in memory.  The AST is generated by the Groovy compiler based on the current state of the editor whenever Eclipse is otherwise idle.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;The type inferencing visitor:&lt;/strong&gt; this visitor walks the AST (i.e., uses a visitor pattern to visit every AST node) and delegates to the type lookups and the requestor described below.  A new visitor is created for each call to the inferencing engine.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;The type lookups:&lt;/strong&gt; these objects lookup the type information of a particular expression using whatever mechanism they require.  They can store and retrieve information about types in a way that all other lookups can use.  In this way, each lookup can do what it can and coordinate with other lookups where required.  Several default lookups are provided including a simple lookup, an inferencing lookup (that stores information about types via assignment expressions), and a category lookup (that looks up types in Groovy categories).  Type lookups are created from a registry on each call to the inferencing engine.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;The requestor:&lt;/strong&gt; this is the object that collects the type information determined by the lookups.  The requestor is general and can be used as a way to store the types of all expressions, lookup the type of a particular expression, or look for expressions with unknown types (just to name a few uses).  The requestor is created by client code and past to the visitor to start the inferencing process.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;The following diagram shows process and how the different pieces work together:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.flickr.com/photos/werdnagreb/4110469952/&quot; title=&quot;arch by werdnagreb, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2530/4110469952_45fc615b3b_d.jpg&quot; alt=&quot;arch&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;The visitor visits an AST expression node&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The visitor sends this expression to the type lookups.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt; each lookup responds with a type and its confidence in that type (ie, exact, potential, inferred...), or null, if it cannot find a type&lt;/li&gt;&lt;br /&gt;  &lt;li&gt; a lookup may additionally store information in a scope object that is passed around to other lookups so that information can be shared between them&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The result of the lookup is sent to the requestor&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The requestor processes the result and may choose to end the visit or continue.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If required, the visitor will continue to visit the rest of the abstract syntax of the Groovy file&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;What's next&lt;/h2&gt;&lt;br /&gt;One of the core design goals of the inferencing engine is extensibility.  The inferencing engine must be extensible in two ways.  First, it must be usable to help support new features such as quick fixes and refactoring.  Also, DSLs, (most notably Grails) must be able to extend inferencing with their own type lookups. It should be apparent through the description of the variety of ways that the engine is currently used that it versatile and can become the core implementation of any number of new Groovy-Eclipse features.  As for DSL extensibility, that has not yet been implemented, but the stubs are available.  Other DSLs will need to implement their own type lookup, but there is currently no way for these new lookups to be plugged in.  Fortunately, it will be possible to use Eclipse's plugin architecture here and this will be the subject of my next blog post (after it gets implemented).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6917071644715743308-3491164495678211552?l=contraptionsforprogramming.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-16T23:46:00+00:00</dc:date>
	<dc:creator>Andrew Eisenberg</dc:creator>
</item>
<item rdf:about="http://kthoms.wordpress.com/?p=99">
	<title>Karsten Thoms: Misleading error message for JavaBeautifier dependencies</title>
	<link>http://kthoms.wordpress.com/2009/11/16/misleading-error-message-for-javabeautifier-dependencies/</link>
	<content:encoded>&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;The postprocessor &lt;tt&gt;org.eclipse.xpand2.output.JavaBeautifier&lt;/tt&gt; comes with the plugin &lt;tt&gt;org.eclipse.xpand&lt;/tt&gt;, but needs additional dependencies to work. Under the hood the beautifier leverages JDT, so the dependency to JDT is obvious. Normally the missing plugin dependencies can be easily derived from the error messages, since the package name of some missing class usually maps to the plugin identifier where the class resides. However, you might recognize the error message&lt;br /&gt;
&lt;code&gt;java.lang.NoClassDefFoundError: org/eclipse/jface/text/BadLocationException&lt;/code&gt;&lt;br /&gt;
and think that the class must be in plugin &lt;tt&gt;org.eclipse.jface.text&lt;/tt&gt;. But that’s not true, although there is of course a plugin &lt;tt&gt;org.eclipse.jface.text&lt;/tt&gt;. Actually, class &lt;tt&gt;BadLocationException&lt;/tt&gt; is in the plugin &lt;strong&gt;&lt;tt&gt;org.eclipse.text&lt;/tt&gt;&lt;/strong&gt; and is reexported from the JFace plugin.&lt;/p&gt;
&lt;p&gt;The actual dependencies that have to be added when using the JavaBeautifiers are:&lt;tt&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;tt&gt;org.eclipse.jdt.core&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;org.eclipse.text&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;org.eclipse.core.resources&lt;/tt&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;tt&gt;&lt;/tt&gt;&lt;/p&gt;
  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godelicious/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/delicious/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/gostumble/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/stumble/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/godigg/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/digg/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.wordpress.com/1.0/goreddit/kthoms.wordpress.com/99/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/reddit/kthoms.wordpress.com/99/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=kthoms.wordpress.com&amp;amp;blog=6829080&amp;amp;post=99&amp;amp;subd=kthoms&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-16T21:34:55+00:00</dc:date>
	<dc:creator>kthoms</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-18490491.post-2268531304258897056">
	<title>Martin Lippert: OSGi for Eclipse Developers Webinar</title>
	<link>http://martinlippert.blogspot.com/2009/11/osgi-for-eclipse-developers-webinar.html</link>
	<content:encoded>Today I gave an &lt;a href=&quot;http://live.eclipse.org/node/819&quot;&gt;Eclipse webinar on &quot;OSGi for Eclipse Developers&quot;&lt;/a&gt; together with Chris Aniszczyk and Bernd Kolb. We talked about various OSGi things that might sound strange and/or unfamiliar to you if you come from the Eclipse way of developing applications. We talked about the relationship of Eclipse and OSGi, dependency management and why you should use Import-Package instead of Require-Bundle, dynamics with OSGi, services vs. extensions, versioning, some compendium services and tooling for OSGi. If you missed the live broadcast, you can &lt;a href=&quot;http://live.eclipse.org/node/819&quot;&gt;watch the entire webinar from here again&lt;/a&gt;.  Enjoy!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/18490491-2268531304258897056?l=martinlippert.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-16T19:58:00+00:00</dc:date>
	<dc:creator>Martin Lippert</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-4252978514266184993.post-4738462156890690686">
	<title>Andy Clement: AspectJ: How much faster is AspectJ 1.6.7?</title>
	<link>http://andrewclement.blogspot.com/2009/11/aspectj-how-much-faster-is-aspectj-167.html</link>
	<content:encoded>In the previous post I talked about the new timing infrastructure that is now in place for determining which pointcuts are proving expensive to match.  Since getting that going I've been actively working on some systems that are load-time weaving aspects and attempting to optimize the matching process.  The system I was working on used many of what I could call 'typical' pointcuts and so as well as performing some general optimizations that will affect any kind of pointcut, I've put in some specific optimizations for these typical/common pointcuts.&lt;br /&gt;&lt;br /&gt;What is a common pointcut?&lt;br /&gt;&lt;br /&gt;I see this all the time: '&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;execution(* Foo.*(..))&lt;/span&gt;'.  An execution pointcut with an exact typename used for the declaring type in execution (Foo in this example).  By exact, I mean no wildcards are used.  AspectJ 1.6.7 supports fast match now if the type name is an exact name ( fast match is discussed in the previous article). The exact name may or may not be fully qualified, but the key thing is if there are no wildcards.  What difference does that make?  Here is a simple aspect:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;aspect SimpleAspect {&lt;br /&gt;before(): execution(* CharSequence+.*e*(..)) {}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Let's weave that into rt.jar (which contains 16,000 or so classes).  The aspect above will actually hit 380 join points in that jar.  The command I'm running:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;ajc -timers -inpath rt.jar SimpleAspect.aj -outjar wovenrt.jar&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;AspectJ1.6.6: 21728ms&lt;br /&gt;AspectJ1.6.7: 11954ms&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Almost 10seconds faster due to optimized matching!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Related to that, I see a lot of users exploiting the ability to recognize join points by their annotations and in execution I see this all the time: '&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;execution(* (@Bar *).*(..))&lt;/span&gt;' - execution of any method in any type annotated by &lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;@Bar&lt;/span&gt;.  For the case of an exact annotation and wildcarded type name (just '*'), fast match will now kick in.  What difference does it make?  Similar kind of improvement:&lt;br /&gt;&lt;br /&gt;AspectJ1.6.6: 21944ms&lt;br /&gt;AspectJ1.6.7: 11417ms&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Of course a pattern like that doesn't actually match anything in rt.jar but that means the numbers here are showing purely the improvement in match speed, because no weaving occurs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;WATCH OUT:&lt;/b&gt;  This close variant does not get fast matched: '&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;execution(* (@Bar *..*).*(..))&lt;/span&gt;' - this variation is choosing types not in the default package that happen to be annotated.  It could be optimized for, but so far I've found all users are happy to switch to '(&lt;span style=&quot;font-family: 'courier new';&quot; class=&quot;Apple-style-span&quot;&gt;@Bar *&lt;/span&gt;)' so have not invested time in optimizing this pattern.&lt;br /&gt;&lt;br /&gt;Optimizations have also been made for all pointcuts containing signatures with these characteristics, because I often see them occur in the wild:&lt;br /&gt;- using an ellipsis for method arguments - '* *(..)'&lt;br /&gt;- using a single star for method arguments - '* *(*)'&lt;br /&gt;- specifying no arguments - '* *()'&lt;br /&gt;- specifying void or !void as the return type - 'void *(..)'  '!void *(..)'&lt;br /&gt;- a declaring type of simply one wildcard - '* *(..)'&lt;br /&gt;&lt;br /&gt;&lt;div&gt;How much faster?  For these improvements I created a micro benchmark that attempted to match these patterns a million times against a method.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AspectJ1.6.6:&lt;br /&gt;Signature pattern [* *(..))] took 1375ms for 1,000,000&lt;br /&gt;Signature pattern [* *(*))] took 949ms for 1,000,000&lt;br /&gt;Signature pattern [* *())] took 908ms for 1,000,000&lt;br /&gt;Signature pattern [!void *(..))] took 1279ms for 1,000,000&lt;br /&gt;Signature pattern [void *(..))] took 1120ms for 1,000,000&lt;br /&gt;Signature pattern [* *a*b*()] took 570ms for 1,000,000&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AspectJ1.6.7:&lt;br /&gt;Signature pattern [* *(..))] took 357ms for 1,000,000&lt;br /&gt;Signature pattern [* *(*))] took 293ms for 1,000,000&lt;br /&gt;Signature pattern [* *())] took 285ms for 1,000,000&lt;br /&gt;Signature pattern [!void *(..))] took 364ms for 1,000,000&lt;br /&gt;Signature pattern [void *(..))] took 362ms for 1,000,000&lt;br /&gt;Signature pattern [* *a*b*()] took 309ms for 1,000,000&lt;br /&gt;&lt;br /&gt;Fast match is also now supported for the initialization pointcut too - so that will see similar benefits to execution.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Beyond these improvements, other general optimizations include:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) avoiding type resolution unless absolutely necessary.  This involves doing more examination of patterns up front to ensure the types really need to be loaded.&lt;/div&gt;&lt;div&gt;2) avoiding repeated type resolution.  Rather than resolving a type, then passing the signature to a downstream method where it needs to be re-resolved, AspectJ will now pass the resolved entity to save that extra resolve call.&lt;/div&gt;&lt;div&gt;3) faster binary weaving for jars.  Changed the algorithm for processing jar entries, it now does far less work with collections.&lt;/div&gt;&lt;div&gt;4) Altered type walking mechanism to be iterator based.  Previously it calculated the entire hierarchy before looking through it and often found the type it was looking for early.  Switching to iterators AspectJ now only explores as far as necessary and if the required type is found early, it walks (and resolves!) no further.&lt;/div&gt;&lt;div&gt;5) Reduced collection usage in the join point creation code.  Join point creation code runs *a lot* so even tiny improvements here manifest as big savings.&lt;/div&gt;&lt;div&gt;6) Moved to an iterator approach when searching for methods - rather than determining them all then searching through.  AspectJ now only searches as far as necessary.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How to show these improvements?  I've collected full tracing yourkit profiles and compared them.  This is for a load-time weaving system involving tomcat plus some aspects. Startup time (when not profiled) of the server with these improvements has gone from 9seconds with AspectJ 1.6.6 to 6 seconds with AspectJ 1.6.7.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Demonstrating improvements: type resolution&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Type resolution calls all funnel through World.resolve().  Here is the comparison run for 1.6.6 (old) versus 1.6.7 (new):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img width=&quot;100%&quot; src=&quot;http://3.bp.blogspot.com/_gFXDbWLX580/SwGooCgfGTI/AAAAAAAAEWQ/xEm9OEQl5jU/s1600/worldresolveCalls.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;441,922 less calls to resolve.  Due to a combination of avoiding repeated resolution and just more pointcut analysis so types are not chased down unnecessarily.  To reinforce that AspectJ is really chasing down fewer types, here is a look at the calls to lookupClass() which is how .class files are loaded by the weaver:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img width=&quot;100%&quot; src=&quot;http://1.bp.blogspot.com/_gFXDbWLX580/SwGo01Ra4rI/AAAAAAAAEWY/Qg_7mvBTX2g/s1600/lookupjavaclass.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3,068 less calls to locate and load class files.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Demonstrating improvements: fast match&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Obviously because fast match is now implemented for more pointcuts, the time spent in fast match has increased:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img width=&quot;100%&quot; src=&quot;http://3.bp.blogspot.com/_gFXDbWLX580/SwGn-oDNGvI/AAAAAAAAEWI/-87G2n5oX24/s1600/bcelweaverfastmatch.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Up from 2seconds to 12seconds.  But that 10seconds is more than offset by the reduction in time spent in the second stage of matching:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img width=&quot;100%&quot; src=&quot;http://4.bp.blogspot.com/_gFXDbWLX580/SwGo_yhFKSI/AAAAAAAAEWg/K-Il5SLmnBY/s1600/fullmatching.png&quot; /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That shows a reduction of almost 60seconds in second stage matching due to the improvements in fast matching.  (Remember all these numbers are particularly large because full profiling was done).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So there you have it, what has changed in AspectJ 1.6.7 and why it is faster.  I will practically guarantee that any user of the weaver will see an improvement - but how much improvement will depend upon whether your pointcuts fit the common patterns outlined above.  With the new timer infrastructure I'm hoping it will be much easier to diagnose slow weaving in future and over the next few releases I'm sure more enhancements will be put in place for further common pointcut patterns.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AspectJ 1.6.7 dev builds already include the enhancements mentioned above.  The latest AJDT dev builds for Eclipse 3.5 also include this AspectJ, however the ability to switch on timers in AJDT is not possible yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4252978514266184993-4738462156890690686?l=andrewclement.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-16T19:49:10+00:00</dc:date>
	<dc:creator>Andy Clement</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-4740251930569090138.post-6304278081418042329">
	<title>Wim Jongman: OSGi: GESUNDHEIT!</title>
	<link>http://industrial-tsi-wim.blogspot.com/2009/11/osgi-gesundheit.html</link>
	<content:encoded>This blog is about the &lt;a href=&quot;http://neilbartlett.name/blog/2009/11/12/2-day-osgi-training-in-amsterdam-1st-2nd-dec/&quot;&gt;upcoming OSGi course run by Neil Bartlett&lt;/a&gt;. If you are writing moderate to large size Java applications and you have heard about OSGi but are still a little puzzled about what it does: OSGi is the biggest thing that happened to Java this century. Here are three reasons why this is the case:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;1. OSGi enforces modularity&lt;/div&gt;&lt;div&gt;Making systems modular feels good to every engineer. It is just a logical thing to do when systems grow. We define and design modules in our systems. But once implemented, they cannot be taken out or replaced by a better version because they get entangled so quickly. When coding OSGi style, this will not happen. Why? Read on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. OSGi defines module boundaries&lt;/div&gt;&lt;div&gt;One reason modularity is enforced is because you define a clear entrance point in your modules which is the interface to the rest of your system. No unclear API due to many public classes, but a well defined set of visible classes that were meant to be API. The rest is hidden, public or not public. Why is this handy?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. OSGi helps you manage complexity.&lt;/div&gt;&lt;div&gt;Once you can see your modules as giant blocks of LEGO(tm) (having a clear interface) you can think about what the weak blocks are and how they can be replaced or hardened. Do all your work inside the module but be faithful to the interfaces with the outside world. This is how they build Skyscrapers. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Although it sounds to good to be true, true it still is. And even though OSGi sounds like a sneeze, it is all about the GESUNDHEIT of your applications.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.regonline.com/builder/site/Default.aspx?eventid=772414&quot;&gt;We host an OSGi course in December&lt;/a&gt;. There are a few places left. Neil Bartlett will be your teacher. By the way, Neil did write the book, a free book and the eye opening &lt;a href=&quot;http://neilbartlett.name/blog/osgibook/&quot;&gt;first chapter is right here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apart from the course we will take you on a Amsterdam by Night tour where you will get a good, but not too good, impression of the unique Amsterdam culture. It is about 30 minutes drive from the training location to the center of Amsterdam.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See you there!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4740251930569090138-6304278081418042329?l=industrial-tsi-wim.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-16T16:10:50+00:00</dc:date>
	<dc:creator>Wim Jongman</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-18361809.post-434200439345987255">
	<title>Doug Gaff: My Next Adventure</title>
	<link>http://douggaff.blogspot.com/2009/11/my-next-adventure.html</link>
	<content:encoded>&lt;span&gt;&lt;p&gt;After almost 10 years at EmbeddedSupportTools/WindRiver/Intel, I'm heading off to pursue a new opportunity. I will be joining &lt;a href=&quot;http://www.npr.org/&quot;&gt;National Public Radio&lt;/a&gt; as Director of Technology for &lt;a href=&quot;http://www.publicinteractive.com/&quot;&gt;Public Interactive&lt;/a&gt;. This Boston-based division of NPR is responsible for the web technology platform used by many of the NPR affiliate stations. NPR is a great organization with a great mission, and I'm excited to be joining their team.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;For my colleagues in Eclipse who know me as the embedded and mobile guy, the leader of DSDP, the guy who's always on the EclipseCon Program Committee, or one of your friendly Committer Reps, this is clearly &quot;something completely different&quot; as the Monty Python crew would say. In my new role, we will predominantly be users of Eclipse rather than contributors, and as such I will unfortunately be stepping down from my leadership roles in the Eclipse community.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I want to thank Wind River for supporting my work at Eclipse and for investing in the CDT, DSDP, and Platform projects. I also want to thank the many leaders in the Eclipse community and at the Foundation, from whom I've learned a great deal about meritocracy, IP policy, coopetition, copyright, governance, collaboration, and free beer. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Please stay in touch. Follow me on &lt;a href=&quot;http://twitter.com/douggaff&quot;&gt;twitter&lt;/a&gt; or connect on &lt;a href=&quot;http://www.linkedin.com/in/douggaff&quot;&gt;linked in&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/18361809-434200439345987255?l=douggaff.blogspot.com&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-16T14:44:39+00:00</dc:date>
	<dc:creator>Doug Gaff</dc:creator>
</item>
<item rdf:about="http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XUBYJ">
	<title>OpenNTF: Nice End User Tool Snippets from Detlev Poettgen</title>
	<link>http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XUBYJ</link>
	<content:encoded>&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Detlev Poettgen and Onur Guengoeren
have released a nice end user tool on &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7XGA36&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;OpenNTF&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;
under the Apache license - called &lt;/font&gt;&lt;a href=&quot;http://www.openntf.org/catalogs/a2cat.nsf/topicThread.xsp?action=openDocument&amp;amp;documentId=36B6F62ADD70AB0B85257670002E4201&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Snippets&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;Lotus Notes users can drag and drop
snippets of texts and attachments from a sidebar panel into Notes documents.
Users can define these snippets themselves or they can use shared snippets.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;font size=&quot;2&quot; face=&quot;sans-serif&quot;&gt;The application has been implemented
via an Eclipse plugin that can be installed via drag and drop and a Notes
database which needs to be installed manually.&lt;/font&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src=&quot;http://www.openntf.org/blogs/openntf.nsf/Images/2290E20380D3B80F86257670002F2D18/EntryMoreRichMime/M2?OpenElement&quot; alt=&quot;A picture named M2&quot; /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src=&quot;http://www.openntf.org/blogs/openntf.nsf/Images/2290E20380D3B80F86257670002F2D18/EntryMoreRichMime/M3?OpenElement&quot; alt=&quot;A picture named M3&quot; /&gt;</content:encoded>
	<dc:date>2009-11-16T08:29:37+00:00</dc:date>
	<dc:creator>Niklas Heidloff</dc:creator>
</item>
<item rdf:about="http://www.coconut-palm-software.com/the_new_visual_editor/doku.php?id=blog:speaking_at_chitown_scala_meeting">
	<title>Dave Orme: Speaking at Chicago Area Scala Enthusiasts Meeting</title>
	<link>http://www.coconut-palm-software.com/the_new_visual_editor/doku.php?id=blog:speaking_at_chitown_scala_meeting</link>
	<content:encoded>&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;

I'll be speaking at the Chicago Area Scala Enthusiasts (CASE) meeting this coming Thursday.  We'll cover the following:

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; News from the Scala LiftOff East in Reston Virginia two weeks ago&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I'll talk about using DSLs written in Scala to improve Java projects&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

Although I haven't decided on the final content yet, topics I'm considering in order to illustrate this second point include:

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Showing how to use the excellent Specs unit testing DSL (a great way to get Scala into a Java shop)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A “Make”-like DSL I wrote as my first DSL (doesn't nearly everybody?)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Simplifying Java code by evolving Java into a Scala DSL by translating to Scala and then stepwise introducing Scala idioms&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

I'd love to hear about what people what to hear about.  Please comment. &lt;img src=&quot;http://www.coconut-palm-software.com/the_new_visual_editor/lib/images/smileys/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;middle&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
To sign up, please visit: &lt;a href=&quot;http://www.meetup.com/chicagoscala/&quot; class=&quot;urlextern&quot; rel=&quot;nofollow&quot; title=&quot;http://www.meetup.com/chicagoscala/&quot;&gt;http://www.meetup.com/chicagoscala/&lt;/a&gt; before noon, the day of the event.
&lt;/p&gt;

&lt;/div&gt;
&lt;span class=&quot;plugin_feedmod_comments&quot;&gt;
  &lt;a href=&quot;http://www.coconut-palm-software.com/the_new_visual_editor/doku.php?id=blog:speaking_at_chitown_scala_meeting#discussion__section&quot; title=&quot;Read or add comments to this article&quot;&gt;Read or add comments to this article&lt;/a&gt;
&lt;/span&gt;</content:encoded>
	<dc:date>2009-11-15T02:23:32+00:00</dc:date>
	<dc:creator>djo</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-24248206.post-3181933089302874735">
	<title>Sven Efftinge: Xtext - Tour Dates</title>
	<link>http://blog.efftinge.de/2009/11/xtext-tour-dates.html</link>
	<content:encoded>&lt;p&gt;I just realized that there's an invasion of Xtext presentations and demos about to overrun the world during the next couple of weeks. And all of them are free of charge!&lt;/p&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Country&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;City&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Title&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Presenter&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/16&lt;/td&gt;&lt;td&gt;USA&lt;/td&gt;&lt;td&gt;New York&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#New_York_City&quot;&gt;Modeling Day: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Heiko Behrens&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/16&lt;/td&gt;&lt;td&gt;USA&lt;/td&gt;&lt;td&gt;New York&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#New_York_City&quot;&gt;Modeling Day: Converging Textual and Graphical Editors&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Moritz Eysholdt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/17&lt;/td&gt;&lt;td&gt;France&lt;/td&gt;&lt;td&gt;Paris&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Paris&quot;&gt;Demo Camp: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Sebastian Zarnekow&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/17&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Leipzig&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Leipzig&quot;&gt;Demo Camp: Und heute generier' ich&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Alexander Nittka&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/18&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Hamburg&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://www.jughh.org/pages/viewpage.action?pageId=4325396&quot;&gt;Java User Group: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Sven Efftinge, Sebastian Zarnekow&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/18&lt;/td&gt;&lt;td&gt;Canada&lt;/td&gt;&lt;td&gt;Toronto&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#Toronto&quot;&gt;Modeling Day: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Heiko Behrens&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/18&lt;/td&gt;&lt;td&gt;Canada&lt;/td&gt;&lt;td&gt;Toronto&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_Modeling_Day#Toronto&quot;&gt;Modeling Day: Converging Textual and Graphical Editors&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Moritz Eysholdt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/23&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Berlin&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Berlin&quot;&gt;Demo Camp: Building DSLs with Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Peter Friese&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/26&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Frankfurt&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Frankfurt&quot;&gt;Demo Camp: Using Xtext in a large scale modeling and implementation project&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Nicolai Busse&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/26&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Stuttgart&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Stuttgart&quot;&gt;Demo Camp: Textual DSLs with Eclipse Xtext (and a little bit code code generation with Xpand)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Markus Völter&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/11/30&lt;/td&gt;&lt;td&gt;Austria&lt;/td&gt;&lt;td&gt;Vienna&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Vienna&quot;&gt;Demo Camp: Xtext&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Michael Clay&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/12/04&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;&lt;td&gt;Hamburg&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Hamburg&quot;&gt;Demo Camp: Combining graphics and text in model editors&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Jan Köhnlein&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2009/12/10&lt;/td&gt;&lt;td&gt;Italy&lt;/td&gt;&lt;td&gt;Florence&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://wiki.eclipse.org/Eclipse_DemoCamps_November_2009/Florence&quot;&gt;Demo Camp: Xtext, a Textual Modeling Framework &lt;/a&gt;&lt;/td&gt;&lt;td&gt;Francesco Guidieri&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/tracker/24248206-3181933089302874735?l=blog.efftinge.de&quot; height=&quot;1&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2009-11-14T06:31:09+00:00</dc:date>
	<dc:creator>Sven Efftinge</dc:creator>
</item>

</rdf:RDF>
