<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9295154</id><updated>2012-01-19T01:23:28.377-08:00</updated><category term='mobile'/><category term='Steve Jobs'/><category term='developer'/><category term='problems'/><category term='iPhone'/><category term='Android'/><title type='text'>Red3 Standing by...</title><subtitle type='html'>Sometimes I want to rant, other times just express an opinion. 
Where do my opinions lie?
Software design and usability, 
Games - all kinds - Computer and social (but not gambling and pure chance), 
Movies, 
Morals, 
Family 
Good rock &amp; pop music.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9295154.post-3362524788751169967</id><published>2011-12-19T08:55:00.000-08:00</published><updated>2011-12-19T09:00:29.045-08:00</updated><title type='text'>No Festive Goodwill from Apple</title><content type='html'>You are chatting with Alicia, an Apple Expert&lt;br /&gt;Hi, my name is Alicia. Welcome to Apple!&lt;br /&gt;You: Hi - I am considering a MacBook Pro.&lt;br /&gt;Alicia: Hi!&lt;br /&gt;Alicia: Ok&lt;br /&gt;Alicia: How can I help?&lt;br /&gt;You: Wondering if there are any plans for a Boxing Day Sale price in Canada?&lt;br /&gt;Alicia: We do not have sales for Boxing Day in Canada. I'm sorry.&lt;br /&gt;You: Oh! Boxing Day is my birthday! Can you offer me any special deals?&lt;br /&gt;You: :)&lt;br /&gt;Alicia: If I had any promo codes, i sure would!&lt;br /&gt;Alicia: But I don't.&lt;br /&gt;Alicia: I'm sorry!&lt;br /&gt;You: Where might I get a special promo code from?&lt;br /&gt;Alicia: We don't have them right now.&lt;br /&gt;Alicia: That space is for when we have any (like shipping codes).&lt;br /&gt;You: When do you have them? When is the best time to buy a Mac?&lt;br /&gt;Alicia: It is very rare that we ever have them.&lt;br /&gt;You: I bet you have them on Black Friday? Why not on Boxing Day for Canadians?&lt;br /&gt;Alicia: This chat service is here to help with the Apple Online Store.  How may I help with your shopping?&lt;br /&gt;You: I have the items in my cart and I'm having trouble hitting the buy button...&lt;br /&gt;Alicia: Ok. What seems to be the issue then?&lt;br /&gt;You: It costs too much. A little seasonal goodwill from Apple would help.&lt;br /&gt;Alicia: I'm sorry. If I had any promo codes to offer, I would offer them to you. Apple is known to be a company with little to no sales.&lt;br /&gt;You: Well you may have just lost a customer. I think I'll buy an ASUS for $1000 less.&lt;br /&gt;Alicia: That's fine. keep in mind, their quality is not the same as ours. It won't last you half as long either.&lt;br /&gt;Alicia: If that's what you choose.&lt;br /&gt;You: I don't think that you can qualify that statement. A friend of mine (loyal Apple customer) told me to buy the AppleCare warranty because he has ALWAYS needed it.&lt;br /&gt;Alicia: Well, his situation might be different. I'm not going to argue with you.&lt;br /&gt;Alicia: I don't have any discounts or promo codes to offer you.&lt;br /&gt;Alicia: Is there anything else today?&lt;br /&gt;You: I didn't come here to bash Apple. I want to buy one but I'm not getting a warm and fuzzy that would make me a happy customer. I will have to think about it some more... Thank you for your time.&lt;br /&gt;Alicia: Well you are asking me to give you something that I simply do not have. If I did, I totally would. But you thinking that I do and just won't give it to you.&lt;br /&gt;You: If you threw in a free 1 year One-to-One membership or something like that, I think I would buy it today. All I want is a little good will or flexibility.&lt;br /&gt;You: But it sounds like your hands are tied.&lt;br /&gt;Alicia: My hands are tied. I have absolutely nothing I can "throw in" or any promo codes I can even offer. If I did, it would be no problem giving it to you!&lt;br /&gt;You: OK. Bye Apple.&lt;br /&gt;Alicia: Thank you for visiting the Apple Store. We appreciate your business. If you would like more help, please chat with us again.&lt;br /&gt;Thank you for choosing the Apple Store. If you have any additional questions, please chat us again.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-3362524788751169967?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/3362524788751169967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=3362524788751169967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/3362524788751169967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/3362524788751169967'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2011/12/no-festive-goodwill-from-apple.html' title='No Festive Goodwill from Apple'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-4820888942123902818</id><published>2011-11-16T11:09:00.000-08:00</published><updated>2011-11-16T11:10:13.802-08:00</updated><title type='text'>I am Android - for we are many...</title><content type='html'>&lt;div&gt;A picture of health? In this case green is healthy and iPhone is in excellent health compared to Android which is red and burning hot with a fever.&lt;/div&gt;&lt;div&gt;I think this pretty much sums up my statement in the last post that Android is not a platform but really a minefield of similar but significantly different devices derived from a common base.&lt;/div&gt;&lt;div&gt;This is based on research published in a &lt;a href="http://theunderstatement.com/post/11982112928/android-orphans-visualizing-a-sad-history-of-support"&gt;blog post by Michael Degusta&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://media.theunderstatement.com/016a_android_orphans.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://media.theunderstatement.com/016a_android_orphans.png" border="0" alt="" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 590px; height: 810px; " /&gt;&lt;/a&gt;&lt;br /&gt;This picture is like a burning fire which should have the effect of warning developers to stay away!&lt;div&gt;And the best supported phone on this chart is the HTC Nexus One. But it's the end of the line for the Nexus - "&lt;a href="http://techcrunch.com/2011/10/26/the-nexus-one-isnt-invited-to-the-ice-cream-sandwich-social/"&gt;it's just 'too old' for the new software&lt;/a&gt;". (Link to news article.)&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(Thanks to &lt;a href="http://www.erikyuzwa.com/"&gt;Wazoo&lt;/a&gt; for pointing this out to me - and for quoting my blog!)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-4820888942123902818?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/4820888942123902818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=4820888942123902818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/4820888942123902818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/4820888942123902818'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2011/11/i-am-android-for-we-are-many.html' title='I am Android - for we are many...'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-6333140367479619894</id><published>2011-11-15T10:36:00.000-08:00</published><updated>2011-11-16T10:48:31.991-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Steve Jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>This is not the Droid we are looking for!</title><content type='html'>My previous post indicated that I had frustrations with Android.&lt;div&gt;I will tell you why.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But first of all let me congratulate Steve Jobs &amp;amp; co for raising our expectations so high! The iPhone really is a product that deserves its place in the history books of technological advancement. It really does deliver exceptionally well on all fronts - including its excellent embedded browser. It is a shining example of standards support and best-in-class implementation. Steve Jobs had a theory that user experience should drive your business. With the iPhone he realized his vision and exceeded my expectations.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Back to Android. Android is assumed to be a direct competitor to the iPhone and somewhat on par with it. At least it's marketed that way, and I would say perceived that way, by many.&lt;/div&gt;&lt;div&gt;&lt;i&gt;The reality is a very different story.&lt;/i&gt; The difference is that where iPhone controls the hardware of their platform and is therefore working from a common hardware base, Android is an open architecture. The Android software is available for all the wannabe hardware manufacturers to base their software build on. Each manufacturer puts a different hardware configuration together and tweaks the basic software to work with their hardware. For competitive advantage, some manufacturers will also tweak the browser software and other components to their own whim. So when a phone says it is Android 2.2, it will not necessarily work the same as another 2.2 phone. There will be differences. Not all 'droids are created equal.&lt;/div&gt;&lt;div&gt;To compound the problem, the carriers will also want specifics for their own purposes. For example, custom apps bundled in to the base build to be pre-installed on the phone.&lt;/div&gt;&lt;div&gt;Furthermore, where it falls apart is in the software landscape. How do you get a software update for your phone? From the provider. Who releases the build? The manufacturer through the provider. So now the manufacturer is a software development house. They have branched the code for all their devices, and are stuck with supporting them. They not only have specific builds for each of their hardware configurations, but also have to customize that build to satisfy the demands of the network providers. And it's not in their best interests to be caught in a support cycle. There's no revenue in that - the phone has already been sold. They are interested in getting the next product out the door before their competitors do. And as we've seen, getting updates for Android has proven extremely frustrating for end users. Think of all the effort required to put the next great Android release from Google onto an already released phone. Chances are that the effort will be put into the next phone to be bought, not the one that has already been sold.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;So how does all this affect the developer?&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Well, to deliver on Android we have to contend with many, many different devices, many of which have different software configurations and patches on them. And this assumes that there are no hardware glitches or known issues - a very naive assumption when you realize that most of these products have been rushed into a highly competitive market.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Steve Jobs actually addressed this situation in what is called his 'Google rant'. I just think he was trying to expose the truth and help Google to see that they were going down a path that would induce pain on all fronts. You could see this as an arrogant 'told you so' rant, but I see it as a fair warning and glad you told us.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=bxoAF0Jvhqc"&gt;http://www.youtube.com/watch?v=bxoAF0Jvhqc&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So taking all this into consideration, as a software architect you might look for ways to alleviate the pain. No development shop wants to manage any more code branches than they have to.&lt;/div&gt;&lt;div&gt;As an architect, you would not be at all blamed for following this line of thought: Android is not really a standard, but a myriad of very similar, but significantly different products. I need a common platform to deliver on. Is there an alternative?&lt;/div&gt;&lt;div&gt;Hang on, isn't that excellent HTML5 compliant iPhone browser based on webkit? Yeah - it's actually called Mobile Safari. Isn't Google Chrome based on webkit too? That browser on the Android phone is also webkit-based and HTML5 compliant. It must be Mobile Chrome. Why don't we build our apps to web standards instead? I've heard you can do some really nifty animation effects with CSS3... this could be just what I'm looking for, and it actually might be a lot of fun!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;STOP RIGHT THERE!&lt;/div&gt;&lt;div&gt;Time for a reality check (or two)! (Remember that I'm biased towards creating cross-platform HTML5 mobile apps, so I'll talk a lot about the browser.)&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Reality check #1:&lt;/b&gt;  The current Android browser is not Mobile Chrome. Remember - Google bought Android, they didn't make it. It may pass the HTML5 compliance tests, but that does not mean to say it does it well. My experience with the Android browser is that it's glitchy, inconsistent across devices and rough around the edges. For example, its rendering of CSS3 rounded corners is noticeably jaggy, and positioning of elements is often off by a pixel creating gaps where there should be none. (My suspicion is that Google are frantically re-implementing the Android browser to become the Mobile Chrome many think it is.)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Reality check #2:&lt;/b&gt; All Androids (and their browsers) are NOT created equal. Manufacturers tweak the browser code too for their own purposes.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Reality check #3:&lt;/b&gt; There are also certain commercial, political and legal reasons why things are different on different Android devices. Don't believe me? Load up Google maps &lt;i&gt;in the Android browser&lt;/i&gt; and try doing pinch to zoom on a 2.x HTC phone. Now try the same on a Samsung phone. The difference? HTC does not want to impinge on multi-touch patents, hence no pinch to zoom in the browser. (Samsung supports pinch-to-zoom. But they had to withdraw some devices in some countries because of patent infringement. Could there be a link?)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Reality check #4:&lt;/b&gt; Just because it's got it, doesn't mean to say it flaunts it. Android devices have some of the most impressive hardware specs around. Multi-core processors, GPUs &amp;amp; gobs of memory. However, try panning Bing Map in the Android browser. Then try it on an iPhone. The difference: Android does not implement hardware acceleration in the browser rendering of elements, and it shows.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Reality check #5:&lt;/b&gt; Even though it's in the best interests of Google to improve Android fast (to live up to the expectations of its customers and become a truly viable competitor), this does nothing to rectify the myriad of broken/deficient devices that are already out there. And even when they do fix the Android reference build, how will they enforce standards on an 'open' community who will continue to tweak the core to meet their own agendas?&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;In short, if you were expecting Android to be a platform you could deliver on, be ready for a reality check. You might have been looking to extend your application to other devices, and assumed that Android was a platform just like iOS. However: "&lt;i&gt;This is not the Droid we were looking for!"&lt;/i&gt;&lt;/div&gt;&lt;div&gt;Welcome to the minefield that is Android. To mis-quote a biblical verse: &lt;i&gt;"I am Android, for we are many."&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-6333140367479619894?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/6333140367479619894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=6333140367479619894' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/6333140367479619894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/6333140367479619894'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2011/11/this-is-not-droid-we-are-looking-for.html' title='This is not the Droid we are looking for!'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-2644532602354488008</id><published>2011-09-27T08:45:00.001-07:00</published><updated>2011-11-10T09:01:20.185-08:00</updated><title type='text'>The Reality of Mobile Web Development</title><content type='html'>I'm just coming out of the other end of our mobile web project. What an interesting, and sometimes frustrating ride!&lt;div&gt;Here are some conclusions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;jQuery Mobile is now at release candidate 2&lt;br /&gt;&lt;/li&gt;&lt;li&gt;iPhone rocks on the mobile web&lt;/li&gt;&lt;li&gt;Android browser is deficient&lt;/li&gt;&lt;li&gt;Blackberry is seriously deficient - don't go there - it'll be stone dead in a moment!&lt;/li&gt;&lt;li&gt;Windows Mobile - Late out of the gate, initial signs are good, but it's too early to tell&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;If the promise of cross-platform mobile web applications is going to be fulfilled, standards need to be conformed to, and implementation of those standards must be done well. Android should really be a contender, but they need to get their act together.&lt;br /&gt;The theory of cross platform mobile web development seems sound: both iPhone and Android phones are smart devices with large memory footprints and state of the art processing power. Both have WebKit-based HTML5 compliant browsers. However in the real world they are worlds apart. You see the devil is in the details. In the final analysis, iPhone is a platform and Android is a minefield of different software and hardware configurations based on a core reference implementation. Android is not a platform, so much as a legion of platforms built out of similar materials.&lt;br /&gt;It's PC vs Mac all over again in the mobile space.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;As I have time, I'll go into details in other posts, including:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;This is not the Droid we were looking for!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Layout strategies for iPhone &amp;amp; Android, Portrait &amp;amp; Landscape, Web App and installed App&lt;/li&gt;&lt;li&gt;Delivering flexibility - versatile deployment strategies&lt;/li&gt;&lt;li&gt;Optimization &amp;amp; caching techniques&lt;/li&gt;&lt;li&gt;Integration with Facebook&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-2644532602354488008?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/2644532602354488008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=2644532602354488008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/2644532602354488008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/2644532602354488008'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2011/09/reality-of-mobile-web-development.html' title='The Reality of Mobile Web Development'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-8902047569835994269</id><published>2011-03-16T08:41:00.000-07:00</published><updated>2011-03-16T08:45:37.812-07:00</updated><title type='text'>Native vs Hybrid</title><content type='html'>I read an &lt;a href="http://www.thebestisyettocome.co.uk/web-or-native-a-quandary-of-our-design/"&gt;interesting post&lt;/a&gt; reporting on a debate between developing mobile Web Apps vs going Native. This has been a hot topic at work lately, and I'm a big advocate of doing what fits best. I like to keep my options open, and not be forced into a corner. So in many instances, I come down on the side of cross-platform HTML5 WebKit apps.&lt;br /&gt;Whereas some applications are definitely best implemented as native, (arcade style games come to mind as obvious), many business &amp; productivity applications are content driven, and must be connected. Sure we need a slick user experience - and Apple devices have certainly raised the bar in this respect. But in many cases the emphasis from a development point of view should be on cross-platform capability, not device-specific slickness. The quandry is, that this is not really in the best interests of the device manufacturer who has so much more to make than the price of the device if they can just lock you in to their platform.&lt;br /&gt;That said, you can have the best of both worlds with tools &amp; frameworks like WebKit, jQuery Mobile and PhoneGap. WebKit transitions are as good as native, jQuery Mobile promises to give a consistent &amp; performant cross-platform experience (just give it a few more months) and PhoneGap gives you the choice to wrap it all up in a native shell and enhance only the parts of a WebApp that &lt;STRONG&gt;need&lt;/STRONG&gt; to be native without having to go completely down the one-way dead-end street of single platform implementation.&lt;br /&gt;Objective-C and Cocoa Touch taught us a lot about how to do mobile right, but now it's time to leave the Apple University and realize that the real world does not revolve solely around Apple.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-8902047569835994269?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/8902047569835994269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=8902047569835994269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/8902047569835994269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/8902047569835994269'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2011/03/native-vs-hybrid.html' title='Native vs Hybrid'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-9190272652088966663</id><published>2011-01-27T12:56:00.001-08:00</published><updated>2011-01-27T13:10:06.635-08:00</updated><title type='text'>Going Mobile</title><content type='html'>After two years of travelling, with Sun going down on me, and Oracle rising on the horizon without me, I came back to the Calgary market.&lt;br /&gt;It has been an interesting time for web development, with a significant &lt;span style="font-weight:bold;"&gt;ICEFaces&lt;/span&gt; project under my belt, I took another look into the available frameworks and found some satisfaction in &lt;span style="font-weight:bold;"&gt;ZK&lt;/span&gt;. One of the factors being that I needed a solution that could scale into mobile browsers.&lt;br /&gt;Even though ZK is great on the desktop, ZK Mobile was not really what we wanted for the small form factor devices. They need to re-think their mobile strategy. I think the industry in general is trying to adjust to the fact that mobile Java (JME) is fast giving way to the mobile web, and many will be having to take Javascript much more seriously than we did in the past as fully capable WebKit browsers become predominant.&lt;br /&gt;In an effort to rationalize mobile development across multiple platforms, without having to write native apps in each one, I've been looking closely at the new wave of mobile web technologies.&lt;br /&gt;My current focus is on building AJAX apps with jQuery and the new &lt;span style="font-weight:bold;"&gt;jQuery Mobile&lt;/span&gt; framework, and wrapping them in &lt;span style="font-weight:bold;"&gt;PhoneGap&lt;/span&gt; for psuedo-native apps which can be submitted to the AppStore, Android market, etc.&lt;br /&gt;&lt;br /&gt;Watch this space for technical hints, tips (and vents) as I negotiate this new landscape.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-9190272652088966663?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/9190272652088966663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=9190272652088966663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/9190272652088966663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/9190272652088966663'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2011/01/going-mobile.html' title='Going Mobile'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-663231516780403764</id><published>2011-01-27T12:49:00.001-08:00</published><updated>2011-01-27T12:55:29.614-08:00</updated><title type='text'>"That Flipping Property Game" is a finalist!</title><content type='html'>After a long development incubation and loads of playtesting and tweaks, "That Flipping Property Game" was acknowledged as one of the four finalists in the "Canadian Board Game Design Awards" run by the FallCon Gaming Society.&lt;br /&gt;&lt;br /&gt;They even interviewed me!&lt;div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" width="400" height="324" src="http://www.youtube.com/embed/Pu1fA3H6bp0" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-663231516780403764?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/663231516780403764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=663231516780403764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/663231516780403764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/663231516780403764'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2011/01/that-flipping-property-game-is-finalist.html' title='&quot;That Flipping Property Game&quot; is a finalist!'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/Pu1fA3H6bp0/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-2785320432442618486</id><published>2008-10-09T12:39:00.000-07:00</published><updated>2008-10-09T13:06:48.538-07:00</updated><title type='text'>Composite Controls with ICEfaces and Facelets</title><content type='html'>I've been interested in ICEfaces for a while now, and been pleased to see how the adoption is coming along.&lt;br /&gt;One thing I've noticed is how many AJAX and Rich-client frameworks impress with cool widgets but make things complicated through excessive use of Javascript or poor integration at the back-end. I think there's danger in choosing a framework for it's widgets, and there's a risk that people look at ICEfaces purely as a JSF rich component set, not as a complete framework, which it truly is.&lt;br /&gt;Being built on the JSF framework, ICEfaces is a first-class citizen in the JEE world and integrates well with just about any other Java framework. (It can even play nice with a surprizing amount of other JSF component frameworks, like Apache My Faces.)&lt;br /&gt;On top of this, their IDE integration is top notch, supporting just about anything in common use today. After using Eclipse for a while now, I've recently moved to NetBeans due to my new role. Thank goodness the ICEfaces IDE support module is there!&lt;br /&gt;Recently I have had the pleasure of re-aquainting myself with ICEfaces. I finally got the job I've been hoping for since my first brush with JSF a few years back. I'm now a UI architect and it's fantastic to have the company respecting my opinion that ICEfaces/Facelets/JSF is the way to go for enterprise rich internet application (RIA) development. &lt;br /&gt;I even got the opportunity to take my new team on an ICEsoft training course to get them excited about the possibilities. The people at ICEsoft have a great, open approach. They are interested primarily in productivity, and gave all kinds of ideas in how to best use their framework and how to best utilize other tools to be productive. In two days they were saying things like "that's so cool", "this is how web app development should be" and "I'm never going anywhere near Struts again". In ICEfaces, you hardly ever have to think about the request and what values it's sending. You're thinking in terms of components and objects and services - that's the way OO development should be.&lt;br /&gt;I thought that I knew what there was to know about the whole gamut, but there was even a revelation for me: How to make re-usable AJAX enabled components using Facelet composites. I thought I would have to be making new JSF controls and digging into writing TagLibs, Javascript and writing JSF lifecycle event handlers. But I was completely surprized just how easy it is to make a re-usable components that combines the power of Facelets with the coolness of ICEfaces AJAX components. (Perhaps I'll blog on this some time. I had a cool widget up and running in about half a day, and then spent a little more time to extend it.)&lt;br /&gt;&lt;br /&gt;Well that's it for now. Take my advice, the next time you think about doing a Java Web App, evaluate ICEfaces. (And don't just look at the component showcase, evaluate the whole framework.) You may find it very enlightening.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-2785320432442618486?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/2785320432442618486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=2785320432442618486' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/2785320432442618486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/2785320432442618486'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2008/10/composite-controls-with-icefaces-and.html' title='Composite Controls with ICEfaces and Facelets'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-3836332316232204183</id><published>2008-08-01T10:18:00.000-07:00</published><updated>2008-08-01T10:22:22.180-07:00</updated><title type='text'>Alberta Board Game Developer Gathering</title><content type='html'>The game mentioned in the last post has been playtested, tweaked and enhanced.&lt;br /&gt;"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.&lt;br /&gt;Several Alberta-based designers will be attending with their polished prototypes to share ideas and shape their new game designs.&lt;br /&gt;I'm much looking forward to it!&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-3836332316232204183?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/3836332316232204183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=3836332316232204183' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/3836332316232204183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/3836332316232204183'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2008/08/alberta-board-game-developer-gathering.html' title='Alberta Board Game Developer Gathering'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-6209282400074680686</id><published>2007-12-03T13:13:00.001-08:00</published><updated>2007-12-03T13:17:44.055-08:00</updated><title type='text'>New Boardgame in the works...</title><content type='html'>This year I had one of 'those' ideas - one that you just HAVE to pursue.&lt;br /&gt;The premise of the idea was: "What would a Euro-game version of Monopoly be like?"&lt;br /&gt;&lt;br /&gt;The answer is a lot more like a Euro game than Monopoly, but it does have properties for sale! ;)&lt;br /&gt;&lt;br /&gt;Watch this space...&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-6209282400074680686?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/6209282400074680686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=6209282400074680686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/6209282400074680686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/6209282400074680686'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2007/12/new-boardgame-in-works.html' title='New Boardgame in the works...'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-4878225626695748901</id><published>2007-12-03T11:56:00.000-08:00</published><updated>2007-12-03T13:09:22.478-08:00</updated><title type='text'>All Faces: Java Server Faces, ICEFaces and Facelets in Weblogic Workshop 10.1</title><content type='html'>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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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'.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;ICE Faces support is available as a facet for a Dynamic Web Application in Weblogic Workshop 10.1 &lt;br /&gt;&lt;a href="http://dev2dev.bea.com/pub/a/2007/06/icefaces-workshop.html"&gt;Read BEA Dev2Dev introductory article here.&lt;/a&gt;&lt;br /&gt;All really good stuff.&lt;br /&gt;&lt;br /&gt;Integrating with Facelets involves jumping a couple more hurdles:&lt;br /&gt;&lt;br /&gt;BEA support at present is for ICE Faces 1.5.3. It can be added as a Facet to a Dynamic Web Project.&lt;br /&gt;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&lt;br /&gt;The next logical step for BEA would be to include facelets as a project facet dependent on the ICEFaces facet.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;You can get the Faclets TLD tag-lib file here: &lt;br /&gt;&lt;a href="https://facelets.dev.java.net/servlets/ProjectDocumentList?expandFolder=3986&amp;folderID=4190"&gt;jsf-ui.tld&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here's the final result:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_y-PT4PVn-r0/R1Rv0OTESRI/AAAAAAAAAAc/tJcAjgRSsMQ/s1600-R/Workshop_Facelets_Tags.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_y-PT4PVn-r0/R1Rv0OTESRI/AAAAAAAAAAc/S6v093XG11k/s400/Workshop_Facelets_Tags.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5139856017718528274" /&gt;&lt;/a&gt;&lt;br /&gt;Hope this helps!&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-4878225626695748901?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/4878225626695748901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=4878225626695748901' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/4878225626695748901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/4878225626695748901'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2007/12/all-faces-java-server-faces-icefaces.html' title='All Faces: Java Server Faces, ICEFaces and Facelets in Weblogic Workshop 10.1'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_y-PT4PVn-r0/R1Rv0OTESRI/AAAAAAAAAAc/S6v093XG11k/s72-c/Workshop_Facelets_Tags.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-4838851473948709267</id><published>2007-10-10T20:50:00.000-07:00</published><updated>2007-10-10T21:16:27.925-07:00</updated><title type='text'>CJUG Presentation about Facebook on October 10th</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_y-PT4PVn-r0/Rw2jL8u4djI/AAAAAAAAAAU/0sfjp3yKfog/s1600-h/cjug_bug.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_y-PT4PVn-r0/Rw2jL8u4djI/AAAAAAAAAAU/0sfjp3yKfog/s400/cjug_bug.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5119927777066776114" /&gt;&lt;/a&gt;I guess I've been &lt;a href="http://community.webshots.com/user/red3ca"&gt;camping&lt;/a&gt;  too much this Summer to blog!&lt;br /&gt;&lt;br /&gt;I presented at CJUG this month on &lt;strong&gt;F8 - The Facebook Developer Platform for Java&lt;/strong&gt;.&lt;br /&gt;I'm being lazy, and so I'll redirect you to the &lt;a href="http://www.facebook.com/event.php?eid=7477420882"&gt;Facebook Event&lt;/a&gt; where I posted links for those of you dying to get your apps developed and registered on Facebook.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-4838851473948709267?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/4838851473948709267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=4838851473948709267' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/4838851473948709267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/4838851473948709267'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2007/10/cjug-presentation-about-facebook-on.html' title='CJUG Presentation about Facebook on October 10th'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_y-PT4PVn-r0/Rw2jL8u4djI/AAAAAAAAAAU/0sfjp3yKfog/s72-c/cjug_bug.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-116243961483734362</id><published>2006-11-01T18:39:00.000-08:00</published><updated>2006-11-02T16:11:57.726-08:00</updated><title type='text'>Two-Way SSL in Weblogic for Developers</title><content type='html'>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.&lt;br /&gt;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 &lt;em&gt;development&lt;/em&gt;. A Two-Way SSL (or Mutual Authentication) setup, to be specific. A configuration that takes SSL setup to the limit!&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;a href="http://monduke.com/2006/06/04/the-fifteen-minute-guide-to-mutual-authentication/"&gt;http://monduke.com/2006/06/04/the-fifteen-minute-guide-to-mutual-authentication/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Usually in development environments you can cut corners - but not with security. In fact I discovered it is &lt;em&gt;more&lt;/em&gt; of a challenge for a couple of reasons:&lt;br /&gt;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.&lt;br /&gt;2) You have to simulate all the parts - including the bits the Verisigns and Thawtes usually take care of.&lt;br /&gt;&lt;br /&gt;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 &lt;strong&gt;using a Self-Signed CA certificate for development environments&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;The tools we need for the job are: &lt;ul&gt;&lt;li&gt;Java &lt;strong&gt;keytool&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;BEA's modifed keytool: &lt;strong&gt;ImportPrivateKey &lt;/strong&gt;&lt;/li&gt;&lt;li&gt;BEA's &lt;strong&gt;CertGen&lt;/strong&gt; - Certificate Generator &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;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! ;)&lt;br /&gt;(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.)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;strong&gt;Note:&lt;/strong&gt; Before you start, run &lt;strong&gt;setDomainEnv&lt;/strong&gt; in the bin directory of your server domain.&lt;br /&gt;e.g. on Windows:&lt;br /&gt;&lt;blockquote&gt;&lt;small&gt;path_to_bea\user_projects\domains\my_domain\bin\setDomainEnv.cmd&lt;/small&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Use CertGen to Generate Server Private Key and Certificate&lt;/strong&gt;&lt;br /&gt;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 &lt;strong&gt;selfsigned&lt;/strong&gt; switch is all about. In the real world, we trust each other because we mutually trust a &lt;strong&gt;Certificate Authority (CA) &lt;/strong&gt;like Verisign. Here we're saying "I am the CA".&lt;br /&gt;&lt;code&gt;&lt;br /&gt;java utils.CertGen -selfsigned -certfile MyOwnSelfCA.cer -keyfile MyOwnSelfKey.key -keyfilepass mykeypass -cn "My Own Self CA"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You should see this response in the command window:&lt;br /&gt;&lt;blockquote&gt;Generating a self signed certificate with common name My Own Self CA and key strength 1024 &lt;/blockquote&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Create the Identity Keystore&lt;/strong&gt;&lt;br /&gt;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.&lt;br /&gt;The one thing Java keytool doesn't do is import a ready-made private key...&lt;br /&gt;&lt;em&gt;Drat!&lt;/em&gt;&lt;br /&gt;Fortunately BEA are a smart bunch and created a utility to help.&lt;br /&gt;And just to make sure there was no confusion about what it does, they called it &lt;strong&gt;ImportPrivateKey&lt;/strong&gt;.&lt;br /&gt;Told you they were smart, didn't I?&lt;br /&gt;&lt;br /&gt;Now run this:&lt;br /&gt;&lt;code&gt;java utils.ImportPrivateKey -keystore MyOwnIdentityStore.jks -storepass identitypass -keypass keypassword -alias trustself -certfile MyOwnSelfCA.cer.pem -keyfile MyOwnSelfKey.key.pem -keyfilepass mykeypass&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Imported private key MyOwnSelfKey.key.pem and certificate MyOwnSelfCA.cer.pem&lt;br /&gt;into a new keystore MyOwnIdentityStore.jks of type jks under alias trustself&lt;br /&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Import the Certificate into a new Trust keystore&lt;/strong&gt;&lt;br /&gt;If you read the Monduke article from above, you'll know the name of the game is &lt;strong&gt;trust&lt;/strong&gt;.&lt;br /&gt;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.&lt;br /&gt;&lt;code&gt;keytool -import -trustcacerts -alias trustself -keystore TrustMyOwnSelf.jks -file MyOwnSelfCA.cer.der -keyalg RSA&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;(Replace with equivilent ImportPrivateKey command?)&lt;br /&gt;&lt;br /&gt;Here's the tool's response:&lt;br /&gt;&lt;blockquote&gt;Enter keystore password: &lt;strong&gt;trustpass&lt;/strong&gt;&lt;br /&gt;Owner: CN=My Own Self CA, OU=FOR TESTING ONLY, O=MyOrganization, L=MyTown, ST=My&lt;br /&gt;State, C=US&lt;br /&gt;Issuer: CN=My Own Self CA, OU=FOR TESTING ONLY, O=MyOrganization, L=MyTown, ST=M&lt;br /&gt;yState, C=US&lt;br /&gt;Serial number: ...&lt;br /&gt;&lt;br /&gt;Trust this certificate? [no]: &lt;strong&gt;yes&lt;/strong&gt;&lt;br /&gt;Certificate was added to keystore&lt;br /&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Configure WLS with Identity and Trust stores&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;In the Weblogic Admin Console jump to the Keystores page and choose "&lt;strong&gt;Custom Identity and Custom Trust&lt;/strong&gt;"&lt;br /&gt;&lt;br /&gt;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 '&lt;strong&gt;trustself&lt;/strong&gt;' above). The Private Key password in this example is '&lt;strong&gt;keypassword&lt;/strong&gt;'.&lt;br /&gt;&lt;br /&gt;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. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Test One Way SSL&lt;/strong&gt;&lt;br /&gt;Under the SSL tab, make sure &lt;strong&gt;Two Way Client Cert Behavior&lt;/strong&gt; is set to "&lt;strong&gt;Client Certificates Not Requested&lt;/strong&gt;".&lt;br /&gt;&lt;br /&gt;This is important - make sure you have these entries in your config.xml file in the config directory of your domain:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&amp;lt;client-certificate-enforced&amp;gt;false&amp;lt;/client-certificate-enforced&amp;gt;&lt;br /&gt;&amp;lt;two-way-ssl-enabled&amp;gt;false&amp;lt;/two-way-ssl-enabled&amp;gt;&lt;br /&gt;&amp;lt;server-private-key-alias&amp;gt;trustself&amp;lt;/server-private-key-alias&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;If any are different, edit and save the config.xml to match, and then restart the Weblogic server.&lt;br /&gt;&lt;br /&gt;Now browse to &lt;strong&gt;https://localhost:7002/console&lt;/strong&gt;&lt;br /&gt;(Assuming defaults.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All being well, the server should present the client with a certificate.&lt;br /&gt;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.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Install the Server Certificate on the Client&lt;/strong&gt;&lt;br /&gt;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 "&lt;strong&gt;My Own Self CA&lt;/strong&gt;" listed under "&lt;strong&gt;Trusted Root Certification Authorities&lt;/strong&gt;"&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Test Two Way SSL without Client Certs required&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;Now go into the WLS Admin Console and switch the&lt;br /&gt;Take a look at the WebLogic server console output:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;br /&gt;NO_CERTIFICATE&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Create a client certificate using the Self-certified CA certificate&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;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...&lt;br /&gt;&lt;br /&gt;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".)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;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"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;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&lt;/blockquote&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Bundle up the Certificate and Key into a Format the Browser will like&lt;/strong&gt; (it's PKCS12 if you &lt;strong&gt;have&lt;/strong&gt; to know)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;java utils.ImportPrivateKey -keystore MyClientCert.p12 -storepass clientpass -storetype pkcs12 -keypass clientkeypass -alias clientcert -certfile MyClientCert.cer.pem -keyfile MyClientKey.key.pem -keyfilepass clientkeypass&lt;br /&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Import Trusted CA Certificate and Client Certificate into Browser&lt;/strong&gt;&lt;/li&gt;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 &lt;strong&gt;MyOwnSelfCA.cer.der&lt;/strong&gt; file that was made in the very first step, and import it into your browser as a &lt;strong&gt;Trusted Root Certification Authority &lt;/strong&gt;(Tools &gt; Options &gt; Content &gt; 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.&lt;br /&gt;&lt;br /&gt;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...&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Test Two-Way SSL&lt;/strong&gt;&lt;br /&gt;The moment of truth:&lt;br /&gt;Browse to &lt;a href="https://localhost:7002/console"&gt;https://localhost:7002/console&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is what should happen: &lt;ol&gt;&lt;li&gt;Client request to server&lt;/li&gt;&lt;li&gt;Server response - sends certificate signed by "My Own Self CA" and requests a certificate from the client&lt;/li&gt;&lt;li&gt;Client examines certificate - decides to Trust it since it has the CA certificate for "My Own Self CA"&lt;/li&gt;&lt;li&gt;Client sends its certificate to the server, again signed by "My Own Self CA" &lt;/li&gt;&lt;li&gt;Server finds up "My Own Self CA" in its Trust store and decides to trust the client&lt;/li&gt;&lt;li&gt;Server sends requested resource back to the client in encrypted form&lt;/li&gt;&lt;li&gt;Client deciphers the encryption and displays the result - in this case the Weblogic Admin Console login page.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-116243961483734362?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/116243961483734362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=116243961483734362' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/116243961483734362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/116243961483734362'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/11/two-way-ssl-in-weblogic-for-developers.html' title='Two-Way SSL in Weblogic for Developers'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-115808457321660786</id><published>2006-09-12T09:07:00.000-07:00</published><updated>2006-09-13T09:16:14.890-07:00</updated><title type='text'>Cambrian House - Beyond IdeaWarz</title><content type='html'>&lt;p&gt;One of the early criticisms of the Cambrian House &lt;strong&gt;IdeaWarz&lt;/strong&gt; system is that anyone can post an idea in a few words, but how do you really sift the good ideas from the bad?&lt;br /&gt;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.&lt;br /&gt;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?&lt;br /&gt;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)&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;I made some suggestions to Cambrian House and hopefully they'll implement something along these lines.&lt;br /&gt;&lt;br /&gt;After a little consideration, this is how the process could work:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Idea Submission&lt;br /&gt;&lt;/strong&gt;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.&lt;br /&gt;At the same time, Cambrian House should solicit some refinement of the idea from the submitter to enter the second gate.&lt;br /&gt;(Along the lines of "&lt;em&gt;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.&lt;/em&gt;")&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Self-Grading Justification&lt;/strong&gt;&lt;br /&gt;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: &lt;ol&gt;&lt;li&gt;Suitability for Crowdsourcing on CH&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Originality&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Potential Market&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Commercial Viability&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;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.&lt;br /&gt;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?&lt;br /&gt;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.&lt;/p&gt;&lt;p&gt;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.&lt;br /&gt;Why keep it on IdeaWarz? Why not just remove it?&lt;br /&gt;Because ideas breed ideas. A weak idea can provoke a stronger more refined one. Keep the think tank full!&lt;br /&gt;(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.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solidification&lt;/strong&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Test the Market&lt;/strong&gt;&lt;br /&gt;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?&lt;br /&gt;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').&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Final Note&lt;/strong&gt;&lt;br /&gt;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. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-115808457321660786?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/115808457321660786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=115808457321660786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115808457321660786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115808457321660786'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/09/cambrian-house-beyond-ideawarz.html' title='Cambrian House - Beyond IdeaWarz'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-115372279990783964</id><published>2006-07-23T23:24:00.000-07:00</published><updated>2006-07-24T12:02:42.246-07:00</updated><title type='text'>Cambrian House gains momentum</title><content type='html'>&lt;a href="http://www.cambrianhouse.com" style="border:0px;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand; border:0px;" src="http://www.cambrianhouse.com/0xdeadbeef/logo.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cambrian House is getting attention in the Web world at the moment.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.) &lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Anyway, in the meantime, I've put my ideas on the right for you to click on and support at your whim. ---&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center; border:0px;" src="http://www.cambrianhouse.com/0xdeadbeef/media-kit-sm-nva.gif" border="0" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-115372279990783964?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/115372279990783964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=115372279990783964' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115372279990783964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115372279990783964'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/07/cambrian-house-gains-momentum.html' title='Cambrian House gains momentum'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-115290174032367697</id><published>2006-07-14T10:07:00.000-07:00</published><updated>2006-07-24T12:01:10.876-07:00</updated><title type='text'>Cambrian House</title><content type='html'>&lt;a href="http://www.cambrianhouse.com"&gt;Cambrian House&lt;/a&gt; is a new website that promotes good ideas and turns them into products that can be distributed across the internet.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;So here are my ideas currently in the running - &lt;b&gt;please click &lt;u&gt;each&lt;/u&gt; of the links below to get my ideas promoted&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;IMPORTANT:&lt;/b&gt; and then click &lt;strong&gt;"Yes, Please add my support to this idea!"&lt;/strong&gt; on the Cambrian House website.&lt;br /&gt;&lt;br /&gt;Thx a bunch!&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.cambrianhouse.com/idea-warz/idea-promoter/ideas-id/wGeBkC1/" title="Support 'Chess Card Game' at Cambrian House" target="_blank"&gt;&lt;img src="http://www.cambrianhouse.com/0xdeadbeef/pixel-ch.gif" alt="Support 'Chess Card Game' at Cambrian House" /&gt;&amp;nbsp;Check - The Chess Card Game&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.cambrianhouse.com/idea-warz/idea-promoter/ideas-id/JaOTA9k/" title="Support My Idea at Cambrian House" target="_blank"&gt;&lt;img src="http://www.cambrianhouse.com/0xdeadbeef/pixel-ideawarz.gif" height="33" width="33" alt="Support 'DireLogz' at Cambrian House" /&gt;&amp;nbsp;DireLogz&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.cambrianhouse.com/idea-warz/idea-promoter/ideas-id/x15wWXN/" title="Support My Idea at Cambrian House" target="_blank"&gt;&lt;img src="http://www.cambrianhouse.com/0xdeadbeef/pixel-vote.gif" height="33" width="33" alt="Support 'Online Slideshow Creator' at Cambrian House" /&gt;&amp;nbsp;Online Slideshow Creator&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.cambrianhouse.com/idea-warz/idea-promoter/ideas-id/GgkpaXy/" title="Support My Idea at Cambrian House" target="_blank"&gt;&lt;img src="http://www.cambrianhouse.com/0xdeadbeef/pixel-vote.gif" height="33" width="33" alt="Support 'Ultimate JSF Component Set' at Cambrian House" /&gt;&amp;nbsp;Ultimate JSF Component Set&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.cambrianhouse.com/idea-warz/idea-promoter/ideas-id/vdrXDM5/" title="Support My Idea at Cambrian House" target="_blank"&gt;&lt;img src="http://www.cambrianhouse.com/0xdeadbeef/pixel-vote.gif" height="33" width="33" alt="Support MCE DVCR Scheduler at Cambrian House" /&gt;&amp;nbsp;Windows Media Center Edition Digital VCR Web Scheduler&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.cambrianhouse.com/idea-warz/idea-promoter/ideas-id/iWk1DPr/" title="Support My Idea at Cambrian House"&gt;&lt;img src="http://www.cambrianhouse.com/0xdeadbeef/pixel-ch.gif" alt="Support 'Board Game Incubator' at Cambrian House" /&gt;&amp;nbsp;Crowdsourced Board Game Incubator&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;And while you're there, why not add an idea of your own? It's fun!&lt;br /&gt;:)&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-115290174032367697?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/115290174032367697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=115290174032367697' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115290174032367697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115290174032367697'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/07/cambrian-house.html' title='Cambrian House'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-115274063908708868</id><published>2006-07-12T14:24:00.000-07:00</published><updated>2006-07-12T15:35:07.050-07:00</updated><title type='text'>Melissa O'Neil</title><content type='html'>I had a great evening taking my daughter to the Calgary Stampede yesterday evening.&lt;br /&gt;The Stampede was not really on the radar this year. It becomes a bit &lt;em&gt;same ol' same ol'&lt;/em&gt; after a couple of years.&lt;br /&gt;But this year we had a winner from Calgary on Canadian Idol who has caught my 10 year old daughter's attention: &lt;strong&gt;Melissa O'Neil&lt;/strong&gt;. 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.&lt;br /&gt;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.&lt;br /&gt;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!&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-115274063908708868?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/115274063908708868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=115274063908708868' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115274063908708868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115274063908708868'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/07/melissa-oneil.html' title='Melissa O&apos;Neil'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-115273922237880741</id><published>2006-07-12T10:37:00.000-07:00</published><updated>2006-07-12T15:31:52.053-07:00</updated><title type='text'>(Some) Pop is becoming interesting again...</title><content type='html'>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.&lt;br /&gt;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&amp;Y" until my wife asked me what I wanted for Christmas.&lt;br /&gt;Turned out to be one of those rare classic albums. Like Joshua Tree. And Brothers In Arms.&lt;br /&gt;Coldplay are now on the A-list.&lt;br /&gt;&lt;br /&gt;The other artist that has recently caught my attention is Natasha Beddingfield from the UK. I guess that she's classed as R&amp;amp;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.)&lt;br /&gt;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!&lt;br /&gt;Natasha is British R&amp;B's answer to Country's Shania. And judging by the way she is now getting wide exposure in the US &amp;amp; Canada, I think she'll be just as enormous.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-115273922237880741?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/115273922237880741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=115273922237880741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115273922237880741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/115273922237880741'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/07/some-pop-is-becoming-interesting-again.html' title='(Some) Pop is becoming interesting again...'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-114686534484792748</id><published>2006-05-05T12:43:00.001-07:00</published><updated>2006-05-18T13:12:55.306-07:00</updated><title type='text'>20 years of Howard Jones</title><content type='html'>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 "&lt;em&gt;Blue Monday&lt;/em&gt;" and thought it was cool. Then I flipped it to the other side and heard the words: "&lt;em&gt;Well you're not, you're not who you think you are - jumbled mass of pre-conceived ideas... Welcome to Conditioning.&lt;/em&gt;"&lt;br /&gt;Something about those words struck a chord with me, and as I continued to listen to "&lt;strong&gt;Humans Lib&lt;/strong&gt;" I knew there was something unique about Howard Jones.&lt;br /&gt;The music was exceptionally well-crafted new wave pop with interesting layered synthesized sounds, and even more interesting lyrics.&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/4427/671/400/HoJo20th.jpg" border="0" /&gt;&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;An acoustic concert with Howard Jones is every bit as enjoyable as electric set or a full band.&lt;br /&gt;&lt;br /&gt;Which is what makes the &lt;strong&gt;20th Anniversary Concert 2-Disc DVD&lt;/strong&gt; 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.&lt;br /&gt;It starts with just him and &lt;strong&gt;Andy Ross&lt;/strong&gt; 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, &lt;strong&gt;Nick Beggs&lt;/strong&gt;, 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.&lt;br /&gt;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 &lt;strong&gt;5.1 surround&lt;/strong&gt; mix those synths never sounded better!&lt;br /&gt;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, &lt;strong&gt;Robbie Bronniman&lt;/strong&gt; 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.&lt;br /&gt;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 &lt;strong&gt;Rubert Hine&lt;/strong&gt;, 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."&lt;br /&gt;Until now it's all been about Howard Jones. But this is a special occasion, and so &lt;strong&gt;Nena&lt;/strong&gt; ("&lt;em&gt;99 Red Balloons&lt;/em&gt;") joins in to sing her anthem in native German and &lt;strong&gt;Midge Ure&lt;/strong&gt; (Ultravox, Band Aid) performs &lt;em&gt;"Dancing With Tears In My Eyes"&lt;/em&gt; and the classic 80's anthem &lt;em&gt;"Vienna"&lt;/em&gt;.&lt;br /&gt;Howard's band then tops off the evening with some more classics and you're left engergized and astounded.&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Fantastic.&lt;/em&gt;&lt;/strong&gt; Buy it.&lt;br /&gt;The best value music DVD out there.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-114686534484792748?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/114686534484792748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=114686534484792748' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114686534484792748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114686534484792748'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/05/20-years-of-howard-jones_05.html' title='20 years of Howard Jones'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-114677016004310884</id><published>2006-05-04T12:11:00.000-07:00</published><updated>2006-05-05T08:01:21.920-07:00</updated><title type='text'>Using a laptop as a Home Theater PC</title><content type='html'>&lt;p&gt;This is a copy of a review I did for my new laptop on &lt;a href="http://www.avsforum.com"&gt;avsforum.com&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;I recently was in the market for a new Laptop PC. I wanted something fairly powerful but reasonably light for my software consulting business.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Here are my conclusions:&lt;br /&gt;&lt;br /&gt;A Home Theater laptop needs to be able to do more than just play DVDs.&lt;br /&gt;&lt;br /&gt;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':&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;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. &lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;li&gt;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.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;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.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;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.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;DVD drive (of course) and ideally a DVD-Writer. Front-slot loading style would be a definite advantage.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;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.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;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. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Candidates&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I found a few notebooks within my budget (~CDN $1500) and feature range that I considered candidates: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;ACER 5672WLMi - Intel Duo 1.6GHz, 2Gb RAM, 120Gb 5400rpm HD, ATI x1400, XP Home &lt;/li&gt;&lt;li&gt;HP Pavilion dv5040us - AMD Turion64 2.2Ghz, 2Gb RAM, 100Gb 4200rpm HD, ATI 200m, XP MCE 2005 &lt;/li&gt;&lt;li&gt;Gateway MX6750 - Intel Duo 1.6 Ghz, 1Gb RAM, 100Gb 4200rpm HD, ATI x1400, XP MCE 2005&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;All these PCs are in the same price range, footprint (15.4" screen) and weight class. (Around 3kg, 6.5lbs)&lt;br /&gt;&lt;br /&gt;I wanted a notebook that needed as little upgrading as possible.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Other manufacturers (such as Toshiba, Sony and Fujitsu) offered similar featuresets in a higher price range.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;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?)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;However, with only a VGA output on the laptop, I could not test the true digital DVI connection to the Sammy.&lt;br /&gt;&lt;br /&gt;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.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-114677016004310884?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/114677016004310884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=114677016004310884' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114677016004310884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114677016004310884'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/05/using-laptop-as-home-theater-pc.html' title='Using a laptop as a Home Theater PC'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-114490802789684850</id><published>2006-04-12T22:36:00.000-07:00</published><updated>2006-04-12T23:00:27.923-07:00</updated><title type='text'>Java SWING Survival Guide: Where are we a year later?</title><content type='html'>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 &lt;a href="http://www.softwarereality.com/soapbox/swing.jsp"&gt;Java Swing Survival Guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Is this a pipe-dream or a road map to success. Are his comments visionary, timely, or too little too late?&lt;br /&gt;&lt;br /&gt;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!&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;I think it's a true irony, even a subconscious statement of defeat, that when you go to &lt;a href="http://www.java.com"&gt;www.java.com&lt;/a&gt; (the consumer face of Java) the first thing that gets your attention is a Flash animation!!&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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?&lt;br /&gt;&lt;br /&gt;Comments welcome &gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-114490802789684850?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/114490802789684850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=114490802789684850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114490802789684850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114490802789684850'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/04/java-swing-survival-guide-where-are-we.html' title='Java SWING Survival Guide: Where are we a year later?'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-114486018511784627</id><published>2006-04-12T09:09:00.000-07:00</published><updated>2006-04-12T10:35:00.166-07:00</updated><title type='text'>SWING Links from the CJUG presentation</title><content type='html'>Here are some links discussed in the "SWING Goodies Not Found in the JDK" presentation:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FlexDock&lt;/strong&gt; Open source docking framework&lt;br /&gt;&lt;a href="https://flexdock.dev.java.net/"&gt;https://flexdock.dev.java.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TableLayout&lt;/strong&gt; - alternative to GridBag layout&lt;br /&gt;&lt;a href="https://tablelayout.dev.java.net/"&gt;https://tablelayout.dev.java.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Official SWING links on Sun.com&lt;/strong&gt;&lt;br /&gt;JFC/Swing Home Page&lt;br /&gt;&lt;a href="http://java.sun.com/products/jfc/index.jsp"&gt;http://java.sun.com/products/jfc/index.jsp&lt;/a&gt;&lt;br /&gt;The SWING connection&lt;br /&gt;&lt;a href="http://java.sun.com/products/jfc/tsc/"&gt;http://java.sun.com/products/jfc/tsc/&lt;/a&gt;&lt;br /&gt;SWING Sightings - Lots of real SWING apps to peruse&lt;br /&gt;&lt;a href="http://java.sun.com/products/jfc/tsc/sightings/"&gt;http://java.sun.com/products/jfc/tsc/sightings/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SwingX&lt;/strong&gt; - SWING Extensions project (sub-project of SwingLabs)&lt;br /&gt;&lt;a href="https://swingx.dev.java.net/"&gt;https://swingx.dev.java.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SwingLabs&lt;/strong&gt; Open Source project&lt;br /&gt;&lt;a href="http://www.swinglabs.org"&gt;http://www.swinglabs.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Spring Rich Client Project&lt;/strong&gt; - First stable release v0.1.0 just released!&lt;br /&gt;&lt;a href="http://spring-rich-c.sourceforge.net/"&gt;http://spring-rich-c.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;JGoodies&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.jgoodies.com/"&gt;http://www.jgoodies.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;JIDE&lt;/strong&gt; Commercial Docking framework&lt;br /&gt;&lt;a href="http://www.jidesoft.com/"&gt;http://www.jidesoft.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Javootoo.com&lt;/strong&gt; - Repository of SWING enhancements, such as look &amp; feels&lt;br /&gt;&lt;a href="http://www.javootoo.com"&gt;http://www.javootoo.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Napkin Look &amp; Feel&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://napkinlaf.sourceforge.net/"&gt;http://napkinlaf.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Vector based (Flash-like) SWING Look &amp; Feel:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.oyoaha.com "&gt;http://www.oyoaha.com&lt;/a&gt;&lt;a href="https://tablelayout.dev.java.net/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;IconCraft&lt;/strong&gt; - Programmer's Icon Editor (Limited Shareware)&lt;br /&gt;&lt;a href="http://www.iconempire.com/iconcraft/"&gt;http://www.iconempire.com/iconcraft/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Romain Guy's Weblogs&lt;/strong&gt; - Developer on Sun's SWING team:&lt;br /&gt;On java.net:&lt;br /&gt;&lt;a href="http://weblogs.java.net/blog/gfx/archive/2005/08/kickin_rockin_j.html"&gt;http://weblogs.java.net/blog/gfx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On jroller.com:&lt;br /&gt;&lt;a href="http://www.jroller.com/page/gfx?entry=swingx_painters_demo"&gt;http://www.jroller.com/page/gfx?entry=swingx_painters_demo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-114486018511784627?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/114486018511784627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=114486018511784627' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114486018511784627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114486018511784627'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/04/swing-links-from-cjug-presentation.html' title='SWING Links from the CJUG presentation'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-114479085744598769</id><published>2006-04-11T14:23:00.000-07:00</published><updated>2006-04-11T14:33:00.973-07:00</updated><title type='text'>Check for Palm nearly done</title><content type='html'>&lt;a href="http://members.shaw.ca/red-3/images/CheckPosterTop.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px;" src="http://members.shaw.ca/red-3/images/CheckPosterTop.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;One of my pet projects over the last few months has been to program an electronic version of my card game, &lt;a href="http://www.checkdeck.com"&gt;Check - The Chess Card Game&lt;/a&gt; onto the Palm (and other devices).&lt;br /&gt;I have been using Waba, an excellent micro-VM to do it.&lt;br /&gt;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.&lt;br /&gt;(You need a colour device with 320x320 or greater resolution.)&lt;br /&gt;&lt;br /&gt;Once I'm done on the Palm, I plan to port it to J2ME and run it on my phone.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-114479085744598769?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/114479085744598769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=114479085744598769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114479085744598769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114479085744598769'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/04/check-for-palm-nearly-done.html' title='Check for Palm nearly done'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-114375397745349581</id><published>2006-03-29T10:00:00.000-08:00</published><updated>2006-03-30T13:26:17.546-08:00</updated><title type='text'>Presenting at CJUG next month</title><content type='html'>The chairman of the Calgary Java User's Group (&lt;a href="http://www.cjug.com"&gt;www.cjug.org&lt;/a&gt;) got wind that I was playing around with an Open Source Docking Framework called &lt;a href="https://flexdock.dev.java.net/"&gt;FlexDock&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As announced at the Sun Java Developer Day Conference in Calgary yesterday, I'll be presenting it along with some other &lt;b&gt;&amp;quot;SWING Goodies Not Found in the JDK&amp;quot;&lt;/b&gt; at CJUG on Wednesday, April 12th.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;SWING might just be coming back into fashion.&lt;br /&gt;&lt;br /&gt;Watch this space... I'll post some supporting info here pretty soon.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-114375397745349581?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/114375397745349581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=114375397745349581' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114375397745349581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114375397745349581'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/03/presenting-at-cjug-next-month.html' title='Presenting at CJUG next month'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-114063902791734574</id><published>2006-02-22T12:01:00.000-08:00</published><updated>2006-02-22T12:13:12.666-08:00</updated><title type='text'>Good design worth blogging about</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/4427/671/1600/KardanBowl_lrg.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/4427/671/320/KardanBowl_lrg.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;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.&lt;br /&gt;You can drink from it, have soup or noodles, breakfast or a meal, using the plate lid for pancakes or bread. Perfect for camping.&lt;br /&gt;&lt;br /&gt;Well done IKEA.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-114063902791734574?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/114063902791734574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=114063902791734574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114063902791734574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114063902791734574'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/02/good-design-worth-blogging-about.html' title='Good design worth blogging about'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-114063816523781265</id><published>2006-02-22T11:36:00.000-08:00</published><updated>2006-02-22T12:00:38.620-08:00</updated><title type='text'>Another interesting game</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/4427/671/1600/KatamariCover.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/4427/671/320/KatamariCover.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;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.&lt;br /&gt;Translated it means somthing like "Prince Roller".&lt;br /&gt;The intro and in-between sequences can only be likened to something like a Monty Python animation mixed with strange Japanese pop-culture.&lt;br /&gt;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.&lt;br /&gt;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!&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;A friend told me there is a 2D simplified version of the game on the net at this location: &lt;a href="http://katamaridamacy.jp/qa_data/katamari.html"&gt;http://katamaridamacy.jp/qa_data/katamari.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-114063816523781265?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/114063816523781265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=114063816523781265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114063816523781265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/114063816523781265'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2006/02/another-interesting-game.html' title='Another interesting game'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-113510065830985355</id><published>2005-12-20T09:44:00.000-08:00</published><updated>2005-12-21T09:24:32.096-08:00</updated><title type='text'>Where I've Been</title><content type='html'>&lt;img src="http://www.world66.com/community/mymaps/worldmap?visited=CAUSBEFRDECHUKTRSGAU" width="400"&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://douweosinga.com/projects/visitedcountries"&gt;create your own visited countries map&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-113510065830985355?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/113510065830985355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=113510065830985355' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113510065830985355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113510065830985355'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/12/where-ive-been.html' title='Where I&apos;ve Been'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-113330375153474817</id><published>2005-11-29T14:35:00.000-08:00</published><updated>2005-12-21T09:29:15.783-08:00</updated><title type='text'>Innovative, enjoyable Games</title><content type='html'>Interesting blog &lt;a href="http://weblogs.java.net/blog/gfx/archive/2005/11/faade_gaming_re.html"&gt;here&lt;/a&gt; on java.net&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;The FPS games that really took my notice of late is the &lt;i&gt;Splinter Cell&lt;/i&gt; 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 &lt;i&gt;Prince of Persia, the Sands of Time&lt;/i&gt;. (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.)&lt;br /&gt;&lt;br /&gt;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 &lt;i&gt;Dance&lt;/i&gt; &amp; &lt;i&gt;Karaoke Revolution&lt;/i&gt; 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.&lt;br /&gt;&lt;br /&gt;My list of truly inventive games over the years starts with &lt;i&gt;Elite&lt;/i&gt;. 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.&lt;br /&gt;&lt;br /&gt;Other games showing true innovation to create a truly memorable gaming experience that come to mind are &lt;i&gt;Lemmings&lt;/i&gt;, &lt;i&gt;The Incredible Machine&lt;/i&gt; (and it's classic comical counterpart &lt;i&gt;The Incredible Toons&lt;/i&gt;) and &lt;i&gt;Battlezone 3D&lt;/i&gt; by Pandemic.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-113330375153474817?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/113330375153474817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=113330375153474817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113330375153474817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113330375153474817'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/11/innovative-enjoyable-games.html' title='Innovative, enjoyable Games'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-113296369789205393</id><published>2005-11-25T15:40:00.000-08:00</published><updated>2005-11-29T09:12:29.163-08:00</updated><title type='text'>Howard Jones - Revolution of the Heart</title><content type='html'>&lt;a href="http://images.amazon.com/images/P/B000AA4ISK.01._SCLZZZZZZZ_.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 200px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://images.amazon.com/images/P/B000AA4ISK.01._SCLZZZZZZZ_.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Howard Jones is my favourite music artist. He makes us wait for his new stuff, but when it comes it doesn't disappoint. You can't rush art.&lt;br /&gt;&lt;br /&gt;His new CD came out recently and is available from Howard's DTOX webstore,&lt;br /&gt;&lt;a href="https://sslrelay.com/s82378375.oneandoneshop.co.uk/sess/utn;jsessionid=1543879f78baff4/shopdata/index.shopscript"&gt;Revolution of the Heart (Limited Edition)&lt;/a&gt;&lt;br /&gt;and from Amazon.ca:&lt;br /&gt;&lt;a href="http://www.amazon.ca/exec/obidos/ASIN/B000AA4ISK/qid=1132962556/sr=2-2/ref=sr_2_3_2/702-9964040-7202426"&gt;Revolution of the Heart&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This album is a back to the roots rich electronic production with thumping beats and filled with Howard's signature catchy uplifting melodies. It doesn't feel formulaic, however. As I have come to expect from Howard, the lyrics are thought-provoking and topical. This is not shallow lovey-dovey manufactured pop.&lt;br /&gt;It's fresh and smart with a lot going on in the production department to keep it interesting on subsequent listenings. It's definitely a grower, and you'll find yourself singing the tunez long after you've left the house.&lt;br /&gt;&lt;br /&gt;There is not a bad track on the album, and it's obvious that Howard and his co-producer Robbie Bronniman have put their heart and soul into every aspect.&lt;br /&gt;&lt;br /&gt;"Celebrate Our Love" is a strong intro track. I also much like the first single, "Just Look At You Now", the title track "Revolution of the Heart", and especially "Stir It Up", which I think would make a great single if Howard manages to get back in the limelight with this one.&lt;br /&gt;The album doesn't slow down and you are left with the strong driving beat of "For You, See Me" ringing in your ears and a voice inside you saying "That was great - let's do that again", as you almost subconsciously reach for the Play button to restart the experience.&lt;br /&gt;&lt;br /&gt;I got hold of the limited edition Australian release which has a bonus CD containing dubs and remixes. Of the new tracks, the John B Drum and Bass mix of "For You See Me" is the only ROTH track that I really prefer to listen to over the album version. It is extremely catchy and danceable and actually enhances the album track. The remixes are meant to be danced to, and are probably great for that, but are a bit repetitive when they are just passively listened to. We have more than just remixes of new tracks. We have some new takes on classics like "Things Can Only Get Better" and "What Is Love". The other highlight of this disc, is the remake of "Like to Get to Know You Well" by The Young Punx called "&lt;a href="http://www.amazon.ca/exec/obidos/ASIN/B0009N5S3C/qid=1132963266/sr=1-30/ref=sr_1_0_30/702-9964040-7202426"&gt;Slip Away&lt;/a&gt;" which they released under the name "Mohito".&lt;br /&gt;This is a great new angle of a classic song in the vein of many other similar tracks which are reviving the dance clubs with a fresh rejuvenation of classic 80's tracks.&lt;br /&gt;&lt;br /&gt;The Australian release can be found here:&lt;br /&gt;&lt;a href="http://www.amazon.ca/exec/obidos/ASIN/B000AY960Q/qid=1132963266/sr=1-27/ref=sr_1_0_27/702-9964040-7202426"&gt;Revolution of the Heart [Import]&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-113296369789205393?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/113296369789205393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=113296369789205393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113296369789205393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113296369789205393'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/11/howard-jones-revolution-of-heart.html' title='Howard Jones - Revolution of the Heart'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-113296159337555939</id><published>2005-11-25T15:31:00.000-08:00</published><updated>2005-11-25T15:33:13.386-08:00</updated><title type='text'>ESRB: [ND-13] Only slightly nerdy</title><content type='html'>&lt;a href="http://www.nerdtests.com/ft_nq.php?im"&gt;&lt;img src="http://www.nerdtests.com/images/ft/nq.php?val=1669" alt="I am nerdier than 56% of all people. Are you nerdier? Click here to find out!"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dare you to find out how much of a nerd you really are!&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-113296159337555939?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/113296159337555939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=113296159337555939' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113296159337555939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113296159337555939'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/11/esrb-nd-13-only-slightly-nerdy.html' title='ESRB: [ND-13] Only slightly nerdy'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-113104138448298327</id><published>2005-11-03T09:10:00.000-08:00</published><updated>2005-11-03T16:36:08.690-08:00</updated><title type='text'>Bag that! Eclipse way off base with Visual Editor.</title><content type='html'>&lt;p&gt;The AWT &lt;strong&gt;GridBagLayout&lt;/strong&gt; has been around for a long time. It takes some getting used to but once mastered is the mother of all layout managers, enabling just about any configuration of components&lt;br /&gt;... and that's the problem...&lt;br /&gt;all too often what you get is not quite what you want.&lt;br /&gt;&lt;br /&gt;The quirks of the GridBag are well summarized by &lt;a href="http://madbean.com/static/blog/2004/17/anim.swf"&gt;Totally GridBag&lt;/a&gt; a must-see animated blog by a developer who probably discovered a &lt;a href="https://tablelayout.dev.java.net/"&gt;better way&lt;/a&gt;! (...more about that at the end.)&lt;br /&gt;&lt;br /&gt;For anyone who's tried, a few helper classes usually are in order to prevent the types of problems that guy was having, as is well described in the 1000-page book "Master the GridBagLayout in just 99 days", which has 10 chapters on the idiosyncrasies of the 101 parameters of the GridBagConstraints class. (The book doesn't exist - I'm still writing it. Or rather, Eclipse is. They have probably added about another 5 chapters with their new Visual Editor.)&lt;br /&gt;&lt;br /&gt;So with the GridBag being such a veteran of the Java world, you'd think that they might have actually have got somewhere with Visual GUI Designers by now. So after seeing the new features of the Visual Editor, keenly I download the Eclipse plug-in with high expectations. And at first it's not bad! I manage to develop a pretty neat looking GUI which allows me to add components here and there. My previous knowledge of GridBag helps me out, I'm sure - so I'm not sure how a newbie would fare, but all-in-all, Good stuff. Much better than writing all that tedious UI code, even with helper classes.&lt;br /&gt;&lt;br /&gt;UI looks good, time to save &amp; go home.&lt;br /&gt;&lt;br /&gt;Next day - Katrina strikes. I open up the Visual Editor once more to add a few buttons and some new fields. So I start plopping a few components onto the canvas. All looks good. Go to save my work and "Oh no!" dialog pops up. "The class you are trying to save has compile errors - Proceed?"&lt;br /&gt;&lt;br /&gt;What the heck kind of code has this thing been writing behind my back? So I go into to see my code in tatters. Not only has it hashed things up, it has done so royally. I find references to contraint objects that weren't created, and much, much worse, generated code inserted in the middle of other code, even inserted into comments. So I back out the changes, one undo at a time to see the UI in the visual view disappear right before my eyes. Now that's toally messed. Good job I didn't save the thing half-way through!&lt;br /&gt;&lt;br /&gt;So a little more evaluation leads me to discover that: &lt;ol&gt;&lt;li&gt;it's almost impossible to make changes to my UI in its current state (every time I try the code is inserted at the wrong place), &lt;/li&gt;&lt;li&gt;the code it generated even before the compile errors is so messy and convaluted it's not even worth trying to maintain by hand and, &lt;/li&gt;&lt;li&gt;the grid references in the GridBagLayout have gaps.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;(I also found issues with how the vanilla GridLayout is handled too, but this blog is too long already.)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Time to find a better way.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Enter the &lt;strong&gt;&lt;a href="https://tablelayout.dev.java.net/"&gt;TableLayout&lt;/a&gt;&lt;/strong&gt; manager. It's been around for a long time, almost as long as the infamous GridBagLayout. Maybe everyone else knows this already and I'm slow on the uptake...&lt;/p&gt;&lt;p&gt;A little planning up front is always a good idea. For this layout, you want to have a good idea of how many rows and columns in your grid up front.&lt;br /&gt;Add your row and column dimensions as arrays of doubles. For each dimension, specify absoutes as positive integers, percentages as a decimal between 0 and 1, or get it to respect PREFERRED sizes or FILL available space.&lt;br /&gt;&lt;br /&gt;Components are added using a formatted string convention in the constraint argument:&lt;br /&gt;"1,3" - add component to col 1, row 3&lt;br /&gt;"1,3,4,6" - add component to col 1, row 3; spanning cells to col 4 row 6&lt;br /&gt;"1,3,R,T" - add component to col 1, row 3; horizontal align right, valign top&lt;br /&gt;"1,3,4,6,R,T" - all of the above&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here's a snippet:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;TableLayout layout = new TableLayout();&lt;br /&gt;layout.setColumn(new double[]{TableLayout.PREFERRED, TableLayout.PREFERRED});&lt;br /&gt;layout.setRow(new double[]{TableLayout.FILL});&lt;br /&gt;layout.setHGap(4);&lt;br /&gt;modulePanel = new JPanel(layout);&lt;br /&gt;modulePanel.add(new JLabel("Action:"), "0,0");&lt;br /&gt;modulePanel.add(new JButton("Click Me"), "1,0");&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;or if you prefer:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;...&lt;br /&gt;double[][] colsRows =&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;{TableLayout.PREFERRED, TableLayout.PREFERRED},&lt;br /&gt;{TableLayout.FILL}&lt;br /&gt;};&lt;br /&gt;TableLayout tableLayout = new TableLayout(colsRows);&lt;br /&gt;modulePanel = new JPanel(tableLayout);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;modulePanel.add(new JLabel("Action:"),&lt;br /&gt;new TableLayoutConstraints (&lt;br /&gt;0,0,0,0,TableLayoutConstants.RIGHT, TableLayoutConstants.TOP&lt;br /&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;);&lt;br /&gt;modulePanel.add(new JButton("Click Me"), new TableLayoutCon&lt;span style="font-size:85%;"&gt;&lt;/span&gt;straints(1,0));&lt;br /&gt;...&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;This definition string thing feels a little strange. But in practice it's a nice, welcome shorthand.&lt;br /&gt;However, if you want a more conventional, type-safe API then the TableLayoutConstraints object can be utilized instead.&lt;br /&gt;&lt;br /&gt;This grid doesn't care if there are vacant cells. It doesn't even care if there is more than one resident in the same cell - it will render them all!&lt;br /&gt;Add some padding to the layout with HGap and VGap, and either add a standard border or create a margin by adding blank rows and columns around the edge.&lt;br /&gt;Did I say '&lt;em&gt;adding rows and columns'?&lt;/em&gt; I certainly did! this puppy allows you to create your component grid and then mess with it dynamically after the fact in code or at runtime! They even have an example of how to create animation in the grid by messing with the settings in real time. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;Some observations:&lt;/span&gt; &lt;/p&gt;&lt;p&gt;The documentation thinks it's a good idea to add blank columns and rows as borders. I don't have an issue with having the option to do it, but Borders are also a viable option that shouldn't be overlooked.&lt;/p&gt;&lt;p&gt;The TableLayout guys present the layout manager as a one size fits all solution, and see it as an advantage to not have to use nested layout managers. I think that nesting layout managers is a wise technique for complex forms, whatever manager you use. The good news here is that TableLayout is often a better (or at least equivalent) alternative to the more simple layouts like FlowLayout, BoxLayout and GridLayout and even BorderLayout. So my gut feel is that nesting TableLayouts sensibly is good advice. (For example, when you find yourself adding a column for one field and you find that every thing else has to be adjusted to span it.)&lt;/p&gt;&lt;p&gt;This is almost an aside, or maybe a note-to-self: Managing layouts during development is almost always a pain when you want to add a field in the middle of a bunch of other fields. A technique to add the components from a dynamic array or collection would not be a waste of effort in conjunction with this layout manager, IMO.&lt;/p&gt;&lt;p&gt;Baffles me why this hasn't been adopted by Sun so everyone can benefit?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-113104138448298327?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/113104138448298327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=113104138448298327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113104138448298327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113104138448298327'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/11/bag-that-eclipse-way-off-base-with.html' title='Bag that! Eclipse way off base with Visual Editor.'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-113017919750690367</id><published>2005-10-24T10:18:00.000-07:00</published><updated>2005-10-25T09:47:30.366-07:00</updated><title type='text'>ICEfaces</title><content type='html'>&lt;a href="http://www.icesoft.com/images/head_left.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 260px; CURSOR: hand; HEIGHT: 105px" height="139" alt="" src="http://www.icesoft.com/images/head_left.jpg" border="0" /&gt;&lt;/a&gt;Had an interesting demo of ICEfaces at the ICEsoft offices the other day. I'm building a next generation web application with JSF - ICEfaces brings us into the world of AJAX and dynamic page rendering with its enabling technology. I'm hoping for more components to show off the dynamic nature of the framework, and may well end up writing some myself.&lt;br /&gt;&lt;br /&gt;Unfortunately for ICEsoft, the JSF landscape is rapidly changing with the popularity of MyFaces and Facelets, and with Shale and Clay on the horizon, but they're doing a grand job of keeping up and already have MyFaces support and are madly working on Facelets integration.&lt;br /&gt;&lt;br /&gt;The folks at ICEsoft have had some good exposure recently when they presented their technology at JavaOne, and they have some interesting demos on their &lt;a href="http://www.icesoft.com"&gt;site&lt;/a&gt;, with more to come. I look forward to their presentation at the Calgary Java User Group (CJUG) next month.&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-113017919750690367?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/113017919750690367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=113017919750690367' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113017919750690367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/113017919750690367'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/10/icefaces.html' title='ICEfaces'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-112992219081601460</id><published>2005-10-21T12:14:00.000-07:00</published><updated>2005-10-21T12:17:16.056-07:00</updated><title type='text'>All else pales...</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/4427/671/1600/JessicaAndRachael2.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/4427/671/400/JessicaAndRachael2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Our newest arrival Jessica was just born!&lt;br /&gt;&lt;br /&gt;Jessica Rachael Biggs&lt;br /&gt;9th October 2005&lt;br /&gt;7lb 6oz&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-112992219081601460?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/112992219081601460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=112992219081601460' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112992219081601460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112992219081601460'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/10/all-else-pales_21.html' title='All else pales...'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-112870714184210938</id><published>2005-10-07T10:35:00.000-07:00</published><updated>2005-10-07T11:19:24.566-07:00</updated><title type='text'>Swing Sings with Spring (and activeMQ-ing)</title><content type='html'>&lt;p&gt;Now I’m officially impressed – so much so I &lt;em&gt;have&lt;/em&gt; to blog about it. Not long ago we had an important breakthrough at work. We actually put our thinking caps on and decided that (against all corporate neo-conventional wisdom) a web app was &lt;strong&gt;&lt;em&gt;not&lt;/em&gt;&lt;/strong&gt; the most appropriate platform architecture for our application. (I know, radical isn't it!) &lt;/p&gt;&lt;p&gt;Phase one had been done as a web app, with some good reason, but the reality is, we have a few specialized users at the same site who need a reliable, interactive monitoring application. There is no need for distributed no-client deployments across the net - on the contrary: a definite need for a richer client that allows control over the GUI container. A web browser controlled by javascript to me just did not fit. (For the record, I think there are a lot more applications that fit this definition that are implemented in a web browser that shouldn’t be, but that’s the subject of another blog.)&lt;br /&gt;&lt;br /&gt;So once we’ve convinced the business users that there is a better way (even an alternative way!) the obvious answer to our client is SWING. Hooray! At last I’m writing real apps again!&lt;br /&gt;&lt;br /&gt;Swing often talks to the back-end via RMI (unless you’re trying to shoe-horn it into some web app backend. I’ll let you picture that ugly picture in your mind before you realize for yourself what a clunky idea it is! And no, that’s not a dig at JSF. JSF is cool done right. And eventually it will be as soon as Sun takes the JSP out of their proverbial backend.)&lt;br /&gt;&lt;br /&gt;So I start looking at how to do RMI the Spring way. Using the Spring &lt;a href="http://www.springframework.org/docs/reference/remoting.html"&gt;RmiServiceExporter&lt;/a&gt; I was able to neatly encapsulate the RMI implementation in the Spring configuration. Life is pretty good.&lt;br /&gt;&lt;br /&gt;The need for a reliable system architecture on the server-side is definitely on the requirements list. Usually we would look straight at an application server to fulfill these types of requirements, but while we’re being radical about front-ends, why not question the whole gamut?&lt;br /&gt;So we start thinking about a more distributed service-oriented architecture. A new world where services run happily decoupled from each other advertising their wares across the ether. Not caring where they live or who they work for. A free J2EE world full of peace love and understanding.&lt;br /&gt;&lt;br /&gt;The more we talk about it the more we like it. What if the app server goes down? All our services go down with it. Why use an app server then? Why not run the services independently, each in their own process space? Now that’s starting to sound interesting!&lt;br /&gt;&lt;br /&gt;We’re starting to sing the song of better, lighter, and maybe even faster Java. (Ref: Bruce Tate) I haven’t read his book and wasn’t able to meet the man himself at NO Fluff Just Stuff this weekend, due to the fact that my wife will be giving birth any day now, but I’m &lt;em&gt;sure&lt;/em&gt; he’d approve.&lt;br /&gt;&lt;br /&gt;But hang on, party’s over: How are these happily independent services going to talk to each other? The distributed service architecture requirement is starting to sound a lot like JMS, and don’t we need an application server for that?&lt;br /&gt;&lt;br /&gt;Before diving in, this is a prime opportunity to see what the Spring world has to offer…&lt;br /&gt;A quick Google on Spring and JMS and you can’t help but stumble upon LogicBlaze’s ActiveMQ open-source message broker. A few links later and Craig Walls, author of &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1932394354/habumacom-20/103-0492501-6395829"&gt;Spring In Action&lt;/a&gt;, comes to the rescue with a very interesting &lt;a href="http://jroller.com/page/habuma/20050715"&gt;blog&lt;/a&gt; on doing JMS the Spring way with the help of &lt;a href="http://activemq.codehaus.org"&gt;ActiveMQ&lt;/a&gt;. He dubs the technique Message-Driven POJO’s (MDP’s), modifying the Sun acronym, MDB - Message-Driven Beans (EJBs, that is).&lt;br /&gt;&lt;br /&gt;Craig’s first Blog is great, but one thing still remains by his own admission, the need to implement the Message interface. Not to be outdone, it’s not long before he &lt;a href="http://jroller.com/page/habuma?entry=message_driven_pojos_2_the"&gt;Blogs&lt;/a&gt; again about another great library from LogicBlaze – &lt;a href="http://lingo.codehaus.org/"&gt;Lingo&lt;/a&gt;. This is the missing link as far as Spring is concerned. Now we can complete the decoupling from the JMS implementation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jroller.com/page/habuma?entry=message_driven_pojos_2_the"&gt;http://jroller.com/page/habuma?entry=message_driven_pojos_2_the&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So how does this all work in practice?&lt;br /&gt;In a word – brilliantly.&lt;br /&gt;&lt;br /&gt;Once I got my head around the abstractions, that is! After lots of deep thought about what is and is not necessary to implement, how things should be wired together and even how to reference the beans meaningfully, suddenly I found myself in Spring heaven. All I have to do is start up the ActiveMQ broker, start up my services one by one, and let the messages flow!&lt;br /&gt;&lt;br /&gt;I have several services publishing to a JMS topic, all happily doing their own individual things, pumping their messages out into the world. &lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Why is this great?&lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;i) Well first of all, each service is happily running in its separate process space – it has a VM all to itself. So if the service goes down, everything else stays up. And neither does it have to run on the same physical machine. No does it have to be the only one of it’s kind. I can start up several of the same services on different servers, publishing the same information to the queue and I have automatic fail-over.&lt;/p&gt;&lt;p&gt;ii) There is no application server in sight. But if I decide (or someone else decides!) I need one, I can use it as a container for my services with little trouble. All indications are that ActiveMQ will sit happily within a servlet container or application container. But please tell me why this is a good idea after taking i) into consideration.&lt;/p&gt;&lt;p&gt;iii) Because there is no indication whatsoever in the implementation classes that JMS is the transport.&lt;/p&gt;&lt;p&gt;The proof of this is in the testing. It took me the lesser part of a day to configure a Spring configuration to test all of my services WITHOUT JMS. No mock objects or heavy test containers required. Just plain &amp;amp; simple JUnit. Now that’s impressive!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Spring has Sprung.&lt;/strong&gt; And it’s beautiful outside. &lt;/p&gt;&lt;p&gt;&lt;em&gt;Q.E.D.&lt;br /&gt;&lt;/p&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-112870714184210938?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/112870714184210938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=112870714184210938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112870714184210938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112870714184210938'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/10/swing-sings-with-spring-and-activemq.html' title='Swing Sings with Spring (and activeMQ-ing)'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-112500369270973062</id><published>2005-08-25T13:49:00.000-07:00</published><updated>2005-08-25T22:35:41.593-07:00</updated><title type='text'>facelets and MyFaces living together in harmony</title><content type='html'>&lt;div&gt;So I discovered in the end it was a lack of configuration that was causing the issues in my port from JSF RI with JSPs to MyFaces with facelets.&lt;br /&gt;&lt;br /&gt;The facelet was not recognizing the MyFaces extension components because they were not registered, something that's automatic in the JSP environment.&lt;br /&gt;It turns out you need an entry in the web.xml file and a file to define the extra components. Definitely not something you can deduce on your own!&lt;br /&gt;&lt;br /&gt;I ended up enhancing this page to give those that follow a better chance of success!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.apache.org/myfaces/myfaces%2etaglib%2exml"&gt;http://wiki.apache.org/myfaces/myfaces%2etaglib%2exml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I can get on with the task at hand! ;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-112500369270973062?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/112500369270973062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=112500369270973062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112500369270973062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112500369270973062'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/08/facelets-and-myfaces-living-together.html' title='facelets and MyFaces living together in harmony'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-112489828015847182</id><published>2005-08-24T09:34:00.000-07:00</published><updated>2005-08-24T08:44:40.160-07:00</updated><title type='text'>Looking for a culprit: facelets or MyFaces?</title><content type='html'>I guess this is what you get when you start playing with new technology before the paint's dry.&lt;br /&gt;I have a system using JSP &amp;amp; Sun's JSF RI.&lt;br /&gt;&lt;br /&gt;So now I decide that I can't live with this combo any more, and so I decide to change to Facelets and Apache MyFaces.&lt;br /&gt;&lt;br /&gt;Every thing is going along swimmingly until I actually put a complex JSF component into the mix. This is the &lt;a href="http://myfaces.apache.org/tomahawk/newspaperTable.html"&gt;Newspaper Table&lt;/a&gt; from the MyFaces Tomahawk suite.&lt;br /&gt;Now this was working just fine in a previous setup, but the new config of the system under MyFaces in the facelets view template doesn't recognise (or can't resolve) an instance variable in the component.&lt;br /&gt;&lt;br /&gt;What to do? Well can I find anything on this issue? Google turns up virtually nothing.&lt;br /&gt;&lt;br /&gt;Is it MyFaces? (I'm sure it's MyFaces creating the error, but this is a MyFaces JSF control. So I try a standard DataTable - no problems there, and the Newspaper Table is supposed to be derived from the DataTable.)&lt;br /&gt;Or facelets? (Maybe facelets isn't initializing the component properly?)&lt;br /&gt;(Or an unhappy combo of the two?)&lt;br /&gt;&lt;br /&gt;No chance. Stumped. Time to work around again... :(&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-112489828015847182?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/112489828015847182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=112489828015847182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112489828015847182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112489828015847182'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/08/looking-for-culprit-facelets-or.html' title='Looking for a culprit: facelets or MyFaces?'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-112489761032086580</id><published>2005-08-24T09:25:00.000-07:00</published><updated>2005-08-24T08:33:30.326-07:00</updated><title type='text'>Ah... facelets</title><content type='html'>Well, thanks to a comment on one of my posts, I've now been reminded to blog again.&lt;br /&gt;The No-Fluff Java Symposium is coming around again, and I have what? Four posts to my name?&lt;br /&gt;&lt;br /&gt;Since last year, I have worked with JSF somewhat and have had pretty good success with it.&lt;br /&gt;There are some really annoying things about using it with JSPs, especially if you just want to stuff some HTML markup into the mix.&lt;br /&gt;In some cases (usually when inside another JSF parent component - pretty much a given when using &lt;b&gt;Tiles&lt;/b&gt;) the HTML gets rendered by the JSP container ahead of the JSF tags - and that's definitely &lt;b&gt;not&lt;/b&gt; what I ordered!&lt;br /&gt;&lt;br /&gt;Enter &lt;b&gt;facelets, &lt;/b&gt;a great new templating system for JSF which completely removes the JSP engine out of the picture. You can define a standard HTML page and plug it into your page template, &lt;b&gt;Tapestry&lt;/b&gt;-style (no need for Tiles) and have it rendered perfectly, with no need to restart the web server.&lt;br /&gt;&lt;br /&gt;Now that's much better. :)&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-112489761032086580?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/112489761032086580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=112489761032086580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112489761032086580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/112489761032086580'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/08/ah-facelets.html' title='Ah... facelets'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-110797377259615415</id><published>2005-02-09T10:04:00.000-08:00</published><updated>2005-02-09T10:29:32.596-08:00</updated><title type='text'>Why Overwrite? A blog about anti-functions.</title><content type='html'>I know that software development is all about adding features. But have you ever considered that some features are out of date, or just plain stupid?&lt;br /&gt;&lt;br /&gt;Take this for example: OVERWRITE text in a text editor. Every text editor has it, not just the old ones. Word, WordPad, Excel. Even IDE's seem to think it's necessary. I don't think I've used one that doesn't think this is an essential feature: Visual Studio, JBuilder, IDEA... the list is painfully long.&lt;br /&gt;&lt;br /&gt;So why, you are thinking, does he use a feature he hates so much? Well, the answer is, I never use it intentionally. I think you're probably in the same boat. I am typing away happily when somehow, accidentally I inadvertantly press the INSERT button on the keyboard. With no warning, I'm in the obliterative OVERWRITE mode. Suddenly my text is being consumed with more gumption than Pacman after Ramadan...&lt;br /&gt;&lt;br /&gt;So where did this function come from, and why is it so EVIL?&lt;br /&gt;Well, it's a leftover from some of the original word processors which were mimicking the more advanced wave of mechanical typewriters. You know, remember Wordstar and Wordperfect. And even before them, we had command-line interface tools and editors, like VI and EMACS (which some people still cling to like a baby's soother) where the INSERT text feature was a major breakthrough (if you could remember the five-fingered key combination to unlock it).&lt;br /&gt;&lt;br /&gt;So when you have a mouse and the ability to select text in a block to delete it, why would you &lt;em&gt;ever&lt;/em&gt; want to have an OVERWRITE mode? And even if you don't want to use a mouse, the shift key will do the selection for you. And herein lies the problem. Pressing SHIFT with END or HOME may select what you want to delete (by hitting the DELETE key), but somewhere along the line you are accidentally going to hit INSERT. It's a fact of life.&lt;br /&gt;And before you know it, the text you just slogged over is going to disappear into the ether as you type.&lt;br /&gt;&lt;br /&gt;So now what do you do? You have a dilemma. What do I want more: the text I just typed or the text it overwrote? If I UNDO I'm back to where I started, if I don't I have to remember what I typed. Ah, you say. Just select the text just typed, COPY it to the clipboard, select UNDO and then SELECT the location of the new text and PASTE it back in where you wanted it.&lt;br /&gt;&lt;br /&gt;I just have one more question: How exactly does this make one more productive?&lt;br /&gt;&lt;br /&gt;Just get rid of the ##$#%@@ OVERWRITE anti-function. PLEASE!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-110797377259615415?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/110797377259615415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=110797377259615415' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/110797377259615415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/110797377259615415'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2005/02/why-overwrite-blog-about-anti.html' title='Why Overwrite? A blog about anti-functions.'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-110123807145791318</id><published>2004-11-23T11:24:00.000-08:00</published><updated>2004-11-23T11:27:51.460-08:00</updated><title type='text'>Current Opinion of JSF - A Face with no features?</title><content type='html'>Java Server Faces has a lot going for it. However, it also has a lot of catching up to do!&lt;br /&gt;&lt;br /&gt;JSF has been on Sun’s public agenda since 2001. A lot of lofty goals were set to produce a better Web Application framework which would become the equivilent of Swing in the browser. Sun also wanted to replace Struts, and the word is that this resulted in some contention with the Apache group. Things went stale with bureaucracy for about a year. Somewhere along the line, Sun pulled the brain behind Struts, Craig McClannahan, onto the JSF project to evangelize for them, along with some of the members of the Swing team. Meanwhile, Microsoft was gaining momentum with their .Net web framework…&lt;br /&gt;&lt;br /&gt;So suddenly the JSF team were behind schedule before they had really started, and had to somehow mix .Net Webforms with Struts and Swing and produce it quickly. The mandate from Sun is to make this an official part of the J2EE stack and it must be built on JSPs and servlets. (However, the display technology is interchangeable. JSF apps can be front-ended by J2ME, XSTL, Velocity, Applets and Swing clients, as well as the default HTML.)&lt;br /&gt;&lt;br /&gt;So what do we have now? JSF v1.101 - &lt;em&gt;A Face with no features!&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;With JSF we have a framework for a component-oriented UI system – but with very few UI components! The philosophy – this is a reference implementation for J2EE application server providers to implement, enhance and extend.&lt;br /&gt;JSF has introduced an object model and an event model into the fray. We have formatters and converters. Certainly better than Struts which makes us convert everything on a form into a String on its way out and back into it’s native datatype on the way back in. Without an in-built formatting component, this makes life for many Struts developers pretty miserable.&lt;br /&gt;The system is an extensible reference implementation and Sun is waiting for the implementers (e.g. BEA, IBM, and the Open Source Community) to spice up their life by filling in the gaps.&lt;br /&gt;However, the things that make JSF very compelling when you’re struck in between a rock (Struts) and a hard place (adopting a totally new framework) are:&lt;br /&gt;- I can treat every thing on my web form as an object in a hierarchy&lt;br /&gt;- I don’t have to write HTML TABLES much anymore&lt;br /&gt;- When I click on something I can directly write a handler for it, with much less wiring (as in Struts)&lt;br /&gt;- I can integrate Struts with this and replace bits of an existing app one at a time&lt;br /&gt;           &lt;br /&gt;The itches are:&lt;br /&gt;- I may well have to write my own web interface components (but we do that anyway and it’s not all bad. At least it’s encapsulated, reusable code)&lt;br /&gt;- There’s &lt;em&gt;another&lt;/em&gt; new set of JSP tags to learn&lt;br /&gt;- There is the equivalent of Struts config with a different (but better) syntax (My itches with Struts-config make me sore – so I won’t go there.)&lt;br /&gt;           &lt;br /&gt;The recommendation from the presenter of the JSF presentation, David Geary, who wrote the book Core JSF for Sun, is to use JSF with Spring and Hibernate to develop the next generation of J2EE apps.&lt;br /&gt;&lt;br /&gt;I've got some reading to do...&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-110123807145791318?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/110123807145791318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=110123807145791318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/110123807145791318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/110123807145791318'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2004/11/current-opinion-of-jsf-face-with-no.html' title='Current Opinion of JSF - A Face with no features?'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-110123785957360548</id><published>2004-11-23T11:22:00.000-08:00</published><updated>2004-11-23T11:24:19.573-08:00</updated><title type='text'>No Fluff...</title><content type='html'>Here's my opinion of NFJS held here in Calgary last weekend. Overall pretty good stuff!&lt;br /&gt;&lt;br /&gt;2004 “No Fluff Just Stuff”&lt;br /&gt;Western Canada Java Symposium&lt;br /&gt;&lt;br /&gt;by&lt;br /&gt;Alan Biggs&lt;br /&gt;Senior Java Developer&lt;br /&gt;Treetop Tech&lt;br /&gt;&lt;br /&gt;Summary&lt;br /&gt;The conference was a good mix of presentations by ‘ground-level’ developers and software professionals who really know their material. If there was a theme to the conference, to me it would be “Software Craftsmanship”. As well as having many sessions to hone our skills and introduce us to new working techniques, there were also some refreshing topics to do with the Art of Software Engineering and the challenges of progressing as a professional in the workplace.&lt;br /&gt;There was a welcome absence of Sales Presentations by marketers and sponsors. The content was principally technical in nature.&lt;br /&gt;Most of the presenters have written software development books in their area of expertise. Dave Thomas and David Geary were the most notable of these, having co-authored the acclaimed book “The Pragmatic Programmer”, and Sun’s “Core Java Server Faces” respectively.&lt;br /&gt;A very entertaining part of the conference was the Panel Discussion on Saturday afternoon, where the speakers were asked questions “on any subject whatsoever.” Questions about their biases, what new technologies excite them, their opinion of what’s on the horizon unearthed some surprising answers. A shift towards dotNet is inevitable but Java is not going away – conclusion? We will be managing dotNet front-ends to J2EE back-ends increasingly in the coming years. It will not be a bad move to have both technologies in one’s repertoire. No question was outlawed, and so a question to a panel of techno-geeks asking if they “Have a Life” returned some interesting responses!&lt;br /&gt;The main threads of the conference were Agile methods, including test-first development, refactoring and implementing continuous builds. There was a detailed overview of Sun’s significant, (but already dogged,) new technology “Java Server Faces”. Open source software and honing our software engineering skills were also key topics.&lt;br /&gt;Some of the more interesting topics were some views of some interesting new technologies inside and outside of the Java space, including Ruby, Spring, Tapestry and Seaside (a Smalltalk-based web application framework).&lt;br /&gt;&lt;br /&gt;Conclusion&lt;br /&gt;The conference was very enjoyable and represented excellent investment of our time. The topics were all current, but were not just about tools, APIs and technologies. This conference was for those developers who are serious about their profession and making continuous improvement in their field. There was plenty of meat on the menu to keep our brains churning – mixed with a good dose of humor and a chance to step back and evaluate the tasks we perform from day to day – why we do what we do, and to take pride in doing it better.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-110123785957360548?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/110123785957360548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=110123785957360548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/110123785957360548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/110123785957360548'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2004/11/no-fluff.html' title='No Fluff...'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9295154.post-110123770761145184</id><published>2004-11-23T11:16:00.000-08:00</published><updated>2004-11-23T11:21:47.613-08:00</updated><title type='text'>On the band-waggon...</title><content type='html'>Well I finally jumped onto the blog band-waggon. When my favourite pop artist, Howard Jones is blogging and I - a seasoned Software Developer isn't - it's time to do something about it.&lt;br /&gt;&lt;br /&gt;Actually it was attending the NoFluffJustStuff Symposium that got me going - now I can waste even more time at the keyboard! :)&lt;br /&gt;&lt;br /&gt;I expect we'll cover lots of topics from programming to card games, adoption to movies to British humour, and maybe a bit of religion and politics to keep it contraversial...&lt;br /&gt;&lt;br /&gt;Anyway, onto my first serious blog...&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;Red-3 Standing by...&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9295154-110123770761145184?l=red-3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://red-3.blogspot.com/feeds/110123770761145184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9295154&amp;postID=110123770761145184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/110123770761145184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9295154/posts/default/110123770761145184'/><link rel='alternate' type='text/html' href='http://red-3.blogspot.com/2004/11/on-band-waggon.html' title='On the band-waggon...'/><author><name>Red-3</name><uri>http://www.blogger.com/profile/04282781304122099649</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://members.shaw.ca/red-3/red3logo65x65.jpg'/></author><thr:total>0</thr:total></entry></feed>
