Monday 1 October 2007

Lazy Development

For around the past 6 months I have been trying to nail down what the difference in attitude is between developers.

Paul Duvall has summed up what I have been trying to get across to colleagues in his post about troubleshooters and troublepreventors.

I describe myself as a lazy developer to anyone who cares to listen, however this needs some context.
By lazy I mean that I will put more effort into automating a task now rather than have to work out how to do it manually once a fortnight. (DRY)
Couple this with writing unit tests now to allow refactoring to take place safely at anytime in the future and it will aid you in developing great software.

Everytime these upfront payments get dodged it comes back to punish the dev team with obscene amounts of non-value add work.

Wednesday 5 September 2007

Jiggy jumps into action after NFSJ

Hello and welcome to my first blog post,

During my trip to London for the No Fluff Just Stuff eXchange (NFJS) I was introduced to a host of new tech toys to play with. The friendly nature of the presenters and attendees was great and I really want to share some of that experience with the wider world.

The overarching message I took from NFJS was that Polyglot Programming is the future of software development, encouraging the developer to use the right tool / language for the job thereby having many languages in your toolbox to draw upon.

Whatever your bag is Java, Ruby, Groovy or something more functional like Erlang or Scala, NFJS was keen to introduce you to them all and allow you to make an informed decision as to which language you should use to solve which problems.


Scott Davis was really excited about Groovy, which looks a lot like Ruby.

Scott was keen to point out that when he was working on a Ruby app in the morning and a Java app in the afternoon the context switching was a major source of pain. He finds using Groovy for both apps easier to deal with as it is so tightly coupled to Java and has all the expressiveness of Ruby.

To create a .groovy file you can take any .java file and rename it to .groovy. You now have a syntactically correct Groovy file. The only other change necessary at that point is to compile with the groovy compiler groovyc. Thereafter you can start taking advantage of closures and the scripting ability of the language!

Sounds and looks too good to be true. I'll let you know how I get on.


Graeme Rocher provided a Grails intro which looks very interesting although I don't think I'll get to play with it at work anytime soon.


Neil Ford was discussing DSLs and Language Oriented Programming. This is something that I've been trying to play with for a while with limited success so it was nice to get some pointers. The main thing being to keep a DSL small and focused, do not try and be all things to all men. This presentation left me immediately wanting to go and start playing with Antlr and the IntelliJ Metaprogramming System. ( You can find a similar presentation given by Neil and Martin Fowler at The Server Side. )


During NFJS there was a great deal of banner waving "Death to SOAP" and championing of REST :o)


Ted Neward showed off some of the monitoring tools that come with Java. I never even knew these existed! ( Well not along with your downloaded JVM at least.)


Scott Davies gave another couple of exciting talks on,
I had no idea so much free GIS data is out there!

In terms of the YUI here is what it has to offer,
  • All of the widgets shown were super-configurable. Great, less javascript to write.
  • There is a load of widgets - all free!
  • An excellent Logger widget to help debug any components you have been doing handy work on.
However there was one really strange thing about the widgets that troubled me. Each widget had it's own dir with library with three implementations!
  1. widget.js
  2. widget_min.js
  3. widget_debug.js
Whats going on?
Well widget.js is the javascript implementation nicely formatted with comments.
widget_min.js is widget.js with comments and surplus white space removed so that download is quicker. Fair enough.
widget_debug.js is a version with logging output.


If you need to do some debugging of the file you have in production widget.js/widget_min.js, you need to change the reference in your html file from widget.js/widget_min.js to widget_debug.js.
This is a recipe for confusion if not disaster, replacing the file that is not working and needing examined with a completely different file!?


Venkat Subramaniam did a session on Functional Programming with Erlang. The main thing Venkat reinforced for me as a web developer is trying to have no ( or as little as possible ) state held within your application.


In brief summary, NFJS was,
  • very interesting,
  • introduced me to some knew ideas,
  • rekindled some old one ideas,
  • will definitely have me attending again!