From: Holly G. <hgates@EINK.com> - 2006-01-12 15:00:00
|
This is very similar to some situations we have in updating E Ink displays, and one of the ways to address the issue is having a shadow framebuffer as you describe. Deciding when and how much of the screen to update is the tricky bit, especially given E Ink's relatively slower response speed and the need to complete one update before beginning another. The optimal solution depends heavily on the UI design and application, as well as the particular material and waveform used on the display panel. I haven't gotten around to trying this out yet. Do you remember if there is a simple way to set up a shadow framebuffer? Is is just as easy as doing some kind of mknod in /dev (but then how do you get the fb memory allocated and linked to /dev/fb1 or whatever)? We are using the linux command line to start pxafb with parameters; do you know of some way to start two fb devices in that manner? thanks, -Holly Dave Hylands wrote: >Hi Dan, > > > >>Has anyone used it with the gumstix? Does it look like something that >>could be made to work? If so, how? Should I just forget about it, or >>is it something I could get working? >> >> > >I haven't used this exact LCD, but this type of LCD is very common in >the mobile phone market. > >There are two very different families of LCDs. Most of the LCDs that >other have been talking about on this list are what I call "direct >drive" LCDs. These work in a manner very similar to a CRT, in that you >need to constantly (60 times/second) send the data to be displayed. > >The Nokia LCD, on the other hand, is what I call a "frame buffered" >LCD. It has it's own frame buffer and its own LCD controller >circuitry. So the data sent between the gumstix and the LCD is quite >different. > >X Windows expect to see a frame buffer that it can manipulate >directly, which makes the direct drive LCDs a good fit. There are some >games you can play to make a frame buffered LCD work under X Windows. >I've done exactly this for different processor (ARM9) to a different >LCD but the concepts are identical. > >So what I did was to create two device drivers. The first driver is >what I call a shadow buffer driver, and what it does is basically just >to allocate a chunk of memory (which I'll refer to as a shadow >framebuffer) and it advertises itself to the world as a frame buffer. > >The second driver is the LCD driver itself, and it knows how to send >the appropriate command sequences to the LCD to configure it, and to >transfer the data to it. > >Now there's just one piece missing. Somehow you need to get the data >from the shadow frame buffer out the LCD whenever the shadow frame >buffer is modified. One technique is to use a timer, and just >arbitrarily transfer everything N times per second. The second is to >use some hooks which are available in a package like microwindows. >Microwindows allows you to install "drivers" which get to do the >actual data output. What I did was to create a driver which hooked all >of the graphic operations (draw line, blit, etc) and the driver keeps >track of which rows are "dirty" and then calls the "frame buffer" >driver provided as part of microwindows. Microwindows also has a hook >which allows the driver to know when it's idle. Being idle indicates >that it's waiting for user input (or perhaps a timer) and that all of >its immediate droawing operations are completed. This is an ideal time >to now transfer all of the dirty rows from the shadow buffer to the >real LCD. Your data structure for tracking the dirty rows can be >simple (highest and lowest row) or complex (some type of list, or >perhaps something with one bit per row which is dirty). > >So the answer is, that yes, it can be made to work. I actually plan on >doing this myself (unless somebody else beats me to it), but I'd guess >its at least six months out before I een get started (way too much >other stuff to get working on my robot first). > >-- >Dave Hylands >Vancouver, BC, Canada >http://www.DaveHylands.com/ > > >------------------------------------------------------- >This SF.net email is sponsored by: Splunk Inc. Do you grep through log files >for problems? Stop! Download the new AJAX search engine that makes >searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! >http://ads.osdn.com/?ad_idv37&alloc_id865&op=click >_______________________________________________ >gumstix-users mailing list >gum...@li... >https://lists.sourceforge.net/lists/listinfo/gumstix-users > > |
From: Holly G. <hgates@EINK.com> - 2006-01-12 22:05:38
|
I had looked at that before, but I figured that turning that on would turn off the real framebuffer. Maybe if I built the real framebuffer like usual, and turned it on via the command line, then later insmodded the vfb driver. -Holly Dave Hylands wrote: >Hi Craig, > > > >>Would the "Virtual framebuffer" option in the kernel do this? Sounds >>like it would from its description: >> >> > >It would make a good starting point. You then need to add stuff that >transfers the contents of the virtual frame buffer to the LCD frame >buffer. > >-- >Dave Hylands >Vancouver, BC, Canada >http://www.DaveHylands.com/ > > >------------------------------------------------------- >This SF.net email is sponsored by: Splunk Inc. Do you grep through log files >for problems? Stop! Download the new AJAX search engine that makes >searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! >http://ads.osdn.com/?ad_idv37&alloc_id865&op=click >_______________________________________________ >gumstix-users mailing list >gum...@li... >https://lists.sourceforge.net/lists/listinfo/gumstix-users > > |
From: Erik D. R. <eri...@ce...> - 2006-01-14 01:27:13
|
Is there a display available that people have working with Gumstix? It would be nice to be able to purchase a display, download the driver(s), wire it up and let er rip within very little time. This would be great for those of us (Me) who want to focus programming time on bigger picture stuff (like... .getting the robot going) and not have to spend precious time re-inventing the wheel. I have seen a few recommendations for displays in this thread. I have yet to see a complete set roll through my E-Mail. (Display, Drivers, Connection diagram) Erik -----Original Message----- From: gum...@li... [mailto:gum...@li...] On Behalf Of jc Carroll Sent: Friday, January 13, 2006 7:31 AM To: gum...@li... Subject: Re: [Gumstix-users] "Nokia" Displays from Spark Fun... The display is nice and I might try that too. Unfortunately the flex print sodering pins are very small (see pic @ sparkfun). The original Philips comes with bigger sodering pins and is not so much more expensive (see http://www.magboss.pl/product_info.php?cPath=3D27&products_id=3D638). Best regards Jens Dan Taylor wrote: > Just poking around the SparkFun website and I noticed these very cheap > faux-Nokia displays. >=20 > http://www.sparkfun.com/commerce/product_info.php?products_id=3D569 >=20 > In the past I've always been put off using a display in my project=20 > because they're too expensive and pretty complex. This one looks=20 > cheap, if nothing else, $20 for a colour display is pretty good and=20 > it's just the right size for my project too. I'm not looking for=20 > glorious technicolor, just a small area to implement a very simple=20 > menu interface. >=20 > Has anyone used it with the gumstix? Does it look like something that > could be made to work? If so, how? Should I just forget about it, or > is it something I could get working? >=20 > Dan >=20 > -- > Dan Taylor >=20 > Software Development Engineer, JTL Systems Ltd PhD Student, Reading=20 > University, UK >=20 > http://www.logicalgenetics.com >=20 >=20 > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files for problems? Stop! Download the new AJAX search engine that=20 > makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_idv37&alloc_id=16865&op=3Dclick > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users >=20 ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick _______________________________________________ gumstix-users mailing list gum...@li... https://lists.sourceforge.net/lists/listinfo/gumstix-users |
From: Dan T. <log...@gm...> - 2006-01-14 18:26:27
|
I couldn't agree more. There's a clear need for a breakout board with a screen on it! Dan On 13/01/06, Erik D. Rodriguez <eri...@ce...> wrote= : > Is there a display available that people have working with Gumstix? It > would be nice to be able to purchase a display, download the driver(s), > wire it up and let er rip within very little time. This would be great > for those of us (Me) who want to focus programming time on bigger > picture stuff (like... .getting the robot going) and not have to spend > precious time re-inventing the wheel. > > I have seen a few recommendations for displays in this thread. I have > yet to see a complete set roll through my E-Mail. (Display, Drivers, > Connection diagram) > > > Erik > -----Original Message----- > From: gum...@li... > [mailto:gum...@li...] On Behalf Of jc > Carroll > Sent: Friday, January 13, 2006 7:31 AM > To: gum...@li... > Subject: Re: [Gumstix-users] "Nokia" Displays from Spark Fun... > > The display is nice and I might try that too. Unfortunately the flex > print sodering pins are very small (see pic @ sparkfun). The original > Philips comes with bigger sodering pins and is not so much more > expensive (see > http://www.magboss.pl/product_info.php?cPath=3D27&products_id=3D638). > > Best regards > Jens > > Dan Taylor wrote: > > Just poking around the SparkFun website and I noticed these very cheap > > > faux-Nokia displays. > > > > http://www.sparkfun.com/commerce/product_info.php?products_id=3D569 > > > > In the past I've always been put off using a display in my project > > because they're too expensive and pretty complex. This one looks > > cheap, if nothing else, $20 for a colour display is pretty good and > > it's just the right size for my project too. I'm not looking for > > glorious technicolor, just a small area to implement a very simple > > menu interface. > > > > Has anyone used it with the gumstix? Does it look like something that > > > could be made to work? If so, how? Should I just forget about it, or > > > is it something I could get working? > > > > Dan > > > > -- > > Dan Taylor > > > > Software Development Engineer, JTL Systems Ltd PhD Student, Reading > > University, UK > > > > http://www.logicalgenetics.com > > > > > > ------------------------------------------------------- > > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > > > files for problems? Stop! Download the new AJAX search engine that > > makes searching your log files as easy as surfing the web. DOWNLOAD > SPLUNK! > > http://ads.osdn.com/?ad_idv37&alloc_id=16865&op=3Dclick > > _______________________________________________ > > gumstix-users mailing list > > gum...@li... > > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log > files for problems? Stop! Download the new AJAX search engine that > makes searching your log files as easy as surfing the web. DOWNLOAD > SPLUNK! > http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log fi= les > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_idv37&alloc_id=16865&opclick > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > -- Dan Taylor Software Development Engineer, JTL Systems Ltd PhD Student, Reading University, UK http://www.logicalgenetics.com |
From: Keith O. <kso...@gm...> - 2006-01-14 20:02:43
|
Dan Taylor wrote: >I couldn't agree more. There's a clear need for a breakout board with >a screen on it! > >Dan > Is it my imagination, or would there be a market for a case with a built-in LCD display that you can easily mount gumstixy goodness in? Maybe even three models - one iPod/Gameboy sized with a blank space for controls, one big enough to include a tiny QWERTY keyboard, and one that's just a frame for the LCD display(multiple sizes). -- Keith Olson K-Soft Consulting |
From: Erik D. R. <eri...@ce...> - 2006-01-16 18:17:15
|
Ok. Looks like there is a need here. So, is anyone willing to post their source (And any other software related requirements) for a display they have working on their Gumstix?=20 Perhaps provide Display model (Aprox cost, where to purchase, and any supporting hardware required), Wiring diagram, Source code (Drivers, and possibly instructions on what needs to be tweaked on the Gumstix). Erik -----Original Message----- From: gum...@li... [mailto:gum...@li...] On Behalf Of Keith Olson Sent: Saturday, January 14, 2006 12:03 PM To: gum...@li... Subject: Re: [Gumstix-users] "Nokia" Displays from Spark Fun... Dan Taylor wrote: >I couldn't agree more. There's a clear need for a breakout board with >a screen on it! > >Dan > Is it my imagination, or would there be a market for a case with a=20 built-in LCD display that you can easily mount gumstixy goodness in? =20 Maybe even three models - one iPod/Gameboy sized with a blank space for=20 controls, one big enough to include a tiny QWERTY keyboard, and one=20 that's just a frame for the LCD display(multiple sizes). --=20 Keith Olson K-Soft Consulting ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick _______________________________________________ gumstix-users mailing list gum...@li... https://lists.sourceforge.net/lists/listinfo/gumstix-users |
From: Holly G. <hgates@EINK.com> - 2006-01-16 23:16:43
|
The info needed to hook up a small Sony color TFT display has been available for some time on the wiki. Display: Sony ACX705AKM (or ACX705AK or ACX705AKM-7) 240x160 reflective color TFT Front light included 57.6mm x 38.4mm Data sheet: http://store.earthlcd.com/s.nl/sc.5/category.6/it.A/id.893/.f Sources: ~$60 at http://store.earthlcd.com/ ~$20 at http://www.goldmine-elec.com/ Connection diagram/drivers/instructions 1: http://www.gumstix.org/tikiwiki/tiki-index.php?page=Display#attachments Connection diagram 2 (including gerber files for a suitable breakout board): http://sourceforge.net/project/showfiles.php?group_id=152655&package_id=1704 07 or go to http://sourceforge.net/projects/thinspace and click on "dowload thinspace"; the thinspace package may be interesting, but not incredibly useful for the LCD. However the lyre package includes the breakout board design. Use software and configuration from the "display" wiki page. Not sure if that suits your requirements or not... Would be nice if there were a display breatkout board available for reasonable cost from gumstix, but in the meantime you can either solder one up or send the lyre board gerbers referenced above to get fabbed (though you will still need to be pretty good with a soldering iron to assemble it). -Holly Erik D. Rodriguez wrote: >Ok. Looks like there is a need here. So, is anyone willing to post their >source (And any other software related requirements) for a display they >have working on their Gumstix? > >Perhaps provide Display model (Aprox cost, where to purchase, and any >supporting hardware required), Wiring diagram, Source code (Drivers, and >possibly instructions on what needs to be tweaked on the Gumstix). > > >Erik >-----Original Message----- >From: gum...@li... >[mailto:gum...@li...] On Behalf Of Keith >Olson >Sent: Saturday, January 14, 2006 12:03 PM >To: gum...@li... >Subject: Re: [Gumstix-users] "Nokia" Displays from Spark Fun... > >Dan Taylor wrote: > > > >>I couldn't agree more. There's a clear need for a breakout board with >>a screen on it! >> >>Dan >> >> >> >Is it my imagination, or would there be a market for a case with a >built-in LCD display that you can easily mount gumstixy goodness in? >Maybe even three models - one iPod/Gameboy sized with a blank space for >controls, one big enough to include a tiny QWERTY keyboard, and one >that's just a frame for the LCD display(multiple sizes). > > > |
From: Erik D. R. <eri...@ce...> - 2006-01-16 23:26:11
|
Ahh. Very nice. That is exactly what I been looking for. Thanks, Holly Erik=20 -----Original Message----- From: gum...@li... [mailto:gum...@li...] On Behalf Of Holly Gates Sent: Monday, January 16, 2006 4:11 PM To: gum...@li... Subject: Re: [Gumstix-users] "Nokia" Displays from Spark Fun... The info needed to hook up a small Sony color TFT display has been=20 available for some time on the wiki. Display: Sony ACX705AKM (or ACX705AK or ACX705AKM-7) 240x160 reflective color TFT Front light included 57.6mm x 38.4mm Data sheet: http://store.earthlcd.com/s.nl/sc.5/category.6/it.A/id.893/.f Sources: ~$60 at http://store.earthlcd.com/ ~$20 at http://www.goldmine-elec.com/ Connection diagram/drivers/instructions 1: http://www.gumstix.org/tikiwiki/tiki-index.php?page=3DDisplay#attachments= Connection diagram 2 (including gerber files for a suitable breakout board): http://sourceforge.net/project/showfiles.php?group_id=3D152655&package_id= =3D 1704 07 or go to http://sourceforge.net/projects/thinspace and click on "dowload thinspace"; the thinspace package may be interesting, but not incredibly useful for the LCD. However the lyre package includes the breakout board design. Use software and configuration from the "display" wiki page. Not sure if that suits your requirements or not... Would be nice if there were a display breatkout board available for=20 reasonable cost from gumstix, but in the meantime you can either solder=20 one up or send the lyre board gerbers referenced above to get fabbed=20 (though you will still need to be pretty good with a soldering iron to=20 assemble it). -Holly Erik D. Rodriguez wrote: >Ok. Looks like there is a need here. So, is anyone willing to post their >source (And any other software related requirements) for a display they >have working on their Gumstix?=20 > >Perhaps provide Display model (Aprox cost, where to purchase, and any >supporting hardware required), Wiring diagram, Source code (Drivers, and >possibly instructions on what needs to be tweaked on the Gumstix). > > >Erik >-----Original Message----- >From: gum...@li... >[mailto:gum...@li...] On Behalf Of Keith >Olson >Sent: Saturday, January 14, 2006 12:03 PM >To: gum...@li... >Subject: Re: [Gumstix-users] "Nokia" Displays from Spark Fun... > >Dan Taylor wrote: > > =20 > >>I couldn't agree more. There's a clear need for a breakout board with >>a screen on it! >> >>Dan >> >> =20 >> >Is it my imagination, or would there be a market for a case with a=20 >built-in LCD display that you can easily mount gumstixy goodness in? =20 >Maybe even three models - one iPod/Gameboy sized with a blank space for >controls, one big enough to include a tiny QWERTY keyboard, and one=20 >that's just a frame for the LCD display(multiple sizes). > > =20 > ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick _______________________________________________ gumstix-users mailing list gum...@li... https://lists.sourceforge.net/lists/listinfo/gumstix-users |
From: Dave H. <dhy...@gm...> - 2006-01-12 15:21:14
|
Hi Holly, > I haven't gotten around to trying this out yet. Do you remember if there > is a simple way to set up a shadow framebuffer? Is is just as easy as > doing some kind of mknod in /dev (but then how do you get the fb memory > allocated and linked to /dev/fb1 or whatever)? We are using the linux > command line to start pxafb with parameters; do you know of some way to > start two fb devices in that manner? The actual shadow buffer itself is just a hunk of allocated memory that can then be mmap'd into userspace. Then there's a whole wack of infrastructure that you need if you want to make this look like a framebuffer to X-Windows. If you don't care about X-Windows compatability, then it's pretty simple. The very first framebuffer I wrote for microwindows didn't have any X-Windows compatability. Doing the mknod basically just provides a mapping from a symbolic name (like fb1) to a major number. There isn't any particular reason why fb1 and fb0 have to be mapped to the same major number or the same driver. Drivers can be loaded whether a /dev entry exists or not, and /dev entries can exist even when there is no driver. The /dev entries are really just a fancy lookup table. Using devfs allows a driver to advertise itself and you don't need to do a mknod, but that's really more of a convenience/management thing. If you made the second framebuffer a loadable module, then you could provide command line options at load time (through a startup script), or you could configure it to use kernel command line parameters, or you can use /proc entries (or maybe you don't even have any command line options). It's pretty arbitrary if you're writing the driver :) -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: Ralph M. <rj...@me...> - 2006-01-12 15:57:53
|
Holly Gates writes: > This is very similar to some situations we have in updating E Ink > displays, and one of the ways to address the issue is having a shadow > framebuffer as you describe. Deciding when and how much of the screen to > update is the tricky bit, especially given E Ink's relatively slower > response speed and the need to complete one update before beginning > another. The optimal solution depends heavily on the UI design and > application, as well as the particular material and waveform used on the > display panel. A combination of a timer and checking for changes (against a "shadow shadow" frame buffer) works pretty well. I am using that with a setup from Polymer Vision with Apollo and e-ink panel. If changes are detected I just DMA the whole buffer to the Apollo. Direct hooks into the window system would be better but this way it works without changes to other code (like fb console if you want a console, etc.). > I haven't gotten around to trying this out yet. Do you remember if there > is a simple way to set up a shadow framebuffer? Is is just as easy as > doing some kind of mknod in /dev (but then how do you get the fb memory > allocated and linked to /dev/fb1 or whatever)? We are using the linux > command line to start pxafb with parameters; do you know of some way to > start two fb devices in that manner? You have to set up a frame buffer device from a device driver. That's where the buffers are allocated, etc. It is not too complicated. Ralph |
From: Craig H. <cr...@gu...> - 2006-01-12 18:33:05
|
On Jan 12, 2006, at 7:54 AM, Holly Gates wrote: > I haven't gotten around to trying this out yet. Do you remember if =20 > there > is a simple way to set up a shadow framebuffer? Is is just as easy as > doing some kind of mknod in /dev (but then how do you get the fb =20 > memory > allocated and linked to /dev/fb1 or whatever)? We are using the linux > command line to start pxafb with parameters; do you know of some =20 > way to > start two fb devices in that manner? Would the "Virtual framebuffer" option in the kernel do this? Sounds =20= like it would from its description: CONFIG_FB_VIRTUAL: =20= =20= =E2=94=82 =20 =E2=94=82 = =20 =20= =E2=94=82 =E2=94= =82 =20 This is a `virtual' frame buffer device. It operates on a chunk =20 of =20= =E2=94=82 = =E2=94=82 =20 unswappable kernel memory instead of on the memory of a =20 graphics =20= =20 =E2=94=82 =E2=94=82 board. This means you cannot see any output sent = to this =20 frame =20= =20 =E2=94=82 =E2=94=82 buffer device, while it does consume precious = memory. The =20 main =20 use =20= =E2=94=82 = =E2=94=82 =20 of this frame buffer device is testing and debugging the =20 frame =20= =20 =E2=94=82 =E2=94=82 buffer subsystem. Do NOT enable it for normal = systems! To =20 protect =20= =20 =E2=94=82 =E2=94=82 the innocent, it has to be enabled explicitly at = boot time =20 using =20 the =20= =E2=94=82 = =E2=94=82 =20 kernel option =20 `video=3Dvfb:'. = =20 =20= =E2=94=82 =20 =E2=94=82 = =20 =20= =E2=94=82 =E2=94= =82 To =20 compile this driver as a module, choose M here: =20 the =20= =20= =E2=94=82 =E2=94=82 module will be called =20 vfb. =20= =20= =E2=94=82 =20 =E2=94=82 = =20 =20= =E2=94=82 =E2=94= =82 If =20 unsure, say =20 N. =20= =20= =E2=94=82 =E2=94=82 Symbol: = FB_VIRTUAL =20 [=3Dn] = =20 =20= =E2=94=82 =E2=94=82 Prompt: Virtual = Frame =20 Buffer support (ONLY FOR =20 TESTING!) =20= =20= =E2=94=82 =E2=94=82 Defined at drivers/video/Kconfig:=20 1546 =20= =20= =E2=94=82 =E2=94=82 Depends on: =20 FB =20= =20= =E2=94=82 =E2=94=82 =20 Location: =20= =20= =E2=94=82 =E2=94=82 = -> =20 Device =20 Drivers =20= =20= =E2=94=82 =E2=94=82 -> = Graphics =20 support =20= =20= =E2=94=82 =E2=94=82 Selects: =20 FB_CFB_FILLRECT && FB_CFB_COPYAREA && FB_CFB_IMAGEBLIT && FB_SOFT_CURSOR |
From: Dave H. <dhy...@gm...> - 2006-01-12 21:36:55
|
Hi Craig, > Would the "Virtual framebuffer" option in the kernel do this? Sounds > like it would from its description: It would make a good starting point. You then need to add stuff that transfers the contents of the virtual frame buffer to the LCD frame buffer. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |