home sindicacition To Top
BlinkList
blogmarks
del.icio.us
digg
Fark
Furl
Netvouz
Reddit
Simpy
Spurl
TailRank
YahooMyWeb

Creuzer

Wednesday, July 16, 2008

The Run Around

So, I got my DSL modem today from AT&T.

Great. I bring it home and try to install the software. 3 reboots later, it finally actually installs instead of hanging part way through.

So, now I have in installed modem, and no internet connectivity.

I look at the paperwork. It is supposed to be turned on on the 21st. WTF? They charged me $12.95 to 2nd day deliver the modem, just to have me sit on my thumb for 6 days?

I don't think so.

So I call the support number that came with the modem.
Nice guy answers the phone. Looks up my account. It's still in process. I need to talk to provisioning.

I can understand this. I am a reasonable person.

So, he gives me a 800 number incase I get disconnected, and transfers me.

OK - a PHONE COMPANY gives you a number in case you get disconnected using their product? Not a good sign.

Anyway. I get a nice gal on the phone. She says that I am not in the right place, and gives me a 3rd phone number to call, and transfers me.

Right, so the computer gives me a 4th number to call, and asks me for the same information I have told the computer twice before, and to the first person. Then, it tells me it's much to busy for me and to call back at it's convenience, giving me 10-11am and 1-3pm. Then it hangs up.

HUH?

Start over. 15 minutes more on the phone, I follow a similar path, to again be told that the computer is too busy for me, call back. CLICK.

OK, so after 6 phone calls (I am nearly as stubbern as a computer), I find the right path to get to the rude computer.

1-888-611-4466, dsl, service.

Computer is too busy for me. Click.

OK, at this point I either want to have somebody tell me they are going to connect my DSL THIS WEEK being that they charged me for 2nd day delivery, or to give a partial shipping refund for a REASONABLE shipping method to match THIER time frame for turning service on.

GAH!

Not a good first impression AT&T. I am really having 2nd thoughts about getting a iPhone if your service is this shitty.

Tags:

Wednesday, November 07, 2007

Home Made Rabbitcore Embedded Microcontroller Server Uptime Monitor

I have been having trouble with some web servers going down on me in the middle of the night. I decided I had enough, and am going to make a Server Up-time Monitor. Now, I could dust off one of the old computers I got laying around here (heaven knows I got enough of them), install Linux, and Nagios, but I want the monitor to wake me up in the middle of the night and consume VERY little power.

I decided to build it based of a Rabbit-Semiconductor RabbitCore RCM3100 embedded Micro-controller. This devise is small -about the size of a pack of gum, uses very little power do to it's size, and can be made to actually DO things, like control X-10 power modules or directly run relays, sound alarms, play .wav files, etc.

Phase 1 is to make it work.
Phase 2 is to make it useful.
Phase 3 is to make it indispensable.

I have completed phase 1 tonight.
I wrote some code, based off of the samples that came with the Ethernet Starter Kit I bought a while ago, and am using to make my automatic fish feeder.
Basically, all it does is ping the server once a minute. If the server fails to reply to the ping 5 times in a row, an email is generated. This will be sent to the email address for my cell phone, effectively paging me.

Some things to make this 'useful' and 'indispensable'. Here is a simple list of what I am thinking it could and should do:
  • Check multiple web servers
  • Page multiple people's cell phones.
  • Check actual HTTP service by loading a web page and making sure it's what is expected.
  • Display a simple 'status' by some method - a red & green LED display panel, LCD display, etc.
  • Turn on the night light in my bedroom at night
  • Turn on an alarm
  • Play a wave file that indicates the current status

I am going to publish my Dynamic C code, and any future updates, here to my blog in case this is useful to anybody else.

Please feel free to leave any comments/questions/patches/etc.


/*******************************************************************************
Web Server Montitor
Author Mike Creuzer
mike.creuzer.com

Based from the RabbitCore sample files:

Samplestcpipping.c
Z-World, 2000

ICMP demonstration, by pinging a remote host.
Prints a message when the ping response arrives here.
If PING_WHO is not defined, then it pings the default
gateway.

smtp.c
Z-World, 2000

A small program that uses the SMTP library
to send an e-mail.







*******************************************************************************/

/***********************************
* Configuration *
* ------------- *
* All fields in this section must *
* be altered to match your local *
* network settings. *
***********************************/

/*
* Pick the predefined TCP/IP configuration for this sample. See
* LIBRARIESTCP_IPTCP_CONFIG.LIB for instructions on how to set the
* configuration.
*/
#define TCPCONFIG 1

/** Remote interface to send PING to (passed to resolve()): **/
/* Undefine to retrieve default gateway and ping that. */
#define PING_WHO "mike.creuzer.com"


#define FROM "ServerMonitor@creuzer.com"
#define TO "ServerMonitor@creuzer.com"
#define SUBJECT "Monitor Update"
#define DOWNBODY "Server is down."
#define UPBODY "Server is back up."


/*
* The SMTP_SERVER macro tells DCRTCP where your mail server is. This
* mail server MUST be configured to relay mail for your controller.
*
* This value can be the name or the IP address.
*/

/*
* The SMTP_SERVER macro tells DCRTCP where your mail server is. This
* mail server MUST be configured to relay mail for your controller.
*
* This value can be the name or the IP address.
*/

#define SMTP_SERVER "smtp-server.tampabay.rr.com"

/*
* The SMTP_DOMAIN should be the name of your controller. i.e.
* "somecontroller.somewhere.com" Many SMTP servers ignore this
* value, but some SMTP servers use this field. If you have
* problems, turn on the SMTP_DEBUG macro and see were it is
* bombing out. If it is in the HELO command consult the
* person in charge of the mail server for the appropriate value
* for SMTP_DOMAIN. If you do not define this macro it defaults
* to the value in MY_IP_ADDRESS.
*
*/

#define SMTP_DOMAIN "aquaria.serveblog.com"

/*
* The SMTP_VERBOSE macro logs the communications between the mail
* server and your controller. Uncomment this define to begin
* logging
*/

// #define SMTP_VERBOSE

/********************************
* End of configuration section *
********************************/

#use dcrtcp.lib
#use smtp.lib


int main()
{
longword seq,lastpingrecieved,ping_who,tmp_seq,time_out;
char buffer[100];
int down, sentdown, sentup;

sock_init();
// Wait for the interface to come up
while (ifpending(IF_DEFAULT) == IF_COMING_UP) {
tcp_tick(NULL);
}

/* Print who we are... */
printf( "My IP address is %snn", inet_ntoa(buffer, gethostid()) );

/*
* Get the binary ip address for the target of our
* pinging.
*/

#ifdef PING_WHO
/* Ping a specific IP addr: */
ping_who=resolve(PING_WHO);
if(ping_who==0) {
printf("ERROR: unable to resolve %sn",PING_WHO);
return 1;
}
#else
/* Examine our configuration, and ping the default router: */
tmp_seq = ifconfig( IF_ANY, IFG_ROUTER_DEFAULT, & ping_who, IFS_END );
if( tmp_seq != 0 ) {
printf( "ERROR: ifconfig() failed --> %dn", (int) tmp_seq );
return 1;
}
if(ping_who==0) {
printf("ERROR: unable to resolve IF_ROUTER_DEFAULTn");
return 1;
}
#endif

seq=0;
lastpingrecieved = 0;
down = 0;
sentdown = 0;
sentup = 0;
for(;;) {
/*
* It is important to call tcp_tick here because
* ping packets will not get processed otherwise.
*/

tcp_tick(NULL);

/*
* Send one ping per second.
*/

costate {
//waitfor(DelaySec(1));
waitfor(DelaySec(60));
_ping(ping_who,seq++);
}

/*
* Has a ping come in? time_out!=0xfffffff->yes.
*/

time_out=_chk_ping(ping_who,&tmp_seq);
if(time_out!=0xffffffff){
if(down == 1){
printf("Service has been restored. n");
down = 0;
smtp_sendmail(TO, FROM, SUBJECT, UPBODY);

while(smtp_mailtick()==SMTP_PENDING)
continue;

if(smtp_status()==SMTP_SUCCESS)
printf("Message sentn");
else
printf("Error sending messagen");
}
printf("Received Ping: %ld %ldn", tmp_seq, time_out);
lastpingrecieved = tmp_seq;
sentdown = 0;
}else
{
if (seq - lastpingrecieved >= 5 && sentdown == 0){
printf("Host Unavailable. n");
down = 1;
sentdown = 1;

smtp_sendmail(TO, FROM, SUBJECT, DOWNBODY);

while(smtp_mailtick()==SMTP_PENDING)
continue;

if(smtp_status()==SMTP_SUCCESS)
printf("Message sentn");
else
printf("Error sending messagen");
}
}

} // end FOR
}





Tags: ,

Wednesday, October 10, 2007

Electronics Hutch

I recently moved all my junk to Florida from Wisconsin and don't have a place to put all my electronics peices and parts and tools and whatnot. I don't want it all laying around for the cats to sort for me, as most of it would end up sorted under and behind the furniture.

So I have been looking for either a TV armoir or a computer hutch. I ended up at the Rooms To Go warehouse on exit 10 off of I4. They sell all the local scratch and dent items there.

Man did I make a find! I picked up a Tracey Computer Cabinet which retails for $699.99 for $327.99. Good deal, eh? It has some minor nicks and such in the corners, but nothing more than I would pick up in a year or two. It is missing the top crown moulding and only has 3 of the legs, but this works out in my favour as well!

I am going to put it on a cabinet so it stands taller. 23 inches taller in fact. That is the height of my elbows to the keyboard tray as the hutch sits on the ground tonight. This way, I can work on it standing up, or I can use the tall chair I will be getting/making for it.

Being that I am a internet junky, most of my electronics requires programming and an eithernet connection. So I will use the 'computer' part of the hutch to full effect. My 4U rackmount computer will just be either in the lower cabinet or sitting on the top of the unit. I will put my rackmoutn KVM in it to, as my next main computer will be DVI and won't work with the KVM. I will also add a 24 port hub so I don't run out of ethernet jacks.

I plan on picking up one large or two smaller LCD monitors for use in the hutch. This will give me the maximum amount of storage space inside.

 
This is the unit sitting on the ground without the legs. I will be getting a cabinet of some sort to go underneith it. This cabinet will be for storage of all the 'good junk' parts like old VCR boards and so forth that I would be canabalizing from. This should leave about a foot to the ceiling. I will put the computer gear up there I think so it can keep itself cool.

 
It even comes with a whiteboard and corkboard! Here brother is checking it out. One of the few times he will get to sneak into it.

 
The Keyboard tray is sitting in a pull-out work surface. This is PERFECT for my needs as I can pull out the workbench, and also access my keyboard.

 
The bottom has 2 drawers, a thin shelf (for the computer I guess) and a pull out printer drawer that won't fit either of my printers. Looks like parts and tool storage to me!
Posted by Picasa

Tags: , ,

Sunday, June 10, 2007

The operation was a success, but the patient died.

 The old iMac bit the big one last weekend. It didn't make the trip from Boynton Beach into Fort Lauderdale a year and a half ago, and it just sat on a dresser all that while. It would power on, and power off almost instantly, I never could get it to boot.


 I pulled the hard drive (it has my LIFE on it) and the gig of RAM, and it went to heaven where all macs go! I also junked out my old Epson Stylus Photo EX. Between the 2 devices, I had dropped $2200 9 years ago now. Has it been that long?


My brand new (over a year old now, I started blogging when I got it) Compaq is shortly to follow the iMac's fate, but I won't bother keepig any parts out of it. The stupid thing won't play a video DVD or stay running more than 24 hours. Actually, it is going to become a linux box, and live in my Kitchen when I build a new box. Good for web browsing for recepies.
Posted by Picasa

Tags:

Saturday, May 26, 2007

Second load moving into my new place.

Katie and I dropped off my second load of stuff today. This was the truckload that Bill was so kind enough to let me store in his garage for a year and a half. The only thing broken out of all the glass was a chipped mug that could have come from the store that way.
I haven't decided how to do the living room but I have awesome ideas for the kitchen. Matt and Jessica left a rolling dishwasher for me, so I have a dishwasher now. It isn't built in so I am going to make a small cutting boad surfaced island to put against one wall to wheel it into. I will get another folding barstool and I can use it as a breakfast table too. I am going to make it nice and tall so it will be a great prep area for me.
The coolest idea is for the computer in the kitchen. I will put each of my 19 inch monitors into the two corners of the kitchen on those wall TV shelves even with the top of the cabinets. They will both show the same screen, and each end of the kitchen will have a wireless keyboard and mouse in a tray under the cabinets. I will use my current Media Center PC so I can watch the food network or have a recepe on the screen. I am thinking it will be cool.
I am also going to build a storage shelf that is strong enough to put the fridge and a chest freezer ontop of so I don't need to squat down to look into the fridge.

I am going to make another trip this weekend for my junk. I will be moving my fish tanks. That will be a chore. I am thinking all the fish will end up in the planted tank for the time being. I want to put the tv tank into my entertinment center. I think I want a stand for my planted tank and put that between the doors to the bedroom and bathroom. I may break down and buy that instead of building it.g it.

Tags: , , ,

Friday, May 18, 2007

Medieval helpdesk



And think... my (future) kids will be looking at my use of computers and think the same thing you will when you watch this...

I LOVE the user manual issue!

Tags: ,

Saturday, March 10, 2007

Free to a good home

I am cleaning out some of the unneeded stuff I have.
I have this really nice, not working, iMac DV SE 400mhz- the graphite colored one. Yes, I am giving my baby away! I will give it to whomever asks for it first, for free, you just gotta figure out how to get it there. You will get just the computer, no hard drive, no RAM.
It powers on, then powers right off. I don't know what is wrong with it. The slot loading DVDROM drive is... weak, it doesn't like to spit out discs.

It would make a good parts box. The case only has 1 scratch on it.

The computer will not move to Tampa with me for one reason or another.

Tags:

Thursday, March 08, 2007

The Machine is Us/ing Us (Final Version)

This is a follow up to a post I made 26 days ago. The author of the video has released the final version today. i was the 250th person to view it. I like the video.

Tags: ,

Thursday, February 15, 2007

Homepage Caching

I have been having a problem at work. My homepage is now getting 100,000 hits a month. My home page is big unfortunately, about 43Kb plus auxiliary files. But the worst part is the 10 different calls to the database under 5 different modules, each with it's own connection to the DB. This racks up some serious MySQL disk IO along with logs, and all that other stuff. Needless to say, I have been encountering some minor performance issues.

Simple solution is to cache the homepage.

I want to be able to regenerate the homepage whenever I want. I want the homepage to regenerate itself periodically, especially immediately into a new day as much of the content on the homepage is date specific. I don't want to do any extra work to process this cache.

For my implementation, I am taking advantage of the fact that Apache will search for an index page: index.html, index.php, default,htm etc. I let index.html be my rendered, static copy of my homepage with index.php being the dynamic version. The big trick is that every time index.php is called, it writes out to index.html. Now it's just a matter of getting index.php called at appropriate times.

In index.php, I am using php's output buffering to capture the content of the homepage. I then write that buffer, unchanged, out to index.html and to the web-browser.

At the top of my homepage you would see the following:

/* Output Buffer
* We are doing something a bit odd here. The home page is the most hit page on the site. There are a LOT of calls on the home page to database, etc.
*
* In an attempt to make the server load go down, this index.php file will write out an index.html file as a static file
* This takes advantage of the fact that apache is looking for index.html before index.php
* running index.php will create index.html
* removing index.html will cause index.php to run and create index.html
*
* A cronjob removes index.html hourly
* Admin tools that modify data that could be displayed on the homepage should cause to have deleted index.html
*
* You can manually force an update to index.html by loading www.r-world.com/index.php (a clever way is to have the webmaster bookmark index.php as his start page.)
*
*/

function callback($buffer)
{
// lets write this page out to index.html.
$indexbufferfilename = 'index.html';

$indexbuffererror = '';

if (!$handle = fopen($indexbufferfilename, 'w')){
$indexbuffererror .= "Cannot open file ($indexbufferfilename)n";
exit;
}

if (fwrite($handle, $buffer) === FALSE) {
$indexbuffererror.= "Cannot write to file ($indexbufferfilename)n";
exit;
}

//echo "Success, wrote ($somecontent) to file($indexbufferfilename)";

fclose($handle);

if(!empty($indexbuffererror))
{
mail('webmaster@r-world.com', "Error in creating homepage", $indexbuffererror);
}

// send the page to the browser
return $buffer;

}

ob_start("callback");

I then have the content of my homepage. I then end the page with a ob_end_flush(); as the very last line of code on the page.

This takes care of the creating of the homepage cache.

In order to dynamically have the cache created, I added a few lines of mod_rewrite to my .htaccess file that will check to see if index.html exists and has something in it or it calls an alternate file, my index.php. I found the idea on theApache1.3 URL Rewriting Guide.

My .htaccess file looks like:


Directory Index index.html index.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^index.html$ index.php [L]


I have several administration tools to edit data that is being displayed on the homepage. I have added an include to a file that simply deletes the index.html page. Now, whenever I modify data that may be displayed on the homepage, it is automatically displayed on the homepage as the homepage is re-created. I also have a cronjob that runs this file at the top of every hour.

As for how well it works. My average number of MySQL connections per second fell from 32 to 26 for a 20% reduction in MySQL calls. The CPU usage used by MySQL fell a couple of percentage points on the server, as several of the SQL statements for the homepage are 7 SELECT UNIONs that aren't exactly trivial. The system Load Average also dropped about 33% as MySQL and apache aren't hitting the drive near as much anymore.

The best part is that the PHP processing time has been taken out of the Load Time for the homepage. 1 poor sod per hour, and the first person to get the latest update will need to wait for the PHP processing (which everyone used to do anyhow) and writing out to disk. I also set me and my bosses bookmarks to load the index.php version of the page as whenever one of the two of us are looking at the site, we are likely looking to verify a change, and this will force an update.

Clever, eh?

Tags:

Saturday, February 10, 2007

Web 2.0 ... The Machine is Us/ing Us


I stumbled on this video on You Tube. I think this is exactly what You Tube is about - enabling somebody to create and share their insights in a visually stimulating fashion. This is that pearl dredged out of the ocean.

I set back and just think WOW.

I can't wait for the final edition.

Tags: ,

Wednesday, January 31, 2007

InfoCom Games

Remember the old text based Infocom games like Zork?

Chris and I were talking during lunch today about how great the old text based games were. Neither of us like the "twitchy" type games all that much. I (currently pretty infrequently) play an online game called Ultima Online (UO). The game is 9 years old now, so it still has strong text roots. It is a game where the bulk of things to do are nearly impossible to do by yourself. This strong group play aspect necessitates a fair amount of organization and group communication. I will claim that the bulk of my typing skill gains (if any) over the last 3 years are likely a result of playing UO. There a many a night where I have loged in and not done anything but talk to my friends in the game.

Possibly triggered by a lunchtime conversation shortly prior with Anthony (a new coworker) about literacy, Chris and my text based game conversation drifted towards kids learning to read and write and Infocom games.

We decided that the world (or at least the bulk of America) would be a more literate place nowadays if we still had the old Infocom games. Well, at least that is what I got out of the conversation - I can't speak for Chris.

We talked about how great it would be to create a text based game that would appeal to both kids and adults (the two of us might be a bit of both) today. We discussed a few updates that would be needed in order to make a text based game interesting to today's children. Now mind you, neither of us have any children (currently - although Chris got a new puppy today), so our ideas might be a bit off-based.

The ideas discussed range from cut scenes to real-world rewards.

The most important part of a good text based game is a good storyline. You need a good plot, goals, etc. in order to keep yourself involved in the storyline. I think this is a bit lacking in many modern games. Some of story lines bounced around ranged from a text based football game, to a story about hunting for the Loch Ness Monster - where you have to acquire the scuba gear and boat and whatnot and then go diving, searching for Nesse while keeping track of your air supply.

We figured that it would be very difficult to get kids interested in a text based game long enough to actually get into the game. One way to garner this attention would be the addition of visual cut scenes. Fairly frequent in the beginning of the game, they would highlight important discoveries, actions, encounters, etc. in the game. An intriguing twist to the cuts scenes, would be that they only depict what the game has already described in text. For example, if you walk into a clearing with a tree and trigger a cut scene, you would see a clearing in a woods with a lone tree in the middle. If, however, you had examined the tree, and found a birds nest, the cut scene would also depict the birds nest. This way no more game information could be garnered from the visual displays - well, not directly. Subtle things such as a full tree with a bare section of branch visible might inspire a closer look at the tree - triggered by textually prompting an examination of the tree of course.

Today's computing environment also gives ready access to the Internet. Communication and interaction with other people could be an interesting aspect of the game. Working together to accomplish a goal would be rewarding.

Another aspect of enticing children to play text based games would be real world rewards. I don't believe that today's parents are nearly as computer illiterate as Chris and my parents where when they got us our first computers. There could be a oversight and goal setting portion of a text based game that parents could access, monitor, and set. With real world rewards such as treats, trips, toys, sleepovers, whatever is appropriate, the children could be further enticed to start playing the game and to keep playing it.

Some criteria for reading and typing could be word difficulty in reading, typing speed and accuracy. The game could have a built in thesaurus where depending on the child's reading level, more difficult words would be swapped in to describe the proceedings in the game. Vocabulary usage could be bolstered by interacting with characters that only speak with certain "dialects" that happen to contain the more difficult words and not the simpler words.

In a playing to learn how to read type environment, a built in interactive dictionary would need to be included. This could also be textual, visual and aural to accommodate different learning styles.

An alternative aspect of this would be to offer the game in foreign languages, either to help foreigners to learn English, or Americans to learn a second language. I have tried to learn foreign languages with software before, and they didn't work so well for me. Maybe the more interactive reading and writing and thinking might improve the results.

What do you all think? As the comments may be long, feel free to comment on your own blog, linking back to this one.

[UPDATE FEB 1]
Chris has written his 2 cents worth, I decided to add it here to this post instead of creating a new post for his comments. He doesn't have a blog of his own.

*****************************************
Chris
*****************************************
Yes, folks I am definitely showing my age and talking about Infocom games. For the young ins out there that have no clue what an "infoCom" game was let me take you back to a different time and difference place.

These were the days of Home Computers that were ground breaking when you had 64K of RAM, that's right 64K. Believe it or not it was powerful enough to run every game on the market and you didn't have to buy another stick of memory or a new video card to run it. The most popular Home computer was the Commodore 64. They were introduced way back in 1982 with a hefty price tag of $595.00. No monitor, no printer, no modem, no network card, no hard drive, floppy driver, or cassette tape (that's right folks and you thought cassette tapes were used only for music.). I got my Commodore 64, 5 1/4 floppy drive, and dot matrix printer the Christmas of either 83 or 84. I was in heaven. I had no idea of how to use it but i knew it was the coolest thing in the Sears Christmas Catalog. Luckily, I already had a TV to hook my new computer to.

I eventually started to acquire computer games and and shared with my friends that had the same system. My handful of computer geek friends were drawn to the text based games of InfoCom. These games were text only. No graphics or sound. You had to use your imagination to envision the world that you were reading. We truly enjoyed the adventure and in the long run we gained valuable skills that we use each and every day. At the time there were graphical type games out like F-15 strike eagle which was a great dog fight plane simulator. I had it and spent many hours flying over Russia (i.e. the cold war enemy at the time), and shooting down MIG's. Compared to the graphics of today's games it was no comparison.

InfoCom had many different type of adventure games. The most popular were the Zork series where you were in search of treasure and had to solve problems to get the gold or to open a door. You had to read the descriptions very carefully and "see" the clues that were hidden in the message. For instance, you may go north on a dirt road. and you may go north again but this time the description says that there is a puddle in the middle of the road blocking your passage to the north. Did you see the hint? It's the puddle, you could step over the puddle, only to slip and fall in. You could go around the puddle but it is way to wide and the bushes on either side that are filled with sharp thorns that are sure to rip your skin to shreds....what to do?

This was the awesome, did you feel yourself in the situation by just using your imagination? We would spend entire weekends immersed in new worlds and puzzle solving. There were other types of adventure games like in Deadline, you played a detective that had to solve crime. You would interview witness, gather evidence, and make arrests. In my favorite game you played a Archaeologist that was searching for treasure in a pyramid. It was called Infidel. The beginning of the game you were stuck in a desert and all of the workers had left because you could not find the entrance to the pyramid. So guess what, you have to find the top of the pyramid and dig for the opening. It was great.

As the years progressed and graphics became better and better, the way of the text based games were left in the dark. We now have these extremely powerful computers and game consoles that can make the characters and situations look real. But for some of us, we still like to use our imagination rather that having feed to us with a spoon. As you read before, Mike and I were discussing these games and thought it would be great to bring it back. Not only for my generation of gamers, but to hopefully stimulate the youngsters of today to use their imagination and to learn to read and type. There were a lot of ideas that were thrown around, some good and some not so good, but we believe that there could be a market for parents that may have been exposed to this type of game in their childhood and would want their children to experience the same things they did and hopefully learn a few things along the way.

Tags:

Monday, December 18, 2006

Creuzer's 'Quarium Cam

Well, I found a camera that is small enough to slip between my fish tank and the tank stand. It wasn't as cheap as I was hoping, $28, but it wasn't bad either. The camera I got is a GE MiniCam Pro.

I have it basically wedged between the tank and the stand. It is propped up on an extra suction cup thingy for holding the filter inlet and outlet pipes to the tank. It is on the right side of the tank looking left. I picked direction because the tank isn't quite in the middle of the stand and there was more room.

The camera is focusable, so I focused it in about 1/2 way into the tank. I am hoping that this will be enough for the tank.

I have set up my template to include a photo that updates every 30 seconds on the top of my blog. Not many people visit my blog, so it isn't going to create a lot of traffic.

The tank cleared up a lot in the last couple of days, which is good.

I really had to futz with the settings on the camera to convince it to take a photo that wasn't hard to look at. I still don't think it is great, but, hey, nobody is perfect.

I am not really happy with the view. A closeup of that large piece of driftwood isn't all that exciting. And don't hold your breath for any fish, they aren't coming before I get back from vacation.

It looks like I need to clean the glass in front of the camera, it is smudged.

What do you think? Fun investment of $28? The camera I really want is $280, but then you would be able pan and tilt and zoom in and all kinds of fun stuff with that one!

Tags: , ,

Saturday, December 16, 2006

Mom's Christmas Present

I am buying my mom the Internet for Christmas. (Shhh don't tell her even though she already knows!)

She shall get bigger tubes!



I will now be able to send my mom more internets without worry that this movie will block up all the tubes. Even better yet, she might actually be able to VIEW this movie.


I ordered my mom Wild Blue Satalite Internet Service this morning to replace her current dial up and 2nd phone line. It looks like she is going to save ten bucks a month or so with the new service. It will also be faster. I bought the hardware, the installation, and her first month of service.

Hopefully it gets installed before I arrive. I remember last year and the slow internet connection! Good Senator, I need my own personal internet tubes unblocked by your streaming 10 or 12 movies and a book at the same time.




Tags: , ,

Thursday, December 14, 2006

Blog Template

Is it bad that I am a web developer and use a default template for my blog?

I have had my blog for nearly a year now... Looking back... 10 days and 1 month short of a year it looks...

Tonight is my first major tweakage of the template. Well, I had added my Delicious bookmark's tag cloud, Google calendar, and just a few weeks(?) ago I added my PicassaWeb photo album. Oh, this last week I added a Technorati search to the site too. I guess I have added to the template a fair bit.

After the Blogger Beta incident I am wanting to have my list of Labels in the WORST of the ways! Forbidden fruit tastes the best, right?

Playing around a bit, I had a thought. I host my own blog. I wonder what happens if I put PHP into my blogger template? By George, a little .htaccess magic, and it works!

Sweet!

OK, first thing's first. I want to post to my main blog (this one) a running tally of updates to my car blog. I whipped up a little RSS reader that I include into my template and viola! Instant RSS Feed of my cars blog on my main blog!

WOOT WOOT

Stumbling block, no RSS feed for my labels.

DOH!

Guess I am going to have to roll my own. I have PHP take a peak into my /labels/ folder, read all the files, tally up the number of posts in each file, and create a tag cloud. How is that for a run-on sentence? The amazing thing is, it works. Really well. I love it!

OK, this calls for a re-think of my cobbled together right column. A bit of consultation with Stewie and I moved just about everything around. I think it works.

I still need to tweak the photo album as it doesn't display quite right in FireFox. I also need to colorize my new Labels Tag Cloud.

What do you think?

Tags: ,

Saturday, December 02, 2006

Google Adwords multiplexer

I needed to create a list of word combinations for Google Adwords. I created a tool to do this for me. I thought the world would find it useful.

I can enter my base bid, and have certain words up that base bid so more popular terms can be bided on appropriately.

Tags:

Saturday, September 02, 2006

Google Earth, Picassa, Geotagging, and old Chihuly Photos

Me hugging a tree at the  Chihuly - Fairchild Tropical Botanic GardenOK, I love GOOGLE products THIIIIIIS much.

I was playing with the latest version of Picasa and Google Earth tonight. The "really cool feature from google"TM that I was trying to figure out is image geotagging. Basically Geotaggin is labeling a photo so you can place it on a map. See Wikipedia, Geotagging.

The whole process is to select a photo in Picasa, choose the geocoding option in some obscure, buried menu, and find where you took the photo in Google Earth. I then created a Google Earth file that allows you to view the images from within Google Earth. Way Cool!

I also exported a web photo album to my webserver. I tweaked the caption to include a link to the file.

It's all a work in process, so if the links to the stuff I am talking about today are gone next week, look around, they probably found a better long-term home.

Download the Google Earth Geocoded Photo Tour of Chihuly - Fairchild Tropical Botanic Garden

View the Chihuly - Fairchild Tropical Botanic Garden Photo Album Posted by Picasa

Tags:

Tuesday, July 11, 2006

Computer Upgrade

Well after 6 months of saving my nickles, dimes, and a lot of dollers too, I bought myself a new video card for my new (6 month old) computer. $100 bought me a NVIDIA GeForce 7300 GS. Don't tell me I coulda got a better card or a better price. All I care about is I got my 2nd monitor in use again.
Can you imagine 6 months of staring at a 19" monitor wishing it wasn't dark? I have dual monitors at work, I have had dual monitors both at home and at work for years now. The new computer drove me NUTS with only a single screen.

I am happy again. Maybe I can get more work done at home? Wait... I see a video game and talking to my mother. I guess THAT cat is out of the bag. Posted by Picasa

Tags:

Friday, April 28, 2006

Lightscribe CD/DVD Burner

Here is the first Lightscribe labeled disc I burned. It is a backup of my photos in PicassaI got a Lightscribe CD/DVD burner in the new computer I got myself for my birthday. I finally saved enough for a few Lightscribe discs. I must say, I am rather disapointed. This is "High Quality" and took 20 minutes to burn. The contrast just isn't there. Oh well, it is still better looking then using a Sharpie. Posted by Picasa

Tags:

Sunday, April 16, 2006

The Rabbitcore Embedded Microcontroller Automatic Fish Feeder works! I even have a video to prove it.

Automatic Fish Feeder and Rabbitcore 3700 front viewHere is the front view of the feeder hooked up to my Rabbitcore Embedded Microcontroller. The Rabbitcore will eventually completely operate the fish feeder. It will also run the lights, and take the ambient temperature as well.

Automatic Fish Feeder and Rabbitcore 3700 side viewI am going to have the fish feeder to feed 3 times a day on a tight schedule, 30 minutes after lights on, 30 minutes before lights off, and half way in between. I am also going to "mix it up" a little bit and have it feed 2 times at a random interval. I am also going to have a manual "feed the fish" button. If this is used, it will count as the random feeding for that time period. I think this will make the fish much happier.

Automatic Fish Feeder and Rabbitcore 3700 backviewThe fish feeder has the ability to adjust how much food is fed per feeding. I am going to have this turned all the way down, and increase the frequency to increase the the total amount they are fed. I don't want to over feed the fish.

Automatic Fish Feeder and Rabbitcore 3700 videoWell, here it is... a video of the automatic fish feeder in action. Sorry it is dark, blurry, grainy, and jerks around a bit, but it is the best I could do considering how excited I am. The Rabbitcore is currently running the servo-stop locater program that I wrote to find out how far each of my servos will run stop to stop, and what numerics I need to use for programming each individual servo. The two buttons I am pushing just moves the servo from one setting to the other. This program works well to check the functionality of the embedded microcontroller controlled automatic fish feeder. Posted by Picasa

Tags: ,

Saturday, April 15, 2006

Web-enabled Crock Pot?

I was wondering around target today and stopped to look at the crock-pots. I saw there are "smart" crock-pots out now. These have built in timers and what-not. I got to thinking... what if I made this thing web-enabled.

If you where going to be home late, the "smart" crock pots wouldn't know that, but a web-enabled one would. You can just log into your crock-pot and adjust timer or, if has started already, the cooking paramaters. I also got to thinking, what happened if I where to put a peltier cooler on it, so while it is waiting to start cooking, it is keeping your food cool so it doesn't spoil in the meantime?

Hmm... one of the best parts of a crock pot is that they are dirt cheap... $100 worth of electronics into one to make it more-better...


Well, a project for after I build my web-enabled Thermo-Electric Cooler

Tags:

Friday, February 24, 2006

Lambda and web programming.

Lambda, as in the halflife meaning of the word, you know, radioactive decay, plutonium, nuclear waste, little things that make big booms and websdesign? I have GOT to lay of the Mt Dew!

I created a nice little poll for my website yesterday. I published it, responded a few times and sent it on it's merry little way. I come back this morning, 44 responses. GREAT! I can take mine out now. I go and look at the responses, and the same IP address voted 14 times in a matter of a few minutes. Ballot stuffers - wonderful.

How do you address this little problem?

What do you do with people who have NO dignity and have the compulsion to skew the results of a informal web poll?

The best I can figure is to let them. They obviously need to vent some frustrations. And if letting them stab at a "vote" button a few times keeps them from coming in and stabbing me, all the better.

So I let them vote early and often. I empower them to impact a meaningless little poll on my website the way that they want to. I give them the satisfaction of skewing the results - they can see that every time they click, the little percentage bar moves in the direction that they want it to. When they moved it what they feel is far enough, they stop. They may check back in bit, they may check back in an hour. In today's day of TV attentions spans, I wouldn't expect them to check back any further out then that. If they come back in an hour, and see that their bar isn't where they want it, they vote a few more times, and it's right back to where their obsesive-compulsive little hearts desire it to be. They feel empowered, they feel good, I have another happy website user.

They never met a geek like me - even if I am only running on 1 Mt Dew for the day.

I devised a duplicate vote decay system that slowly removes the duplicate votes. First I roll all duplicate votes into 10 minute blocks. This means that at most, a person can have 6 votes an answer for any given hour. A fairly lenient allowance that acknowleges the possibility of multiple people sitting behind a single IP address.

Then I calculate the 1 hour lagged decayed count based off of a 1 hour halflife. Mom, a 1 hour half life means that after an hour, half of the total has "decayed away" - I only have half the original duplicate answers, after a second hour, half of the remaining duplicate votes has decayed away, so only 1/4 of the original, after the 3rd hour another half of the remaining duplicate answers goes away, so I have 1/8 of the original left. By lagging this process by an hour, I have a full hour to display the full duplicate answer count before this process starts to whittle that number down.

I sum up the results of this lagged-decayed count of votes. I then use this to calculate percentage of responses and display a fancy little bargraph using CSS instead of images.

I caught myself another case of the clevers and decay my office IP down to 0 while decaying everybody else down to 1. I can now comfortably "pre-vote" a poll up on it's initial release so it doesn't LOOK like its empty, and after a couple of hours, when other people have voted, my initial padding has decayed away.

The best part of this system is that if somebody really wanted to skew the results, they can do it on the short term, and when they come back an hour later, they don't need to submit near as many responses to keep the results skewed. This reinforces the impression that they are drastically impacting the results. As they keep coming back every 20 minutes, an hour, or whenever, they have to keep voting to keep the results skewed. After a couple of hours, their initial manipulations are decaying away at a rapid rate, so they have to keep hammering on that vote button to keep the results skewed. They start to deduce that I get a LOT of votes (I never give a vote count, so they never know for sure) and give up in hoplessness to ever heavily swaying the results of the poll. A day later all their hard work has decayed away.

If a person is REALLY stubbern, I will see a LOT of duplicate activity in my raw results, and I will then make a change, and decay their duplicate votes down to 0. They are now unknowlingly dealing with an excersize in futility. Revenge is sweet!

Feel free to check out the poll page. You can also check out the results of the first public poll. Go ahead, vote for what you truly feel. Express yourself. Do it several times. Did you see the results percentage bars move in the direction that you want it to? Gratifying, isn't it. Submit a few more responses. I don't care, in a few hours its all going to count as a single response anyhow.

Build an idiot proof computer system, and they will build a better idiot.
Happy Coding!

Tags: