PicoContainer 2.5 and JRemoting 1.0 have been released.
July 30, 2008
Documentation is a hard thing to convince any team to do, whether you pay them or not. Over the years Open Source in particular has been scarred by poorly documented projects.
July 30, 2008
Well not quite, but I am sure it is what Google wanted to tell me...
June 22, 2008
..was that it made for very nice decomposed, yet very declarative applications. A year after getting involved with Inversion of
Control (IoC), I found myself as Head of Development of a dot-com in London and hired Joe Walnes as one of the engineers. Amongst many things that
I found hard to convince the developers of the need for, was IoC.
Mar 23, 2008
I bumped into Bob Lee at Greg Stein's birthday party in San Francisco last night. Tis always a pleasure. Despite the drink/music/company we got into a debate about Guice and its love of type-safety. Congrats on the Jolt award win by the way Bob and Kevin.
My proposal was that, in addition to the binding-annotations magic of Guice they could soften a little and learn to live with parameter names as another way to disambiguate. Developers using Guice (or PicoContainer/others) sould be able to choose utter runtime-type-safety or step back a little and just live with the fact that no matter how hard you try there can always be a binding mismatch somewhere and good testing is the way to mitigate that risk...
Mar 16, 2008
Every one else seems to be chucking their opinion into the Web 3.0 debate, so I think I will too.
Oct 13, 2007
Dependency Injection is that magic thing that aids design and testability. Unfortunately Servlets have never been injectable components. Well not according to Sun anyway. Many years ago we saw to it that the excellent Jetty could handle Servlets with constructors specifying their argument requirements. Time has come to talk about it and the required death of web.xml
Jul 22, 2007
We have been working on this for a while, and it is now in Maven2 repositories and ready for use. Lots of new features including the leveraging of parameter names for configuration and component disambiguation.
Jul 16, 2007
JavaFX Mobile is
just SavaJE recently acquired by Sun, bundled with Java FX and given a new marketing impetus.
Read on for application types and some Dependency Injection thoughts about what this stuff should be.
May 9, 2007
A
lesser-known source-control best practice I've been pushing for a number of years is Branch by Abstraction. The suggestion is that you can convene large sets of developers in a single trunk and get then to continue to commit to a single place without having to spawn "short lived feature branches" when some large change could mean that the build is going to be hosed for a number of weeks while the team gets it right. Those branches just end up running and running....
Apr 26, 2007
Apart from being able to rejuvenate older code-lines, it might be nice to learn where the JVM and the Java Language Spec (JLS) falls short in respect of being able to host C code. Two technologies promising to make C runnable on a JVM....
Apr 08, 2007
Waffle - a great technology for developing Java web applications...
Mar 16, 2007
Java 6 has shipped of course. Without a feature that the committee overseeing it thought would be good: Parameter name access.
The committee had a design that there was consensus for, but Sun suggested there was no more time to finish it a few months before shipping. Sun, themselves, were against the availability of parameter names in the way that other members of the committee had settled on. Instead they wanted some annotation above the methods that one wanted to have parameter name access for. I for one, felt that was a huge cost and illustrated that we had learned nothing from the terseness lessons from the Ruby crowd. Ruby and Rails are making massive inroads into enterprise Java and .Net development from what I hear, for multiple reasons of course.
Anyway, a -g compiler option would have been far better. Sun needed to get over the worry that backwards compatibility needs to be assured forever. If someone wants to hardcode say getMethodByParameterNames("addTwoNumbers", "numOne", "nunTwo") and the later release of that dependent number-adding.jar might spell fix nunTwo to numTwo, then on their own head be it. The potential changing of the parameter names was the big driver for the annotation design. To me a Java method signature is forever method name + arg types, and should never be expanded to include parameter names, which was not explicitly stated, but is implicit if the parameter names are immutable.
So enter ParaNamer .....
Mar 14, 2007
Simple Wars
A short description of the Agile anti-pattern of "Simple Wars".
Mar 3, 2007
Subversion backend
You can configure cozmos to use a subversion repository instead of the build in unversioned one. Whatever authentication and authorization implementation the subversion repo had (via mod_dav_svn) will control the permissions for the editing of pages. Its slightly ineligant in use (at least first time) as the URL for publishing is different to the one for browsing. https://svn.foo.org/mycozmosroot/ as opposed to http://mycompany.com for example. Once set in SeaMonkey's preferences (for that site) it is remembered by the browser for subsequent launches....
Jan 15, 2007
Cozmos project at Codehaus
Kent Spillner started this, and I've been making some commits to
it.
http://cozmos.codehaus.org/
(click thru for screenshots)
The project is not eating its own dogfood yet - its
website is just a static page under simple DAV control. For good
reasons - the
version of Cozmos that we have presently is more like original wikis in
that there is no authentication and anyone could change any page or
upload arbitrary JSPs for server side execution (ouch).
It turns out that there are precious few lines of Java to code
this. Well, it depends on
SiteMesh which is a
lot of lines of Java, but that does not count as its a provided
library. It should be pretty easy for the PHP community to clone
using
PhpMesh.
Similarly Ruby/Python with whatever decorating technologies fit...
Jan 07, 2007
The development community has struggled to deliver a fantastic documentation tool or technology that is universally popular. There have been many attempts at a system that allows developers to document projects or users to edit more general content easily. When XML felt like a cure all, XML generated into sites was a popular option. Refer DocBook and predecessors.
One might have thought that Wikis were that panacea, but there are grumblings. The barrier to entry for content editing may have been lowered and needless workflow stripped away, but there is real reticence about text areas in web pages for editing. Whether a *cunning* markup language or a fancy Web2.0 WYSIWYG editor there are some that elect to not edit content that way. You can try to compare and contrast many of the wiki implementations, but there grumbles persist. Choose your best from http://www.wikimatrix.org/ and I bet there are still grumblings on use. Some people think tagging is a redeeming factor, particularly for those wiki apps that did not retrofit the feature, but the in-a-webpage gripe persists. Personally I'm sick of that side of wikis. Sorry Ward.
I outline here an alternative to wikis for content editing. I think it is quite smooth to use. Others may not.
Dec 06, 2006
Spam affects all people with email addresses that are published on the web. It also affects many who had gone to some length to keep their address private. Its getting worse, and those that are making money from it are innovating rapidly to defeat the mail filters leveraging the theories of Reverend Bayes. It's a war.
Rather than obsolete email (or the ubiquitousness of the @ sign) or charge for email, perhaps more tricks like the Sender Policy Framework (SPF) idea need to be rolled out. SPF has flaws, by the way. Amongst other things it can push the roll out of SPF ... early adopters can see no benefit.
Many years ago on the mail list for Apache's Java Mail Server (JAMES) an extension to SMTP was proposed and discussed. The idea: There needed to be a phased update of mail servers to a new standard whereby the origin of emails could be confirmed. "Did You Send This" (DYST) was born...
Jul 27, 2006
Ruby/Rails etc etc are pummeling Java presently. At least, the ranks of
Java's
intelligentsia are hemorrhaging to a Ruby/Rails world and not coming
back according to their current plan. From
James Duncan Davidson
some years ago & swathes of other Apache people since,
to every-loves-to-hate-him-online-but-he's-great-fun-really
Obie Fernandez.
Let us not forget
Dave
Thomas or
Bruce
Tate (both
ticked
at Greg Luck's
blog
post) dissing the hype surrounding Ruby/Rails.
We are currently witnessing the closeout of Java 6's feature set and
delivery looming FCS, and there little in it to react to Ruby or
Python's terseness. Now, Java can't quickly become a dynamic
language and maybe should not for its core, but perhaps a pragmatic
goal is attainable: host dynamic languages more effectively.
The
likelihood is that people will code applications that are hybrid
dynamic and static. Consider a Hibernate (or iBatis or
http://esper.codehaus.org/)
Java tier used by the 4GL-esqe Rails via JRuby (still a 3GL)
all in a single
JVM. Java is lacking some features that facilitate a dynamic
excellence, despite being rooted in a traditional static Java.
It
all centers around methods and method access I think. Some will claim
I'm stretching some points, but the success of integration with
scripting languages or the robustness of Rails-like libraries for Java
rests on the simplicity and flexibility of reflection in Java.
I propose two things in the remainder of this blog entry. Making method
access (almost) part of the language, and Granting access to methods by
their parameter names before Sun gets round to it. Read on....
Jul 30, 2006
Some notes not so much on the technology presented at OSCON, but on some social message speakers.
Jul 27, 2006
Some ranting on Unified Process (UP) being painted as an Agile methodology.
Jul 19, 2006
Grumble grumble...
If I'd have been asked to vote, I'd have voted against it. It has increased the JDK size and there was nothing about Derby that made it hard to work with after a download/install.
Things in the JDK have a duty to have fairly stable APIs. Is that true for Derby, or given the nature of JDBC is its jar not subject to stability?
I cast my mind back to Xerces' original inclusion in the JDK. The SAX api provided a similar boundary to developers. How did that work out? I think the frustrations over package naming and the voodoo required to override the version distributed are worth considering when it comes to simply taking things from the Open Source world.
Jun 19, 2006
Though it may be nice to consider XStream as a tool for compatibility with .Net, XML is not the lingua-franca of web pages. JavaScript is, and it has a defacto standard for 'object passing' in JSON. With a proposed new XStream 'writer', arbitrary Java objects can be transformed into JSON for sending to web pages to play their part in JavaScript enhanced web applications.
Jun 14, 2006
How to use the excellent XStream to encode/decode RSS/other documents. Useful if you want to easily process RSS feeds in Java without ugly schemas or heavyweight tool-kits
May 21, 2006
I spoke at "Agile India" a couple of days ago. The major presentation I did was an opinion piece on Dependency Injection (alongside Agile practices) versus Big Up-Front Architecture (BUFA). It ran for an hour including questions.
May 8, 2006
Ian Cartwright and I have written a paper after some experimentation with trying to make various .Net and Java containers and web servers communicate over the wire to each other using Web Services and auto-generated WSDL. We concluded that is not easy as many of the industrial strength J2EE servers or Web Services toolkits had a different view to the similar products in the Microsoft stack as to how to interpret and bind to a WSDL doc programatically. Anyway, we soon dumped Web Services and tried a REST inspired design that was very light on spec. Read the four-page PDF.
May 6, 2006
Laptops and magnets don't mix plus a $3 home made tripod mount for the iSight.
May 6, 2006
The distilled wisdom from the question I posed on a Java 6 feature from a month or so ago.
May 6, 2006
A question/issue from inside the Java 6 (Mustang) committee discussions on parameter names.
Mar 20, 2006
A downloadable Shockwave or PDF presentation as shown at the Chicago Java user's group a week ago.
Jan 27, 2006
Contrasting Ruby and JavaScript for a hypothetical Web3.0 while considering thick versus thin experience.
A write-up of a pub debate with the Chicago Ruby users group.
Jan 10, 2006
Selenium being driven from JUnit is my preferred mode of operation.
I've made a move of Selenium testing the PetSoar app under JUnit
control......
May 7, 2005
OK, here is a movie of Selenium in action. Most of the hard work for
Selenium.....
Apr 26, 2005
A seven page presentation of JMock, otherwise told as a Crash Course
for a client........
Apr 26, 2005
I was chatting to
<shameless-name-drop>Brian Behlendorf</shameless-name-drop>
about the integration between Microsoft's Sharepoint, IE and Word
2003.......
Apr 11, 2005
EDS and friends are in some sort of alliance. Not in itself newsworthy
from my point of view.
What is newsworthy is the group's trading name is 'Agility
Alliance'.......
Mar 19, 2005
We
(Europeans) really need a
'Get Firefox' style button
programme to
marshal efforts against software patents......
Mar 03, 2005
Selenium: kick ass web testing
for free.
In the fall of last year, Jason Huggins showed me "JavaScript
Functional Test Runner" ...
Mar
02, 2005
Casting an eye over the eXtreme Programming
rules
page - I
can't help feeling ...
Mar 02, 2005
Ward Cunningham, on an Agile versus Traditional panel at a testing
conference, when posed a question ...
Oct 19, 2004
Inspired by our use of txt2tags for the CDI book, Aurelio Marinho
Jargas has made some docs changes to the Python txt2tags...
Oct 17, 2004
Oct 12, 2004
July 30, 2004
June 11, 2004
Too many tools with too many forced source/version control choices.
When
deploying an application that manages human readable pages somehow,
look
under the hood and consider how important it is for that content to...
June 05, 2004
OK so its been over a year since Aslak and I got drunk at my flat and
started PicoContainer...
June 05, 2004
I was quite surprised to find that google had no entries at all for
WinRunner
best practices. So I guess this is the first. The only one I guess for
a
short while :-) The first observable fact is that...
April 28, 2004
Like many others, the UK government is mulling an identity card system.
I
welcome it, with reservation... If the card will electronically provide
multiple identifying characteristics for an individual, then it is
possible
that there could be at least some...
April 22, 2004
Not my words at all, but I agree with every single one:
http://www.perforce.com/perforce/bestpractices.pdf Actually reading
the, if
you believe it, will increase your pain if you work with inferior SCM
solutions. And believe me, there are many that sell well...
April 22, 2004
From Mike Mason's IoC taken too far entry, Mike states that he has a
problem
with .. /**
* A Log4J logger
instance -
initialised using IoC rather than
* static
logging to
cut down on the number of Logger...
April 20, 2004
I woke up the other night in a cold sweat, as it occurred to me in a
nightmare that Thicky is turning out to be the type of thing that a
developer
could build Lotus Notes with. Is the whole...
April 16, 2004
For those uninterested in history See the SourceForge homepage. Err,
because
of a SourceForge authority glitch, these pages are temporarily hosted
here.
Thicky is the realisation of an idea that I had in 2001. As head of
development at Digital...
March 31, 2004
In a blog entry xOP some months ago, I outlined what I felt about OOP,
COP
and AOP and their relationships to each other. In recent discussion
with Dave
Fellows and James Greenwood some more things about components and
object...
March 25, 2004
It may be too wedded it its host environment (The JVM and rt.jar), but
groovy
is the buzz language of the moment. In my telling of the story, I'm
often
heard saying something like this: "Groovy in the natural intersection...
February 16, 2004
Java and C# support main as an entry point for applications. The static
nature of this, and the fact that it is not subject to an interface
contract,
often leads applications developed for this entry point to not be
components....
February 16, 2004
We've had a moment of clarity on the project. It now definately has
connotations of scripting about it. Both general scripting and bespoke
ones
for things like servlet and webwork. Flushed from that sucess we, we'll
be
moving towards MicroContainer....
February 12, 2004
OK, so I am doing a stint of work on an AS400 for a major internet
bank. The
things you have to do for ThoughtWorks! We quickly realized that you
cannot
unit test RPG. You can integration test it though......
February 12, 2004
OK so the lame desktop application that I penned with others a couple
of
years ago has languished for quite a while. I'm currently running
through the
codebase removing Avalon and making it a full Constructor Injector IoC
solution. It's...
January 24, 2004
In order to aid type3 IoC and support mocking we either have to
interface/impl separate everything, or have public empty constructors
on real
classes (that we want to mock). The empty ctor thing goes against the
grain
of a type3...
December 23, 2003
In work (nameless energy trading co in the City of London), two
projects that
are in my periphery as well as the one I work on are moving to type3
IoC. Two
are C#, one is Java/Swing. Chris Stevenson and...
December 23, 2003
It would be nice to use Joe's XStream (XML Java serialization tool) for
an
new AltRMI transport. Oh for another few hours in the working week!
Anyone
care to start a small SourceForge project and add me as a courtesy...
December 05, 2003
Here it is :-
http://www.sys-con.com/story/?storyid=38102&DE=1...
December 05, 2003
At XPDay last night, we talked of a new way to unit testing. Apparently
it
was in the collective unconscious though (Owen Rogers had thought of it
as
well). EyeballUnit takes snapshots of GUIs (howfully under script
control)
and in...
December 03, 2003
EOB 1.1 got released at the weekend. Jetty, QZarch and AltRMI upgraded.
Not
really newsworthy as EOB 2.0 is being readied....
November 10, 2003
I'm playing with Rhino for the sake of an alternative markup language
to XML
for the assembly of configuration of Pico Components. The script looks
pretty
neat, and way easier on the eye than XML. When Groovy is ready, there...
October 25, 2003
Pico practices (refer http://www.picocontainer.org) apply to .Net too.
DotNet's 'Properies' feature is where picoification has problems.
DotNet
makes good use of properies for its Data Binding feature. Data Binding
requires that properties have getters and setters in order to be...
October 16, 2003
Being on a .Net project at a ThoughtWorks client site, and using Visual
Studio 2003, it is apparent that code is not as refactorable as it
would be
for Java and IDEA/Eclipse. As such the cost of refactoring is higher....
October 16, 2003
The Core Developers Network is currently running sessions in London on
J2EE,
EJB, JBoss, Geronimo, JDO, Servlet stuff, deployment etc. See their
website
These guys are the experts....
October 07, 2003
A Collague on a .Net project was reticent about using a PicoContainer
design
for IoC separations of a compoent model as one more DLL import would be
too
much. It is important to point out that Pico is a design...
October 07, 2003
It appears to me that there there is a point where Swing becomes
compelling.
If you have a simple single user GUI app that requires DB persistence
for
fields in the form, choose MS Access (The original Data Binding
design)....
October 02, 2003
Well, we projected this in a loop for laughs a few minutes after Aslak
did
it. AVI Movie. Might need DIVX decoder to make it look prettier. Find
that
here....
September 26, 2003
Some weeks ago Chris Stevenson, Aslak and Jon Tirsen gave a
presentation to
Roy (the TW CEO) on SEDA, IoC aamd AOP. I drew a small timeline diagram
to
illustrate when I though things had happened in terms of paradigms....
September 24, 2003
Again from yesterday at JAOO. Simon Singh (famous author of Fermat's
Last
Threorum and The Code Book) sought two volunteers for a visual demo of
cypto.
He was interested in the gender of vounteers. Squinting into the
audience he
asked...
September 23, 2003
In conversation today at JAOO, Aslak suggested to Ward Cunningham that
he
might want to have a "wiki" at SourceForge for his FIT project.
Class....
September 22, 2003
OK, keeping this short ... App.config is a terrible idea. It does not
make
testing easy. It is very un-IoC. It is tightly coupled. refer updates
below
Update - 23rd Dec 2003 OK OK, so I am somewhere between wrong...
September 17, 2003
I promised not to quote blog content of others, but could not resist
this
one. Joe today on the pico list :- "I once dreamt about Lego, sex and
JMS,
all at the same time. It was an interesting experience....
September 17, 2003
Erik Dorenburg and Damien Guy were working on a Hibernate demo for
Enterprise
Object Broker. Great work apart from the jar dependancy hell :- U
lib/c3p0.jar U lib/cglib-asm.jar U lib/commons-beanutils.jar U
lib/commons-collections.jar U lib/commons-dbcp.jar U
lib/commons-lang.jar U
lib/commons-logging.jar U lib/commons-pool.jar...
September 06, 2003
[Ulrich Mayring to Leo Simmons today on dev@avalon.apache.org - both
Avalon
buddies] > Unit tests are a reasonable alternative [ to
documentation - Ed
] I disagree. Unit tests are something very different from
documentation.
IMHO unit tests are useless,...
September 04, 2003
Discussed at length tonight with ThoughtWorkers at GeekNight. I love
it. As
per practices entry below it goes hand in hand with IoC and
interface/implementation separation (which I do early). Talked over a
project
at my current client site with...
September 03, 2003
With Inversion of Control (IoC) we have seen the idea touted and sold
hard
over five years. Avalon is the most prominant of the frameworks
honoring this
ideal. With westpect to IoC, the OO software world is split into the...
September 03, 2003
(clipped from Everything2) The terms Big-Endian and Little-Endian are
from
the Lilliput episode of Gulliver's Travels, where they are satires on
the
Protestant and Roman Catholic religions, and their effect as factions
in the
politics of the two rival and...
September 03, 2003
This has resonated with me for a while. Should a team strive for a
single
implementation of a thing (if there are differing opinions) or allow
diversity. Diversity could be at any level. It could be at
implementation
where the...
September 03, 2003
...gets a release. See PicoContainer Site...
August 16, 2003
Joe asked many of us to prepare their early practices. He drew a map of
them
"X causes me to do Y". It was very smart. He took it to XtC where it
became
name the patterns you use. Here's...
August 07, 2003
Will be at XtC tomorrow to be interviewed on my patterns and practices.
Joes
idea is taking up a whole night....
July 28, 2003
AltRMI now has transaction (client context) support. Enjoy :-)
May 6, 2003
Feb 17, 2003
Feb 17, 2003
AltRMI & EOB
releases
Well, I shipped another
version. It will go 1.0 in about
a month I
guess. A couple of months after ...
Jan 13, 2003
AltRMI uses two commons comps now. Attributes and
HTTPClient. Both
require Commons Logging. I'd prefer it if highly reusable
beans
did not ...
July 28, 2003
This is proving difficult to implement. I'm using Jetty in
the
test-first development of this transport and Jetty is really
sweet ...
Dec 21, 2002
Well I've finally picked this up again. There is a long list
of
tasks
to do. Upgrade of Phoenix, use of MetaGenerate, Upgrade of
AltRMI.
I've already ...
Oct 4, 2002
I finished MetaGenerate and it works quite well for all the xdoclet
using blocks in the Apache codebase. Much smaller ...
Sep 30, 2002
Using Joe's QDox, and in 2 hours with a hangover I managed to create a
sub-sub-sub-project at Apache called 'MetaGenerate'. It is
basically ...
Sep 28, 2002
SPAM. Sigh. It won't even start to get fixed until
SMTP
servers have
a mechanism to athenticate each other (callback with a digest etc).
Sep 5, 2002
Andy Pols (no blog) is reading a fairly old book by Donald P
Reinertsen called Managing
the Design Factory. A
highly compressed ....
Sep 3, 2002
Returning to a quest I have been on for a long time:-
Automatically
generating class diagram gifs under Ant control. What I want
is
some
form ....
Aug 16, 2002
JoeJoeJoe (Walnes) and Charles Lowell (fellow Thoughtworkers) were
working on Joe's idea of a way of firing out async message invocations
over AltRMI. Methods eligible ....
Aug 16, 2002
Mike Cannon-Brookes has a great
article
on
EJB and why it is not everthing in the Java application serving
world.
It is a great starting point those interested in ....
Aug 12, 2002
A u-turn I have made in recent years is one on rewrite. It
was
born from two things. First was Martin Fowler's Refactoring
book
- not
that we were not doing it before the book, just that we never really
advocated it was right. An ex-CTO (and still a friend) of mine
put
it as "You say refactoring, I say you fucked up" ....
Aug 12, 2002