<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2449778416389490679</id><updated>2011-11-10T06:34:25.570-08:00</updated><category term='PHP tests'/><category term='PHP  ProjectZero'/><category term='PHP opcodes'/><category term='php testfest'/><title type='text'>zoe's blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-4859209553798735410</id><published>2011-04-14T05:10:00.000-07:00</published><updated>2011-04-14T05:10:46.596-07:00</updated><title type='text'>JAX London April 2011</title><content type='html'>JAX London was a great conference. The venue was better than before and they have refined the speaker selection to suit the target London audience. There were many good talks, these were the highlights:&lt;br /&gt;&lt;br /&gt;Dan North, keynote talk on the Agile day was totally absorbing. I think we are at the stage where 'Agile' is the norm for good development teams; when IBM's RTC has good support for Agile that means it's mainstream :-).&amp;nbsp; So, it's time to look beyond Agile - Dan talked about patterns that he observed in 'insanely productive' teams. I particularly liked 'Fits in my Head' - keeping design small or modular enough so that you can reason about the whole thing. I also liked his observation that OSGi &lt;b&gt;done well&lt;/b&gt; is 'fantastic in this space'. &lt;br /&gt;&lt;br /&gt;In the past I always wanted to go to Ted Neward's talks but somehow they always seemed to conflict with something else I had to do. So this time I went to the 'Busy Developers Guide to Scala' and the 'Busy Developers Guide to Gamification'. The Scala talk was perfect for me as I know nothing about Scala, the gamification one was a mystery. The thesis was that you can make work more fun by making it like playing games somehow. It may work if you like game playing but as a game-hating manual-reader it made no sense to me. However - looking round the room I think I may have been the only person that wasn't buying the idea.&lt;br /&gt;&lt;br /&gt;Holly and Valentin (from the Apache Aries project) did a good review of the range of freely available OSGi tooling - the PAX stuff is particularly interesting. I also enjoyed Richard Nicholson's (Paremus) talk - 'Modularity meets the Cloud'.&amp;nbsp; Paremus are doing really interesting leading edge work, leading edge in the sense that they are getting to and solving problems before most of us realise they are problems.&amp;nbsp; Well worth having a look at their products if you are serious about OSGi. Neil Bartlett's OSGi live coding challenge was great too - a bit scary in places - but absolutely the best one of these that I've seen done for OSGi.&lt;br /&gt;&lt;br /&gt;Chris Aniszczyk gave a beautifully constructed talk and demonstrated seamless integration of Git, Mylyn, Eclipse and Hudson (Jenkins or whatever).&lt;br /&gt;&lt;br /&gt;Finally - Martijn Verburg gave the only talk on Java at JAX. Nice introduction to Java 7&amp;nbsp; - there are some pretty compelling new features, not headline stuff, but things that will make Java code smaller and tidier. For example being able to have strings in case, separate long numbers with underscores, better file IO features. Not exciting maybe but &lt;b&gt;so&lt;/b&gt; important. Great to see the Java language catching up with PHP in terms of usability :-).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope JAX maintain this standard, I talked to many attendees in the breaks and everyone I spoke was both enjoying the conference and deriving value from it. Well done to the JAX team - keep it up!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-4859209553798735410?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/4859209553798735410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=4859209553798735410' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/4859209553798735410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/4859209553798735410'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2011/04/jax-london-april-2011.html' title='JAX London April 2011'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-3567497565216100030</id><published>2010-12-13T03:16:00.000-08:00</published><updated>2011-03-03T08:11:59.063-08:00</updated><title type='text'>Remote services</title><content type='html'>Recently I experimented with OSGi remote services using Apache Aries (blueprint services) with either Apache Tuscany or Apache CXF to provide the remoting capability. &lt;br /&gt;&lt;br /&gt;I was trying to find the simplest and most flexible way to do this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_EifRUa32KOM/TQ314X5qUfI/AAAAAAAAAME/2563aohKD7s/s1600/wsdl.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="116" src="http://4.bp.blogspot.com/_EifRUa32KOM/TQ314X5qUfI/AAAAAAAAAME/2563aohKD7s/s400/wsdl.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;There are two OSGi runtimes (R1 and R2),&amp;nbsp; a bundle in R1 is using a service supplied by a bundle in R2.&lt;br /&gt;&lt;br /&gt;For those of you who don't want to do a lot of reading the short summary is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; The &lt;b&gt;simplest&lt;/b&gt; way to do this is Apache CXF&lt;/li&gt;&lt;li&gt;The &lt;b&gt;most flexible&lt;/b&gt; way to do this is to use Apache Tuscany&lt;/li&gt;&lt;/ul&gt;Let's start with a few words about CXF. The part you need to do this is &lt;a href="http://cxf.apache.org/distributed-osgi.html"&gt;Distributed OSGi &lt;/a&gt;. There are very good samples with the project and I only encountered two issues with achieving what I wanted to. The first of these is that the multi-bundle distribution doesn't run on &lt;a href="https://issues.apache.org/jira/browse/DOSGI-83"&gt;Equinox&lt;/a&gt; so you have to use the single bundle distribution or use Felix. I elected to use the single bundle distribution on Equinox.&lt;br /&gt;The second issue was that I had a web bundle in one framework and had some problems with conflicts on http port which I didn't properly resolve. I found that I could work around them by configuring the http port to anything except 8080, for example:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;org.osgi.service.http.port=6969&lt;/div&gt;&lt;br /&gt;in the Equinox config.ini file. If you are trying to debug an application which uses CXF it is also worth understanding that the consumer runtime (R1)&amp;nbsp; registers a proxy service based on the WSDL produced from the provider (R2) runtime - this proxy service is not registered &lt;b&gt;until&lt;/b&gt; something in R1 tries to use it.&lt;br /&gt;&lt;br /&gt;Apache Tuscany&amp;nbsp; provides the same functionality as CXF and a lot more besides. I wanted to use Tuscany because I want to get onto the other things I can do with it later, for example Tuscany supports other component models (eg EJB) and other bindings (JMS, JCA, json-rpc and so on).&amp;nbsp; I used a sample banking application (developed by Graham Charters &lt;i&gt;et al&lt;/i&gt;. for the &lt;a href="http://www.osgi.org/CommunityEvent2010/Speakers"&gt;2010 OSGi Community Event&lt;/a&gt;), the code for the application and all of the SCA configuration is checked in &lt;a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples-sandbox/bank/"&gt;here&lt;/a&gt;. The application had already been run on IBM's WebSphere Application Server so all I had to do was figure out how to do it on a pure open source stack. How hard could it be?&lt;br /&gt;The application itself and the SCA configuration are both very simple. The picture below shows the relationships between&amp;nbsp; bundles and how the bundles are distributed between OSGi runtimes. The API bundle is, of course, installed in both runtimes.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TQIISscFueI/AAAAAAAAAL8/gtqQ9gwQhuo/s1600/BankApp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="288" src="http://2.bp.blogspot.com/_EifRUa32KOM/TQIISscFueI/AAAAAAAAAL8/gtqQ9gwQhuo/s400/BankApp.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;As usual with Apache Aries samples,&amp;nbsp; I have tried to make it as simple as possible to run. If you want to run this sample you will currently (it is not released) need to check out and &lt;a href="http://incubator.apache.org/aries/buildingaries.html"&gt;build Aries&lt;/a&gt;, then from the ~/samples-sandbox/bank directory just use 'mvn clean install' to build the sample.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To run the sample, change directory to bank-assembly/target and run:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sh runclient.sh&lt;/span&gt; - to start the client runtime (Runtime 1)&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sh runserver.sh&lt;/span&gt; - to start the server runtime (Runtime 2)&lt;br /&gt;&lt;br /&gt;(apologies - I don't have equivalent .bat files)&lt;br /&gt;&lt;br /&gt;You can check that the server is producing WSDL by navigating to:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;http://localhost:8081/creditcheck?wsdl&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;http://localhost:8081/lineofcredit?wsdl&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;http://localhost:8081/chequing?wsdl&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;And that the client is running navigating to:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;http://127.0.0.1:9090/bank/index.html&lt;/div&gt;&lt;br /&gt;That all looks wonderfully simple - and it is. So why did I imply this was hard?&lt;br /&gt;&lt;br /&gt;Tuscany is a big project and I just wanted to use a bit of it - all of the difficulties I had were connected with putting together an OSGi Tuscany runtime that had what I needed. Of course, if I had used a commercial application server (like IBM's WAS) someone would have done all this for me and there would have been no pain at all.&lt;br /&gt;&lt;br /&gt;If you look at the bank-assembly/pom.xml you will see that I am actually downloading an entire Tuscany distro, unpacking it and then using the Equinox config file to pull in the bundles that I need for the OSGi runtime.&lt;br /&gt;Finding the correct bundles would have been very difficult without the help of the Tuscany team - they told me what I'd need.&lt;br /&gt;&lt;br /&gt;This solution is far from ideal. A slightly better solution would be to specify the list of bundles that I need in the pom.xml and have Maven get them for me as we do in all the other Aries samples. The reason that I can't do this is that Tuscany found that many of the OSGi bundles they wanted didn't exist or were badly put together - so they have fixed them - which is great! But they have fixed them in the Tuscany distro only - which is slightly less great from the point of view of a consumer. It would have been nice if they had followed the &lt;a href="http://repo2.maven.org/maven2/org/apache/servicemix/bundles/"&gt;ServiceMix&lt;/a&gt; model and simply made the fixed bundles available.&lt;br /&gt;&lt;br /&gt;The best solution (which we don't have at all yet) would be to have a proper bundle repository somewhere and use a resolver to go to it and get the OSGi bundles I needed - whatever they might be. One day there will be such a repository - but it's going to take some effort to build :-) Until then hacking-it-up is the only way.&lt;br /&gt;&lt;br /&gt;The other thing that I hope will happen sometime soon is for Apache Tuscany to be able to work with the recently implemented Aries Application model. As it stands, I don't use the Aries Application model in the Bank sample, it is just a set of OSGi bundles.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In summary, I like Tuscany and I'll go on to try and use other bindings with OSGi applications. The fact that it wasn't easy to pull together the right OSGi platform says more about where we are with OSGi today than about Tuscany. For wide scale enterprise OSGi adoption to happen we need a bundle repository. Tuscany have implemented a workaround (which I don't like), ServiceMix have implemented a work around which is much better - but the right answer is a bundle repository and as soon as possible, yesterday even.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-3567497565216100030?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/3567497565216100030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=3567497565216100030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3567497565216100030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3567497565216100030'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/12/remote-services.html' title='Remote services'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EifRUa32KOM/TQ314X5qUfI/AAAAAAAAAME/2563aohKD7s/s72-c/wsdl.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-888017260549248280</id><published>2010-11-30T05:06:00.000-08:00</published><updated>2010-11-30T05:06:29.564-08:00</updated><title type='text'>Oracle meet IBM at the LJCOpenConference</title><content type='html'>The LJC Open Conference last Saturday was the best! We had 75 people and a packed agenda with talks ranging from the "Java Roadmap" through to "The Diabolical Developer". Martijn Verburg, captured below, was the diabolical developer:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_EifRUa32KOM/TPQEHau9w1I/AAAAAAAAALk/MHtbRko8aOg/s1600/Diabolical.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_EifRUa32KOM/TPQEHau9w1I/AAAAAAAAALk/MHtbRko8aOg/s320/Diabolical.jpg" width="207" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;And he was, in fact, awesome...and very diabolical. &lt;br /&gt;&lt;br /&gt;Steve Elliot from Oracle and Steve Poole IBM answered questions on their future together in Java:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TPQJFZ6ZS4I/AAAAAAAAALo/SX_BhW-n-lU/s1600/panel.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/_EifRUa32KOM/TPQJFZ6ZS4I/AAAAAAAAALo/SX_BhW-n-lU/s320/panel.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It's still early days and the LJC organisers clearly thought it was prudent to separate the Steves with Martijn and Ben - although I'm not sure if they were worried about them getting too friendly or the reverse. Nice touch to have coordinated the names though - if you want become a contribute to the OpenJDK being called 'Steve' looks like a good first step.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TPQKpNNlhRI/AAAAAAAAALs/LioOweZnVMw/s1600/ZSOnTable.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-888017260549248280?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/888017260549248280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=888017260549248280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/888017260549248280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/888017260549248280'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/11/oracle-meet-ibm-at-ljcopenconference.html' title='Oracle meet IBM at the LJCOpenConference'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EifRUa32KOM/TPQEHau9w1I/AAAAAAAAALk/MHtbRko8aOg/s72-c/Diabolical.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-7210362131172401367</id><published>2010-11-10T03:35:00.000-08:00</published><updated>2010-11-10T03:35:04.870-08:00</updated><title type='text'>Igor - have you watered the brains today, Igor?</title><content type='html'>In his keynote at ApacheCon 2010, &lt;a href="http://www.zdnet.com/blog/open-source/apache-knights-at-round-tables/7716"&gt;Dana Blankenhorn&lt;/a&gt; noticed 'middle aged men dressed like college students' and then went on to liken us to the Knights of the Round Table.&lt;br /&gt;&lt;br /&gt;I won't dispute the Camelot analogy - but I do want to take issue with&amp;nbsp; 'middle aged men'. Middled aged is probably justifiable on average but it ignores the fact that there were a reasonable percentage of both old and young - and - no kidding - some of us are even female.&lt;br /&gt;&lt;br /&gt;The youth were brought in by a wonderful organisation that I knew little about till earlier year - the &lt;a href="http://www.apache.org/travel/"&gt;Apache TAC&lt;/a&gt; . The TAC enables great programmers early in their career who are&amp;nbsp; unlikely to be able to get employers to sponsor their travel and even more unlikely to be able to pay for themselves get a chance to come along and participate. This is great for them but it's also very necessary for the future of the ASF a good dose of wild youth counters the tendency of these organisations to turn crumbly and nostalgic.&lt;br /&gt;&lt;br /&gt;After the conference a few of us (including Igor of the blog title)&amp;nbsp; had to hang out in Atlanta for the weekend and ended up in &lt;a href="http://www.blindwilliesblues.com/"&gt;Blind Willies&lt;/a&gt;, Atlanta's finest blues bar. We, Igor and I, danced till the early hours to the music of House Rocker Johnson. So in future I would like to suggest another question on the TAC form:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Are you prepared to dance like nobody is watching?&lt;/li&gt;&lt;/ul&gt;Anyone who can't commit (without a reasonable excuse) should be consigned to the 'encroaching middle age bucket' and discarded. &lt;br /&gt;&lt;br /&gt;By the way - for those of you who are almost certainly too young to recognise it - the title quote is a reference to '&lt;a href="http://www.youtube.com/watch?v=Sa1i375FuGw"&gt;The Monster Mash&lt;/a&gt;' from the 1969 Bonzo Dog album 'Tadpoles'.&amp;nbsp; I like the idea that younger delegates might inject a bit of life into the proceedings and don't intend to extend the analogy any further than that :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-7210362131172401367?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/7210362131172401367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=7210362131172401367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7210362131172401367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7210362131172401367'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/11/igor-have-you-watered-brains-today-igor.html' title='Igor - have you watered the brains today, Igor?'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-2182700607197388515</id><published>2010-11-10T01:25:00.000-08:00</published><updated>2010-11-10T01:25:52.463-08:00</updated><title type='text'>ApacheCon Atlanta</title><content type='html'>So that was my first ApacheCon - if you don't count the one in Dublin at which I drank far too much Guiness and decided on a career change which took me on a slightly circuitous route through&amp;nbsp; PHP&amp;nbsp; and back to Apache again.&lt;br /&gt;&lt;br /&gt;It was a pretty amazing conference all round - great to meet Lin Sun, Jarek Gawor, Kevan Miller and others from IBM. Also great to meet new Apache people&amp;nbsp; - and catch up with the ones I already knew.&lt;br /&gt;&lt;br /&gt;AWESOME that IBM is a gold sponsor of the ASF - well done whoever made that happen!&lt;br /&gt;&lt;br /&gt;As usual I learned a lot about technology - Kevan had a nice slide explaining which other Apache projects are used in Geronimo - I had no idea.&amp;nbsp; I do like this philosophy - no need to re-invent wheels when there are Apache projects which provide spokes, hubs, rims and tyres.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_EifRUa32KOM/TNpjwjqWZWI/AAAAAAAAALg/il2nxrKYJSk/s1600/Geronimo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="206" src="http://1.bp.blogspot.com/_EifRUa32KOM/TNpjwjqWZWI/AAAAAAAAALg/il2nxrKYJSk/s320/Geronimo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-2182700607197388515?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/2182700607197388515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=2182700607197388515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2182700607197388515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2182700607197388515'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/11/apachecon-atlanta.html' title='ApacheCon Atlanta'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EifRUa32KOM/TNpjwjqWZWI/AAAAAAAAALg/il2nxrKYJSk/s72-c/Geronimo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-8085058525364266</id><published>2010-10-29T05:43:00.000-07:00</published><updated>2010-10-29T05:43:48.029-07:00</updated><title type='text'>Send your developers to JAX!</title><content type='html'>Last month I, and a number of developers from IBM's Hursley labs, went to &lt;a href="http://jaxlondon.com/"&gt;JAX London&lt;/a&gt;; I'm delighted to say that we were a gold sponsor this year. I was going to write about the conference before but sadly I didn't get to see (m)any of the sessions because I was responsible for&amp;nbsp; the IBM demo area and spent most of my time talking to people about what IBM does with &lt;a href="http://www.ibm.com/software/websphere/osgi"&gt;OSGi&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;In between talking to people, my view of the conference was mainly looking at the other sponsor's stands. So, here are some observations based on what I saw:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;This is a great UK conference to sponsor if you want to reach Java developers.&lt;/li&gt;&lt;li&gt;The busiest stands were the ones that had tools demos and/or were able to sell interesting stories about&amp;nbsp; work that they were involved in - or they were hiring :-)&lt;/li&gt;&lt;/ol&gt;If you are going to sponsor a developer conference, which I strongly recommend,&amp;nbsp; send your developers to run the stand....or at least your tech sales people. Don't send the salesmen. Seriously, no-one will walk away from this conference with a bunch of orders - you won't close a sale here. The aim is inspire people with a vision of how working with you and your products will make their life easier, more profitable and more fun (in a tech sort of way) - that message &lt;b&gt;will&lt;/b&gt; get back to the people with hard cash. Trust me.&lt;br /&gt;&lt;br /&gt;Here's my favourite image&amp;nbsp; from the conference - taken at about 19:00 by a slightly wobbly photographer - I have appropriated the Microsft stand - which was looking a little lonely. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_EifRUa32KOM/TMq89oolTSI/AAAAAAAAALc/6v_Ohu02UIU/s1600/LateAtJAX.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="263" src="http://3.bp.blogspot.com/_EifRUa32KOM/TMq89oolTSI/AAAAAAAAALc/6v_Ohu02UIU/s320/LateAtJAX.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;By the way, I am a recovering Windows user - I've been free for nearly three years now, so it took me several beers to get this close....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-8085058525364266?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/8085058525364266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=8085058525364266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/8085058525364266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/8085058525364266'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/10/send-your-developers-to-jax.html' title='Send your developers to JAX!'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EifRUa32KOM/TMq89oolTSI/AAAAAAAAALc/6v_Ohu02UIU/s72-c/LateAtJAX.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-2996056360574143316</id><published>2010-10-20T06:41:00.000-07:00</published><updated>2010-10-20T06:41:24.500-07:00</updated><title type='text'>Testing bundles with PAX Exam</title><content type='html'>For integration testing OSGi bundles there is pretty much only one option - it's &lt;a href="http://wiki.ops4j.org/display/paxexam/Pax+Exam"&gt;PAX Exam&lt;/a&gt;.&amp;nbsp; This week, as part of preparing a talk for &lt;a href="http://na.apachecon.com/c/acna2010/sessions/549"&gt;ApacheCon&lt;/a&gt; I decided I wanted to have a simple 'HelloWorld' test showing the use of PAX Exam. It was all pretty straightforward - except for one thing that took hours to resolve - I thought the one thing might be worth mentioning.&lt;br /&gt;&lt;br /&gt;I use Maven to build with, the application I was trying to write a test for was a stand alone version of this &lt;a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blueprint/helloworld/"&gt;OSGi Blueprint Hello World&lt;/a&gt; sample. The application is pretty trivial and so is the test case. I used Craig Walls' &lt;a href="http://java.dzone.com/articles/putting-osgi-test-pax-exam"&gt;tutorial&lt;/a&gt; to get me started.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, what was the problem? This was what happened when I ran 'mvn install' in my test project in an attempt to run my test case:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_EifRUa32KOM/TL7ukr4FnDI/AAAAAAAAALY/9gDYeE5wBHs/s1600/PAXFail.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="83" src="http://1.bp.blogspot.com/_EifRUa32KOM/TL7ukr4FnDI/AAAAAAAAALY/9gDYeE5wBHs/s400/PAXFail.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I had no idea why anything was looking for com/sun/jdmk/jmxtools/1.2.1/jmxtools-1.2.1.jar, it certainly wasn't something I'd specified as a dependency in the project pom. Eventually, after much searching around, I looked at the &lt;a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/parent/default-parent/pom.xml"&gt;Apache Aries default-parent pom&lt;/a&gt; and noted that some 'exclusions' had been added to the pax-logging section. I copied the same exclusions into my test project's pom and everything just worked.&amp;nbsp; The relevant sections of the pom are highlighted below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TL7r5r0CO-I/AAAAAAAAALQ/zVmRKKMJuMk/s1600/PAXFix.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="323" src="http://2.bp.blogspot.com/_EifRUa32KOM/TL7r5r0CO-I/AAAAAAAAALQ/zVmRKKMJuMk/s400/PAXFix.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps - apart from that small problem I really like PAX Exam :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-2996056360574143316?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/2996056360574143316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=2996056360574143316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2996056360574143316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2996056360574143316'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/10/testing-bundles-with-pax-exam.html' title='Testing bundles with PAX Exam'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_EifRUa32KOM/TL7ukr4FnDI/AAAAAAAAALY/9gDYeE5wBHs/s72-c/PAXFail.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-5271725378744082848</id><published>2010-09-22T13:21:00.000-07:00</published><updated>2010-09-22T13:21:49.455-07:00</updated><title type='text'></title><content type='html'>GOAT (Graphical OSGi Analysis Tools) is one of the Apache Aries samples. It's not released code but can be found in SVN and is easily built. Check &lt;a href="http://incubator.apache.org/aries/buildingaries.html"&gt;building Aries&lt;/a&gt; to see how.&lt;br /&gt;&lt;br /&gt;When you have built the project, navigate to the samples/goat/goat-assembly/target directory and run the sample by typing:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;java -jar osgi-3.5.0.v20090520.jar -console &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Have a look at the bundles (using 'ss'), you should see several 'goat' bundles active. Now, so that you can look at it later, install the Aries JDBC blog sample into the same framework. You should be able to do this just by copying the samples/blog/blog-jdbc-eba/target/*.eba into the goat-assembly/target/load directory.&lt;br /&gt;&lt;br /&gt;Check that the blog sample is running by navigating to http://localhost:8080/org.apache.aries.samples.blog.web/, you should see this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_EifRUa32KOM/TJpa6L36n2I/AAAAAAAAAKs/X38uhsAqvAQ/s1600/Blog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" src="http://3.bp.blogspot.com/_EifRUa32KOM/TJpa6L36n2I/AAAAAAAAAKs/X38uhsAqvAQ/s400/Blog.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Click on 'Create Author' and create an author.&lt;br /&gt;&lt;br /&gt;Now, in a different browser window, navigate to http://127.0.0.1:8080/org.apache.aries.samples.goat.web/web/. You should see this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_EifRUa32KOM/TJpcFEfGMJI/AAAAAAAAAK0/eshnRl0oGn0/s1600/Goat.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="37" src="http://3.bp.blogspot.com/_EifRUa32KOM/TJpcFEfGMJI/AAAAAAAAAK0/eshnRl0oGn0/s400/Goat.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Not very exciting. Click on the drop-down beside 'DummyProvider' and select 'BundleContextModel', then click 'Use Provider'. Wait a few seconds while the screen builds itself, it should look like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TJpdJOcdBHI/AAAAAAAAAK8/5kt5pH0XaTc/s1600/Goat2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="97" src="http://2.bp.blogspot.com/_EifRUa32KOM/TJpdJOcdBHI/AAAAAAAAAK8/5kt5pH0XaTc/s400/Goat2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;On the left hand side you'll the same list of bundles as you saw with 'ss' from the command line, in the right hand area you can see each bundle drawn as an oblong shape. Since we are displaying all the bundles in the platform this is probably a bit too much information. Hit the 'Hide all' button at the top to get rid of them.&lt;br /&gt;&lt;br /&gt;Use the slider to move down the list of bundles on the left until you get to the blog sample bundles. Click on 'show' for each blog sample bundle, grab the bundles and move them around to get to this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_EifRUa32KOM/TJpe9VY7vTI/AAAAAAAAALE/vrgJNxKrXvc/s1600/Goat3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_EifRUa32KOM/TJpe9VY7vTI/AAAAAAAAALE/vrgJNxKrXvc/s400/Goat3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now you can see the four bundles that comprise the Blog sample and you can see a bit of information about how they are related to each other. Try clicking on the 'twisties' to expand information about packages and services.&lt;br /&gt;&lt;br /&gt;This is really prototype code, we wrote it to get round the problem of using a mixture of the OSGi console and slides to explain how the blog sample works. GOAT works by having an OSGi bundle in the framework which spits out information to a web front end which we deal with in JavaScript - that's what allows you to move bundles around. Even though it's at the prototype stage at the moment I think it's worth mentioning in a post. I haven't found anything similar, Knopflerfish do have a graphical display but it's static - you can't grab things and move them around.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-5271725378744082848?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/5271725378744082848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=5271725378744082848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/5271725378744082848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/5271725378744082848'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/09/goat-graphical-osgi-analysis-tools-is.html' title=''/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EifRUa32KOM/TJpa6L36n2I/AAAAAAAAAKs/X38uhsAqvAQ/s72-c/Blog.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-2978044885077355951</id><published>2010-09-22T05:55:00.000-07:00</published><updated>2010-09-24T07:34:31.768-07:00</updated><title type='text'>Running the Aries samples on Apache Geronimo</title><content type='html'>The Aries samples, which demonstrate the use of Enterprise OSGi components, also run on Apache Geronimo.&lt;br /&gt;&lt;br /&gt;To run the samples, get the Geronimo V3-M1 release from &lt;a href="http://geronimo.apache.org/apache-geronimo-v30-m1-release.html"&gt;here.&lt;/a&gt; Either the one based on Tomcat or Jetty will do.&lt;br /&gt;&lt;br /&gt;Extract it and change directory to&amp;nbsp;geronimo-jetty8-javaee6-3.0-M1 (or geronimo-tomcat7-javaee6-3.0-M1)&lt;br /&gt;&lt;a href="http://repo2.maven.org/maven2/org/apache/aries/samples/blog/org.apache.aries.samples.blog.jdbc.eba/0.2-incubating/org.apache.aries.samples.blog.jdbc.eba-0.2-incubating.eba"&gt; &lt;/a&gt;&lt;br /&gt;I found it useful to change the default http port from 8080 to something else (I have too many things that use 8080). To do this, edit the file ./var/config/config-substitutions.properties.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Grab these pre-reqs (may not be needed in the next Geronimo release):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mirrors.ibiblio.org/pub/mirrors/maven2/org/tranql/tranql-connector-derby-embed-xa/1.6/tranql-connector-derby-embed-xa-1.6.rar"&gt;&lt;/a&gt;&lt;a href="http://mirrors.ibiblio.org/pub/mirrors/maven2/org/tranql/tranql-connector-derby-embed-xa/1.6/tranql-connector-derby-embed-xa-1.6.rar"&gt;tranql-connector-derby-embed-xa-1.6.rar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://cwiki.apache.org/GMOxDEV/apache-aries-samples-running-in-geronimo-30.data/aries-datasource.xml"&gt;aries-datasource.xml&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;And the two versions of the Aries blog sample:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://repo2.maven.org/maven2/org/apache/aries/samples/blog/org.apache.aries.samples.blog.jdbc.eba/0.2-incubating/org.apache.aries.samples.blog.jdbc.eba-0.2-incubating.eba"&gt;org.apache.aries.samples.blog.jdbc.eba-0.2-incubating.eba&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://repo2.maven.org/maven2/org/apache/aries/samples/blog/org.apache.aries.samples.blog.jpa.eba/0.2-incubating/org.apache.aries.samples.blog.jpa.eba-0.2-incubating.eba"&gt;org.apache.aries.samples.blog.jpa.eba-0.2-incubating.eba&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;Start the Geronimo server,&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./bin/geronimo run&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;to run in the foreground. In a different window, from the same directory, deploy the pre-reqs:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./bin/deploy -u system -p manager deploy tranql-connector-derby-embed-xa-1.6.rar aries-datasource.xml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then deploy one or other version of the blog sample (but not both :-))&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./bin/deploy -u system -p manager deploy org.apache.aries.samples.blog.jdbc.eba-0.2-incubating.eba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Navigate to http://localhost:XXXX/blog where XXXX is your HTTP port and check that the blog is running.&lt;br /&gt;&lt;br /&gt;Navigate to http://localhost:XXXX/console and log in, uid 'system' , pwd 'manager'. Use the menu under Applications-&amp;gt; System Modules to start, stop, uninstall the blog sample.&lt;br /&gt;&lt;br /&gt;More extensive documentation can be found &lt;a href="https://cwiki.apache.org/GMOxDEV/apache-aries-samples-running-in-geronimo-30.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-2978044885077355951?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/2978044885077355951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=2978044885077355951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2978044885077355951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2978044885077355951'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/09/running-aries-samples-on-apache.html' title='Running the Aries samples on Apache Geronimo'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-4983149076100412922</id><published>2010-09-19T09:43:00.000-07:00</published><updated>2010-09-19T09:43:45.085-07:00</updated><title type='text'>SVN Git shootout at the Apache Retreat</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TJY8w916eWI/AAAAAAAAAKg/XTrx_mPzTsA/s1600/yall.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_EifRUa32KOM/TJY8w916eWI/AAAAAAAAAKg/XTrx_mPzTsA/s400/yall.jpg" width="242" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-4983149076100412922?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/4983149076100412922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=4983149076100412922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/4983149076100412922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/4983149076100412922'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/09/svn-git-shootout-at-apache-retreat.html' title='SVN Git shootout at the Apache Retreat'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EifRUa32KOM/TJY8w916eWI/AAAAAAAAAKg/XTrx_mPzTsA/s72-c/yall.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-2182753200036328658</id><published>2010-09-18T13:43:00.000-07:00</published><updated>2010-09-19T02:46:50.665-07:00</updated><title type='text'>Apache Retreat, Hursley September 2010</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_EifRUa32KOM/TJUj8pBO7gI/AAAAAAAAAKY/9D7AadhRvkQ/s1600/ApacheRetreat.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://4.bp.blogspot.com/_EifRUa32KOM/TJUj8pBO7gI/AAAAAAAAAKY/9D7AadhRvkQ/s400/ApacheRetreat.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Photo credit: Rainer Jung&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-2182753200036328658?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/2182753200036328658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=2182753200036328658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2182753200036328658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2182753200036328658'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/09/apache-retreat-hursley-september-2010.html' title='Apache Retreat, Hursley September 2010'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EifRUa32KOM/TJUj8pBO7gI/AAAAAAAAAKY/9D7AadhRvkQ/s72-c/ApacheRetreat.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-5793329097047056449</id><published>2010-09-17T03:27:00.000-07:00</published><updated>2010-09-22T07:28:23.908-07:00</updated><title type='text'>Apache Aries JPA samples</title><content type='html'>There are two things that I almost always get caught by when developing samples for Apache Aries which use the JPA capabilities. The first is to do with datasources, the second is to do with enhancing persistence entities.&lt;br /&gt;&lt;br /&gt;I get caught out because these two things would normally be provided by a JEE compliant container - something like the WebSphere App server - so,&amp;nbsp; as an application developer I would not normally have to think too much about them. However, all of the Aries samples need to be able to run in an OSGi platform built up using a set of readily available open source bundles so we need to find ways to do things that an app server would normally do for us.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Datasources&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;If you look at the source for the &lt;a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blog/"&gt;Apache Aries blog sample&lt;/a&gt;&amp;nbsp; you will find that the JPA persistence bundle depends on being able to use two other bundles. The relationships are like this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_EifRUa32KOM/TJDnQk7q-9I/AAAAAAAAAJ4/ISzTfGq6Kec/s1600/DataSource.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://3.bp.blogspot.com/_EifRUa32KOM/TJDnQk7q-9I/AAAAAAAAAJ4/ISzTfGq6Kec/s400/DataSource.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;On the left, shown in yellow, is the blog-jpa-persistence bundle. This is part of the blog sample application. Inside that bundle there are two important xml files, one with blueprint configuration, the other with persistence information. Configuration in these two files points to things supplied by the other two bundles.&lt;br /&gt;&lt;br /&gt;The middle (green) and right hand side bundles (mauve) are both providing function that would normally be part of&amp;nbsp; an app server. The green one (transaction-wrappers) is available as part of Aries, it's a really simple implementation of function to enlist a data source. This is provided in Aries as a convenience for people writing samples. The 'datasource' bundle is something that needs to be&amp;nbsp; provided by the application developer but is not part of the application, there is no Java code to write - just a little blueprint which points to your database. For an example - look at the &lt;a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blog/blog-datasource/src/main/resources/OSGI-INF/blueprint/dataSource.xml"&gt;blueprint&lt;/a&gt; configuration in the blog sample data source. If you were using an app server you would normally configure data sources through an admin screen - providing the data source bundle is doing just the same thing.&lt;br /&gt;&lt;br /&gt;When you assemble the OSGi platform that you will use to run your application you will need to make sure that both the transaction-wrappers bundle and your datasource bundle are running in the platform before you drop your OSGi application onto the load directory to be run. If you are in any doubt about how to assemble the kind of OSGi platforn you will need have a look at the &lt;a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blog/blog-assembly/"&gt;blog-assembly&lt;/a&gt; project in Aries.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Enhancing persistence entities&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;The other part of JPA that I always get bitten by is the need to &lt;a href="http://people.apache.org/%7Emprudhom/openjpa/site/openjpa-project/manual/ref_guide_pc_enhance.html"&gt;enhance&lt;/a&gt;&amp;nbsp; persistence entities. Enhancing means running a utility&amp;nbsp; that takes the byte code for persistence entities, processes it and spits out another, vastly more efficient and much larger, set of byte codes. This is again something that a fully compliant JEE container be expected to do for you - so you probably wouldn't be aware of it. There are various ways to enhance persistence&amp;nbsp; entities, in the Aries samples we use Maven, look at the&amp;nbsp;&lt;a href="https://svn.apache.org/repos/asf/incubator/aries/trunk/samples/blog/blog-jpa-eba/pom.xml"&gt;pom.xml&lt;/a&gt; in samples/blog/blog-persistence-jpa/ to see how. Sadly, not everyone likes Maven as much as I do, so here is how to do it using Eclipse.&lt;br /&gt;&lt;br /&gt;In this example I'm using the Eclipse JEE (Helios) development platform with the "IBM Rational Development Tools for OSGi Applications 0.6" installed. This is convenient because I can work on the code, build it and then export it as an OSGi application (.eba file). The .eba file can be dropped into the 'load' directory of my Aries platform to be run.&lt;br /&gt;&lt;br /&gt;My Eclipse screen looks like this: &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_EifRUa32KOM/TJM_kskb3oI/AAAAAAAAAKQ/RiUPSUNw2yA/s1600/Eclipse1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="377" src="http://3.bp.blogspot.com/_EifRUa32KOM/TJM_kskb3oI/AAAAAAAAAKQ/RiUPSUNw2yA/s400/Eclipse1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm using a sample Stocks application; the biz module has some persistence entities and the persistence xml is in it's default location in the META-INF directory.&amp;nbsp; To enhance the entities we need to run en external tool. Click on the external tools drop-down (the thing with a little red suitcase in the top bar) and then external tools configuration. From the next screen, select 'Program' and then 'new' (a white rectangle with a yellow cross in the corner). You should see something like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TJIQj5HO3_I/AAAAAAAAAKI/A3tG9iUPzG4/s1600/Eclipse2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_EifRUa32KOM/TJIQj5HO3_I/AAAAAAAAAKI/A3tG9iUPzG4/s400/Eclipse2.png" width="397" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;For 'Name', type in JPA_enhancer. Then, in the 'Location' field add the location of your Java executable. For me this is: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin/java.&lt;br /&gt;&lt;br /&gt;Now the fun begins. Under 'Arguments' you will need to add the command to run the JPA enhancer, for me this looks something like:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-cp MYJARS/commons-collections-3.2.1.jar:MYJARS/geronimo-jta_1.1_spec-1.1.1.jar:MYJARS/geronimo-jpa_2.0_spec-1.0.jar:MYJARS/openjpa-2.0.0.jar:MYJARS/commons-lang-2.5.jar:MYJARS/org.apache.servicemix.bundles.serp-1.13.1_2.jar:MYWKSP/org.apache.stocks.biz/bin:MYWKSP/org.apache.stocks.api/bin:MYWKSP/org.apache.stocks.biz/src org.apache.openjpa.enhance.PCEnhancer &lt;/div&gt;&lt;br /&gt;where MYJARS is the path to a directory where I have copies of all the jars I need. MYWKSP is the path to the sample code.&lt;br /&gt;&lt;br /&gt;It's easiest to think about this in three parts. First,&amp;nbsp; all the jars that the enhancer need on the classpath, these are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;commons-collections-3.2.1.jar&lt;/li&gt;&lt;li&gt;geronimo-jta_1.1_spec-1.1.1.jar&lt;/li&gt;&lt;li&gt;geronimo-jpa_2.0_spec-1.1.jar &lt;/li&gt;&lt;li&gt;openjpa-2.0.0.jar&lt;/li&gt;&lt;li&gt;commons-lang-2.5.jar &lt;/li&gt;&lt;li&gt;org.apache.servicemix.bundles.serp-1.13.1_2.jar&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Then you'll need the class files and the source for your persistence entities and the class files for any API they depend on, thus:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;org.apache.stocks.biz/bin&lt;/li&gt;&lt;li&gt;org.apache.stocks.api/bin&lt;/li&gt;&lt;li&gt;org.apache.stocks.biz/src&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Finally the name of the program that you are going to run :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;org.apache.openjpa.enhance.PCEnhancer &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Adding that command (with your own paths of course) and saving the configuration should get you to the point where you can run your JPA_enhancer. The easiest way to check that it has worked (apart from there being no obvious errors) is to look at the size of the class files&amp;nbsp; - they should be much larger than the unenhanced versions.&lt;br /&gt;&lt;br /&gt;Before exporting the OSGi application you will&amp;nbsp; need to modify the MANIFEST.MF of your persistence bundle to make sure that the import-package contains:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;org.apache.openjpa.enhance;version="[2.0,3)",org.apache.openjpa.util;version="[2.0,3)"&lt;/div&gt;&lt;br /&gt;Don't worry if Eclipse complains about this. Finally - just export the project as an OSGi Application (EBA) and run it by adding it to the load directory of your OSGi platform.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-5793329097047056449?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/5793329097047056449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=5793329097047056449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/5793329097047056449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/5793329097047056449'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/09/apache-aries-jpa-samples.html' title='Apache Aries JPA samples'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EifRUa32KOM/TJDnQk7q-9I/AAAAAAAAAJ4/ISzTfGq6Kec/s72-c/DataSource.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-8219207787185391168</id><published>2010-09-14T00:41:00.000-07:00</published><updated>2010-09-14T13:15:27.636-07:00</updated><title type='text'>Colliding worlds: Development and Marketing</title><content type='html'>During my career in the software industry I've worked in both marketing departments and in development labs. Now, as a technical advocate, I'm part of the development organisation but I work with marketing. &lt;br /&gt;&lt;br /&gt;As a software developer my first reaction to any kind of marketing information, no matter who it comes from,&amp;nbsp; is that it is likely to be junk.&amp;nbsp; I wouldn't feel this way if I felt the material was aimed at me and was telling me about tools or products that would help me. But all too often it isn't. And yet, whose fault is that? We, as developers, can't expect marketing to 'just know' about cool stuff we are working on. &lt;br /&gt;&lt;br /&gt;Really, development and marketing should talk to each other. And now we do - a little bit :-)&lt;br /&gt;&lt;br /&gt;To illustrate the issues for both sides, this is the story of trying to create a marketing message that both organisations were happy with.&amp;nbsp; We were trying to find an illustration to go with the phrase "Turning developers into superheroes", this was the starting proposal from my marketing colleagues:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_EifRUa32KOM/TI4xDWOiZOI/AAAAAAAAAJg/WHxFNNjyF-k/s1600/SalesmanSuperhero.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_EifRUa32KOM/TI4xDWOiZOI/AAAAAAAAAJg/WHxFNNjyF-k/s320/SalesmanSuperhero.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What's wrong with that? Seriously, just about everything. This might work if the caption was "Turning salesmen into superheroes".&amp;nbsp; No developer I know would come to work dressed like that - well, the cape maybe, but the shirt and tie? Forget it.&lt;br /&gt;&lt;br /&gt;Development's counter proposal for the image was this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TI4vQOPpOcI/AAAAAAAAAJY/zqv5TBgVuXc/s1600/SuperHeroIan.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_EifRUa32KOM/TI4vQOPpOcI/AAAAAAAAAJY/zqv5TBgVuXc/s320/SuperHeroIan.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Somewhat predictably, my colleagues in marketing issued an immediate veto. Underwear on display is apparently unacceptable even if it's worn over the top of other clothes and other underwear is being worn underneath. Actually I don't know that other underwear was being worn underneath, I'm not on that kind of terms with the model. Although I can safely assert that he is, in fact, a real developer.&lt;br /&gt;&lt;br /&gt;Impasse.&lt;br /&gt;&lt;br /&gt;I spent the weekend 'gimping up' the aforementioned unmentionables and came up with this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TI4uvNtJRkI/AAAAAAAAAJQ/lmKnu2-AmfA/s1600/WithCape2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_EifRUa32KOM/TI4uvNtJRkI/AAAAAAAAAJQ/lmKnu2-AmfA/s320/WithCape2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;However, I never got to&amp;nbsp; show it to marketing because they produced this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_EifRUa32KOM/TI4xpPM5JKI/AAAAAAAAAJo/X-degLaa7ps/s1600/IncredibleHulk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_EifRUa32KOM/TI4xpPM5JKI/AAAAAAAAAJo/X-degLaa7ps/s320/IncredibleHulk.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;which I&amp;nbsp; like a lot. The use of a QR code was a great idea and the guy doesn't look like a salesman. The image is a bit more "Incredible Hulk" than "Superman" but it works fine.&amp;nbsp; I'm really happy with this outcome, I think that we've got a much better result by working across an organisational boundary than either of us could have achieved on our own.&lt;br /&gt;&lt;br /&gt;Next challenge - depict the benefits of Enterprise OSGi&amp;nbsp; in the style Marvel comics :-) I will be SpiderWoman.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-8219207787185391168?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/8219207787185391168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=8219207787185391168' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/8219207787185391168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/8219207787185391168'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/09/colliding-worlds-development-and.html' title='Colliding worlds: Development and Marketing'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EifRUa32KOM/TI4xDWOiZOI/AAAAAAAAAJg/WHxFNNjyF-k/s72-c/SalesmanSuperhero.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-1608410115850532387</id><published>2010-06-15T06:28:00.000-07:00</published><updated>2010-06-15T11:04:46.954-07:00</updated><title type='text'>Install the WAS OSGi Feature pack</title><content type='html'>It's easy and free - these are minimal (Ubuntu based) instructions for starting with no WAS installation and getting to an installation of WAS with the OSGi feature pack. If the steps aren't clear look at the rather more verbose instructions in an earlier post in this blog :-). &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install WebSphere&amp;nbsp; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Download from &lt;a href="http://www.ibm.com/developerworks/downloads/ws/wasdevelopers/"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Unzip this was.cd.7000.wasdev.nocharge.linux.ia32.tar.gz&amp;nbsp; &lt;/li&gt;&lt;li&gt;&amp;nbsp;sudo ./launchpad and follow the fairly obvious screens. Uncheck the box that asks if you want additional security.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Download Fix pack 7.0.0.9&amp;nbsp;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Download from &lt;a href="http://www-01.ibm.com/support/docview.wss?rs=180&amp;amp;uid=swg24025886"&gt;here&lt;/a&gt; &lt;/li&gt;&lt;li&gt;The file will be called something like: 7.0.0-WS-WAS-LinuxX32-FP0000009.pak&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Download the SDK upgrade pack&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Download from &lt;a href="http://www-01.ibm.com/support/docview.wss?uid=swg24025889"&gt;here&lt;/a&gt; &lt;/li&gt;&lt;li&gt;File will be called something like: 7.0.0-WS-WASSDK-LinuxX32-FP0000009.pak&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Install the update installer&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Download from &lt;a href="http://www-01.ibm.com/support/docview.wss?uid=swg24020446"&gt;here&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;Extract 7.0.0.9-WS-UPDI-LinuxIA32.tar.gz &lt;/li&gt;&lt;li&gt;cd to the top level directory of the installation&lt;/li&gt;&lt;li&gt;sudo ./install to make it install itself&lt;/li&gt;&lt;li&gt;After installing it will launch itself and you can go on to install the two 7.0.0.9 packs that you downloaded above.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Get the OSGi Feature pack from &lt;a href="http://www-01.ibm.com/software/webservers/appserv/was/featurepacks/osgi/instopt/index.html"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Download Installation Manager, 1.3.4.1-WS-IM-LinuxX86.zip. (86MB)&lt;/li&gt;&lt;li&gt;Unzip it&lt;/li&gt;&lt;li&gt;cd to the top level installation directory&lt;/li&gt;&lt;li&gt;sudo ./install to make IM install itself. IM will lead you through the next three steps&lt;/li&gt;&lt;li&gt;Import your WAS installation. &lt;/li&gt;&lt;li&gt;Install the OSGi Feature pack. &lt;/li&gt;&lt;li&gt;Launch the profile management tool and augment your profile&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Check your installation&lt;/li&gt;&lt;ul&gt;&lt;li&gt;cd /opt/IBM/WebSphere/AppServer/bin&lt;/li&gt;&lt;li&gt;sudo ./startServer.sh server1&lt;/li&gt;&lt;li&gt;navigate to  http://localhost:9060/ibm/console/ and check that you can see the WAS console.&lt;/li&gt;&lt;li&gt;sudo ./stopServer.sh server1&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;At this stage I would normally install the database for the blog sample and run the set up script for it.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;cd /opt/IBM/WebSphere/AppServer/feature_packs/aries/samples/blog&lt;/li&gt;&lt;li&gt;sudo /opt/IBM/WebSphere/AppServer/derby/bin/embedded/ij.sh createBlogDb.sql&lt;/li&gt;&lt;li&gt;sudo /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/wsadmin.sh -f blogSampleInstall.py setupOnly server1 ubuntuNode01 &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-1608410115850532387?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/1608410115850532387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=1608410115850532387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/1608410115850532387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/1608410115850532387'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/06/install-was-osgi-feature-pack.html' title='Install the WAS OSGi Feature pack'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-5051970309074715509</id><published>2010-06-01T03:30:00.000-07:00</published><updated>2010-06-01T03:30:34.383-07:00</updated><title type='text'>Talking about Apache Aries</title><content type='html'>The number of OSGi related talks seems to be increasing - which can only be a good thing. I'm going to &lt;a href="http://skillsmatter.com/event/os-mobile-server/osgi-workshop-become-a-certified-bundle-manager-today"&gt;this one&lt;/a&gt; tonight and looking forward to it!&lt;br /&gt;&lt;br /&gt;I thought I'd look at who was talking about &lt;a href="http://incubator.apache.org/aries/"&gt;Apache Aries&lt;/a&gt; and where for the next month, I'm sure this isn't a comprehensive list so let me know if I've missed anything.&lt;br /&gt;&lt;br /&gt;June 2nd - Tim Ward will be talking about JPA and OSGi at &lt;a href="http://jazoon.com/Conference/Wednesday/Ward"&gt;Jazoon&lt;/a&gt; in Zurich&lt;a href="http://jazoon.com/Conference/Wednesday/Ward"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;June 8th - Holly Cummins will be at the &lt;a href="http://www.parisjug.org/"&gt;Paris JUG&lt;/a&gt; giving an Apache Aries presentation&lt;span style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Geneva,serif;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;June 19th (*)&amp;nbsp; - Zoë Slattery will be at the &lt;a href="https://wiki.sdn.sap.com/wiki/display/events/SAP%20Inside%20Track%202010%20London"&gt;SAP Inside Track&lt;/a&gt; talking about Enterprise OSGi in Apache Aries&lt;br /&gt;&lt;div style="line-height: 100%; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Geneva,serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;June 26th(*)&amp;nbsp; - Mark Nuttall will be giving an Apache Aries presentation at the &lt;a href="http://skillsmatter.com/event/java-jee/london-java-community-unconference-02"&gt;London Java Community Unconference.&lt;/a&gt;&lt;br /&gt;&lt;div style="line-height: 100%; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Geneva,serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;July 1st - Andrew Osbourne will run a &lt;a href="http://uk.osgiusers.org/Main/MeetingsandEventsCalendar#nextmeet"&gt;Blueprint tutorial&lt;/a&gt; at the OSGi Users' forum based on the implementation of Blueprint in Apache Aries&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* These are both unconference style events so although presentations have been offered there is of course no guarantee that they will be delivered. However both events look pretty well worth attending whether there is Aries there or not :-)&lt;br /&gt;&lt;br /&gt;&lt;div style="line-height: 100%; margin-bottom: 0cm;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-5051970309074715509?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/5051970309074715509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=5051970309074715509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/5051970309074715509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/5051970309074715509'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/06/talking-about-apache-aries.html' title='Talking about Apache Aries'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-7417656963557501034</id><published>2010-05-01T00:55:00.000-07:00</published><updated>2010-05-01T01:45:04.002-07:00</updated><title type='text'>Women's appointments</title><content type='html'>A couple of weeks ago I was helping my mother move some furniture and  found a newspaper from Saturday December 23rd 1967 which had been used as drawer lining.  I skimmed through it and eventually found the "Women's Appointments" section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EifRUa32KOM/S9vg3OjNweI/AAAAAAAAAJA/ndltzxpu-f8/s1600/WomensAppointmentsCropped.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 397px; height: 400px;" src="http://3.bp.blogspot.com/_EifRUa32KOM/S9vg3OjNweI/AAAAAAAAAJA/ndltzxpu-f8/s400/WomensAppointmentsCropped.jpg" alt="" id="BLOGGER_PHOTO_ID_5466209812147454434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course you would never see anything like this in the UK now, not since the sex discrimination act in 1975. The weird thing is that I would not have seen anything odd about this section in a newspaper in 1967. In fact, I applied for a job in 1973 as a lab technician for a chemical company and was not even mildly annoyed when they wrote back and said the job was only available to men. It makes me wonder how much I accept now without thinking too much about it.&lt;br /&gt;&lt;br /&gt;Thirty five years after the act there are clearly still things wrong in the UK. For example, why do so few girls go into computer science? For any teenage girl with a flair for maths it should be such an obvious career choice. My daughter obtained her degree in computer science last year and is very happily working for &lt;a href="http://assanka.net/"&gt;Assanka&lt;/a&gt; in London. However,  I suspect that she might never have followed that route if I hadn't worked for IBM. It's also probably true that I wouldn't have pursued a career in science if my mother had not been a doctor. How long will it take to push through enough role models to even things out? Generations?&lt;br /&gt;&lt;br /&gt;It's not all bad though, my son is a dancer and currently touring with &lt;a href="http://www.swanlaketour.com/"&gt;Matthew Bourne's Swan Lake&lt;/a&gt;. I cannot imagine what would have happened in the the 1960s if a child of intellectual middle class parents had insisted that all he wanted to do was dance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-7417656963557501034?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/7417656963557501034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=7417656963557501034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7417656963557501034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7417656963557501034'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/05/womens-appointments.html' title='Women&apos;s appointments'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EifRUa32KOM/S9vg3OjNweI/AAAAAAAAAJA/ndltzxpu-f8/s72-c/WomensAppointmentsCropped.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-105897164078746551</id><published>2010-04-18T12:46:00.000-07:00</published><updated>2010-04-18T13:20:01.437-07:00</updated><title type='text'>Reflections on Open Source Jumpstart #GDCOSJ1</title><content type='html'>When you work on an Open Source project most of your communication with colleagues will be through the mailing list or maybe on IRC. This works great 90% of the time but I think everyone understands that occasionally it's really helpful to meet and talk to the people you work with. Traditionally this has happened at conferences, for example ApacheCon, EclipseCon and so on.&lt;br /&gt;&lt;br /&gt;That's fine for people that are established committers - but what about people who want to start? Those mailing lists are pretty intimidating aren't they? Then when you do screw up the courage to write a note sometimes it never gets answered and you don't know why not. Or sometimes people don't read your question properly and answer something else. It can seem very unwelcoming. Initiatives like GSOC do a good job but they also miss the face to face element.&lt;br /&gt;&lt;br /&gt;It was just because of this that we decided to run Open Source Jumpstart. We wanted students to meet committers face to face, just once. It's amazing how many of those getting started barriers can be broken down with one day's work. It would be great if any of the students from Saturday carried on working on Open Source projects - however, even if they don't, in that one day's work bugs were fixed in every project and students learnt about how code is developed.&lt;br /&gt;&lt;br /&gt;There isn't much that's more satisfying than bringing two groups of people together and seeing both of them get something out of the experience. Have a look at the &lt;a href="http://www.meetup.com/grad-dc/calendar/12708772/#comments"&gt;Meetup&lt;/a&gt; to see feedback from the event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-105897164078746551?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/105897164078746551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=105897164078746551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/105897164078746551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/105897164078746551'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/04/reflections-on-open-source-jumpstart.html' title='Reflections on Open Source Jumpstart #GDCOSJ1'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-7905483141501445047</id><published>2010-04-17T23:51:00.000-07:00</published><updated>2010-04-18T00:27:24.090-07:00</updated><title type='text'>Open Source Jumpstart  #GDCOSJ1</title><content type='html'>Yesterday's GDC Open Source Jumpstart was amazing!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Thanks &lt;/span&gt;to all the open source projects that came:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/aries/"&gt;Apache Aries&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://harmony.apache.org/"&gt;Apache Harmony&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tomcat.apache.org/"&gt;Apache Tomcat&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tuscany.apache.org/"&gt;Apache Tuscany&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/wookie/"&gt;Apache Wookie&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/citrine-scheduler/"&gt;Citrine&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/ikasaneip/"&gt;Ikasan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/impala/"&gt;Impala&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.php.net"&gt;PHP&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;You guys worked so hard all day!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Thanks &lt;/span&gt;to all the students that came along and fixed bugs, wrote tests and documentation. Well done! I can't believe how far people came (from Edinburgh in one case) - you represent the future of software development and it was great to meet you.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Thanks &lt;/span&gt;to IBM for letting us use their wonderful Southbank location and to the &lt;a href="https://www-304.ibm.com/isv/spc/europe/hursley.htm"&gt;IBM Innovation Centre in Hursley&lt;/a&gt; for providing the food. The Innovation Centre have some great (free) resources for students, if any of you missed the links, here they are again:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="www.ibm.com/developerworks/mydeveloperworks"&gt;Mydeveloperworks&lt;/a&gt; - all sorts of resources for creating groups, wikis etc &lt;/li&gt;&lt;li&gt;&lt;a href="www.ibm.com/students"&gt;Student portal&lt;/a&gt; - competitions, stuff about jobs etc&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Finally - thanks to &lt;a href="http://uk.linkedin.com/in/barrycranford"&gt;Barry Cranford&lt;/a&gt; for being a continual positive inspiration and to the rest of the &lt;a href="http://graduatedevelopmentcommunity.wordpress.com/"&gt;GDC&lt;/a&gt;  organising committee for pulling yesterday's event together.&lt;br /&gt;&lt;br /&gt;Yes, I really think we might do this again!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-7905483141501445047?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/7905483141501445047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=7905483141501445047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7905483141501445047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7905483141501445047'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/04/open-source-jumpstart-gdcosj1.html' title='Open Source Jumpstart  #GDCOSJ1'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-921048965062962006</id><published>2010-04-11T23:25:00.000-07:00</published><updated>2010-04-12T12:22:20.515-07:00</updated><title type='text'>Apache programmers study Leech Farming in Ireland</title><content type='html'>For the last three days I've been in a Youth Hostel in rural Ireland with a bunch of programmers. Sounds like hell? Actually quite the reverse. It was probably the best 'unconference style' event that I've been to. So many things made it work - here are a few:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Beautiful countryside (most of us did a couple of hours walk on Saturday)&lt;/li&gt;&lt;li&gt;Everyone staying overnight for two days - no splitting up to go out to different pubs/restaurants etc&lt;/li&gt;&lt;li&gt;The weather - yes, it was sunny - in Ireland - in April - for three consecutive days.&lt;/li&gt;&lt;li&gt;Great mixture of projects, people, talks and coding time.&lt;/li&gt;&lt;li&gt;The only use of PowerPoint was in 'Presentation Karaoke' - a right and fitting use for PowerPoint. This is where the Leech Farming came in.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Thanks go to Noirin Shirley for the organisation, not only for doing the normal hassle stuff (booking the hostel, organising the food) but also for roping in her husband to collect us from Bray station and persuading her parents to turn up with home baked bread on the last day.&lt;br /&gt;&lt;br /&gt;Here is a shot of Andrus Adamchick at breakfast on the last day - just to give an idea of what the place was like.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EifRUa32KOM/S8Nu8cLrTVI/AAAAAAAAAI4/hNllGRRL2iU/s1600/Andrus.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_EifRUa32KOM/S8Nu8cLrTVI/AAAAAAAAAI4/hNllGRRL2iU/s400/Andrus.jpg" alt="" id="BLOGGER_PHOTO_ID_5459329157939547474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These events are somehow much more satisfying than the huge, expensive conferences. I come away feeling that I've learned something and met some great people. I'm looking forward to the next one already.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-921048965062962006?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/921048965062962006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=921048965062962006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/921048965062962006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/921048965062962006'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/04/apache-programmers-study-leech-farming.html' title='Apache programmers study Leech Farming in Ireland'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EifRUa32KOM/S8Nu8cLrTVI/AAAAAAAAAI4/hNllGRRL2iU/s72-c/Andrus.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-4787367473224389421</id><published>2010-03-08T04:37:00.000-08:00</published><updated>2010-03-08T06:09:49.799-08:00</updated><title type='text'>Persistence layers in the Apache Aries Blog Sample</title><content type='html'>When we first added the Blog Sample to &lt;a href="http://incubator.apache.org/aries/"&gt;Apache Aries&lt;/a&gt; there was no support in Aries for JPA, so the sample was written with a JDBC persistence layer.  Over the past month or so JPA support has been added to Aries,  as a result I spent some time last week getting a new JPA version of the blog persistence layer to work on Aries components.&lt;br /&gt;&lt;br /&gt;The samples in Aries are deigned so that they run on an OSGi platform which pulls in just enough components to run the application, for the blog sample we use Equinox as a base and build up from there.&lt;br /&gt;&lt;br /&gt;Here are a couple of small statistics comparing the JPA and JDBC persistence implementations in the Aries blog sample:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EifRUa32KOM/S5UCvCgYNbI/AAAAAAAAAIY/zp_ZEUDuRVk/s1600-h/Screen+shot+2010-03-08+at+13.57.56.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 90px;" src="http://4.bp.blogspot.com/_EifRUa32KOM/S5UCvCgYNbI/AAAAAAAAAIY/zp_ZEUDuRVk/s400/Screen+shot+2010-03-08+at+13.57.56.png" alt="" id="BLOGGER_PHOTO_ID_5446262331524265394" border="0" /&gt;&lt;/a&gt;The Java code is much more concise using JPA, the complexity has all moved into the platform. Which is, of course, the right way to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-4787367473224389421?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/4787367473224389421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=4787367473224389421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/4787367473224389421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/4787367473224389421'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/03/persistence-layers-in-apache-aries-blog.html' title='Persistence layers in the Apache Aries Blog Sample'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EifRUa32KOM/S5UCvCgYNbI/AAAAAAAAAIY/zp_ZEUDuRVk/s72-c/Screen+shot+2010-03-08+at+13.57.56.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-6469703902380808643</id><published>2010-02-12T02:49:00.000-08:00</published><updated>2010-02-13T05:33:33.672-08:00</updated><title type='text'>WebSphere from the ground up - part two</title><content type='html'>A week or so ago I posted on how to do an 'assume nothing' installation of WebSphere  in order to run the OSGi Alpha Feature pack. Today the &lt;a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/wasfposgiajp/"&gt;Open Beta of the OSGi&lt;/a&gt; Feature Pack was released and the requirements and installation process differ slightly from those required by the Alpha.&lt;br /&gt;&lt;br /&gt;The basic steps are pretty much the same, differences are shown in &lt;span style="color: rgb(102, 0, 204);"&gt;this color&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install the free-for-developers WebSphere Application Server  Version 7&lt;/li&gt;&lt;li&gt;Install the 7.0.0.7 Fix pack and&lt;span style="color: rgb(102, 0, 204);"&gt; an update to the Java SDK for WAS&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Install the Open Beta OSGi Feature pack &lt;span style="color: rgb(102, 0, 204);"&gt;using the IBM Installation Manager.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Following the instructions for the Alpha works up to half way through step 2. But here, as well as downloading the 7.0.0.7 Fix pack you will need to download an SDK update from &lt;a href="http://www-01.ibm.com/support/docview.wss?rs=180&amp;amp;uid=swg24024588"&gt;here&lt;/a&gt;. The file will be called something like 7.0.0-WS-WASSDK-LinuxX32-FP0000007.pak. Put this file in the same directory as you put the 7.0.0.7 Fix pack, then run the UpdateInstaller as directed in the previous post to install both fixes.&lt;br /&gt;&lt;br /&gt;To install the Open Beta you will need to start with &lt;a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/wasfposgiajp/download.shtml"&gt;this link&lt;/a&gt; . Scroll down till you find these two links:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EifRUa32KOM/S3V9EJFezBI/AAAAAAAAAIQ/E39eN3Rkcjs/s1600-h/Screen+shot+2010-02-12+at+11.29.57.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 59px;" src="http://2.bp.blogspot.com/_EifRUa32KOM/S3V9EJFezBI/AAAAAAAAAIQ/E39eN3Rkcjs/s400/Screen+shot+2010-02-12+at+11.29.57.png" alt="" id="BLOGGER_PHOTO_ID_5437389635231599634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The first link (Web install...) is the one you want. You will download a preconfigured version on the installation manager which already has links to the repositories containing the Beta download.&lt;br /&gt;&lt;br /&gt;Click on the Web install link and follow through the next screens till you find an option to download the IBM installation manager. It is about 86MB and will be called something like iim.linux.x86_20100128.zip. Download it and unzip it in a temporary directory, then run the install script in that directory.&lt;br /&gt;&lt;br /&gt;The installation manager will start up and ask if you want to install Version 1.3.4 of the installation manager. Continue with the installation of V1.3.4 through to the end when you will be asked if you want to restart, accept this option. When the installation manager restarts you will be prompted for an ID and password,  these will be the same ones as you would have used to download WAS in the first place.&lt;br /&gt;&lt;br /&gt;The next two steps are to 'Import' your existing WAS installation into the installation manager. After that you will be able 'Install' the Beta code from a remote repository which has already been configured in the Installation Manager.&lt;br /&gt;&lt;br /&gt;At the end if the Beta installation the profile management tool will be launched, you will need to augment your profile with the OSGi feature pack. Again, the screens are easy to follow.&lt;br /&gt;&lt;br /&gt;This is a fairly high level view of the instructions, there are excellent and very detailed steps available from &lt;a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/wasfposgiajp/library.shtml"&gt;here&lt;/a&gt; in the getting started guide.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-6469703902380808643?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/6469703902380808643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=6469703902380808643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/6469703902380808643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/6469703902380808643'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/02/websphere-from-ground-up-part-two.html' title='WebSphere from the ground up - part two'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EifRUa32KOM/S3V9EJFezBI/AAAAAAAAAIQ/E39eN3Rkcjs/s72-c/Screen+shot+2010-02-12+at+11.29.57.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-8724820046219731348</id><published>2010-02-02T07:08:00.000-08:00</published><updated>2010-02-13T05:41:33.755-08:00</updated><title type='text'>WebSphere Application Server - from the bottom up.</title><content type='html'>Recently I installed the IBM WebSphere Application Server from scratch so that I could look at the &lt;a href="http://ianrobinson.blogspot.com/2009/12/websphere-up-to-its-ears-in-osgi.html"&gt;OSGi support for enterprise applications&lt;/a&gt; available in WebSphere. Google was not my friend in this instance - I couldn't find a quick summary of the instructions for installing the WebSphere Application Server anywhere. It is actually all quite easy, not to mention free. In this post I'll provide a brief overview of the steps and links to download sites. If you want more detail, look &lt;a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/iwsasosgia/"&gt;here&lt;/a&gt; for information on every supported operating system. I used an unsupported operating system (Ubuntu**) and for the purposes of experimenting with the OSGi support this works just fine. Although I use Linux commands throughout this, the same thing will work on Windows with the appropriate modifications to paths and exchanging .bat for .sh files.&lt;br /&gt;&lt;br /&gt;There are three steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install the WebSphere Application Server Version 7&lt;/li&gt;&lt;li&gt;Install the version 7.0.0.7 Fix Pack&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Install the Alpha OSGi Feature Pack&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;h3&gt;1. Install the WebSphere Application Server Version 7 &lt;/h3&gt;&lt;br /&gt;This is free for development use and all you have to give IBM is your name and an email address, which they will not use unless you check the boxes saying that you want to be contacted. You will also have to read and accept some license terms. The link you need is  &lt;a href="http://www.ibm.com/developerworks/downloads/ws/wasdevelopers/"&gt;here&lt;/a&gt;, there are Windows and Linux downloads, no Mac version (sorry). You will need version 7, and the download is 800 MB so you need to allow plenty of time and make sure you have enough disk space.&lt;br /&gt;&lt;br /&gt;Installing is straightforward. Extract the file you downloaded (it will be called something like was.cd.7000.wasdev.nocharge.linux.ia32.tar.gz). In the top level directory you will find a 'launchpad' file. Launch the installer like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo ./launchpad.sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The screens are fairly self explanatory, just make a note of where you install the AppServer (default on my system is /opt/IBM/WebSphere/AppServer) and, if all you want is an experimental installation, I suggest not configuring security. I'll refer to the place that you installed the AppServer as WAS_HOME for the rest of this post.&lt;br /&gt;&lt;br /&gt;Skip the final screen asking if you want to launch the AppServer, it's better to get used to the command line.  Change directory to WAS_HOME/bin, then run&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo ./startServer server1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;this will start up the server. To shut it down again,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo ./stopServer.sh server1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;2. Installing the 7.0.0.7 Fix Pack.&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;This is a two step process. You will need to download both the fix pack  and an installer. The steps are detailed &lt;a href="http://www-01.ibm.com/support/docview.wss?rs=180&amp;amp;uid=swg27017010#steps"&gt;here&lt;/a&gt;. If this is a new installation all you need are steps 5 and 6.&lt;br /&gt;&lt;br /&gt;The  installer that you download will be called something like 7.0.0.7-WS-UPDI-LinuxIA32.tar.gz and the fix pack will be 7.0.0-WS-WAS-LinuxX32-FP0000007.pak. Extract the installer somewhere temporary, then&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cd UpdateInstaller&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo ./install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The screens which follow will take you through installing the installer and then onto installing the fix pack. The screens are easy to follow - you will just need to point the installer to the location of the fix pack at some point.&lt;br /&gt;&lt;br /&gt;After installing, try stopping and starting WebSphere again to make sure everything has gone according to plan.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;3. Installing the Alpha OSGi feature pack &lt;/h3&gt;&lt;br /&gt;You will need to download the feature pack from  &lt;a href="https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/iwsasosgia/"&gt;this site&lt;/a&gt;. Select the 'Download' tab then scroll down till you find 'Download OSGi Applications Alpha'. You will have to register and accept another license, then you should find a screen that allows you to download 'OSGi-Applications-Open-Alpha-20100111.zip'. Copy the .zip file into the WAS_HOME directory and then extract it. To complete the installation you will need to run:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;cd WAS_HOME/feature_packs/aries/bin/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;sudo ./complete_installation.sh&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;sudo ./augmentProfile.sh AppSrv01&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This assumes that 'AppSrv01' is the name of the profile you want to use; if this is stand alone test installation using AppSrv01 will be fine.&lt;br /&gt;&lt;br /&gt;Finally - restart the AppServer, and point your web browser at http://localhost:9060/ibm/console, which will give you the WebSphere admin console, like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EifRUa32KOM/S2mVZq1ZAtI/AAAAAAAAAFE/jsTLHu-UrSE/s1600-h/Screen+shot+2010-02-03+at+15.23.46.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 170px;" src="http://3.bp.blogspot.com/_EifRUa32KOM/S2mVZq1ZAtI/AAAAAAAAAFE/jsTLHu-UrSE/s320/Screen+shot+2010-02-03+at+15.23.46.png" alt="" id="BLOGGER_PHOTO_ID_5434038693626708690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you didn't set up security you will just be able to click the 'Login' button, if you did you will have to enter an ID and password.&lt;br /&gt;&lt;br /&gt;You should now be in a position to experiment with the OSGi Alpha as described &lt;a href="http://ianrobinson.blogspot.com/2009/12/websphere-up-to-its-ears-in-osgi.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Finally...&lt;/h3&gt;&lt;br /&gt;This is all quite easy to work through but there are some additional things that it's helpful to know:&lt;br /&gt;&lt;br /&gt;You will find the log files here:&lt;br /&gt;&lt;br /&gt;WAS_HOME/profiles/AppSrv01/logs/server1&lt;br /&gt;&lt;br /&gt;the one you are most likely to want if things don't go according to plan is SystemOut.log.&lt;br /&gt;&lt;br /&gt;OSGi bundles are cached here:&lt;br /&gt;&lt;br /&gt;WAS_HOME/profiles/AppSrv01/config/bundlecache&lt;br /&gt;&lt;br /&gt;It can be useful to look and see what is in there.&lt;br /&gt;&lt;br /&gt;The OSGi samples (and their source code) can all be found here:&lt;br /&gt;&lt;br /&gt;WAS_HOME/feature_packs/aries/&lt;br /&gt;&lt;br /&gt;** If you do use Ubuntu to run WebSphere you will need to make sure that /bin/sh is linked to /bin/bash, not /bin/dash.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-8724820046219731348?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/8724820046219731348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=8724820046219731348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/8724820046219731348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/8724820046219731348'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2010/02/websphere-application-server-from.html' title='WebSphere Application Server - from the bottom up.'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EifRUa32KOM/S2mVZq1ZAtI/AAAAAAAAAFE/jsTLHu-UrSE/s72-c/Screen+shot+2010-02-03+at+15.23.46.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-3216431173958973847</id><published>2009-11-30T01:15:00.000-08:00</published><updated>2009-12-01T06:05:32.821-08:00</updated><title type='text'>Unconferences</title><content type='html'>A year of hosting weekend events at IBM's Southbank location culminated last Saturday with the &lt;a href="http://londonjavacommunity.wordpress.com/"&gt;London Java Community &lt;/a&gt;Unconference. This was the most successful event so far - all the others were good, but this was the highlight of the year. Have a look at &lt;a href="http://twitter.com/#search?q=%23LJCUC1"&gt;twitter&lt;/a&gt; for comments.&lt;br /&gt;&lt;br /&gt;Having gained some experience over the past year I thought it was worth writing a few words on hosting unconferences from the point of view of a $BIGCORP. In the future I hope we will see many more companies welcoming technology groups into their offices at weekends.&lt;br /&gt;&lt;br /&gt;Here are my suggestions for a successful event:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Remember your place&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We ($BIGCORP) are really only providing a location - the event is all about the group that wants to run it and about what their members want. The LJC - led  by &lt;a href="http://uk.linkedin.com/in/barrycranford"&gt;Barry Cranford&lt;/a&gt; - has a clear mission, they are passionate about all things Java - all we are doing is providing a place to meet. This is not the sort of event that can be used to promote commercial products - leave that to the marketing teams.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Work with a good team&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In fact, three good teams in my case. The IBM team that turns up on the day (&lt;a href="http://blog.soal.org/"&gt;Robin Fernandes&lt;/a&gt;, Cath Hope, Mark Hindess, &lt;a href="http://antblah.blogspot.com/"&gt;Ant Phillips&lt;/a&gt;) - we are all developers from &lt;a href="http://www-05.ibm.com/uk/locations/hursley_details.html"&gt;IBM's labs&lt;/a&gt; in Hursley and have worked with each other for a few years; I know I can trust them to do whatever they say they will. The second IBM team, led by the Hursley &lt;a href="http://www-200.ibm.com/partnerworld/pwhome.nsf/weblook/mkt_innovation.html"&gt;Innovation Centre&lt;/a&gt;, are people you don't see at the event - they work hard in the weeks running up to the event to ensure that we have catering, security, networks, projectors etc. Finally, the user group team. In this case &lt;a href="http://martijnverburg.blogspot.com/"&gt;Martijn Verburg&lt;/a&gt; and Barry Cranford from the LJC who displayed an exceptional level of trust in our ability to pull this off, especially given Barry's inclination to plan everything.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Keep it small&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One of the great things about last Saturday was watching people talk to each other over lunch and in breaks. This is something that I feel is sadly missed at big conferences, at least half the point of these events is to encourage people to talk to each other.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. What not to organise&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Resist the temptation to organise the speakers in advance. Whatever happens on the day it will work out right. It really is up to the attendees to provide the content and I have yet to go to an event where there were too few talks. Perversely I also find that the quality of talks is much higher at unconferences than at mainstream conferences - I don't really understand why - perhaps because the audience are involved the atmosphere tends to be friendly and supportive towards presenters.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. What to organise&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Registration, sponsors, badges, projectors, wireless network, flip charts, white boards, pens, food (40% vegetarian, 10% vegan), directions, cleaning equipment, twitter tag, 'the grid'. That's it really. Oh, and some signs:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EifRUa32KOM/SxUY3e0DQTI/AAAAAAAAAE8/cWJsEdfHU2A/s1600/door.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_EifRUa32KOM/SxUY3e0DQTI/AAAAAAAAAE8/cWJsEdfHU2A/s320/door.jpg" alt="" id="BLOGGER_PHOTO_ID_5410257868798771506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://blog.spiralarm.com/richard/2009/11/london-java-community-unconference-1.html"&gt;Richard Dallaway&lt;/a&gt; for the image.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-3216431173958973847?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/3216431173958973847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=3216431173958973847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3216431173958973847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3216431173958973847'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/11/unconferences.html' title='Unconferences'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_EifRUa32KOM/SxUY3e0DQTI/AAAAAAAAAE8/cWJsEdfHU2A/s72-c/door.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-6423126152880193611</id><published>2009-10-27T03:57:00.000-07:00</published><updated>2009-10-27T06:14:34.586-07:00</updated><title type='text'>The other side of IBM</title><content type='html'>Last week was full of 'firsts' for me. It started with my first ever commit to an &lt;a href="http://incubator.apache.org/aries/"&gt;Apache project &lt;/a&gt;. This was a career milestone for me, I will be writing a lot more about that project in the future, but not in this post.&lt;br /&gt;&lt;br /&gt;The other 'firsts' were all associated with &lt;a href="http://www.barcamplondon.org/"&gt;BarCamp London &lt;/a&gt;which ran from Saturday morning through to Sunday evening at IBM's Southbank location. It was the the first time I had ever been to  BarCamp and I was enormously impressed by the level of organisation. I've been to a few big conferences and they could learn a lot from the BarCamp organisers who pulled the whole event together &lt;span style="font-style: italic; font-weight: bold;"&gt;in their spare time&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EifRUa32KOM/SubcF0oOITI/AAAAAAAAAEk/HuZLgHLiuBI/s1600-h/IBM.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_EifRUa32KOM/SubcF0oOITI/AAAAAAAAAEk/HuZLgHLiuBI/s320/IBM.jpg" alt="" id="BLOGGER_PHOTO_ID_5397243196034916658" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;The other side of IBM&lt;br /&gt;Image courtesy of Adewale Oshineye - check out his other photos of the event &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.flickr.com/photos/adewale_oshineye/sets/72157622531294067/"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;It was also the first time that IBM UK has ever hosted a BarCamp and it's hard to describe the level of nervousness that was permeating the corporate psyche prior to the event. As it happens, apart from one small(s) problem, the weekend went entirely smoothly. So many people helped to pull this together that I can't list them all. I will however mention three companies that I bet no-one else will talk about, &lt;a href="http://www.g4s.com/"&gt;G4S&lt;/a&gt;, &lt;a href="http://www.johnsoncontrols.co.uk/publish/gb/en.html"&gt;Johnson Controls&lt;/a&gt; and &lt;a href="http://www.compass-group.co.uk/"&gt;Compass&lt;/a&gt; . Their employees were on site for much of the weekend ensuring that the building was safe to sleep in, kept clean and comfortable and that people were fed. Well done!&lt;br /&gt;&lt;br /&gt;I think IBM gained a great deal of respect for trusting BarCamp to use their premiere London location knowing that they would be entertaining clients there on Monday. The developers from IBM who attended also gained from meeting a different and diverse set of people. When you work for a big company it's too easy to develop a language and way of communication that only makes sense inside the company - getting out once in a while at least makes you realise you are becoming institutionalised.&lt;br /&gt;&lt;br /&gt;Someone asked me why I got involved with organising BarCamp - it's a simple answer. I've seen so many complex problems solved by bringing highly technical and creative people together and allowing them time to communicate. Sadly there aren't that many places where 200+ people can meet and share ideas. IBM has a great location which is not often used at weekends, how could I &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; have got involved?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-6423126152880193611?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/6423126152880193611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=6423126152880193611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/6423126152880193611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/6423126152880193611'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/10/other-side-of-ibm.html' title='The other side of IBM'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EifRUa32KOM/SubcF0oOITI/AAAAAAAAAEk/HuZLgHLiuBI/s72-c/IBM.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-2572195093373453752</id><published>2009-07-31T07:13:00.000-07:00</published><updated>2009-07-31T12:30:14.094-07:00</updated><title type='text'>Does my PHP app run on Project Zero?</title><content type='html'>As the PHP implementation in Project Zero gets more complete it's possible to run quite a few &lt;a href="http://www.projectzero.org/wiki/Development/PhpWebApplications"&gt;significant applications&lt;/a&gt;. It would be nice to know in advance how likely it is that a PHP application would run on Project Zero - without investing a whole lot of time in trying to run it. Well, now you can.&lt;br /&gt;&lt;br /&gt;There is a new Project Zero application which will scan your application and tell you whether it thinks it will run on Project Zero. The way it does this is to extract information from the Project Zero PHP parser - for instance it finds out the names of functions that are declared in the application and compares them with the names of functions that are invoked. If the application scanner finds that a function is invoked by the application but is not declared by it, it uses function_exists() to figure out if it is implemented in Project Zero's PHP. Similar analysis is carried out for classes and methods in the application.&lt;br /&gt;&lt;br /&gt;The instructions for extracting and running the scanner are &lt;a href="http://www.projectzero.org/wiki/Development/PHPAnalysis"&gt;here&lt;/a&gt;. They assume that you already have a working version of Project Zero.&lt;br /&gt;&lt;br /&gt;One of the reasons that I wrote this was that I wanted to figure out if PHPUnit would run on Project Zero. This led to a horrible chicken and egg situation in that I can't write PHP without PHPUnit and most of the scanner is written in PHP. In the end I had to inch forward on both tasks simultaneously, with the final benefit that I worked out how to use PHPUnit at the same time as writing the scanner. The instructions for running PHPUnit are &lt;a href="http://www.projectzero.org/wiki/Development/PhpPHPUnit"&gt;here&lt;/a&gt;. I'm not claiming full support for PHPUnit in Project Zero  - but there is enough to be able to test PHP classes as you write them.&lt;br /&gt;&lt;br /&gt;The application scanner can't say definitely whether an application will run or not, this is because it is using static analysis. However it  gives enough information to be able to tell whether it's worth trying or whether you should mail the Project Zero team with your scan results and ask them when they think they will have support for your app :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-2572195093373453752?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/2572195093373453752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=2572195093373453752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2572195093373453752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2572195093373453752'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/07/does-my-php-app-run-on-project-zero.html' title='Does my PHP app run on Project Zero?'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-3164992376262939372</id><published>2009-07-08T12:18:00.000-07:00</published><updated>2009-07-08T13:08:06.992-07:00</updated><title type='text'>On no! Not more tests!</title><content type='html'>One of the problems with the incredible level of success of the PHP TestFest is that PHP gets more tests, &lt;a href="http://results.testfest.php.net/"&gt;887&lt;/a&gt; more to be precise.&lt;br /&gt;&lt;br /&gt;Well, isn't that the point? Yes, but it's beginning to take *forever* to run them which is a bad thing and as TestFests get bigger and better this will only get worse.&lt;br /&gt;&lt;br /&gt;A year or so ago I started worrying about this, then I met &lt;a href="http://www.priebsch.de/"&gt;Stefan Priebsch&lt;/a&gt; at IPC and made him worry about it too. Together we  started a project to re-factor the code that runs tests (run-tests.php) so that it could run tests in parallel.&lt;br /&gt;&lt;br /&gt;In May we had a prototype going, it ran most of the tests in sequence. It still doesn't have all of the capability of run-tests.php but it was enough for our PHP GSOC student (Georg Gradwohl) to start writing and integrating code that would run groups of tests in parallel.&lt;br /&gt;&lt;br /&gt;Yesterday I ran some tests on my dual core lap top - this isn't a proper benchmark and I had all sorts of other stuff going on too...but here they are:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EifRUa32KOM/SlT0h_jwyAI/AAAAAAAAAEc/jeaDlz72dTg/s1600-h/run-tests.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 142px;" src="http://2.bp.blogspot.com/_EifRUa32KOM/SlT0h_jwyAI/AAAAAAAAAEc/jeaDlz72dTg/s320/run-tests.png" alt="" id="BLOGGER_PHOTO_ID_5356174721684654082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The chart shows the time taken to run 7700 tests with the current code (old), new code sequentially (seq) and the new code with increasing numbers of parallel  tasks (para). As you can see we are able to run this sample in about half the time taken by the code that is used at the moment. There is still a long way to go with this but I'm happy to say that a couple of people have started to check out the code and try and run it. At the moment this only works on *ix, supporting Windows is on the TODO list.&lt;br /&gt;&lt;br /&gt;With the help of the 'many hands' of the PHP community  I'm quietly confident that by the time PHP gets all the tests it needs we will have something that will run them efficiently :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-3164992376262939372?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/3164992376262939372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=3164992376262939372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3164992376262939372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3164992376262939372'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/07/on-no-not-more-tests.html' title='On no! Not more tests!'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_EifRUa32KOM/SlT0h_jwyAI/AAAAAAAAAEc/jeaDlz72dTg/s72-c/run-tests.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-1648203141627426786</id><published>2009-05-29T03:34:00.000-07:00</published><updated>2009-05-29T04:35:25.528-07:00</updated><title type='text'>PHP TestFest - one more month to go!</title><content type='html'>Groups from all over the world have contributed 554 new tests for PHP since April 1st 2009. Of these, 327 have already been moved into PHP's CVS (thanks Felipe!). The results of running tests on a Linux 32 bit platform can be seen &lt;a href="http://results.testfest.php.net/"&gt;here&lt;/a&gt; (sorry about the colour scheme), the user groups who have contributed are also listed. We also run the tests on a 64 bit Linux platform &lt;a href="http://testfest.php.net/displayresults.php"&gt;here&lt;/a&gt;, but this only runs PHP5.3 and PHP5.2.&lt;br /&gt;&lt;br /&gt;I also ran some coverage tests recently to try and work out how much of a difference we were making overall. This turned out to be far more problematic than I had thought it would be. The main issue was one that &lt;a href="http://felix.phpbelgium.be/blog/2008/06/15/generating-php-test-coverage-and-ccache/"&gt;Felix&lt;/a&gt; had already found, ccache and lcov do not coexist happily. It turns out that there is a check for this in the php configure script - but unfortunately the debian way of installing ccache is simply to link it to gcc, which by-passes the check in configure. Oh well.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://results.testfest.php.net/lcov_20090508/"&gt;before TestFest coverage&lt;/a&gt; data shows an overall line coverage of 70.4%, a run from the &lt;a href="http://results.testfest.php.net/lcov_20090528/"&gt;28th May&lt;/a&gt; shows a line coverage of 72.3% in total. There are minor differences in the number of lines but I think this is to be expected. It's interesting to look at the areas where I know groups have been concentrating their efforts - for example the line coverage of ext/ldap has increased 8.5% to 89.1%! Check curl, date, dom, ftp, gettext, intl, posix, reflection, sockets, spl, sqlite3, xmlwriter and xsl for other TestFest related increases in coverage.&lt;br /&gt;&lt;br /&gt;I'll rerun the coverage tests regularly in future. I should perhaps mention that I know that ext/imap statistics are missing and that's because we don't yet have the ability to run the ext/imap tests on the system that is being used for TestFest. I will fix this in the next week or so - if you see anything else that doesn't look right please email me and I'll fix it, or better still,  email php-qa@lists.php.net :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-1648203141627426786?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/1648203141627426786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=1648203141627426786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/1648203141627426786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/1648203141627426786'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/05/php-testfest-one-more-month-to-go.html' title='PHP TestFest - one more month to go!'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-1182231010794801248</id><published>2009-05-07T03:22:00.000-07:00</published><updated>2009-05-07T05:05:26.950-07:00</updated><title type='text'>PHP TestFest ramps up!</title><content type='html'>It feels like a long time since we started on this road in February 2009. So much has happened since then ... and now we are two days away from the 9th May when several European groups will run events.&lt;br /&gt;&lt;br /&gt;We have &lt;a href="http://wiki.php.net/qa/testfest"&gt;22 groups&lt;/a&gt; registered in all, Munich and Quebec have already run successful events.&lt;br /&gt;&lt;br /&gt;As tests are written they are being checked into a subversion repository - local organisers have admin rights and can add users from their groups. Once every hour we check tests out SVN and run them using PHP52, 53 and 6. The results are displayed &lt;a href="http://testfest.php.net/displayresults.php"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's great to see user groups helping out with PHP development in this way - I'm just amazed and humbled by the enthusiasm and talent of PHP users.&lt;br /&gt;&lt;br /&gt;I also want to thank our sponsors, although I'm not even sure that I know who all of them are :-). The ones I do know are Microsoft (who are making office space available and providing access to Windows machines), IBM (also making office space available and of course allowing me some time to work on this), and &lt;a href="http://www.ibuildings.com/"&gt;Ibuildings&lt;/a&gt;. Ibuildings are a major sponsor in Europe, they are buying lunch for the PHP NorthWest group, they have funded some cute &lt;a href="http://www.flickr.com/photos/zoeslattery/3509455495/"&gt;PHP TestFest mugs&lt;/a&gt; for the London group...and much more. At the end of TestFest I'd like to do a round up of every company who helped us - so if you are sponsoring something, don't be shy, let me know!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From now until the end of June the user groups will be writing tests, after that we'll count up and commit tests in PHPs CVS - I have strong feeling that this year's test fest is going to be a massive success!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-1182231010794801248?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/1182231010794801248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=1182231010794801248' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/1182231010794801248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/1182231010794801248'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/05/php-testfest-ramps-up.html' title='PHP TestFest ramps up!'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-454691334777692698</id><published>2009-04-06T12:12:00.000-07:00</published><updated>2009-04-07T01:20:16.154-07:00</updated><title type='text'>PHP and SAP</title><content type='html'>Last Saturday Robin, &lt;a href="http://antblah.blogspot.com/"&gt;Ant&lt;/a&gt; and I went to London to the &lt;a href="http://nigeljames.wordpress.com/2009/03/16/sap-inside-track-london-2009/"&gt;SAP Inside Track&lt;/a&gt;. We had an amazing day on so many levels! Ant had prepared a demo showing how to use the PHP implementation in &lt;a href="http://www.projectzero.org/"&gt;WebSphere sMash&lt;/a&gt; to access data from SAP, but as we went up to London on 06:18 (!) train we really had very little idea what to expect.&lt;br /&gt;&lt;br /&gt;The meeting got under way in the usual unconference style with attendees choosing the talks. Two things became clear pretty quickly, this was an incredibly interesting group of people and they had some very cool stuff to talk about. &lt;a href="http://blogs.zdnet.com/Howlett/"&gt;Dennis Howlett&lt;/a&gt; made a short &lt;a href="http://blip.tv/file/1957526/"&gt;video&lt;/a&gt; of the attendees which nicely captures  spirit of the event.&lt;br /&gt;&lt;br /&gt;Ant and Robin did a great demo of sMash, Dennis Howlett made another short &lt;a href="http://blip.tv/file/1960146"&gt;video &lt;/a&gt;interview with Robin. Ant spent the whole of the lunch time having an intensive SAP lesson from &lt;a href="http://www.computerservice-wolf.com/"&gt;Gregor Wolf&lt;/a&gt; - Ant is now officially our SAP expert!&lt;br /&gt;&lt;br /&gt;I learnt a huge amount (I know a lot more about SAP than I did) I particularly enjoyed the talk  about &lt;a href="http://incubator.apache.org/esme/"&gt;ESME&lt;/a&gt; by &lt;a href="http://www.fortybeans.com/fortybeans/"&gt;Darren Hague&lt;/a&gt;. ESME is a twitter-like project but designed with business applications in mind - I can see a lot of potential here.&lt;br /&gt;&lt;br /&gt;All in all - it was a &lt;a href="http://www.flickr.com/photos/zoeslattery"&gt;great day&lt;/a&gt; and I'm looking forward to the next SAP event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-454691334777692698?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/454691334777692698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=454691334777692698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/454691334777692698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/454691334777692698'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/04/php-and-sap.html' title='PHP and SAP'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-7154158682193466381</id><published>2009-04-02T00:58:00.000-07:00</published><updated>2009-04-02T01:09:03.202-07:00</updated><title type='text'>PHP TestFest 2009 Kicks Off</title><content type='html'>So here we are at the beginning of the 2009 TestFest. There are currently 16 PHP user groups intending to participate, these are pretty widely distributed from Brazil, the USA and Europe.&lt;br /&gt;&lt;br /&gt;The test repository is open for submissions to registered groups from today (see &lt;a href="http://wiki.php.net/qa/testfest"&gt;here&lt;/a&gt; and &lt;a href="http://qa.php.net/"&gt;here&lt;/a&gt; for information and instructions. Join the freenode #phptestfest IRC channel and follow phptestfest on twitter.&lt;br /&gt;&lt;br /&gt;Let's go!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-7154158682193466381?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/7154158682193466381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=7154158682193466381' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7154158682193466381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7154158682193466381'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/04/php-testfest-2009-kicks-off.html' title='PHP TestFest 2009 Kicks Off'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-4006169737710737782</id><published>2009-02-01T06:30:00.000-08:00</published><updated>2009-02-01T07:12:25.967-08:00</updated><title type='text'>PHP TestFest 2009</title><content type='html'>It's time to start getting the 2009 PHP TestFest underway. The TestFest is a worldwide event in which PHP user groups and individuals contribute to PHP by writing tests for PHP. It's a great way to contribute to one of the most successful open source projects there has ever been, it's also pretty cool to see your name in the the source distribution for code that's running on over 20 million web domains.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;So how does it work? &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;User groups can register by sending a mail to php-qa@lists.php.net. In the mail we'd like you to pick an date for your event (somewhere between April 1st and June 30th), it would be great if you could let us have the name and e-mail for the primary contact too. As these arrive on the QA list, someone (probably me) will transfer them to the TestFest &lt;a href="http://wiki.php.net/qa/testfest"&gt;wiki&lt;/a&gt;. We will help you to work out what sort of event to run and how to organise it. Individuals can register for the TestFest too, just send a mail to the php-qa@lists.php.net. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;User groups (or individuals) can pick areas in which they'd like to write tests, this might be something you know quite well already, or maybe something new you'd like to know about. For example, the London PHP group picked the dom extension last year. I didn't know much about that when we started but I did when we finished!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What do we need?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;A bit of infrastructure! Scott MacVicar is putting together an SVN repository for tests so that contributors will be able to commit tests directly. He's still working on how access control will work....more on this later. &lt;br /&gt;&lt;br /&gt;Sponsors! We have one offer of ElePHPants. We'll do the same as we did last year and hold a draw at the end of the TestFest. Anyone who contributes a test will have a chance to win one. Of course, the more you contribute the higher your chances will be! &lt;br /&gt;&lt;br /&gt;Mentors, mentors and more mentors! We need internals developers who know how to write tests, have karma in cvs.php.net and who can review tests and commit them. Again - if you can help with this send a note to the php-qa@lists.php.net or let me know on IRC (efnet #php.pecl or freenode #phptestfest, #phpwomen). &lt;br /&gt;&lt;br /&gt;For more information on PHP's TestFest have a look &lt;a href="http://wiki.php.net/qa/testfest"&gt;here&lt;/a&gt; and &lt;a href="http://qa.php.net/testfest.php"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-4006169737710737782?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/4006169737710737782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=4006169737710737782' title='40 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/4006169737710737782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/4006169737710737782'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/02/php-testfest-2009.html' title='PHP TestFest 2009'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>40</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-7193407884816051150</id><published>2009-01-12T06:55:00.000-08:00</published><updated>2009-01-13T01:30:57.353-08:00</updated><title type='text'>So phar so good.</title><content type='html'>I've just finished converting a small procedural application, designed to be run from the command line,  to PHP5 . I wanted a way to give users a single file to execute and as phar is included in PHP5.3 I decided to try to use it.&lt;br /&gt;&lt;br /&gt;The source tree for my application looks something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; /mnt/workspace/ws_phpscripts/pharsamples/a.php&lt;br /&gt;                                         /sub&lt;br /&gt;                                             /b.php&lt;br /&gt;                                             /c.php&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The main code is in a.php, classes 'b' and 'c' are in sub/b.php and sub/c.php respectively and I include them from statements in a.php.&lt;br /&gt;&lt;br /&gt;The first step is to create the phar file. By default the ability to create phar files is switched off, to enable it you will need to add the following line to your php.ini file:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   phar.readonly=0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The next step is to build a phar file from the source tree, phar makes this easy for you. Here is a script to create a phar:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &amp;lt;?php&lt;br /&gt;  $phar = new Phar('/tmp/a.phar');&lt;br /&gt;  $phar-&gt;buildFromDirectory('/mnt/workspace/ws_phpscripts/pharsamples/src');&lt;br /&gt; ?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In the first line I instantiate a new Phar object, the argument to the Phar constructor is the path to the phar file I'm going to create.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The second line just builds the phar from all the code under my src directory. So, now I have created a phar, but how can I tell that it's worked? The easiest way is to read it from  another PHP script, like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  &amp;lt;?php&lt;br /&gt;   new Phar('/tmp/a.phar' , 0, 'myphar.phar')&lt;br /&gt;   echo file_get_contents('phar://myphar.phar/sub/b.php');&lt;br /&gt;  ?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In the first line of this script I am opening the phar I have just created. In this case the Phar constructor takes three arguments. The full path to the phar is the first argument, the second argument (flags) is zero, at the moment I can't think of any reason why it would ever be anything other than zero. The flags argument is inherited from the class RecursiveDirectoryIterator, so if you want to understand what it does look at the documentation for that class.  The third argument is an alias  - or the way I want to refer to the phar in my script.&lt;br /&gt;&lt;br /&gt;The second line of the script attempts to get the contents of one of my files out of the phar. If I get the contents of file b.php  back from the echo I know I have created the phar correctly.&lt;br /&gt;&lt;br /&gt;I really want to be able to execute the phar from the command line, just like PHP code. To ensure that my main program (a.php) is run when the phar is executed I need to add a stub to the phar. The full create script looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &amp;lt;?php&lt;br /&gt;&lt;br /&gt;  $phar = new Phar('/tmp/a.phar');&lt;br /&gt;  $phar-&gt;buildFromDirectory('/mnt/workspace/ws_phpscripts/pharsamples/src');&lt;br /&gt;&lt;br /&gt;$stub = &amp;lt;&amp;lt;&amp;lt;ENDSTUB&lt;br /&gt;&amp;lt;?php&lt;br /&gt;Phar::mapPhar('a.phar');&lt;br /&gt;require 'phar://a.phar/a.php';&lt;br /&gt;__HALT_COMPILER();&lt;br /&gt;ENDSTUB;&lt;br /&gt;&lt;br /&gt;$phar-&gt;setStub($stub);&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That's all the code that is required. To run a.php, all I have to do is:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; cd /tmp&lt;br /&gt; php a.phar&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This is just about the most simple use of phar, obviously it can do a lot more than this. The documentation is &lt;a href="http://uk2.php.net/phar"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-7193407884816051150?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/7193407884816051150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=7193407884816051150' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7193407884816051150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7193407884816051150'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2009/01/so-phar-so-good.html' title='So phar so good.'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-8878786389884987663</id><published>2008-12-18T01:20:00.000-08:00</published><updated>2008-12-18T01:52:22.887-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP  ProjectZero'/><title type='text'>Enterprise PHP</title><content type='html'>I arrived home last night  after a slightly mind numbing day of reviewing and fixing tests (30 done, another 80 to go) for PHP's ext/imap extension to find that my copy of php|architect had arrived! A cup of tea, a warm fire and something good to read - heaven!&lt;br /&gt;&lt;br /&gt;I work for a company that has a bit of a  history in enterprise computing, so I read &lt;a href="http://www.jansch.nl/"&gt;Ivo Jansch&lt;/a&gt;'s article with interest, I'm certainly looking forward to more in his series. Ivo mentions WebSphere sMash (aka &lt;a href="http://www.projectzero.org/"&gt;Project Zero&lt;/a&gt;), inside sMash we run PHP on a JVM - this really is PHP,  many of the extensions we use are PHP extensions we just use a different engine from that in the reference implementation because of the cool things we can do by making it easy for PHP and Java to communicate.&lt;br /&gt;&lt;br /&gt;This leads on to something else that happened last week. You probably don't realise it but it's very likely that sometime during the last week you will have  have used IBM's CICS technology. Really? Yes - if you have bought something at a supermarket, taken money out at an ATM, had a parcel delivered to your house you have probably been a user of CICS because it forms so much of the underlying structure of commercial systems.&lt;br /&gt;&lt;br /&gt;Last week &lt;a href="http://www.projectzero.org/blog/index.php/2008/12/15/cics-gets-smashed/"&gt;PHP made it into CICS&lt;/a&gt;, PHP is now being used to build agile front ends and RESTful interfaces for the technology that underpins most of the world's large scale commercial systems. You don't get much more into The Enterprise than that!&lt;br /&gt;&lt;br /&gt;I'm going to stop there because I can feel a bad Captain Kirk joke coming on....beam me up &lt;a href="http://www.macvicar.net/"&gt;ScottMac&lt;/a&gt;!  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-8878786389884987663?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/8878786389884987663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=8878786389884987663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/8878786389884987663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/8878786389884987663'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2008/12/enterprise-php.html' title='Enterprise PHP'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-3975554273267982287</id><published>2008-11-14T00:42:00.000-08:00</published><updated>2008-11-14T00:59:00.554-08:00</updated><title type='text'>Lateral thinking</title><content type='html'>As test writers, when we see code with poor test coverage the most natural approach is to think that we ought to write more test cases, indeed we have been doing exactly that for PHP. The number of test cases for the PHP implementation has increased from roughly 3000 to 5000 over the past two years.&lt;br /&gt;&lt;br /&gt;But - there is another way, and as usual the PHP core developers are showing us the way. The fastest way to improve percentage of code covered is to REMOVE UNTESTED CODE! Accordingly we saw the test coverage of PHP 5.3 increase from about 55% to a little over 70% over the &lt;a href="http://gcov.php.net/viewer.php?version=PHP_5_3&amp;amp;func=graph&amp;amp;mode=Year"&gt;summer of 2008&lt;/a&gt;. At the same time the lines of code in PHP dropped by about 50KLOC. How can this be?&lt;br /&gt;&lt;br /&gt;To be serious, what's been done is perfectly legitimate. Several libraries that are used in, but not tested by, the PHP project have been removed from the statistics, they should probably never have been included in the PHP5.2 figures. The only misleading thing is that if you don't look closely you might think that PHP5.3 was a lot better tested that PHP5.2, in fact it's a bit better tested and we still need more tests.&lt;br /&gt;&lt;br /&gt;Coverage of 70% looks good, but the goal 2009 PHP TestFest should be 80% coverage to be achieved by writing more tests!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-3975554273267982287?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/3975554273267982287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=3975554273267982287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3975554273267982287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3975554273267982287'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2008/11/lateral-thinking.html' title='Lateral thinking'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-951125067284418859</id><published>2008-10-09T08:49:00.000-07:00</published><updated>2008-10-09T09:34:37.695-07:00</updated><title type='text'>Tea break's over....</title><content type='html'>So I'm back at IBM after a year of being a student. I spent the first couple of weeks easing myself in gently by doing a little more PHP opcode documentation, see &lt;a href="http://www.zapt.info/opcodes.html"&gt;here&lt;/a&gt;. I'm hoping we can move this into the manual.&lt;br /&gt;&lt;br /&gt;Things have moved on a little whilst I was out getting educated. In October 07  the PHP runtime used in Project Zero (aka WebSphere sMash) was just running PHPBB. Now it's really looking much more capable, in addition to PHPBB it runs SugarCRM and more recently also  &lt;a href="http://www.projectzero.org/blog/index.php/2008/10/02/try-out-php-application-wordpress-on-smash/"&gt;WordPress&lt;/a&gt; and &lt;a href="http://www.projectzero.org/blog/index.php/2008/10/09/try-out-php-application-mediawiki-on-websphere-smash/"&gt;MediaWiki&lt;/a&gt;. I'll be interested to see how the team exploit the possibilities for close integration of Java and PHP code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-951125067284418859?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/951125067284418859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=951125067284418859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/951125067284418859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/951125067284418859'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2008/10/tea-breaks-over.html' title='Tea break&apos;s over....'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-3509477258438342557</id><published>2008-08-29T05:35:00.000-07:00</published><updated>2008-08-29T06:51:04.543-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP opcodes'/><title type='text'>PHP Opcodes</title><content type='html'>&lt;p&gt;For most of the last three months I have been keeping myself busy working on a project that's related to PHP and has involved looking at PHP performance.  &lt;/p&gt;  &lt;br /&gt;&lt;p&gt;It's been interesting and led me to try to understand a lot more about how the Zend engine works. I spent a lot of time reading some sections of the code, and using my favourite technique (yes, I'm sorry - it's printf()) to understand how things work.  &lt;/p&gt; &lt;br /&gt;&lt;p&gt;After one particularly frustrating day I asked a colleague (Andy Wharmby) about the issue I was looking at. Then a miracle happened - he'd not only looked at it but had documented it (and many other things) in a set of charts.&lt;/p&gt; &lt;br /&gt;&lt;p&gt;When I read the charts a lot of things I didn't understand got clearer - so, with Andy's permission - I'm making his work available to the PHP world in case other people find them as useful as I did. You can download them in Open Office format &lt;a href="http://www.zapt.info/PHPOpcodes_Sep2008.odp"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;&lt;p&gt;Andy asked me to make it clear that he wrote the charts almost two years ago, so there may be bits that are out of date, or even just plain wrong. If you see things that need to be fixed please send me a mail (zoe@php.net) and I'll be happy to update the slides. Andy made extensive use of Sara Golemon's blog posts and tools written by &lt;a href="http://pecl.php.net/package/parsekit"&gt;Sara&lt;/a&gt; and &lt;a href="http://pecl.php.net/package/vld"&gt;Derick Rethans&lt;/a&gt;. Apart from that, like me, he used printf() and a debugger to look at the source for the engine.&lt;/p&gt; &lt;br /&gt;&lt;p&gt;I know that Gwynne is working on internals documentation for PHP, I am really looking forward to that. These charts, although very useful, are no substitute for a well written manual section!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-3509477258438342557?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/3509477258438342557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=3509477258438342557' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3509477258438342557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3509477258438342557'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2008/08/php-opcodes.html' title='PHP Opcodes'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-2591024313433314341</id><published>2008-08-04T01:06:00.000-07:00</published><updated>2008-08-04T02:03:38.861-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php testfest'/><title type='text'>PHP test coverage</title><content type='html'>I thought it might be interesting to compare the PHP test coverage from before the 2008 testfest with today's test coverage.&lt;br /&gt;&lt;br /&gt;Here are two sets of gcov results - &lt;a href="http://zapt.info/May1cov"&gt; one &lt;/a&gt;based on a CVS extract of PHP 5.3 from May 1st 2008 and the &lt;a href="http://www.zapt.info/Aug1cov"&gt; second &lt;/a&gt; based on a CVS extract of PHP 5.3 from August the 1st 2008.&lt;br /&gt;&lt;br /&gt;I had to copy a few files into odd places to make lcov run, however since I copied the same files in both source trees I think the results are comparable, even if they look a bit odd in places.&lt;br /&gt;&lt;br /&gt;We know that &lt;a href="http://www.php.net/"&gt;158 new tests &lt;/a&gt; came in from people submitting tests to the testfest site, three of the areas that these were targeted for improvement were ext/dom, ext/reflection and ext/exif. Here is how the coverage changed in these extensions:&lt;br /&gt;&lt;br /&gt;/ext/reflection went from 73.6 up to 84.6&lt;br /&gt;&lt;br /&gt;/ext/dom went from 56.7 to 60.3&lt;br /&gt;&lt;br /&gt;/ext/exif went from 44.2 to 57.1&lt;br /&gt;&lt;br /&gt;An average of nearly 10% over the three of them.&lt;br /&gt;&lt;br /&gt;I'm looking forward to helping to  run  2009 testfest. If we build on the successes of the 2008 we could aim to get several more extensions up to the same coverage as reflection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-2591024313433314341?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/2591024313433314341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=2591024313433314341' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2591024313433314341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2591024313433314341'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2008/08/php-test-coverage.html' title='PHP test coverage'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-2068129508606491947</id><published>2008-06-04T07:10:00.000-07:00</published><updated>2008-06-04T07:49:35.244-07:00</updated><title type='text'>Why XFAIL?</title><content type='html'>&lt;p&gt;A couple of weeks ago I implemented a feature called  --XFAIL-- in the PHP test runner (run-tests.php). The idea was not mine – it was &lt;a href="http://http//blog.thepimp.net/"&gt;Pierre's &lt;/a&gt;and I admit I had a few reservations about it when he first suggested it but I convinced myself that it might be useful. There was also some helpful  &lt;a href="http://marc.info/?l=php-qa&amp;amp;m=121173249909644&amp;amp;w=2"&gt;discussion&lt;/a&gt; on the PHP QA list.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In this post I'll explain what I have done and a give a couple of instances in which I think it might be of some use.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In the following example I have added an XFAIL section to a test called cos_basic1.phpt in ext/standard/tests/math:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;--XFAIL--&lt;br /&gt;Expected to fail because I've messed with expected output to make it fail&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;p&gt;I have also messed with the expected output to ensure that the test really does fail.&lt;/p&gt; &lt;p&gt;When I use run-tests.php to execute all the tests in the math directory the final section of the report looks like this:&lt;/p&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;=====================================================================&lt;br /&gt;Number of tests :  110               109&lt;br /&gt;Tests skipped   :    1 (  0.9%) --------&lt;br /&gt;Tests warned    :    0 (  0.0%) (  0.0%)&lt;br /&gt;Tests failed    :    0 (  0.0%) (  0.0%)&lt;br /&gt;Expected fail   :    1 (  0.9%) (  0.9%)&lt;br /&gt;Tests passed    :  108 ( 98.2%) ( 99.1%)&lt;br /&gt;---------------------------------------------------------------------&lt;br /&gt;Time taken      :    1 seconds&lt;br /&gt;=====================================================================&lt;br /&gt;=====================================================================&lt;br /&gt;EXPECTED FAILED TEST SUMMARY&lt;br /&gt;---------------------------------------------------------------------&lt;br /&gt;Test return type and value for expected input cos() [math/cos_basic1.phpt]&lt;br /&gt;=====================================================================&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;p&gt;The test cos_basic1.phpt fails, the usual .out, .exp etc files are generated - the only difference is in the way that the failure is reported. There is a new line in the summary data (Expected fail:) and a new section called EXPECTED FAILED TEST SUMMARY.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The intention of XFAIL is to help people working on developing PHP. Consider first the situation where you (as a PHP implementer) are working through a set of failing tests. You do some analysis on one test but you can't fix the implementation until something else is fixed – however – you don't want to lose the analysis and it might be some time before you can get back to the failing test. In this case I think it's reasonable to add an XFAIL section with a brief description of the analysis. This takes the test out of the list of reported failures making it easier for you to see what is really on your priority list but still leaving the test as a failing test.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The second place that I can see that XFAIL might be useful is when a group of people are working on the same development project. Essentially one person on the project finds a missing feature or capability but it isn't something they can add immediately, or maybe another person has agreed to implement it. A really good way to document the omission is to write a test case which is expected to fail but which will pass if the feature is implemented. This assumes that there is general agreement that implementation is a good idea and needs to be done at some stage.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Both of these situations have more to do with what is useful for a developer than a tester, so XFAIL is probably not a feature that I'll use much myself.  One person also raised the possibility that the  function is really already covered by the SKIPIF section. I don't think it is and I think the distinction is simply that if something is in a SKIPIF section it is something that is &lt;b&gt;never&lt;/b&gt; expected to  work – like some of the file system tests on Windows. I also can't think of a good reason that there would ever be XFAILing tests in released code, in contrast we often use SKIPIF sections in released levels of PHP.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The  XFAIL feature is only implemented in PHP 5.3 and PHP6. It's documented in &lt;a href="http://qa.php.net/phpt_details.php"&gt;the usual place&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-2068129508606491947?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/2068129508606491947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=2068129508606491947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2068129508606491947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/2068129508606491947'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2008/06/why-xfail.html' title='Why XFAIL?'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-7540614585850227991</id><published>2008-05-30T02:55:00.000-07:00</published><updated>2008-05-30T02:59:57.323-07:00</updated><title type='text'>Zoom Splatter</title><content type='html'>Several people have asked me why this blog is called zoomsplatter, someone even suggested that it might be a reference to what I do on the motorbike. Thankfully it isn't – or not since I was 19.&lt;br /&gt;&lt;br /&gt;It's actually a reference to IBM's office system. When I first joined IBM we all used PROFS, IBM's office system. It was amazingly good and had one invaluable feature that I have not seen in anything since – the “unsend” function. This was an absolute godsend to those of us with poor impulse control.&lt;br /&gt;&lt;br /&gt;The PROFS spell checker used to offer a few alternatives if it didn't like what you were typing – and frankly it was not very keen on either of my names. Zoom Splatter was what it thought I should be called – and who am I to argue?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-7540614585850227991?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/7540614585850227991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=7540614585850227991' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7540614585850227991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/7540614585850227991'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2008/05/zoom-splatter.html' title='Zoom Splatter'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-1938589564552410808</id><published>2008-05-21T08:30:00.000-07:00</published><updated>2008-05-21T08:54:08.975-07:00</updated><title type='text'>How can we tell if we're making a difference?</title><content type='html'>It's quite hard to tell how well the PHP TestFest is  succeeding in the aim of improving the PHP test coverage. Next time we do this we should take a snapshot of the coverage before we start - hindsight is a wonderful thing.&lt;br /&gt;&lt;br /&gt;Here is what I did to try and find out:&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;From  the CVS change log for May 2008, 101 PHP test files were added or changed in PHP 5.3 under the ~ext directory.&lt;/p&gt;   &lt;p class="western" style="margin-bottom: 0cm;"&gt;Looking at these I can identify 49 that I know come from TestFest activity, these are 30 new mcrypt tests – we have David Soria Parra to thank for these – having a one-man TestFest there  :-)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Of the others there are 17 new DOM tests – for which we thank the London PHP group and 2 new reflection tests that came from the Dutch PHP TestFest. Given that there currently about 5000 tests in PHP, if we only count the tests committed that's about a 1% increase.&lt;br&gt;&lt;br /&gt;&lt;/p&gt;   &lt;br&gt; &lt;p &gt;So where are the rest of the tests? There are still 73 tests in testfest.php.net waiting to be reviewed and committed – we really need  someone who understands reflection to review and commit reflection tests. I notice that there is a new cURL test today as well – that's brave.&lt;/p&gt;  &lt;br&gt; &lt;p&gt;What about coverage? I believe that the mcrypt coverage leapt from less than 30% up to over 75% thanks to David's efforts! The DOM coverage will go up by about 3.5% by the time all the London tests are in and there is plenty more to do in that extension. As for reflection - I can't tell but I'd love to know. In case anyone wants to check later it's at 75% today without the the new tests.&lt;br /&gt;&lt;/p&gt; &lt;br&gt;&lt;br /&gt;&lt;p&gt;In case anyone is looking for places to help, check &lt;a href="http://qa.php.net/tested-methods.php"&gt;this&lt;/a&gt; for some interesting analysis of what is and is not tested. Oh yes, there's plenty more to do :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-1938589564552410808?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/1938589564552410808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=1938589564552410808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/1938589564552410808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/1938589564552410808'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2008/05/how-can-we-tell-if-were-making.html' title='How can we tell if we&apos;re making a difference?'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2449778416389490679.post-3657700867267063615</id><published>2008-05-11T00:09:00.000-07:00</published><updated>2008-05-12T00:04:06.996-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP tests'/><title type='text'>My wildest dreams get wilder every day</title><content type='html'>The &lt;a href="http://en.wikipedia.org/wiki/The_Flatlanders"&gt;Flatlanders&lt;/a&gt;, not a prolific band but it terms of country music - absolute perfection. What made me think of them? Partly the Dutch - literally the “flat landers”, the land of windmills, clogs, &lt;a href="http://flickr.com/photos/derickrethans/2480454970/"&gt;tulips&lt;/a&gt; and now, PHP tests.  &lt;p class="western" style="margin-bottom: 0cm;"&gt;On May 10th, led by &lt;a href="http://sebastian-bergmann.de/"&gt;Sebastian Bergmann&lt;/a&gt; and &lt;a href="http://www.leftontheweb.com/"&gt;Stefan Koopmanschap&lt;/a&gt; a team of 10 &lt;a href="http://www.flickr.com/photos/skoop/2479900633/in/set-72157604982759952/"&gt;dedicated PHP&lt;/a&gt; programmers wrote 37 tests tests for the Reflection extension and had a lot of fun doing it.&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;The Dutch beat the UK[*] team, led by Scott MacVicar, Steve Seear, Ant Phillips, Josie Messa and YT[**], into an honourable second place. With 18 &lt;a href="http://flickr.com/photos/nigeljames/sets/72157604965017317/"&gt;skilled PHP&lt;/a&gt; programmers we managed 26 tests for the DOM extension in 3 hours.  &lt;/p&gt;&lt;p class="western" style="margin-bottom: 0cm;"&gt;Why? It's a PHP &lt;a href="http://wiki.php.net/qa/testfest"&gt;TestFest&lt;/a&gt;. This is the wild dream – that PHP should have a complete set of test cases for the implementation.  &lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;With the extraordinary power of open source and the good will of PHP programmers around the world, this particular wild dream is fast becoming a reality!&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; Zoe Slattery&lt;p&gt;&lt;/p&gt;&lt;br /&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;[*] I say UK, but have to admit help from several people with the sort of names and accents that romantic novelists give their heros.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;[**] I really mean Yours Truly. Not the YT of &lt;a href="http://en.wikipedia.org/wiki/Snow_Crash"&gt;SnowCrash&lt;/a&gt; , that &lt;span style="font-weight: bold;"&gt;would&lt;/span&gt; be a wild dream. In Snowcrash terms I'm more like YT's mom but with Poor Impulse Control.&lt;/p&gt;  &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;a href="http://wiki.php.net/qa/testfest"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p class="western" style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2449778416389490679-3657700867267063615?l=zoomsplatter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zoomsplatter.blogspot.com/feeds/3657700867267063615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2449778416389490679&amp;postID=3657700867267063615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3657700867267063615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2449778416389490679/posts/default/3657700867267063615'/><link rel='alternate' type='text/html' href='http://zoomsplatter.blogspot.com/2008/05/my-wildest-dreams-get-wilder-every-day.html' title='My wildest dreams get wilder every day'/><author><name>Zoe Slattery</name><uri>http://www.blogger.com/profile/13506933003824869000</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://2.bp.blogspot.com/_EifRUa32KOM/SgGlMZ3l7aI/AAAAAAAAAD8/Ypqr32Sg4h4/S220/zoejan09.jpg'/></author><thr:total>0</thr:total></entry></feed>
