Jul 13

Spring Live! available

Tech 4 Comments »

It has been a pleasure being the technical editor for Matt Raible on his Spring Live! book.

The first 5 chapters of Spring Live are now available for download, and there is a free QuickStart chapter.

This book is a very hands on one. It isn’t about the fluffy side of Spring. It is about getting dirty and working on a real application. Good stuff.

Jul 13

Internationalisation is bloody hard

Tech No Comments »

Tim Foster has reiterated the fact that Internationalisation is hard, still.

Having worked on a project which needed to work with several languages (and not just latin-based alphabets) I have felt a lot of pain here.

The wheel always turns and people keep thinking that just because we have tools like Locale’s that the heavy work is done for us.

Ouch.

Jul 13

I have a Casio EXILIM as well as Cameron :)

Personal 1 Comment »

Cameron just wrote about his thoughts on the Casio EXILIM.

I also have one, and have had a similar experience.

  • I love it being so small. We even take it with us when we go on multi-day backpacking trips
  • It is very easy to take pictures, and they always come out really well unless….
  • My ONLY complaint is with night-time shots. They come out pretty bad. If you have had a cup of coffee, or haven’t had your cigarette, then it will all be blury. If you are steady, then it will be grainy. If you want to take a lot of night shots then I would be careful

Now I just wish that my phone, camera, iPod, … were all in ONE package this small!

Jul 13

Simple gotchas with debugging Groovy

Groovy, Tech 3 Comments »

As I write more Groovy, I find that simple errors come… and my brain does the usual:

It reads what it thinks is there, NOT what is on the screen

One example is:

The misplaced ${ }

As I move things in and out of strings, I sometimes forget to get rid of the ${ } escapes:

name = “Dion”

println ${name}

# should of course be println name

It would be great if you had the error:

“${ } out of escaped string at ‘${name}’ on line 3″

however you get something like:

Caught: groovy.lang.MissingMethodException: No signature of method test.$() is applicable for argument types: (test$_run_closure1) values: [test$_run_closure1@a9c09e]groovy.lang.MissingMethodException: No signature of method test.$() is applicable for argument types: (test$_run_closure1) values: [test$_run_closure1@a9c09e]

NOTE: I know that the Groovy guys haven’t gotten to the “get the debugging stuff working” phase yet… or as James calls it “debug hell” :)

Jul 12

RE: Spam Challenge

Tech 1 Comment »

Erik Thauvin has replied to Cedric’s Spam Challenge.

He talks about the problem that we now have with white lists.

If I say “almaer.com is fine. Let in anything from there”, then all of the spam that FAKES the domain almaer.com can get in.

However, this is where reverse MX can come in. When I get the email coming in I talk back and say “This system tried to email using the domain almaer.com”, and it errors out.

A Reverse MX type of technology is really needed here. If everyone started to work more with Digital Certificates that could help too (as it would off a nice way to authenticate if the user is [email protected])

Jul 12

JetBrains Programming System (MTS, or DSL)

Tech 15 Comments »

The Code Generation Network interviewed the CEO of JetBrains (Sergey Dmitriev).

Of course, many things were discussed, including IDEA and Fabrique.

What is really interesting is the part on their Meta Programming System:

With this system you can quickly develop the syntax structure, an editor and a code generator for custom domain specific languages.

This is the Domain Specific Language game that Microsoft is playing at the moment.

It isn’t about UML or MDA:

CGN: Is this in UML? What is the visual language?

Sergey: The visual language is not one language. It’s not an MDA-like program. We have two main parts that are public. One describes the business model, similar to an entity relationship diagram. But it’s not about this, it’s about business objects. It’s a diagram editor because that’s a convenient way to represent such models. And we also have editors for queries to the database, but again, not in UML.

We also can discover a database, and talk to web services or to session beans. However, we describe these things on a more abstract level. We don’t push the user to use a concrete run-time platform, like J2EE, .NET, Web services, and so forth. You don’t need to choose this at an early stage.

This is a domain specific language for this domain, which is data access plus a web user-interface. So for the moment it’s just for web applications. But in the future we will also do client side applications. For each domain we will have a special language. Then we generate for a particular computer language. Right now that means we generate Java and J2EE. In the future we will add .NET and others.

When you use a more high-level description, you have less dependence on the target platform.

Our domain specific language for web pages is based on XHTML, and we have a set of web controls that are expressed in our own language.

It is interesting to see similar DSL talk from various parts of the tech sector.

Jul 12

Where is the Web Services buzz?

Tech No Comments »

I find it really interesting that there isn’t any REAL buzz in the Web Services arena.

I am not basing this on the fact that there are a lot of specs, new products, and corporate chat about it.

I am basing this on the fact that articles and books on Web Services topics are not widely viewed AT ALL (I don’t claim this to be THE way to track the trend)

This is an interesting trend. Does it mean that “Web Services sucks”? No. But it is interesting :)

Why do you think this is? Is it because WS are fairly easy so people don’t need to learn much? Is it because we are only just getting going and peope will join the wagon soon? Or?

Jul 09

Java Web Start: Close but no cigar?

Tech 9 Comments »

In theory Java Web Start is a great idea IMO. Rather than fighting the limitations of applets and how they play in browsers, JWS can let you write a rich client which has support for auto-update, etc.

The following blog gives a lot of details on: why we dropped java web start

Hopefully people will listen, and these things can be addressed in the future. JWS makes so much sense, let’s make it a reality.

Jul 09

Bruce Eckel Video: Talking about Java

Tech No Comments »

Bruce Eckel gave a talk on June 25, 2004 at the UC Berkeley Haas School of Business.

Bruce says:

I gave a presentation for the California Digital Library on issues and directions for the Java language. In it I look at where the language has come from, where it is going, and new features in JDK 1.5/J2SE 5.0. I also have comparisons with other languages and note things that I have learned from other languages. The presentation is 2 hours 16 minutes long.

Be warned, those of you who feel Java is the best language, forever and without bounds, and that it has no limitations: herein I critize Java, but in the spirit of understanding the limitations of the language. I strongly believe that understanding these limits makes you a more effective programmer.

Bruce Eckel Talk: Java Issues & Directions

Bruce talks about how Sun puts it mark on Java (e.g. marketing gets in the way). He compares Matz (Ruby creator), and how he gave a talk called “Ruby Sucks”. This could never come out of the Sun marketing machine.

AWT sucked…. Sun tried to fix and then Swing is great.

Threading was broken…. and only now in J2SE 5.0 are we ok (Thanks to Doug Lea)

etc etc etc.

Bruce also had an interesting point about how “Java has too many words”. He countered the argument that IntelliJ IDEA or Eclipse write those words for you. Since someone has to read these, and maintain them, they still need to grok everything.

He also took a jab at TheServerSide, and how the community talks about the ideas that he has :)

Jul 09

Aspects as a deployable unit via aop.xml

AOP, Tech No Comments »

I really like the new feature in AspectWerkz 1.0.

They have a notion of an AOP Container in that you can deploy aspects and aspect libraries as components.

You just need to setup an aop.xml such as:

<!DOCTYPE aspectwerkz PUBLIC
“-//AspectWerkz//DTD//EN”
“http://aspectwerkz.codehaus.org/dtd/aspectwerkz.dtd”>

<aspectwerkz>
<system id=”webapp”>
<aspect class=”demoAOP.DemoAspect”>
<pointcut name=”allPublic” expression=”execution(public * *..*.*(..))”/>
<advice name=”trace” type=”around” bind-to=”allPublic”/>
</aspect>
</system>
</aspectwerkz>

The aspects only affect the area that they should via:

Note that if an Aspect is deployed within an application, the pointcut it defines will be limited by the class loader isolation principle. Even if the pointcut assumes to match all method in all classes, it will only “see” all methods in classes loaded by this classlaoder and the child classloader.

Cool stuff. It would be fun to have Spring grok this aop.xml file too :)

Read Alex’s tutorial: How to integrate Aspects in J2EE apps with aop.xml