Monday 13 December 2010

Camel in Action is complete!

Just in time for Christmas, my fellow FuseSource colleages Claus and Jon have finished their excellent book, Camel in Action. Congratulations guys!

Its a great read & highly recommended if you have integration problems you want to solve with the best of breed open source solutions.

There's more history and background in Claus's post or to quote from Jon's post...



So we did it. Camel in Action is headed to the press! Time for beers and all that, but first a little blog post :)

I had to actually search through my mail to find out when I started on this project. Turns out I got involved mid September 2009 which puts the time in about 15 months. Claus started before that so his month count is higher - poor guy ;) So it was a pretty big chunk of time for both of us but not too bad for a technical book I'm told.

We set out to create something that the growing Apache Camelcommunity needed badly - a great reference for newbies and experts alike. I'd like to think we accomplished that goal. Seems the early access readers agree too.

Thanks to all who were involved in producing this book. We had tons of very helpful reviewers, Manning staff, and even multiple foreword writers - there were a lot of people involved in creating this other than Claus or myself. Of course, we officially thanked the folks involved in the acknowledgements section so be sure to look there if you helped out :)

I have yet to see anything other than a PDF copy of the book (which should be released tomorrow) so I'm really looking forward to when the print copies start showing up in 10 days!

Also, feel free to use the "camel50" code for 50% off when ordering through http://manning.com/CamelinAction
Festive beers to both of you! :) 

Tuesday 26 October 2010

Scala is awesome!

I got caught unawares by Debbie from FuseSource with her video camera and she managed to get me rambling about programming languages and what I thought of Scala.

The sound is a bit quiet you might need to turn it up when Debbie's not talking :)

Here's the video or try it embedded below:


Monday 25 October 2010

FuseSource has launched!

Rob has explained the background along with Larry's interview and Dana's podcast much better than I could have.

From a personal perspective I'm really excited about the future of FuseSource; we're growing fast, have some amazing customers & a great team including the folks who created Apache ActiveMQ, Apache Camel and Apache ServiceMix and now we have autonomy so we can stay nimble & fast like a startup while we innovate and iterate to help our customers solve their integration problems with open source; all the while having the security of being backed by a large company. This is gonna be fun! :)

Friday 8 October 2010

Scalate 1.3 Released


The Scalate team is pleased to announce the availability of Scalate 1.3.
Scalate is a Scala 2.8 based template engine which can be used stand alone, with servlets or web frameworks like JAXRSLift or Play or in integration frameworks like Apache Camel.
The following template languages are supported through the same common API:
  • Ssp which is like a Scala version of Velocity, JSP or Erb from Rails
  • Scaml which is a Scala dialect of Haml for very DRY markup along with theJade syntax
  • Mustache which is a Scala dialect of Mustache for logic-less templates which also work inside the browser using mustache.js
All expressions inside SspScaml and Jade benefit from the full power and expressiveness of Scala plus they are typesafe and checked at edit/compile time to ensure you don't leave any mistakes in your templates.
Scalate 1.3 Highlights
  • Jade template syntax is now supported which is a dialect of Haml or Scaml
  • New Servlet Filter which allows more flexible mapping of templates in a web application. For example you can have the request /foo.xml automatically bound to /foo.xml.ssp if the template exists letting you easily implement views without requiring a controller or routing in your MVC layer.
  • JSP Converter helps you migrate your existing JSP web application across to Scalate
  • HTML Converter lets you migrate your existing HTML files easily to Scaml orJade for extra DRY markup
  • DRY template imports, values and logic thanks to Scalate Package objects which allow imports, values and methods to be shared across some or all of your templates to reduce noise inside your templates.
  • Site Generator lets you generate static or dynamic websites using templates and/or wiki markup together with exporting wiki content from Confluence wikis to migrate to using git/svn as your wiki content repository. You can also use a common bootstrap approach now across both static website generation and web applications - such as to configure wiki macros in a canonical way. We now eat our own dog food and generate this site using Scalate.
  • More filters and pipelines supported such as confluence as well as the existing markdown which are particularly useful for website generation (static or semi-static).
  • The Scalate Tool now comes with a full interactive shell with full tab completion to make it easier to use the tool either for ad hoc or interactive shell use.
For more detail see the Full Change Log
Feedback is always welcome!

Friday 30 July 2010

Scalate 1.2 Released

The Scalate team is pleased to announce the availability of Scalate 1.2.

Scalate is a Scala 2.8 based template engine which can be used stand alone, with servlets or web frameworks like JAXRS, http://scalate.fusesource.org/documentation/lift.html">Lift or Play or in integration frameworks like Apache Camel.

The following template languages are supported through the same common API:

  • Ssp which is like a Scala version of Velocity, JSP or Erb from Rails
  • Scaml which is a Scala dialect of Haml for very DRY markup
  • Mustache which is a Scala dialect of Mustache for logic-less templates which also work inside the browser using mustache.js

All expressions inside Ssp and Scaml benefit from the full power and expressiveness of Scala plus they are typesafe and checked at edit/compile time to ensure you don’t leave any mistakes in your templates.

Scalate 1.2 Highlights

For more detail see the Full Change Log

Feedback is always welcome!

Posted via email from implicit.ly

Thursday 20 May 2010

FUSE Community Day in Frankfurt May 25th

Along with Claus, Rob and others, I'll be speaking at the next FUSE community day. If you're in the area please do pop along and say hi.

It will be held on May 25th 2010 in Frankfurt, Germany. We start at 9:00 am and have a full packed day with great speakers.
At 4:30 pm its time for "evaluation" where you can join us for a drink and a "one-on-one" chat with the many great minds at FUSE and network/mingle with the other participants.

You can see the agenda which is listed on the FUSE site.
Get the latest news on Apache ServiceMix, ActiveMQ, CXF, Camel.
Hear from committers, founders like Rob Davies, James Strachan and Claus Ibsen and users who have successfully implemented Apache in projects.
Meet and network with peers at this free educational community day.

Date
25th of May

Time
9:00AM to 4:30PM

Location
Radisson Blu Hotel, Franklinstrasse 65, 60486 Frankfurt am Main

Who Should Attend
Developers, architects, engineers and IT managers

How to register
Use this link

Wednesday 28 April 2010

Scalate 1.1 Released

The Scalate team is pleased to announce the availability of Scalate 1.1.

Scalate is a Scala 2.8 based template engine which can be used stand alone, with servlets, in JAXRS, with the Play Framework or in Apache Camel. (Work on lift integration is in progress).

All expressions inside Scalate benefit from the full power of Scala plus they are typesafe and checked at edit/compile time to ensure you don’t leave any mistakes in your templates.

Two template languages are currently supported:

  • Ssp which is like a Scala version of Velocity, JSP or Erb from Rails
  • Scaml which is a Scala dialect of Haml for very DRY markup

Scalate 1.1 Highlights

For more detail see the Full Change Log

Feedback is always welcome!

Posted via email from implicit.ly

Tuesday 6 April 2010

Scalate 1.0 Released

The Scalate team is pleased to announce the availability of Scalate 1.0.

Scalate is a Scala 2.8 based template engine which can be used stand alone, with servlets, in JAXRS, with the Play Framework or in Apache Camel. (Work on lift integration is in progress).

All expressions inside Scalate benefit from the full power of Scala plus they are typesafe and checked at edit/compile time to ensure you don’t leave any mistakes in your templates.

Two template languages are currently supported:

  • Ssp which is like a Scala version of JSP or Erb from Rails
  • Scaml which is a Scala dialect of Haml for very DRY markup

Further information:

Feedback is always welcome!

Posted via email from implicit.ly

Tuesday 2 February 2010

if you need an excuse for buying an iPad, try this...

There's a ton of noise out there about the new iPad. One common response is folks finding it hard to justify buying one if you have a MacBook Pro and an iPhone.

So one thing I really like about the iPad (apart from the speed & bigger screen than the iPhone) is the gap around the screen - which at first I thought looked odd. Let me explain...

I'm constantly amazed by how easy the iPhone is to use, especially by people who've never really used a computer. My daughters have been able to use my iPhone for drawing & browsing photos for a long time (and they are 3 and 1 year old right now) - without me ever really showing them how. They just picked it up, played with it and figured it all out. (I might have shown them the two finger tap on the drawing app to change the pen). When they are a bit older and can actually read, am sure they'll feel right at home browsing too.

The biggest problem my daughters have found (particularly with my youngest, she was 1 year old in November) is holding the iphone without accidentally pressing one or more fingers on the screen - causing confusion in the multi-touch detection.

You've gotta be quite careful with an iPhone not to touch the screen while using it (something adults master quite quickly). So for kids, the iPad is gonna be so much simpler to use with its nice wide thumb/finger area when holding the device.

Lots of cars have DVD screens on the back of the headrests so kids in the back can watch movies while travelling. I can see iPad's being the long term replacement very soon...

So if you're a geek and need a reason to buy an iPad; just say you're getting one for the kids! Thats gonna be my excuse and I'm sticking to it...

Wednesday 13 January 2010

Using SBT on your Scala Maven project for continous testing

Continuous testing is the practice of rerunning test cases whenever you change source code. Its a great way to write code in a mostly test-first way and it gives you very rapid feedback as you change code.

It can take a while to rebuild & rerun tests on a Scala project when using Maven (and IDEs can be a little slow sometimes too when it comes to continuous testing and scala).

You can buy Infinitest as an IDE plugin which is triggered whenever you do a build. Though I've found the console view isn't great when running ScalaTests (there's no way to navigate to the code that fails) - and you have to explicitly hit 'build' when you're editing your code. I prefer tests to just rerun automatically (reusing IDEA's auto-save feature).

So another approach is to use sbt, the simple build tool for scala.

Installing sbt
I use 0.6.9 (or xsbt as its often called) so I can work with scala 2.8.0.Beta1-RC7 nicely. Basically download the jar and create script called 'sbt' or 'xsbt' if you prefer, then you can run sbt from the command line.

You can then run sbt in the directory of your pom.xml and it'll configure itself with whatever project & version you want to use and version of sbt/scala etc.

Setting up sbt for maven projects
For those new (like me) to sbt, here's a quick way to get your maven build converted to use sbt. If you don't have a maven build for your project you can skip this step.

To cut corners and not configure all the maven repos you want to use to download your dependencies, you can just let sbt reuse your local maven repo to find jars.

So create a scala file in the project/build directory. sbt will have created the project directory for you, along with a boot subdirectory but you will need to create the build directory.

Call the file whatever you like, such as project/build/Foo.scala...
import sbt._

class FooProject(info: ProjectInfo) extends DefaultProject(info) {

val mavenLocal = "Local Maven Repository" at
"file://"+Path.userHome+"/.m2/repository"
}
Now you can start sbt and update it to load all the maven dependencies from your project

sbt
update
compile

The first execution of sbt puts you in the sbt shell which has completion and help so you can find the various options available. The 'update' task loads & downloads all the dependencies from your pom.xml. Refer to the docs for more details on repositories and dependencies.

Now you've got your dependencies imported, lets do some continuous testing.

Continuous Testing
From the sbt shell just type
~ test
Now sbt will monitor your code, detect when its changed, rebuild and rerun all the tests for you showing the results in nicely colour coded output in the terminal.

When you fancy playing in the Scala interactive shell (REPL) just type

console-project

And you're good to go. Enjoy!

Have you figured out a neater way of doing continuous testing with IDEA and Scala?

I guess someone could hack a JRebel plugin for Maven so that you could use the scala:cc goal to incrementally compile your scala code as you edit it; then JRebel automatically reloads the changed classes, then the new continuous testing plugin would just need to use a trigger in the JRebel SDK so that when a class is reloaded it reruns the relevant test cases (or all of them - maybe sorted by previously failed ones first).

A similar technique works great when running projects with jetty:run or scala:console - letting JRebel reload any classes rebuilt via scala:cc