<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Venesi</title>
	<atom:link href="http://www.venesi.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.venesi.com</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Sun, 07 Dec 2008 23:53:12 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>Escaping Windows</title>
		<link>http://www.venesi.com/2008/12/escaping-windows/</link>
		<comments>http://www.venesi.com/2008/12/escaping-windows/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 23:53:12 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[virtualbox]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=113</guid>
		<description><![CDATA[Being forced to use Windows on someone else&#8217;s IT is one thing, but on your own laptop is something different. To clarify I&#8217;m not forced to use Windows of course, I could install Linux (or other) though would loose too much tablet functionality (definitely 1-0 to Windows there).
The main issue with Windows from my perspective [...]]]></description>
			<content:encoded><![CDATA[<p>Being forced to use Windows on someone else&#8217;s IT is one thing, but on your own laptop is something different. To clarify I&#8217;m not forced to use Windows of course, I could install Linux (or other) though would loose too much tablet functionality (definitely 1-0 to Windows there).</p>
<p>The main issue with Windows from my perspective is that it seems to go downhill very quickly. A clean system, once fully patched, runs fine but overtime (short amounts of time at that) the whole system begins to feel sluggish, disk access becomes near continuous and overall responsiveness and stability suffer. I don&#8217;t have these feelings in Linux at all, nor to I even feel tempted to scandisk, defrag, virus scan, remove old programs and so on.</p>
<p>My feeling is that all the problems come down to a few key decisions in the development cycle of Windows. For example, I don&#8217;t understand for example why the dedicated swap and hibernate files sit on the same hard drive as my programs. I certainly feel their presence when defragmenting (or being told I can&#8217;t defragment).</p>
<p>However, since I&#8217;m <em>forced </em>into Windows by this tablet it&#8217;s good to see that <a href="http://virtualbox.org">VIrtualbox</a> has saved me from being without Linux. Version 2 (and from 1.6 I believe) includes seamless desktop (with Windows as host).</p>
<p>That&#8217;s a great feature - not only because it gives me just the one desktop but also because it allows me to put all my development programs, test programs and general clutter into another expendable virtual machine. Thus my Windows OS is light and hopefully won&#8217;t get bogged down with the remains of old version of old programs and DLLs.</p>
<p>Time will tell&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/12/escaping-windows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Back again, now with 50% more toys</title>
		<link>http://www.venesi.com/2008/12/back-again/</link>
		<comments>http://www.venesi.com/2008/12/back-again/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 23:39:00 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=112</guid>
		<description><![CDATA[As a rule l don&#8217;t buy many pieces of technology or rather as many as l used to. Sadly at some point even the most hardened fan of technology has to admit that little benefit is derived from spending hard earned cash on new gadget.
In the past 2 weeks through I&#8217;ve picked up two items [...]]]></description>
			<content:encoded><![CDATA[<p>As a rule l don&#8217;t buy many pieces of technology or rather as many as l used to. Sadly at some point even the most hardened fan of technology has to admit that little benefit is derived from spending hard earned cash on new gadget.</p>
<p>In the past 2 weeks through I&#8217;ve picked up two items which hare changed my life - noting that phrases like that are always overstated!</p>
<p>The first is a Acer C300 laptop. The C300 is a tablet pc with swivelling screen. Whilst my primary design for the purchase (second hand) was for use as an &#8221; always on media control station&#8221; must confess to being<br />
impressed with the laptop as a laptop and as a piece of electronic paper.</p>
<p>At the same time I&#8217;m sad that the handwriting, journal, push to rotate screen between portrait and landscape seems to be unavailable as out of the box functionality in Linux. That said writing is infinitely slower than typing! For reference this entire blog entry has been written and converted using MS Windows Journal. Also worth stating that be my &#8216;lack of love&#8217; for Windows XP is unchanged!</p>
<p>Whether l remain in Windows or move to Linux with some painful configuration or loss of functionality remains to be seen. Whilst the handwriting recognition is nice it&#8217;s ultimately a gimmick. However the ability to go portrait to read books, webpages, etc is more appealing.</p>
<p>My second purchase was the G1 phone from T-mobile. In the past I&#8217;ve found it hard to commit to a</p>
<p>new phone - cost vs functionality was always balanced in the wrong direction. Similarly as a dedicated developer my memories put me off the closed iphone ad Blackberry. The G1 changes the development side but surprisingly manages to do that on budget (£30 per month for unlimited data, free phone and some combination of 1400 texts and 700 mins).</p>
<p>I will leave a detailed entry on the phone for another day - my arm hurts from the writing! However suffice to say that - with the obvious comments that smaller phone, longer battery life and better camera would make for perfection - the G1 is a fantastic piece of kit for any one looking for a true smart phone. For developers it&#8217;s a must-have; for any one with Gmail it&#8217;s essential; and for everyone else its a big but cheap iphone (without the Apple T&amp;Cs).</p>
<p>(PS. Apologies for some dodgy hand writing recognition but I thought I&#8217;d leave them in. I&#8217;m impressed on the whole!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/12/back-again/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Compass as a schema free database</title>
		<link>http://www.venesi.com/2008/09/compass-as-a-schema-free-database/</link>
		<comments>http://www.venesi.com/2008/09/compass-as-a-schema-free-database/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 22:48:40 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[compass]]></category>

		<category><![CDATA[lucene]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=110</guid>
		<description><![CDATA[Whilst I&#8217;ve been playing around with persistance over the last couple of days I read a page on the about swapping out a database for Lucene (via Compass).
My Compass (vs Hibernate Search) results from yesterday also had me thinking about why I was using a database at all. When using ORM you are often more [...]]]></description>
			<content:encoded><![CDATA[<p>Whilst I&#8217;ve been playing around with persistance over the last couple of days I read a <a href="http://www.ifountain.com/blog/persistence+mechanism+trials+and+compass+framework+revolution">page</a> on the about swapping out a database for <a href="http://lucene.apache.org/java/docs/index.html">Lucene</a> (via <a href="http://www.compass-project.org/">Compass</a>).</p>
<p>My Compass (vs Hibernate Search) results from yesterday also had me thinking about why I was using a database at all. When using ORM you are often more interested in the easy storage of objects vs the properties of the database behind. Specifically are you aren&#8217;t using all the SQL muscle.</p>
<p>Depending on the data type (and database) you are storing database ORM might not have any advantages. For example for large amount of unstructured text or for objects where you don&#8217;t have a defined schema.</p>
<p>Today I had a quick play with Compass as a schema free database. Using the resource mapping you can simply create a object (a resource) and add properties (ie name, value pairs) to it. These resources are indexed by Compass and available through searching. Resource mapping allows you to configure how resources are pushed into Lucene (for example if they are stored, indexed, which analyser and how objects are converted to strings).</p>
<p>Since I haven&#8217;t posted any code in a long time, I&#8217;ll post the important pieces here:</p>
<p><strong>META-INF/compass.cfg.xml</strong>:</p>
<pre>&lt;?xml version="1.0" ?&gt;
&lt;compass-core-config xmlns="http://www.compass-project.org/schema/core-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.compass-project.org/schema/core-config
http://www.compass-project.org/schema/compass-core-config-2.0.xsd"&gt;
&lt;compass name="default"&gt;
&lt;connection&gt;
&lt;file path="compass_index"/&gt;
&lt;/connection&gt;
&lt;mappings&gt;
&lt;resource location="META-INF/entity.cpm.xml" /&gt;
&lt;/mappings&gt;
&lt;/compass&gt;
&lt;/compass-core-config&gt;</pre>
<p><strong>META-INF/entity.cpm.xml</strong>:</p>
<pre>&lt;?xml version="1.0" ?&gt;
&lt;!DOCTYPE compass-core-mapping PUBLIC
"-//Compass/Compass Core Mapping DTD 2.0//EN"
"http://www.compass-project.org/dtd/compass-core-mapping-2.0.dtd"&gt;

&lt;compass-core-mapping&gt;
&lt;resource alias="entity"&gt;
&lt;resource-id name="id" /&gt;
&lt;resource-property name="contents" store="no" index="tokenized" /&gt;
&lt;/resource&gt;
&lt;/compass-core-mapping&gt;</pre>
<p><strong>Main.java</strong>:</p>
<pre>    public static void main(String[] args) {
CompassConfiguration cfg = CompassConfigurationFactory.newConfiguration();
Compass compass = cfg.configure("/META-INF/compass.cfg.xml").buildCompass();
// This remove locks from previous crashed instances (useful when debugging trouble!)
compass.getSearchEngineIndexManager().releaseLocks();
CompassSession session = compass.openSession();
ResourceFactory resourceFactory = compass.getResourceFactory();
CompassTransaction tr;
int count=0;
String sourcePath = "/path/to/files";
// OPTIONAL: Turn the optimiser off here for increased speed
// compass.getSearchEngineOptimizer().stop();

// Use LUCENE transaction for faster batch processing
tr = session.beginTransaction(CompassTransaction.TransactionIsolation.LUCENE);
for (File file : new File(sourcePath).listFiles()) {
try {
Resource r = resourceFactory.createResource("entity");
r.addProperty("id", UUID.randomUUID().toString());
// Just for fun add a property we haven't mapped at compile time
r.addProperty(resourceFactory.createProperty("filename", file.getAbsolutePath(), Store.YES, Index.UN_TOKENIZED));
r.addProperty("contents", new FileReader(file));
session.save(r);
// Simple batching to improve speed
if(count++ % 1000 == 0) {
tr.commit();
tr = session.beginTransaction(CompassTransaction.TransactionIsolation.LUCENE);
}
} catch (IOException ex) {
logger.log(Level.SEVERE, null, ex);
tr.rollback();
}
}
// OPTIONAL: Turn the optimiser back on (if you turned it off and optimise)
// compass.getSearchEngineOptimizer().start();
// compass.getSearchEngineOptimizer().optimize();

// Now search
tr = session.beginTransaction();
CompassHits hits = session.find("Your search query here");

for(CompassHit hit : hits) {
Resource r = hit.getResource();
System.out.println(r.getValue("filename"));
}
tr.commit();
session.close();
compass.close();
}</pre>
<p>I chose resources over POJO mapping because it&#8217;s ideally for allowing users to store meta-data information around an entity. New properties can be added and queried at runtime (though some control might be advisable to help find things later on).</p>
<p>I&#8217;ve got an specific application in mind where I want to use this, but I think it&#8217;s got wider utility as the web moves us more towards textual (meta-data) information. With a bit of work you could probably achieve a CouchDb in Lucene&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/09/compass-as-a-schema-free-database/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Compass (from Hibernate Search)</title>
		<link>http://www.venesi.com/2008/08/compass-from-hibernate-search/</link>
		<comments>http://www.venesi.com/2008/08/compass-from-hibernate-search/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 12:28:23 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[compass]]></category>

		<category><![CDATA[hibernate]]></category>

		<category><![CDATA[jpa]]></category>

		<category><![CDATA[search]]></category>

		<category><![CDATA[toplink]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=109</guid>
		<description><![CDATA[Since I&#8217;ve been exploring JPA, TopLink, Hibernate and Hibernate Search over the last couple of days I thought I&#8217;d move on and check out Compass. I&#8217;ve used Compass previously through Grails but never as a standalone library directly from Java. With Grails Searchable Compass is completely transparent to you.
One of my motivations for trying Compass [...]]]></description>
			<content:encoded><![CDATA[<p>Since I&#8217;ve been exploring JPA, TopLink, Hibernate and Hibernate Search over the last couple of days I thought I&#8217;d move on and check out <a href="http://www.compass-project.org/">Compass</a>. I&#8217;ve used Compass previously through Grails but never as a standalone library directly from Java. With Grails Searchable Compass is completely transparent to you.</p>
<p>One of my motivations for trying Compass was that I found Hibernate Search to be a little slow. Indexing was fine, but bringing back the results was quite painful. I wondered if Compass was faster.</p>
<p>Out of the box Compass was pretty easy to get going (though I seem to have problems creating/dropping/updating the database when the Compass session listener is enabled in the persistance.xml). I moved back to TopLink for no other reason than to use the JPA reference implementation rather than Hibernate (which I know Compass works with because of Grails). The help documentation is pretty complete for Compass which means that once you read it you are good to go. My simple app didn&#8217;t require cascades, inheritance, etc but it&#8217;s all in there and available to use.</p>
<p>One of the differences between Compass and Hibernate Search is that when HS returns a query result they are objects from Hibernate itself. For Compass you are getting Compass&#8217; object back which might not have all the fields of the JPA version. If you want the JPA version you have to go and fetch it yourself (using the primary key shared between Compass and JPA).</p>
<p>On the surface this might seem like Hibernate has an advantage and to an extent it does. However the reason HS is &#8220;slow&#8221; as it needs to pull all that text from the database and into entity beans when you get the results list (you could use Projections to do something about that). For my data set of 20000 docs that&#8217;s 75mb of text, or perhaps more relevantly 7mb to process for every 1000 documents worth of search results.</p>
<p>If you contrast with Compass, it&#8217;s effectively maintaining two data repositories - one JPA and one Compass/Lucene index. When you get results from a Compass search you aren&#8217;t hitting the database, so you only get the fields back you asked you annotated as @Searchable*.</p>
<p>So comparing on a level playing field (ie getting the JPA persisted object for each result)  Compass and Hibernate Search seemed to perform around the same speed, though Compass was maybe a little faster (10%). But if you just want to do a search through Compass and not grab the original JPA object (say because all the fields you need are stored in the Lucene index), then it takes about 400ms (vs 19 seconds)!</p>
<p>I was hoping to get the best of both worlds by lazy loading the large string field of the document class. However that didn&#8217;t work (with TopLink at least, others not tried). The alternative is to put the content in another dedicated class, use lazy fetching for JPA and SearchableComponent / SearchableCascade in Compass. That way you would search on the text but return the owning class (eg the metadata of a document) rather than the content. Speed would improve at the cost of complexity. I&#8217;ve tried implementing this without sucess in the last few minutes, TopLink seems to be eager fetching the content class despite my lazy request!</p>
<p>One of the failures of Lucene is that you can&#8217;t update a document without deleting it from the index and then adding (and hence re-indexing). Thus you have to have the original content around if have entries that change - sadly that means you either store it in the database (and take advantage of HS or Compass) or you can leave it on the file system and then write your own code to re-read as necessary.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/08/compass-from-hibernate-search/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recreated post&#8230; JPA, Hibernate and Toplink</title>
		<link>http://www.venesi.com/2008/08/recreated-post-jpa-hibernate-and-toplink/</link>
		<comments>http://www.venesi.com/2008/08/recreated-post-jpa-hibernate-and-toplink/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 12:56:52 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=108</guid>
		<description><![CDATA[I failed to recover my original post so here&#8217;s a somewhat terse set of points from it:

TopLink is bundled with Netbeans, so that&#8217;s really easy to get started with. However Hibernate has Lucene integration through Hibernate Search, which I wanted to try out.
Hibernate is very difficult to get started with requiring you to download multiple [...]]]></description>
			<content:encoded><![CDATA[<p>I failed to recover my original post so here&#8217;s a somewhat terse set of points from it:</p>
<ul>
<li>TopLink is bundled with Netbeans, so that&#8217;s really easy to get started with. However Hibernate has Lucene integration through Hibernate Search, which I wanted to try out.</li>
<li>Hibernate is very difficult to get started with requiring you to download multiple Hiberate zip files and combine together a massive set of jars.</li>
<li>Additional JARs are required to be downlaoded such as an implementation JAR for SLF4J (you should download the whole SLF4J zip and pick one applicable to you - though that&#8217;s not obvious from the SLF4j site)</li>
<li>You still need commons-logging for Hibernate Search.</li>
<li>My code from TopLink didn&#8217;t work with Hibernate out of the box (though that&#8217;s probably my assumptions about JPA rather than a comment on either TopLink or Hibernate). Having a Singleton EntityManagerFactory sorted this out.</li>
<li>Hiberate was faster than TopLink ( 25% reduction in execution time) and also more robust. It didn&#8217;t &#8220;out of heap space&#8221; even with large transactions (which I&#8217;d had to batch up for TopLink).</li>
<li>The additional (non-standard) Hibernate annotations (such as Index) reduced the execution time to a 25% of the original TopLink. Of course I could have added indexes manually (either through the database commandline or as JPA native SQL queries) but the annotation method is much cleaner.</li>
</ul>
<p>Main points captured but not in the nicest form nor with the context which justifies them - sorry for that!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/08/recreated-post-jpa-hibernate-and-toplink/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hibernate Search</title>
		<link>http://www.venesi.com/2008/08/hibernate-search/</link>
		<comments>http://www.venesi.com/2008/08/hibernate-search/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 19:58:20 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=107</guid>
		<description><![CDATA[[Edit: This was a follow up to a post on JPA, Hibernate and Toplink, which has disappeared. I know I posted it because Google has it, but sadly not in cache! I must have deleted it but no idea how&#8230; ]
Following up on my previous post around an hour ago, Hibernate Search (that is Hibernate [...]]]></description>
			<content:encoded><![CDATA[<p>[Edit: This was a follow up to a post on JPA, Hibernate and Toplink, which has disappeared. I know I posted it because Google has it, but sadly not in cache! I must have deleted it but no idea how&#8230; ]</p>
<p>Following up on my previous post around an hour ago, <a href="http://search.hibernate.org/">Hibernate Search</a> (that is Hibernate integrated with Lucene) does indeed work perfectly. Setting up entity beans for indexing and performing search is easy.</p>
<p>Almost prefect - another couple of out of heap size messages due to the single transaction which batches up 20000 documents (around 75mb on disk) and which is held in memory for Lucene to index on commit. Hibernate seems to do fine persisting this to the database though obviously  Lucene has more work to do at commit point and runs out of memory constructing the index.</p>
<p>I could of course increase the heap size but instead simply batch off the transaction to commit 1000 documents at time. There is another <a href="http://http//forum.springframework.org/showthread.php?p=193346">way</a> of doing that but it&#8217;s similar in results/method. I chose to explicitly batch the transaction simply so that I keep the database and index in harmony (and don&#8217;t have to worry about rollbacks to different stages).</p>
<p>Might be worth getting the <a href="http://www.manning.com/bernard/">Hibernate Search in Action</a> book, though I think that you&#8217;d been to be doing some complex search and entity mapping in order to require more than the basic.</p>
<p>As an aside, I seem to be coming across JMS more and more in &#8216;everyday applications&#8217;. For example, Hibernate Search uses JMS for dedicated indexing, Glen Smith <a href="http://blogs.bytecode.com.au/glen/2008/08/07/first-experiences-with-grails--jms-and-openmq.html">talks</a> <a href="http://blogs.bytecode.com.au/glen/2008/08/14/message-driven-pogos--when-groovy--spring-and-openmq-collide.html">about</a> his use of JMS for his Groovy Blog app and LinkedIn <a href="http://www.slideshare.net/linkedin/linked-in-javaone-2008-tech-session-comm">presented</a> their JMS based architectured at JavaOne 2008. Make me wonder if JMS is the pragmatic, bloatfree ESB?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/08/hibernate-search/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I&#8217;m confused about JavaFX</title>
		<link>http://www.venesi.com/2008/08/im-confused-about-javafx/</link>
		<comments>http://www.venesi.com/2008/08/im-confused-about-javafx/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 10:58:50 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=105</guid>
		<description><![CDATA[I&#8217;m very confused by JavaFX - just what is it for? I thought it was the Sun&#8217;s answer to RIA/Air/Flash/Flex/Silverlight but every demo I see it about producing Swing frame&#8217;s for bouncing balls or fancy graphic text. I know this isn&#8217;t the final release, but I can&#8217;t get to the bottom of the hype!
I don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very confused by JavaFX - just what is it for? I thought it was the Sun&#8217;s answer to RIA/Air/Flash/Flex/Silverlight but every demo I see it about producing Swing frame&#8217;s for bouncing balls or fancy graphic text. I know this isn&#8217;t the final release, but I can&#8217;t get to the bottom of the hype!</p>
<p>I don&#8217;t understand the overlap with Groovy Swing/GraphicsBuilder which seems to offer a large majority of the demonstrated functionality of the JavaFX and offers more power and better integration with Java itself. (Admittedly there are additional media, etc elements to JavaFX).</p>
<p>All this isn&#8217;t helped by the fact I can&#8217;t get my hands on it. Verying disappointing that there&#8217;s no Linux distribution (even feature limited version). This is particularly frustrating as it has been demonstrated that it is possible to hack the current Mac JavaFX SDK to run on Linux (just not supported officially).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/08/im-confused-about-javafx/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Everyone&#8217;s a web designer</title>
		<link>http://www.venesi.com/2008/08/everyones-a-web-designer/</link>
		<comments>http://www.venesi.com/2008/08/everyones-a-web-designer/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 21:54:22 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=104</guid>
		<description><![CDATA[Continuing development in Grails I&#8217;ve been really stucked today by just how much time you spend as a &#8216;web designer&#8217; (aka &#8216;front end guy&#8217;) vs a &#8216;programmer&#8217; (&#8217;back end guy&#8217;). It really takes zero time before the majority of the coding is behind you and you need to start hacking away to make the app [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing development in Grails I&#8217;ve been really stucked today by just how much time you spend as a &#8216;web designer&#8217; (aka &#8216;front end guy&#8217;) vs a &#8216;programmer&#8217; (&#8217;back end guy&#8217;). It really takes zero time before the majority of the coding is behind you and you need to start hacking away to make the app look good and (more importantly) be user friendly.</p>
<p>Strange that Grails is the first time I&#8217;ve felt this way - having used CakePHP, Django, etc in the past. I think this is because Grails is the first framework which feels integrated to me. Django for example seems very disjointed going between the template language and Python. I wonder if this &#8216;disjointedness&#8217; meant that I had to &#8216;put my web designers&#8217; hat on. In Grails I&#8217;m just wearing my Groovy hat (so to speak) - though the template language isn&#8217;t Groovy (but it feels closer thanks to easy to write taglibs and &#8220;${it}&#8221; everywhere).</p>
<p>So I need to check out some javascript/ajax html  libraries to help me speed up the front end development. I confess that I would have been tempted to go for Ext JS where it not for the licence approach. In some sense, I don&#8217;t have a problem with the new GPL nature (though LGPL was better) but I find the whole concept quite confusing, as do many <a href="http://goit-postal.blogspot.com/2008/04/extjs-when-open-source-kills-community.html">others</a>.</p>
<p>Still since my work it usually open source I might give it a go. Alternatively jQuery is by far the best when &#8217;starting from scratch&#8217; and Yahoo UI is certainly impressive.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/08/everyones-a-web-designer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Remember PyCon UK</title>
		<link>http://www.venesi.com/2008/08/remember-pycon-uk/</link>
		<comments>http://www.venesi.com/2008/08/remember-pycon-uk/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 21:02:43 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Articles]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=103</guid>
		<description><![CDATA[Just booked my place on PyCON (13/14 September, with tutorial and sprint days around). It&#8217;s been a good 6 months since I last coded any Python, so I hope I can remember what it&#8217;s all about.
This week I&#8217;ve developing some Grails applications. Unfortunately nothing too &#8220;bloggable&#8221; due to the nature of the work. Tomorrow I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>Just booked my place on PyCON (13/14 September, with tutorial and sprint days around). It&#8217;s been a good 6 months since I last coded any Python, so I hope I can remember what it&#8217;s all about.</p>
<p>This week I&#8217;ve developing some Grails applications. Unfortunately nothing too &#8220;bloggable&#8221; due to the nature of the work. Tomorrow I&#8217;m going to work on a streaming video application in Grails which I&#8217;ll hopefully release (as example code).</p>
<p>I must also check out the new <a href="http://www.jboss.org/drools/">Drools</a> plugin which could be an excellent way of implementing business rules.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/08/remember-pycon-uk/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agent based simulation with Repast and Groovy</title>
		<link>http://www.venesi.com/2008/07/agent-based-simulation-with-repast-and-groovy/</link>
		<comments>http://www.venesi.com/2008/07/agent-based-simulation-with-repast-and-groovy/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 21:11:09 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.venesi.com/?p=102</guid>
		<description><![CDATA[I&#8217;ve always been interested in simulation, and in particular with agent based modelling. There&#8217;s something very powerful about the concept of building a set of individuals with simple rules and then running through a set of scenarios.
I&#8217;ve noticed that the Repast agent simulation toolkit has updated it&#8217;s site and also released Repast Simphony 1.1. I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always been interested in simulation, and in particular with agent based modelling. There&#8217;s something very powerful about the concept of building a set of individuals with simple rules and then running through a set of scenarios.</p>
<p>I&#8217;ve noticed that the <a href="http://repast.sourceforge.net/">Repast</a> agent simulation toolkit has updated it&#8217;s site and also released Repast Simphony 1.1. I&#8217;m going to have a play with this over the next few days using Groovy.</p>
<p>As a side note, installing Repast I had the opportunity/motivation to try out <a href="http://www.eclipse.org/">Eclipse</a> 3.4 (Ganymede) for Java and Groovy development. The Groovy plugin seems to be at about the same level of functionality as Netbeans (maybe a less mature but then noting it runs on a stable version Eclipse not a development milestone like Netbeans). Java development with Eclipse seems &#8216;less out of the box&#8217; than Netbeans, which is less friendly for the newcomer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.venesi.com/2008/07/agent-based-simulation-with-repast-and-groovy/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
