Friday, August 01, 2008

Alberta Board Game Developer Gathering

The game mentioned in the last post has been playtested, tweaked and enhanced.
"That Flipping Property Game" will be presented to a group of discerning Board Game Designers over the August long weekend at the first "Alberta Board Game Developer Gathering" sponsored by The Sentry Box in Calgary.
Several Alberta-based designers will be attending with their polished prototypes to share ideas and shape their new game designs.
I'm much looking forward to it!

Monday, December 03, 2007

New Boardgame in the works...

This year I had one of 'those' ideas - one that you just HAVE to pursue.
The premise of the idea was: "What would a Euro-game version of Monopoly be like?"

The answer is a lot more like a Euro game than Monopoly, but it does have properties for sale! ;)

Watch this space...

All Faces: Java Server Faces, ICEFaces and Facelets in Weblogic Workshop 10.1

It's been a while since I last looked at JSF seriously. The projects I work on day-to-day for the last little while have been Swing and Struts-based.
However, I recently had good reason to delve back in where I left off quite a while ago, and frankly, not much seems to have changed.
Probably the most significant progress is in visual JSF development and AJAX support. We're seeing more developed components and better integration. However, out of the box support for getting up and running with different JSF configurations is still sparse. I feel that things could be a lot smoother with smarter tools support.
JSF is still struggling for dominance over a legacy created by Struts adoption, and an uphill battle against burnt fingers and mis-information about the framework.
I agree with Rick Hightower, that, once configured, you can be more productive and will find things more intuitive than Struts. However, if the goal is to make things as smooth as, say, ASP.NET 2.0, there is still some way to go.

I'm personally rooting for ICEFaces, who have made a fair bit of progress in the year since they Open-Sourced their JSF AJAX framework. ICEFaces is J2EE AJAX 'done right'. The Javascript is managed by the framework, giving a Java programmer the ability to control the state of the UI eficiently and dynamically from the server, using 'AJAX push'.

Having worked with Weblogic 10 for the last little while, I have been impressed with the complete toolset, including the development environment which allows easy integration with Weblogic server on the desktop. Weblogic Workshop is a custom version of Eclipse which includes advanced support for JSF authoring. BEA now includes ICEFaces support within the IDE. However, I ran across a couple of gotcha's which you may be interested in knowing.

ICE Faces support is available as a facet for a Dynamic Web Application in Weblogic Workshop 10.1
Read BEA Dev2Dev introductory article here.
All really good stuff.

Integrating with Facelets involves jumping a couple more hurdles:

BEA support at present is for ICE Faces 1.5.3. It can be added as a Facet to a Dynamic Web Project.
This is not compatible with later versions, and so when integrating facelets, you will have problems if you use the latest downloads from ICE Soft. Make sure you use the icefaces-facelets.jar from the 1.5.3 release if you are using Weblogic Workshop 10.1
The next logical step for BEA would be to include facelets as a project facet dependent on the ICEFaces facet.

Another thing that wasn't immediately apparent to me, is that icefaces-facelets.jar is a complete implementation of facelets, so you don't need to include jsf-facelets.jar in your project. Use icefaces-facelets.jar instead of the default implementation.

Once you get Facelets and ICE Faces configured correctly, you will probably want the IDE to help you with the TAG syntax. However, you will find that you will have little code-completion context help if you use the XHTML format preferred by Facelets.
Eclipse in general is not much help here. MyEclipse has made an effort to correct this oversight. However, all is not lost if you're using Eclipse WTP or Weblogic Workshop.
The trick is to use JSPX format to declare your namespaces. This will introduce code completion for your ICEFaces components, but Facelets tags will still be ignored. You need to get hold of the TLD taglib file for Facelets and place it into WEB-INF/tld.

You can get the Faclets TLD tag-lib file here:
jsf-ui.tld

And here's the final result:

Hope this helps!

Wednesday, October 10, 2007

CJUG Presentation about Facebook on October 10th

I guess I've been camping too much this Summer to blog!

I presented at CJUG this month on F8 - The Facebook Developer Platform for Java.
I'm being lazy, and so I'll redirect you to the Facebook Event where I posted links for those of you dying to get your apps developed and registered on Facebook.

Wednesday, November 01, 2006

Two-Way SSL in Weblogic for Developers

I've been scratching my head, throwing my hands up, even questioning my abilities as a developer for the past few working days trying to work out SSL.
And not because the theory is over my head, or because I couldn't find information on the subject - but because I was asked to simulate an existing production environment in development. A Two-Way SSL (or Mutual Authentication) setup, to be specific. A configuration that takes SSL setup to the limit!

If you need a primer on this subject, the theory and an example using Weblogic's demo setup is laid out clearly in this excellent article:
http://monduke.com/2006/06/04/the-fifteen-minute-guide-to-mutual-authentication/

Usually in development environments you can cut corners - but not with security. In fact I discovered it is more of a challenge for a couple of reasons:
1) Just about everyone who writes about it assumes you're setting it up for real and skips over the details if you don't want to get involved with a signing authority like Verisign - or, like the article above, you're using a test CA that has already been set up.
2) You have to simulate all the parts - including the bits the Verisigns and Thawtes usually take care of.

So to try to do the noble thing and save one or two of you that may be tortured with the same task, I am going to reveal the secrets of setting up Two-Way SSL using Java and Weblogic Tools using a Self-Signed CA certificate for development environments.

The tools we need for the job are:
  • Java keytool
  • BEA's modifed keytool: ImportPrivateKey
  • BEA's CertGen - Certificate Generator

All these tools do similar things and it's the subtle differences that'll kill ya. Be warned - you may be safer playing with a chainsaw! ;)
(I have a hunch there may be a way you can do this with just Java keytool, but I'll try to crack that one later on. If I do I'll post the solution here.)

I'm assuming, of course, that you've got Weblogic installed. For the record I'm using 9.2 and you should be somewhere in that vicinity too.
Note: Before you start, run setDomainEnv in the bin directory of your server domain.
e.g. on Windows:

path_to_bea\user_projects\domains\my_domain\bin\setDomainEnv.cmd


  1. Use CertGen to Generate Server Private Key and Certificate
    What we need at the outset is for everyone to trust us. We're all going to trust each other here because I say so. That's what the selfsigned switch is all about. In the real world, we trust each other because we mutually trust a Certificate Authority (CA) like Verisign. Here we're saying "I am the CA".

    java utils.CertGen -selfsigned -certfile MyOwnSelfCA.cer -keyfile MyOwnSelfKey.key -keyfilepass mykeypass -cn "My Own Self CA"

    You should see this response in the command window:
    Generating a self signed certificate with common name My Own Self CA and key strength 1024

  2. Create the Identity Keystore
    CertGen created a unique and secret Private Key for the server we're using and the Self-signed Root Certificate for us. But Java wants them packaged up neatly into a keystore.
    The one thing Java keytool doesn't do is import a ready-made private key...
    Drat!
    Fortunately BEA are a smart bunch and created a utility to help.
    And just to make sure there was no confusion about what it does, they called it ImportPrivateKey.
    Told you they were smart, didn't I?

    Now run this:
    java utils.ImportPrivateKey -keystore MyOwnIdentityStore.jks -storepass identitypass -keypass keypassword -alias trustself -certfile MyOwnSelfCA.cer.pem -keyfile MyOwnSelfKey.key.pem -keyfilepass mykeypass

    Imported private key MyOwnSelfKey.key.pem and certificate MyOwnSelfCA.cer.pem
    into a new keystore MyOwnIdentityStore.jks of type jks under alias trustself

  3. Import the Certificate into a new Trust keystore
    If you read the Monduke article from above, you'll know the name of the game is trust.
    When the client asks the server for a connection, the server will only allow access if it trusts the signer of the client's certificate. This is going to be the "My Own Self CA" and to make it happen we need our trusty MyOwnSelf certificate packed up into a separate keystore called the Trust Keystore. When the client presents it's certificate, this is where the server will look to see if it trusts the signature of the CA.
    keytool -import -trustcacerts -alias trustself -keystore TrustMyOwnSelf.jks -file MyOwnSelfCA.cer.der -keyalg RSA

    (Replace with equivilent ImportPrivateKey command?)

    Here's the tool's response:
    Enter keystore password: trustpass
    Owner: CN=My Own Self CA, OU=FOR TESTING ONLY, O=MyOrganization, L=MyTown, ST=My
    State, C=US
    Issuer: CN=My Own Self CA, OU=FOR TESTING ONLY, O=MyOrganization, L=MyTown, ST=M
    yState, C=US
    Serial number: ...

    Trust this certificate? [no]: yes
    Certificate was added to keystore

  4. Configure WLS with Identity and Trust stores

    Now we have an Identity Keystore for Server to Client communication (to supply certificates to the client) and a Trust Keystore for Client to Server communication (to accept certificates supplied by the client). We now need to tell Weblogic to use them.

    In the Weblogic Admin Console jump to the Keystores page and choose "Custom Identity and Custom Trust"

    Enter the locations of your Identity and Trust keystores, the passphrases identitypass and trustpass respectively, along with the alias in the SSL tab (I used 'trustself' above). The Private Key password in this example is 'keypassword'.

    When you've saved and activated your changes in the admin console, check the Weblogic command output window to verify that your Identity and Trust keystores were loaded with no problems.

  5. Test One Way SSL
    Under the SSL tab, make sure Two Way Client Cert Behavior is set to "Client Certificates Not Requested".

    This is important - make sure you have these entries in your config.xml file in the config directory of your domain:
    <client-certificate-enforced>false</client-certificate-enforced>
    <two-way-ssl-enabled>false</two-way-ssl-enabled>
    <server-private-key-alias>trustself</server-private-key-alias>

    If any are different, edit and save the config.xml to match, and then restart the Weblogic server.

    Now browse to https://localhost:7002/console
    (Assuming defaults.)



    All being well, the server should present the client with a certificate.
    However, the client has no reason to trust our Self-Signed Certificate yet, so it will throw up a dialog. (Also the name doesn't match that of the server. This isn't too important in a development environment - but something you'd definitely fix for production.)

  6. Install the Server Certificate on the Client
    To have the client trust the server permanently, we need to Install the certificate. Hit install and follow the instructions. When you next go into the Certificate Management screen you will see the "My Own Self CA" listed under "Trusted Root Certification Authorities"

  7. Test Two Way SSL without Client Certs required

  8. Now go into the WLS Admin Console and switch the
    Take a look at the WebLogic server console output:

    NO_CERTIFICATE

    The only way we got to the page was because we set Weblogic to ignore the fact that there was no client certificate. For truly secure Two-Way SSL where only authorized clients can talk to our server, we need to put a certificate on the client to send and require that the server check it.

  9. Create a client certificate using the Self-certified CA certificate

    Now we basically need to set up the opposite situation on the client that we did on the server. But, of course, there are some crucial differences. Wouldn't be any fun otherwise...

    It's time to generate the certificate for the client. This time we want the Certificate to identify the client machine (usually the user of the machine - you can set up one client certificate per user and have more than one on a machine if you need to), AND we want to ensure that the Client is linked to the Trusted CA Root Certificate we fabricated earlier. (This is why the ou (operating unit) of the client certificate must match the identity of the Trusted CA Certificate - in this case "My Own Self CA".)

    java utils.CertGen -certfile MyClientCert.cer -keyfile MyClientKey.key -keyfilepass clientkeypass -cacert MyOwnSelfCA.cer.der -cakey MyOwnSelfKey.key.der -cakeypass mykeypass -cn "My Client" -e "my.own@self.com" -ou "My Own Self CA"

    Generating a certificate with common name Client User and key strength 1024 issued by CA with certificate from MyOwnSelfCA.cer.der file and key from MyOwnSelfKey.key.der file

  10. Bundle up the Certificate and Key into a Format the Browser will like (it's PKCS12 if you have to know)

    Having the client certificate in bits won't be much appreciated by the browser, so we need to package it up - like a identity keystore, but in a different format that browsers like.

    java utils.ImportPrivateKey -keystore MyClientCert.p12 -storepass clientpass -storetype pkcs12 -keypass clientkeypass -alias clientcert -certfile MyClientCert.cer.pem -keyfile MyClientKey.key.pem -keyfilepass clientkeypass

  11. Import Trusted CA Certificate and Client Certificate into Browser
  12. There are essentially two pieces to the pie. First you need to import the Root CA Certificate so the browser trusts certificates sent from the server.Locate the MyOwnSelfCA.cer.der file that was made in the very first step, and import it into your browser as a Trusted Root Certification Authority (Tools > Options > Content > Certificates in IE)If using IE doesn't make you go weak at the knees, the easiest thing to do now is double-click the certificate file you just made. (MyClientCert.p12) IE will launch it's import certificate wizard and you'll be ready to roll.

    If you want to make life hard for yourself, then I'll assume you know how to import client certificates in your favourite browser and move on...

  13. Test Two-Way SSL
    The moment of truth:
    Browse to https://localhost:7002/console

    This is what should happen:
    1. Client request to server
    2. Server response - sends certificate signed by "My Own Self CA" and requests a certificate from the client
    3. Client examines certificate - decides to Trust it since it has the CA certificate for "My Own Self CA"
    4. Client sends its certificate to the server, again signed by "My Own Self CA"
    5. Server finds up "My Own Self CA" in its Trust store and decides to trust the client
    6. Server sends requested resource back to the client in encrypted form
    7. Client deciphers the encryption and displays the result - in this case the Weblogic Admin Console login page.

Tuesday, September 12, 2006

Cambrian House - Beyond IdeaWarz

One of the early criticisms of the Cambrian House IdeaWarz system is that anyone can post an idea in a few words, but how do you really sift the good ideas from the bad?
A popularily contest between ideas in the voting system, while being a loose indicator of gut reaction to an idea, is obviously full of flaws.
The idea may sound good, but how realistic is it? It is technically feasible? Is there a market? Is it actually original? Is it a shallow idea in embryo, or has the submitter put a lot of thought and research into it?
Some ideas on a napkin may sound like they've been done before. Is this a reason not to pursue it? Perhaps if something moderately successful was re-done better, it would be hugely successful? This is often the case in the real world. (Think: Google)
To achieve commercially viable projects, the idea has to go through many more trials and refinements to get it into a viable state. It's a process. Anyone who has realized an idea knows this. The ability to comment on Ideas in IdeaWarz is an informal way of challenging an idea and helping to refine it. But it's obviously not enough.

I made some suggestions to Cambrian House and hopefully they'll implement something along these lines.

After a little consideration, this is how the process could work:

Idea Submission
Putting down the essence of an idea in just a few words, along with some background on where the inspiration came from is a fine place to start. But sometime early in the submission process, the idea needs to be qualified for feasibility. I think that once an idea is submitted and passes the first gate of suitability (i.e. it's not offensive and meets the guidelines, and it's generally suitable for the CH Crowdsourcing model), it can enter IdeaWarz and get some feedback.
At the same time, Cambrian House should solicit some refinement of the idea from the submitter to enter the second gate.
(Along the lines of "Thanks for your idea. It has entered our initial feedback system IdeaWarz. We want to know more. Please log in and fill out the Self-Grading Justification Form to enter the next stage of the process.")

Self-Grading Justification
The submitter of the idea should now be asked to justify their idea by writing a concise description of the idea and self-grading it in the following areas:

  1. Suitability for Crowdsourcing on CH

  2. Originality

  3. Potential Market

  4. Commercial Viability

The self-grading process is not just intended to be a score out of 10. A paragraph or two on the fit in each of these areas is needed. For example, an idea that's not wholly original is not a bad idea for the model if a large market exists to be tapped into. And a product that's targeted at a smaller market with high saturation is often better than a mass market product that has high competition or low saturation. An acknowledgement of the potential challenges an idea may face and how this can be overcome adds strength to the idea.
Once the submitter of the idea has put a mark on their idea, it is then opened to the community to agree or disagree with the ratings, by adding their own ratings and comments. Do they think the idea is as marketable as the author does? Maybe there's an application of the idea that the author hasn't considered?
Discussing and brainstorming the idea in this way will help to mould it and may open other possible markets that were not originally conceived of.

Doing this would weed out weak and unsuitable ideas pretty quickly. The idea can stay in embryo on IdeaWarz but would never pass that stage if it cannot be solidified.
Why keep it on IdeaWarz? Why not just remove it?
Because ideas breed ideas. A weak idea can provoke a stronger more refined one. Keep the think tank full!
(I think it should generally be at the submitter's discretion to remove an idea. This is a function that is currently missing at Cambrian House.)

Solidification
So now that we have an idea that has some substance, we enter stage 2: Solidification. Here we get to be more critical of an idea. Cambrian House users can now start to contribute to ideas that have been justified by their submitter. It's an open forum where others can rate the idea according to their own perspective, challenge the ratings given by the submitter and contribute suggestions. At this point we're starting to prove the idea for its potential and build support and dedciation to it. Hopefully by the end of this process we'll have a focused group of people willing to contribute to the project.

Test the Market
Now it's time to go to market trial. The first task of the focus group (or CrowdSource Project group) is to produce a marketing site to promote the idea as a product. This then is made available to be judged by Cambrian House users. What do you think of this idea? Why do you think it would succeed or fail? Would you buy this product?
If the feedback at this stage is good, we release the product to the world. If pre-orders meet an specified goal within, say, 2-4 weeks, you then have 6 weeks to build it. (Of course, if the incentive is strong from the CrowdSource Project team, they can go ahead and build it to see 'if they will come').

Final Note
For CrowdSourcing to work you need the buy-in of a group of developers who are dedicated to the success of a project. The interaction involved in the development of the idea is also going to be key in getting the commitment and motivation of a group to 'get the job done', I feel.

Sunday, July 23, 2006

Cambrian House gains momentum



Cambrian House is getting attention in the Web world at the moment.
There are now over 1000 ideas posted (the validity of their potential as original ideas that fit the CrowdSourcing model is yet to be determined), but what it does represent is that the site is getting attention.

The jury is out on whether the IdeaWarz concept is actually putting the best ideas to the top of the Leaderboard. (That is: most viable for the Cambrian House model to implement and turn a profit.)
I think it's clear from going through them that some ideas are just not feasible, while others are not original, others very vague and some just irrelevant.
A better rating system is definitely required, although at the moment I think it's all about creating awareness and traffic, not creating profitable ideas.

I think that to keep the momentum going Cambrian House needs to show some real progress on some ideas to prove the participation in the CrowdSourcing concept is more than just passing curiosity - and ultimately pay out some real rewards for a successful project implemented.

Anyway, in the meantime, I've put my ideas on the right for you to click on and support at your whim. --->

Friday, July 14, 2006

Cambrian House

Cambrian House is a new website that promotes good ideas and turns them into products that can be distributed across the internet.

There are several stages in the evolution of an idea, the first being getting the idea promoted so that it ranks high on the leaderboard.

So here are my ideas currently in the running - please click each of the links below to get my ideas promoted

IMPORTANT: and then click "Yes, Please add my support to this idea!" on the Cambrian House website.

Thx a bunch!

Support 'Chess Card Game' at Cambrian House Check - The Chess Card Game



Support 'DireLogz' at Cambrian House DireLogz



Support 'Online Slideshow Creator' at Cambrian House Online Slideshow Creator



Support 'Ultimate JSF Component Set' at Cambrian House Ultimate JSF Component Set



Support MCE DVCR Scheduler at Cambrian House Windows Media Center Edition Digital VCR Web Scheduler



Support 'Board Game Incubator' at Cambrian House Crowdsourced Board Game Incubator



And while you're there, why not add an idea of your own? It's fun!
:)

Wednesday, July 12, 2006

Melissa O'Neil

I had a great evening taking my daughter to the Calgary Stampede yesterday evening.
The Stampede was not really on the radar this year. It becomes a bit same ol' same ol' after a couple of years.
But this year we had a winner from Calgary on Canadian Idol who has caught my 10 year old daughter's attention: Melissa O'Neil. I have been impressed by the material she has been given for her first album as it has been played around the house this year. Melissa was featured in a live gig at the Stampede this summer and it worked out that I got to take my daughter along with a friend and his daughter.
I got there first from work and noticed that Melissa had come out to sign autographs. I asked Melissa to sign it to my daughter and had a pleasant little chat with her.
About half an hour later my daughter arrived and fortunately Melissa was still out meeting and greeting. The thing that impressed me most was that she remembered my daughter's name from before and even how to spell it. Of course, that made my daughter's day!
Melissa was supported by Rex Goudie, the runner-up in Canadian Idol. Rex was good enough, and when Melissa came on (at 11pm) she was awesome. We were told it was her 18th birthday. It was obviously an emotional evening for her, and her performance was awesome. She's up there with Kelly Clarkson (who I'm not too keen on). I somehow don't think she'll get the same exposure on the international stage, but she certainly deserves it.

(Some) Pop is becoming interesting again...

Like many people, I have become disgruntled with the manufactured pop industry for a while now. I'm sure that the executives and the industry haven't changed that much, but I am noticing some new talent bubbling up.
The first band to really catch my attention recently was Coldplay. I had one of their albums, "A Rush of Blood to the Head" and liked certain aspects of it, but found aspects of it somewhat melancholy. So I held off buying "X&Y" until my wife asked me what I wanted for Christmas.
Turned out to be one of those rare classic albums. Like Joshua Tree. And Brothers In Arms.
Coldplay are now on the A-list.

The other artist that has recently caught my attention is Natasha Beddingfield from the UK. I guess that she's classed as R&B/Soul, although most of the things that I usually disdain about that style are mellowed in Natasha's world to a digestable level. There is a track in the middle of the album, 'Drop Me In The Middle', with a guest rapper which I wouldn't usually give a second listen. However, the hook is so addictive the rap is at first acceptable, and on a few listens actually enhances the track. (The rap is better for it's British accent and poetic style.)
And this is what makes the album, 'Unwritten', stand up for me: the lyrics in the songs are thoughtful and poetic, sung with Natasha's uniquely raspy, soulful voice; the melodies are catchy, often syncopative, without being formulaic. There is not a bad track on the album. And they are Natasha's own. This girl has groove!
Natasha is British R&B's answer to Country's Shania. And judging by the way she is now getting wide exposure in the US & Canada, I think she'll be just as enormous.

Friday, May 05, 2006

20 years of Howard Jones

It all seems like such a long time ago. I was about 16 and my friend gave me a tape of New Order. I listened to "Blue Monday" and thought it was cool. Then I flipped it to the other side and heard the words: "Well you're not, you're not who you think you are - jumbled mass of pre-conceived ideas... Welcome to Conditioning."
Something about those words struck a chord with me, and as I continued to listen to "Humans Lib" I knew there was something unique about Howard Jones.
The music was exceptionally well-crafted new wave pop with interesting layered synthesized sounds, and even more interesting lyrics.


Twenty years later, and Howard's songs still mean as much to me. He has added more great songs to my list of favourites with every album release, making a Twentieth Anniversary Concert the concentration of many of the musical highlights of my life.
Don't get me wrong: I'm not a complete fanatic, I like a very broad range of music. But Howard has stayed at the very top of my list of favourite artists because his music is not shallow, he doesn't try to stay in the same niche and he doesn't give up.
An acoustic concert with Howard Jones is every bit as enjoyable as electric set or a full band.

Which is what makes the 20th Anniversary Concert 2-Disc DVD exceptional. Four sets covering 20 years of some of the best pop music ever written shows us the very best of what Howard Jones has given to the world.
It starts with just him and Andy Ross playing together. But no, not keyboard and percussion, nor keyboard and guitar - but keyboard and some kind of mandolin, which Ross uses as both a string instrument and percussion. Not to be outdone, Howard's next guest, Nick Beggs, brings on his Chapman Stick - a ten string electric bass guitar whose strings are tapped rather than plucked - played almost like a piano with both hands. The skill is incredible - and the synergy is invigorating. And we're only two songs into the gig.
The momentum increases as, after the acoustic set we are treated to a pure nostalgia ride with Howard playing his original synthesizer setup from the mid-eighties era, joined by his signature mime-artist Jed - the 'chain guy'. And with the 5.1 surround mix those synths never sounded better!
With any normal live concert DVD this would be a full meal deal. But this concert is the equivilent of a multi-course Italian wedding feast. Insert the second DVD and the ride continues to get better, with Howard's modern electric set fully utilizing the latest in modern music technology, and his new right-hand man, Robbie Bronniman on the live mixing desk. But we're not listening to house dance music, we're listening to great new Howard Jones pop compositions and reworkings of old favourites which, frankly, rock the house. By the point, the audience is pumped and involved, whether you were there on the night, or witnessing it on this DVD in what genuinely feels like first hand.
Enter the full band for the finale - and what a finale it is. Howard seems to be more in his element than ever behind a grand piano with the full support of guitar, bass, keyboard, drums and backing. Which may well surprise those who narrowly pidgeon-hole him as a synth-pop spiky-haired throwback of the 80's. Howard Jones comes out of his synthesizer contrained cocoon, meta-morphosizing into what Rubert Hine, producer of his first two albums, explains (in the extra features interview) he wants the world to know: "he's an utterly brilliant singer/songwriter."
Until now it's all been about Howard Jones. But this is a special occasion, and so Nena ("99 Red Balloons") joins in to sing her anthem in native German and Midge Ure (Ultravox, Band Aid) performs "Dancing With Tears In My Eyes" and the classic 80's anthem "Vienna".
Howard's band then tops off the evening with some more classics and you're left engergized and astounded.
Fantastic. Buy it.
The best value music DVD out there.

Thursday, May 04, 2006

Using a laptop as a Home Theater PC

This is a copy of a review I did for my new laptop on avsforum.com:

I recently was in the market for a new Laptop PC. I wanted something fairly powerful but reasonably light for my software consulting business.

As I did my research I discovered that several notebooks are now shipping with Windows Media Center Edition. Some notebooks are advertised as Media Laptops and this got me thinking as to what would constitute a minimum requirement for a Home Theater Notebook PC.

Here are my conclusions:

A Home Theater laptop needs to be able to do more than just play DVDs.

Notebooks can be upgraded somewhat to support HTPC features, but to be called an HTPC a laptop must have these features 'out-of-the-box':

  • It should be bundled with common media software, such Windows Media Player, Quicktime/iTunes, and a DVD Player. Ideally it should be bundled with XP Media Center Edition if it's a Windows-based laptop.
  • It must be able to output to an external display device at its native resolution. (DLP TV, Projector, Plasma, etc.) Most laptops these days are capable of that.
  • It must be able to play back DVDs without stutter, and ideally have enough juice and RAM to playback using post-processing software like ffdshow.
  • It should support digital audio passthrough at the hardware level. (Note that there are SP/DIF digital audio USB 2.0 devices available which can upgrade the HT capability of a notebook.)
  • DVD drive (of course) and ideally a DVD-Writer. Front-slot loading style would be a definite advantage.
  • It should be able to store digital media content on it's internal hard drive, and optionally be capable of recording TV content for later playback. (Again USB TV Tuner devices can be added on to give a notebook this capability. I don't consider this an essential feature for a portable HTPC, since you are tied to plugging it in to getting a decent TV signal. This could change as services offering streaming TV over a (wireless) internet connection are now coming online.)
  • It should be capable of being controlled remotely and wirelessly for playback, and also ideally should have special functions on the keyboard for media playback.

From this definition, many modern notebooks could be used as an HTPC. For notebook to be advertized as a Media Center Laptop, however, the majority of these features would be included in the purchase package.

The Candidates

I found a few notebooks within my budget (~CDN $1500) and feature range that I considered candidates:

  1. ACER 5672WLMi - Intel Duo 1.6GHz, 2Gb RAM, 120Gb 5400rpm HD, ATI x1400, XP Home
  2. HP Pavilion dv5040us - AMD Turion64 2.2Ghz, 2Gb RAM, 100Gb 4200rpm HD, ATI 200m, XP MCE 2005
  3. Gateway MX6750 - Intel Duo 1.6 Ghz, 1Gb RAM, 100Gb 4200rpm HD, ATI x1400, XP MCE 2005

All these PCs are in the same price range, footprint (15.4" screen) and weight class. (Around 3kg, 6.5lbs)

I wanted a notebook that needed as little upgrading as possible.
For my purposes, a notebook is first and foremost a portable device and so I didn't want to have too many things to plug in when using it in my Home Theater setup.

Other manufacturers (such as Toshiba, Sony and Fujitsu) offered similar featuresets in a higher price range.

The ACER was pretty much fully loaded feature-wise, with optical digital out and a faster 5400 spin hard drive. For HTPC it lacks a remote control device in the bundle. Based on the 1.6Ghz Core Duo processor it was plenty powerful, and a juicy ATI X1400 card was clearly adequate for all HTPC video processing and modern gaming. Reviews I have read have complained about the general build quality of the ACER machines. I have also heard that the visual quality of the built-in screen has a lot to be desired. The biggest drawback for me was that it was a media center capable laptop but bundled with XP Home. Adding MCE and a remote control to the deal brought the cost too close to $2000.

The Gateway, advertised as a Media Center laptop, comes with Media Center edition, and also an ATI X1400 graphics card. Curiously missing from the feature set however, is any mention of digial audio output. Apart from the fact that sales reps recommended that I take a look at the Gateways, I would not have normally looked at a Gateway. Probably just personal bias.

I went for the Hewlett Packard for several reasons, but mainly because the build quality is reported to be better than the ACER and it comes with Media Center Edition. This means that support for Media Center issues would be part and parcel of the deal. Personally I like the design and robustness of this laptop, and the quality of the brightview widescreen display is truly excellent. (And I got a good deal on it - $200 off the regularly posted price.)

The HP Pavilion dv5040us was advertized as a Media Center laptop. It comes with MCE 2005. It has 2Gb RAM and a 2.2 GHz AMD Turion 64 bit processor, integrated ATI XPRESS 200M graphics and a 100Gb hard drive. One of the major plusses for HTPC use was that it features S/PDIF passthrough as a mini-Toslink optical connection through the dual function 3.5mm headphone jack. When HP also bundles a mini Media Center remote control which slots neatly into the PCMCIA slot, you know that they designed this laptop with Media Center in mind.
By my standards, it pretty much meets the minimum requirements for a portable HTPC. One limitation is the lack of a DVI output port. This may or may not be a problem for you, depending on the inputs of your Home Theater display.

On the slight downside the drive is only 4200rpm (capable but not performant - in a laptop there's usually a trade-off between dirve performance and battery life). The ATI graphics is capable of DVD playback and is fine for HTPC use, but it is a little underpowered for my other hobby: gaming. A more powerful X700 or X1400 chip would have made a lot more sense in a notebook with these specifications. But not a show-stopper, since I play games on my main desktop PC.

Another consideration for a Notebook HTPC is form factor. The placement of the connector sockets can make a difference as you will be connecting and disconnecting the device quite often. The form factor of a laptop is significantly different to a PC, and it can actually have a larger footprint than your typical HTPC.
In the case of the dv5040us, the connectors are all at the sides. I like this for when I'm plugging the PC into the external monitor for work requirements. However, when hooking it up to the Home Theater components, it offers some new challenges. The laptop is about as wide as the other components in my media stack. Inserting a DVD into the laptop is impossible with out moving the laptop to get access at the pop-out drive tray. This could definitely be improved with a front loading drive - ideally slot loading. Plugging in the VGA cable at the side is pretty tight in my cabinet. One criticism here is that the VGA port fit is not snug and there are no screw holes to make it secure. Even though I have not had any serious connection problems, it concerns me a little that the cable does not quite fit properly. Making matters worse, the audio output is on the other side of the laptop, meaning that my footprint is extended by an inch or two on each side, making it a really tight fit in my media cabinet. The fit could be even tighter when adding on dongles into the USB ports, so consider this if purchasing a media center laptop to fit in your rack. Perhaps investing in a docking station might solve some of these issues providing rear connectors, and reducing the need for multiple cable plug-ins when setting up the laptop for HTPC use. (You might even get DVI and coax digital audio outputs to round out the availiable connectors?)

Out of the box, I had a few issues with the software. WinDVD was not properly integrated with MCE and threw out errors on DVD playback, even though it worked fine when launched as a standalone app. The optical digital sound worked fine with no configuration necessary - fine, that is for two-channel sound only. When switched to streaming Dolby digital/DTS 5.1 channel sound it was awful with sound-popping and constant dropouts.
Contacting HP support to get the latest WinDVD oem support download and the latest sound drivers has fixed most of these problems, but I still have detected the occassional sound dropout through my Yamaha receiver. I am confident that this can be fixed through software updates, and I hope they will be forthcoming in the near future.
The ATI drivers are fine for my Home Theater display, which is not as advanced as some of the latest hi-rez TVs and projectors, having only a capability for 800x600 resolution. The laptop worked fine with my borther-in-law's brand new Samsung DLP TV through the VGA input, recognizing its resolutions and looking GREAT.
However, with only a VGA output on the laptop, I could not test the true digital DVI connection to the Sammy.

Overall, I think the dv5040us is adequate as an HTPC. I had a couple of quibbles with the software drivers which are pretty much sorted now. To truly take advantage of MCE you should add a USB2.0 tuner/capture card if you're into PVR, but other than that it's pretty much a full package, which isn't bad for a mid-range, mid-sized laptop. (Incidentally, HP provide a TV capture card as an optional extra for this model. You can also purchase a full-size remote control and a 'car-kit' for strapping into a vehicle for long journeys.) It almost passes on all counts for what it is advertized to be - a Media Center Laptop.

Wednesday, April 12, 2006

Java SWING Survival Guide: Where are we a year later?

In this article, Matt Stephens gives his opinion about the missed opportunities with SWING and Java applets, and makes some suggestions about what could be done to improve the situation in his Java Swing Survival Guide

Is this a pipe-dream or a road map to success. Are his comments visionary, timely, or too little too late?

I think that SWING should be streets ahead of where it currently is by now. I mean, it's nearly 10 years old and it still feels like it's only just starting to walk!

I agree with a lot of what he has to say, and interestingly there are now some initiatives underway to bring SWING up to date. Forthcoming feature enhancements in Java 6 and both SWINGX and the Spring Rich Client project are just two things that may resolve some of the issues mentioned. But they're both a little way off from being truely usable.

I have had the same thoughts about the missed opportunity of Java Applets to really, really shine in the way that Flash have so successfully done. I think Flash caught the attention of the web designers and developers, and application programmers pretty much took a back seat while the whole web revolution happened.

I think it's a true irony, even a subconscious statement of defeat, that when you go to www.java.com (the consumer face of Java) the first thing that gets your attention is a Flash animation!!

But the demand for richer applications may revitalize Web Start and maybe even Applets if enough concentration on great looking applets and applications is made. However, I fear that the talent to make things look great doesn't exist in Sun's corner. I think the applet may be pretty much down and out for the count in the browser arena.

Acceptance of Java needs to be on a more serious level. I think that may more applications that are currently being done as web apps and being retrofitted with AJAX are suited better to being deployed by Web Start. Perhaps this is where the niche can be filled with better, more usable applications?

Comments welcome >

SWING Links from the CJUG presentation

Here are some links discussed in the "SWING Goodies Not Found in the JDK" presentation:

FlexDock Open source docking framework
https://flexdock.dev.java.net/

TableLayout - alternative to GridBag layout
https://tablelayout.dev.java.net/

Official SWING links on Sun.com
JFC/Swing Home Page
http://java.sun.com/products/jfc/index.jsp
The SWING connection
http://java.sun.com/products/jfc/tsc/
SWING Sightings - Lots of real SWING apps to peruse
http://java.sun.com/products/jfc/tsc/sightings/

SwingX - SWING Extensions project (sub-project of SwingLabs)
https://swingx.dev.java.net/

SwingLabs Open Source project
http://www.swinglabs.org

Spring Rich Client Project - First stable release v0.1.0 just released!
http://spring-rich-c.sourceforge.net/

JGoodies
http://www.jgoodies.com/

JIDE Commercial Docking framework
http://www.jidesoft.com/

Javootoo.com - Repository of SWING enhancements, such as look & feels
http://www.javootoo.com

Napkin Look & Feel
http://napkinlaf.sourceforge.net/

Vector based (Flash-like) SWING Look & Feel:
http://www.oyoaha.com

IconCraft - Programmer's Icon Editor (Limited Shareware)
http://www.iconempire.com/iconcraft/

Romain Guy's Weblogs - Developer on Sun's SWING team:
On java.net:
http://weblogs.java.net/blog/gfx

On jroller.com:
http://www.jroller.com/page/gfx?entry=swingx_painters_demo

Tuesday, April 11, 2006

Check for Palm nearly done


One of my pet projects over the last few months has been to program an electronic version of my card game, Check - The Chess Card Game onto the Palm (and other devices).
I have been using Waba, an excellent micro-VM to do it.
I'm just about there with a Beta which needs testing. If you have a Palm device and want to try it out, bring it along to CJUG on Weds 12th April and I'll beam you a copy to play with.
(You need a colour device with 320x320 or greater resolution.)

Once I'm done on the Palm, I plan to port it to J2ME and run it on my phone.

Wednesday, March 29, 2006

Presenting at CJUG next month

The chairman of the Calgary Java User's Group (www.cjug.org) got wind that I was playing around with an Open Source Docking Framework called FlexDock.

As announced at the Sun Java Developer Day Conference in Calgary yesterday, I'll be presenting it along with some other "SWING Goodies Not Found in the JDK" at CJUG on Wednesday, April 12th.
In his keynote, James Gosling mentioned a movement back toward SWING as the framework gets improvements in terms of performance and code efficiency and frustrated users crave richer clients.

SWING might just be coming back into fashion.

Watch this space... I'll post some supporting info here pretty soon.

Wednesday, February 22, 2006

Good design worth blogging about


Last weekend we went camping. Even though it was cold (-15C), the sun was out and we had a great time for most of it. One of the higlights of the camp was a hike into the Ice Caves. Another was a bowl. A bowl? Yes, from IKEA.
What's great about this bowl is that it is one of the best industrial designs I have come across in recent times. And it's only $3.
The bowl has a long vertical handle which makes it stable when standing on a flat surface, and a hole which can act as a spout or for your spoon to go through, and a flat lid that slides out to make a plate or tray. It's made of durable plastic which is microwave safe. I often have soups at lunchtime which need heating up. After five minutes in the microwave, my Chunky Soup was hot but the handle was perfectly cool.
You can drink from it, have soup or noodles, breakfast or a meal, using the plate lid for pancakes or bread. Perfect for camping.

Well done IKEA.

Another interesting game


Following on from my other post about original games, the Japanese game for PS2 from Namco, Katamari Damashi has to be one of the strangest, most original and ENJOYABLE experiences in gaming. Not since Lemmings has such a interesting gaming concept come along.
Translated it means somthing like "Prince Roller".
The intro and in-between sequences can only be likened to something like a Monty Python animation mixed with strange Japanese pop-culture.
The essence of the storyline (if it can be called that) is that the King of the Cosmos has somehow caused the stars to fall out of the sky and you, as the young Prince, have the job of making stars and constellations to put things right. How do you do this? Roll up earthly items using your gravity ball (the Katamari) until you reach the desired size. But bump into something too big and you will not only lose momentum, but also some of your precious items will be knocked off reducing the size and knocking you back from achieving the goal.
As the game progresses, you will be placed in various scenarios where the objective is harder and the things to pick up are larger and harder to roll up. The game has a strange humour - eventually you'll be rolling up amimate objects such as cats, cows and even people. The finale level is fun as you eventually get to roll up high rise buildings, small islands, and even clouds!
Apparently it sold hundreds of thousands of copies in Japan and there's now a sequel: "We Love Katamari", and I believe another one is in the pipeline for PSP. You have to see and play it to believe it.

A friend told me there is a 2D simplified version of the game on the net at this location: http://katamaridamacy.jp/qa_data/katamari.html

Tuesday, November 29, 2005

Innovative, enjoyable Games

Interesting blog here on java.net

Ha! Interesting they should mention "No One Lives Forever". I just picked that one out of the bargain bin on PS2 for a Christmas Present. Hope that this version is as good as on the PC.

The FPS games that really took my notice of late is the Splinter Cell series, which very effectively uses excellent AI and the new lighting technology of today's GPUs to create an immersive story-driven game experience with an extra dimension - that of true stealth and espionage. The other game I really enjoyed from it's storybook feel, interestingly from the same developers, was Prince of Persia, the Sands of Time. (Such a disappointment that they felt to turn up the gore and somewhat lose the fantastic epic adventure storybook feel in the sequel. This shows where the focus of the industry lies nowadays.)

Games having true invention like this are becoming more and more rare. The newer game types are coming with new kinds of input device, and in some cases inventive use of new technology enabled by the hardware. Truly original game experiences of late have been things like Dance & Karaoke Revolution series which use floor mat and microphone as input devices and games that use a camera (like the EyeToy) to detect physical body movement. I am looking forward to trying the EyeToy out with my family this Christmas.

My list of truly inventive games over the years starts with Elite. The game that realized the one of the most powerful aspects of game design is imagination. The true skill of game creation is to unleash that power within the gaming environment.

Other games showing true innovation to create a truly memorable gaming experience that come to mind are Lemmings, The Incredible Machine (and it's classic comical counterpart The Incredible Toons) and Battlezone 3D by Pandemic.