Alek's Holiday Lights Webcam - Trick or Treat?

Some folks may remember that since 2002, I've been doing webcam and web controlled holidays lights - see historical information information & pictures for halloween and christmas. But after it got outa hand for Christmas/2004 due to a media frenzy, I out'ed myself to the Wall Street Journal and disclosed it was a fun little hoax. Tons of detail at that link, but in summary, the lights have always been real, but the "webcam images" were a set of static shots from a Canon 10D DSLR that were then computer manipulated.

Fortunately, webcam image technology has improved, and so for 2005, the webcam IS real ... although you would certainly be justified in being skeptical of that! ;-) So maybe the new hoax is that everyone will think it is fake, but in actual fact it is real ... this comment from DIGG says it all:
"This is so fake. Cracks me up those that are trying to pretend that it's real. Think about it. Really think hard about it.. actually, don't think hard about it and you can still figure out that it's fake.
I actually did "really think hard about it" and regardless if I'm doing it for real or not, it's totally doable. Heck, we sent men to the moon 30 years ago, so it's certainly possible to make holidays lights turn on and off. What would we do without these Einsteins on the Internet to set us straight on this technology stuff ... or at least provide some good comedy. Speaking of comedy, I put togather some spooky time-lapse halloween movies and will be adding some christmas movies that are entertaining ... and oh yeah, if this is a simulation again, think how much work it was to make those! ;-)

SO ... join in the fun ... add a link on your website and/or blog to the Hulk'in halloween webcam and/or the christmas lights webcam and see if people think it is a Trick ... or a Treat! ;-)

More information at the main FAQ's, but here's a couple of really frequently asked questions.

1. How come the webcam image quality isn't better?
In previous years, I borrowed a $1,500 six-megapixel Canon 10D DSLR to shoot the (cough, cough) webcam pictures. The Dlink DCS-6620G is a pretty decent webcam (certainly cost me a bunch), but is no match for the image quality of a DSLR. But hey, at least it's "real" this time! ;-)

2. So if it's really a webcam, how come you don't show streaming video?
While it's not too difficult to let a few of your friends "directly" view your webcam, that doesn't scale ... and bazillions of people came by to look at my christmas lights. Scalability is a challenge, and I haven't figured out a good way to do this "right" and be able to handle a heavy load. Drop me a note if you know how to rebroadcast an MPEG4 video stream from a Dlink DCS-6620G webcam to a Linux/Apache web server. Right now, it is FTP'ing JPEG's every couple of seconds and then meta refresh's the web page for the user to the next image every 5 seconds. So hey, that's not too bad, and a back-of-an-envelope calculation indicates that this might be able to support thousands of viewers before the 100 MBit/second connection saturated ... although the Apache web server would probably croak before then. BTW, If you think Frankenstein looks funny being inflated/deflated in stop-action, it's frickin' hilareous watching it in video as I can do on my local LAN. Yea, I sure wish I could do this for everyone.

3. When I turn a light on & off (or clobber Frankenstein), it doesn't happen right away or not at all?
In the real-world, there are latencies. When you press that ON/OFF button on my web page, a request is made from the web server in Dallas, Texas to the Linux box in my house in Colorado which then uses a serially attached CM17A Firecracker wireless transmitter to send the appropriate X10 signal using the nice Flipit program from Matt Armstrong. X10 isn't designed for high-speed applications, so in a best-case scenerio, this adds up to a 1.6 second delay - yea, I tested it. Then, the webcam has to shoot the changed picture, upload it to the image server (a seperate machine also in Dallas), and then you have to see the final result in the next screen refresh. For the technies, the ping times from Colorado to Dallas is 32 milli-seconds and the typical image size is about 50KBytes and I paid the extra $10 a month for the higher speed Comcast residential service which has an uplink speed of 768Kbits/second. All of this can take anywhere from 1-5 seconds more when things are operating normally ... which is actually the vast majority of the time. Also keep in mind that during that interval, someone may command the opposite action. Finally, X10 signals don't always go thru - stuff happens in the real-world.

4. There is no way your lights are being changed a bazillion times a day!
You are RIGHT. X10 is more typically used to turn your lights on at dusk, and off at dawn ... so (as alluded above) it is relatively slow for this intense application. The Web server rate-limits requests and if more than one request comes in during that time period (I've tested anywhere from 1-5 seconds), only one is actually "acted upon" and the others are dropped with a note back to the user to try again. BTW, this rate-limiting was also implemented in the simulation because ... well, that's how things actually work in the real world! Per entry #74 in the Halloween Blog, requests were averaging one every 3 seconds on October 19th. I suspect this will increase as it gets closer to Halloween. When I "manually" tested the X10 control code, it actually changed the lights 90%+ of the time ... but when the requests come in hot-n-heavy, my guess is that some of those aren't going through - there is no logging on the X10 side and it's a one-way protocal, so I don't know ... but I can tell you the lights blink a lot! Drop me a note if you know of a powerline control technology that has milli-second response time, uses a two way protocal, and has 99.99% reliability ... I'd love to implement it!

5. Is it easier to do the simulation or do it for real?
While the simulation took a bit of coding, once it's done, it's done. So in some respects, it was easier in that real-world aspects don't come into play. I've had problems with the wireless signal dropping out, futz on the webcam lens, general weather issues, inability of the webcam to optimize exposure & focus, etc. I am fortunate enough to have great neighbors who don't mind the lights really blinking this year. Overall, I'm pleased with how well the whole setup has held togather, but don't underestimate the challenges of the analog real world.

6. What's this about a campaign to "kill Frankenstein?"
The DIGG story used that term - maybe they didn't realize that Frankenstein already died ... and even if you "kill" him again (by keeping him deflated), one bolt of lightening will bring him back to life anyway. And just for grins, I brought 'ol Franky back for Christmas. He'll need a brain, but I'll pass on one from that Einstein who said to "really think hard about it" - not sure how many brain cells he has left after all that hard thinking ... ;-)

7. OK Alek, I gotta know, is it really real this time?
It's real ... but HEY, I would be skeptical of anything I say! ;-) A hint/clue is that in previous years, I only showed the holiday lights at night ... darkness is your friend when it comes to image trickery. This year, I turn the webcam on when there is still light outside, which is MUCH harder to simulate. Another hint/clue is in the real world, leaves and trees move, plus with thousand of lights, there's an occasional light strand than blinks out - didn't happen in the virtual world. Finally, look at the time-lapse halloween movies and christmas movies - that would be a LOT of work to simulate!

Check out what others are saying and chime in with your two cents at the halloween blog or the christmas blog about the christmas lights extravagnza ;-)

P.S. As mentioned, Halloween is a warm-up for Christmas - not only will there be a lot more lights, but come back after Thanksgiving to see me take the technology up a notch!

Update: Halloween had one webcam - Christmas has three ... holy outa-control ChristmasCams Batman! ;-)