One and a half week to go…

Dutch Java User GroupYes my fellow Dutch Java friends. I hope you all registered again for another edition of the NL-JUG’s J-Fall. Looking at the program, I must say they’re still on the right track towards becoming a must see for all Dutch Java developers.

Also, make sure to visit my presentation of you are attending. I won’t tell you any more details right now. But it will be a presentation which you will find a bit different in a good way. I have one of the last slots of the day, but that’s just another reason to attend my presentation. Because I will do my best to keep you interested and awake. It would be a shame to doze off during the last round of presentations. “Because of the free beer and all that is.” 😛 Also, to my colleagues not attending the J-Fall, don’t despair, on the 25th I will do the same presentation on our fortnightly ISKA gathering.

Now about my presentation… I can’t resist. Here’s a little peak-a-boo: Frontpage InfoSupport Slidedeck

Designing Interfaces

Designing InterfacesThe subtitle of this book says it all: *Patterns for effective Interaction Design*

The book uses a familiar style by presenting problems with pattern like solutions. While it is a very good style for a reference, it is prohibitive to a full cover to cover read. Now I am not saying this book is bad or anything. It simply is a treasure trove. Knowing how to implement which UI mechanisms is one thing. Knowing when to use which UI mechanism is more like a form of art. There are factors at play which are not based at cold hard logic. It’s about user perception, expectations and experience. Depending on the kind of user and the level of skill among the users, different solutions should be chosen.

For instance, take PhotoShop. I am in no way an avid PhotoShop user. I can get along with a lot of searching through documentation and online tutorials. But I can still remember my feelings when I first started PhotoShop with the intent to do a simple edit. A sheer and utter feeling of being overwhelmed. Now PhotoShop is like it is for a reason. Lots of people work with this tool all day long. Imagine having to work all day long having to go through piles and piles of wizards and dialogue boxes, I guess you wouldn’t be a happy user anymore. This little bit of information was sort of footnoted next to one of the patterns.

Each of the 94 patterns are thick with useful titbits and examples of when and when not to use a particular pattern. If you’re a interaction designer, I think this book is a must buy. If you’re a developer doing any serious UI related work, I’d say this book is a must read. Just having read this book will change your perception of the way users look at your user interfaces.

Just one question left: What’s with the duck?

Train spotting, sort of…

Logo of the NS - Dutch RailwaysPeople who have checked my project history, have probably seen that I am doing something at the Dutch railways for quite some time now. Well, tonight I will indulge myself if you will.

The project is about building an application with which the Dutch railways and any other user of the Dutch rail infrastructure should be able to plan all infrastructure, trains and personnel. Now from what I have heard, the way the Dutch railways are operated is almost unique on a global scale. Yes, you’ve read correct. Most rail infrastructure is used in a strict corridor like fashion, a train moves from A to B and B to A, all day long. But here in the Netherlands it really is a network problem. Everything, and I really mean everything crosses each-other at stations and other significant places. Now think about this for a while and let it sink in. Now I don’t know how things work in other countries, and frankly I don’t really care too much about that either. The project I’m in is trying to help planners for the Dutch situation.

Now, not only does the infrastructure need planning, the trains themselves have to be planned as well. Trains need maintenance, and at the start of the day the right equipment has to be available at the right places. Preferably with as little empty night time movements. Starting to feel a bit complex now. Well, that’s not all. Someone has to be on those trains to drive them, and let’s not forget the men and women who check your ticket. In the Netherlands a train is not allowed to depart with passengers without a conductor. Now think about this, personnel should start the day as close to “home” as possible and end up as close to home at the end of the shift as well. Oh and the machinist has to be certified for the type of train he’s running and be certified for the tracks he’s running on too.

Short version, this sh#t is complex. And the coolest part is, the entire effort is starting to feel like it’s going into it’s final stage of development. Sure there will be bugs to fix and deadlines to be met, signals are indicating that crunch time is near. I’ve been on this project for a good one and a half years now. But the effort started like a whole bunch of years ago. Last time I heard it was like 5 or 6 years ago that the first preliminary studies were conducted.

My role in this whole thing? I’m just one of the many hard working developers. My role is mainly focussed on UI and graphical display of data. Questions? Just ask, I’ll see if I can answer them.

Darwinports is freaking me out!!

Ruby on Rails project logoMan, am I having hard times with Rails and DarwinPorts MacPorts or what? The strangest things keep happening. My Rails install broke down again. Imagine my frustration. I’ve been messing around with it for a few days now. And trust me, nothing wrong with rails. This time it was an incomming update on a support library called gettext. Argh!! On itself nothing wrong with updates, and that stuff breaks because of it, fine. But not all in one week please.

In hindsight the fix was real simple.

  • sudo port uninstall [insert anything starting with rb-]
  • sudo port install rb-rails

Oh and another one if you would want to use rb-sqlite3 on Rails. Install swig before installing the sqlite adapter. And don’t forget, in your database.yml: adapter: sqlite3 Yes, with a three that is.

Just a sidenote: I officially fell in love with TextMate. This editor is soooo cool. Thank you very much MacroMates.

Error installing Rails

Ruby on Rails project logoRecently I re-installed all my DarwinPorts. This included my Ruby and Rails installs. The first time I ever tried installing Rails I used RubyGems installed by DarwinPorts and it worked without a problem. The second time didn’t went so smooth. It appears that the rb-rubygems package of DarwinPorts is FUBAR or something.

For those trying to get Ruby on Rails running on OSX with DarwinPorts/MacPorts: Watch out for this error:

Jeroen:~ jeroen$ sudo gem install rails
/opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': \
        no such file to load -- sources (LoadError)
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `require'
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/remote_installer.rb:462:in \
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/remote_installer.rb:472:in \
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/remote_installer.rb:436:in `install'
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/gem_commands.rb:258:in `execute'
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/gem_commands.rb:220:in `each'
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/gem_commands.rb:220:in `execute'
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/command.rb:69:in `invoke'
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/cmd_manager.rb:117:in `process_args'
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/cmd_manager.rb:88:in `run'
        from /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/gem_runner.rb:29:in `run'
        from /opt/local/bin/gem:23

I’ve ran into this one. The problem? Quite simple to solve. It seems that the DarwinPorts package sudo port install rb-rubygems should not be used anymore according to some people. Installing rails by using the rubygems installed by DarwinPorts messes things up a little. Try sudo port port install rb-rails instead. It worked for me. Only drawback is, you didn’t install rails with rubygems and you have to remember to install updates and extra gems by using DarwinPorts.

Edit: DarwinPorts is now renamed to MacPorts. An existing DarwinPorts install will transparently update to MacPorts by running “sudo port selfupdate”.

My lack of response to e-mail

My webhosting provider has had a critical failure in their mail service. They assured me that no message will be lost. Somewhere about 30 hours ago the ReiserFS file system of the mail server went corrupt. They have repaired the file system, and are in the process of working through the backlogged e-mail. In total they have to munch on 260 gigabytes(!!) of data. Wow…

The have speeded up the delivery of a new mail cluster system. It should provide a more robust system. While the current system was rock solid already, it has the vulnerability of being a single system (with proper disk clustering).

So if you mailed me about something, hang on I will reply when needed.

Macromedia Breeze

For one of my courses towards my M.Sc. we’re using Breeze. First time using Breeze to me. And I must say it works rather well. We’re conferencing with 5 people using web-cams.

Sound and images are a bit choppy now and then, but it’s a big improvement over using mail and or text chat programs. We’re able to talk, gesture, share files, do powerpoint presentations and scratch on a whiteboard together.

NL-JUG J-Fall proposal has passed

Dutch Java User GroupThis year the NL-JUG’s J-Fall conference will be held on October 11th. Details are available at the NL-JUG’s website. The J-SPRING and J-FALL are the place to meet your fellow Dutch Java programmers. To me it has become a biannual gathering of past colleagues and sometimes even friends.

On a more personal note: My proposal to the NL-JUG to host a session has passed. I am thrilled about this. Especially because my proposed subject is such an interesting topic. It is not a very technical subject in itself. But I am going to talk about one of the more fundamental choices a project has to make about their product.

I am curious about the interest in my session. Since it is the in the last slot of the day and it is not about framework X or Y. But what I can promise everybody is that it will be something most of you have never seen before.

As a final note I provide you with an English translation of the proposal I sent in.

Session: Which user interface do I choose for my Java Application?
Speaker: Jeroen Leenarts, Info Support

Abstract: In this presentation you will receive an overview of the pros and cons of web and rich client technology. The differences between the various technologies will be clearly illustrated by means of practical examples. A number of technologies will be evaluated, including AJAX, Eclipse Rich Clients, Netbeans Applications, Web 1.0 (as in Web as we already know it) and Swing interfaces. A wide spectrum of technologies indeed, but they have something in common. All are very decisive about the way the resulting application will look and feel. Often one of these technologies is chosen without much thought about the suitability to the situation at hand. Don’t let your end-users down and choose a solution in the interest of your end-users. After my presentation you will be better equipped to make those decisions about which technical interaction model you want for your application.

Quartz 2D Graphics

Quartz 2D Graphics for Mac OS X(R) DevelopersI haven’t finished the book yet, I’m about half way through. But so-far it’s a great book about an excellent part of Mac OSX.

The book details how you should use Quartz 2D and Core Image. Quartz 2D is a central piece in the graphics development on Mac OSX. The thing with Quartz 2D is the fact that it is resolution and color independent. And this book really hammers it down. The interesting thing to me is the fact that Graphics 2D in Java is also resolution and color independent. This resolution and color independence makes it possible to program in a device independent manner. The “device” can be the screen, a memory bitmap, a PDF file/memory structure, a printer or anything else which is capable of displaying or producing graphics. The end result of this is that you only have to write your drawing code once without any device specific intricacies. There are a few things to keep in mind in a few exceptional cases, but that’s usually not a problem at all.

The book doesn’t seem to contain a lot of code. Most of the time it shows a few snippets to get a point across. But every listing comes with a number which references a file on the accompanying compact disk. Excellent stuff, you see something interesting, you want to fiddle with it in an editor anyway. So why waste precious page space? I personally hate it when books are half code, half actual text. Quartz 2D graphics on the other hand strikes just the right balance to me.

This books also goes into Core Image. Core Image is a framework on OSX which allows programming of the systems graphics card. If the graphics card does not support such actions Core Image provides a soft alternative, which is a lot slower offcourse.

Note to self: Never run “sudo port upgrade all” again

“Ghee whiz… That was taking mighty long” I thought, “Why has my PowerBook been compiling and compiling for over 30 hours now?”

Then I remembered the command I entered to upgrade all installed MacPorts. I should have used installed instead of all. *Sigh!* I’ve just deleted my entire MacPorts install because I think it’s easier for me to actually just reinstall the few MacPorts I use.

MacPorts is a toolset for Mac OSX which allows you to get loads of unix tools ready and ported for the Mac OSX operating system. It’s a bit geeky, but it sure beats having to install everything by hand and hope you didn’t miss a mac specific patch.