The resolution of surveillance drones just got a whole lot better. In a recent episode of NOVA (see link below), details of the ARGUS 1.8-gigapixel imager were revealed. My initial thoughts of the system are:
1. Sure the imager is impressive, but the applications of the imager are even more impressive.
2. Details of the imager were described at a high level, as expected, but I did notice in the playback that the program was using Object Video for video analytics. Having personally dealt with some of their early software, I can only imagine the capabilities of this system, both good and bad. Setting up rules for motion and object detection are hard enough with a fixed camera. Making those rules adapt to changes in altitude, speed, object size, and lighting ...wow...now that's a challenge. Kudos to all the engineers working on that one.
3. Based on the modular pod shown, it appears this sensor is adaptable to a whole host of aerial platforms. The ideal platform for a rig like this, in my mind, would not be the helicopter, as shown in the video, but a stable
low earth orbit superpressure platform specifically engineered for long mission duration. With 100+ day capabilities, a low earth orbit platform carrying Argus is the first step in continuous deep-recording wide-area surveillance. The ability to rewind EVERYTHING that happened days, or even weeks, ago and zoom in ANY area within a 15 mile diameter (or more) will be more than helpful for future defense and law enforcement use. Although some will fear yet another new Eye In The Sky, I'm a fan of the project and will be posting updates on the technology as they are released. So far, it looks like a winning solution.
LINK:
http://youtu.be/QGxNyaXfJsA
Troy Brown Designs
Sunday, February 10, 2013
Wednesday, October 20, 2010
APPLE BONJOUR 214.3.2 PORT TO Uclinux 2.4.29 for Coldfire m5272
If you read this, and find it useful or not, please leave a comment below. Thank you.
I don't usually post something non surveillance related, but I had to do the steps below and thought it was too painstaking to not share with the world. So here goes my post on how to port Apple's Bonjour service to uClinux. I just happened to be using a Coldfire 5272 processor, but I'm sure this is similar for other processors using uClinux:
Thanks to Rob Brown for his post on this subject back in 2007. This includes
some of his instructions mixed with my own instructions and experiences to
address the newer version of Apple's BONJOUR.
Step 1. Download the Bonjour for Posix package from the Apple site. Make sure
the Bonjour version matches 214.3.2. If the latest version is newer than
214.3.2, goto the archives and get the 214.3.2 version. If you'd rather port the
newer version than the steps below may not cover everything that is needed.
Step 2. Create an empty "mDNSResponder" directory and place that directory in
the same place as all the other Linux applications for your device. In my case
that directory was USR\SRC\C\.
Step 3. Copy only the following files from the Apple package (most are in the
POSIX source directory) into the empty mDNSResponder directory:
makefile (from template below)
uDNS.h
uDNS.c
Responder.c
mDNSUNP.h
mDNSUNP.c
mDNSPosix.h
mDNSPosix.c
mDNSEmbeddedAPI.h
mDNSDebug.h
mDNSDebug.c
mDNS.c
GenLinkedList.h
GenLinkedList.c
DNSDigest.c
DNSCommon.h
DNSCommon.c
dns_sd.h
PlatformCommon.c
PlatformCommon.h
Step 4. Copy the makefile template from below, then modify it (as well as any
parent makefiles) to accomadate your particular device and uclinux structure. As
a tip, take the other makefiles for your other device applications and look at
how they are created. You will likely have to change your paths for the OBJSDIR,
INCLUDEDIR, SCRIPTDIR, etc.
Step 5. Once you have your 'make' building without issues, and your image file
running on your device, you should be able to call 'mDNSResponder'from your
linux OS.
Step 6. Usage: From the linux command prompt on your device, call mDNSResponder.
Use the flags to customize the way that your device will be displayed on the
Bonjour client app or IE plugin. See example below:
Example:
mDNSResponder -n MyDEvice -t _http._tcp. -p 80 &
I included the line above in my linux /etc/RC file. This allows bonjour to begin
at startup and is called with the following flags.
-n = The name that will be displayed in the Bonjour client app or IE plugin
-t = This is the 'type' that Bonjour uses. This is important because the Bonjour
IE plugin only sees devices with the '_http._tcp.' type. Most printers use this
type. If you want your device to be seen with the IE plugin, use this type...not
the default type that mDNSResponder starts with.
-p = This is the port that Bonjour binds to. I did a bind to port 80 to allow me
to click on the name in the IE Plugin and pull up the configuration webpage on
my device. My device runs BOA webserver on port 80, so this allows me to
configure my device's IP without having to know what the IP is initially.
& = If you don't know linux, you need to add the '&' to make the process run in
the background. I tried using the flag to make mDNSResponder run as a deamon,
but it failed every time within my uclinux build, so this works well enough for
my application.
Usage: I start the IE Bonjour plugin ; power up my device and it appears as
'MyDevice' in the Bonjour window of IE. I then click on it to instantly take me
to the device's configuration page. I can then set the IP, view the IP, or
configure my device in whatever way I want. This is the end goal! Enjoy!
Hope this helps someone. Feel free to post questions and comments.
Cut and paste the text below to generate the makefile that goes into the
mDNSResponder folder above.
###########################################################
# makefile writen to produce mDNSResponder app for uClinux
OBJSDIR = ../../../build/user_obj
INCLUDEDIR = ../../include
SCRIPTDIR = ../../scripts
EXEC = mDNSResponder
OBJS = $(OBJSDIR)/$(EXEC)/mDNSPosix.o $(OBJSDIR)/$(EXEC)/GenLinkedList.o
$(OBJSDIR)/$(EXEC)/mDNSUNP.o
OBJS += $(OBJSDIR)/$(EXEC)/mDNS.o $(OBJSDIR)/$(EXEC)/DNSCommon.o
$(OBJSDIR)/$(EXEC)/mDNSDebug.o $(OBJSDIR)/$(EXEC)/uDNS.o
OBJS += $(OBJSDIR)/$(EXEC)/DNSDigest.o $(OBJSDIR)/$(EXEC)/Responder.o
$(OBJSDIR)/$(EXEC)/PlatformCommon.o
CFILES = mDNSPosix.c GenLinkedList.c mDNSUNP.c mDNS.c DNSCommon.c mDNSDebug.c
uDNS.c DNSDigest.c Responder.c PlatformCommon.c
OBJSCALL = $(OBJS)
CFLAGS_OS = -DNOT_HAVE_SA_LEN -DUSES_NETLINK -DHAVE_LINUX -DTARGET_OS_LINUX
CFLAGS += -DPID_FILE=\"/var/run/mdnsd.pid\"
-DMDNS_UDS_SERVERPATH=\"/var/run/mdnsd\"
CFLAGS += -DNOT_HAVE_SA_LEN -DUSES_NETLINK -DHAVE_LINUX -DNOT_HAVE_DAEMON
CFLAGS += -Wall
CFLAGS += -I$(INCLUDEDIR)
$(OBJSDIR)/$(EXEC)/%.o : %.c
$(SCRIPTDIR)/mkdirs $(OBJSDIR)/$(EXEC)/$(CFILES)
$(CC) -c $(CFLAGS) $< -o $@
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $(OBJSDIR)/$(EXEC)/$@ $(OBJS) $(LDLIBS)
romfs:
$(ROMFSINST) $(OBJSDIR)/$(EXEC)/$(EXEC) /bin/$(EXEC)
clean:
-rm -f $(OBJSDIR)/$(EXEC)/$(EXEC) $(OBJSDIR)/$(EXEC)/*.elf
$(OBJSDIR)/$(EXEC)/*.gdb $(OBJSDIR)/$(EXEC)/*.o
Labels:
APPLE BONJOUR,
Bonjour Service,
Coldfire,
M5272,
Port to uClinux,
Uclinux
Friday, November 20, 2009
Why I hate LUX ratings...selecting a good night vision camera
If you read this, and find it useful or not, please leave a comment below. Thank you.
In the mounds of junk out there in the surveillance world, it seem there is an over-hyped specification that many use to choose their next security camera. I'm talking LUX. Now if you're reading this you've probably already seen those cameras claims: "Low Lux", "Zero Lux", "0.0001 Lux!", and so on. Quote me here people..."Lux means nothing." Sure, by definition the lux rating of a camera should give you an idea of how well it performs in low light. The problem with this is that each camera manufacturer can cheat in a couple of areas to inflate their low light performance specs, and get the desired marketing spin they are after.
Area 1 - "Usable Video"
The term "usable video" is often used to determine at exactly what point a video image is deemed "usable" by a surveillance footage reviewer. As one could imagine, this is very subjective. Furthermore, the industry is completely unregulated, and does not force manufacturers to test in identical test setups. Many manufacturers simply buy a CCTV chart and pick a spot to look at. They point their camera at that spot, dim the lights to the desired lux rating, and determine if the video they are viewing is deemed "usable". You can only imagine the conversation in the darkroom....
Tom: "Can you see that outline of the boys face on the chart Bob?"
Bob: "Um...ya..a little."
Tom: "Well, then ok, that's usable, great lux rating!"
You may think I'm kidding, but half the camera manufacturers out there don't even check the lux rating, they simply import ccd imagers and use the specs that came with the imager. Others take those imager specs, then count up the number of IR led's they're going to add to it, multiply by the lumens rating of each LED, and develop an algorithm that results in some bogus lux rating of "0.0032 Lux!". Better labs will run their video through a waveform analyzer, point their camera at a particular resolution chart, then ensure the waveform meets certain voltage criteria. Again, though, this criteria is established by the manufacturer. This leads me to cheat area #2.
Area 2 - Lux Meters:
The funny thing about these claims of "0.00002 Lux!" is that few light meters in the price range of most labs even display this many digits. I once sat across the table of the largest camera manufacturer in North America and listened to them try to impress me with the specs of their new camera. Don't get me wrong, they make great cameras, but when asked what I thought about the camera's impressive lux ratings of "0.00002", I responded, "I'm more impressed that you have a meter that measures that many digits." They didn't get it, but that bogus lux rating still made it to their marketing material.
So the question you might have now is: How do I find a camera with great night vision? Here are my recommended steps:
1) Know your CCDs - Pick a Sony Ex-View. These CCDs are excellent in my experience. Look it up yourself, these chips are so sensitive that they have been known to detect cosmic rays. (Seriously - the rays cause dead pixels over time). A VERY good chip.
2)LEDs are usually a bad sign - Shy away from cameras with lots of IR LEDs. LEDs are like a short guy with a monster truck...they're making up for something. Nowadays it is harder to find an outdoor camera that doesn't offer some kind of IR option....and don't get me wrong, IR has its place (like shooting 200ft down a runway), but If the camera is littered with LEDs and claims 100ft range, check the CCD. If it is a HAD or SUPER HAD (not ex-view), then you're going to see little to nothing past the range of those LED's and overall be unhappy with the selection. The Ex-View will show you , what I like to call, "Desert Storm Night Vision". Remember those green videos of night vision from Desert Storm...ya, that's pretty much what ex-view will show you at night. You can see your driveway, your car, your neighbors house across the road, the grass in the distance....very good cam.
3)DSPs Matter - Once you've picked the right chipset, be sure the camera has a solid DSP supporting it. The better DSPs have low light enhance modes. (The Bosch Dinion 0495 for example has multiple light enhancing modes) Check the specs for additional features that add to the low light experience. Anything without an on-screen menu of some type should not be considered.
4) Light touches the lens - Pick an aspherical lens that is made for IR light. Otherwise, you'll be putting cheap tires on your Ferarri of a camera.
If you follow these guidelines, there is no question you will be amazed by the night time performance you'll experience. And if you're not happy...well there's always thermal.
Speaking of...if you plan on using analytics with your night system, you may want to carefully evaluate the effects of distant lights that the camera may see. A headlight from a car a mile away can cause your super sensitive camera to start triggering phantom movement well over the threshold of your analytic boundary rules. I've experienced this first hand, and the project would have been much better had the original planners chosen thermal instead of excellent night IR vision. The night vision was so sensitive, it was picking up distant headlight IR reflections that were not visible to the naked eye and causing the analytic boundaries to trigger falsely.
Last word: Lux ratings are bogus...the only place I would use them to compare anything is when comparing camera models from the same manufacturer. Lux ratings across manufacturers are much too subjective to be used otherwise.
- Security Insider
Friday, January 2, 2009
Beating traffic cams...not so easy.
Well, let's turn this into a new post instead of a comment.
Intercooler said...
Security Insider. You posted an entry on boing boing, indicating that IR LED’s would not interfere with CCTV cameras, like Pelco, Panasonic, etc…
I’m curious if you could state the effectiveness IR LED’s aimed at photo radar cameras would have. Both day and night conditions.
Thank you.
November 11, 2008 3:50 PM
Security.Insider said...
It depends on how the light hits the camera, the camera type, and the timing. The camera should automatically adjust to the light, if it has wide dynamic range, and most radar cameras do. The timing of most WDR's is slow however, so the IR light could disrupt the image at night if it was a quick pulse. During the day, you will see little effect, if any by shining any light into a camera. Most are setup to withstand direct hits from sunshine, and it doesn't get much brighter than that. I know where you're heading with this though. To beat a traffic cam, a speeding cam, at night, you'd have to trick the cameras own iris. If the camera is the kind that flash when you're speeding then you're not going to overpower them with another light unless it was a laser or spotlight, and good luck hitting a camera lens with a laser (the angle has to also be right to washout the entire image, we've done this in the lab)...all while speeding past. Also, most video surveillance systems have alarms setup to detect this. It ,technically, is called a video occlusion filter. The same type of filter that detects a camera knocked out of focus or other dramatic scene changes. Also, some cameras will have light blanking, where they will make a negative out of bright lights. So bright becomes black spots and dark becomes white spots. Most license capture systems utilize blanking, so you're not going to wash it out. Many video capture systems use thermal as well. If it is thermal, then IR will not effect the camera at all. Most, if not all, incorporate a ccd along with the thermal, so they'll catch the image one way or another, even if you use simple methods to beat the thermal. Check out the links below for more info on one of the more popular systems out there. (http://www.extremecctv.com/products_video.php?vid=9) In the meantime, realize the speeding cameras are ultimately there for everyones safety and we all share the roads. Keep the racing on the 1/4 mile, and less kids will die. Also remember, you never know when this might happen when road racing.
http://www.youtube.com/watch?v=pdxmAq3TOjI
-Security Insider
Intercooler said...
Security Insider. You posted an entry on boing boing, indicating that IR LED’s would not interfere with CCTV cameras, like Pelco, Panasonic, etc…
I’m curious if you could state the effectiveness IR LED’s aimed at photo radar cameras would have. Both day and night conditions.
Thank you.
November 11, 2008 3:50 PM
Security.Insider said...
It depends on how the light hits the camera, the camera type, and the timing. The camera should automatically adjust to the light, if it has wide dynamic range, and most radar cameras do. The timing of most WDR's is slow however, so the IR light could disrupt the image at night if it was a quick pulse. During the day, you will see little effect, if any by shining any light into a camera. Most are setup to withstand direct hits from sunshine, and it doesn't get much brighter than that. I know where you're heading with this though. To beat a traffic cam, a speeding cam, at night, you'd have to trick the cameras own iris. If the camera is the kind that flash when you're speeding then you're not going to overpower them with another light unless it was a laser or spotlight, and good luck hitting a camera lens with a laser (the angle has to also be right to washout the entire image, we've done this in the lab)...all while speeding past. Also, most video surveillance systems have alarms setup to detect this. It ,technically, is called a video occlusion filter. The same type of filter that detects a camera knocked out of focus or other dramatic scene changes. Also, some cameras will have light blanking, where they will make a negative out of bright lights. So bright becomes black spots and dark becomes white spots. Most license capture systems utilize blanking, so you're not going to wash it out. Many video capture systems use thermal as well. If it is thermal, then IR will not effect the camera at all. Most, if not all, incorporate a ccd along with the thermal, so they'll catch the image one way or another, even if you use simple methods to beat the thermal. Check out the links below for more info on one of the more popular systems out there. (http://www.extremecctv.com/products_video.php?vid=9) In the meantime, realize the speeding cameras are ultimately there for everyones safety and we all share the roads. Keep the racing on the 1/4 mile, and less kids will die. Also remember, you never know when this might happen when road racing.
http://www.youtube.com/watch?v=pdxmAq3TOjI
-Security Insider
Tuesday, October 14, 2008
Let's focus on focus.
Many installers don't realize how important it is to properly focus a camera. A high resolution Pelco 540TVL camera can instantly become a Costco 380TVL camera by barely bumping the focus ring out of place when closing the housing. Here are a few tips to help you properly focus your surveillance camera:
1) Only adjust focus when using a "local" monitor, meaning have a small LCD plugged directly into the camera. Buy a 5$ BNC Male-to-RCA Female adapter at Radio Shack and turn your kids portable DVD player into a local monitor by plugging the aux TV jack into the back of the camera, using the adapter.
2) Don't rely on someone else telling you that a camera is in focus from the console. No shouting or radios. It just won't work out well, and becomes rather frustrating.
3) Steer clear of using a computer and IP connection as a monitor, as the focus adjustments will be delayed and you risk losing resolution by being slightly out of focus.
4) Focus your cameras at night. If you buy a "true" day/night camera (meaning one that has a mechanical IR cut filter), then the night image will be slightly out of focus if you previously dialed in the focus during the day. This is called "focus shift". The effects of focus shift can be reduced by purchasing a lens made specifically for IR. Aspherical "IR" lenses are worth the extra money. Check out Tamron and Ikegami lenses for some good examples. Also, focusing at night allows you to avoid the glare of the sun on your monitor, if you don't have one of those nifty viewfinders that cup around your eye. I remember being up on a 30ft lift along the runway fence of a large international airport. The sun was beating down so bright that the poor LCD was barely viewable. We ended up having to go back and re-focus a few of the cameras at night simply because we lost some resolution due to the sun.
5)Adjust your BACK FOCUS ring first. Think of it as a course focus adjustment. Start by setting the ring to the middle position. Next adjust your zoom lens (If you're using an adjustable zoom lens), to about where it will be to capture the scene you want. Lock down the zoom ring. Now adjust the focus ring of the lens. Here is the tricky part: If you can focus your scene without turning the focus ring to the maximum one way or another, then the back focus is about right. If you have to turn the focus ring to one side all the way, just to focus the scene, then return to the backfocus and adjust slightly to compensate. The whole point it to adjust the back focus so it allows the lens focus to be near the middle position. All the lenses on your camera were designed to work best in their middle position. An extreme one way or another will cost you resolution. Believe me, after testing camera after camera on a waveform analyzer, I can tell you that you will lose resolution if your focus ring is maxed out one way or another. When you're done, the back focus should be slightly to one side or another, and the focus ring should also be adjusted slightly one side or another from center. As long as neither ring is extended to its max in either direction, you will be properly focused.
6) Don't over tighten your ring screws. This is especially a problem on dome lenses. If you tighten them down too much, it warps the lens housing ever so slightly and, again, you lose focus and resolution. Keep an eye on the monitor as you tighten the focus ring screws down. Make sure you don't see any focus shift.
7) Finally, and most importantly, pick a good focus target. Look for something in your scene that has as much detail as possible. If you're pointed at a brick wall, concentrate on the lines between the bricks. If you're looking at a field, concentrate on the small blades of grass, or small twigs. Don't pick large objects with little detail, like clouds or water. Don't forget to keep the monitor plugged in until you absolutely have to close the housing and unplug it. This allows you to make sure the camera stays in focus while it is being mounted back in the housing, or while the outer dome is being screwed back on.
Well I hope this helps you next time you're installing a cam. If anyone thinks of any more focus tips, feel free to comment below.
1) Only adjust focus when using a "local" monitor, meaning have a small LCD plugged directly into the camera. Buy a 5$ BNC Male-to-RCA Female adapter at Radio Shack and turn your kids portable DVD player into a local monitor by plugging the aux TV jack into the back of the camera, using the adapter.
2) Don't rely on someone else telling you that a camera is in focus from the console. No shouting or radios. It just won't work out well, and becomes rather frustrating.
3) Steer clear of using a computer and IP connection as a monitor, as the focus adjustments will be delayed and you risk losing resolution by being slightly out of focus.
4) Focus your cameras at night. If you buy a "true" day/night camera (meaning one that has a mechanical IR cut filter), then the night image will be slightly out of focus if you previously dialed in the focus during the day. This is called "focus shift". The effects of focus shift can be reduced by purchasing a lens made specifically for IR. Aspherical "IR" lenses are worth the extra money. Check out Tamron and Ikegami lenses for some good examples. Also, focusing at night allows you to avoid the glare of the sun on your monitor, if you don't have one of those nifty viewfinders that cup around your eye. I remember being up on a 30ft lift along the runway fence of a large international airport. The sun was beating down so bright that the poor LCD was barely viewable. We ended up having to go back and re-focus a few of the cameras at night simply because we lost some resolution due to the sun.
5)Adjust your BACK FOCUS ring first. Think of it as a course focus adjustment. Start by setting the ring to the middle position. Next adjust your zoom lens (If you're using an adjustable zoom lens), to about where it will be to capture the scene you want. Lock down the zoom ring. Now adjust the focus ring of the lens. Here is the tricky part: If you can focus your scene without turning the focus ring to the maximum one way or another, then the back focus is about right. If you have to turn the focus ring to one side all the way, just to focus the scene, then return to the backfocus and adjust slightly to compensate. The whole point it to adjust the back focus so it allows the lens focus to be near the middle position. All the lenses on your camera were designed to work best in their middle position. An extreme one way or another will cost you resolution. Believe me, after testing camera after camera on a waveform analyzer, I can tell you that you will lose resolution if your focus ring is maxed out one way or another. When you're done, the back focus should be slightly to one side or another, and the focus ring should also be adjusted slightly one side or another from center. As long as neither ring is extended to its max in either direction, you will be properly focused.
6) Don't over tighten your ring screws. This is especially a problem on dome lenses. If you tighten them down too much, it warps the lens housing ever so slightly and, again, you lose focus and resolution. Keep an eye on the monitor as you tighten the focus ring screws down. Make sure you don't see any focus shift.
7) Finally, and most importantly, pick a good focus target. Look for something in your scene that has as much detail as possible. If you're pointed at a brick wall, concentrate on the lines between the bricks. If you're looking at a field, concentrate on the small blades of grass, or small twigs. Don't pick large objects with little detail, like clouds or water. Don't forget to keep the monitor plugged in until you absolutely have to close the housing and unplug it. This allows you to make sure the camera stays in focus while it is being mounted back in the housing, or while the outer dome is being screwed back on.
Well I hope this helps you next time you're installing a cam. If anyone thinks of any more focus tips, feel free to comment below.
Sunday, February 17, 2008
City-wide surveillance using ONLY one camera
While attending the ISC West security show in Las Vegas this past year, I noticed a new IP Camera vendor that was much different than the hundreds of others at the show. Their name is Avigilon. Their product is a new megapixel IP camera that weighs in with a monster 16MP 30 Frame per second CCD. The application is wide area surveillance. The possibilities are endless. Up until the introduction of this product, the closest competition would be that of either IQ Invision's 7MP CCTV camera, or perhaps the Arecont 4MP IP camera. This one is a complete game changer. Let's just imagine the possibilities for a moment. One 16 megapixel cctv camera, one football field, and you have instant replays at 30 FPS of the entire arena. So, yep, he caught the ball, oh and that guy up in the nosebleed section, ya, he spilled mustard on his shirt too. Yes, they can zoom in on the crowd now you say. Yes they can, but not with one camera that is also recording EVERYTHING else outside of the zoomed area. That's the beauty of megapixel IP cameras. See the video for a better description here: http://avigilon.com/presentations/overview.html and view the camera details here: http://avigilon.com
Ok, so let's take it one step further. Add one part 16MP security camera, one part 27x PTZ (Pan-Tilt-Zoom) cage, mix with a commercial micro satellite and have yourself one instant corporate spy satellite to record all of the city of, oh I dunno, say Chicago, in real time. Reminds me the movie DeJa Vu, just without all the time travel drama. Sure the resolution would degrade with zoom, but this setup would still rival many of our own older military spy satellites. Soon, I predict an age of corporate spy satellites will emerge. And you thought that Kroger card was intruding your privacy? Just wait until they send you satellite footage of that gallon of milk you left in the cart as a courtesy notice. -TB
Ok, so let's take it one step further. Add one part 16MP security camera, one part 27x PTZ (Pan-Tilt-Zoom) cage, mix with a commercial micro satellite and have yourself one instant corporate spy satellite to record all of the city of, oh I dunno, say Chicago, in real time. Reminds me the movie DeJa Vu, just without all the time travel drama. Sure the resolution would degrade with zoom, but this setup would still rival many of our own older military spy satellites. Soon, I predict an age of corporate spy satellites will emerge. And you thought that Kroger card was intruding your privacy? Just wait until they send you satellite footage of that gallon of milk you left in the cart as a courtesy notice. -TB
Sunday, February 10, 2008
Subscribe to:
Posts (Atom)