Last updated : 01/08/2002; 18:46:34

Joe's Jelly

Rambling on and on about Software Development, Java and Extreme Programming.

NAVIGATION >>

/WIKI /WEBLOG /THOUGHTWORKS /OPENSYMPHONY /EMAIL

:: ELSEWHERE
xp developer wiki
c2 xp wiki
rebelutionary
the server side
joel on software
cafe au lait
javaworld
sd magazine
jakarta
:: BACKLOGS
July 2002
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
May   Aug



Click here to visit the Radio UserLand website.

:. 30 July 2002

  6:14:29 PM  

Subversion hits Alpha.- woot. I would use this over CVS, except that my source control system is definitely not something I want to find bugs in (as I use it daily). That's a problem I think. Hopefully when it gets more stable, more users etc - we'll move to it. Although if everyone feels the same way, we're all screwed [rebelutionary]

I'm excited about Subversion. I've tried lots of VCS packages of which I've only come across 2 I like (CVS and Perforce). Unfortunately both have their problems - and I feel embarresed recommending them sometimes because of it. Subversion seems to address ALL of my issues.

However, a very critical factor in the success of Subversion is the client. While a command line is critical, 90% of operations are simple things that require a nice visual interface. Tortoise is a very elegant solution for CVS, as is Eclipse - Subversion will struggle until it has its own equivalents.


  5:58:27 PM  

We all have Java Peeves. Here are mine.


  5:48:29 PM  

Charles' Six Rules of Unit Testing.

Charles' Six Rules of Unit Testing:

  1. Write the test first
  2. Never write a test that succeeds the first time
  3. Start with the null case, or something that doesn't work
  4. Don't be afraid of doing something trivial to make the test work
  5. Loose coupling and testability go hand in hand
  6. Use mock objects

Read Six Rules of Unit Testing for the whole story...

[The Desktop Fishbowl]

YES, YES, YES! These are the same rules I live by. I would also add:

7. Perform integration testing too.

Mocks make it really easy to test very fine grained functionality but testing everything works together is also important.


  5:45:54 PM  

Javaspaces.

Brett Morgan asks what happened to JavaSpaces? My two cents is that Javaspaces is a really neat solution in search of a problem. It stores data, but it's not a database. It sends messages but it's not a message-queue. It's networked shared memory, but there's always some more convenient, more familiar solution. One day, I'll find a problem that JavaSpaces is more suited to than anything else, but I'm yet to find it.

Oh, and on top of that, the overhead of working through Jini is decidedly non-trivial.

[The Desktop Fishbowl]

Last week I was helping out on a project that was turning into an integration nightmare - there were servers and clients and guis and databases and message queues and xml streams and kitchen sinks all over the place. We started drawing everything we knew about the architecture on a whiteboard and as the day went on we remembered new dependencies bit by bit. At the end of it our diagram looked like a well known Mr Man. Scalability was posing a nightmare too because the couplings in the system made it very hard to beef up one part of the app without affecting the others and the way the app was designed made things like clustering next to impossible.

Stepping back a bit, all our application was doing was listening for trading deals from one external system, doing some processing based on the types of deals and feeding different pieces of data to different systems. Depending on the systems being fed to there are other steps of business logic too.

JavaSpaces seemed perfect for this. There's lots of piles of objects and little agents process these objects bit by bit and deposit them onto different piles. Each agent shall be very decoupled from other types of agents and the app can be scaled by just adding more agents. I know things like databases or message queues can do this sort of thing, but JavaSpaces just felt right for it. Now am I looking for a problem for JavaSpaces or is it really suited - I'm too close to the problem to figure it out....


  5:11:48 PM  

Mike has compiled a list of other Javaish weblogs.


  5:09:41 PM  

JBoss 3.0 From PSquad's Corner :

Just spent some play time with JBoss 3.0.0 final. Wow, I must say, I'm very impressed. Not only did all my modules that worked in 2.4.4 deploy with no tweaks, the entire thing is FAST. Like... REALLY fast. Here are some VERY rough numbers when generating 1000 unique keys using an EJB-based sequence utility:

JBoss 2.4.4: ~600 keys/sec
JBoss 3.0.0: ~1300 keys/sec
Orion: ~1900 keys/sec
WebLogic 7: ~900 keys/sec

Now, these are very very very far from conclusive test results. They are running under no transaction context (I didn't post Pramati because it "cheats" and doesn't even save the changes, so it flies through the test). There has been no optimization, and the test is so simple it's stupid. But it does show the general coding quality and speed the developers of said products were able to do "out-of-the-box".

Anyway, I thought it was interesting at least. OSCore, OSUser, and OSWorkflow all run on JBoss 3.0.0 now too, which is great news!

Hey, how cool is it when someone uses code you wrote 2 years back to benchmark app servers :)


  4:59:32 PM  

2002 OSCON .NET Report. [O'Reilly Network Articles]

Some interesting stuff happening with .NET and Windows, in particular Rotor which is a port of the .NET environment to FreeBSD by Microsoft. It seems MS are addressing the issue that a lot of organisations are ready to adopt .NET if only they didn't have to run it on Win/IIS... or maybe there's something else there ;)

In terms of news, Covalent's open source Apache 2.0 server will support ASP.NET, as well as potentially other .NET technologies. On the surface, this move may seem surprising, but isn't, really. With Rotor, look for Microsoft to incorporate .NET programming language interoperability to both FreeBSD and Windows .NET Server in the next major release of Visual Studio .NET. Look for Visual Studio .NET to be available to the Mac OS X developer community sometime in 2003. Additionally, I still think it's possible that Windows .NET Server will be redesigned so that it's built on a FreeBSD kernel sometime in 2004. Why? Because Microsoft sees the success of Apple's Mac OS X, and would like to emulate it in order to achieve some success in expanding its developer pool to even the open source community.


  4:16:21 PM  

Don't abuse the search engine. Nice mirror.


  2:55:53 PM  

WebWork joins OpenSymphony - sweeeeeet. WebWork is my favourite MVC framework for web-apps because of how clean it is. It has had a central place in my development toolbox for some time (after finally ditching the OSCore MiniMVC born out of frustration with Struts). Extending it declaratively is a breeze and because it's so decouple from the Servlet layer, unit-testing is really easy (almost too easy!). All it needs now is a big following...


  2:04:43 PM  

Two fine online book previews:

Test Driven Development (Kent Beck) is a book devoted to the black art of unit-testing. The first few chapters kick off with a narrative of Kent implementing Ward's famous money example. Remember in Return of the Jedi when Yoda was rambling on about how to be an effective Jedi and then in Attack of the Clones you actually see him strut his stuff - and he kicks ass... well Kent kicks ass.

Test-first can be misinterpreted in many ways, the most common being that the interface of the classes are figured out before the test can be written. This gives concrete examples of how test-first creates simple, well-designed, decoupled, understandable, agile and robust systems. It also explores patterns that suport testing.

Enterprise Application Architecture (Martin Fowler) is his long awaited book that's been evolving on his website for over a year. This book looks at design and architectural patterns of enterprise systems and discusses many practical implementations that can be built ranging from the quick and simple to very clever and scalable. Part 1 gives narrative chapters on design techniques for the most common problems that are run into (including persistence, distributed objects, and web-apps). Part 2 presents a pattern catalogue reference for each of the sections in part 1 (such as various approaches to MVC, persitence layers, facades, etc).

Much of the content in this book is the kind of thing developers on enterprise projects have figured out themselves over the years, however this expands on the information, shows the stuff which they developer down the street figured out, gives concrete examples and generally would have made life a lot easier if it had been around when we'd started doing this stuff. Whether you're using J2EE, .NET or SmallTalk, this book is of great value.


  1:30:56 PM  

So what have I been up to since May?

Well, most importantly, I've moved jobs. I now work as a consultant for ThoughtWorks. It's really great working for a company that gets it and being surrounded by terrifyingly smart developers - I often feel dwarfed (yes, I know I'm a sort of gnome creature already).

At the moment I'm lurking in a small development team of a large company (one of our clients) implementing best development practices (XP, software configuration management, OO, team-building, automation, testing, etc). It's certainly challenging and we've got a long way to go, but I feel like progress is being made. Unfortunately, for the differences to be noticed it shall take time and people very rarely notice success like that - it's only when practises start slipping people wonder why things are going bad - the connection is rarely made.

I'm now partaking in a REAL .NET project using C#, ADO.NET, ASP.NET and Crystal Reports. I have to say, I'm really REALLY impressed with .NET. Of course, there's the initial teeting difficulties you get with any new technology (remember your first J2EE app?) but they are all overcomable. As a Java/J2EE developer I feel I have a significant head-start in building real apps with it over developers from COM/ASP/VB background. I'll keep the weblog updated with my .NET commentary as things pan out. There shall be laughter, there shall be tears...


  12:51:50 PM  

The weblog has been deadified. I moved jobs and forgot to bring all the settings configuration files for Radio with me and it seemed like too much effort to do anything about it. Then it struck me that this weblog shall forever sit on the internet showing a fixed point in my life - how about I move forward instead. The weblog lives! Onwards...

It was a bit of a pain restoring this... the only way I could think of was to grab the HTML file uploaded to the server and manually place entries in my newly installed Radio database. Is there a simpler way?


Web-design by John Doe from open source web design.