Author Archive

My name is Mark. And I like rich clients.

There, I said it. I don’t like web applications. I never got Gmail as an interface. It never quite worked the way I wanted it to. I like eBay as a service, but not as an experience.

Over the last year I have found myself using NetNewsWire, not Google Reader.  I use OmniFocus, not RememberTheMilk.  I like having my data available everywhere, I just don’t want to use a browser to see or manipulate it.

I get that the interweb has allowed us to explore, connect and transact. Awesome. But now that we have the data and services the focus must shift to how we use it. The usability of most web applications is still well behind that of rich clients.  We need to get better.

So, we are faced with two alternatives. Try to make web applications better, or move to web enabled rich applications.

I favour the latter. Here’s why:

Rich clients work faster. Rich clients have tighter integration with the keyboard. You don’t need to be connected to the Internet all the time. Enough?

No! They also have tighter integration with the device they are running on. An iPhone application knows it has GPS and an accelerometer. It can do things you can’t do through a browser.

So let’s use the device well. Let’s optimise the experience for the device we are on. If we are on a mac I want Growl support. If we are on Windows then save data frequently.

But that is expensive to develop I hear you say. Yes. I didn’t say this would be cheap. However, in recent years we have gotten much better at building services faster (Spring: thank you.  Rails: thank you. SOAP: are you still here?).  So now that we have saved all that time on the back end, let’s spend a little more time on the front end.  

Please?!?

A while ago Ben wrote about how Ruby on Rails development sucks on Windows. It seems that the move by the Rails Core team from subversion to Git has inflamed this issue further.

My favourite comment is:

If you’re freaking out, calm down. Rails and the developers behind it have snubbed Windows far, far worse in the past :).

Leopard and Rails


After having gone through the pain of installing Ruby on Rails on my MacBook Pro running Tiger (OS X 10.4) I was pleased to see that Leopard (OS X 10.5) ships with Rails ‘pre-installed’ and ready to go.

So, after I upgraded my installation on Friday night I was perplexed when trying to run my Rails apps. Why was it broken?

In the end, it turns out there were several problems.
(more…)

An article on The Server Side recently started off some discussion on the Spring Batch framework.  Joseph Ottinger implied that there weren’t too many options for batch processing in Java (which there aren’t) which seemed to raise the hackles of Flux and Quartz supporters.

Having had to write batch code in Java, I agree that we do need a clear winner in this space and I must admit that when I saw the presentation at JavaOne this year I was very interested in Spring Batch.

In any case, it is good to see batch processing at least getting some air.  I know everyone loves SOA and web services, but don’t forget that sometimes processing large files is still the only practical way to solve a business problem.

We were faced with the interesting problem of having a database column that stored YAML representations of data. To be more precise, that wasn’t the problem, it was how to load YAML data in using Rails fixtures, which themselves are in YAML (or CSV, but we prefer YAML).

After the usual Googling, I eventually found a few sites that gave me some hints. Apologies for not referencing those sites but now can’t find them again (and it took me a couple of hours the first time). So, in the hope that others who follow behind me have another source of assistance I thought it would be useful to blog it here.
(more…)

For the first time in many years I am learning a new programming language - Ruby. I started about 6 months ago and it occurred to me the other day that they way I go about acquiring knowledge now is so much different from 1999 when I was getting into Java.

For me the standard process was:

  1. Buy Idiot’s Guide or equivalent
  2. Read book front to back, stopping very occasionally to try out some tutorials
  3. Implement a pet project in my spare time, and start buying good reference books
  4. Start to specialise and buy books about particular parts of the language I needed at that point in time.

    The Buggles - Video Killed the Radio Star

This practice worked well for me a number of times (Fortran, Pascal, C, COBOL, PowerBuilder, Delphi, VB and Java). The only problem was, it was about step 4 where I actually started to get productive. Still, if it ain’t broke, why fix it?

Well, for a start there was a limited selection of good Ruby and Ruby on Rails books. I used the excellent Agile Development With Ruby on Rails to get started, but before I had even gotten too far in I was already branching out to write some code and really never got back to it. Why would I, when I writing code was so much fun?

Of course, I kept coming up against blind spots in my knowledge. So I went to the web and started searching. Inevitably I found a blog item somewhere with my exact problem and at least one potential solution. Good, but still not that satisfying.

Then I found Railscasts, an episodic vodcast to help you learn Ruby on Rails. Forget that it is about Rails, the concept just works. Nothing beats watching someone code and having them talk you through the process. This is the exact format of the episodes, and thanks to some nice technology (you get to see the ‘hidden’ keystrokes in a Growl pane throughout), Ryan’s great technical knowledge and the tasty topics covered it is fair to say I am hooked.

Imagine having a guru in your company talking through best practice techniques weekly. Awesome. In addition, even just watching how Ryan Bates works is sometimes interesting.

So, my new learning process is:

  1. Watch video
  2. Play with code
  3. Go to step 1

For me, this has resulted in me not only being more motivated (”I’m writing code already!”) but my retention of the information is much better since I am implementing as I learn.This isn’t an isolated experience for me. In addition, Luke from Shine put me on to a YouTube video on how to use Quicksilver (a must have for Mac users). In a short period of time I learned a couple of really interesting tips that wouldn’t have seemed so useful written down in a book.

Another interesting example was when I was searching for more information on a Rails plugin called Chronic. A great package to parse language into dates (”Yesterday”, or even “last monday at 2am”), but it doesn’t have a lot of support out there in the blogs yet. I did, however, come across an entire video presentation that Tom did to a Rails User Group. Through that presentation I got an overview of how the entire plugin was built in a much shorter time frame than having to read all the code ‘cold’.

So I guess the question is, will we even need the Idiot’s Guide to X in the future? Maybe all we need is a basic introduction, get playing and go back and watch the videos as you need them. This seamless blend of learning and experimentation seems to me to closely match the learning process rather than the sterile chapter by chapter rote learning approach.

So what do you think? Are you using video to learn instead of books? Has video killed the Idiot’s Guide?

I saw the post on theserverside.com that had gone official 1.0 release. With much anticipation I jumped over to www.jruby.org only to find the news about the RC3 release.

Never fear, jump to the Downloads page and you will see the 1.0 downloads sitting meekly by the RC3 versions.

JRuby 1.0

Very low key for a fairly big milestone. But go read the blog entry by Charles Nutter to find out more what the release means and the upcoming work.

JRuby is a key technology that might allow Ruby on Rails applications to make a much more rapid entry into the Enterprise development arena than otherwise would have been the case. At the point where you can deploy a Rails application alongside other Java Enterprise applications inside a container many of the barriers that Rails faced start to disappear.

And before you start talking about Rails being slow, check out the blog entry by Julian Doherty and the response he got from Charles Nutter that highlights how Ruby under JRuby is already equivalent in speed to native Ruby and likely to get even faster in the future.

All we need now is for some of the cool plug-ins that rely on native code to be re-written in pure Ruby, or to have Java equivalents written (I’m looking at you, Ferret).

… or is that the wrong question?

It has been bothering me for a while that I can’t understand why Sun spends money on Java.  Don’t get me wrong, I love the fact that they do.  But surely there is a wider financial goal rather than pure technology benevolence?

Thankfully the Java Posse posed the same question to Bob Brewin (CTO of Sun Software) in podcast #123.  The question was framed as to how the strategy compares to the South Park underpants gnome episode where the the plan was “1. Steal underwear, 2. ???, 3. Profit”.

Unfortunately the answer was fairly vague and basically came down to “volume equals profit”.  The theory seems to be that Java is part of a plan to create opportunities for hardware, services, training and consulting.  Seems to be a fairly roundabout way of making a market for yourself.  The ‘old’ way would be to focus on the products you are selling.  Make them better, cheaper, faster. Be better than your competition and let your potential customers know it.

If you take the strategy as read, Sun is supporting a language that works on any environment (many that Sun don’t have hardware for) for a range of customers (many that won’t ever need Sun services).  In essence, they are creating many market places, but only a small proportion of them are in a space where they actually compete.  To use a rock analogy, isn’t that like running and paying for an open air festival with free admittance just so you can be one of the acts?

In particular, where is the money for JavaFX Mobile?  Sun doesn’t make phone handsets (yet?).  Are they going to ask for licence fees?  Apparently not since it is open source.

So I mostly get why Sun pushes Java Enterprise.  It helps them push the hardware and services for high end applications in the corporate arena.  Along the way they also help every other hardware and software consulting business as well.

But why the focus on the desktop of late?  What’s in it for them if mobile handsets start running JavaFX mobile?  I still feel like I am missing something…

After initially enjoying a fresh new IDE in NetBeans 6.0 M9, I started to hit a wall with source code management tools like CVS and Subversion.  For a start, where is the wonderful ‘Synchronize with Repository’ function that I have come to rely on?  OK, there is ‘Show Differences’, but the usability (or lack thereof) of the NetBeans IDE is almost comical.

Inevitably there are directories that you never want to synchronize, and the joy of Eclipse is that I ‘remove from view’ and then just keep on refreshing and only check in and out the objects I am interested in.  Nice.

Coupled with a few interesting errors with Subversion (read: delete entire local copy and start again) for both myself and Nick and I think it is fair to say that my affair with NetBeans is over.

And don’t get me started on the lack of ‘Find Resource…’.

I saw a few people walking around JavaOne with Java Posse badges, and it wasn’t until almost the end I found out why. It is a podcast by four Java Guys: Tor Norbye from Sun,  Carl Quinn and Dick Wall from Google and Joe Nuxoll from Apple.

I have since subscribed to the podcast and have listened to a few episodes and I must say it is both entertaining and informative of what is going on in the general Java community. Although there are some areas of focus that aren’t that applicable to the kind of enterprise development that we do at Shine, I don’t think it hurts to have a passing knowledge of general trends.

You can find their site here:

http://javaposse.com/