12′ Ceilings Are High

I didn’t realize how tall 12 foot ceilings are until I walked around the guest house today (since it now has trusses it’s easy to gauge). They are pretty high up there.

The nice thing about it is we can setup some interesting stuff indoors… like a climbing wall, base jumping, hang gliding indoors, etc.

Canon VB-50i PHP Control Class

I tried to find a PHP class to control the new camera, and I couldn’t find one… so a little packet sniffing later, I was able to figure out how it’s little Java applet communicates with the camera. Anyway, I spent a few minutes to make a PHP class to control the camera, so if you need one, here you go (it hasn’t been extensively tested, so it probably has problems… if it does, leave a comment)…

So here’s a basic PHP script that uses the class to take control of the camera, set the pan/tilt/zoom to a certain position, capture the image and save it to a file… handy for uhm… I dunno… a cron job to take time lapse photography. :)

[code=php] include ('class_camera.php');

$cam =& new Camera();

$cam->connect('your.camera.ip.address');
$cam->get_control();
$cam->goto( -7463, -548, 4126);
sleep(5); // Wait for movement to finish and lens to focus

$handle = fopen('images/' . time() . '.jpg', 'w');
fwrite ($handle, $cam->image());
fclose ($handle);

$cam->disconnect();
?>[/code]

class_camera.php:[code=php]

// #############################################################################
// Canon Camera Control Class
// http://www.shawnhogan.com/2006/08/canon-vb-50i-php-control-class.html

/**
*
* Class to interface with a Canon VB-C50i or VB-C50iR
*
*/

class Camera
{
/**
* Connects to the specified camera
*
* @param string Hostname or IP address of the camera
*
* @return connection_id
*/
function connect($host)
{
$this->host = $host;
return $this->connection_id = substr(file_get_contents ('http://' . $host . '/-wvhttp-01-/OpenCameraServer?client_version=LiveApplet_4125&image_size=640x480'), 14, 9);
}

/**
* Disconnects from the camera
*
* @return none
*/
function disconnect()
{
file_get_contents ('http://' . $this->host . '/-wvhttp-01-/CloseCameraServer?connection_id=' . $this->connection_id);
}

/**
* Attempts to get control of camera
*
* @return none
*/
function get_control()
{
file_get_contents ('http://' . $this->host . '/-wvhttp-01-/GetCameraControl?connection_id=' . $this->connection_id);
}

/**
* Get camera info
*
* @return array of camera info variables
*/
function get_info()
{
preg_match_all ('#(.*?)=(.*)#', file_get_contents ('http://' . $this->host . '/-wvhttp-01-/GetCameraInfo?connection_id=' . $this->connection_id), $matches);
foreach ($matches[1] as $key => $value) {
$this->camera_info[$value] = $matches[2][$key];
}
return($this->camera_info);
}

/**
* Move camera
*
* @param string Movement type (pan | tilt | zoom)
* @param number Position to move to
*
* @return none
*/
function move($operation, $position = 0)
{
file_get_contents ('http://' . $this->host . '/-wvhttp-01-/OperateCamera?' . $operation . '=' . $position . '&connection_id=' . $this->connection_id);
}

/**
* Set pan/tilt/zoom on camera with one call
*
* @param number pan position
* @param number tilt position
* @param number zoom position
*
* @return none
*/
function goto($pan, $tilt, $zoom)
{
$this->move('pan', $pan);
$this->move('tilt', $tilt);
$this->move('zoom', $zoom);
}

/**
* Set parameter
*
* @param string paramter to set
* @param string value
*
* @return none
*/
function set_value($parameter, $value)
{
$mapping = array (
'back_light' => 'B',
);

$parameter = $mapping[$parameter];

file_get_contents ('http://' . $this->host . '/-wvhttp-01-/OperateCamera?' . $parameter . '=' . $value . '&connection_id=' . $this->connection_id);
}

/**
* Get current image
*
* @return none
*/
function image()
{
return file_get_contents ('http://' . $this->host . '/-wvhttp-01-/GetOneShot?image_size=640x480');
}

}
?>[/code]

Correction And Apology

On August 25, 2006, I published some information that turned out to be entirely false. I sincerely apologize to those of you that I inadvertently mislead with this post.

In that entry, I stated that I didn’t get stitches from my surgery. But new information has come to light this morning that now leads me to believe that I did indeed get stitches. This information came from the surgeon that did my surgery. I attended my post-op checkup this morning and I made an inquiry about the lack of stitches and he stated, “You have stitches, but they are under the skin. The last stitch was tied off and cut at the skin, so you can’t see it.” While I have not actually cut myself open to examine myself to see if I indeed have stitches, I don’t have any reason to believe he would have lied to me about it.

Again, I apologize for disseminating false information.

…Unless It’s Night Time

It doesn’t work so well inside a dome at night with the infrared illuminator on. :)

If 2Wire’s crappy router would let me remotely configure it, maybe I could open up the ports on the firewall so I could get into the camera configuration…. but no, I have to drive there. So dumb.

Gmail Spam Filtering Isn’t So Hot

In theory, Gmail’s spam filtering is supposed to get smarter as you “train” it by tagging spam emails that slipped through their spam filters. I’ve been anal about going through every single email and tagging every spam email as such in the hopes that it would get smarter. In reality, I think it might actually be getting dumber though, considering how much spam is making it to my inbox these days (it’s not a new thing BTW, I’ve been getting tons of spam in it for the last year, and it’s only been getting worse).

I doubt there’s an “easy” way to fix it (otherwise it would have been done), but I really wish Gmail would let us define our own custom spam rules. For example, if an email isn’t in English, it’s spam (for me anyway) considering I don’t read Russian, Chinese, Japanese, Korean, Greek, Hebrew, etc.

Check out the most recent emails in my inbox this morning (only 1 of them [the white line] is not spam).

I Almost Have The Camera Live

It’s mounted on a pole, it’s had Internet connectivity to the site since Thursday, it’s been plugged in since Friday and I was planning on hooking up the Ethernet cable and configuring it on Friday, but I was too tore up to leave my home.

Figuring I would do it today, I went to the site and wired up the Ethernet cable and all that. Then I realized I forgot the stupid little $0.05 connector that connects 2 RJ-45 ends together. How dandy! :) I guess another trip tomorrow is in order now.

BTW, it looks like the roof trusses were delivered this morning for the guest house and attached garage.

The Elder Scrolls IV: Oblivion

Thank God for this game because it is an utter time waster and I’ve had to lay around doing nothing the last few days. I don’t really like RPG games, but I got it for my Xbox 360 because it was the highest rated game for it, and there really wasn’t any games I was overly interested in.

But here’s a question for anyone who’s been playing it… Is there any merchant with more than 1,200 gold available to buy stuff? I have about 100,000 gp worth of Deadric weapons and armor (like a crap load of 5,000 gp Deadric Warhammers, Claymores, etc.), but I don’t want to sell them because I can only get 1,200 gp for them since that’s all the money the merchant has.

Dude, Where’s My Car?

I’m not really one to complain (that often), but why in the hell does it take so long to build an f’ing car??? It’s now been over 3 months since my car was stolen, and I ordered a new one 1 week after it was stolen (before the insurance company considered it a loss since I knew it wasn’t going to be recovered), and I *still* don’t have a new car. I finally called the dealer to make sure they didn’t get it and sold mine to someone else or something. Nope, it’s still “in route”… My vehicle was finally built on August 10th, so the dealer’s best guess is that it was somewhere on a train to be delivered to them in the next week.

I’m infinitely thankful to Stefan for letting me use his sweet Nissan Pathfinder (and more recently his BMW X5), but enough is enough… Can I please get my own car now? Please?

DynDNS for 2Wire Products?

Anyone know of some super awesome secret way to make a 2Wire Internet gateway also act as a dynamic DNS client? Since it’s a FTTP (fiber to the premises) gateway and not a “normal” DSL modem, I’m pretty sure I can’t just swap it out with something else that supports DynDNS.

The little I poked around the web interface, it seems pretty decent, other than no DDNS support. :(

In case anyone can help, the one I have is a HomePortal 300 series residential gateway.

No Stitches

I changed my little bandage thing today and uhm… I have no stitches. I have a 3 inch incision in my abdomen and I have no stitches. Does anyone besides me think that’s a little weird? What if my guts came spilling out or something if I cough too hard? :)

Vicodin Doesn’t Do Shit

I ended up taking 4 Vicodin last night, and it doesn’t do a God damn thing for me except make me feel like I’m about to puke. Certainly didn’t help with the pain.

So I don’t think I’m going to take anymore pain killers. Which I guess is a moot point because as long as I lay perfectly still it doesn’t hurt anyway. :)

I Was Stabbed

I had my incisional hernia repair surgery today, and it was quick and easy…

But now after the surgery, it straight up feels like I was stabbed with an 8″ blade in my gut, and then someone jammed it around in there just for good measure. Thank God I waited until after Costa Rica to do this.

Okay, I’m going back to laying down in the living room now.

AT&T U-Verse Is Going To Be Rad

I was talking to the SBC/AT&T guys that installed the Internet connectivity at the job site today and having fiber to the door is going to have some really cool advantages early next year (right now they just run phone and 6Mbps Internet across it). At that point the “standard” Internet connectivity on it should be 20Mbps down/3Mbps up. But they were also talking about the U-Verse television service which more or less streams television on demand. They were saying you could be watching a football game for example and you could control which camera angle you want to watch the game from. :)

That’s going to be pretty dope!

Royal Flush

Played a little Texas Holdem poker last night, and I got a pretty decent hand… A royal flush. :)

But here’s the crazy part… a few hands later I got a straight flush (king high). Both hands were diamonds too.

More importantly, I have witnesses! hah

Too bad I lost overall for the night… Oh well…

AT&T U-Verse

My new place has fiber to the door, so there’s some bad news, and some great news to go along with that. The bad news is that I can’t get DSL. The great news is I can get something way better and cheaper (6Mbit connectivity over fiber for $27/month).

If all goes well, we should have Internet out on the job site on Thursday. Yay!

Moving HTML With JavaScript

Someone asked me why I hide the sidebar on this blog by default, then show it in a different part of the HTML, so here’s the explanation…

Most blog themes float the main body to the left, and make the sidebar on the right “static”. I did the opposite when creating my custom WordPress theme… My sidebar is a DIV that is floated to the right. The reason for this then the content below the bottom of the sidebar wrap around it, which I just think looks better. So here’s the problem… Google weighs content at the beginning of a page higher than content at the bottom, so Google was seeing 99% of my pages as “similar content” because my sidebar needed to be at the top of the HTML source.

So to solve that problem, I just put the sidebar at the bottom of the page in a hidden (with CSS) DIV, then call a simple script to set the contents of an empty DIV (<div id=”sidebar”></div>) at the top of the page, where the sidebar needs to be, to the contents of whatever is in the hidden DIV at the bottom…

<script language="javascript">
      document.getElementById('sidebar').innerHTML = document.getElementById('sidebar_content').innerHTML
</script>

For web browsers, the sidebar renders at the beginning of the HTML source, but Google sees the sidebar at the end of the HTML and pages no longer are seen as 99% similar.

Everyone Wants My Blood

I’ve had to give lots of blood lately. 2 vials were taken before I went to Costa Rica, a stone wall took some of my blood in Costa Rica, and then someone else wanted 1 vial of blood today.

Too bad we haven’t perfected human cloning yet. Then I could have myself cloned and harvest my clone’s organs later in life if I ever need them…

If anyone in Costa Rica would like to try that, you can find my blood and maybe some tissue samples on the wall/bridge in Manuel Antonio for the Costa Verde hotel (coming off the main road).

Update

I’m also available for sperm samples if the right person asks.

Note: That’s a joke BTW.

Guest House Foundation

Went up to the site today to see what’s been going on in the last 2 weeks (since I’ve been gone), and it looks like lots of stuff has been happening…

  • Guest house/garage has it’s concrete slab poured

  • Basement looks like it’s just about ready to have it’s slab poured
  • Framing of the guest house has started (2 walls were standing, and the rest of the walls looked like they were about to be put up)
  • Pool is completely dug out
  • Underground pool equipment room is dug out
  • Transformer and temporary power has been installed
  • Temporary phone lines have been installed (it’s wired to the trailer at least, I couldn’t see into the temp phone box if fiber was pulled through the conduit or not yet)

It’s starting to look like a real construction site now with loads of wood and crap strewn all around. hah

I’ll find out tomorrow for certain on the phone line… if we can get Internet soon, maybe I’ll finally get my camera installed up there.

Update

The phone lines are installed (and there is even a phone number for the trailer that’s working). Now just need to get SBC/AT&T to put a DSL line on it.

Local Party In San Jose

Okay, we are back in San Jose now since our flight home leaves in the morning. Scott’s friend Tracy is currently staying in San Jose on a student exchange program, so we got a couple taxis over to the party.

As you can see from he picture, it was a wild and crazy time. They even had Spanish karaoke and salsa dancing! :)

Arenal Volcano Eruption

So while eating dinner, (a 14 ounce, $8 filet mignon), the volcano was erupting. So we ended up seeing lava streaming down the volcano tonight. Not sure if it was happening during the day or not, but definitely could see the lava glowing at night.

Unfortunately no one has a good enough camera to get a lava shot that turns out. :( Oh well, it was neat anyway…

Tabacón

Tabacón resort is pretty nice and we’ll be staying here for 2 nights. Lots to do and a really neat maze of hot springs fed by the Arenal volcano.

Too bad their tech guys don’t know anything about computers or the Internet. One guy actually came to my room, and looked at my laptop for about 20 minutes before he said, “Oh, is this a Macintosh? These don’t work with the Internet.” In reality it was a problem with their authentication servers (which I knew from the beginning).

Property In Playa Hermosa

Anne’s aunt is a real estate agent and lives in Playa Hermosa, so we went to check out a house she was selling. A pretty nice place with a decent (hah) view… I think it was around 4,500 square feet and rents as a vacation rental for $5,000/week. It’s currently on the market for ~$1.4M… probably an excellent investment since Playa Hermosa is about to blow up with a bunch of 5 star hotels coming in and a new marina for yachts.

Snorkeling In Playa Hermosa

In a little hotel we found down a dirt alley in Playa Hermosa today (it’s actually a really nice place right on the beach) and we went on a 3 hour snorkeling tour for $20 (gotta love how cheap Costa Rica is… our hotel worked out to $19 per night, per person… including an awesome breakfast).

Julien and Celeste can’t decide who gets me, so I guess they both do. :) I especially like everyone’s lame smiles. hah

Once Bobby gets his underwater camera pictures developed, I’ll put some pics pics from that up.

Jacó, Costa Rica

Avoid this crappy town like the plague. We drove through it on our way to Playa Hermosa, and someone came up and stabbed our tire while we were sitting in the car.

As Julien would say, “Thank you very much! We really appreciate it!” (you have to smile and wave to get the full effect). :)