Construction Details for Red Oak Bookcase

I marked the radius for the curved corner with a piece of jute twine and an old sharpie marker. I tied the twine to the top and bottom of the marker so that I held the pen a consistent up and down.

Here you can see where I have made the mark for the radius to cut with my jigsaw. I measured the width of the board with the string, used that distance away from the mark for the total length of the shelf, and drew the curve for the cut line.

Because I want these shelves to sit flush to the wall, I am recessing in the mounting hardware. This Red Oak for the shelves is kinda hard to work with using a chisel. It cuts a lot different then the pine I have chiseled in the past.


As you can see, the hardware mounts flush with the back of the shelf.

I have 3 of these shelves cut, chiseled, sanded and stained. I also have polyurethaned one side of these 3 shelves. I have also cut the remaining 4 shelves, I need to yet chisel out the notches for the hardware, sand, stain, and urethane the shelves.
I hope to get the shelving finished and hung this weekend so I can start putting my books on them later this next week.

Bedroom Red Oak Floating Bookshelf with Curved Front

I need to make some book shelves to put all of my books.

I think the best place to put some shelves would be along this wall here, in my bedroom. it is otherwise unusable space. Some shelving would be perfect here.

I came up with an interesting idea for the shelves. They will be attached directly to the wall, no sides or back to the shelves. I will also curve the corner pointed out into the room so I don’t jam my leg or stomach in the middle of the night walking past them to go to the bathroom. I also thought it would be neat to ‘step’ the top several shelves back. I am hoping this turns out to be as neat in real life as it is in my head. We shall see, right?

Here you can see the step idea, I have 3 more shelves, the same size as the bottom shelf.

Here are the shelves after I have added a coat of Minwax Red Oak stain. The shelves are themselves made out of 1×8 Red Oak, so the stain really looks good. I am letting them dry on my clothes dryer rack. This seemed to work pretty well.

Shorted out substation.

Just my luck, I get up early, to play with my new server uptime monitor I made last night, and the change in pase caused me to leave my cell phone at home when I left for work.

I stop at 7-Eleven for my cheese danish and Arizona Green Tea, and wouldn’t you know it, the electrical substation across the street blows up! I don’t have a camera with me to take pictures.

It was actually pretty cool watching it. I saw a cable start to fall from a power pole and was thinking it was going to fall into the street. About that time, it hit the fence around the substation. I was inside the store, with the doors closed, and I felt the concussion of that first short. A really nice flash that extended out across the substation. Loud booming, lights in the store flickering. Lots of fun.

The cable swung out, away from the fence, and the lights came on in the store. The cable swung back into the fence, and I got a repeat of the show. No concussion like with the first short, but a good light show. The lights went out in the store again.

It did this about 3 times, and then the power went out in the store. Everybody was talking about it in the store. My only comment was ‘my server just went down’. There was a private security person getting her morning caffiene, she called 911 on her cell. The backup systems didn’t come up in the store, so the store manager ushered us out, letting the people with coffee just go, without paying. I paid for my tea and donut with cash. They locked the door behind me.

My boss drove by just as a fire truck was showing up, and he said it shorted out again. Another gal watched a different substation short out – she called in.

I was quite happy to see the fountain under the building (That’s right, my buiilding is built OVER a reflecting pool for some strange reason) was running when I pulled in. The poweer fickered a lot. One gal thought she did something, as she plugged the coffee machine in at the same time the power went out.

I hope they don’t have to bring the whole substation down in order to repair the downed line.

I wish I had my cell phone so I could have taken a photo!

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 "[email protected]"
#define TO "[email protected]"
#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
}

Ikea is opening up near me!

I LOVE Ikea. I have been to several, the one in Schamburg Ill. (Thanks Brian) and the one in the Twin Cities MN.

You wouldn’t believe the excitement I had when I saw an ad for Ikea Orlando. Guess where I saw the ad… On my very own blog of all places. I love Google Adsense.

Ikea Orlando is opening November 14th. Isn’t that cool? I am also getting one in Tampa next year.

They just opened an Ikea down in Fort Lauderdale last month. My very pregnant friend Chris went on the grand opening. Oh, she had her baby on the 24th! Congrats Chris!

Needless to say, I am excited about an Ikea near me.

WordPress Appliance - Powered by TurnKey Linux