Wednesday, December 19, 2007

iPod Touch WiFi Works on WEP Key Index #1 ONLY

My wife and I were visited by Santa early this year and brought us each an 8GB iPod Touch. I guess his elves got wind that I lost my PDA last month and that my wife, well, just wanted a new iPod.

Anyway, we got them out of their slick, black boxes and started working straight away to get them connected to our home wireless network. However, after many attempts to set and re-set the iPod's WiFi settings to connect to our network I had no success to show for it. Frustrated, I scoured the 'net for answers, finding various user forums and blogs with people describing a similar experience and some suggested fixes (reset router/iPod, disable WEP security on the wireless network, etc). These fixes generally provided mixed results among those who tried them, while none of these fixes got the iPod rocking on my WiFi.

On a whim, I tried changing the 'Default Transmit Key' setting on my Linksys router to '1' and the iPod WiFi connection finally sprung to life.

I was just a tiny bit disappointed that I had to modify my existing network security settings to accomodate the iPod connection, but I suppose changing the WEP key index is not a major issue. Hopefully Apple will provide the ability to specify the WEP Key Index in the iPod's WiFi settings in a future firmware update.

Monday, October 15, 2007

Hello World

Hannah Grace DeReese
October 15, 2007 @ 1:16pm
7 lbs. 14 oz.
20 in long
(10 fingers and toes!)

She has transparent blond hair, just like mommy and daddy did when they were her age. Just like every other little girl worth her salt, she pouts out that bottom lip like a pro when she cries. As she grows older, I fear she will be using that pout to get exactly what she wants from me.

I am truly at a loss to describe how I feel. Joy, fatigue, excitement and relief only begin to describe the experience. I can only say that I am truly grateful for our little blessing. As we are surrounded by family and friends, we are deeply honored by this gift God has given us.

Friday, February 02, 2007

Yes, But Can Your Surface Do This?

This is absolutely the coolest application of a tangible user interface (TUI) that I have seen thus far. Also one of the coolest modular synthesizers I've seen for that matter. Here's the reactable:

An image recognition module was employed in the development of this instrument, which is used to capture interactions with the translucent table surface using input from a video camera. The framework then communicates those interactions using a proprietary format through a UDP port. A client application (running locally or remotely on another computer) consumes these messages and update the UI accordingly by projecting provide feedback to the user back onto the table surface.

For some it will be a cool toy to kill time with. I have also seen that Björk and a few other musicians are incorporating this into their work. I am definitely inspired.

The makers have also graciously provided the vision engine software used in the reactable as an open-source. This allows developers to harness the same power and create their own TUI for whatever use they can imagine.

That means, get inspired and keep the innovations coming!

Thursday, January 11, 2007

Bridge the Gap Between Your NHibernate Collections and WPF UI

While working on a pet software development project of mine, I needed to bind the entity collections I retrieve from my NHibernate back-end to the WPF (Avalon) list controls in my application UI. Since the default collection mapping yields an IList<> collection, it can be bound to the list control successfully and its items will be displayed as advertised. In addition, WPF list controls will be updated automatically (meaning, without writing additional code) when the bound collection's contents change by items being added, removed or reordered. This looks like manna from the heavens, until I made this discovery: that only applies to collections which implement the INotifyCollectionChanged interface. Sounds like a great feature; however NHibernate's collections do not support this interface out-of-the-box. The manna turns to ash in our mouth, so to speak.

Fortunately, all is not lost. This whiz-bang feature can be leveraged with an NHibernate data layer if you are willing to get your keyboard and mouse fingers a bit dirty. NHibernate 1.2 provides the IUserCollectionType interface so that a custom collection type can be developed and referenced when defining a collection in your entity mapping configuration. This means that a new collection class can be defined which implements this interface combined with INotifyCollectionChanged to create an observable collection which will auto-magically update the display of any WPF list control!

Getting custom collections which are usable by NHibernate is a bit tricky at first, so I've included a project which demonstrates how I accomplished it. A few simple domain model entities are mapped to DB tables using NHibernate, one of which utilizes a custom collection. It can be bound to a WPF list control and take advantage of all the nice databinding features. The custom collection also supports lazy-loading as long as you have 'prox-ified' your domain entity classes by declaring all the public properties and methods as virtual, which is the typical procedure as described in the NHibernate documentation.

You can download the demo project here. It contains the source code for the custom persistent and transient collection classes. I've also provided a class diagram which outlines my approach to the solution. There is also an WPF UI project that provides some basic functions to play with the collection contents. You can observe how the UI reacts to those changes without any user-written code to do so.

NOTES:

  • You will need the latest NHibernate 1.2.0, .NET 3.0 Framework and SQL Server 2005 Express installed to use this project.
  • Remember to change the absolute path of the database in the hibernate.cfg.xml for your local machine. This file is located in the Library project.
  • This post assumes that you're already familiar with the basics of both NHibernate and WPF technologies; surf to their respective websites for more information on getting started.