AvBrand Exploring Technology
Blog Archives - 2010
August 2010
6 entries
July 2010 1 entry
June 2010 6 entries
May 2010 5 entries
April 2010 2 entries
March 2010 4 entries
February 2010 1 entry
January 2010 5 entries
July 2010 1 entry
June 2010 6 entries
May 2010 5 entries
April 2010 2 entries
March 2010 4 entries
February 2010 1 entry
January 2010 5 entries
2009
2008
2007
"It Just Works"?
8:38 AM, August 16th, 2010
If you know me at all, you'll know that I'm... let's just say, not a huge fan of Apple. I won't go into the details here, but let me share a little bit of an experience with you.
I was visiting my mother last night and wanted to show her photos I had taken that day. I removed my SD card from my camera and was surprised to see that her new 27" iMac had an SD card slot. I inserted the card and it showed up on the desktop, just fine. Wonderful!
I opened the card and navigated to the first photo, and double-clicked it. It appeared in Quick View just fine. Now, I wanted to show the photos, so I pressed left, then down, tried clicking, anything to get to the next photo, but nothing worked.
I closed Quick View and right-clicked, looking at my options in Open With. "ACDSEE for Pentax". Ah, perfect, I thought, I use ACDSEE at home. But no, this version of ACDSEE was some kind of crappy editing tool and not a photo viewer. So I quit that.
Maybe iPhoto will do it? I launched iPhoto and clicked on my SD Card on the left side. All my photos appeared as thumbnails. I double-clicked a thumbnail but it would not open. The only option I had was to "Import to iPhoto" and I didn't want to do that, I just wanted to view the damn photos!
I quit out of iPhoto and right-clicked again. One of the options was "Quick Look". So, Quick Look came up and lo-and-behold, the up and down keys would now indeed flip through the photos. Success! I then clicked the little "Full Screen" button in Quick Look to make the photo fill the screen, and that worked fine. I pressed "down" again to go to the next photo... and the computer just "bong"ed at me. Yes, that's right, when you're in full-screen mode, you can't switch to the next photo. Also, in either mode, you can't rotate the photo to the correct orientation, so we all had to turn our heads to look at portrait photos.
I never thought I'd find myself actually pining for the crappy "Windows Photo Viewer" that comes in Windows 7 (and a similar version in XP), but it can rotate, do slideshows, zoom, and most importantly, it can go to the next photo!!
Add or view comments
I was visiting my mother last night and wanted to show her photos I had taken that day. I removed my SD card from my camera and was surprised to see that her new 27" iMac had an SD card slot. I inserted the card and it showed up on the desktop, just fine. Wonderful!
I opened the card and navigated to the first photo, and double-clicked it. It appeared in Quick View just fine. Now, I wanted to show the photos, so I pressed left, then down, tried clicking, anything to get to the next photo, but nothing worked.
I closed Quick View and right-clicked, looking at my options in Open With. "ACDSEE for Pentax". Ah, perfect, I thought, I use ACDSEE at home. But no, this version of ACDSEE was some kind of crappy editing tool and not a photo viewer. So I quit that.
Maybe iPhoto will do it? I launched iPhoto and clicked on my SD Card on the left side. All my photos appeared as thumbnails. I double-clicked a thumbnail but it would not open. The only option I had was to "Import to iPhoto" and I didn't want to do that, I just wanted to view the damn photos!
I quit out of iPhoto and right-clicked again. One of the options was "Quick Look". So, Quick Look came up and lo-and-behold, the up and down keys would now indeed flip through the photos. Success! I then clicked the little "Full Screen" button in Quick Look to make the photo fill the screen, and that worked fine. I pressed "down" again to go to the next photo... and the computer just "bong"ed at me. Yes, that's right, when you're in full-screen mode, you can't switch to the next photo. Also, in either mode, you can't rotate the photo to the correct orientation, so we all had to turn our heads to look at portrait photos.
I never thought I'd find myself actually pining for the crappy "Windows Photo Viewer" that comes in Windows 7 (and a similar version in XP), but it can rotate, do slideshows, zoom, and most importantly, it can go to the next photo!!
Add or view comments
Why you should never buy the Extended Warranty
5:27 PM, August 11th, 2010
It seems these days, you can't escape being offered an "Extended Warranty" or "Service Plan" when you buy something. Computers, electronics, even home appliances, everyone wants to shake you down for an extra 10-20% of the purchase price. Here's why you should say NO!
Extended Warranties are a bad deal all around. With a little bit of math, I can prove to you that they're not needed. Take this example:
Over the course of several months, you buy 10 devices at an average price of $100. For each device, you choose to pay for the $15 extended warranty. So now you've spent $1,000 on devices, and $150 on warranties.
A year later, one of the devices fails. It's now past the original manufacturer warranty. If you're lucky, the extended warranty you bought will cover the failure and repair the device. "Wow," you say, "That $15 warranty just saved me a hundred bucks!"
Except it didn't, not really.
I hope you choose never to buy another extended warranty again!
Add or view comments
- Most products already come with a one-year warranty from the manufacturer.
Modern electronics are usually out of date after a year, so even in the unlikely event that it was to break after this initial period, it probably wouldn't be too horrible to have to buy a new one.
- You can get the same benefit with a Gold Card
If you use a "gold" credit card (or better), they usually have an automatic purchase protection plan that doubles the original manufacturer warranty. You can get one of these cards from your bank, usually with no fee. Check your cardholder agreement.
- The Extended Warranty usually doesn't even start until after the manufacturer's one has expired
This means if the device breaks within the first year, you have to go to the manufacturer, just like you would have had to without the extended warranty.
- The Extended Warranty agreement is full of exclusions and odd rules
You usually don't get the chance to go over the fine print when the cashier asks you to sign up for the warranty. There's a good reason for that: The agreements usually contain big lists of excuses and exclusions, allowing the store to deny coverage for most cases of damage.
- The salesperson makes a commission from the warranty
He may seem like a nice guy, looking out for your interests, but he makes a fat commission off of selling you that warranty. That's why they push it so hard.
Extended Warranties are a bad deal all around. With a little bit of math, I can prove to you that they're not needed. Take this example:
Over the course of several months, you buy 10 devices at an average price of $100. For each device, you choose to pay for the $15 extended warranty. So now you've spent $1,000 on devices, and $150 on warranties.
A year later, one of the devices fails. It's now past the original manufacturer warranty. If you're lucky, the extended warranty you bought will cover the failure and repair the device. "Wow," you say, "That $15 warranty just saved me a hundred bucks!"
Except it didn't, not really.
- You still spent a combined $135 on other warranties you didn't use
- If you hadn't bought the warranties at all, you'd have an extra $150 in your pocket. Now, you use $100 to replace the failed device, leaving you $50 in the black!
- Chances are that the same device now costs less, or a newer, better one is available for the same price.
I hope you choose never to buy another extended warranty again!
Add or view comments
I'm up to something...
9:42 PM, August 8th, 2010
Using a Linksys Router to power on your Car PC
3:12 PM, August 5th, 2010
Probably one of the topics I get emails about the most is: How do I make the laptop in my car turn on when the car turns on?
I struggled with this problem when I first was designing my Car PC. There's a bunch of different ways to turn on a laptop: the power button, a USB keyboard's power button, and Wake-On-LAN packets.
The last option seemed like the right one for me. But how to send a Wake-On-Lan packet? I did some research, and it turns out that the absolute cheapest way to do it is via a Linksys router. I picked up a brand-new Linksys WRT54G from some guy on craigslist for $30, and loaded the DD-WRT firmware onto it.
Among other things, the DD-WRT firmware provides a place where you can specify "startup commands". These commands are executed by the router upon startup. I looked up the command to send Wake-On-Lan packets for my version of DD-WRT (it might be different for yours) and put this in there:
You have to replace the AA:BB:CC
D:EE:FF with your laptop's network card's actual MAC address, which you can get by typing "ipconfig /all" at the console.
Then, I wired a 12v power supply and rigged it to a line in my car that is only powered when the car is running. I also fashioned a little tiny 40 cm network cable. Now, when the car starts, it powers up the router, and about 8 seconds later after the router is done booting, it sends the WOL packet that wakes up the laptop.
Of all of the systems in my car, this one has been the most reliable. The router has never failed on me in 2 years.
Some people scoffed at the idea of having a big router in the car. Here are some answers to frequent questions and comments:
Add or view comments
I struggled with this problem when I first was designing my Car PC. There's a bunch of different ways to turn on a laptop: the power button, a USB keyboard's power button, and Wake-On-LAN packets.
- The power button is physical. In order to trigger it, you'd need to take the laptop apart (possibly destroying it) and wire into the button.
- The USB keyboard method might actually work: Many USB keyboards have a "power" button, which can be pressed to power on the device. However, this requires your laptop to provide a bit of power on the USB port even when it is off, so it doesn't work on most laptops.
- Wake-on-LAN packets are simple packets that can be sent to a laptop. The ethernet card is kept in a "sleep" state and when it sees a packet directed at it, it wakes up the whole computer.
The last option seemed like the right one for me. But how to send a Wake-On-Lan packet? I did some research, and it turns out that the absolute cheapest way to do it is via a Linksys router. I picked up a brand-new Linksys WRT54G from some guy on craigslist for $30, and loaded the DD-WRT firmware onto it.
Among other things, the DD-WRT firmware provides a place where you can specify "startup commands". These commands are executed by the router upon startup. I looked up the command to send Wake-On-Lan packets for my version of DD-WRT (it might be different for yours) and put this in there:
/usr/sbin/wol -i 192.168.1.255 AA:BB:CC:DD:EE:FF |
You have to replace the AA:BB:CC
D:EE:FF with your laptop's network card's actual MAC address, which you can get by typing "ipconfig /all" at the console.Then, I wired a 12v power supply and rigged it to a line in my car that is only powered when the car is running. I also fashioned a little tiny 40 cm network cable. Now, when the car starts, it powers up the router, and about 8 seconds later after the router is done booting, it sends the WOL packet that wakes up the laptop.
Of all of the systems in my car, this one has been the most reliable. The router has never failed on me in 2 years.
Some people scoffed at the idea of having a big router in the car. Here are some answers to frequent questions and comments:
- Surely you could use an arduino or some other chip to send the WOL packet?
Probably, but arduinos cost at least $30. It wouldn't be cheaper than the router.
- Yeah, but, it's a whole router for just that!
True. But, the more recent upgrades to my car have made it quite handy to have the router in there. It now serves as a network link to the NTSC-to-Network video capture device that handles the front and rear cameras. The wifi in the router is also used to share my Car PC's cellular internet connection, turning my car into a mobile hotspot.
Add or view comments
Why I don't make much of my software available
9:47 PM, August 3rd, 2010
Throughout my site, there's a ton of projects featuring custom software that I've written. Indeed, my home automation project comprises of at least 30 individual pieces of software that work together, and my Car PC is also a large and complicated software package.
So why don't I package up these programs and make them available? I get at least 5 requests a month from people who want to download them. But there's a few simple reasons why I don't do it.
Most of my software is hacked together and proprietary. Indeed, I usually throw together software when I need it quickly... coding it specifically for my needs and my hardware, with things like IP addresses, passwords, and port numbers hard-coded in the source code. As any good programmer will know, actually writing the software is maybe 10-20% of the work. The remaining 80% of the time is spent on adding configuration options, fixing bugs, ensuring compatibility with a wide variety of hardware and platforms, writing documentation, and dealing with support requests. Since my projects are really just a hobby for me, I don't have the time nor the inclination to spend that extra time making it work for everyone.
You should sell your software! That will pay for the time you spent making it work!
Selling a piece of software is a whole other ball game... now you have to REALLY make sure it works properly, provide support, produce new features, provide real and proper documentation, etc. Also most of my software serves a very niche market, so I doubt I'd have many sales.
If you're not gonna sell it, you should make it Open-Source!
Open-Source is a great idea and you will find that I have provided some of my software's source code (such as the LED Sign Control Software and my ALPHA sign communications library) for anyone to enjoy. However, I don't have the time to deal with the support requests and cries for help I'd get if I released my more complex software's source code, such as my Car PC software. I may one day choose to release it.
Then why is this site here?
I often get berated by people who believe that my showcasing of my accomplishments without providing a download is selfish. But really, these people are the ones who are being selfish and lazy -- they are expecting something for nothing.
My site exists as a showcase, a gallery, of my work. It is meant to inspire people, to have them take my ideas and expand on them, to make their own versions and make them better.
Most of the software I use, I wrote from scratch. I find it so much more rewarding to make something myself vs. grabbing a finished product from some website.
I hope you understand my motives a little bit better now. I am always willing to help out via email if you need to know how I did something or want to see a snippet of source code!
Add or view comments
So why don't I package up these programs and make them available? I get at least 5 requests a month from people who want to download them. But there's a few simple reasons why I don't do it.
Most of my software is hacked together and proprietary. Indeed, I usually throw together software when I need it quickly... coding it specifically for my needs and my hardware, with things like IP addresses, passwords, and port numbers hard-coded in the source code. As any good programmer will know, actually writing the software is maybe 10-20% of the work. The remaining 80% of the time is spent on adding configuration options, fixing bugs, ensuring compatibility with a wide variety of hardware and platforms, writing documentation, and dealing with support requests. Since my projects are really just a hobby for me, I don't have the time nor the inclination to spend that extra time making it work for everyone.
You should sell your software! That will pay for the time you spent making it work!
Selling a piece of software is a whole other ball game... now you have to REALLY make sure it works properly, provide support, produce new features, provide real and proper documentation, etc. Also most of my software serves a very niche market, so I doubt I'd have many sales.
If you're not gonna sell it, you should make it Open-Source!
Open-Source is a great idea and you will find that I have provided some of my software's source code (such as the LED Sign Control Software and my ALPHA sign communications library) for anyone to enjoy. However, I don't have the time to deal with the support requests and cries for help I'd get if I released my more complex software's source code, such as my Car PC software. I may one day choose to release it.
Then why is this site here?
I often get berated by people who believe that my showcasing of my accomplishments without providing a download is selfish. But really, these people are the ones who are being selfish and lazy -- they are expecting something for nothing.
My site exists as a showcase, a gallery, of my work. It is meant to inspire people, to have them take my ideas and expand on them, to make their own versions and make them better.
Most of the software I use, I wrote from scratch. I find it so much more rewarding to make something myself vs. grabbing a finished product from some website.
I hope you understand my motives a little bit better now. I am always willing to help out via email if you need to know how I did something or want to see a snippet of source code!
Add or view comments
Paypal's two-factor authentication has a big hole...
10:31 AM, August 2nd, 2010
A few years ago, PayPal started offering an option to their users. For $5, you could buy a "security token". The token shows a random 6-digit number and requires you to provide this number when you sign in to PayPal, along with your username and password.
The first iteration of this device looked like this:
The 6-digit code on the display changes every 30 seconds. It works on a very simple and brilliant concept: Basically, the device contains a simple quartz clock, no different from the one in a cheap wristwatch. It also contains a pseudo-random number generator and an ID code.
Every 30 seconds, the device generates a new random number, using its ID code as the seed value. On PayPal's servers, the same number is generated, since it knows both your ID, the time, and the algorithm. These are then matched when you try to log in.
The display stays blank until you press the button, but the button merely shows the current number -- it does not affect the timing of the random number generator.
What this means in simple terms is that, in order for someone to break into your PayPal account, they need:
Your username
Your password
The six-digit code from your Security Token
Since the code changes twice a minute, they'd need to either steal your token from you, or somehow convince you to give them the current code. Both of these are very difficult for someone to do without you noticing. So it's a pretty secure system.
Now, I guess people complained about the somewhat bulky token, because recently PayPal launched a new type of security token: the credit-card form factor. It looks like this:
It's truly as thin as a credit card, and has what looks like an e-paper screen for the number display. It's really quite a remarkable piece of technology. There's a button on the front. When you press this button (quite hard), the currently displayed code disappears, and a new code appears in its place.
But, there's a big hole in this security model.
Unlike the previous token, this one doesn't have a clock. The code doesn't change every 30 seconds. This takes away one of the big security features of the token-style device; simply, that you had to know the code within 30 seconds.
With the new card, the codes are valid indefinitely. If you happened to catch a glance at my card and memorized the code, that code will remain valid until I log in to my PayPal account with it or with a newer code.
So, for example, let's say you know my PayPal username and password. You already know one of my codes, because it is in the photo above, 463267. If I hadn't already used that code to log in to my PayPal account, you could go and log in right now -- or tomorrow, or next week. There's no time limit.
Having the card is still more secure than not having it at all. But it's important to understand that it is not as secure as the older type of security token.
Add or view comments
The first iteration of this device looked like this:
The 6-digit code on the display changes every 30 seconds. It works on a very simple and brilliant concept: Basically, the device contains a simple quartz clock, no different from the one in a cheap wristwatch. It also contains a pseudo-random number generator and an ID code.
Every 30 seconds, the device generates a new random number, using its ID code as the seed value. On PayPal's servers, the same number is generated, since it knows both your ID, the time, and the algorithm. These are then matched when you try to log in.
The display stays blank until you press the button, but the button merely shows the current number -- it does not affect the timing of the random number generator.
What this means in simple terms is that, in order for someone to break into your PayPal account, they need:
Since the code changes twice a minute, they'd need to either steal your token from you, or somehow convince you to give them the current code. Both of these are very difficult for someone to do without you noticing. So it's a pretty secure system.
Now, I guess people complained about the somewhat bulky token, because recently PayPal launched a new type of security token: the credit-card form factor. It looks like this:
It's truly as thin as a credit card, and has what looks like an e-paper screen for the number display. It's really quite a remarkable piece of technology. There's a button on the front. When you press this button (quite hard), the currently displayed code disappears, and a new code appears in its place.
But, there's a big hole in this security model.
Unlike the previous token, this one doesn't have a clock. The code doesn't change every 30 seconds. This takes away one of the big security features of the token-style device; simply, that you had to know the code within 30 seconds.
With the new card, the codes are valid indefinitely. If you happened to catch a glance at my card and memorized the code, that code will remain valid until I log in to my PayPal account with it or with a newer code.
So, for example, let's say you know my PayPal username and password. You already know one of my codes, because it is in the photo above, 463267. If I hadn't already used that code to log in to my PayPal account, you could go and log in right now -- or tomorrow, or next week. There's no time limit.
Having the card is still more secure than not having it at all. But it's important to understand that it is not as secure as the older type of security token.
Add or view comments
Visual Basic 6? Why?
5:08 PM, July 16th, 2010
I occasionally get flak for the fact that my applications are mostly written in Visual Basic 6, a programming language that came out in 1998 and has since been replaced by Visual Basic.NET.
But I still use it to this day, and I have some good reasons why:
Of course, it does have some limitations, which may be a dealbreaker for some people:
I do know C# and I use it every now and again, but I still find that VB6 provides the best time spent to results produced ratio for me.
Add or view comments
But I still use it to this day, and I have some good reasons why:
- It performs well. It's not as fast as a native C++ application, but it's probably about as fast as a C# application.
- I can create programs in it in the blink of an eye. I've been using it for so long and I know my way around it very well, and I can bang out a program in no time at all, with a full GUI.
- It's fully Active-X COM compliant. There are a million components and add-ons and plugins that are Active-X controls and interfaces, so that means it's real easy to use one of those.
- It can create Active-X COM DLLs too. These are usable in other languages including .NET.
- It doesn't require a massive runtime that is difficult to understand and easy to mix up, like .NET does. Sure, it still needs some DLLs, but they usually come with Windows or are rather small.
- It works fine on any version of Windows, including Windows 7 64-bit and Server, with no changes.
- Without too much pain, you can use pretty much any Windows API function, including stuff like keyboard hooks.
Of course, it does have some limitations, which may be a dealbreaker for some people:
- No 64-bit support. My apps run 32-bit, but of course they work fine on a 64-bit system.
- No real multithreading. This isn't really a huge problem for me either, as threading is a headache and a half.
- Fancy graphics and things like alpha transparencies and window subclassing aren't built in, like they are in .NET. So you need to go a bit further to get things like that working.
I do know C# and I use it every now and again, but I still find that VB6 provides the best time spent to results produced ratio for me.
Add or view comments
One of these is not like the others
12:22 PM, June 27th, 2010
Taiga meets Buddy
7:32 AM, June 23rd, 2010
Today I met a massive, huge, fluffy malamute named Buddy who was 135 lbs and had fur that was 10 inches long in places. I took a photo of Buddy next to Taiga.
Add or view comments
Add or view comments
Taiga's Water Education is coming along!
6:46 PM, June 20th, 2010
He's slowly getting less afraid of the water. WARNING: There's a loud yell near the end of the video.
And just today, there was a critical mass of huskies in the stream! Look! Three huskies! Taiga's on the left.
See the rest of this entry...
Add or view comments
And just today, there was a critical mass of huskies in the stream! Look! Three huskies! Taiga's on the left.
See the rest of this entry...
Add or view comments
Mmm... fresh bread.
6:30 PM, June 20th, 2010
Cuddles on the sofa!
9:21 AM, June 14th, 2010
More Puppy Photos
10:20 PM, June 8th, 2010
Taiga's over 9 months old now, and people are clamoring for more photos. Here's two fun ones:
Taiga's first day on the beach:
Taiga makes a silly face:
Add or view comments
Taiga's first day on the beach:
Taiga makes a silly face:
Add or view comments
Switching to Insteon - Update
2:41 PM, May 28th, 2010
A few months ago, I posted this entry in my blog, about upgrading from X10 to Insteon. I described Insteon as a "breath of fresh air" after having worked with X10.
Time has moved on, and we all know that in this world, nothing is perfect. So, I'd like to report the following updates regarding my switch to Insteon:
However, from a more general perspective, Insteon is way more reliable than X10 ever was. Once I had all the kinks worked out, things just work... I can be sure that if I see a little light switched on on my diagram, that the light is really on. With X10, it was always a crapshoot.
So, I would indeed recommend Insteon for the home automation hobbyist. X10 is old-school, man, throw that shit away.
Add or view comments
Time has moved on, and we all know that in this world, nothing is perfect. So, I'd like to report the following updates regarding my switch to Insteon:
- The protocol is annoyingly complicated. It took me a lot of reading and scouring different documents to figure out how to turn a light on. At first I was using a "group command", which meant that there weren't any confirmation messages. I've since figured out how to use the "direct message" properly, so my Powerlinc software knows immediately if the Insteon command was received by the destination module or not.
- I started out using a USB Powerline Modem, but the USB interface wasn't reliable. It shows up as a USB com port, but it would fail if there was a power surge or interference (ie, washing machine spin cycle). Then, I'd have to unplug the module to reset it. So, I've now switched to a Serial Dual-Band module, which plugs into a traditional serial port on the PC. This has been super reliable, with no issues to report so far.
- Despite the fact that I live in a small apartment, getting all of the Insteon devices to talk to each other has been a bit of a hassle. I have no less than three "Access Points", which are wireless devices designed to help bridge phases, but sometimes even they don't talk to each other. They claim to have a range of 100 feet, but in my place they can barely traverse 8 feet line of sight. Maybe this would work better in a large, multi-story home.
- The Insteon Motion Sensors are crap. I've had two fail on me, where they just decide to stop turning the lights on. Maybe this is related to the same problem as above, since they use the Access Points to communicate as well.
However, from a more general perspective, Insteon is way more reliable than X10 ever was. Once I had all the kinks worked out, things just work... I can be sure that if I see a little light switched on on my diagram, that the light is really on. With X10, it was always a crapshoot.
So, I would indeed recommend Insteon for the home automation hobbyist. X10 is old-school, man, throw that shit away.
Add or view comments
Work in Progress: LED Signs into Information Display
4:47 PM, May 26th, 2010
So a few weeks ago, I posted a video of a series of small LED signs I had ordered from eBay. After many weeks of trying to figure out what to do with them, I decided it might be cool to build a multi-line information display for my building.
First, I took all of the plastic cases apart, freeing the internal sign electronics.
See the rest of this entry...
Add or view comments
First, I took all of the plastic cases apart, freeing the internal sign electronics.
See the rest of this entry...Add or view comments
More crazy passive-aggressive signs!
1:56 PM, May 25th, 2010
Spotted while walking my dog:
Oddly, this garden always has the most hideous, weed-like plants on the block. Never anything beautiful or colourful. Not even anything that flowers. Why anyone would steal one of these plants is beyond me.
Add or view comments
Oddly, this garden always has the most hideous, weed-like plants on the block. Never anything beautiful or colourful. Not even anything that flowers. Why anyone would steal one of these plants is beyond me.
Add or view comments
Seen in North York
10:29 PM, May 17th, 2010
Taiga Update
12:12 PM, May 13th, 2010
I haven't posted any puppy photos lately, so here's a quick pupdate.
Taiga's lost most of his darker fur and is growing in his summer coat. He's currently claiming my spot on the sofa:
Add or view comments
Taiga's lost most of his darker fur and is growing in his summer coat. He's currently claiming my spot on the sofa:
Add or view comments
Taiga actually smiles when he's happy!
10:54 AM, April 9th, 2010
A whole stack of Alpha Personal Priority Displays
1:35 PM, April 7th, 2010
I got a whole stack of these on eBay for cheap:
Now I need to figure out what to do with them.
Add or view comments
Now I need to figure out what to do with them.
Add or view comments
