<?xml version="1.0"?>
<!-- name="generator" content="blosxom/2.0" -->
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">
  <channel>
    <title>Stefan Bodewig's Weblog   </title>
    <link>http://stefan.samaflost.de/blog</link>
    <description>Mixed Content</description>
    <language>en</language>

<item>
  <title>Java Client Library for QMQP</title>
  <link>http://stefan.samaflost.de/blog/en/oss/QMQP/java_client_lib_for_qmqp.html</link>
  <description>
&lt;p&gt;In a project at &lt;a href=&quot;http://www.innoq.com/&quot;&gt;innoQ&lt;/a&gt; we're
using &lt;a href=&quot;http://cr.yp.to/proto/qmqp.html&quot;&gt;QMQP&lt;/a&gt; to quickly
queue mail to an MTA for delivery.&lt;/p&gt;

&lt;p&gt;Even though - or maybe because - the protocol looks rather simple,
we didn't find any open source library for this.  We've decided to open
source our own implementation &lt;a
href=&quot;https://github.com/innoq/QMQP-Java&quot;&gt;QMQP Java&lt;/a&gt;, version 0.1
is available from Maven central (com.innoq.qmqp:qmqp-client:0.1) under
the Apache License 2.0.&lt;/p&gt;

&lt;p&gt;This initial release is strongly tailored to our project's needs.
If you want to use it and find it lacking anything, don't hesitate and
use a pull request or open an issue at github.&lt;/p&gt;</description>
</item>
<item>
  <title>Apache Ant 1.8.4 and Commons Compress 1.4.1 Security Bugfix Releases</title>
  <link>http://stefan.samaflost.de/blog/en/Apache/Ant/184_dos_release.html</link>
  <description>
&lt;p&gt;In case you have missed it, there is a flaw in the code that writes
  bzip2 archives in both Ant and Commons Compress.  There are new
  releases for both of them, so go grab
  them: &lt;a href=&quot;http://ant.apache.org/bindownload.cgi&quot;&gt;Ant&lt;/a&gt;, &lt;a href=&quot;http://commons.apache.org/compress/download_compress.cgi&quot;&gt;Commons
  Compress&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As part of the process of creating bzip2 compressed blocks the
  input data (usually in chunks of 900kb) is sorted (during the
  Burrows-Wheeler transformation, if you want to know).  The only
  sorting algorithm present in the bzip2 classes prior to the security
  release is very efficient for the average case but shows
  extraordinarily bad performance for very repetitive inputs.  For
  certain inputs the bzip2 task took two hours on my really fast work
  notebook (at 100% CPU for a single core) while it finishes in less
  than two seconds with Ant 1.8.4.&lt;/p&gt;

&lt;p&gt;These inputs have to be specially crafted, it is very unlikely you
  will face them in the wild.  The flaw turns into a security issue if
  you are providing a public service that compresses input created by
  arbitrary users - maybe a public build server or an archiving
  solution.&lt;/p&gt;

&lt;p&gt;The bzip2 code in Ant (and all forks that stem from it, like
  Commons Compress) was derived from an early version
  of &lt;a href=&quot;http://www.bzip.org/index.html&quot;&gt;Julian Seward's
  libbzip2&lt;/a&gt;.  Starting with 0.9.5 libbzip2 detects if sorting is
  taking too long because of bad inputs and switches to a different
  sorting strategy in such cases.  The fix in the two releases now
  consists of porting this fallback sorting algorithm from C to
  Java.&lt;/p&gt;

&lt;p&gt;While porting this I learned a lot.  I read several academic papers
  in order to understand what was actually going on.  It felt like I
  was back in University again and it felt good.&lt;/p&gt;

&lt;p&gt;Many thanks to David Jorm of the Redhat Security Team who uncovered
  the issue.&lt;/p&gt;</description>
</item>
<item>
  <title>ROCA - Resource-Oriented Client Architecture</title>
  <link>http://stefan.samaflost.de/blog/en/unsorted/roca.html</link>
  <description>
&lt;p&gt;Some of my colleagues at &lt;a href=&quot;http://www.innoq.com/&quot;&gt;innoQ&lt;/a&gt;
have put together a bunch of rules about what makes up a web
application that actually uses the web rather than hides it.&lt;/p&gt;

&lt;p&gt;There is more on &lt;a
href=&quot;http://www.innoq.com/blog/st/2012/03/announcing-roca/&quot;&gt;Stefan
Tilkov's blog&lt;/a&gt; and the &lt;a href=&quot;http://roca-style.org/&quot;&gt;ROCA
website&lt;/a&gt;.  Discussion (&lt;a
href=&quot;http://roca-style.org/discussion.html&quot;&gt;there&lt;/a&gt;, not here) is
more than welcome.&lt;/p&gt;</description>
</item>
<item>
  <title>Apache Ant 1.8.3 Released</title>
  <link>http://stefan.samaflost.de/blog/en/Apache/Ant/183.html</link>
  <description>
&lt;p&gt;yesterday we released Ant 1.8.3, go grab it from &lt;a
href=&quot;http://ant.apache.org/bindownload.cgi&quot;&gt;the download page&lt;/a&gt;.
By pure coincidence it was released on a leap-day.&lt;/p&gt;

&lt;p&gt;This release really mostly is a bug fix release, see the &lt;a
href=&quot;http://www.apache.org/dist/ant/RELEASE-NOTES-1.8.3.html&quot;&gt;release
notes&lt;/a&gt; for a complete list.  There isnt anything major sticking out
to me, but I know people have been bitten by some of the bugs - like
forked Java processes hanging when they read from System.in - so for
them the new release was important.&lt;/p&gt;

&lt;p&gt;The dev team has decided to drop Java 1.4 support (as Ant's
runtime) for trunk, so this may likely be the last release supporting
Java 1.4.  We have prepared a branch so we may be able to create more
1.8.x releases if a major bug raises its head.  For trunk this means
we'll be able to start using &quot;modern&quot; features like generics.  It also
means I can merge some improvements like Zip64 support from Commons
Compress into Ant.&lt;/p&gt;

&lt;p&gt;One of the fixes introduced a new class in order to better
multiplex between System.out and System.err when forking a new
process.  This allows Ant 1.8.3 to be detected by either&lt;/p&gt;

&lt;pre class=&quot;code&quot;&gt;
  &amp;lt;antversion property=&quot;Ant-1.8.3-or-later&quot;
              atleast=&quot;1.8.3&quot;/&gt;
&lt;/pre&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;pre class=&quot;code&quot;&gt;
  &amp;lt;available property=&quot;Ant-1.8.3-or-later&quot;
             classname=&quot;org.apache.tools.ant.util.LineOrientedOutputStreamRedirector&quot;/&gt;
&lt;/pre&gt;

&lt;p&gt;It's been the first time I acted as Ant's release manager since Ant
1.1 more than eleven years ago, quite a bit has changed WRT process
but also automation since then.  It wasn't as painful as I feared it
to be, largely because we no longer ship optional tasks that require
third party jars that cannot be downloaded freely.&lt;/p&gt;</description>
</item>
<item>
  <title>Moved my Tiny OSS Libs to GitHub</title>
  <link>http://stefan.samaflost.de/blog/en/unsorted/moved_oss_libs_to_github.html</link>
  <description>
&lt;p&gt;I've been keeping a small &lt;a
href=&quot;http://stefan.samaflost.de/blog/en/Java/GWT/gwt_ant_tasks.html&quot;&gt;Antlib&lt;/a&gt;
for GWT and a &lt;a
href=&quot;http://stefan.samaflost.de/blog/en/dotNet/anttask_for_netbuildtools_1.0.1.html&quot;&gt;DLL
with NAnt and MSBuild tasks to run Ant&lt;/a&gt; in a local darcs
repository.  Now I've decided to not maintain them here anymore but
rather move them to github, so they now are at &lt;a
href=&quot;https://github.com/bodewig/gwttasks&quot;&gt;https://github.com/bodewig/gwttasks&lt;/a&gt;
and &lt;a
href=&quot;https://github.com/bodewig/Ant4NantAndMSBuild&quot;&gt;https://github.com/bodewig/Ant4NantAndMSBuild&lt;/a&gt;
respectively.&lt;/p&gt;

&lt;p&gt;For the migration of my - trivial - darcs repos I used &lt;a
href=&quot;https://github.com/purcell/darcs-to-git&quot;&gt;https://github.com/purcell/darcs-to-git&lt;/a&gt;
and it worked like a charm.&lt;/p&gt;</description>
</item>
  </channel>
</rss>