Almost Ready for Prime Time

Why I really ought to learn CSS.

I’ve been tweaking this site night and day, trying to get all the kinks knocked out of it. It appears that although the Theme designer came up with an attractive design for this WordPress theme, it was full of errors in the CSS. And because I really don’t know CSS, it was quite a struggle for me to fix the problems.

Among the problems:

  • References to styles that didn’t exist in the style.css file.
  • Omission of code to prevent the sidebar from dangling below the rest of the page without a proper background.
  • Incorrect references to styles (id vs. class; don’t ask me more than that).
  • Styles set to display: none; so anything the style was applied to did not appear at all.
  • Other stuff I can’t even remember (and don’t want to).

In fixing these problems, I introduced a few new ones. That’ll happen when you know just enough to make you dangerous.

I learned a lot. I learned that no matter how good and professional a theme design might look, it may have problems lurking under the surface. And I learned how to troubleshoot and fix the problems — or at least how to intelligently describe the problem to someone who knows what she’s doing so she can tell me how to fix it.

The she in this case is Miraz Jordan, who has been using WordPress for considerably longer than I have. Her site, MacTips.info, runs on WordPress. And she knows what she’s doing because she uses CSS all the time. She maintains “standards-based” Web sites while I mangle them.

So as I finally work the kinks out of the site and prepare it for general release, I need to publicly thank Miraz for her help. Without her, I never would have gotten the site to look half as good as it does.

And I have a new New Year’s Resolution (other than the usual “lose weight”): learn CSS.

Now if only I can figure out those PHP commands I need to add the RSS feed code…

Reason Triumphs

The Scopes III trial ends.

From the New York Times:

HARRISBURG, PA., Dec. 20 – A federal judge ruled today that it is unconstitutional for a Pennsylvania school district to present intelligent design as an alternative to evolution in high school biology courses because intelligent design is a religious viewpoint that advances “a particular version of Christianity.”

Thank heaven! (Pun intended.) I was beginning to think the country was regressing back to a 21st century version of the Dark Ages.

I have all kinds of respect for people’s religious beliefs. Religion is important to many people. It forms the bedrock of their personal belief systems and guides their everyday actions. But when religious beliefs contradict science, I’m on the side of science.

It doesn’t bother me to imagine that I’m the product of millions of years of evolution. It doesn’t bother me to know that one of my ancestors was a squiggly thing in the ocean and another was an ape-like creature that couldn’t stand quite upright. Science has produced all kinds of theories that make evolution feasible and there is enough evidence to satisfy me. Evidently, there’s enough evidence to satisfy a judge, too.

We should be teaching science in public schools, not religion. Religion should be taught at home and at church and at church-sponsored education, like Sunday School. Parents and religious leaders are better suited to answering questions about religion. Science teachers are better suited for answering questions about science. It makes sense.

Of course, I do have a good friend who believes that the earth is only 7,000 years old. (I think that’s his number.) It doesn’t matter that there’s all kinds of scientific evidence to prove that it’s billions of years old. My friend says 7,000 years and he truly believes it. That’s part of his religion. And who am I to tell him he’s wrong?

Not a science teacher.

Anyway, I’m not surprised that the trial ended the way it did. It makes sense to me. But Mike said tonight at dinner that he was relieved. Relieved? How could it not end on the side of reason? How could a government built upon separation of church and state settle for anything less?

Server Install Complete

The server installation goes better than I expected.

I had to wait until after 10 AM to take down the server, wipe its hard disk clean, and install the Tiger Server software. That’s because the computer was busy recording KBSZ’s “Around the Town” show and saving it as an MP3 file so I wouldn’t have to.

The first time I tried to restart from the DVD disc, the computer defaulted back to its internal hard disk for restart. Darn CD/DVD reader problems again. I opened the side of the computer, banged on the drive a little, and shut it back up. Then restarted. It worked.

I had downloaded a “worksheet” PDF document from Apple’s Web site and filled it in in preparation for the big moment. It asked things like the IP address, administrator names and password, Ethernet configuration, disk name, and type of setup. So when the installer started asking questions, I had answers. I finally clicked the Install button and held my breath while the installer checked the DVD disk. Actually, I didn’t hold my breath for the whole time because it took about 15 minutes. Imagine my relief when it had no trouble reading the DVD and began the installation. About 15 minutes later, it was done and ready to restart.

I used my worksheet to answer a few more questions. Then, when I was finished, I got my first look at Mac OS X 10.4 Tiger Server. It looked just like Mac OS X 10.4, but had a few interesting icons on the Dock and one or two extra folders in the hard disk’s root level.

I spent the next fifteen minutes or so updating the “out-of-the-box” version of Tiger server with about 500 MB of updates from Apple’s Software Update server. Thank heaven for the DSL connection. It would have taken a VERY long time if I was still using a cable modem.

My next step was to restore the software that had been running on the server that morning. Not restore from backups, mind you. Restore from original copies of the software. I did Evocam first, since that was the easiest, and had the Webcam up and running in minutes.

Next was Nicecast, for KBSZ’s Internet simulcast. Had a bit of trouble getting the audio out, but after a restart, it worked fine. Of course, I had Jo at KBSZ check it there; because of weird DNS/IP looping problems, I can’t test it from a local computer. Jo couldn’t hear it. Later, I stopped by the station and gave it a try. Someone had turned down the volume on the computer’s speakers.

FileMaker Pro and the AppleScripts and Fetch shortcuts was next. By that time, the CD/DVD drive had decided it wasn’t going to read anymore CDs. Fine. Be like that. I put the CD in my production Mac and used the network to access the CD from the server. I did the install that way and it came off without a hitch. The configuration took a while, though, and required that I rewrite a few of the scripts for the new directory structure on the server. Fix, test, repeat. I was getting used to it.

I also set up Audio Hijack Pro to record the four shows it would need to record and modified the script that would get the 8 AM news on KBSZ’s Web site each morning at 8:18 AM.

When everything appeared to be working right, I set up the computer to automatically log in with me as the user and launch the stuff it needed to launch at startup for truly automated operation. Then I crossed my fingers and restarted.

Everything started up as it should, but FileMaker Pro displayed an error message. It appears that it cannot open files unless it is the foreground application. Although I had set it up to open last, other programs were slower to open and became the foreground application, thus preventing FileMaker from doing its thing. Not acceptable. I thought about writing a script that would delay FileMaker’s launch so it would be the foreground application when it finally opened, but came up with a simpler solution: I just set up the other applications to hide after launch. That left FileMaker Pro as the only application that wasn’t hidden, thus leaving it in the foreground.

Restart. Perfect.

I set up the computer to shut down and restart each night at around midnight. This is to force FileMaker Pro to refresh its databases with current day’s information. In the future, I’ll find a utility that’ll automatically restart the FileMaker Pro databases for me.

I messed around with the FTP setup for a while and didn’t get anywhere good. I might have to rethink the directory structure. It appears that I can’t FTP into the root directory for the computer. That’s unfortunate, since I created a bunch of folders in that location that I’d like to get into. It looks as if I’ll be moving them and modifying the scripts that look for them where they currently are.

Today, I won’t be spending much time in the office. I’ll stop in to check things out, then come back later to press a CD for my radio show. This morning I need to pick up my helicopter from Prescott, where it just had its annual. And I have a charter at 2 PM. Possibly another charter sometime this afternoon, too.

Thursday morning, I’ll play around a bit with Blojsom, the blogging software that’s part of Tiger Server. I’ll be replacing wickenburg-az.com with a blog-based Web site, making it possible for a team of people to add content and to automate the formatting of pages. I have a Doctor’s appointment later in the afternoon, so I won’t be spending as much time on it as I’d like. So it looks like Friday will be my next full day working with the server.

No rush, though. Rather do it right than do it quickly.

Stalled by a Bad CD-R/DVD-R Drive

I get ready to wipe my server clean and start installation but get hung up by bad hardware.

By Friday, I had all my Web sites moved over to GoDaddy.com. The LangerBooks.com site, which had been having problems since I initially set it up there on Monday, was not fixed by Friday. So I deleted the setup an started again. Within minutes, it was set up properly and ready to go. Over the weekend, the DNS change was propagated through the system. Just about every browser looking for one of the 18 domain names I host was pointing to the appropriate site on GoDaddy.com.

My e-mail is already hosted by GoDaddy.com. All my e-mail addresses use the theflyingm.com domain name and that domain has been hosted on GoDaddy for at least a year now. So I didn’t need to move any of my e-mail server stuff. Although it exists on my local server, nothing points to it.

There are only three things that remain hosted on my server:

(1) FileMaker Pro provides live access to searchable data. I’m running FileMaker Pro Server 6 on that machine, even though version 8 is current. I wrote all my Web-compatible routines using FileMaker’s CDML language, which is no longer supported by FileMaker Pro 8. So if I updated to the new version of the software, I might have to rewrite the Web interface. That’s not something I want to do. FileMaker also creates the static text ssi files I use on serveral sites. Those files are now put into place using AppleScripts that call Fetch into action. A cool solution, if I do say so myself. After I install the server, I’ll have to reinstall FileMaker Pro, including all the databases and CDML files that run with the Web sites. I’ll also have to reinstall Fetch and make sure the AppleScripts go in the right places. This should take about an hour.

(2) Nicecast is what gets KBSZ-AM radio on the Internet. It’s pretty much plug and play with just a few settings to tweak. I expect this to take about 20 minutes to reinstall.

(3) Evocam is what creates the Webcam image for wickenburg-az.com. It’s actually two images and a movie. It has FTP built right in. Reinstalling should be pretty straightforward.

One other piece of software runs on the server all the time. It’s called Audio Hijack Pro and its job is to automatically record and save certain broadcasts from KBSZ’s stream. For example, the 8 AM news report is available online every day after 8:20 AM. This is all automated: Audio Hijack Pro records the show and runs an AppleScript routine that uses Fetch to upload it to the appropriate directory on the KBSZ-AM Web site (now at GoDaddy.com). Likewise, Audio Hijack Pro records the daily “Around the Town” show and the first hour of the weekly “Rock-a-billy & Beyond Show.” (Starting tomorrow evening, it’ll also be recording my first radio show, “Classic Rock Cuts.” You can tune in online on Wednesday nights at 8 PM MST. I’m looking for sponsors; call KBSZ at 928/668-1250 during office hours to see how much bang you can get for $5 or $10 bucks. Make sure you tell Jo you want to advertise on my show, which will be podcast, too.)

So yesterday morning, I had a clear idea of what I needed to do and what files I needed to preserve from the server. I made copies of all the files I needed to preserve and put them in a folder that I’d use to create a CD. This would make it easy to load them all back in after I wiped the computer clean and reinstalled the software.

And that’s where I hit a brick wall. The CD burner wouldn’t work. It kept giving me error messages.

No problem. I used my network to move all the files over to my main production computer and created the CD there. Now I was all ready to install.

I put the Mac OS X 10.4 Server Unlimited Client DVD disc into my server computer and slid the drawer close. Then I waited expectantly for the disc icon to appear onscreen.

Nothing happened.

I pushed the button to slide the disc in and out and in and out. Nothing. I pulled the disc out and put in the first install CD. (It comes on one DVD or a bunch of CDs; I’d rather use the DVD so I don’t have to switch discs.) Nothing happened.

I put the DVD into my production computer. It appeared onscreen just like it should.

Shit. I had a real hardware problem.

I blew canned air into the CD drive. Lots of dust flew around. Not good.

My office can be a very dusty place. Part of the problem is that a few years ago, some idiot decided to drive a perfectly good western business — the Big Corral horse boarding/riding facility — out of its downtown home and bulldoze all the trees, shrubs, and buildings off the property. In its place, the idiot planted a “For Sale” sign and erected part of an ugly chain link fence. To this day, the land lies open and barren, baking in the sun, supplying that side of town with all the dust it can handle. In my situation it’s a bit worse. I had some work done on the floors in my unit’s kitchen and bathroom and the sanding done by the floor guy sent more fine dust into the air than I thought possible. With a big fan on the back of each of my computers sucking air in, it’s no wonder they were filled with dust.

Of course, I’d already used the canned air on that computer. Just a few days before, I’d installed 512 MB of RAM. While the machine was wide open, I’d used the canned air on it and it was pretty clean. But I hadn’t dusted the drives.

Long story short, I couldn’t get the drive to work. And I didn’t have a spare. And the nearest Apple store didn’t have one. And Apple’s telephone support people told me a replacement drive would cost $354 with tax and shipping. But while I was waiting on hold to hear this bit of news, I discovered I could buy an external Firewire drive for about $100. Sheesh.

By this time, it was after 2 PM and too late to do any installation anyway. I figured I’d bring my new 80 GB external Firewire hard drive — the one I bought t help out my PowerBook — to the office, make a disk image of the DVD onto that, and use the disk image to install the server. If that didn’t work, I’d just buy an external CD-R for the computer and use that. Of course, all this was putting me back in schedule, but I really had no reason to rush. The Web sites were enjoying their new home and were paid up for 2 months.

Of course, I had to give the CD-R/DVD-R drive one last try at repair. So I went to the local hardware shop, bought a cheap ratchet screwdriver with a bunch of heads, and removed the drive from the computer. This was no easy task because although the computer opens easily enough, the CD drive and the Jaz drive I’d bought to go with it (and used about 4 times) were really jammed in there. Then, with the computer up and running without it — no reason to keep that software offline — I removed screws and protective plates until the optical lens and drive mechanism were revealed. I had to peel back two pieces of tape that were obviously in place to prevent the average user from doing what I’d done. I blew more air on it and moved the drive mechanism back and forth with my fingers. It didn’t look screwed up. Satisfied that I’d done all I could do, I put it all back together and stuffed it back into the computer. I fired it all back up and pressed the button to slide the drawer out.

The drawer wouldn’t slide out at all anymore. I’d mounted it a tiny bit too high and it was catching on the computer case.

So I opened up the computer while it was running and did what anyone else in my position would do: I banged on the top of the CD drive to nudge it down. The drawer slid open.

I stuck the DVD in there, fully realizing that that might be the last time I ever saw it. Then I slid the drawer back in.

Would you believe it? It worked!

I couldn’t believe that it was really reading the DVD as well as it was, so I decided to test it by starting the computer from the DVD. That worked, too.

Of course, I didn’t really want to install the software then. It was after 3 PM and I didn’t feel like tackling the installation that late in the day. So I restarted from the hard drive and let all that software come up and run again.

But now I have my work ready for me today.

The Chickies are Here!

A day late, but twice as many as I expected.

If you know anything about me, you know that I live in a rather rural area and have been keeping a small flock of chickens for the past six or seven years. My first flock was the best: eight hens who were tame and friendly because I’d raised them from chicks. Coyotes got three of them in a day (which is why I have a coyote tail hanging from the rearview mirror in my S2000), and, as a result, I had to keep them cooped up all day long, first in their relatively small chicken coop and later in a fenced in chicken yard my friend John built for me alongside the coop. The remaining five chickens produced, on average, four eggs a day. We’re not really big egg eaters, so we wound up giving away fresh eggs to just about anyone who showed up at our door — the farrier, the FedEx man, and the APS meter reader — as well as friends and neighbors.

Time passed. I got more chickens and coyotes and neighborhood dogs took some chickens away. We got a rooster from my friend Janet. I hatched one chick on my own, then bought two more to keep it company. One my my hens hatched her own brood of chicks, all of which were killed by the rest of the flock. Later on, I started replacing chickens with older birds that were less likely to be killed by the flock. Neighborhood dogs dug their way into the yard and killed all my chickens but one; we later electrified the outside of the yard fence to keep them out.

As I write this, I have two hens and a rooster that I got from my hairdresser, Sue. She was moving and looking for a home for her flock. When I got the hens from her, one of them was laying. But now neither of them do. We say they’re lazy chickens. And I’ve already decided that they’ll soon go to a new home in Wenden, where my Mexican friend Celia will turn them into enchiladas. She says fresh chicken is a lot better than store-bought. I don’t doubt her, but I’m not about to wring their necks, pluck them, and gut them to find out for sure.

When I decided to replace my little flock, I decided to start from scratch again — no pun intended — with a fresh batch of chicks. I ordered from Ideal Poultry in Texas. They’re one of the few hatcheries that will ship small orders (less than 25 chicks) and will vaccinate for Marek’s disease (which killed a few of my chickens a few years back). I ordered Ameraucanas (Araucanas), which are also known as the “Easter Egg Chicken.” Why? Because they lay colored eggs: brown, green, and sometimes even blue.

I’d had Ameraucanas before and I loved the green eggs. One of my hens laid a beautiful sage green colored egg that was almost the same color I’d painted my kitchen. The colored eggs are a novelty, but what’s nice is that this breed is a pretty good producer. All of my chickens laid regularly until their untimely deaths.I ordered 10 hens and 2 males from Ideal Poultry. I got an e-mail message a few days later, saying my chicks would be shipped out on December 7. Ideal ships via Priority Mail and I knew from experience that I could expect a call from the local post office on Friday morning, around 6 AM, telling me that my chicks had arrived. I prepared a large plastic storage container with pine shavings and paper towel sheets on the bottom. Bought new a new chick waterer and chick feeder, and bought the smallest bag of chick starter I could: 25 lbs. I also set up the heat lamp over my makeshift brooder. All I’d have to do when the call came was to plug in the heat lamp, fill the waterer and feeder, and bring the chicks home.

But the call never came on Friday. I went to the post office to try to track down the chicks, but without a tracking number, it was impossible. I was told to wait for the 11 AM express mail truck. It arrived at 1 PM. No chicks aboard.

Meanwhile, I’d called the hatchery and left numerous messages and e-mail messages. Chicks can survive without problems for up to 48 hours after hatching without food or water. After that, nothing’s guaranteed. All I could think of was a box arriving at Wickenburg Post Office the next day with a dozen dead chicks in it.

But there was nothing I could do. I had to be in Tempe that evening for Mike’s company Christmas party. The plan was to spend the night at the Embassy Suites on South Rural. I was hoping to do some Christmas shopping while I was down there — I needed a Lowe’s gift certificate for my brother and his wife — but I was already out of time. So I hopped in my Honda and zipped down to Tempe.

The hatchery called my cell phone just after I checked in at the hotel. The guy who called was probably the owner and he had a thick Texan drawl. He told me that the shipment had probably been delayed on Wednesday because of an ice storm in Dallas. (I guess I missed that on the news.) A lot of flights were cancelled. But the chicks, which had been hatched after noon on Wednesday, definitely went out. They should arrive by Saturday morning. The hatchery would replace them if they died enroute.

Not much I could do in Tempe, so I tried not to think about them.

We went to bed around midnight, which is almost like staying up all night for me.

Mike had a bad night. Neither of us drank very much at the party, but something he ate didn’t agree with him and he was up half the night. I woke at 7:30 AM and left him to sleep for a while. We had a suite, so I surfed the channels on the television in the other room while drinking coffee I brewed in the tiny pot in our kitchenette. I wanted to go home and get the chicks settled in — if they were still alive — but I was worried about Mike.

We finally checked out at about 9:30 AM. We each had our own car, so we went our separate ways. I got in to Wickenburg at about 10:45 AM and went right to the post office. I heard my new little babies peeping as soon as I got in the door.

The post office folks had been kind enough to cut down a plastic cup, put some water in it, and give it to the chickies. So I think some of them got something to drink. At this point, they were nearly 72 hours old and very vocal. I thanked the post office folks, put the box of chicks in the car, and drove home.

Ideal Poultry ships chicks in a small cardboard box with plenty of air holes. The box is held closed by a plastic strap, making it easy to open up the sides and peek in. The box is small on purpose; it forces the chicks close together so they keep each other warm. And it probably prevents them from falling over all the time. Normally, Ideal puts a rolled up straw thing in one side of the box, since I always place small orders. This time, it decided to fill the empty space with extra chicks. So when I started pulling them out, I didn’t stop until I had more than 20 of them in their new home.

There were two dead chicks on the bottom of the box; they’d obviously died early in transit because they were very small and their brethren had stomped them into the hay. Normally, I’d feel pretty sad about this, but with so many live chicks to occupy my mind, it didn’t bother me as much as it should have.

Most of the chicks were very active. I went through my ritual: taking each one and dipping its beak into the water to teach it how to drink. It sounds silly, but they really don’t know how to drink until you show them. And that’s kind of what gets them started on their unaided lives. Kind of like slapping a newborn baby on its butt to get it to breathe.

I haven’t gotten an exact count yet, but I think I have 28 chicks. The hatchery may have thought it was doing me a favor by shipping so many extras for free, but I have a definite space problem. The plastic bin I bought to house them for their first 3 to 4 weeks won’t last more than a week now. I’m already scrambling for a large box to move them into. Maybe they thought I had a nice, warm Arizona yard to keep them in. In reality, they’ll live in my garage for at least two months. That’s when they’ll have enough feathers and down to handle the cold winter nights.

They are cute. No doubt about it. Most of them already have feathers growing on the ends of their tiny wings. They’re babies, so they’ll walk around and eat and drink and jump over each other and then suddenly get tired and fall asleep. They’re fun to watch. And when they’re all awake, they make a ton of noise.

As for my current adult flock: their days are numbered. I’ll see Celia again right before Christmas. Although I already gave her her Christmas present, she might be taking three bonus birds home with her that day. Enchiladas? Tamales? Or just roast chicken? If those girls don’t start laying eggs soon, they’ll be the main course on Celia’s table one day soon.