<?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-18565477</id><updated>2011-12-11T22:15:00.365-08:00</updated><category term='javafx'/><category term='it'/><category term='XPontus'/><category term='new user interface'/><category term='choice'/><category term='osgi'/><category term='almost there'/><category term='java'/><category term='jpa'/><category term='swing'/><category term='orm'/><category term='Code completion is here'/><category term='XPontus XML Editor 1.0.0-pre1'/><category term='xpontus christmas news'/><category term='XPontus XML Editor 1.0.0RC3'/><category term='What&apos;s cooking for Christmas'/><category term='actionscript'/><category term='The outline view is completed'/><category term='few days left before february'/><category term='cocoon'/><category term='back on xpontus development'/><category term='database'/><category term='Back on business'/><category term='Working on the development branch of XPontus'/><title type='text'>Yves Zoundi's blog</title><subtitle type='html'>My personal blog, about Java, XML and some other stuff.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default?start-index=101&amp;max-results=100'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>115</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18565477.post-7163409601513672502</id><published>2011-06-19T09:03:00.000-07:00</published><updated>2011-06-19T09:03:35.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cocoon'/><title type='text'>Playing with Apache Cocoon 3.0 - Part 2</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;As couple of people requested a complete example, I uploaded the full source file, as well as some sample input files, everything but the jar files&amp;nbsp;&lt;/span&gt;&lt;a href="https://rapidshare.com/files/3196609858/dist.zip"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;About the upload&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The uploaded file is called &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;dist.zip&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; (MD5: d930916c8506bdc563925385e7aa1162) and contains 2 folders : &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;src&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; and &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;www&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;src&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; folder contains the Java source file&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;www&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;folders contains all the files needed to generate a simple website. I didn't provide the exact files that I used for privacy reasons.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Dependencies&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;You can grab the required Jar dependencies from Maven repositories(click on the hyperlinks below) :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/cocoon/controller/cocoon-controller/3.0.0-alpha-2/cocoon-controller-3.0.0-alpha-2.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;cocoon-controller-3.0.0-alpha-2.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/cocoon/pipeline/cocoon-pipeline/3.0.0-alpha-2/cocoon-pipeline-3.0.0-alpha-2.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;cocoon-pipeline-3.0.0-alpha-2.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/cocoon/sax/cocoon-sax/3.0.0-alpha-2/cocoon-sax-3.0.0-alpha-2.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;cocoon-sax-3.0.0-alpha-2.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/cocoon/sitemap/cocoon-sitemap/3.0.0-alpha-2/cocoon-sitemap-3.0.0-alpha-2.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;cocoon-sitemap-3.0.0-alpha-2.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cocoon-stringtemplate-3.0.0-alpha-2.jarhttp://repo1.maven.org/maven2/org/apache/cocoon/stringtemplate/cocoon-stringtemplate/3.0.0-alpha-2/cocoon-stringtemplate-3.0.0-alpha-2.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;cocoon-stringtemplate-3.0.0-alpha-2.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dist/xml/cocoon/BINARIES/cocoon-xml-2.0.2.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;cocoon-xml-2.0.2.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mirrors.ibiblio.org/pub/mirrors/maven/commons-logging/jars/commons-logging-1.1.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;commons-logging-1.1.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dist.wso2.org/maven2/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;xercesImpl-2.9.1.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mirrors.ibiblio.org/pub/mirrors/maven2/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;xml-apis-1.3.04.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mirrors.ibiblio.org/pub/mirrors/maven/xalan/jars/xalan-2.7.1.jar"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;xalan-2.7.1.jar&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;a href="http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/xerces/xml-serializer/2.7.1/xml-serializer-2.7.1.jar"&gt;xml-serializer-2.7.1.jar&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Running the application&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Create an Java project with the IDE of your choice and add the source file and the required dependencies(jar files).&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;In the main method of the class &lt;i&gt;StaticSiteGenerator&lt;/i&gt;, change the variable&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;wwwRoot&lt;/i&gt; to point the the folder&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;www&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;folder extracted from the&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;dist.zip&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;archive.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Run the class and the output will be generated in the&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;i&gt;www/out&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;folder in HTML format.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7163409601513672502?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7163409601513672502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7163409601513672502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7163409601513672502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7163409601513672502'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2011/06/playing-with-apache-cocoon-30-part-2.html' title='Playing with Apache Cocoon 3.0 - Part 2'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3200656699793187035</id><published>2011-04-09T15:07:00.000-07:00</published><updated>2011-04-10T11:24:03.632-07:00</updated><title type='text'>Playing with Apache Cocoon 3.0</title><content type='html'>This morning, I needed to generate quickly a simple website without learning some template engine or recalling it.&lt;br /&gt;&lt;br /&gt;I was thinking about couple of years ago when I was working a lot with &lt;a href="http://cocoon.apache.org/"&gt;Apache Cocoon&lt;/a&gt; and XML processing in general.&lt;br /&gt;&lt;br /&gt;I downloaded the &lt;a href="http://cocoon.apache.org/3.0/download.html"&gt;latest build of Cocoon 3.0 alpha 2&lt;/a&gt; and gave it a shot. Below are my settings for the site generation :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Input folder containg XML files (root element and html content)&lt;/li&gt;&lt;li&gt;Toc file for site navigation (xml + html markup)&lt;/li&gt;&lt;li&gt;Resources to include&amp;nbsp;&lt;/li&gt;&lt;li&gt;An XSL stylesheet for the website generation (dynamic include of the TOC)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The site was ready after few minutes and minor adjustments. It looks like there's a &lt;a href="https://issues.apache.org/jira/browse/COCOON3-50"&gt;bug in the XIncludeTransformer &lt;/a&gt;so I couldn't use it with the alpha 2 version.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Below is some quick and dirty code(all in one class, without other files used) written after downloading it. There are some errors(generics and invalid content) in the code below because of the code formatter that I'm using on this blog.&lt;/div&gt;&lt;pre class="brush: java"&gt;import java.io.File;&lt;br /&gt;import java.io.FileFilter;&lt;br /&gt;import java.io.FileInputStream;&lt;br /&gt;import java.io.FileOutputStream;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.OutputStream;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;import java.nio.channels.FileChannel;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.Arrays;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;import java.util.EnumMap;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.Map;&lt;br /&gt;import java.util.Properties;&lt;br /&gt;import java.util.logging.Level;&lt;br /&gt;import java.util.logging.Logger;&lt;br /&gt;&lt;br /&gt;import javax.xml.transform.OutputKeys;&lt;br /&gt;&lt;br /&gt;import org.apache.cocoon.pipeline.NonCachingPipeline;&lt;br /&gt;import org.apache.cocoon.pipeline.Pipeline;&lt;br /&gt;import org.apache.cocoon.sax.SAXPipelineComponent;&lt;br /&gt;import org.apache.cocoon.sax.component.XMLGenerator;&lt;br /&gt;import org.apache.cocoon.sax.component.XMLSerializer;&lt;br /&gt;import org.apache.cocoon.sax.component.XSLTTransformer;&lt;br /&gt;&lt;br /&gt;// Simple website generation demo with Apache Cocoon 3.0 alpha2&lt;br /&gt;public final class StaticSiteGenerator {&lt;br /&gt;&lt;br /&gt;    // Generator configuration parameters&lt;br /&gt;    private static enum SiteConfiguration {&lt;br /&gt;        INPUT_FOLDER_LOCATION,&lt;br /&gt;        OUTPUT_FOLDER_LOCATION,&lt;br /&gt;        WEBSITE_XSL_STYLESHEET_LOCATION,&lt;br /&gt;        RESOURCES_FOLDER_LOCATION,&lt;br /&gt;        TOC_FILE_LOCATION,&lt;br /&gt;        INPUT_FILES_EXTENSION&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    // Error thrown when the configuration appears to be invalid&lt;br /&gt;    private static class InvalidConfiguration extends RuntimeException {&lt;br /&gt;        private static final long serialVersionUID = -8661543651471092797L;&lt;br /&gt;&lt;br /&gt;        public InvalidConfiguration(String message) {&lt;br /&gt;            super(message);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // Parameter passed to the XSL stylesheet to include a navigation bar&lt;br /&gt;    private static final String TOC_FILE_XSLT_PARAMETER_NAME = "tocURL";&lt;br /&gt;&lt;br /&gt;    // Current link in the TOC&lt;br /&gt;    private static final String TOC_FILE_CURRENT_LINK = "currentLink";    &lt;br /&gt;&lt;br /&gt;    // Copy a file to a folder&lt;br /&gt;    static void copyToFolder(File in, File outputFolder) throws IOException {&lt;br /&gt;        File out = new File(outputFolder, in.getName());&lt;br /&gt;        &lt;br /&gt;        FileChannel inChannel = new FileInputStream(in).getChannel();&lt;br /&gt;        FileChannel outChannel = new FileOutputStream(out).getChannel();&lt;br /&gt;        &lt;br /&gt;        try {&lt;br /&gt;            inChannel.transferTo(0, inChannel.size(), outChannel);            &lt;br /&gt;        } &lt;br /&gt;        catch (IOException e) {&lt;br /&gt;            throw e;&lt;br /&gt;        }&lt;br /&gt;        finally {&lt;br /&gt;            if (inChannel != null)  inChannel.close();&lt;br /&gt;            if (outChannel != null) outChannel.close();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // Generator configuration parameters&lt;br /&gt;    private EnumMap&lt;SiteConfiguration, String&gt; configuration;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    // Creates a new &lt;code&gt;StaticSiteGenerator&lt;/code&gt; with a given configuration&lt;br /&gt;    StaticSiteGenerator(EnumMap&lt;SiteConfiguration, String&gt; configuration) {&lt;br /&gt;        validateConfiguration(configuration);&lt;br /&gt;        this.configuration = configuration;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    // Simple configuration validation&lt;br /&gt;    private void validateConfiguration(EnumMap&lt;SiteConfiguration, String&gt; configuration) throws InvalidConfiguration {&lt;br /&gt;        if (configuration == null) {&lt;br /&gt;            throw new IllegalArgumentException("You must provide a valid configuration");&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        Collection&lt;SiteConfiguration&gt; allConfigurations = new ArrayList&lt;SiteConfiguration&gt;(Arrays.asList(SiteConfiguration.values()));&lt;br /&gt;        Collection&lt;SiteConfiguration&gt; providedConfigurations = new ArrayList&lt;StaticSiteGenerator.SiteConfiguration&gt;(configuration.keySet());&lt;br /&gt;        allConfigurations.removeAll(providedConfigurations);&lt;br /&gt;        &lt;br /&gt;        if (!allConfigurations.isEmpty()) {&lt;br /&gt;            StringBuilder sb = new StringBuilder(allConfigurations.size() * 3);&lt;br /&gt;            sb.append("Some configuration parameters were not found:");&lt;br /&gt;            SiteConfiguration[] missingConfigurations = allConfigurations.toArray(new SiteConfiguration[allConfigurations.size()]);&lt;br /&gt;            sb.append(missingConfigurations[0]);&lt;br /&gt;            for (int i = 1; i &lt; missingConfigurations.length; i++) {&lt;br /&gt;                sb.append(", ").append(missingConfigurations[i]);&lt;br /&gt;            }&lt;br /&gt;            throw new InvalidConfiguration(sb.toString());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void clean(File outputFolder) {&lt;br /&gt;        for (File outputFile : outputFolder.listFiles()) {&lt;br /&gt;            outputFile.delete();&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    // Generates the static web site&lt;br /&gt;    private void execute() throws Exception {        &lt;br /&gt;        final File inputFilesFolder = new File(configuration.get(SiteConfiguration.INPUT_FOLDER_LOCATION).toString());&lt;br /&gt;        final File outputFolder = new File(configuration.get(SiteConfiguration.OUTPUT_FOLDER_LOCATION).toString());&lt;br /&gt;        final File resourceFolder = new File(configuration.get(SiteConfiguration.RESOURCES_FOLDER_LOCATION).toString());&lt;br /&gt;        final File xslStylesheet = new File(configuration.get(SiteConfiguration.WEBSITE_XSL_STYLESHEET_LOCATION).toString());&lt;br /&gt;        final String inputFilesExtension = configuration.get(SiteConfiguration.INPUT_FILES_EXTENSION).toString();&lt;br /&gt;        final File tocFile = new File(configuration.get(SiteConfiguration.TOC_FILE_LOCATION).toString()); &lt;br /&gt;        &lt;br /&gt;        clean(outputFolder);&lt;br /&gt;        &lt;br /&gt;        final String tocURL = tocFile.getAbsolutePath();&lt;br /&gt;        &lt;br /&gt;        // Get the list of XML files for each page of the website&lt;br /&gt;        File[] inputFiles = inputFilesFolder.listFiles(new FileFilter() {&lt;br /&gt;            public boolean accept(File pathname) {&lt;br /&gt;                return pathname.getName().endsWith(inputFilesExtension) &amp;&amp; pathname.isFile();&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;        &lt;br /&gt;        File[] resources = resourceFolder.listFiles();&lt;br /&gt;&lt;br /&gt;        // Copy resources to the output folder&lt;br /&gt;        for (File resource : resources) {&lt;br /&gt;            copyToFolder(resource, outputFolder);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Loop through the input files&lt;br /&gt;        for (File inputFile : inputFiles) {&lt;br /&gt;            OutputStream outputFileStream = null;&lt;br /&gt;&lt;br /&gt;            String msg = "Transforming '%s' to '%s'";&lt;br /&gt;&lt;br /&gt;            try {&lt;br /&gt;                String outputFilename = inputFile.getName().replaceAll(inputFilesExtension, ".html");&lt;br /&gt;&lt;br /&gt;                File outputFile = new File(outputFolder, outputFilename);&lt;br /&gt;&lt;br /&gt;                Logger.getAnonymousLogger().log(Level.INFO, String.format(msg, inputFile.getAbsolutePath(), outputFile.getAbsolutePath()));&lt;br /&gt;                &lt;br /&gt;                outputFileStream = new FileOutputStream(outputFile);&lt;br /&gt;                &lt;br /&gt;                Pipeline&lt;SAXPipelineComponent&gt; pipeline = new NonCachingPipeline&lt;SAXPipelineComponent&gt;();&lt;br /&gt;                &lt;br /&gt;                pipeline.addComponent(new XMLGenerator(inputFile.toURI().toURL()));&lt;br /&gt;                pipeline.addComponent(newXSLTransformer(xslStylesheet, tocURL, outputFilename));&lt;br /&gt;                pipeline.addComponent(newXMLSerializer());&lt;br /&gt;&lt;br /&gt;                pipeline.setup(outputFileStream);&lt;br /&gt;                pipeline.execute();&lt;br /&gt;            }&lt;br /&gt;            finally {&lt;br /&gt;                if (outputFileStream != null)  outputFileStream.close();&lt;br /&gt;            }           &lt;br /&gt;        }        &lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    private XMLSerializer newXMLSerializer() {&lt;br /&gt;        Properties format = new Properties();&lt;br /&gt;        &lt;br /&gt;        format.put(OutputKeys.METHOD, "xml");&lt;br /&gt;        format.put(OutputKeys.INDENT, "yes");&lt;br /&gt;        &lt;br /&gt;        return new XMLSerializer(format);&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    private XSLTTransformer newXSLTransformer(File stylesheet, String tocFileURL, String currentLink) throws MalformedURLException {&lt;br /&gt;        Map&lt;String, Object&gt; parameters = new HashMap&lt;String, Object&gt;(1);&lt;br /&gt;        parameters.put(StaticSiteGenerator.TOC_FILE_XSLT_PARAMETER_NAME, tocFileURL);&lt;br /&gt;        parameters.put(StaticSiteGenerator.TOC_FILE_CURRENT_LINK, currentLink);&lt;br /&gt;&lt;br /&gt;        XSLTTransformer transformer = new XSLTTransformer(stylesheet.toURI().toURL());&lt;br /&gt;        transformer.setParameters(parameters);&lt;br /&gt;&lt;br /&gt;        return transformer;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   public static void main(String[] args) throws Exception {&lt;br /&gt;        String wwwRoot = "/Users/yves/Desktop/www"; &lt;br /&gt;        &lt;br /&gt;        EnumMap&lt;SiteConfiguration, String&gt; configuration;&lt;br /&gt;        configuration = new EnumMap&lt;StaticSiteGenerator.SiteConfiguration, String&gt;(StaticSiteGenerator.SiteConfiguration.class);&lt;br /&gt;&lt;br /&gt;        configuration.put(SiteConfiguration.INPUT_FOLDER_LOCATION, wwwRoot + "/in");&lt;br /&gt;        configuration.put(SiteConfiguration.INPUT_FILES_EXTENSION, ".xml");&lt;br /&gt;        configuration.put(SiteConfiguration.TOC_FILE_LOCATION, wwwRoot + "/toc/toc.xml");&lt;br /&gt;        configuration.put(SiteConfiguration.OUTPUT_FOLDER_LOCATION, wwwRoot + "/out");&lt;br /&gt;        configuration.put(SiteConfiguration.WEBSITE_XSL_STYLESHEET_LOCATION, wwwRoot + "/resources/xsl/site.xsl");&lt;br /&gt;        configuration.put(SiteConfiguration.RESOURCES_FOLDER_LOCATION, wwwRoot + "/resources/files");&lt;br /&gt;        &lt;br /&gt;        StaticSiteGenerator generator = new StaticSiteGenerator(configuration);&lt;br /&gt;        generator.execute();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3200656699793187035?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3200656699793187035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3200656699793187035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3200656699793187035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3200656699793187035'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2011/04/playing-with-apache-cocoon-30.html' title='Playing with Apache Cocoon 3.0'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7029911914765458181</id><published>2010-09-30T04:57:00.000-07:00</published><updated>2010-09-30T04:57:41.798-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><title type='text'>Flex annoyances...Can I grabz the initialz focuz?</title><content type='html'>I've been playing a bit with &lt;a href="http://en.wikipedia.org/wiki/ActionScript"&gt;ActionScript&lt;/a&gt; and the like lately. ActionScript and few other languages never really caught my interest. Sure, I can read and I could manage, but why? ;-).&lt;br /&gt;&lt;br /&gt;In fact, I've been avoiding Perl, ActionScript and few others professionally for years: &lt;br /&gt;Q:"So you know Java, Quartz, JMX, Unix/Linux, etc. what about Perl?" &lt;br /&gt;A:"Oh my, to be honest, I'm afraid of it...".&lt;br /&gt;Sometimes, you just have to suck it up and do the damn thing anyway.&lt;br /&gt;&lt;br /&gt;It's surprising to me that Flex is used a lot for "&lt;em&gt;intensive&lt;/em&gt;" tasks, that &lt;em&gt;would/should&lt;/em&gt; require threads to poll data at specific intervals. What else would you use if you need a decent toolkit with &lt;em&gt;advanced&lt;/em&gt; drawing capabilities on the browser? A beloved Java Applet? Silverlight? HTML5? Javascript?? ActiveX???&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; has some interesting things despite being single threaded(not the flash engine itself) : function pointers, easy binding, easy drag and drop, etc. However, some simple to more complex things can become annoying, while with more code, but still simple code, the same thing would&amp;nbsp;be trivial with a Desktop UI toolkit(that you're familiar with).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Can I be sure that a &lt;em&gt;return&lt;/em&gt; inside a &lt;em&gt;switch&lt;/em&gt; statement will just &lt;em&gt;return, at once&lt;/em&gt;?&lt;/li&gt;&lt;li&gt;Can I get the initial focus on a component once the flash movie is loaded, without keyboard interaction from my part? without random errors once in a while? without upgrading to bleeding edge?&lt;/li&gt;&lt;li&gt;Can I get a simple even bare layout manager interface without plugging stuff directly inside some &lt;em&gt;updateDisplayList&lt;/em&gt; method? Or without managing myself couple of&amp;nbsp; "&lt;em&gt;drawing delegates&lt;/em&gt;"?&lt;/li&gt;&lt;li&gt;etc...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It looks like Flex has couple of issues with its FocusManager. &lt;strong&gt;All I wanted was&amp;nbsp;setting the focus on a component at startup with a blinking cursor...&amp;nbsp;Trivial right?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I&amp;nbsp;was looking for an answer on Google as many seem to have that issue. I found a suggestion that seem to work : &lt;br /&gt;&lt;em&gt;ExternalInterfaceIfAvailable.call(SomeJavascript.focusFlashComponent).&lt;/em&gt; &lt;br /&gt;&lt;em&gt;callLater(mycomponent.grabTheFocus)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Lots of people seem to be ok with the fact that the Javascript that they write might not work on most browsers&lt;/u&gt;. Well, good enough if only a defined set of browsers will be supported by the application.&lt;br /&gt;But hey man, this is 2010, most web applications are past the time where a notice would be displayed "Only supported in Internet Explorer". Unless this is the web interface of your online banking accounts, you switch to an alternative immediately."Sorry man, I do not use Windows, so how could I use I.E??".&lt;br /&gt;&lt;br /&gt;I just grabbed the latest version of &lt;a href="http://www.prototypejs.org/"&gt;prototypejs&lt;/a&gt; and I'm confident that the code compatible with most modern browsers(and even maybe text based browsers that support a little subset of Javascript). Why not write it myself? Well I don't do tons of Javascript, and looking at browsers specs and compatibility with Javascript versions might not be worth the time. From prototypejs to &lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt; and the like, people already did the dirty work.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Let's say that the Javascript code is working&lt;/strong&gt;, now you're able to set the initial focus on a component once the flash&amp;nbsp;&lt;em&gt;movie&lt;/em&gt; is loaded. In my case, the component that need the focus is added/removed at runtime. &lt;br /&gt;&lt;br /&gt;When going back to the initial screen, &lt;em&gt;Flex 3.4 throws randomly&amp;nbsp;errors in the FocusManager&lt;/em&gt;. It looks like that FocusManager bug got fixed(&lt;em&gt;defaultButton&lt;/em&gt; issue), but my solution was to deactivate/activate the FocusManager myself :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Initial screen&lt;/li&gt;&lt;/ul&gt;onCreationComplete -&amp;gt; javascript call to set the focus -&amp;gt; Specific flex component requests then the focus&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Leaving the initial screen(Avoid some null errors on the &lt;strong&gt;defaultButton&lt;/strong&gt; if you use that)&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;component.focusmanager.deactivate()&lt;/em&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Going back to the initial screen(Avoid some null errors on the &lt;strong&gt;defaultButton&lt;/strong&gt; if you use that)&lt;/li&gt;&lt;/ul&gt;&lt;em&gt;mycodeToGrabTheFocus&lt;/em&gt;&lt;br /&gt;&lt;em&gt;component.focusmanager.activate()&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7029911914765458181?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7029911914765458181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7029911914765458181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7029911914765458181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7029911914765458181'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2010/09/flex-annoyancescan-i-grabz-initialz.html' title='Flex annoyances...Can I grabz the initialz focuz?'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-1108467101352981334</id><published>2009-12-29T16:33:00.000-08:00</published><updated>2009-12-29T17:35:56.924-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><title type='text'>Default right-click in all text components of an application</title><content type='html'>&lt;p&gt;First of all, Merry Christmas and Happy New Year everybody!&lt;/p&gt;&lt;div&gt;Many people are still surprised not to see a default right-click popup in all text components of a Java application. One way to do it, is to push a new &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/awt/EventQueue.html"&gt;EventQueue&lt;/a&gt; to the default one.  One concern could be applets in general (unsigned applets, global EventQueue).&lt;/div&gt;&lt;pre code="java"&gt;Toolkit.getDefaultToolkit().getSystemEventQueue().push(new PopupEventQueue());&lt;br /&gt;&lt;/pre&gt;Below is the code for the event queue.&lt;pre class="brush: java"&gt;&lt;br /&gt;import java.awt.AWTEvent;&lt;br /&gt;import java.awt.Component;&lt;br /&gt;import java.awt.EventQueue;&lt;br /&gt;&lt;br /&gt;import java.awt.event.ActionEvent;&lt;br /&gt;import java.awt.event.MouseEvent;&lt;br /&gt;&lt;br /&gt;import javax.swing.AbstractAction;&lt;br /&gt;import javax.swing.JPopupMenu;&lt;br /&gt;import javax.swing.SwingUtilities;&lt;br /&gt;&lt;br /&gt;import javax.swing.text.JTextComponent;&lt;br /&gt;&lt;br /&gt;public class PopupEventQueue extends EventQueue {&lt;br /&gt;&lt;br /&gt;private final JPopupMenu popup = new JPopupMenu();&lt;br /&gt;private final TextAction[] popupActions = new TextAction[4];&lt;br /&gt;&lt;br /&gt;public PopupEventQueue() {&lt;br /&gt;    popupActions[0] = new TextAction("Cut") {&lt;br /&gt;        private static final long serialVersionUID = -3844049016540352208L;&lt;br /&gt;&lt;br /&gt;        public void actionPerformed(ActionEvent ae) {&lt;br /&gt;            textComponent.cut();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        @Override&lt;br /&gt;        protected void postTextComponentInitialize() {&lt;br /&gt;            setEnabled(textComponent.isEditable() &amp;amp;&amp;amp; isTextSelected());&lt;br /&gt;        }&lt;br /&gt;    };&lt;br /&gt;    popupActions[1] = new TextAction("Copy") {&lt;br /&gt;        private static final long serialVersionUID = -3844049016540352208L;&lt;br /&gt;&lt;br /&gt;        public void actionPerformed(ActionEvent ae) {&lt;br /&gt;            textComponent.copy();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        @Override&lt;br /&gt;        protected void postTextComponentInitialize() {&lt;br /&gt;            setEnabled(isTextSelected());&lt;br /&gt;        }&lt;br /&gt;    };&lt;br /&gt;    popupActions[2] = new TextAction("Paste") {&lt;br /&gt;        private static final long serialVersionUID = -3844049016540352208L;&lt;br /&gt;&lt;br /&gt;        public void actionPerformed(ActionEvent ae) {&lt;br /&gt;            textComponent.paste();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        @Override&lt;br /&gt;        protected void postTextComponentInitialize() {&lt;br /&gt;            setEnabled(textComponent.isEditable());&lt;br /&gt;        }&lt;br /&gt;    };&lt;br /&gt;    popupActions[3] = new TextAction("Select all") {&lt;br /&gt;        private static final long serialVersionUID = -3844049016540352208L;&lt;br /&gt;&lt;br /&gt;        public void actionPerformed(ActionEvent ae) {&lt;br /&gt;            textComponent.selectAll();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        @Override&lt;br /&gt;        protected void postTextComponentInitialize() {&lt;br /&gt;            setEnabled(!textComponent.getText().trim().equals(""));&lt;br /&gt;        }&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;    for (TextAction action : popupActions) {&lt;br /&gt;        popup.add(action);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;protected void dispatchEvent(AWTEvent event) {&lt;br /&gt;    if (event.getID() == MouseEvent.MOUSE_RELEASED) {&lt;br /&gt;        MouseEvent e = (MouseEvent) event;&lt;br /&gt;&lt;br /&gt;        Component c = getSource(e);&lt;br /&gt;&lt;br /&gt;        if (c instanceof JTextComponent) {&lt;br /&gt;            if (SwingUtilities.isRightMouseButton(e)) {&lt;br /&gt;                final JTextComponent txtComp = (JTextComponent) c;&lt;br /&gt;                for (TextAction action : popupActions) {&lt;br /&gt;                    action.setTextComponent(txtComp);&lt;br /&gt;                }&lt;br /&gt;                popup.show(e.getComponent(), e.getX(), e.getY());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    super.dispatchEvent(event);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private Component getSource(MouseEvent e) {&lt;br /&gt;    return SwingUtilities.getDeepestComponentAt(&lt;br /&gt;            e.getComponent(),&lt;br /&gt;            e.getX(),&lt;br /&gt;            e.getY());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static abstract class TextAction extends AbstractAction {&lt;br /&gt;&lt;br /&gt;    private static final long serialVersionUID = -7708937505251885197L;&lt;br /&gt;    protected JTextComponent textComponent;&lt;br /&gt;&lt;br /&gt;    public TextAction(String name) {&lt;br /&gt;        super(name);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setTextComponent(JTextComponent textComponent) {&lt;br /&gt;        this.textComponent = textComponent;&lt;br /&gt;        postTextComponentInitialize();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected boolean isTextSelected() {&lt;br /&gt;        return (textComponent.getSelectionStart() != textComponent.getSelectionEnd());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected abstract void postTextComponentInitialize();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-1108467101352981334?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/1108467101352981334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=1108467101352981334' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1108467101352981334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1108467101352981334'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2009/12/default-right-click-in-all-text.html' title='Default right-click in all text components of an application'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-5238439557871211518</id><published>2009-08-24T05:58:00.001-07:00</published><updated>2009-08-24T05:58:12.492-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><title type='text'>The making of an OSGI based IRC Bot</title><content type='html'>&lt;p style="clear: both"&gt;I've released the source code of &lt;a href="https://sand-irc.svn.sf.net/svnroot/sand-irc/jerkbot/" title="JerkBot SVN repository" target="_blank"&gt;JerkBot&lt;/a&gt;, an IRC bot based on &lt;a href="http://jerklib.sf.net" target="_blank"&gt;Jerklib&lt;/a&gt; and &lt;a href="http://www.osgi.org/" title="OSGI main site" target="_blank"&gt;OSGI&lt;/a&gt;. JerkBot source code is a multi-module maven project. It's not some OSGI/Java blueprints as I'm no OSGI expert, plus JerkBot is basically a 24 hours effort without bug fixes.&lt;/p&gt;&lt;p style="clear: both"&gt;The library itself is distributed under BSD license, but the bot provides plugins such as SVN for example using &lt;a href="http://svnkit.com/" target="_blank"&gt;SVNKit&lt;/a&gt; , which is subject to other licensing terms.&lt;/p&gt;&lt;p style="clear: both"&gt;The bot uses &lt;a href="http://www.eclipsezone.com/eclipse/forums/t96740.html" title="Declarative Services intro" target="_blank"&gt;Declarative Services&lt;/a&gt; for OSGI and Java technologies such as :&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;ul style="clear: both"&gt;&lt;li&gt;&lt;a href="http://lucene.apache.org/java/docs/" target="_blank"&gt;Apache Lucene&lt;/a&gt; for Javadoc Search&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.opensymphony.com/quartz/" title="Quartz website" target="_blank"&gt;Quartz&lt;/a&gt; for job scheduling(session tracking, pending registrations, etc.)&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.sun.com/products/javamail/" title="Javamail Website" target="_blank"&gt;Javamail&lt;/a&gt; to send emails for user registration&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/eclipselink/" target="_blank"&gt;EclipseLink&lt;/a&gt; for persistence&lt;/li&gt;&lt;li&gt;A subset of &lt;a href="http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/GeneralAcnOnly.html" title="Old guide" target="_blank"&gt;JAAS&lt;/a&gt; for security&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/" title="JMX website" target="_blank"&gt;JMX&lt;/a&gt; for administrative commands (accessible through &lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html" title="Tutorial on JConsole" target="_blank"&gt;JConsole&lt;/a&gt; or through the bot &lt;em&gt;jmx&lt;/em&gt; command)&lt;/li&gt;&lt;li&gt;The usual &lt;a href="http://commons.apache.org/" target="_blank"&gt;Jakarta libraries&lt;/a&gt; and couple of other libraries&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;I didn't provide scripting languages to the bot for security reasons, there's only JMX. I would prefer to offer scripting languages in a secure way with a custom &lt;a href="http://java.sun.com/docs/books/tutorial/essential/environment/security.html" target="_blank"&gt;SecurityManager&lt;/a&gt; to prevent drama from happening :-). &lt;br /&gt;Let's say scripting is enabled, and someone accidently tries one or all the following instructions in a scripting language.&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;ul style="clear: both"&gt;&lt;li&gt;File("/somepath").delete()&lt;/li&gt;&lt;li&gt;System.exit(0)&lt;/li&gt;&lt;li&gt;Download("http://website/hugefile.iso").saveToDisk();&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;JerkBot was roughly a one day effort with 4 rewrites(1 full day each), and of course bug fixes time to time:&lt;br /&gt;&lt;ul style="clear: both"&gt;&lt;li&gt;The first version was using traditional OSGI, well not so traditional :-), with &lt;a href="http://www.osgi.org/javadoc/r4v41/org/osgi/framework/BundleActivator.html" target="_blank"&gt;BundleActivators&lt;/a&gt; service trackers and listeners, etc.&lt;/li&gt;&lt;li&gt;The second rewrite used &lt;a href="http://felix.apache.org/site/apache-felix-service-component-runtime.html" target="_blank"&gt;Declarative Services&lt;/a&gt; with manually written XML descriptors&lt;/li&gt;&lt;li&gt;The third rewrite was based on Felix &lt;a href="http://felix.apache.org/site/ipojo-concepts-overview.html" title="IPojo Website" target="_blank"&gt;IPOJO&lt;/a&gt;. I would have preferred to use IPOJO, but found some annoyances(abstract based classes, JMX flexibility, etc.).&lt;/li&gt;&lt;li&gt;The last rewrite is using &lt;a href="http://felix.apache.org/site/apache-felix-maven-scr-plugin.html" target="_blank"&gt;Felix SCR but with annotations&lt;/a&gt; to generate XML descriptors for components. Simplify code, remove unnecessary abstractions, consistent logic, etc.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;I'll be providing the binary distribution soon. The binary distribution contains everything necessary to run the bot : OSGI configuration files, Bot configuration, jars, a user/developer guide, etc.&lt;/p&gt;&lt;p style="clear: both"&gt;What the bot doesn't provide is a logging mechanism, for IRC channel logs. To do it right, I think it would be better to create a new project. In my opinion, when a bot logs channel it should have, if possible, the following features:&lt;br /&gt;&lt;ul style="clear: both"&gt;&lt;li&gt;Configurable tasks to schedule&lt;em&gt; flexible timed &lt;/em&gt;delivery of existing logs(local filesystem, ftp, samba share, ssh, http put, etc.)&lt;/li&gt;&lt;li&gt;Configurable log format(HTML, CSV, TXT) with optional generation of html logs or text logs.&lt;/li&gt;&lt;li&gt;Database storage or any other persistence mechanism(Apache Lucene Index vs flat text files, database logs, etc.)&lt;/li&gt;&lt;li&gt;Ability to stop/start logging for every channel&lt;/li&gt;&lt;li&gt;Optional Web front-end to publish logs(Could be a static HTML pages with Javascript search, JSF, Wicket, GWT, Rest interface + Apache Lucene or a DB for search).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Providing a quick and dirty plugin for channel logs would be trivial &lt;em&gt;but not flexible&lt;/em&gt; :-). I started implementing it, but I decided to stop there.&lt;/p&gt;&lt;p style="clear: both"&gt;The first draft of the bot manual can be found in the &lt;a href="http://sand-irc.svn.sf.net/viewvc/sand-irc/jerkbot/jerkbot-manual.pdf" target="_blank"&gt;svn repository&lt;/a&gt;. Please bear with me for grammar and spelling mistakes, it was a written &lt;em&gt;very quickly at early AM&lt;/em&gt; :-)&lt;/p&gt;&lt;p style="clear: both"&gt;In JerkBot plugins are provided by OSGI bundles. I learned a lot from my previous experience with &lt;a href="http://jpf.sf.net" target="_blank"&gt;JPF&lt;/a&gt; when writing &lt;a href="http://xpontus.sf.net" target="_blank"&gt;XPontus&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For now the bot is sitting on irc.freenode.net in the ##swing channel, running on an old laptop(FreeBSD-CURRENT).&lt;/p&gt;&lt;br class='final-break' style='clear: both' /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-5238439557871211518?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/5238439557871211518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=5238439557871211518' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5238439557871211518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5238439557871211518'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2009/08/making-of-osgi-based-irc-bot.html' title='The making of an OSGI based IRC Bot'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4544548072601163933</id><published>2009-07-22T16:45:00.001-07:00</published><updated>2009-07-22T16:48:25.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='choice'/><category scheme='http://www.blogger.com/atom/ns#' term='it'/><title type='text'>Which one is the best?</title><content type='html'>&lt;p style="clear: both"&gt;You've probably heard it many times, in various circumstances. What was your answer? &lt;/p&gt;&lt;p style="clear: both"&gt;That trivial question may(or not) have been subject to a long answer with hopefully credible reasons. "The problem is ... Many tools provide XXX ... This tool is the best, in this case, as ...".&lt;br /&gt;But you're the expert! The reasons motivating your choices should be obvious to anybody else without having a long discussion!&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;strong&gt;There is no best&lt;/strong&gt;, there are needs and there are constraints to reach particular goals(short, medium or long term). All those variables usually fits in to a vision. &lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;strong&gt;If there were a best, anyone who could afford it, would have it&lt;/strong&gt;. &lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;em&gt;No, no why would I want to use crap seriously?? So many tools already suck and people keep providing more crap. Maybe I should suggest that they stop already, as there are many similar great tools out there.&lt;/em&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;u&gt;A typical conversation about choosing a Linux distribution&lt;/u&gt;&lt;br /&gt;Q: "What's the best Linux distribution? Ubuntu?"&lt;br /&gt;A: "Wut??? Hell no, it's Debian and all the rest is crap including the derivatives."&lt;br /&gt;Q: "Why?"&lt;br /&gt;A: "Because Ubuntu doesn't ... and because I say so :-)"&lt;br /&gt;Q: "But Ubuntu is easy and Debian is not user friendly!"&lt;br /&gt;A: "Really? Not really .... Ah, I guess I just like things when they're complicated, must be the geek feeling."&lt;/p&gt;&lt;p style="clear: both"&gt;A tool can meet needs but not all the constraints and vice-versa and what you'll probably be looking for is a balance.&lt;/p&gt;&lt;p style="clear: both"&gt;&lt;/p&gt;&lt;ul style="clear: both"&gt;&lt;li&gt;Memory usage vs tons of features&lt;/li&gt;&lt;li&gt;Usability vs complexity/too much flexibility&lt;/li&gt;&lt;li&gt;Easily understood vs require 5 books + certification + hiring a consultant&lt;/li&gt;&lt;li&gt;Commercial support vs community support&lt;/li&gt;&lt;li&gt;Proven stability and acceptance vs the unknown &lt;/li&gt;&lt;li&gt;etc.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="clear: both"&gt;There are simple ways to decide :&lt;br /&gt;&lt;/p&gt;&lt;ul style="clear: both"&gt;&lt;li&gt;You have a problem to address within constraints(time, budget, etc.)&lt;/li&gt;&lt;li&gt;You try looking for tools which are particularly good at solving your specific problem and that integrate perfectly in your custom infrastructure. However, no such tools seem to exist or there's that little thing that you dislike.&lt;/li&gt;&lt;li&gt;You then look for compromises and ways to solve the issues that won't get magically fixed by the tools. &lt;/li&gt;&lt;li&gt;You don't have time to look at all the existing tools and evaluate them. You'll be selecting few tools and trying them out. Hopefully software vendors will cover the tiniest details which are relevant to your business needs, in their documentation.&lt;/li&gt;&lt;li&gt;You decide and you live with it, maybe reevaluate your decision and revise your goals, but you move forward unless you really believe that you're wrong.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;It's not easy to decide in the IT world. You might get it right or wrong but you may have the power to correct your mistakes. Whatever the choice, the rational move is trying to select wisely, going forward and take responsibility.&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4544548072601163933?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4544548072601163933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4544548072601163933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4544548072601163933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4544548072601163933'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2009/07/which-one-is-best.html' title='Which one is the best?'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-5728300468953527771</id><published>2009-07-14T17:08:00.000-07:00</published><updated>2009-07-14T17:46:31.659-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jpa'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><title type='text'>Playing with OSGI and JPA</title><content type='html'>I've been writing an &lt;a href="http://en.wikipedia.org/wiki/Internet_Relay_Chat"&gt;IRC&lt;/a&gt; bot for fun, but it's far from being done. My goal is to experiment with &lt;a href="http://java.sun.com/javaee/overview/faq/persistence.jsp"&gt;JPA&lt;/a&gt; in an &lt;a href="http://www.osgi.org/About/Technology"&gt;OSGI&lt;/a&gt; environment. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At work, I am using Hibernate, XDoclet to generate the XML and JPA isn't coming soon :-). My last JPA application was a &lt;a href="http://pastebin.ca"&gt;pastebin&lt;/a&gt; application, with &lt;a href="http://wicket.apache.org/"&gt;Wicket&lt;/a&gt;, hibernate search, Lucene, etc. &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm using a friend's library &lt;a href="http://jerklib.sourceforge.net/"&gt;Jerklib&lt;/a&gt; with &lt;a href="http://www.dynamicjava.org/projects/dynamic-jpa"&gt;Dynamic JPA&lt;/a&gt;. I'm still having some minor issues when deploying but I'll probably find a solution soon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;About the application&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Environment&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I have a multi-project with Maven and I'm using the maven bundle plugin and I'm developing in Eclipse 3.5 on Debian testing.&lt;/div&gt;&lt;div&gt;I'm using &lt;a href="http://openjpa.apache.org/"&gt;openjpa&lt;/a&gt; , dynamic jpa and couple of other dependencies&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Design overview&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;a) Commands implemented as plugins : The bot has a set of factoids(learn, forget, etc...). Each command gets created using a factory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;// message listener //String operation = getOperation();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;div&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;CommandFactory factory = ServiceFromOSGI.getCommandFactory(operation);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:monospace, fantasy;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;// if the factory is not null, redundancy for the operation parameter&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;// as a factory can have multiple commands&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Command command = factory.createCommand(operation);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;ircChannel.say(command.render(ircMessageContext));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;b) The command service listens for removal or installation of commands and updates itself.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After writing couple of "users' commands", I would need to implement some administration commands(load/unload plugins, irc specific tasks, etc.).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Problems&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The dynamic discovery is failing for now, the persistence provider class is not resolved, it might just be a bundling problem for openjpa. I wrapped it myself.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div&gt;  It's strange that many open source projects still don't provide an OSGI manifest. The &lt;a href="http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html"&gt;maven-bundle plugin&lt;/a&gt; is very trivial to use for maven enabled project and there's still &lt;a href="http://www.aqute.biz/Code/Bnd"&gt;bnd&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;  While OSGI is an interesting technology, I personally don't know anybody using it in the enterprise unless they are an Eclipse shop. I think that it's mostly due to &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;the lack of "OSGI enabled jars"&lt;/li&gt;&lt;li&gt;the fear that OSGI might introduce unnecessary complexity&lt;/li&gt;&lt;li&gt;the lack of step by step complete examples(if possible with screencasts)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's plenty of documentation about OSGI and lots of successful applications(Web, Desktop) using OSGI. Hopefully my bot will be one those applications :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-5728300468953527771?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/5728300468953527771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=5728300468953527771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5728300468953527771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5728300468953527771'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2009/07/playing-with-osgi-and-jpa.html' title='Playing with OSGI and JPA'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-5149213692448630358</id><published>2009-03-21T21:02:00.001-07:00</published><updated>2009-03-21T21:02:29.765-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javafx'/><title type='text'>Thoughts about JavaFX</title><content type='html'>&lt;p&gt;&lt;a href="http://javafx.com/"&gt;JavaFX&lt;/a&gt; has the potential to become something interesting. While there are many articles written about JavaFX, I have yet to see a non trivial JavaFX application. When browsing &lt;a href="http://www.dzone.com/"&gt;Dzone&lt;/a&gt; articles, it almost looks like JavaFX is popular, while it's not.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There's no amazing UI control and I am not sure that I could code an entire JavaFX application without writing few java classes. I am not fond of applets and I haven't written any for years. JavaFX doesn't solve the "applet problem".&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I don't know about any cellular phone which is officially supporting JavaFX. I am also not aware of any software vendor distributing desktop applications written with that technology.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In my opinion, JavaFX is not ready for production use. What motivated the release of JavaFX? Maybe they've been advertising it for too long and &lt;em&gt;they had to release something&lt;/em&gt;. I'll give JavaFX probably one more year before attempting to use it.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-5149213692448630358?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/5149213692448630358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=5149213692448630358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5149213692448630358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5149213692448630358'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2009/03/thoughts-about-javafx.html' title='Thoughts about JavaFX'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3222747432031780470</id><published>2009-01-04T10:06:00.001-08:00</published><updated>2009-01-04T10:42:04.826-08:00</updated><title type='text'>serialVersionUID in Netbeans</title><content type='html'>Most of the time, I use &lt;a href="http://netbeans.org/"&gt;Netbeans&lt;/a&gt; when I have the choice. What I don't like about &lt;a href="http://eclipse.org/"&gt;Eclipse&lt;/a&gt; and is getting me worried time to time is when the IDE freezes for a long time when you're not really doing anything.&lt;br /&gt;&lt;br /&gt;Last week, I needed to build a simple Java project (&lt;a href="http://maven.apache.org"&gt;Maven&lt;/a&gt; based build), about 50 000 lines of code(from &lt;a href="http://www.dwheeler.com/sloccount/"&gt;sloccount&lt;/a&gt;). The project contains one core project and few sub projects. Eclipse took about 30 minutes to import the project and set up the classpath. That performance was achieved under a Quad Core, 2 GB of RAM, which is amazing. I had only Eclipse, Firefox and a terminal opened. I tried with both &lt;a href="http://code.google.com/p/q4e/"&gt;q4e&lt;/a&gt; and &lt;a href="http://m2eclipse.codehaus.org/"&gt;m2eclipse&lt;/a&gt; plugins, same results, I could hear my CPU making lots of noise. I had time to start cooking, boil water for coffee and do some other things, before the IDE was ready to use.&lt;br /&gt;&lt;br /&gt;One of many missing features in Netbeans is the ability to generate the serial version ID for a serializable class. With Eclipse, you get the warning all the time, and you can choose between:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ignoring it&lt;/li&gt;&lt;li&gt;adding the annotation&lt;span style="font-weight: bold;"&gt; @SuppressWarning("serial")&lt;/span&gt;&lt;/li&gt;&lt;li&gt;generating the serial version id.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Available plugins for Netbeans&lt;/span&gt;&lt;br /&gt;There are two plugins available for Netbeans, that I am aware of : &lt;a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=9000"&gt;UUIDGenerator&lt;/a&gt; and &lt;a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=6887"&gt;serialVersionUID generator&lt;/a&gt;. I only have success with &lt;span style="font-style: italic;"&gt;UUIDGenerator&lt;/span&gt; (most of the time, I am running the latest development build under Linux and Windows and lately Mac OS Leopard).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Enabling Serialization warnings&lt;/span&gt;&lt;br /&gt;Under Tools-&gt;Options-&gt;Editor-&gt;Hints-&gt;Standard Javac warnings, select Serialization. That way, you'll see a marker notifying you that you're missing the declaration of a serialVersionUID field.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/SWEBN86o5mI/AAAAAAAAAL4/1wxXTBfYycc/s1600-h/serialsettings.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 215px;" src="http://3.bp.blogspot.com/_LZsdvh7kOqM/SWEBN86o5mI/AAAAAAAAAL4/1wxXTBfYycc/s320/serialsettings.png" alt="" id="BLOGGER_PHOTO_ID_5287508776711677538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Generate the serial version ID&lt;/span&gt;&lt;br /&gt;You can generate the serialVersionUID using the shortcut &lt;span style="font-style: italic;"&gt;Control-ALT-Z&lt;/span&gt;.  You can copy the generated contents to the clipboard and paste it inside your class.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/SWEAzvWCuII/AAAAAAAAALw/q9KZqu4X0Bw/s1600-h/serialuuid.png"&gt;&lt;img style="cursor: pointer; width: 288px; height: 229px;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/SWEAzvWCuII/AAAAAAAAALw/q9KZqu4X0Bw/s320/serialuuid.png" alt="" id="BLOGGER_PHOTO_ID_5287508326391920770" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3222747432031780470?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3222747432031780470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3222747432031780470' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3222747432031780470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3222747432031780470'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2009/01/serialversionuid-in-netbeans.html' title='serialVersionUID in Netbeans'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LZsdvh7kOqM/SWEBN86o5mI/AAAAAAAAAL4/1wxXTBfYycc/s72-c/serialsettings.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-200349380698531425</id><published>2008-12-23T19:17:00.001-08:00</published><updated>2008-12-23T19:26:40.331-08:00</updated><title type='text'>Merry Christmas</title><content type='html'>&lt;a href="http://xpontus.sf.net"&gt;XPontus&lt;/a&gt; and &lt;a href="http://vfsjfilechooser.sf.net"&gt;VFSJFileChooser &lt;/a&gt;were released this evening. I wanted to release before Christmas! Still the same stress and anxiety before and after publishing a new version. Now, I need to start advertising in forums, etc. &lt;div&gt;&lt;br /&gt;&lt;div&gt;The last few days, well more nights than days, have been mostly about testing XPontus installers, fixing bugs, reviewing as much code as I could.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Merry Christmas everybody and happy new year!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-200349380698531425?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/200349380698531425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=200349380698531425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/200349380698531425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/200349380698531425'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/12/merry-christmas.html' title='Merry Christmas'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8657829231934714002</id><published>2008-11-25T20:02:00.000-08:00</published><updated>2008-11-25T21:38:45.824-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Handling database changes without complete migration</title><content type='html'>&lt;span style="font-weight: bold;"&gt;The ORM market&lt;/span&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Object-relational_mapping"&gt;ORM&lt;/a&gt; tools are great. Products like &lt;a href="http://www.hibernate.org"&gt;Hibernate&lt;/a&gt;, &lt;a href="http://java.sun.com/jdo/index.jsp"&gt;JDO&lt;/a&gt;, &lt;a href="http://java.sun.com/javaee/overview/faq/persistence.jsp"&gt;JPA&lt;/a&gt;, &lt;a href="http://ibatis.apache.org/"&gt;IBATIS&lt;/a&gt;, &lt;a href="http://db.apache.org/torque/"&gt;Torque&lt;/a&gt;, and others made life easier for developing database enabled applications.&lt;br /&gt;Using &lt;a href="http://java.sun.com/javase/6/docs/technotes/guides/jdbc/"&gt;JDBC&lt;/a&gt; when your application is database intensive with lots of table can be lots of work especially if lots of your existing code base doesn't provide some DAO classes.&lt;br /&gt;Usually in ORM tools, you map a set of fields to some columns, using &lt;a href="http://www.w3.org/XML/"&gt;XML&lt;/a&gt; or &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html"&gt;annotations&lt;/a&gt;, and you're done.&lt;br /&gt;&lt;br /&gt;Most J2EE and core Java developers have faced database changes and migration issues at least once. The problem is pretty crucial when your database model is shared by other applications which can't be upgraded(for many reasons).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The concern&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How to handle database changes which keep happening?&lt;/li&gt;&lt;li&gt;Should/Could you stop providing backward compatibility?&lt;/li&gt;&lt;li&gt;Is upgrading the database model your only solution?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;The application history&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You have an existing application with a model which has been designed carefully and everything is going well.&lt;/li&gt;&lt;li&gt;You have a server side application with a database model and client applications with the same database model as the "main server".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A month or a year later, you need to make lots of changes in couple of tables, replace some primary keys, introduce some non null foreign keys, etc.&lt;/li&gt;&lt;li&gt;You were using raw JDBC mostly and plain SQL. Now, you would like to use that brand new bleeding edge technology(Hibernate, JPA, Ibatis, name it).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Here and there, you might have been using a very old ORM tool which was convenient at the time and is still getting the job done.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Constraints&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You need to be able to support simultaneously clients(applications) running older and newer versions of the database schema.&lt;/li&gt;&lt;li&gt;You cannot force the customer to upgrade for many reasons(hardware dependencies, partner application compatibility, the customer doesn't want to, etc.)&lt;/li&gt;&lt;li&gt;You need to keep adding new features which might involve altering again the existing schema&lt;/li&gt;&lt;li&gt;Your table contents are now messed up, invalid or irrelevant values here and there because the database column has a "NOT NULL" property.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Possible solutions&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;One might be tempted to maintain different versions of the same database, but let's say I have 100 versions since 1994.&lt;/li&gt;&lt;li&gt;Ok, let's use &lt;a href="http://jcp.org/en/jsr/detail?id=170"&gt;JCR&lt;/a&gt; to provide another abstraction level, maybe checking a node property before deciding which class to map, overkill in most cases?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Dear customer, please, upgrade and buy the new pack to be able to use that version which also provide bug fixes and new features"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hum... last resort "Dear customer, you should upgrade because that X, Y, W feature fixes lots of serious security holes which will affect your network"&lt;/li&gt;&lt;li&gt;Ok, from now on, every table will be like a key-pair, probably not very wise most of the time, especially if it will involve rewriting most parts of a huge application.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;The problem is here, a fix must be delivered!&lt;br /&gt;&lt;/span&gt;What I would probably do is :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stick with raw SQL and migrate ORM mappings to JDBC, as needed(if the ORM tools cannot ommit fields), to ignore some properties depending on the client database version. I can insert some dummy values when I have no choice when dealing with "old software clients".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use native SQL queries and JDBC only&lt;/li&gt;&lt;li&gt;Use named SQL queries with binding and anything tool that supports it  Hibernate, Ibatis, a resultset handler from &lt;a href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/jdbc/core/JdbcTemplate.html"&gt;JdbcTemplate&lt;/a&gt; or &lt;a href="http://commons.apache.org/dbutils/"&gt;DbUtils&lt;/a&gt;, etc. Some dummy data will need to be inserted when not available(new non null columns).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If the problem gets out of hand, way too many changes, I'll probably want to use a non relational database and handle relationships myself(An object or XML database might do, but might not scale)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Another solution, would be JCR. I messed with JackRabbit once, and the pain was brought. Performance, concurrency and the API probably improved since then.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I would definintely try to avoid running multiple database versions at the same time. You can easily go from 1, 2 versions and then reach 100.&lt;br /&gt;&lt;br /&gt;What would you developers do in such a situation?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8657829231934714002?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8657829231934714002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8657829231934714002' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8657829231934714002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8657829231934714002'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/11/handling-database-changes-without.html' title='Handling database changes without complete migration'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7078596147515951173</id><published>2008-11-16T08:51:00.000-08:00</published><updated>2009-12-29T17:37:30.996-08:00</updated><title type='text'>JDK7 changes</title><content type='html'>I had a surprise this morning while playing with &lt;em&gt;System.getProperties&lt;/em&gt;. I am using JDK7 and displaying the system properties in a &lt;em&gt;Swing JTable&lt;/em&gt;. &lt;br /&gt;When I don't specify the number of columns I get a null pointer exception. It happens when populating the array contents, not at initialization.&lt;br /&gt;This will throw a NPE:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;data = new Object[NB_ROWS][];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This will not&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt; data = new Object[NB_ROWS][NB_COLUMNS];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Code excerpt&lt;br /&gt;&lt;pre class="brush: java"&gt;&lt;br /&gt;public JavaEnvironmentModel()&lt;br /&gt;        {&lt;br /&gt;            Properties envProperties = System.getProperties();&lt;br /&gt;            NB_ROWS = envProperties.size();&lt;br /&gt;            data = new Object[NB_ROWS][NB_COLUMNS];&lt;br /&gt; &lt;br /&gt;            // for google blogger parser, no generics(Entry)&lt;br /&gt;            Iterator it = envProperties.entrySet().iterator();&lt;br /&gt;&lt;br /&gt;            for (int i = 0; it.hasNext(); i++)&lt;br /&gt;            {&lt;br /&gt;                Entry entry = (Entry)it.next();&lt;br /&gt;                data[i][PROPERTY_COLUMN] = entry.getKey();&lt;br /&gt;                data[i][VALUE_COLUMN] = entry.getValue();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7078596147515951173?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7078596147515951173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7078596147515951173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7078596147515951173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7078596147515951173'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/11/jdk7-changes.html' title='JDK7 changes'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-593257003015184622</id><published>2008-09-01T19:47:00.000-07:00</published><updated>2008-09-01T20:44:03.302-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPontus'/><title type='text'>Drinking a huge cup of Java</title><content type='html'>I am working again on &lt;a href="http://xpontus.sf.net"&gt;XPontus XML Editor&lt;/a&gt;. I believe that I'm ready to go for another round.&lt;br /&gt;&lt;br /&gt;I am happy to see that there are so many people using the software. Since the intial XPontus release, there are about 10 000 official downloads from Sourceforge and probably 12 000 from other sites grabbing the files directly by HTTP. I didn't expect such a thing at all and it gives me energy to work again on the application.&lt;br /&gt;&lt;br /&gt;Here are the main things that I learned since the XPontus inception:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Provide a project roadmap even if it's ambiguous or you won't do anything listed :-)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Don't use build tools such as &lt;a href="http://maven.apache.org"&gt;Maven&lt;/a&gt; if you expect lots of people to contribute to a project, use  a simpler but powerful tool such as &lt;a href="http://ant.apache.org"&gt;Ant&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If the component is has a public API, finish writing all the documentation before releasing: 20 bugs+good documentation is better than 5 bugs + no documentation, there will be bugs anyway.&lt;/li&gt;&lt;li&gt;Advertise a project enough but not too much, people will expect the application to be at the best commercial level even if there are only 2 or 3 people working on the project.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Don't assume you know what you're writing because you do code similar things often, read books or articles about the subject whenever you can.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Don't try to make a big application without taking time to do it well, or as well as possible&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Try to think more like a user or a client of an API, rather than a programmer. The application is for users at the moment you distribute it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Make it look good and then make it work : you love what you see and then you love what's inside.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Don't necessarily provide many features, few working features are better than a zillion of unstable features.&lt;/li&gt;&lt;/ul&gt;My goals are simple for the next release:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The application will probably be lighter and faster (java reflection abuses, bad programming, race conditions, etc.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Partial rewrite and more use of design patterns(without trying to recognize  them everywhere though! ).&lt;/li&gt;&lt;li&gt;Fix the current bugs,  usability/stability issues. No new features except maybe XPath2, XQuery. &lt;a href="http://vfsjfilechooser.sf.net"&gt;VFSJFileChooser&lt;/a&gt; will be introduced in the release as an optional plugin.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;New, simple but powerful API : If you explain the components relationships and the logic of the application, it should almost sounds like common sense, not magic or absurd.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;One should be able to reassemble, disassemble or extend XPontus without much effort. It looks difficult though, how can someone integrate very easily an application that uses a plugin system?? Last time I integrated parts of JEdit into an application I won't say it was too tough but it wasn't that simple even if I believe that JEdit modules are well written most of the time.&lt;br /&gt;&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/18565477-593257003015184622?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/593257003015184622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=593257003015184622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/593257003015184622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/593257003015184622'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/09/drinking-huge-cup-of-java.html' title='Drinking a huge cup of Java'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-5891760581434914230</id><published>2008-08-15T16:06:00.000-07:00</published><updated>2008-08-15T16:09:28.968-07:00</updated><title type='text'>VFSJFileChooser 0.0.3 released</title><content type='html'>&lt;a href="http://vfsjfilechooser.sf.net"&gt;VFSJFileChooser&lt;/a&gt; was released today after some additional tests. Nothing much to say, I guess I'll wait for comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-5891760581434914230?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/5891760581434914230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=5891760581434914230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5891760581434914230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5891760581434914230'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/08/vfsjfilechooser-003-released.html' title='VFSJFileChooser 0.0.3 released'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8029431588743134184</id><published>2008-08-12T14:50:00.000-07:00</published><updated>2008-08-12T15:06:58.493-07:00</updated><title type='text'>About VFSJFileChooser 0.0.3</title><content type='html'>I guess I'm ready for the third release of &lt;a href="http://vfsjfilechooser.sourceforge.net/index.html"&gt;VFSJFileChooser&lt;/a&gt; thanks to Stephan Schuster. He helped a lot for that release(bug reports, patches, suggestions). I'll probably release tomorrow after few tests.&lt;br /&gt;&lt;br /&gt;Here is the changelog:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;One noticeable feature is speed&lt;/span&gt; :-). VFSJFileChooser was too slow I.M.H.O.&lt;/li&gt;&lt;li&gt;Navigation icons are "always" visible now. They didn't show when the java look and feel set, didn't derive from MetalLookAndFeel. I borrowed some icons from &lt;a href="http://tango.freedesktop.org/Tango_Icon_Gallery"&gt;Tango&lt;/a&gt; and &lt;a href="http://www.famfamfam.com/lab/icons/silk/"&gt;famfamfam&lt;/a&gt; which are now the default icons used.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Bug fixes&lt;/span&gt; for directory selection among other things&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The VFSUtils class supports the methods setFileSystemManager and setFileSystemOptions. You can set those values at anytime. when the VFSJFileChooser class is instanciated, it checks if VFSUtils has a filesystemmanager set, if not it creates one. Files are always resolved with the FileSystemOptions object in VFSUtils.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Upgrade to webdavclient4j&lt;/span&gt; (&lt;a class="moz-txt-link-freetext" href="http://webdavclient4j.sf.net/"&gt;http://webdavclient4j.sf.net&lt;/a&gt;) as Jakarta Slide is dead.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Cleaner but incompatible API&lt;/span&gt; (Enums instead of int fields) : I started to refractor code here and there. I am making full use of JDK5 as VFSJFileChooser is not compatible with jdk14 and older releases. Enums are introduced for few classes which breaks the    API. The method setFileselectionMode of VFSJFileChooser now accepts an Enum as parameter. The methods "showOpenDialog" and "showSaveDialog" return an Enum too.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Sorting support&lt;/span&gt; : The details table has now sorting support again in the jdk5 branch. The jdk5 branch is the most up to date(patches, general improvements, etc.). The jdk5 will become the default branch. I now develop on jdk5 to ensure code compatibility.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The Windows look is still not supported. I'll look at it and see what  can be done. For now, I only have my old laptop running Linux so I can't  really work on it. Any help in that regard would be appreciated.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/SKIJckkVdrI/AAAAAAAAAIM/jupAuNJQfDg/s1600-h/vfsjfilechooser-dev.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/SKIJckkVdrI/AAAAAAAAAIM/jupAuNJQfDg/s320/vfsjfilechooser-dev.png" alt="" id="BLOGGER_PHOTO_ID_5233756103415002802" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8029431588743134184?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8029431588743134184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8029431588743134184' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8029431588743134184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8029431588743134184'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/08/about-vfsjfilechooser-003.html' title='About VFSJFileChooser 0.0.3'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/SKIJckkVdrI/AAAAAAAAAIM/jupAuNJQfDg/s72-c/vfsjfilechooser-dev.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3207725587450331669</id><published>2008-07-31T14:50:00.000-07:00</published><updated>2008-07-31T15:03:28.057-07:00</updated><title type='text'>About XPontus and VFSJFileChooser</title><content type='html'>Lately, I keep receiving questions about VFSJFileChooser and XPontus. Even if I didn't answer, I did read all the emails. I thank you all for your interest and your comments.&lt;br /&gt;&lt;br /&gt;I have started to relocate to Toronto and I am still looking for a new job which is my primary focus right now. I am still looking at XPontus and VFSJFileChooser APIs time to time(the good, the bad and the ugly).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;I intend to work again on those projects as soon as I'll become professionaly stable again.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thank you for understanding that.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3207725587450331669?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3207725587450331669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3207725587450331669' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3207725587450331669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3207725587450331669'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/07/about-xpontus-and-vfsjfilechooser.html' title='About XPontus and VFSJFileChooser'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3047599664791510338</id><published>2008-06-05T04:05:00.000-07:00</published><updated>2008-11-16T09:22:53.328-08:00</updated><title type='text'>Upcoming VFSJFileChooser release</title><content type='html'>I've been trying to make VFSJFileChooser compatible with jdk 1.5 lately. Know bugs  have been fixed. There's no sorting for now in the details view, but the rest is working well.&lt;br /&gt;&lt;br /&gt;SwingUtilities.getWindowAncestor seems buggy in jdk5 SwingUtilities.getWindowAncestor(Component ComponentThatCouldBeAFrame) seems have issues. Trying to open the file dialog was throwing null pointer exceptions in jdk5. I needed to make another check to see if the component is a frame before creating and displaying the file chooser dialog with jdk5.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;        Window window = SwingUtilities.getWindowAncestor(parent);&lt;br /&gt;&lt;br /&gt;        if (window == null)&lt;br /&gt;        {&lt;br /&gt;            if (parent instanceof Window)&lt;br /&gt;            {&lt;br /&gt;                window = (Window) parent;&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                window = new Frame();&lt;br /&gt;            }&lt;br /&gt;             dialog = new JDialog((Frame) window, title, true);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        else if (window instanceof Frame)&lt;br /&gt;        {&lt;br /&gt;            dialog = new JDialog((Frame) window, title, true);&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            dialog = new JDialog((Dialog) window, title, true);&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I would like to avoid maintaining 2 branches if possible. There are lots of things that are easily done with jdk6 whereas in jdk5 additional classes are necessary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3047599664791510338?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3047599664791510338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3047599664791510338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3047599664791510338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3047599664791510338'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/06/upcoming-vfsjfilechooser-release.html' title='Upcoming VFSJFileChooser release'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2298409939201973219</id><published>2008-05-19T03:46:00.000-07:00</published><updated>2008-05-19T06:00:47.600-07:00</updated><title type='text'>OSGI bundles packaging and deployment</title><content type='html'>I created my first non trivial swing application based on &lt;a href="http://en.wikipedia.org/wiki/OSGi"&gt;OSGI&lt;/a&gt;.  I deployed it on &lt;a href="http://felix.apache.org/"&gt;Apache Felix&lt;/a&gt; and &lt;a href="http://www.knopflerfish.org/"&gt;Knopflerfish&lt;/a&gt; for testing purposes.&lt;br /&gt;&lt;br /&gt;The swing application has about 130 classes, not huge classes. I tried to make a good design using couple of interfaces with some abstractions(docking framework abstraction, file system abstraction, gui components abstraction, plugin manager abstraction, etc.). After few days, I was satisfied with the design and started coding few concrete classes. I made sure that most of the code could be reused quickly in a non-OSGI environment.&lt;br /&gt;&lt;br /&gt;In 4 days, I finished programming the core of the application. The only thing left was the gui main window. I wanted to use a docking framework(LGPL, BSD or Apache License).&lt;br /&gt;&lt;br /&gt;Using docking frameworks such as &lt;a href="http://mydoggy.sourceforge.net/"&gt;MyDoggy&lt;/a&gt; or &lt;a href="https://flexdock.dev.java.net/"&gt;Flexdock&lt;/a&gt; in an OSGI environment looks complicated. Most of those libs make some static calls while trying to resolve images or configuration files. Sometimes some properties or other resources are stored in the META-INF folder of the jar files.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MyDoggy&lt;/span&gt;&lt;br /&gt;I was surprised to see that, as the library wasn't finding its default configuration file(from the classloader), it was looking for it in my home folder. There's no way to set the default properties using a static method without messing with the source code of MyDoggy (or maybe I didn't see a way).&lt;br /&gt;With Apache Felix I couldn't import sun.awt package used in MyDoggy but I was able to do it with knopflerfish.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flexdock&lt;/span&gt;&lt;br /&gt;With Flexdock, I had an infinite loop, an exception which was thrown all the time, preventing the program to run. It was complaining about not being able to create an instance of the persistencemanager or something like that. Must have been some class loading issues using reflection calls.&lt;br /&gt;&lt;br /&gt;I decided to use few JSplitPane at last and I could see the main window of the application, after few hours spent looking into those docking frameworks source code.&lt;br /&gt;&lt;br /&gt;To test quickly I was using Apache Felix(embedded) in the application. I had my activators written but no OSGI manifests yet. Later I saw the bundles issues. I didn't want to embed some dependencies directly in my bundles. So I started browsing the web for "osgi bundles" and chatting on IRC. Some guys told me to look at Eclipse Orbit.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.eclipse.org/orbit/"&gt;Eclipse Orbit&lt;/a&gt; is a community effort to create OSGI bundles for common third party librairies. It's a lot of work. I packaged few libraries and it took a bit to import and export the right packages.&lt;br /&gt;&lt;br /&gt;The last thing left before going on with that swing application, is to add some listeners so that when a bundle is removed/updated, the GUI and some non visual parts are notified to update themselves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2298409939201973219?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2298409939201973219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2298409939201973219' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2298409939201973219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2298409939201973219'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/05/osgi-bundles-packaging-and-deployment.html' title='OSGI bundles packaging and deployment'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-6921078892393423981</id><published>2008-05-14T11:02:00.000-07:00</published><updated>2008-05-14T11:22:19.810-07:00</updated><title type='text'>What makes an API great?</title><content type='html'>After few years of Java programming, I improved slower than I expected but still... When designing complex software which needs to be reused, I still find it difficult to make quick and "good" choices without adding too much complexity.&lt;br /&gt;&lt;br /&gt;In the last branch of &lt;a href="http://xpontus.sf.net"&gt;XPontus XML Editor&lt;/a&gt;(major refractoring), I had a dilemma:&lt;ul&gt;&lt;li&gt;Release soon : couple of patches and dirty classes which do the job&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Wait 4 or 5 months to be ready : clean up the code, perform thorough testing, remove unused classes, add or redesign interfaces, etc.&lt;/li&gt;&lt;/ul&gt;I choose to release early and fix what I could see or had time to fix. One month after the release, I was like "why did I do it that way? what is that useless piece of code doing over here, etc."&lt;br /&gt;&lt;br /&gt;IMHO, an API is great when it's&lt;br /&gt;&lt;ul&gt;&lt;li&gt;simple&lt;/li&gt;&lt;li&gt;useful &lt;/li&gt;&lt;li&gt;flexible(without adding too much complexity when it's unnecessary). &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I tend to prefer APIs which expose few interfaces, abstract classes and some concrete classes. Complex applications APIs without/with few interfaces, are somehow difficult to maintain, refractor, make evolve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-6921078892393423981?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/6921078892393423981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=6921078892393423981' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6921078892393423981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6921078892393423981'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/05/what-makes-api-great.html' title='What makes an API great?'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-9002855238308449467</id><published>2008-05-05T12:46:00.000-07:00</published><updated>2008-05-05T13:46:46.143-07:00</updated><title type='text'>Playing with Apache Felix</title><content type='html'>I'm trying to learn more about OSGI and become proefficient with it quickly. Neil Bartlett is writing a &lt;a href="http://neilbartlett.name/blog/osgibook/"&gt;book about OSGI&lt;/a&gt;. It's available for free but it's not completed yet.&lt;br /&gt;&lt;br /&gt;I looked at IPOJO from &lt;a href="http://felix.apache.org"&gt;Apache Felix&lt;/a&gt; and managed to create a simple application with it. I think I'll start with &lt;span style="font-style: italic;"&gt;plain OSGI  programming&lt;/span&gt; first. Once I get it right, it will be easier to know what IPOJO or other tools can do for me and when it's better not to use them.&lt;br /&gt;&lt;br /&gt;For example to build a simple GUI with plugins support using OSGI, the only thing I need to do if I understand,  is :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create few services,  one can think about them as extension points&lt;/li&gt;&lt;li&gt;Create BundleActivators for each plugin&lt;/li&gt;&lt;li&gt;Register couple of services and use some ServiceTrackers&lt;/li&gt;&lt;li&gt;Layout and display your GUI application when all the bundles are activated&lt;/li&gt;&lt;li&gt;Launch background services if their startup needed to be delayed&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I downloaded the &lt;a href="http://sip-communicator.org/"&gt;SIP communicator&lt;/a&gt;'s code. It's an audio/video Internet phone and instant messenger using Apache Felix. The graphical interface is nice and the code is "clean enough", quite good IMHO. I found a little bit strange/unconventional the way they package bundles. It seems that they build bundles from some packages/classes using an Ant build script, in a single project. I believe in an IDE it would look like a project with multiple source folders and a jar target for each source folder.&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://xpontus.sf.net"&gt;XPontus XML Editor&lt;/a&gt; I have about 18 plugins which could become bundles. I started cleaning up some code. One shall never hurry too much to release, patch code here and there, leave too many unused packages, because the pain comes soon enough when you need to do some refractorings... .&lt;br /&gt;&lt;br /&gt;In XPontus, I have 1 master project and about 30 sub-projects. Well it can be difficult to manage too, but I don't have to create many ant targets/tasks to build specific jars.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Project structure overview&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  xpontus_core&lt;/li&gt;&lt;li&gt; etc.&lt;/li&gt;&lt;li&gt;  indentation_plugin(dummy maven pom project)&lt;/li&gt;&lt;/ul&gt;                  -&gt; xml_indentation_plugin(sub-project, maven jar project)&lt;br /&gt;                  -&gt; html_indentation_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;plugin&lt;/span&gt; (sub-project, maven jar project)&lt;br /&gt;&lt;br /&gt;The annoyance with a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;plugin&lt;/span&gt; architecture is about the deployment, but mostly the packaging. Most of the time the plugin framework or OSGI framework you'll find has a console or a main class from where you can launch the bundles/plugins. Usually in a big application, you want total control and a customized behaviour which means a custom launcher to embed the plugin framework or the OSGI framework.&lt;br /&gt;&lt;br /&gt;Let's say I have a bundle called bundle0. I created it in Eclipse, I have few jars as dependencies, etc. How do you auto-package all that with minimal effort(zip file with the bundle0.jar, a lib directory holding the dependencies)?&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://xpontus.sf.net/index.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;XPontus&lt;/span&gt; XML Editor&lt;/a&gt; the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;plugins&lt;/span&gt; have an "Eclipse like" folder structure&lt;br /&gt;- com.mycompany.plugin&lt;br /&gt;  * &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;plugin&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;xml&lt;/span&gt;&lt;br /&gt;  * lib(folder containing the jars)&lt;br /&gt;&lt;br /&gt;Every time I want to deploy a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;plugin&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I create a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;plugin&lt;/span&gt; folder with a unique id&lt;/li&gt;&lt;li&gt;I add the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;plugin&lt;/span&gt; descriptor&lt;/li&gt;&lt;li&gt;Create a lib folder with all the jars needed by the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;plugin&lt;/span&gt;&lt;/li&gt;&lt;li&gt;I zip the folder and it could be ready to be deployed.&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/18565477-9002855238308449467?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/9002855238308449467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=9002855238308449467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/9002855238308449467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/9002855238308449467'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/05/playing-with-apache-felix.html' title='Playing with Apache Felix'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8246714098184334126</id><published>2008-05-01T17:34:00.000-07:00</published><updated>2008-05-01T17:37:19.748-07:00</updated><title type='text'>VFSJFileChooser is out</title><content type='html'>I uploaded the new release of &lt;a href="http://vfsjfilechooser.sf.net/index.html"&gt;VFSJFileChooser&lt;/a&gt; this evening. It will be available on all Sourceforge mirrors probably tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8246714098184334126?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8246714098184334126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8246714098184334126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8246714098184334126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8246714098184334126'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/05/vfsjfilechooser-is-out.html' title='VFSJFileChooser is out'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-1646393616774844401</id><published>2008-04-29T17:25:00.000-07:00</published><updated>2008-04-30T16:16:10.762-07:00</updated><title type='text'>Preparing the new VFSJFileChooser release</title><content type='html'>&lt;a href="http://vfsjfilechooser.sf.net/index.html"&gt;VFSJFileChooser&lt;/a&gt; will be out soon.&lt;br /&gt;&lt;br /&gt;Here is the changelog :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sort file by names : Some patches were submitted to sort file by names.&lt;/li&gt;&lt;li&gt;The "home" button will not bring you back anymore to your local home folder if you're browsing a remote directory.&lt;/li&gt;&lt;li&gt;A details view is being added as a complement to the existing list view&lt;/li&gt;&lt;/ul&gt;There are still some issues when you choose the native look and feel with  : UImanager.setlookandfeel&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/SBe96QyNzGI/AAAAAAAAAIE/B2z86cfYEf0/s1600-h/vfsjfilechooser-dev.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/SBe96QyNzGI/AAAAAAAAAIE/B2z86cfYEf0/s320/vfsjfilechooser-dev.png" alt="" id="BLOGGER_PHOTO_ID_5194829503830805602" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-1646393616774844401?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/1646393616774844401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=1646393616774844401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1646393616774844401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1646393616774844401'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/04/preparing-new-vfsjfilechooser-release.html' title='Preparing the new VFSJFileChooser release'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/SBe96QyNzGI/AAAAAAAAAIE/B2z86cfYEf0/s72-c/vfsjfilechooser-dev.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2911543168188676037</id><published>2008-04-26T16:26:00.000-07:00</published><updated>2008-04-27T07:43:20.789-07:00</updated><title type='text'>A closer look at OSGI</title><content type='html'>I was reading about &lt;a href="http://en.wikipedia.org/wiki/OSGi"&gt;OSGI&lt;/a&gt; and I found out that it's not as complicated as it looks like. As I am not an Eclipse fan, I tried &lt;a href="http://www.knopflerfish.org/"&gt;Knopflerfish&lt;/a&gt; and &lt;a href="http://felix.apache.org/"&gt;Apache Felix&lt;/a&gt;. I might use OSGI in my next projects if they're big enough.&lt;br /&gt;&lt;br /&gt;After half an hour, I was able to get a simple bundle running with Apache Felix. I wrote a simple program embedding Apache Felix and created another project which provided a bundle.&lt;br /&gt;&lt;br /&gt;My main interest in OSGI is dependencies management handling :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Service A is started&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Service B depends on Service A&lt;/li&gt;&lt;ul&gt;&lt;li&gt;if service A is not available -&gt; do not start service B&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;if service A is available -&gt; start the service B and register it&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2911543168188676037?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2911543168188676037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2911543168188676037' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2911543168188676037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2911543168188676037'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/04/closer-look-at-osgi.html' title='A closer look at OSGI'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7196281765036190573</id><published>2008-04-20T06:21:00.000-07:00</published><updated>2008-04-20T06:46:22.802-07:00</updated><title type='text'>Java Enterprise Edition</title><content type='html'>Most of small companies don't use Java Enterprise Edition, even if few thousands guys need to access an application at the same time, even if the application needs to support transactions,  to be scalable, etc.  They already have deployed "medium to big" successful applications using Tomcat and J2SE, so why bother?&lt;br /&gt;&lt;br /&gt;   It's difficult to find very young people(less than 30) which have a J2EE knowledge. You don't learn J2EE in a technical school, you don't learn it at University and you probably won't learn it by working in a small company. IMHO, the general opinion about J2EE is that "It's interesting, looks complicated too... and I probably don't need it, (solo talking it's probably worth not my time and my salary learning it.)". When in a small company a guy has a good J2EE working knowledge, there is probably a big chance, that he's the only one who will create and deploy enterprise applications and hopefully transfer all his knowledge to others someday.&lt;br /&gt;&lt;br /&gt;   I looked only once at Java Enterprise Edition few years ago. Going by the book, and doing few examples, I was able to get started using notepad and standard Java tools. The experience was painful with Corba, RMI, etc. Few days ago, I had a look at JavaEE 5. It looks nice and quite simple. However it seems that most businesses are still  using EJB 2.1 and not 3.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7196281765036190573?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7196281765036190573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7196281765036190573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7196281765036190573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7196281765036190573'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/04/java-enterprise-edition.html' title='Java Enterprise Edition'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-9110028191650898683</id><published>2008-04-08T02:37:00.001-07:00</published><updated>2008-04-08T03:05:38.320-07:00</updated><title type='text'>XPontus - Schema completion</title><content type='html'>Schema completion support has been improved... It was kind &lt;em&gt;of not working&lt;/em&gt; in XPontus. &lt;div&gt;   A schema location declaration contains most of the time one or multiple uri references(namespaces and schema locations) with some whitespaces, carriage returns, ... &lt;/div&gt;&lt;div&gt;   Now XPontus is able to resolve each schema url locations when they end with &lt;strong&gt;.xsd&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Latest screenshot&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_LZsdvh7kOqM/R_s-Ur-Pm2I/AAAAAAAAAH8/TPA19Ad2xeY/s1600-h/snapshot.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5186807920969358178" style="margin: 0px 10px 10px 0px; float: left;" alt="" src="http://3.bp.blogspot.com/_LZsdvh7kOqM/R_s-Ur-Pm2I/AAAAAAAAAH8/TPA19Ad2xeY/s320/snapshot.png" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-9110028191650898683?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/9110028191650898683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=9110028191650898683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/9110028191650898683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/9110028191650898683'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/04/xpontus-schema-completion.html' title='XPontus - Schema completion'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LZsdvh7kOqM/R_s-Ur-Pm2I/AAAAAAAAAH8/TPA19Ad2xeY/s72-c/snapshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-1858121425706626975</id><published>2008-04-06T12:05:00.001-07:00</published><updated>2008-04-06T12:30:54.215-07:00</updated><title type='text'>Working on XPontus 1.0.0.2</title><content type='html'>&lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus&lt;/a&gt; 1.0.0.2 is coming up. I've fixed few issues this week-end.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;General interface problems&lt;/strong&gt;&lt;br /&gt;   Sometimes the file chooser dialog can take a while to load(I only noticed that problem under Windows). That issue has been adressed lots of time to Sun. I don't think it's gonna be fixed definitely any time soon. It seems that the file chooser freezes when you have some zip files on your desktop and it can take up to 10 seconds to show on a Quad Core...  Can you tell a user who reports the bug "Damn, you've got lots of zip files on your desktop, clean it up!". That would be funny...&lt;br /&gt;&lt;br /&gt;I am not sure that I'll replace the file chooser by &lt;a href="http://vfsjfilechooser.sourceforge.net/"&gt;VFSJFileChooser&lt;/a&gt;. If I don't do it well, it will bloat the program(5 to 6 additional libraries). Letting the user chooser between the default file chooser(better OS integration) and &lt;strong&gt;VFSJFileChooser(remote files able)&lt;/strong&gt; would involve rewriting partially many classes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Windows vista GUI issues&lt;/strong&gt;&lt;br /&gt;   The tab names are now visible under Windows Vista. The gray rectangle is still visible in the menubar. I could create a special layout for the menubar or make it a java.awt.GridLayout(ugly but no gray rectangle) to solve the issue. The menubar problem is a swing related issue, not XPontus' fault.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The code completion is more usable&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Here is the new use case :&lt;br /&gt;&lt;br /&gt;Let's say you trigger an element completion by typing "&lt;" in a xsl stylesheet document&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Suppose you were getting typing &lt;span style="color:#339999;"&gt;xsl:apply-te&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;That would select &lt;span style="color:#3366ff;"&gt;xsl:apply-templates&lt;/span&gt; in the list&lt;/li&gt;&lt;li&gt;Then you change your mind and select &lt;span style="color:#3366ff;"&gt;xsl:apply-import&lt;/span&gt; and press enter&lt;/li&gt;&lt;li&gt;The text inserted in the document is &lt;span style="color:#009900;"&gt;xsl:apply-te&lt;/span&gt; and it will now be converted to &lt;span style="color:#6633ff;"&gt;xsl:apply-import&lt;/span&gt; instead of &lt;span style="color:#ff0000;"&gt;xsl:apply-teport&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;XPath improvements&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The xpath plugin couldn't display a boolean value or a number value. For example &lt;em&gt;count(//node)&lt;/em&gt; would throw an exception and now it returns the number of node found as text.&lt;/li&gt;&lt;li&gt;XPath 2.0 support has been added&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I didn't fix the architecture problems. I will address that matter when the version 1.0.0 of XPontus will be considered as stable. Rewrite things here and there, without breaking too much code.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;What's next &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I will think about the plugins manager next week and give myself sometimes to do it well. I don't it to be complicated, I just want it to work as well as possible for the next release. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-1858121425706626975?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/1858121425706626975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=1858121425706626975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1858121425706626975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1858121425706626975'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/04/working-on-xpontus-1002.html' title='Working on XPontus 1.0.0.2'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-1730713122908057263</id><published>2008-04-04T18:04:00.000-07:00</published><updated>2008-04-04T18:09:34.523-07:00</updated><title type='text'>Random talk[SPECIAL]</title><content type='html'>Nowadays, I tend to think a lot about that Albert Einstein quote&lt;br /&gt;&lt;strong&gt;You have to learn the rules of the game. And then you have to play better than anyone else.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It seems to very true in most circumstances...(work, girls, normal life stuff...) Programmer with real skills or programmer which seems to have great skills...?&lt;br /&gt;&lt;br /&gt;It's all about that they think you are and what they think you know... That's what a guy told me during my first year at university. The guy didn't know anything but he truely believed that he deserved a great income....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-1730713122908057263?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/1730713122908057263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=1730713122908057263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1730713122908057263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1730713122908057263'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/04/random-talkspecial.html' title='Random talk[SPECIAL]'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-108922471130332965</id><published>2008-04-04T05:11:00.001-07:00</published><updated>2008-04-13T00:39:42.813-07:00</updated><title type='text'>XPontus 1.0.0.2 will be available soon</title><content type='html'>I'll release a 1.0.0.2 version of &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt; sometime in May. I got a copy of Windows Vista installed and I've been doing some bug fixes for Windows Vista.&lt;br /&gt;&lt;br /&gt;I'll try to dedicate 3 days to complete and test the plugins manager(Install/Uninstall). I believe it's possible. If I come up with a good strategy, the rest will be easy.&lt;br /&gt;&lt;br /&gt;The roadmap for 1.0.02 :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install/Uninstall features in the plugins manager&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tab names visibility in Windows Vista&lt;/li&gt;&lt;li&gt;Printing isssues on windows vista&lt;/li&gt;&lt;li&gt;Fix indentation which is sometimes crashing the editor when the XML is not well-formed&lt;/li&gt;&lt;li&gt;&lt;a href="http://vfsjfilechooser.sourceforge.net/index.html"&gt;VFSJFileChooser&lt;/a&gt; integration&lt;/li&gt;&lt;li&gt;A minor rewrite of the XSL transformation to specify a transformation type(XQuery for example)&lt;/li&gt;&lt;li&gt;file extensions registration to mime types&lt;/li&gt;&lt;li&gt;XPath 2.0 plugin&lt;br /&gt;&lt;/li&gt;&lt;li&gt;file encoding issues&lt;/li&gt;&lt;li&gt;Update the user guide and the developer guide&lt;br /&gt;&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/18565477-108922471130332965?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/108922471130332965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=108922471130332965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/108922471130332965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/108922471130332965'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/04/xpontus-1002-will-be-available-soon.html' title='XPontus 1.0.0.2 will be available soon'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4528939206770944371</id><published>2008-03-28T04:50:00.001-07:00</published><updated>2008-03-28T05:03:19.055-07:00</updated><title type='text'>Fixing bugs and design errors in XPontus</title><content type='html'>I made lots of design errors in the last release of &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt;. I didn't have time to rewrite many parts of the application, it would have delayed the 1.0.0.1 release.  I'll try to fix all reported bugs for the 1.0.0.2 version. In the next release, I'll switch from &lt;a href="http://maven.apache.org"&gt;Maven&lt;/a&gt; to &lt;a href="http://ant.apache.org/ivy/"&gt;Apache Ivy&lt;/a&gt; for dependencies management. Ivy is simple and anyone will be able to open XPontus if the &lt;a href="http://www.jaya.free.fr/ivyde/download.html"&gt;ivyIDE&lt;/a&gt; plugin is installed in &lt;a href="http://eclipse.org"&gt;Eclipse&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've been thinking about the plugin manager lately. I might finish it sooner than expected.&lt;br /&gt;&lt;br /&gt;Lots of people have been asking me if I wrote the plugin framework that XPontus is using. I didn't. Yes, I could have wrote one, but there are more and more plugin frameworks available now. Lots of projects have developed their own plugin framework, made it evolve over the years, and they have been happy with it. As OSGI is more popular among common Java developers, guys are looking at Eclipse equinox implementation or Apache Felix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4528939206770944371?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4528939206770944371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4528939206770944371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4528939206770944371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4528939206770944371'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/fixing-bugs-and-design-errors-in.html' title='Fixing bugs and design errors in XPontus'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-5843283451441945786</id><published>2008-03-26T19:42:00.000-07:00</published><updated>2008-03-26T19:56:22.591-07:00</updated><title type='text'>Multi-platform deployment</title><content type='html'>Java is multi-platform but Java applications don't behave the same on different OS. I was disappointed to see that XPontus is ugly on Vista. The tab names are in white color, while Windows Vista use translucent windows so... the tab names are almost invisible...&lt;br /&gt;&lt;br /&gt;Is it reasonable to build installers for platforms I can't even test on??When a user is telling me, on windows vista I see that... On Vista, multiple pages printing doesn't work... what can I do?? Most of the time I run Linux, I do have Windows installed to perform XPontus tests but I don't really use Windows that often...&lt;br /&gt;&lt;br /&gt;Sometimes I have an idea about what a problem is related to, on Vista or Mac but still... I don't have a Mac, I don't have Vista(which seems to be used a lot now)... I can't test on it&lt;br /&gt;&lt;br /&gt;So basically I'm running Debian Linux all the time, building installers for OS which can run Java without testing it on those platforms.&lt;br /&gt;&lt;br /&gt;I should probably add a notice on the XPontus homepage &lt;span style="font-weight: bold;"&gt;NEVER BEEN TESTED ON WINDOWS VISTA AND MAC&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-5843283451441945786?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/5843283451441945786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=5843283451441945786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5843283451441945786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5843283451441945786'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/multi-platform-deployment.html' title='Multi-platform deployment'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3841194558095969748</id><published>2008-03-25T09:44:00.001-07:00</published><updated>2008-03-25T10:36:37.989-07:00</updated><title type='text'>What build tool to use for java development?</title><content type='html'>People who checkout the &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt;'s code in the subversion repository expect to open it as a simple Java project in their Java IDE. Well, it's not a simple Java project, it's a &lt;span style="font-weight: bold; font-style: italic;"&gt;Java maven based project&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;   I use &lt;a href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt; and I don't have any problems with &lt;a href="http://maven.apache.org"&gt;Maven&lt;/a&gt;. &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; and &lt;a href="http://www.jetbrains.com/idea/"&gt;IDEA&lt;/a&gt; plugins for Maven are "ALMOST USELESS" compared to what Netbeans provides in terms of usability and flexibility...&lt;br /&gt;&lt;br /&gt;I've been more than happy with Maven( manage multiple projects and their dependencies, compile, run , test the applications, generate some websites, etc.)&lt;br /&gt;&lt;br /&gt;  I do believe that simple Java projects or simple multi-projects ("with few projects as dependencies") don't require an advanced build tool : use your IDE to manage the java classpath or create a simple &lt;a href="http://ant.apache.org/"&gt;Ant&lt;/a&gt; build file and you're done.&lt;br /&gt;&lt;br /&gt;Lately, I've been looking at &lt;a href="http://ant.apache.org/ivy/index.html"&gt;Apache Ivy&lt;/a&gt; as a replacement for Maven to build XPontus. Maven is preventing new members to get started quickly(learn maven, understand its usage in XPontus, etc.). I don't want to have to say all the time something like "Use Netbeans to ease the pain if you never used Maven..."&lt;br /&gt;&lt;br /&gt;I don't mind using IVY or Apache Ant when starting a Java project. However if the project is already entirely built using Maven, it sucks to switch to another build system.&lt;br /&gt;&lt;br /&gt;Personally, I think about switching toIvy as a regression at the moment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Most IDEs don't have a "fantastic IVY support". It does work but that's it.&lt;/li&gt;&lt;li&gt;If most Java developers don't use Maven, do they use Ivy? I don't think so... The learning curve is shorter than Maven but still...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ivy won't do the Maven black magic :-( ... (build some website pages, etc.)&lt;/li&gt;&lt;li&gt;Multiproject support?? Will I have to go back to the standard way of creating multi-projects in popular Java IDES?? I'll need to read about that.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The creator of IVY made some intersting comments on IVY vs Maven :&lt;br /&gt;&lt;a href="http://xhab.blogspot.com/2006/09/antivy-vs-maven-my-biased-opinion.html"&gt;http://xhab.blogspot.com/2006/09/antivy-vs-maven-my-biased-opinion.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;New members of XPontus team will probably be able to use Apache Ivy easily. I guess I'll need to add in capital letters "YOU NEED THE IVY IDE PLUGIN TO OPEN THE PROJECT". I don't really expect lots of people to read it or to read instructions on how to open a XPontus as a Java project. Most developers know how to open a standard Java Project in an IDE, so they'll probably think "yeah must be some newbie stuff..."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3841194558095969748?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3841194558095969748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3841194558095969748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3841194558095969748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3841194558095969748'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/what-build-tool-to-use-for-java.html' title='What build tool to use for java development?'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3286908712021048683</id><published>2008-03-20T16:22:00.000-07:00</published><updated>2008-03-20T16:43:24.666-07:00</updated><title type='text'>What happen when new users join a team??</title><content type='html'>As some users are joining &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor project&lt;/a&gt;, I have to write quickly a readable and simple documentation.&lt;br /&gt;     Who will bother read 500 pages of text before programming? Not me at least!! I have used Hibernate but never read the whole manual. Same goes with other technologies I have used(Apache Cocoon, Wicket, JSF, etc...)&lt;br /&gt;&lt;br /&gt;    I assumed that most people in the industry use &lt;a href="http://maven.apache.org"&gt;Maven &lt;/a&gt;which is not true. I work for a non lucrative company and we use maven a lot. Most people don't use Maven at all, they know about it, they know what some guys have been doing with it, but that's all. Well, I can understand them, why bother with a tool if you feel you don't need it?&lt;br /&gt;&lt;br /&gt;   I have been using Maven for about 4 years. It has its pros and cons. I think that a simple Java project don't require Maven. It's just overkill.&lt;br /&gt;&lt;br /&gt;With XPontus new members, I got to fill the gap between what I know and what others don't:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The learning curve of newcomers shouldn't be high.&lt;/li&gt;&lt;li&gt;The unfinished developer guide should be done and should almost make it look easy&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Basically, I use Maven at 10% of its capabilities. With Apache Maven I do the following steps :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Compile and run the program(manage dependencies too)&lt;/li&gt;&lt;li&gt;Generate the website&lt;/li&gt;&lt;li&gt;Generate the java web start installer and sign the jar files&lt;/li&gt;&lt;/ul&gt;I could also commit to subversion, deploy the website using SFTP, all that with maven, but I don't.&lt;br /&gt;&lt;br /&gt;I noticed that Eclipse has a poor maven support. I use Eclipe time to time but that's it. I switched to Netbeans 2 years ago. Netbeans has great maven support compared to others IDEs.&lt;br /&gt;   So when a guy, is telling me "what do I do in Eclipse to do...", in Netbeans it would be a simple click... I might need to switch to Eclipse to come up with good answers as most people are using Eclipse.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   I am very excited that some guys are showing interest in XPontus. So what I though was clear in my mind, I have to explain to others and be patient. They have to be patient with themselves too!&lt;br /&gt;&lt;br /&gt;    XPontus is not like Eclipse, but I don't think average guys could code it in a week. I made some choices which are sometimes good, but sometimes they have limitations. I will rewrite some parts of XPontus when I'll feel that the team has a good understanding of XPontus architecture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3286908712021048683?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3286908712021048683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3286908712021048683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3286908712021048683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3286908712021048683'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/what-happen-when-new-users-join-team.html' title='What happen when new users join a team??'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-6153934477649427001</id><published>2008-03-19T05:08:00.000-07:00</published><updated>2008-03-19T05:17:49.837-07:00</updated><title type='text'>XPontus XML Editor 1.0.0.1 is out</title><content type='html'>I released &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt; yersterday night. I didn't release it on monday as planned. I was very tired. I was  like don't test like a blind man, don't write bullshit to announce the release, anything can happen if I'm too worn out.&lt;br /&gt;&lt;br /&gt;   Now is the time to complete the documentation(user guide, developer guide), keep on testing, etc. Can I write a comprehensive developer guide?  &lt;br /&gt;&lt;br /&gt;   I'll take a short break(1 week or less) to look at XPontus from a distance. What did I miss? Is it as stable as I thought it was when releasing? Are there too many bugs? Is it usable? What can be done to improve the architecture....?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-6153934477649427001?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/6153934477649427001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=6153934477649427001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6153934477649427001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6153934477649427001'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/xpontus-xml-editor-1001-is-out.html' title='XPontus XML Editor 1.0.0.1 is out'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-331184574537229243</id><published>2008-03-16T13:11:00.000-07:00</published><updated>2008-03-16T13:38:10.621-07:00</updated><title type='text'>Too many bugs in XPontus</title><content type='html'>Will I release, should I release now? I've been delaying it forever...&lt;br /&gt;&lt;br /&gt;I found so many bugs in &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XPontus&lt;/span&gt;&lt;/a&gt; today.... Lots of people have been helping me test the software. There are lots of usability issues. I know that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XPontus&lt;/span&gt; is not at the same level than XML Spy for example, but still... There are some obvious problems I didn't see. Instead of testing the application all the time by myself, I should ask lots of people  to help me test it...  Couple of guys have been trying the Java Web Start snapshots, but they don't always fit with the "normal user profile" because :&lt;br /&gt;- They understand or can evaluate the amount of work behind XPontus features and architecture. They may have already encountered the issues that I face.&lt;br /&gt;- They are used to XML technologies&lt;br /&gt;&lt;br /&gt;Here's what was done today:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I tested few installers. I had a silly mistake in the user settings , preventing the application to start even when the installation was &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;successful&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I've been fixing bugs in the schema generator/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;converter&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;plugin&lt;/span&gt;. That &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;plugin&lt;/span&gt; takes XML or a Schema/DTD as input and generate a schema(relax &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;ng&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;dtd&lt;/span&gt; or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;xml&lt;/span&gt; schema). Because it can perform generation or conversion between  DTD and other &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;schemas&lt;/span&gt;, I used the name "schema generator/converter plugin". It can be unintuitive for lots of people.&lt;/li&gt;&lt;li&gt;The find/replace dialog was too buggy. I took it from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;&lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;'s&lt;/span&gt; code. I replaced it today by some &lt;a href="http://www.soapui.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;SOAPGui&lt;/span&gt;&lt;/a&gt; code. I adapted it for usability a little bit. It's not perfect, but it does work!&lt;/li&gt;&lt;li&gt;I added a keyboard shortcut to switch between opened documents. "Alt W" will switch between windows(select next document).&lt;/li&gt;&lt;li&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;XPATH&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;textbox&lt;/span&gt; has history support. It remembers up to 10 expressions you type in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;textbox&lt;/span&gt;. The history is cleared when you close the application. Now you can execute an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;XPATH&lt;/span&gt; expression by pressing  the "ENTER" key instead of having to click on the  "Evaluate button" all the time.&lt;/li&gt;&lt;li&gt;When you click on the "insert comment" button or "insert cdata section" button, the editor get the focus back, no need to click again on the document to be able to insert some text.&lt;/li&gt;&lt;/ul&gt;I'll release tomorrow and the version will be called 1.0.0pre1-alpha. I added "alpha" to let the users know it's not a mature version. Things don't always work as expected. There are more features, but with features come bugs.&lt;br /&gt;&lt;br /&gt;I'll keep on fixing bugs, updating the website and the developer guide until tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-331184574537229243?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/331184574537229243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=331184574537229243' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/331184574537229243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/331184574537229243'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/too-many-bugs-in-xpontus.html' title='Too many bugs in XPontus'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-1756820764221902639</id><published>2008-03-14T05:05:00.000-07:00</published><updated>2008-03-14T05:20:37.728-07:00</updated><title type='text'>Under pressure for the new XPontus release</title><content type='html'>I am getting ready to release &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt; next monday : looking here and there, for simple bugs I can fix or forgot to fix, looking at the plugins manager, etc.&lt;br /&gt;&lt;br /&gt;Until next monday, I'll be busy to make sure the software is enough usable and stable so I'll be :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Creating and testing installers for windows, linux, mac os, bsd, unix&lt;/li&gt;&lt;li&gt;Updating the website&lt;/li&gt;&lt;li&gt;Coding utility scripts to automate the release announcement in some forums and mailing lists.&lt;/li&gt;&lt;li&gt;Fixing bugs time to time&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I'll ship all the plugins that I have written and tested enough. So basically, you'll get a big fat and "features-full" version of XPontus. I cannot make a light installer of XPontus as the plugins manager is not enough stable yet. I won't ask all users to open a hidden folder, to copy some zip files and to handle the plugins dependencies logic by themselves.&lt;br /&gt;&lt;br /&gt;I'll also have a java webstart version of XPontus but you'll have to install plugins by hand like in the snapshot version. I hope to come with ideas for the plugins manager soon.&lt;br /&gt;&lt;br /&gt;I feel happy to release, I've been saying "next week, next month" for too long. I would have wanted to do more for that release but it would have taken few others months to achieve some  significant improvements.&lt;br /&gt;&lt;br /&gt;Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-1756820764221902639?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/1756820764221902639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=1756820764221902639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1756820764221902639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1756820764221902639'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/under-pressure-for-new-xpontus-release.html' title='Under pressure for the new XPontus release'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2845882283237767260</id><published>2008-03-11T16:28:00.000-07:00</published><updated>2008-03-11T16:35:32.667-07:00</updated><title type='text'>Them "viagra boys", Them "here's the money man"</title><content type='html'>I didn't know that I would get that much spam on my blog or my sourceforge email account... To those doing that, if you're reading this post :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I don't need viagra, I'm in a great shape,  still young, still full of energy, no issues...&lt;/li&gt;&lt;li&gt;I won some money...??? Well, I could use that cash only if it's real. Trying to lure me is kind of playing with yourself. It's 2008 baby...  I guess I haven't seen it all but I think I saw most of it... But why not try? Short answer : it's a waste of your time and mine.&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/18565477-2845882283237767260?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2845882283237767260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2845882283237767260' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2845882283237767260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2845882283237767260'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/them-viagra-boys-them-heres-money-man.html' title='Them &quot;viagra boys&quot;, Them &quot;here&apos;s the money man&quot;'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-6965298817382762415</id><published>2008-03-09T18:03:00.000-07:00</published><updated>2008-03-09T18:13:55.792-07:00</updated><title type='text'>Releasing next week</title><content type='html'>Next week, I'll start intensive testing of &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt;. I will try to release at the end of the week if possible.&lt;br /&gt;&lt;br /&gt;Some issues persist but I think that the snapshot version is better than the stable one. If I keep on coding and testing, writing documentation, creating new plugins, I guess I'll never be able publish a new version of XPontus. I've been planning the upcoming release for at least 8 months. I guess now is the time.&lt;br /&gt;&lt;br /&gt;I expect plenty of bug reports, constructive comments, nasty critics, but it's all good, it's all fair. It'll help the development of XPontus XML Editor. If you want to contribute, leave me a message at yveszoundi at users dot sf dot net. I try to take my time to write good software, but I could use some help.&lt;br /&gt;&lt;br /&gt;I'll try to find a way to get a hand on a Mac OSX pc to build a dmg installer.&lt;br /&gt;&lt;br /&gt;There will be 5 installers : Windows(standard exe), Linux(rpm, tgz, deb), MacOSX(dmg), Unix(sh) and a crosss-platform installer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-6965298817382762415?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/6965298817382762415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=6965298817382762415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6965298817382762415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6965298817382762415'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/releasing-next-week.html' title='Releasing next week'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4249475439859131506</id><published>2008-03-08T01:15:00.000-08:00</published><updated>2008-03-08T01:29:07.304-08:00</updated><title type='text'>Code completion might be in next release of XPontus!</title><content type='html'>Code completion seems to be working well enough even though there are few bugs. Here is the complete status of the XML code completion plugin.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Code completion creation&lt;/span&gt;&lt;br /&gt;  I need to find a way to check if the schema(dtd/xml schema) location of the document is relative or absolute.  For the moment, the code completion database is only created if the schema location is absolute.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Intelligent completion&lt;/span&gt;&lt;br /&gt;   I am now able to get an "almost reliable" suggestion list for code completion based on element insertion location.  The suggestion list is sorted by name.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The completion window&lt;/span&gt;&lt;br /&gt;  It is very buggy. I get"nasty stuff" inserted when I try to select a suggested element. Sometimes, text is inserted twice or more. The completion doesn't have a scroller to view elements if their name are too long.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Completion database caching&lt;/span&gt;&lt;br /&gt; I don't know how to do it correctly.  I could serialize the completion database for now and store it in a folder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4249475439859131506?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4249475439859131506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4249475439859131506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4249475439859131506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4249475439859131506'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/code-completion-might-be-in-next.html' title='Code completion might be in next release of XPontus!'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2954083371717242509</id><published>2008-03-06T09:48:00.000-08:00</published><updated>2008-03-06T09:51:38.674-08:00</updated><title type='text'>Bug fixes day</title><content type='html'>I will get the list of bugs which were mentionned in earlier in previous versions of XPontus XML Editor and fix them one by one.&lt;br /&gt;&lt;br /&gt;In the new version of XPontus the following features are not well working yet :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XML validation&lt;/li&gt;&lt;li&gt;Code completion(should I remove it?)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Grammar caching is not reused by plugins&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Maybe the save actions&lt;br /&gt;&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/18565477-2954083371717242509?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2954083371717242509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2954083371717242509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2954083371717242509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2954083371717242509'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/bug-fixes-day.html' title='Bug fixes day'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-988451656822378423</id><published>2008-03-05T11:46:00.000-08:00</published><updated>2008-03-05T12:34:14.972-08:00</updated><title type='text'>XPontus platform developer guide</title><content type='html'>I started writing the developer guide of &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt; today. I'll update it on a daily basis. The developer guide shows how XPontus XML Editor is written and provides a tutorial on how to build and devploy plugins.&lt;br /&gt;&lt;br /&gt;I uploaded the initial version of the developer guide on the website. You can download it at the following address : &lt;a href="http://xpontus.sourceforge.net/dev_guide.pdf"&gt;http://xpontus.sourceforge.net/dev_guide.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-988451656822378423?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/988451656822378423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=988451656822378423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/988451656822378423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/988451656822378423'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/xpontus-platform-developer-guide.html' title='XPontus platform developer guide'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4395803192357746230</id><published>2008-03-04T11:43:00.000-08:00</published><updated>2008-03-04T19:56:41.556-08:00</updated><title type='text'>New release at the end of march</title><content type='html'>&lt;span style="color: rgb(51, 102, 255); font-weight: bold;font-size:130%;" &gt;&lt;span style="color: rgb(102, 102, 204);"&gt;The first alpha of XPontus XML Editor  1.0.0 pre1 (End of March)&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold;font-size:85%;" &gt;&lt;span style="color: rgb(102, 102, 204);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:130%;" &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;I've been working hard on XPontus for the last 6 months. It is very different than the previous versions in terms of usability and architecture. Now the software has more features and is more extensible. XPontus has plugins, XPath, an "immature" code completion, etc. Thank you everybody for the bugs reports, the tests and the suggestions. I'll release a new release candidate of 1.0.0 every month until I think that the software is enough stable. The stable version will be called 1.0.0(probably june).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 102, 204);font-size:130%;" &gt;I need to release, so I have to remove incomplete features :&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The plugins manager(the core of the application) &lt;/span&gt;: I was planning to have a complete plugins manager with auto-updates, dependency checking/autoselection, etc. I cannot achieve that goal in a small amount of time. To install a plugin the user must download it for now. I can add a version checking feature to notify the user that a new version is out, but that's it at least for now.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Perspectives(Tree Editing, Text editing)&lt;/span&gt;. Sometimes you want to edit an XML document in a simple window. But when your document is big, you might want to have some drag and drop(elements) features, cut and paste node quickly. I started implement perspectives in xpontus but it involved rewriting lots of code. The big issue with perspectives is how(or how often) you synchronize the text of the source view and other kind of views(Tree view, diagram view for example). I associated persectives to file content types(text/xml, text/xquery, etc.) and file modes(docbook, ant, etc.). When a document needs to be created, the perspective matching the document content type creates the appropriate view to display the document.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(102, 102, 204);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;So what's the plan?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Finish the plugins manager. Find a strategy to uninstall completely a plugin. I cannot do it when the application is running : I can unregister the plugin, but I am not able to delete the plugin installation directory.&lt;/li&gt;&lt;li&gt;Ensure that the core features are working well : save, save as , print, validation, etc.&lt;/li&gt;&lt;li&gt;Fix previous versions bugs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Update code comments and write a developer guide&lt;/li&gt;&lt;li&gt;Write the software's architecture manual&lt;/li&gt;&lt;li&gt;Update the user's guide&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;Release&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/18565477-4395803192357746230?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4395803192357746230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4395803192357746230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4395803192357746230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4395803192357746230'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/new-release-at-end-of-march.html' title='New release at the end of march'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-6053661779033674371</id><published>2008-03-02T04:28:00.000-08:00</published><updated>2008-03-03T15:50:22.333-08:00</updated><title type='text'>XPontus plugins manager behaviour</title><content type='html'>I'm removing the components which are not ready yet in the plugins manager.  I find it painfull to write a software' dependencies manager. The plugin framework &lt;a href="http://jpf.sourceforge.net/index.html"&gt;jpf &lt;/a&gt;can handle some things from the software perspective(plugins integrity, dependencies not met, etc.). From the user's perspective, I need to add some features like auto-selecting required dependencies of a plugin or if I can't do that popup a dialog telling "This plugin required that other plugin to run".&lt;br /&gt;&lt;br /&gt;I was testing the plugins search yesterday and the results are almost good. I have some other issues not tied to the search engine itself : incomplete plugins metadata indexed, etc. Choosing &lt;a href="http://lucene.apache.org/java/docs/"&gt;Apache Lucene&lt;/a&gt; for plugins full text search was an interesting move.  At first sight, I was telling myself "Apache Lucene will be usefull but might be overkill for a simple gui application, ... but for good search results... I need a good search engine instead of using regular expressions to match the results".&lt;br /&gt;&lt;br /&gt;I will start writing a developer guide in few days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-6053661779033674371?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/6053661779033674371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=6053661779033674371' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6053661779033674371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6053661779033674371'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/03/xpontus-plugins-manager-behaviour.html' title='XPontus plugins manager behaviour'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7385627595254721427</id><published>2008-02-26T23:57:00.000-08:00</published><updated>2008-02-27T00:05:11.573-08:00</updated><title type='text'>The plugin manager</title><content type='html'>I am starting to make things work in the plugins manager of &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The plugins metadata have the following attributes for now:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;author&lt;/li&gt;&lt;li&gt;contributors&lt;/li&gt;&lt;li&gt;date&lt;/li&gt;&lt;li&gt;version&lt;/li&gt;&lt;li&gt;homepage&lt;/li&gt;&lt;li&gt;license&lt;/li&gt;&lt;li&gt;description, etc.&lt;/li&gt;&lt;/ul&gt;This will allow full text search of the plugins using &lt;a href="http://lucene.apache.org/java/docs/"&gt;Apache Lucene&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When a plugin is added, the plugin is extracted in the &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus&lt;/a&gt; plugins directory. The plugin descriptor is later indexed in a thread.&lt;br /&gt;&lt;br /&gt;Here is a screenshot of the plugins manager.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LZsdvh7kOqM/R8UZT_3r8fI/AAAAAAAAAHE/kAo99ZyMApU/s1600-h/daily.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_LZsdvh7kOqM/R8UZT_3r8fI/AAAAAAAAAHE/kAo99ZyMApU/s320/daily.png" alt="" id="BLOGGER_PHOTO_ID_5171567578458092018" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7385627595254721427?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7385627595254721427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7385627595254721427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7385627595254721427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7385627595254721427'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/02/plugin-manager.html' title='The plugin manager'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LZsdvh7kOqM/R8UZT_3r8fI/AAAAAAAAAHE/kAo99ZyMApU/s72-c/daily.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3374290335476547445</id><published>2008-02-24T15:41:00.000-08:00</published><updated>2008-02-24T15:55:43.811-08:00</updated><title type='text'>Everything is going smooth</title><content type='html'>I am working on &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus&lt;/a&gt;' user settings. Most of them are working now. It is taking me forever to code it. Dealing with lots of user settings is a huge pain.&lt;br /&gt;&lt;br /&gt;   I choose not to use my fatal combo(JGoodies Bindings  + XStream) all the time. Using both a good binding framework and a good serialization framework makes the hard work easy. But when you change your model classes then your serialization data is useless. You have to delete them all and to store them again. Therefore the user lose all his saved settings.  However if you use simple text files(xml, properties file), you can easily discard deprecated data, restore it, etc. The counterpart is that it will take you time to code it all.&lt;br /&gt;&lt;br /&gt;Here is my schedule :&lt;br /&gt;- Finish the user settings Monday&lt;br /&gt;- Have a functional plugins browser(Friday)&lt;br /&gt;- Fix as many bugs as possible in the code completion plugins (saturday)&lt;br /&gt;- Test all the software features (Sunday)&lt;br /&gt;- Make an official release date of the 1.0.0-pre1_alpha1 version&lt;br /&gt;&lt;br /&gt;There will be 3 releases 1.0.0_pre1_alpha branch I guess. I plan to release a new alpha every month. After 3 months, xpontus 1.0.0-pre1 shall become the stable release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3374290335476547445?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3374290335476547445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3374290335476547445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3374290335476547445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3374290335476547445'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/02/everything-is-going-smooth.html' title='Everything is going smooth'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3943463453752724531</id><published>2008-02-20T04:11:00.000-08:00</published><updated>2008-02-20T04:31:21.095-08:00</updated><title type='text'>The hard work is done!</title><content type='html'>I have been trying to release &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt; for the last few months. There are now less features missing. Most bugs have been fixed, new bugs arrived too :-(.&lt;br /&gt;&lt;br /&gt; I'll be working on the plugins installer and the user settings. I hope I'll be done with that at the end of the week.&lt;br /&gt;&lt;br /&gt; The only thing left after that will be working on an intelligent and decent code completion with caching support.&lt;br /&gt;&lt;br /&gt;I plan to move to &lt;a href="http://www.osgi.org/About/Technology"&gt;OSGI&lt;/a&gt; architecture for plugins when the final 1.0.0 release is ready. This will involve some code rewriting. But it shouldn't be major if I get a good understanding on OSGI. The only thing that is bugging me is Java Web Start deployment with OSGI and the java security manager. I expect to see lots of errors like "File read permission denied..."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3943463453752724531?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3943463453752724531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3943463453752724531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3943463453752724531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3943463453752724531'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/02/hard-work-is-done.html' title='The hard work is done!'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2473862575748663388</id><published>2008-02-08T05:25:00.001-08:00</published><updated>2008-02-08T05:28:19.542-08:00</updated><title type='text'>Getting ready to release</title><content type='html'>Some friends are helping me test the upcoming snapshot release of &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus&lt;/a&gt;. I had some nice comments and I am fixing bugs. Some critical issues affecting the current release are being resolved.  Some features present in the stable release are still missing in the snapshot release.&lt;br /&gt;&lt;br /&gt;To those who reported bugs on the sourceforge tracker "I am working on that..."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2473862575748663388?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2473862575748663388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2473862575748663388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2473862575748663388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2473862575748663388'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/02/getting-ready-to-release.html' title='Getting ready to release'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-321638410947214103</id><published>2008-02-03T21:00:00.000-08:00</published><updated>2008-02-03T21:03:29.079-08:00</updated><title type='text'>XPontus has a new look</title><content type='html'>I often heard : "is it Eclipse? It sure look like Eclipse..."&lt;br /&gt;&lt;br /&gt;I borrowed some icons here and there without bothering about license stuff. The new icons are from gartoon gnome icon theme mostly.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LZsdvh7kOqM/R6achOlhvLI/AAAAAAAAAG8/9MykGbExohY/s1600-h/screenshot.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_LZsdvh7kOqM/R6achOlhvLI/AAAAAAAAAG8/9MykGbExohY/s320/screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5162986117491965106" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-321638410947214103?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/321638410947214103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=321638410947214103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/321638410947214103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/321638410947214103'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/02/xpontus-has-new-look.html' title='XPontus has a new look'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LZsdvh7kOqM/R6achOlhvLI/AAAAAAAAAG8/9MykGbExohY/s72-c/screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2058695112753490602</id><published>2008-02-03T06:21:00.000-08:00</published><updated>2008-02-03T06:23:41.299-08:00</updated><title type='text'>Working on User's settings</title><content type='html'>The plugins settings dialog of &lt;a href="http://xpontus.sf.net/index.html"&gt;XPontus&lt;/a&gt; is almost done. I wrote simple interfaces to allow plugins to register some configuration options.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LZsdvh7kOqM/R6XOSOlhvKI/AAAAAAAAAG0/OqHN3p8LPJ4/s1600-h/advanced_settings.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_LZsdvh7kOqM/R6XOSOlhvKI/AAAAAAAAAG0/OqHN3p8LPJ4/s320/advanced_settings.png" alt="" id="BLOGGER_PHOTO_ID_5162759360398605474" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2058695112753490602?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2058695112753490602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2058695112753490602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2058695112753490602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2058695112753490602'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/02/working-on-users-settings.html' title='Working on User&apos;s settings'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LZsdvh7kOqM/R6XOSOlhvKI/AAAAAAAAAG0/OqHN3p8LPJ4/s72-c/advanced_settings.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2198852225041869602</id><published>2008-01-30T15:33:00.001-08:00</published><updated>2008-01-30T15:43:21.432-08:00</updated><title type='text'>Still holding my cup of Java</title><content type='html'>I am still working on some basic user settings for &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt;. The "Plugins advanced" buttons will show a tree with the installed plugins ordered by category. I think it is a more intuitive approach instead of having a single bloated dialog.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Basic settings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/R6ELC-lhvII/AAAAAAAAAGk/z_O5w5_BTaA/s1600-h/basic_settings.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/R6ELC-lhvII/AAAAAAAAAGk/z_O5w5_BTaA/s320/basic_settings.png" alt="" id="BLOGGER_PHOTO_ID_5161418793731341442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Advanced settings&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LZsdvh7kOqM/R6ELbOlhvJI/AAAAAAAAAGs/G3D-EnkiEU0/s1600-h/plugins_settings.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_LZsdvh7kOqM/R6ELbOlhvJI/AAAAAAAAAGs/G3D-EnkiEU0/s320/plugins_settings.png" alt="" id="BLOGGER_PHOTO_ID_5161419210343169170" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2198852225041869602?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2198852225041869602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2198852225041869602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2198852225041869602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2198852225041869602'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/still-holding-my-cup-of-java.html' title='Still holding my cup of Java'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/R6ELC-lhvII/AAAAAAAAAGk/z_O5w5_BTaA/s72-c/basic_settings.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3352120846850485517</id><published>2008-01-30T05:29:00.000-08:00</published><updated>2008-01-30T05:44:08.060-08:00</updated><title type='text'>Some releases</title><content type='html'>I released the first beta of &lt;a href="http://vfsjfilechooser.sourceforge.net/index.html"&gt;VFSJFileChooser&lt;/a&gt; yersterday. It will be integrated as a plugin in &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus XML Editor&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;XPontus snapshot release might hit sourceforge mirrors this friday. I will provide a link to the java web start download. I have a couple of bugs to fix :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The transformations profile editor isn't stable.&lt;/li&gt;&lt;li&gt;The preferences panel and the plugins manager are not ready yet&lt;/li&gt;&lt;li&gt;Code completion database doesn't support caching.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The XML schema completion is not ready(sometimes it works well, sometimes not)&lt;/li&gt;&lt;li&gt;I miss some informations in the plugins descriptors (author, homepage, etc.). This will be useful for the plugins manager and the preferences panel.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The xpath plugin is not stable.&lt;/li&gt;&lt;/ul&gt;I'll do my best to resolve the above issues. As it will be a java web start release, I'll be able to provide fixes on a daily basis according to the bug complexity. I'll attempt to fix the bugs reported in the previous versions of XPontus too!(If it is a new release, there must be some improvements!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3352120846850485517?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3352120846850485517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3352120846850485517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3352120846850485517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3352120846850485517'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/some-releases.html' title='Some releases'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4512757597107856349</id><published>2008-01-29T04:53:00.000-08:00</published><updated>2008-01-29T05:02:18.795-08:00</updated><title type='text'>VFSJFileChooser to be released soon</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;TODO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Before&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;releasing&lt;/span&gt; &lt;a href="http://vfsjfilechooser.sourceforge.net/index.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;VFSJFileChooser&lt;/span&gt;&lt;/a&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;here&lt;/span&gt; are &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;features&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;would&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;like&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;add&lt;/span&gt; :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;bookmarks&lt;/span&gt; manager : I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;found&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;bookmark&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;dialog&lt;/span&gt; in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;some&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;old&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;jedit&lt;/span&gt; code, I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;might&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;improve&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;it&lt;/span&gt; and use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;it&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;at&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;leastl&lt;/span&gt; for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;now&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;connection&lt;/span&gt; manager : &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;You&lt;/span&gt; have &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;to&lt;/span&gt; type &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;complete&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;address&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;with&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;username&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;password&lt;/span&gt; in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;filename&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;textfield&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;to&lt;/span&gt; open a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;remote&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;connection&lt;/span&gt;. I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;will&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;be&lt;/span&gt; a simple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;dialog&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;with&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;few&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;textboxes&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;What&lt;/span&gt; have &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;been&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;fixed&lt;/span&gt; :&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;patched&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;commons-vfs&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;to&lt;/span&gt; support http directs. For &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;example&lt;/span&gt; : &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;Trying&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;to&lt;/span&gt; open http://vfsjfilechooser.sf.net/index.html &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;would&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;not&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;work&lt;/span&gt;, I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;had&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;to&lt;/span&gt; use http://vfsjfilechooser.sourceforge.net/index.html.&lt;/li&gt;&lt;li&gt;I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;removed&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;the&lt;/span&gt; user &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;credentials&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;from&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;directory&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;combobox&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;need&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;to&lt;/span&gt; 2 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;days&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_71"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_72"&gt;perform&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_73"&gt;enough&lt;/span&gt; tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4512757597107856349?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4512757597107856349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4512757597107856349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4512757597107856349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4512757597107856349'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/vfsjfilechooser-to-be-released-soon.html' title='VFSJFileChooser to be released soon'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-731001255273367730</id><published>2008-01-28T02:34:00.000-08:00</published><updated>2008-01-28T04:28:33.725-08:00</updated><title type='text'>Settings are back</title><content type='html'>I didn't know how I was going to add a dialog to customize XPontus settings. Here is my first try.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/R52wL-lhvFI/AAAAAAAAAGM/di2ks9HXuFE/s1600-h/settings.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/R52wL-lhvFI/AAAAAAAAAGM/di2ks9HXuFE/s320/settings.png" alt="" id="BLOGGER_PHOTO_ID_5160474467861904466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Second attempt&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/R53KY-lhvGI/AAAAAAAAAGU/SUldnrl8ASc/s1600-h/settings.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/R53KY-lhvGI/AAAAAAAAAGU/SUldnrl8ASc/s320/settings.png" alt="" id="BLOGGER_PHOTO_ID_5160503278502526050" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-731001255273367730?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/731001255273367730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=731001255273367730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/731001255273367730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/731001255273367730'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/settings-are-back.html' title='Settings are back'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/R52wL-lhvFI/AAAAAAAAAGM/di2ks9HXuFE/s72-c/settings.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-1840436519791287330</id><published>2008-01-23T09:48:00.000-08:00</published><updated>2008-01-23T09:51:03.740-08:00</updated><title type='text'>You've been waiting for it, it is almost here</title><content type='html'>I am testing the snapshot release of XPontus. I was struggling yersterday with Java Web Start and the securityManager. The plugins weren't picked because of some java permissions issues. I was able to fix that.&lt;br /&gt;   I'm confident I will publish a snapshot release in a week or two. In the meantime, I am working on the plugins installer. I will try to get it ready for the snapshot release. If not, I will add a link where you can download the plugins and the instructions to install them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-1840436519791287330?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/1840436519791287330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=1840436519791287330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1840436519791287330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1840436519791287330'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/youve-been-waiting-for-it-it-is-almost.html' title='You&apos;ve been waiting for it, it is almost here'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-593786702768848685</id><published>2008-01-22T08:21:00.000-08:00</published><updated>2008-01-22T08:24:33.892-08:00</updated><title type='text'>VFSJFileChooser is now on Sourceforge.net</title><content type='html'>The &lt;a href="http://vfsjfilechooser.sourceforge.net/"&gt;VFSJFileChooser &lt;/a&gt;project has been accepted at Sourceforge. I has started its integration into &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus &lt;/a&gt;as a plugin. XPontus will use an extended version of it to provide plugin support.&lt;br /&gt;&lt;br /&gt;Validating an XML document or checking if it was well-formed was taking forever with XPontus 1.0.0-pre1 compared to the previous versions so I fixed it today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-593786702768848685?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/593786702768848685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=593786702768848685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/593786702768848685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/593786702768848685'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/vfsjfilechooser-is-now-on.html' title='VFSJFileChooser is now on Sourceforge.net'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7806835147472139653</id><published>2008-01-20T14:12:00.000-08:00</published><updated>2008-01-20T14:20:24.379-08:00</updated><title type='text'>Yes I did it</title><content type='html'>I rewrote the virtual file system explorer from scratch. It is fast enough and is behaving well. I guess I can add it right now to XPontus XML Editor. I didn't want to copy too much existing interfaces and to borrow code here and there.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Features&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Browse FTP, SAMBA, SFTP and Webdav file systems. You can select http files but you can't browse directories even if direct listing is allowed.&lt;/li&gt;&lt;li&gt;It behaves almost like JFileChooser&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What's missing&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There is no connection manager to add specific settings like proxy&lt;/li&gt;&lt;li&gt;The username and password are shown is the directory list of files&lt;/li&gt;&lt;li&gt;There is no details view&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There is no real caching of files&lt;/li&gt;&lt;li&gt;Drag and drop is not supported&lt;/li&gt;&lt;li&gt;I need to patch commons vfs to support redirects&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/R5PIpotYLbI/AAAAAAAAAGE/YU-yRnYv1Ec/s1600-h/vfsbrowser.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/R5PIpotYLbI/AAAAAAAAAGE/YU-yRnYv1Ec/s320/vfsbrowser.png" alt="" id="BLOGGER_PHOTO_ID_5157686615897288114" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7806835147472139653?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7806835147472139653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7806835147472139653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7806835147472139653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7806835147472139653'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/yes-i-did-it.html' title='Yes I did it'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/R5PIpotYLbI/AAAAAAAAAGE/YU-yRnYv1Ec/s72-c/vfsbrowser.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4101379356366105720</id><published>2008-01-18T08:38:00.000-08:00</published><updated>2008-01-18T12:22:32.690-08:00</updated><title type='text'>The virtual filesystem explorer is ok</title><content type='html'>The new file explorer will make it in the snapshot release. I've been testing it a lot. Bookmarks support is still missing but it doesn't matter for the snapshot distribution.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/R5EKfItYLaI/AAAAAAAAAF8/llbUQhFXYEU/s1600-h/vfsbrowser.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/R5EKfItYLaI/AAAAAAAAAF8/llbUQhFXYEU/s320/vfsbrowser.png" alt="" id="BLOGGER_PHOTO_ID_5156914578345962914" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/R5DWiItYLZI/AAAAAAAAAF0/houbC7fIYQk/s1600-h/vfsbrowser.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4101379356366105720?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4101379356366105720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4101379356366105720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4101379356366105720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4101379356366105720'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/virtual-filesystem-explorer-is-ok.html' title='The virtual filesystem explorer is ok'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/R5EKfItYLaI/AAAAAAAAAF8/llbUQhFXYEU/s72-c/vfsbrowser.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-5536910704702400028</id><published>2008-01-17T02:57:00.000-08:00</published><updated>2008-01-17T03:02:23.777-08:00</updated><title type='text'>Not quite why I want but...</title><content type='html'>I am not satified with the virtual file system explorer. When allowing multiple file selections, I have lots of issues. Conditions here and there, bad code make it more complex than it is. When I have a look at Sun JFileChooser implementation, I see about 1000 lines of code. I should have classes with less than 500 lines and simple interfaces.&lt;br /&gt;&lt;br /&gt;I will leave the code as it is for now and rewrite it later. I will have a better look at jfilechooser's code to see how they handle multiple file selections vs single file selections.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-5536910704702400028?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/5536910704702400028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=5536910704702400028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5536910704702400028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5536910704702400028'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/not-quite-why-i-want-but.html' title='Not quite why I want but...'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-6737926736276324918</id><published>2008-01-16T11:07:00.001-08:00</published><updated>2008-01-16T13:25:23.875-08:00</updated><title type='text'>XPontus File Explorer improvements</title><content type='html'>I am now able to hide the user credentials in the location bar. The problem is that I still have duplicated entries in the location bar history list. For the snapshot release I guess it is ok as long as the browser behaves well enough.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/R45WCotYLYI/AAAAAAAAAFs/X3LpMyIJNOg/s1600-h/jtree.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_LZsdvh7kOqM/R45WCotYLYI/AAAAAAAAAFs/X3LpMyIJNOg/s320/jtree.png" alt="" id="BLOGGER_PHOTO_ID_5156153226673270146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The file explorer supports sftp, ftp, cifs, webdav protocols. It can browse local files too!.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-6737926736276324918?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/6737926736276324918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=6737926736276324918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6737926736276324918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6737926736276324918'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/xpontus-virtual-filesystem-improvements.html' title='XPontus File Explorer improvements'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LZsdvh7kOqM/R45WCotYLYI/AAAAAAAAAFs/X3LpMyIJNOg/s72-c/jtree.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7614702722102487129</id><published>2008-01-15T20:13:00.001-08:00</published><updated>2008-01-15T23:41:26.379-08:00</updated><title type='text'>Virtual FileSystem Browser almost done</title><content type='html'>I am almost done with XPontus virtual filesystem browser. I am missing the following parts :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bookmarks supports&lt;/li&gt;&lt;li&gt;Path history&lt;/li&gt;&lt;li&gt;User notifications(when the control takes time to display the directories or files)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LZsdvh7kOqM/R42ExotYLWI/AAAAAAAAAFc/KNPQEQ2Zwxo/s1600-h/vfs.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LZsdvh7kOqM/R421FYtYLXI/AAAAAAAAAFk/NA-U2O7yXw0/s1600-h/vfs.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_LZsdvh7kOqM/R421FYtYLXI/AAAAAAAAAFk/NA-U2O7yXw0/s320/vfs.png" alt="" id="BLOGGER_PHOTO_ID_5155976252545838450" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7614702722102487129?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7614702722102487129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7614702722102487129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7614702722102487129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7614702722102487129'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/virtual-filesystem-browser-almost-done.html' title='Virtual FileSystem Browser almost done'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LZsdvh7kOqM/R421FYtYLXI/AAAAAAAAAFk/NA-U2O7yXw0/s72-c/vfs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-838735561967374714</id><published>2008-01-14T10:08:00.000-08:00</published><updated>2008-01-14T10:09:40.271-08:00</updated><title type='text'>What's new</title><content type='html'>I am coding a virtual file system browser based on &lt;a href="http://commons.apache.org/vfs/"&gt;Apache Commons VFS&lt;/a&gt;. I found existing components, but I didn't get the permission to use them yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-838735561967374714?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/838735561967374714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=838735561967374714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/838735561967374714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/838735561967374714'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/whats-new.html' title='What&apos;s new'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4143392835443934365</id><published>2008-01-11T02:21:00.000-08:00</published><updated>2008-01-11T08:04:00.030-08:00</updated><title type='text'>Almost there</title><content type='html'>&lt;span style="font-size:130%;"&gt;Done today&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I fixed some bugs in the transformation profiles&lt;/li&gt;&lt;li&gt;I completed the transformation profiles support for saxon6.x , saxon 8.x and stx and fop.&lt;/li&gt;&lt;li&gt;The outline plugin is behaving well&lt;/li&gt;&lt;li&gt;I took the time to test most parts of the program&lt;/li&gt;&lt;li&gt;I started programming the XML signature module&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Remaining issues&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Code completion&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The code completion doesn't work well with nested schemas&lt;/li&gt;&lt;li&gt;The code completion doesn't store a cache on the user's hard drive&lt;/li&gt;&lt;li&gt;I need to add built-in completion for XSL, Apache ant files, xml schemas, HTML&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Virtual file system&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The implementation is not complete(ssh, ftp, smb)&lt;/li&gt;&lt;li&gt;Sometimes I hardcoded the files path. I should always use a filesystem abstraction so that remote files can be found.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Users settings&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In the previous versions of xpontus there was no plugins so I had a big panel with a tree to browse and set the preferences&lt;/li&gt;&lt;li&gt;Now most parts of the software are plugins and some of them can/should be customized by the user(font color, encoding, etc.)&lt;/li&gt;&lt;li&gt;I should write a settings importer for the old versions of XPontus&lt;/li&gt;&lt;li&gt;Using a relational database to store user settings might not be a good idea. If I upgrade XPontus and there are some major changes in the API, then all the users settings are gone unless I keep lots of old code in the program.  I might revert to XStream which serialize objects in XML. If XStream API changes, I can still parse the data.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Plugin management&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Because there are plugins the plugins browser must be at least able to install, list, remove plugins. I will think about the upgrade later.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The themes and icons modules are not ready yet. I need a settings initializer because the theme and icon set must be known before loading the program&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Expression evaluator&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The expression evaluator is not working well when evaluating xpath expressions. If the result is a boolean value, then no navigation link should be provided to look at the result. Sometimes it seems that the xpath expression is correct but no result is returned...&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The xquery expression evaluator should have it's own output window to display the result. Sometimes the result is a node, but sometimes it will be plain text or whatever else.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4143392835443934365?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4143392835443934365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4143392835443934365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4143392835443934365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4143392835443934365'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/almost-there.html' title='Almost there'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3210702471261868521</id><published>2008-01-10T01:03:00.000-08:00</published><updated>2008-01-10T01:06:40.368-08:00</updated><title type='text'>Catching up with the previous development version fo XPontus(without plugins)</title><content type='html'>I am adding features quickly, maybe too quickly. Well I'm going to clean up the code later.&lt;br /&gt;&lt;br /&gt;The following components have been added today :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a simple quicktoolbar plugin(Comment XML selection and INSERT CDATA section)&lt;/li&gt;&lt;li&gt;a code structure view of XML documents&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/R4Xf1ItYLVI/AAAAAAAAAFU/NVyfY4J0atY/s1600-h/outlineShot.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/R4Xf1ItYLVI/AAAAAAAAAFU/NVyfY4J0atY/s320/outlineShot.png" alt="" id="BLOGGER_PHOTO_ID_5153771452559273298" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3210702471261868521?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3210702471261868521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3210702471261868521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3210702471261868521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3210702471261868521'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2008/01/catching-up-with-previous-development.html' title='Catching up with the previous development version fo XPontus(without plugins)'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/R4Xf1ItYLVI/AAAAAAAAAFU/NVyfY4J0atY/s72-c/outlineShot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-1802284967605897818</id><published>2007-12-26T23:43:00.000-08:00</published><updated>2007-12-26T23:57:29.200-08:00</updated><title type='text'>Up and still coding</title><content type='html'>I'm spending my holidays in Montreal. With my old laptop, I cannot use Eclipse or Netbeans, so I took few hours to learn emacs. I am satisfied with it : I can chat on IRC, play some music, commit to SVN, program without leaving emacs!&lt;br /&gt;&lt;br /&gt;I am working on the users transformation profiles. There are still few bugs in there.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LZsdvh7kOqM/R3NapItYLUI/AAAAAAAAAFM/wwjDjrbSagE/s1600-h/desktop_200712271198742135.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_LZsdvh7kOqM/R3NapItYLUI/AAAAAAAAAFM/wwjDjrbSagE/s320/desktop_200712271198742135.png" alt="" id="BLOGGER_PHOTO_ID_5148558461773557058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I will be working on the Outline Viewer soon. I have to rewrite the "Save action behaviour" and few other parts. There's still no window for the users settings. I wonder how I am going to implement it as almost everything is now a plugin in XPontus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-1802284967605897818?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/1802284967605897818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=1802284967605897818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1802284967605897818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1802284967605897818'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/12/up-and-still-coding.html' title='Up and still coding'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LZsdvh7kOqM/R3NapItYLUI/AAAAAAAAAFM/wwjDjrbSagE/s72-c/desktop_200712271198742135.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-553998897545994493</id><published>2007-12-22T12:27:00.001-08:00</published><updated>2007-12-22T12:47:07.700-08:00</updated><title type='text'>2008 ultimatum</title><content type='html'>I plan to release a snapshot version of XPontus 1.0.0-pre1. XPath support has been added. Here is the development status.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The core IDE&lt;/span&gt;&lt;br /&gt;Some basic text editing features are still missing.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;As I moved from local filesystem usage to commons-vfs for filesystem abstractions, you cannot save a document yet.&lt;/li&gt;&lt;li&gt;Printing bugs present in 1.0.0-rc3 will be fixed. Some people reported that they can't print multiple pages. In Ubuntu to be able to print you have to downgrade your version of cups to 1.2.8(cups or java bug??).&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Expression evaluator plugin (WORK IN PROGRESS)&lt;/span&gt;&lt;br /&gt;The expression evaluator plugin allows you to use 3 engines to evaluate expression&lt;ul&gt;&lt;li&gt;The xpath1 module is able to evaluate xpath 1.0 expressions&lt;/li&gt;&lt;li&gt;The xpath2 module is able to evaluate xpath 1.0 expressions&lt;/li&gt;&lt;li&gt;The xquery module is able to evaluate xquery expressions&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Users transformations plugin (WORK IN PROGRESS few bugs)&lt;/span&gt;&lt;br /&gt;It allows you to manage transformations profiles and execute them. The following engines are available :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Xalan 2.7.0&lt;/li&gt;&lt;li&gt;Saxon 6.5.4&lt;/li&gt;&lt;li&gt;Saxon 8&lt;/li&gt;&lt;li&gt;XQuery&lt;/li&gt;&lt;li&gt;STX&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Documentation generator plugin (READY)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It supports generating documentation from DTDS or XML Schemas. It only supports single files. &lt;/li&gt;&lt;li&gt;The XSL documentation generator plugin is not added yet. It depends on my other project Jxsltdoc.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Schema converter/generator plugin (READY)&lt;/span&gt;&lt;br /&gt;The schema converter plugin allows you to generate/convert files into differents formats.&lt;br /&gt;Supported formats are :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DTD&lt;/li&gt;&lt;li&gt;XML Schema&lt;/li&gt;&lt;li&gt;Relax NG&lt;/li&gt;&lt;li&gt;XML.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;XPontus virtual file system plugin&lt;/span&gt; (WORK IN PROGRESS)&lt;br /&gt;It allows the editor to open a local or remote files. It will support the following protocols :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Local : to open files on a local hard drive&lt;/li&gt;&lt;li&gt;Samba : to be able to open documents over a LAN&lt;/li&gt;&lt;li&gt;SSH  : to edit files located on a SSH server&lt;/li&gt;&lt;li&gt;FTP &lt;/li&gt;&lt;li&gt;HTTPS&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;XPontus themes plugin (WORK IN PROGRESS)&lt;/span&gt;&lt;br /&gt;It allows you to use different look and feels for the editor : Windows look and feel, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;XPontus icons plugin (WORK IN PROGRESS)&lt;/span&gt;&lt;br /&gt;It allows you to use a different icon theme&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;XPontus plugin's browser (WORK IN PROGRESS)&lt;/span&gt;&lt;br /&gt;It allows you to install , remove, update or query available plugins&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Validation plugin (READY)&lt;/span&gt;&lt;br /&gt;It allows you to validate files. 3 sub-plugins are available for now&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Simple xml validation&lt;/li&gt;&lt;li&gt;Batch XML validation&lt;/li&gt;&lt;li&gt;External Schema validation&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Lexer plugin (WORK IN PROGRESS)&lt;/span&gt;&lt;br /&gt;The lexer plugin is responsible for syntax coloring. For now here is a XML and HTML lexer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Completion plugin (WORK IN PROGRESS)&lt;/span&gt;&lt;br /&gt;It will first be available for XML files which are constrained by a DTD or schema.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-553998897545994493?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/553998897545994493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=553998897545994493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/553998897545994493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/553998897545994493'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/12/2008-ultimatum.html' title='2008 ultimatum'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7395287396333145771</id><published>2007-12-15T17:19:00.001-08:00</published><updated>2007-12-15T17:21:24.104-08:00</updated><title type='text'>Managing the upgrade</title><content type='html'>Well I am comparing XPontus 1.0.0-rc3 to the upcoming version to see what is missing or what should be improved.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/R2R9YItYLSI/AAAAAAAAAE8/vWYt5wP8zyc/s1600-h/Screenshot.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_LZsdvh7kOqM/R2R9YItYLSI/AAAAAAAAAE8/vWYt5wP8zyc/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5144374527972093218" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7395287396333145771?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7395287396333145771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7395287396333145771' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7395287396333145771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7395287396333145771'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/12/managing-upgrade.html' title='Managing the upgrade'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LZsdvh7kOqM/R2R9YItYLSI/AAAAAAAAAE8/vWYt5wP8zyc/s72-c/Screenshot.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8290195928229117598</id><published>2007-12-15T06:59:00.001-08:00</published><updated>2007-12-15T17:27:26.191-08:00</updated><title type='text'>Working on users transformations</title><content type='html'>I am working on the user's transformation plugin for &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus&lt;/a&gt;. As the plugin must support different kinds of plugins(JAXP, etc.), I have to think again about it. Here is a mock-up of the interface.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img204.imageshack.us/img204/9423/screenshot2kw9.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/R2R-8ItYLTI/AAAAAAAAAFE/Mi0bTJPUs7U/s1600-h/Screenshot.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_LZsdvh7kOqM/R2R-8ItYLTI/AAAAAAAAAFE/Mi0bTJPUs7U/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5144376245959011634" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8290195928229117598?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8290195928229117598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8290195928229117598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8290195928229117598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8290195928229117598'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/12/working-on-users-transformations.html' title='Working on users transformations'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LZsdvh7kOqM/R2R-8ItYLTI/AAAAAAAAAFE/Mi0bTJPUs7U/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4379534485598946491</id><published>2007-12-12T15:43:00.000-08:00</published><updated>2007-12-12T15:53:16.887-08:00</updated><title type='text'>12/12/2007</title><content type='html'>Everything is going smooth lately. I am done with the Batch Validation plugin and the schema converter/generator plugin.&lt;br /&gt;   I will try to get most stuff ready for Christmas and release only a Java Web Start version of &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus&lt;/a&gt;. That version will be called &lt;span style="font-style: italic; font-weight: bold;"&gt;xpontus-snapshot-date&lt;/span&gt;.  My last effort will be working on the code completion plugin to make it work without looking for performance. The xml outline plugin should also  be there....&lt;br /&gt;&lt;br /&gt;Simons says "Another coffee, another plugin, maybe another release..."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4379534485598946491?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4379534485598946491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4379534485598946491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4379534485598946491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4379534485598946491'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/12/12122007.html' title='12/12/2007'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4227734343744560131</id><published>2007-12-09T08:02:00.000-08:00</published><updated>2007-12-09T15:32:16.597-08:00</updated><title type='text'>Batch Validation Plugin</title><content type='html'>The Batch XML Validation plugin of &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus&lt;/a&gt; is being worked on. It will be more flexible and efficient than the one implemented in the previous releases.&lt;br /&gt;&lt;br /&gt;I am also working on the schema converter plugin&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LZsdvh7kOqM/R1x5SrUYcLI/AAAAAAAAAE0/Z6YunRGXX0E/s1600-h/schemaconverter.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_LZsdvh7kOqM/R1x5SrUYcLI/AAAAAAAAAE0/Z6YunRGXX0E/s320/schemaconverter.png" alt="" id="BLOGGER_PHOTO_ID_5142118236323082418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/R1wR9CvQtfI/AAAAAAAAAEs/FpsE4ieQW0Y/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_LZsdvh7kOqM/R1wR9CvQtfI/AAAAAAAAAEs/FpsE4ieQW0Y/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5142004614955054578" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4227734343744560131?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4227734343744560131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4227734343744560131' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4227734343744560131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4227734343744560131'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/12/batch-validation-plugin.html' title='Batch Validation Plugin'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LZsdvh7kOqM/R1x5SrUYcLI/AAAAAAAAAE0/Z6YunRGXX0E/s72-c/schemaconverter.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-6872472138128523215</id><published>2007-12-07T14:45:00.001-08:00</published><updated>2007-12-08T10:26:10.875-08:00</updated><title type='text'>Merry Java Christmas</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/R1rhqyvQtcI/AAAAAAAAAEY/kh2s70XJN8g/s1600-h/Screenshot-1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/R1rhqyvQtcI/AAAAAAAAAEY/kh2s70XJN8g/s320/Screenshot-1.png" alt="" id="BLOGGER_PHOTO_ID_5141670049887598018" border="0" /&gt;&lt;/a&gt;It's been a long time. I haven't coded for a while. Well I was having a look at &lt;a href="http://felix.apache.org/"&gt;Apache Felix&lt;/a&gt;, an OSGI framework. I already started writing the plugin architecture of &lt;a href="http://xpontus.sf.net/"&gt;XPontus&lt;/a&gt; using &lt;a href="http://jpf.sf.net/"&gt;JPF.&lt;/a&gt; I can't drop JPF now, I have done some stuff with it and I don't have classloader or securitymanager issues with it. Apache Felix looks nice, but I'm not familiar with it yet.&lt;br /&gt;&lt;br /&gt;I am done with few plugins and writing some others. Here is the Batch XML validation plugin mockup below. It's implemented as a menubar plugin&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/R1nNACvQtbI/AAAAAAAAAEQ/ncCkQjbMp2g/s1600-h/Screenshot.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-6872472138128523215?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/6872472138128523215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=6872472138128523215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6872472138128523215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6872472138128523215'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/12/merry-java-christmas.html' title='Merry Java Christmas'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/R1rhqyvQtcI/AAAAAAAAAEY/kh2s70XJN8g/s72-c/Screenshot-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-545831213885295989</id><published>2007-09-13T08:23:00.000-07:00</published><updated>2007-09-13T08:26:03.424-07:00</updated><title type='text'>Development halted</title><content type='html'>My hard drive died but I had a backup of the development copy of XPontus. My dev pc is getting repaired. In the meanwhile I cannot code that much on the laptop which is way too old.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-545831213885295989?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/545831213885295989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=545831213885295989' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/545831213885295989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/545831213885295989'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/09/development-halted.html' title='Development halted'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4501207275768614187</id><published>2007-08-23T05:08:00.000-07:00</published><updated>2007-08-23T05:12:41.627-07:00</updated><title type='text'>I can see clearly now</title><content type='html'>&lt;a href="http://xpontus.sourceforge.net"&gt;XPontus 1.0.0-pre1&lt;/a&gt; might hit sourceforge mirrors in late september. I am almost satisfied with the new architecture. Moving completely to &lt;a href="http://maven.apache.org"&gt;Apache Maven&lt;/a&gt; was a late but great initiative. &lt;br /&gt;I haven't added code completion yet. There are also few bugs remaining for syntax highlighting and other stuff. My coffee cup is back and I think I will be able to code a lot these weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4501207275768614187?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4501207275768614187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4501207275768614187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4501207275768614187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4501207275768614187'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/08/i-can-see-clearly-now.html' title='I can see clearly now'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-332533214510187625</id><published>2007-08-17T04:53:00.000-07:00</published><updated>2007-08-17T04:56:24.696-07:00</updated><title type='text'>About the new core API of XPontus</title><content type='html'>I swill spend the next weeks finalizing the core API of &lt;a href="http://xpontus.sourceforge.net"&gt;XPontus XML Editor&lt;/a&gt;. It is going on well, I still need to decide if some stuff needs to be extended by plugins or not. Some code I have written, must get more generic to allow integration of XPontus code in other applications, mostly java text editors applications.&lt;br /&gt;   When I am done with the core API, I might publish a snapshot version of the software to get feedback before the official 1.0.0-pre1 release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-332533214510187625?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/332533214510187625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=332533214510187625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/332533214510187625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/332533214510187625'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/08/about-new-core-api-of-xpontus.html' title='About the new core API of XPontus'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-1547458718644924680</id><published>2007-08-09T04:22:00.000-07:00</published><updated>2007-08-27T07:52:03.726-07:00</updated><title type='text'>New logo for XPontus</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LZsdvh7kOqM/RtLlC5gKH4I/AAAAAAAAAEI/CMiO5_xFZuk/s1600-h/xpontus-logo-copyright.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_LZsdvh7kOqM/RtLlC5gKH4I/AAAAAAAAAEI/CMiO5_xFZuk/s320/xpontus-logo-copyright.jpg" alt="" id="BLOGGER_PHOTO_ID_5103393165722394498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Thanks to a friend from &lt;a href="http://designapama.blogspot.com/"&gt;Apama design&lt;/a&gt;, &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus &lt;/a&gt;has a brand new logo :p. I am done with mime types handling, it will be done using &lt;a href="http://java.sun.com/products/javabeans/jaf/downloads/index.html"&gt;JAF&lt;/a&gt;. The main problem is now creating some plugins for the outline view and the text editor. I will try to look at &lt;a href="http://jedit.sf.net/"&gt;jedit&lt;/a&gt;, &lt;a href="http://netbeans.org/"&gt;netbeans &lt;/a&gt;and &lt;a href="http://eclipse.org/"&gt;eclipse &lt;/a&gt;to get some ideas.&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;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://xpontus.sourceforge.net/images/xpontusdevel.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-1547458718644924680?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/1547458718644924680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=1547458718644924680' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1547458718644924680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/1547458718644924680'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/08/new-logo-for-xpontus.html' title='New logo for XPontus'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LZsdvh7kOqM/RtLlC5gKH4I/AAAAAAAAAEI/CMiO5_xFZuk/s72-c/xpontus-logo-copyright.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2391688750018070432</id><published>2007-08-05T17:18:00.000-07:00</published><updated>2007-08-05T17:22:03.418-07:00</updated><title type='text'>Icons showing up</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/RrZpmfCti2I/AAAAAAAAAEA/RnT63Ium7bU/s1600-h/xpontus05082007.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_LZsdvh7kOqM/RrZpmfCti2I/AAAAAAAAAEA/RnT63Ium7bU/s320/xpontus05082007.png" alt="" id="BLOGGER_PHOTO_ID_5095376138305112930" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2391688750018070432?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2391688750018070432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2391688750018070432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2391688750018070432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2391688750018070432'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/08/icons-showing-up.html' title='Icons showing up'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LZsdvh7kOqM/RrZpmfCti2I/AAAAAAAAAEA/RnT63Ium7bU/s72-c/xpontus05082007.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3639219141072736935</id><published>2007-08-04T07:57:00.001-07:00</published><updated>2007-08-04T08:03:06.041-07:00</updated><title type='text'>About XPontus progress 04/08/2007</title><content type='html'>I am decided to finish the i18n plugin today. I am not happy with the menubar and toolbar plugins. Those plugins use hashmaps a lot and there is too much code to write for it.&lt;br /&gt;&lt;br /&gt;The menubar and toolbar extensions should be configurable via simple xml files.&lt;br /&gt;&lt;br /&gt;The screenshot of the day&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/RrST7PCti1I/AAAAAAAAAD4/mnX6Qu3EGUY/s1600-h/xpontus04082007.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/RrST7PCti1I/AAAAAAAAAD4/mnX6Qu3EGUY/s320/xpontus04082007.png" alt="" id="BLOGGER_PHOTO_ID_5094859724322343762" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3639219141072736935?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3639219141072736935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3639219141072736935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3639219141072736935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3639219141072736935'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/08/about-xpontus-progress-04082007.html' title='About XPontus progress 04/08/2007'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/RrST7PCti1I/AAAAAAAAAD4/mnX6Qu3EGUY/s72-c/xpontus04082007.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8647643504852795245</id><published>2007-07-29T16:06:00.000-07:00</published><updated>2007-07-29T16:12:36.415-07:00</updated><title type='text'>Coding and coding...</title><content type='html'>Coffee is ready, and I am still coding... At this rate, I wonder, if everything will be ready before september for &lt;a href="http://xpontus.sourceforge.net/index.html"&gt;XPontus&lt;/a&gt;. I might need to step back and look at the program from a distance to see what I am really missing. The more I code, the more I find it difficult to define most of components as plugins. What should/can be extended?? how easily can it be done?? :p, Well I guess I have to answer that, publish the release and wait for comments.&lt;br /&gt;&lt;br /&gt;XML lexer separated plugin in action with syntax highlighting using &lt;a href="https://javacc.dev.java.net/"&gt;Javacc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/Rq0e2vCti0I/AAAAAAAAADw/OY3OilByhzo/s1600-h/xpontusxmllexer29072007.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_LZsdvh7kOqM/Rq0e2vCti0I/AAAAAAAAADw/OY3OilByhzo/s320/xpontusxmllexer29072007.png" alt="" id="BLOGGER_PHOTO_ID_5092760679315508034" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8647643504852795245?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8647643504852795245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8647643504852795245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8647643504852795245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8647643504852795245'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/07/coding-and-coding.html' title='Coding and coding...'/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LZsdvh7kOqM/Rq0e2vCti0I/AAAAAAAAADw/OY3OilByhzo/s72-c/xpontusxmllexer29072007.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7830216318389827306</id><published>2007-07-27T16:16:00.001-07:00</published><updated>2007-07-27T16:25:42.193-07:00</updated><title type='text'></title><content type='html'>About &lt;a href="http://xpontus.sourceforge.net/"&gt;XPontus &lt;/a&gt;rewrite progress&lt;br /&gt;&lt;br /&gt;I am getting somewhere with the plugin framework &lt;a href="http://jpf.sourceforge.net/"&gt;JPF&lt;/a&gt;. I have been able to write plugins so far for the following "stuff":&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The ioc container to use with XPontus (the default is spring framework container)&lt;/li&gt;&lt;li&gt;The menubar : A simple action can be added to the menubar without much hassle&lt;/li&gt;&lt;li&gt;The look and feel of the application : This is easily done&lt;/li&gt;&lt;/ul&gt;The screenshot of the day showing the main window&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/Rqp-xfCtizI/AAAAAAAAADo/apUE8ru-Yx4/s1600-h/xpontus27072007.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_LZsdvh7kOqM/Rqp-xfCtizI/AAAAAAAAADo/apUE8ru-Yx4/s320/xpontus27072007.png" alt="" id="BLOGGER_PHOTO_ID_5092021717307329330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7830216318389827306?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7830216318389827306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7830216318389827306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7830216318389827306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7830216318389827306'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/07/about-xpontus-rewrite-progress-i-am.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LZsdvh7kOqM/Rqp-xfCtizI/AAAAAAAAADo/apUE8ru-Yx4/s72-c/xpontus27072007.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-5378061856336800391</id><published>2007-07-20T07:10:00.000-07:00</published><updated>2007-07-20T07:15:08.743-07:00</updated><title type='text'></title><content type='html'>I am working on XPontus plugins. When the core architecture is completed, the rest will be almost trivial to add or update. I've been successfull with &lt;a href="http://maven.apache.org"&gt;maven&lt;/a&gt; multiproject modules.  It is amusing to have 20 projects opened in a Java IDE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-5378061856336800391?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/5378061856336800391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=5378061856336800391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5378061856336800391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5378061856336800391'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/07/i-am-working-on-xpontus-plugins.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4662079882627487945</id><published>2007-07-05T05:18:00.000-07:00</published><updated>2007-07-05T05:22:59.734-07:00</updated><title type='text'></title><content type='html'>I am coding a lot for one my projects, &lt;a href="http://jhmlcleaner.berlios.de"&gt;JHTMLCleaner&lt;/a&gt;. The first beta will be out shortly. I wanted the application to run as&lt;br /&gt;&lt;ul&gt;&lt;li&gt;an applet&lt;/li&gt;&lt;li&gt;a GUI application&lt;/li&gt;&lt;li&gt;a servlet&lt;/li&gt;&lt;li&gt;a console application&lt;/li&gt;&lt;li&gt;an Apache Ant task&lt;/li&gt;&lt;/ul&gt;The first beta will probably only feature a GUI while I'll be working on other parts. It will also help me by getting quick feedback from users.&lt;br /&gt;In the meantime I'll be thinking about integration with &lt;a href="http://xpontus.sf.net"&gt;XPontus XML Editor&lt;/a&gt; as a plugin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4662079882627487945?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4662079882627487945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4662079882627487945' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4662079882627487945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4662079882627487945'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/07/i-am-coding-lot-for-one-my-projects.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2142658023958873013</id><published>2007-07-01T08:35:00.000-07:00</published><updated>2007-07-01T16:20:17.693-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back on business'/><title type='text'></title><content type='html'>I've been working on &lt;a href="http://jhmlcleaner.berlios.de/"&gt;JHTMLCleaner&lt;/a&gt; and &lt;a href="http://xpontus.sf.net/xpontus2"&gt;XPontus&lt;/a&gt; those weeks.&lt;br /&gt;&lt;br /&gt;More people seem to support and use XPontus XML Editor on a regular basis. I am working hard on the upcoming 1.0.0 pre1 release. It is taking some time to redesign everything but it is going on well. In the previous releases I wasn't thinking about XPontus integration in other applications and this will be corrected.&lt;br /&gt;&lt;br /&gt;JHTMLCleaner initial release should be out in few weeks.&lt;br /&gt;&lt;br /&gt;XPontus daily screenshot&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/Rog2oMxtl3I/AAAAAAAAADg/IPY75l75wX4/s1600-h/Untitled.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/Rog2oMxtl3I/AAAAAAAAADg/IPY75l75wX4/s320/Untitled.png" alt="" id="BLOGGER_PHOTO_ID_5082372243740006258" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LZsdvh7kOqM/RofWyMxtl2I/AAAAAAAAADY/qVuN1PKyt-M/s1600-h/Untitled.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2142658023958873013?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2142658023958873013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2142658023958873013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2142658023958873013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2142658023958873013'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/07/ive-been-working-on-jhtmlcleaner-and.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/Rog2oMxtl3I/AAAAAAAAADg/IPY75l75wX4/s72-c/Untitled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2054814463951166517</id><published>2007-06-04T05:06:00.000-07:00</published><updated>2007-06-04T05:11:54.249-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPontus XML Editor 1.0.0-pre1'/><title type='text'></title><content type='html'>The first pre-release and last maintenance release.&lt;br /&gt;&lt;br /&gt;The first pre-release of XPontus XML Editor will be release today or tomorrow. The tests seems ok. I have a little trouble with shell scripts for the jar installer but it will be alright.&lt;br /&gt;&lt;br /&gt;It will be the last build of the first code branch of XPontus. I cannot maintain this version anymore. Lots of people asked me all kind of questions about integration, about selling some components of the editor, etc. This cannot be achieved easily without a proper knowledge of the code. Most parts of the current release candidate are tied together.&lt;br /&gt;&lt;br /&gt;I am going to keep working only on the development branch of XPontus so that the second pre-release will be code completion enabled. I am designing the new architecture around plugins. It takes time, but when I will be done with it, it will be easier adding new features and other stuff.&lt;br /&gt;&lt;br /&gt;Stay tuned&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2054814463951166517?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2054814463951166517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2054814463951166517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2054814463951166517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2054814463951166517'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/06/first-pre-release-and-last-maintenance.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8165336703552446207</id><published>2007-05-27T11:55:00.000-07:00</published><updated>2007-05-27T11:58:55.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPontus XML Editor 1.0.0RC3'/><title type='text'></title><content type='html'>I am fixing few bugs before releasing the third release candidate. A recent files menu has been added and code indentation has been corrected.  I am few days away from releasing it. After some more tests it will be ready.&lt;br /&gt;&lt;br /&gt;    I am also working hard on the  new development branch of &lt;a href="http://xpontus.sourceforge.net"&gt;XPontus XML Editor&lt;/a&gt; which is plugin based. It will be available maybe this summer. Apache Maven is used to manage the project and its sub modules(plugins).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8165336703552446207?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8165336703552446207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8165336703552446207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8165336703552446207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8165336703552446207'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/05/i-am-fixing-few-bugs-before-releasing.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8858411531903643812</id><published>2007-04-24T07:15:00.000-07:00</published><updated>2007-04-24T07:20:29.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Working on the development branch of XPontus'/><title type='text'></title><content type='html'>I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;will&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;release&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;rc&lt;/span&gt;3 version &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;XPontus&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;XML&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Editor&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;next&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;week&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;The&lt;/span&gt; application &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;is&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;pretty&lt;/span&gt; stable &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;now&lt;/span&gt; but &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;still&lt;/span&gt; misses &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;some&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;features&lt;/span&gt;.&lt;br /&gt;    I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;will&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;only&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;provide&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;bug&lt;/span&gt; fixes &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;the&lt;/span&gt; stable version &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;without&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;features&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;added&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;It&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;was&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;good&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;experience&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;showed&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;the&lt;/span&gt; limitations and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;the&lt;/span&gt; issues &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;with&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;way&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;coded&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;the&lt;/span&gt; application.&lt;br /&gt;&lt;br /&gt;   I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;am&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;working&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;again&lt;/span&gt; on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;development&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;release&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;which&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;already&lt;/span&gt; have code &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;completion&lt;/span&gt; and "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;of&lt;/span&gt; course" lots &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;bugs&lt;/span&gt;! :p . &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;It&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;shouldn't&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;be&lt;/span&gt; long &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;get&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;done&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;release&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;pre&lt;/span&gt;1 version, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;maybe&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;june&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;Stay&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;tuned&lt;/span&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8858411531903643812?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8858411531903643812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8858411531903643812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8858411531903643812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8858411531903643812'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/04/i-will-release-rc-3-version-of-xpontus.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8829790344257122927</id><published>2007-03-26T16:52:00.000-07:00</published><updated>2007-03-26T16:53:42.446-07:00</updated><title type='text'></title><content type='html'>I am taking some time off for now. I will try to get a bug fix release ready for next month which will be likely called rc3 .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8829790344257122927?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8829790344257122927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8829790344257122927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8829790344257122927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8829790344257122927'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/03/i-am-taking-some-time-off-for-now.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-706070530220393144</id><published>2007-03-19T04:39:00.000-07:00</published><updated>2007-03-19T04:41:18.447-07:00</updated><title type='text'></title><content type='html'>I have been working on a new project called &lt;a href="http://jhmlcleaner.berlios.de"&gt;JHTMLCleaner&lt;/a&gt; . The software is almost ready. I am expecting to release it in few weeks.&lt;br /&gt;I also received lots of comments about &lt;a href="http://xpontus.sourceforge.net"&gt;XPontus XML Editor&lt;/a&gt; current version. I am working on the next release too, but it will take time to get it done, the way I want it to be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-706070530220393144?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/706070530220393144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=706070530220393144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/706070530220393144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/706070530220393144'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/03/i-have-been-working-on-new-project.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7669384327432535233</id><published>2007-03-02T11:30:00.000-08:00</published><updated>2007-03-02T11:33:49.218-08:00</updated><title type='text'></title><content type='html'>I am working on the user interface and code completion of &lt;a href="http://xpontus.sourceforge.net/"&gt;XPontus XML Editor&lt;/a&gt; today.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/Reh8CJSRuhI/AAAAAAAAADI/PYdzQs21GK8/s1600-h/xpontus_completion.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/Reh8CJSRuhI/AAAAAAAAADI/PYdzQs21GK8/s320/xpontus_completion.png" alt="" id="BLOGGER_PHOTO_ID_5037412559508060690" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7669384327432535233?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7669384327432535233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7669384327432535233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7669384327432535233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7669384327432535233'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/03/i-am-working-on-user-interface-and-code.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/Reh8CJSRuhI/AAAAAAAAADI/PYdzQs21GK8/s72-c/xpontus_completion.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8599510087739247501</id><published>2007-02-27T04:13:00.000-08:00</published><updated>2007-02-27T04:15:30.811-08:00</updated><title type='text'></title><content type='html'>I am thinking about the new API of XPontus. Most stuff depends on the main window which act sometimes as a wrapper for helper classes. I should get rid of the dependencies upon the main window. I will have to rewrite the API taking into account that the editor must provide extensions points where a plugin might "be plugged".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8599510087739247501?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8599510087739247501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8599510087739247501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8599510087739247501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8599510087739247501'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/02/i-am-thinking-about-new-api-of-xpontus.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4601716485395084347</id><published>2007-02-26T10:00:00.000-08:00</published><updated>2007-02-26T10:03:55.984-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='back on xpontus development'/><title type='text'></title><content type='html'>The 1.0.0rc2 version of XPontus XML Editor(http://xpontus.sf.net) was released today. I am about to get back working on the development version. Here is the list of features to add and test :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;xml code completion&lt;/li&gt;&lt;li&gt;xpath &lt;/li&gt;&lt;li&gt;xquery and stx support for transformations&lt;/li&gt;&lt;li&gt;full caching of dtd and schemas&lt;/li&gt;&lt;li&gt;better use of the docking framework&lt;/li&gt;&lt;li&gt;virtual file system support&lt;/li&gt;&lt;li&gt;tree view for xml editing&lt;/li&gt;&lt;li&gt;xml code outline view&lt;/li&gt;&lt;li&gt;xml signature support&lt;/li&gt;&lt;li&gt;api to integrate xpontus into other applications&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/18565477-4601716485395084347?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4601716485395084347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4601716485395084347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4601716485395084347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4601716485395084347'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/02/1_26.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2357461949200664686</id><published>2007-02-20T05:01:00.000-08:00</published><updated>2007-02-20T05:02:56.560-08:00</updated><title type='text'></title><content type='html'>Here are the new user interface improvements before the 1.0.0rc2 releases. The tabbedpane now has close icons. On a double click, the document container is maximized.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LZsdvh7kOqM/RdrxaFbdABI/AAAAAAAAAC8/76ejFZ73BZg/s1600-h/xpontus-1.0.0rc2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_LZsdvh7kOqM/RdrxaFbdABI/AAAAAAAAAC8/76ejFZ73BZg/s320/xpontus-1.0.0rc2.png" alt="" id="BLOGGER_PHOTO_ID_5033600963976167442" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2357461949200664686?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2357461949200664686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2357461949200664686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2357461949200664686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2357461949200664686'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/02/here-are-new-user-interface.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LZsdvh7kOqM/RdrxaFbdABI/AAAAAAAAAC8/76ejFZ73BZg/s72-c/xpontus-1.0.0rc2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7735983797747063681</id><published>2007-02-19T05:01:00.000-08:00</published><updated>2007-02-19T05:07:36.990-08:00</updated><title type='text'></title><content type='html'>The 1.0.0rc2 release of xpontus is ready. I will build the installers this week.&lt;br /&gt;Here are the problems which have been corrected :&lt;br /&gt;- Encoding detection&lt;br /&gt;- Schema validation&lt;br /&gt;&lt;br /&gt;Options has been added to customize the token colors.&lt;br /&gt;&lt;br /&gt;Among the new features there are :&lt;br /&gt;- auto close of xml tags&lt;br /&gt;- package installers for solaris and freebsd&lt;br /&gt;- dtd and schema caching when validating xml files&lt;br /&gt;&lt;br /&gt;The code has been cleaned up and more comments have been added.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/Rdmg_1bdAAI/AAAAAAAAACw/u_qnOE-rMGI/s1600-h/screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/Rdmg_1bdAAI/AAAAAAAAACw/u_qnOE-rMGI/s320/screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5033231077097668610" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7735983797747063681?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7735983797747063681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7735983797747063681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7735983797747063681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7735983797747063681'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/02/1.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/Rdmg_1bdAAI/AAAAAAAAACw/u_qnOE-rMGI/s72-c/screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-5528451750558063324</id><published>2007-02-12T08:50:00.000-08:00</published><updated>2007-02-08T10:50:16.347-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code completion is here'/><title type='text'></title><content type='html'>Code completion(based on dtd or schema introspection) is here but still very experimental.&lt;br /&gt;Here are the remaining problems for the upcoming release :&lt;br /&gt;When content assist is enabled, the typing is very slow. &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Code completion database doesn't process dtd subsets (the parser doesn't ready any sub-dtd)&lt;/li&gt;&lt;li&gt;Plugin support is a must as lots of features will be added&lt;/li&gt;&lt;li&gt;Some code must be rewritten to take advantage of the docking framework &lt;/li&gt;&lt;li&gt;Virtual filesystem support is not complete&lt;/li&gt;&lt;li&gt;XML Catalog is incomplete too&lt;/li&gt;&lt;li&gt;XPath support doesn't support namespaces yet&lt;/li&gt;&lt;li&gt;My other project jxsltdoc is in progress, it will be added as well as a schema documentation tool(xssdoc and dtddoc)&lt;br /&gt;&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/18565477-5528451750558063324?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/5528451750558063324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=5528451750558063324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5528451750558063324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/5528451750558063324'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/02/code-completionbased-on-dtd-or-schema.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-8007574619218616498</id><published>2007-02-07T17:40:00.000-08:00</published><updated>2007-02-07T17:42:33.276-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='The outline view is completed'/><title type='text'></title><content type='html'>I finished the outline view to browse code structure and I re-coded lots of classes to make full use of the new docking framework.&lt;br /&gt;&lt;br /&gt;The latest screenshot&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/Rcp__fZOGRI/AAAAAAAAACY/e5XL19qUJCc/s1600-h/docking.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LZsdvh7kOqM/Rctw3pNhEZI/AAAAAAAAACk/F3sL4BqQl4w/s1600-h/docking.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_LZsdvh7kOqM/Rctw3pNhEZI/AAAAAAAAACk/F3sL4BqQl4w/s320/docking.png" alt="" id="BLOGGER_PHOTO_ID_5029237510146953618" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-8007574619218616498?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/8007574619218616498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=8007574619218616498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8007574619218616498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/8007574619218616498'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/02/i-finished-outline-view-to-browse-code.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LZsdvh7kOqM/Rctw3pNhEZI/AAAAAAAAACk/F3sL4BqQl4w/s72-c/docking.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-893842430956891184</id><published>2007-02-05T04:13:00.000-08:00</published><updated>2007-02-05T04:15:41.749-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new user interface'/><title type='text'></title><content type='html'>I am a little bit late for the release, working on the user interface. I want to second release candidate to be great in terms of user experience, features and usability. It will be a great move towards a full featured XML editor.&lt;br /&gt;&lt;br /&gt;Here is a screenshot of the new UI(I am making full use of the docking windows library)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LZsdvh7kOqM/Rccf1vZOGQI/AAAAAAAAACM/8Ihs_eyU-3A/s1600-h/shot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_LZsdvh7kOqM/Rccf1vZOGQI/AAAAAAAAACM/8Ihs_eyU-3A/s320/shot.png" alt="" id="BLOGGER_PHOTO_ID_5028022517098223874" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-893842430956891184?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/893842430956891184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=893842430956891184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/893842430956891184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/893842430956891184'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/02/i-am-little-bit-late-for-release.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LZsdvh7kOqM/Rccf1vZOGQI/AAAAAAAAACM/8Ihs_eyU-3A/s72-c/shot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2414502108235504298</id><published>2007-02-03T14:01:00.000-08:00</published><updated>2007-02-03T14:02:49.099-08:00</updated><title type='text'></title><content type='html'>I added syntax highlighting for XQUERY and DTD today. I will try to complete the code completion for XML the week end with some help from IRC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2414502108235504298?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2414502108235504298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2414502108235504298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2414502108235504298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2414502108235504298'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/02/i-added-syntax-highlighting-for-xquery.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4815931978656217055</id><published>2007-01-25T15:57:00.000-08:00</published><updated>2007-01-25T15:58:38.467-08:00</updated><title type='text'></title><content type='html'>I am now working on code completion. I hope to finish it and test the application before the end of the month.  Inserting the end of a xml tag automatically is done, I am working on providing XML completion via schema introspection and it won't take that long.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4815931978656217055?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4815931978656217055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4815931978656217055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4815931978656217055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4815931978656217055'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/01/i-am-now-working-on-code-completion.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-3658369543130091625</id><published>2007-01-24T03:58:00.000-08:00</published><updated>2007-01-24T04:00:32.673-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='few days left before february'/><title type='text'></title><content type='html'>The XML lexer is working! I also finished the sql, html, java, dtd and properties syntax coloring.&lt;br /&gt;I am now focusing on the outline view to display the code structure and code completion.&lt;br /&gt;&lt;br /&gt;Here is as usual the latest screenshot.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/RbdKUnAEqPI/AAAAAAAAACA/FViTldZArgE/s1600-h/zzlexer.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/RbdKUnAEqPI/AAAAAAAAACA/FViTldZArgE/s320/zzlexer.png" alt="" id="BLOGGER_PHOTO_ID_5023565627282204914" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-3658369543130091625?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/3658369543130091625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=3658369543130091625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3658369543130091625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/3658369543130091625'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/01/xml-lexer-is-working-i-also-finished.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/RbdKUnAEqPI/AAAAAAAAACA/FViTldZArgE/s72-c/zzlexer.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-4930978855608212979</id><published>2007-01-18T05:01:00.000-08:00</published><updated>2007-01-18T05:03:21.197-08:00</updated><title type='text'></title><content type='html'>I Still have a nasty bug with syntax highlighting and multiline comments. This is preventing me from working on code completion.&lt;br /&gt;&lt;br /&gt;See the latest screenshot&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LZsdvh7kOqM/Ra9wCjRaL6I/AAAAAAAAAB0/v9KbVZqugD0/s1600-h/Screenshot-3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_LZsdvh7kOqM/Ra9wCjRaL6I/AAAAAAAAAB0/v9KbVZqugD0/s320/Screenshot-3.png" alt="" id="BLOGGER_PHOTO_ID_5021355298671701922" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-4930978855608212979?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/4930978855608212979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=4930978855608212979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4930978855608212979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/4930978855608212979'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/01/i-still-have-nasty-bug-with-syntax.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LZsdvh7kOqM/Ra9wCjRaL6I/AAAAAAAAAB0/v9KbVZqugD0/s72-c/Screenshot-3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-6303239075796655339</id><published>2007-01-13T09:11:00.000-08:00</published><updated>2007-01-13T09:12:26.098-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='almost there'/><title type='text'></title><content type='html'>I still have few bugs with the xml syntax colorer. Javacc is tough but interesting!&lt;br /&gt;&lt;br /&gt;The latest screenshot&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/RakS6jRaL5I/AAAAAAAAABo/3ker6T_QlBA/s1600-h/zzlexer.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/RakS6jRaL5I/AAAAAAAAABo/3ker6T_QlBA/s320/zzlexer.png" alt="" id="BLOGGER_PHOTO_ID_5019564056791101330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-6303239075796655339?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/6303239075796655339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=6303239075796655339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6303239075796655339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/6303239075796655339'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/01/i-still-have-few-bugs-with-xml-syntax.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/RakS6jRaL5I/AAAAAAAAABo/3ker6T_QlBA/s72-c/zzlexer.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-2140896434097163774</id><published>2007-01-11T04:06:00.000-08:00</published><updated>2007-01-11T04:09:58.513-08:00</updated><title type='text'></title><content type='html'>I am almost done with the lexer stuff. Syntax highlighting almost behaves correctly. In few days, I will have a correct syntax colorer for common languages and add errors tooltips.&lt;br /&gt; &lt;br /&gt;    I have yet to start thinking about the best way to provide code completion. It shouldn't be that hard, but it must be fast!&lt;br /&gt;&lt;br /&gt;Here is another screenshot of the syntax colorer&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LZsdvh7kOqM/RaYo-TRaL4I/AAAAAAAAABc/4uJCM24fItw/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_LZsdvh7kOqM/RaYo-TRaL4I/AAAAAAAAABc/4uJCM24fItw/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5018743885541289858" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-2140896434097163774?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/2140896434097163774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=2140896434097163774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2140896434097163774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/2140896434097163774'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/01/i-am-almost-done-with-lexer-stuff.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LZsdvh7kOqM/RaYo-TRaL4I/AAAAAAAAABc/4uJCM24fItw/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18565477.post-7670094332163688620</id><published>2007-01-02T07:04:00.001-08:00</published><updated>2007-01-02T07:39:03.718-08:00</updated><title type='text'></title><content type='html'>I am dealing with multiline tokens and I am making some progress. Still have to find a way to set the right amount of text to parse and color the tokens according to their type. The offset of the token is not computed correctly. Sometimes I have text already parsed appearing at strange locations.&lt;br /&gt;&lt;br /&gt;I believe I will be able to solve it soon. The next step will be highlight errors and adding code completion.&lt;br /&gt;&lt;br /&gt;I must release in the middle of december!&lt;br /&gt;&lt;br /&gt;Here is a screenshot of multiline tokens handling&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LZsdvh7kOqM/RZp8jA7F0fI/AAAAAAAAABQ/frbYAW7NM0g/s1600-h/zzlexer.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_LZsdvh7kOqM/RZp8jA7F0fI/AAAAAAAAABQ/frbYAW7NM0g/s320/zzlexer.png" alt="" id="BLOGGER_PHOTO_ID_5015458076015579634" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18565477-7670094332163688620?l=yveszoundi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yveszoundi.blogspot.com/feeds/7670094332163688620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18565477&amp;postID=7670094332163688620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7670094332163688620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18565477/posts/default/7670094332163688620'/><link rel='alternate' type='text/html' href='http://yveszoundi.blogspot.com/2007/01/i-am-dealing-with-multiline-tokens.html' title=''/><author><name>Yves Zoundi</name><uri>http://www.blogger.com/profile/08473720919389407655</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://bp0.blogger.com/_LZsdvh7kOqM/R1rkfCvQteI/AAAAAAAAAEk/eOUlZagy1lU/S220/profile.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LZsdvh7kOqM/RZp8jA7F0fI/AAAAAAAAABQ/frbYAW7NM0g/s72-c/zzlexer.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
