Computers

Who Needs Floppies

Send to Kindle

Since I just wrote about my laptop spring cleaning, I may as well get one more geek post out of my system. πŸ˜‰

I run many Asterisk servers. I love it. That said, I am still running the 1.2.x branch on all of the servers. They are up to 1.4.18.1 on the production branch. I will never install the 1.4 branch. Not because I don’t believe it’s good, but because they are getting close to releasing 1.6 into production (they are currently at 1.6.0-beta6!).

So, I was interested in getting a test machine set up to install it (after it goes production), so that I can get to know it before committing it to production servers. I considered running it on a VM on my laptop, but I really want to avoid that if I can (read my spring cleaning post again for any number of reasons).

I considered buying a used machine on EBay, Geeks.com, Tiger Direct, etc. You can get pretty beefy machines for under $200, and reasonable ones for well under $100 on EBay, but you’re risking the seller, etc.

Last week, while at Zope Corp., I noticed that they were gathering old junk in an area for their own version of a spring cleaning. In that pile were two old machines. One of them was a Dell Dimension 4550, a 2.53Ghz machine, 30GB hard drive, with 256MB of ram. Not exactly the kind of ram you’d like to see, but otherwise more than adequate to power Asterisk. For a test machine, ideal!

I asked (multiple times) if anyone else hoped to snag it, or ever see it again. People laughed (rightfully so). πŸ˜‰

Into the back of my SUV it went. I stored it for a week in our utility room and today I finally pulled it out. I wanted to install CentOS on it. The other day I downloaded the 3.6GB DVD ISO in a drop over an hour on my FiOS link. Yummy!

I popped the DVD in the drive and booted. Nothing, it just booted into the existing CentOS 4.2 (I wanted to install the 5.1 release). Hmmm. Thankfully I didn’t waste time figuring this one out. I quickly found out that the machine had a CD drive, no DVD. OK, moving on…

I downloaded and burned a CentOS net install CD (only 7.1MB) and booted again. Again, straight into the old CentOS. Hmmm. Somehow, the CD drive isn’t working (boot order was set correctly).

I didn’t have root access on the machine, and it can PXE boot (boot over a network, but I didn’t have a target machine for it to boot off), but it can’t boot off a USB device. πŸ™

Floppies to the rescue! My second choice for an operating system was Debian. I downloaded five floppy images for a net install. I booted off of the floppy, and it failed again. This was getting very tiresome…

I booted into the existing system, and tried to mount and read the floppy. It took forever, but finally, I got a clean listing, so there was no hardware problem with the floppy. I tried that with a CD, but it was never able to mount that, so indeed, there is a hardware problem with the CD drive.

It turns out that even though I pressed F12 to change the boot order, and I picked the floppy, it failed. I pressed F2 (for yucks) to get into setup. Once I moved the floppy boot up the ladder, and saved, it successfully booted off of the floppy. Whew.

I now have a smooth running Debian system configured to my taste. I am now patiently awaiting the final release of Asterisk 1.6.0.

So, do we need floppies? Hopefully not going forward. But, as long as there is life in older systems (and clearly there still is), the fact that my four-year-old laptop has a built-in floppy drive ended up saving me some headaches. More important, are you impressed that I had five blank floppies handy as well? πŸ˜‰

Laptop Spring Cleaning

Send to Kindle

In two weeks, my current laptop will be four years old. Wow! It’s a little hard for me to believe that I have resisted the siren song of all the new hardware that has come out during that time.

While I covet the latest stuff, and configure up a dream laptop online at least twice a year, I am (marginally) embarrassed to admit that I still love my current laptop. Clearly, I chose wisely back then, thankfully.

Over the last few months, some of the things on the machine seemed to be dragging me down. For the most part, things were reasonably peppy, but on occasion, things would be slow. It never felt like a horsepower problem, as the same thing that was peppy before, would now be slow. The next day, it might be faster again.

One particularly noticeable problem was typing in dialog boxes in Quicken (I believe other programs as well, but Quicken was obvious and reproducible 100% of the time). When I typed my master password in the dialog box in Quicken, the delay between key presses was insane. It would also complete (meaning, I could type as fast as I wanted), but it was annoying.

Lois was experiencing similar (but different) slow downs. One thing that seemed to be happening too frequently to both of us (but to Lois much more than than to me) were application crashes. Most were in ancillary programs that weren’t central to our everyday computing. Unfortunately, more for Lois than for me, when it happened, the infamous dumprep.exe (Microsoft’s reporting program) would take over the machine. It can suck the life out of the machine, locking everything up for very long stretches while it’s gathering information.

I found the following article on the net on how to disable dumprep.exe. That alone made a world of difference, again, in particular on Lois’ machine.

That got me to thinking. Over time, I have installed so many different applications. The vast majority of them proved less useful than I originally expected. Of course, if they weren’t meant to be used all the time, I probably didn’t uninstall them, because I wouldn’t have thought of them. Many of them leave little footprints, including some that start up in the background automatically.

I finally decided to do something about. I analyzed all of the processes that got auto-started, and removed a number of them. I uninstalled quite a number of programs that I had no interest in any longer.

Finally, and perhaps most importantly, I uninstalled and then installed from scratch an updated version of my personal firewall (yes, going through the pain of teaching it my rules again). This also caused a full system scan for malware, which was not present on the machine (meaning, the slow downs were not caused by a virus, root kit, etc.).

Voila! The system became springier. Typing in Quicken is now normal. Whew.

I then did this on Lois’ machine as well, and things are a little better there as well. Here’s the one thing that is still maddening (beyond description or belief) on her machine. A few weeks ago, her machine started to Blue Screen Of Death (BSOD) whenever it was turned on in the morning. Yes, every single day!

On the second boot, it would just work. Shouldn’t computers be nearly 100% deterministic in the boot and initial login sequence? If so, shouldn’t a BSOD (without the user clicking or typing anything!) repeat exactly the same way every time?

So, perhaps it’s a warmup thing, like the drive warms up by the time of the second boot? Who knows. Anyway, it’s distressing, to say the least, but at least it consistently worked on the second boot/login, every single time. This went on for weeks. Now, out of the clear blue, it’s been at least five days in a row where it just boots up correctly the first time. Go explain that! (Not that I’m complaining…)

The moral of this post is that you can’t (or shouldn’t) go for years without tuning your machine to your current needs. Experimentation is OK, but leaving all of those experiments hanging around forever is just like having too much plaque on your teeth or arteries.

I intend to buy new laptops for both of us at some point, possibly even in 2008, but I’ve just bought us enough life to make the decision without any pressure. The biggest decision is whether to repeat my previous choice (giant, ultra-heavy, ultra-high-end model), which is painful to lug around, but gives me a real desktop replacement wherever I am, or go smaller, lighter, more convenient, but less beefy.

I didn’t regret my last choice, so I might end up repeating it, but we’ll have to wait and see… πŸ™‚

Yet Another Theme Update

Send to Kindle

YATU (Yet Another Theme Update)…

In two previous posts, I mentioned that with my new XAMPP setup, I could and would be tinkering around with WordPress themes a bit more. At the same time, I switched to the Aspire theme, which I liked (functionally), but wasn’t thrilled about in terms of color contrast.

For the past week or so, I’ve been playing with a variety of themes. Conceptually, I liked a theme template called Sandbox (it’s also linked in the footer on every page now). Basically, a theme template is one that can be used as a standalone theme, or other themes can point to it as a base template, and customize it via css in a separate theme directory.

Sandbox held a competition for theme designers to build their own themes on top of the Sandbox template. You can see on that page that the designs varied greatly (showing the strength of good semantic markup, coupled with good knowledge of css layout).

Of the designs shown on that page, SandPress was closest to the style that I am currently fond of (three column, two right sidebars). I downloaded it and started to tweak. I also downloaded a few free css editors, including a couple of more complete editors (HTML/CSS/Preview, etc.). None made me particularly happy, but they all worked.

I then received an email announcement from ActiveState announcing the open source release of Komodo Edit 4.3. ActiveState was a portfolio company of mine from 2000-2003. We sold it to Sophos, which later spun the tools part back out into a standalone company called ActiveState again.

Even though they developed Komodo IDE while they were a portfolio company of Opticality, I never possessed a copy nor even saw a demo. It was an ancillary business to the anti-Spam part of ActiveState at the time. Now that the editor portion (not the entire IDE) was open source, I decided to download it.

Bingo! It was the more interesting of the tools (for the way my brain works) and I was able to accelerate my tweaking of the SandPress theme.

There was nothing wrong with SandPress out of the box, and I could have lived with it, reasonably happily. My tweaking was motivated by two things: wanting to get my hands a little dirtier with the theme process (specifically css in this case) and wanting to slightly simplify the theme (less graphics, less whitespace, etc.).

I accomplished my goals (to my taste, but probably not to others). This theme (of course, if you’re reading this more than a week after I wrote it, perhaps I will have changed again) is the result of a tweaked SandPress/Sandbox theme. πŸ˜‰

It may last a while, it may last a day, I’m really not sure. I like it, but I haven’t exactly lived with it for any amount of time either. There is a new theme that is in alpha now (so I have not had access to it), called Vanilla, which is also based on Sandbox, but combines Sandbox with the Yahoo User Interface (YUI) library. I’m intrigued by the concept of making all of this more standards and reusable oriented, so I will likely check it out when it’s finally ready for general distribution.

Now that I feel a tad more comfortable with the theme process, I may tweak a bit more, but it probably won’t be things that will be worth blogging about directly.

Here are a few final observations/questions. If you’re a theme expert, please leave a comment so that I can learn from you!

I wanted to change the footer.php to add a link to SandPress and to add a copyright. I had to change the footer.php in the Sandbox directory, rather than to my tweaked SandPress directory. On the one hand, it seems to make sense, since Sandbox is the template, and a copyright statement might apply to all themes based on Sandbox (on my site).

On the other hand, the link to SandPress doesn’t seem to belong in the Sandbox directory at all! If I switched to another Sandbox-based theme, it should be able to easily point to that site. It would seem that a theme template should allow the easy over-ride of specific php files, and not just css. Perhaps I’m missing something. I certainly didn’t dig at all…

Lastly, I can’t decide whether I should switch the main blog page (the index.php equivalent) to be article summaries with read more links. Given the length of my posts, the front page is a honking big one. Not many people come to visit that page directly so I’m not sure it matters. If anyone has a strong opinion, with an argument to support it, please leave me a comment. My gut is now telling me to switch to a condensed front page, but I just don’t know if that makes sense or not…

Internet Connectivity Update

Send to Kindle

In this post, I discussed my emergency backup system for when my house or apartment Internet connectivity goes down. In that report, I mentioned that my WiFi connection in the apartment was getting reasonably flaky.

We’re in the apartment all week this week, so I was bracing for the experience. As I mentioned before, the WiFi router wasn’t far from our laptops, roughly 21 feet. There is a bathroom in between the two rooms, so there are two walls for the signal to travel through. Still, most of the time, it works well.

When the link is up, tests show an average download speed of roughly 3.6Mbps. Upload speeds of roughly 364Kbps.

On Monday and Tuesday, we had a few drop outs, but they were relatively short lived. Yesterday morning, we lost connectivity, and it didn’t come back within five minutes. I could have put the emergency plan into action, but I decided to try something else.

I have tons of extra (mostly ancient) networking equipment. In both the house and apartment, I have a pair of old Netgear XE602 Powerline Adapters. The pair in the house never get used, because the one place I could have used them yielded a near-zero signal. In the apartment, I have used them on rare occasion, but they worked reasonably well.

So, yesterday morning, I grabbed the pair, plugged one end in next to the main router (in the remote room) and brought the WiFi router into the bedroom, and connected it to the other XE 602. We immediately had a connection. It’s possible that the reboot of the WiFi router (even remotely) would have corrected the problem.

More important, when I did the speed test, I got 5.2Mbps down and 494Kbps up. After a while, even though I didn’t have a problem, I switched to a wired connected (since the WiFi router was close enough to my machine to just plug in directly). Lois remained wireless the rest of the day.

We never lost connectivity, but at least two times, there were instantaneous blips that would be unnoticed by humans (normally), but occasionally cause my SSH client to drop the connection to the server. I think it’s the Powerline devices (they are no longer sold new, and perhaps newer generations ones wouldn’t exhibit these problems). No worries though, this is way better than what we were experiencing.

For now, I’ll leave it set up this way. We have company coming in tonight, and staying the weekend. I don’t know if they will bring their laptops, but if they do, I may need to relocate the WiFi back outside, to give them a workable connection. We’ll see…

Random Madness

Send to Kindle

I’ve written a number of times regarding my frustration at the apparent randomness of many computer programs/processes. In some cases, it’s simply not explainable (from the user’s perspective). In some cases, it almost feels rigged, but then something else happens, which even casts doubt on that theory…

Regular readers already know that we love Bluegrass and Country music. They also know that Alison Krauss is one of my favorites (along with Union Station). When her new album with Robert Plant came out (Raising Sand), I immediately bought a copy (downloaded from Amazon MP3). I listened to it once, thought it was pleasant, but I liked her stuff with Union Station more.

We recently started watching a drop of CMT and GAC (country music television stations) and have seen the video of Gone Gone Gone (Done Moved On) a number of times. It’s fun. I then listened to the album again, and I’m still not nuts about it, but it’s not bad either.

We then saw that they were going to be appearing together at the WAMU Theater at Madison Square Garden (MSG). We’re on a number of early access lists. For most (perhaps all) MSG/Beacon Theater/Radio City Music Hall events, we get early access through American Express. Typically tickets are available as much as a week before they are available to the general public.

In the case of Alison Krauss, Lois is also subscribed to her newsletter, and we get a password for early access directly related to the Alison Krauss fan club. So, two separate shots to get good tickets.

I was on the site within a minute of tickets officially being available. There simply weren’t any great seats left. We could have sat in the second to last row. It certainly didn’t feel special. πŸ™

We decided to pass. We know that we would definitely enjoy seeing them, but it simply isn’t that big of a deal, and we decided to ignore it.

A few days ago, Lois gets another email from the Alison Krauss site, informing her that because tickets sold out in a matter of minutes (no, really?), they were adding a second night. Those too would be available using the password, starting at 10am yesterday.

I was on the site at 10:01 (yes, I’m slow, I know!). No tickets anywhere near the stage. Yuck. I tried a few more times, and nothing good was available. I decided to simply put this concert out of my mind.

Then yesterday afternoon (long after my failed attempt) I received a separate notice from the MSG/Amex side of the equation, announcing the second date, and the early access for Amex holders would start today at 10am. I have to admit that I chuckled to myself. After all, the super connected Alison Krauss fan club had access to these tickets a full day in advance, and nothing good was left.

Still, this morning, at roughly 10:03 (I was in a meeting, and I missed the exact 10am deadline), I logged on to Ticketmaster using the special Amex link, and searched for tickets. While I was able to get two seats that were better than the day before (which was quite surprising), they still weren’t good. I hit the “search again” link, though I can’t really explain why I bothered…

Hola! This second search produced wildly better seats. Seven rows from the stage, on the left, but not too far left. I grabbed them, so we’re going to the June 11th show.

That’s cool, no doubt, but, it also annoyed the daylights out of me. In all cases I clicked on best available. In this case, I can likely guess the scenario, so it’s not really accurate to call it computer randomness (meaning, the program is not to blame, but life’s randomness is).

I think that when I searched the first time, someone else started a search before me. They were assigned the good tickets, but were given 2:15 to complete their transaction. For whatever reason, they didn’t complete the transaction in time. I then got lucky in that I searched again, at exactly the right moment in time, and was able to get those tickets.

I’m happy at the end result, but why weren’t those tickets available the day before? On that day, I tried at least five separate times, in some cases waiting 30 minutes between searches. At some point, I would have thought that these tickets would have been available, unless, they were reserved for Amex only, all along.

Oh well, another all’s well that ends well story… πŸ™‚

On a separate but related topic, perhaps someone out there can explain the following head-scratcher to me. Ticketmaster is one of the few outfits out there that charges zero to snail mail real tickets to me, but charges for me to print the tickets myself. I simply don’t get it. How could they not want to incent me to print it on my printer, and avoid the printing, handling and postage costs?

Whenever there is enough time to have them safely mailed (June 11th certainly qualifies), I always have them mailed to me, because I hate incenting bad behavior on the part of any vendor. I always print my own tickets when that is the cheapest (usually free, but not always!) choice.

Folks, please explain to me what I am missing in this equation, even if your theory is kooky! πŸ˜‰

ejabberd 2.0.0

Send to Kindle

I have been running ejabberd 1.1.3 since I christened my current server nearly a year ago. In this post, I reported on some of the problems I had getting ejabberd to work with the Python-based ICQ and AIM transports. All of the problems were mine, and not the fault of the software.

The above link to ejabberd is to the company behind it. Here is the link to the community site.

What I didn’t mention in that post, and didn’t bother writing about in a separate post later on, was the trouble that I had with the pre-built binary installer for Linux. No matter what I tried (and I tried many things!), I couldn’t get it to work. It’s important to have a binary installer, because ejabberd requires Erlang, which is not typically installed on most Linux distros.

It turned out that the first download that I tried had a problem in that it didn’t have SSL support compiled into the Erlang binary, so even if I could have wrangled it to work, I wouldn’t have been happy, since I always use TLS (previously SSL) in my Jabber communications.

In the end, I downloaded and compiled Erlang, and then downloaded and compiled the ejabberd source as well. I got it working, but it was way more painful than it needed to be. A number of months ago, ejabberd 1.1.4 was released. It included a number of changes that I had no need for. Still, I downloaded it to see if the binary installer would work for me. It didn’t. I spent a bit of time really trying, and again, failed. This time though, it wasn’t worth going through the entire dance, since I had no need for the newer updates.

Two weeks ago, they released ejabberd 2.0.0. This was significant enough to warrant an install. I shuddered to think that they hadn’t fixed the binary installer problem, but I was prepared to slog through a full source install if that was the case.

My fears appeared to be justified. After installing, I received an error message that the installation failed. However, I tried running it anyway, and happily, I can report that even though the message claimed failure, ejabberd 2.0.0 worked perfectly once I tailored the default configuration file! Yippee!

I installed it last Friday, and it’s been running happily for four days now. It’s too early to be sure, but it’s possible that it has solved another problem. A few months ago I started having sporadic problems with the AIM and ICQ transports (I use the Python-based ones). One or the other one would fail, on occasion, and log me out. It was happening frequently enough for me to write separate init.d scripts to stop and start each separately, but not frequently enough for me to seriously considering investigating alternatives.

I have switched a number of times between Gajim and Pidgin (the new name for GAIM). There’s something that I like about Gajim, but somehow, every time, it ends up disappointing me or annoying me in some way. When I switched back from Gajim to Pidgin, the transports became slightly more stable, so I was a little happier, and committed (at least for a while) to just sticking with Pidgin.

Anyway, for the past four days, not a single problem with the transports, so it’s also possible (but too early to be sure) that ejabberd itself was somehow involved in the equation (perhaps it was too sensitive to problems in the client). I’m certainly crossing my fingers that the transport problems are behind me.

Welcome ejabberd 2.0.0! πŸ™‚

Friend Requests

Send to Kindle

Social Networks have been around for a relatively long time (in Internet years). They continue to mushroom. One of the reasons is the constant Friend Requests (invitations) one receives when anyone they know discovers a new network/site.

I see the utility of some of these sites, but in the end, unless they are used sparingly, and with a specific goal in mind (LinkedIn for example), they can very quickly become time sucks, geometrically if you end up feeling the need to keep up on multiple sites.

After hearing the buzz about Facebook for years, I succumbed and joined in August 2007. I had two purposes:

  1. See if the experience was interesting and/or useful
  2. See how long it would take to get invites

To test #2, I decided to not invite anyone to be a friend of mine, even those people who introduced me to Facebook. I’ve been a member now for six months, and I have still not invited anyone. I only have 26 friends, so I haven’t been overwhelmed with Friend requests either.

The requests can be divided into four categories:

  1. Bulk uploads
  2. Word of mouth
  3. Friends of friends
  4. Strangers

After I joined Facebook, I started getting a few invitations from people I hadn’t heard from in years. In a few cases, the last contact might have even been a bit strained. It took me a bit to realize that in likely all of those cases, those people joined Facebook after I did, and they uploaded their contact data (from Outlook, Yahoo, etc.) to Facebook, and permitted the site to match any members it had the same email address for.

While I applaud the ease with which these sites make these connections possible, ultimately, I find it extremely lazy (and intrusive) on the part of the uploader, who is building a (phony) network quickly, rather than a quality network, more slowly or painfully. That’s one of the reasons that I have never taken advantage of this (not just on Facebook, but on the dozen or so other sites that I could have), even though my Outlook contact database is reasonably large.

Word of mouth has made for high quality connections (for me). This will usually come in the form of some casual conversation where someone will mention something about Facebook (or another network), and ask if I’m a member. After admitting that I am, I will often get a friend request the next day. Those have typically amounted to more real interaction/sharing after the initial connection than the bulk upload ones.

Friends of friends has also been reasonably satisfying (to me, personally). One of the nice touches in Facebook is the concept of a social graph, understanding how you are connected to others. When one word of mouth friend connects with me, often other people in our circle are already connected to my friend, and they instantly discover (in their feed) that I too am on Facebook, and they friend me. Once that happens, we all see our overlapping friends on each other’s profile.

Finally, strangers. Here is one extreme example. I am a member of Last.fm (which I’ve written about in the past). I have three friends there. A month or so ago, I received a friend request from a name I didn’t recognize. I looked at their profile, and it was (supposedly) from a 17-year-old female. Uh huh, I am exactly who she is looking to friend to share musical tastes.

After declining, I mentioned it jokingly to one of my three real friends on Last.fm, and he too got an invitation from the same person. Oh well, I guess I wasn’t really all that special after all… πŸ˜‰

But, it’s not always spam, just because it comes from a stranger!

This past Sunday, I received my first friend request on Facebook, from someone I never heard of. His name is Scott Dale. Before declining (which was my first instinct), I decided to Google him. I found this link, and was pretty sure that it was the same person who had invited me. OK, so he’s a musician, and maybe I somehow know him, and have just lost my mind.

So, instead of accepting or declining, I send him a message through Facebook. I ask him (apologetically) whether I know him. Even this form of contact made me hesitate and think before I acted. When you send a message to someone who isn’t your friend on Facebook, you are explicitly granting them access to view your profile for 30 days! Yes, Facebook makes it reasonably clear before you hit send (good!) and it makes sense, or they too would likely ignore your unsolicited message.

I decided to do it. I also hoped that he would only have limited access to my profile (which would exclude things like my IM, etc.), but I really wasn’t sure.

I ended up having a nice email-like conversation with Scott (eight messages between us). He wasn’t sure how he originally got my contact information, but he had just joined Facebook, so I got the invitation as part of the bulk upload. I mentioned that I blog about music quite a bit, and perhaps he picked it up there, but neither of us was sure.

I then asked him whether he was using Facebook just to network with friends (in which case I would graciously decline his invitation), or whether he was using it to promote his music, in which case I would willingly accept his invitation, because I had listened to his music on Fuzz.com (at the link above), and I enjoyed it thoroughly. It was the latter, and we’re now officially friends.

I had also never heard of Fuzz.com before, so my new friend taught me a new trick as well. πŸ™‚

Anyway, I am not all that active on Facebook, though I do find that I log on more frequently than I thought I would. Ironically, a while ago I added a blog application called My Blogs, which is an RSS feed which injects links to my blogs into my Facebook feed. I have been surprised by the number of clicks I get through Facebook on this blog, so my friends are definitely logged on to Facebook enough to notice new posts from me in my feed, and they then click on them to see what I’m up to. Cool!

Finally, these bulk uploads work to identify up-and-coming new networks. Lately, I have gotten quite a number of invitations for the new Pulse service by Plaxo. Plaxo has been around for years, as an online contact manager. Pulse feels like a hybrid between LinkedIn and Facebook. It’s actually remarkably similar looking to Facebook, with a touch more business orientation. There too I haven’t invited anyone, but my network is growing nonetheless…

Firefox DOM Inspector

Send to Kindle

Yesterday, I raved about XAMPP in this post. In there, I made the following statement:

The other major thing that I don’t like (but which I suspect is easily fixable with a CSS tweak) is that the Sociable plugin formats the icons in a list (one per line) rather than as an inline string of icons, which other themes are doing correctly…

So, today I spent quite a bit of time playing. I enjoyed it, and it was instructive as well. I was able to easily change a bunch of things that I didn’t like about my previous theme. That said, I really like a lot of the Aspire (current) theme, other than the dark image background (which I can live with) and the note above about the sociable list not being inlined.

I decided to experiment in my new sandbox with the Aspire theme. I couldn’t find an easy way to see what css was controlling what element. A quick search said that the built-in DOM Inspector in Firefox could help resolve this. It wasn’t in my Tools menu. It turns out it isn’t installed by default on Windows. I reinstalled Firefox, selected custom, and voila, I had the DOM Inspector.

Once I inspected a page, it became obvious what the problem was. The Aspire theme defines an ID main. Then, in addition to default definitions of ul and il (unordered list, and list element), it also defines #main ul and #main il (specifically, an unordered list which appears in the main block, and the same for a list element in the main block).

The DOM Inspector showed me that the sociable.css was correctly being loaded, but that the way more specific #main selector was being applied after the sociable.css was parsed. As annoying as it is/was, there’s some logic to it. If a node can be defined ultra-specifically, and there is a css definition associated with that, then perhaps, you really want that to apply.

Unfortunately, the specific definition had display: block instead of the desired display: inline.

I’ll spare you the stupid gymnastics I performed, trying to over-ride that behavior. Suffice it to say that along the way, I tried doing something like this:

#main.sociable ul

ul#main.sociable

among other utterly useless attempts to get even more specific.

I broke down and sent a message to the current maintainer of the sociable plugin. Then, two minutes after sending him the message, while browsing formal docs for css, I stumbled on something.

In some of the attributes in the sociable.css file, he added !important to the end of the definition, in others, he didn’t. In the docs, I saw that normally, !important is used to signal to the browser that this particular attribute is important, and should be respected over a defaulted value. It’s primary use is to allow users to have stylesheets which over-ride authors stylesheets.

So, I thought, let’s experiment and add !important to the few attributes that weren’t already tagged as such (specifically, the display: inline one!). Voila! Now, even though the browser sees that #main ul comes after .sociable ul, it also knows that .sociable ul said that display: inline was !important, so it retains it!

There may be a better way to solve this problem (after all, this required me to edit the author’s version of sociable.css, which would get wiped out the next time I upgrade the plugin), but, without my sandbox (courtesy of XAMPP), I wouldn’t have found this one. In addition to XAMPP, I now also need to thank the Firefox DOM Inspector. πŸ™‚

Updated Theme and XAMPP

Send to Kindle

For a while now, I’ve been both relatively happy with my theme, as well as marginally frustrated by it. I don’t need to bore you with exactly what I didn’t like, so I’ll bore you instead with what I’ve done about it. πŸ˜‰

I have never bothered in the past to dig too deeply into the inner-workings of WordPress. Also, while I understand CSS, and have played with it a while ago, I certainly haven’t looked at anything relating to how themes interact with CSS. Before you call me an idiot, I realize that the themes define selectors, and that the style.css file in the theme applies the style, but what I don’t know (because I haven’t bothered to look!) is how defined the selector names are by WordPress, or whether every theme designer just does whatever they want.

Anyway, every once in a while, I download a new theme that looks like it might meet my needs a little better. I use a plugin called User Level Themes by Double Black Design. It’s very cool. I then set the Admin User only, to see the new theme that I downloaded. I can now test the new theme, on the live site, without affecting how the normal (anonymous) reader sees the site. If I like it, I can change the theme for the anonymous user as well.

So far so good, and I’ve been pleased enough with that level of testing. Even so, I haven’t switched my theme for months (well, not totally true, as I updated to a tweaked version that another user modified from the original author of my theme). One of the reasons is that when I see a new theme that has elements that I prefer, there’s usually at least one element that I can’t stand, so switching seems silly.

The straw that broke the camel’s back for me the other day was that I downloaded a theme that hard-coded some tag cloud layout. That meant that since I am using the Simple Tags plugin by Amaury Balmer, which uses it’s own tag cloud widget, I was getting two tag clouds. It made me realize that to really test these things, I might have to make changes that would affect the anonymous user (like redefining the sidebar widgets) even though the theme didn’t change.

Ugh…

I realized that to get what I want, I will likely need to dive in a bit, and tweak the theme that comes closest to what I want. That might involve some PHP (which I can read, but have never written), some understanding of WordPress, but really hopefully not much more than CSS tweaks.

To do that properly, I really wanted a segregated playground, where I could make changes willy nilly, even breaking the site completely (I’m very much a trial and error kind of guy). That led me down a long path of thinking about the easiest ways to set that up, in a manner where I could easily tear it down and start again, etc.

That led to thoughts of a cheap hosting provider with something like cPanel, where I could just reload the environment if I wanted. Then I thought of putting up a server at home for this, and running VMWare or Xen, etc., to be able to reload an environment quickly. Then I thought of just using the VMWare Player on my laptop.

Finally, while searching for the lightest weight Linux server distro that would support that (in order to tax my laptop the least), I accidentally stumbled across XAMPP. It comes in multiple flavors, including Windows. Then I noticed that they also had a lite version, which was all I needed. Apache (recent release), MySQL (relatively recent) and PHP (recent release).

I chose the ultra-small 7-zip auto-extractor version (18MB download). It doesn’t touch the Windows Registry at all. When you’re done playing, you can just blow away the directory structure, and you’re done. They give you a controlling application (not needed, but a nice touch), to start and stop individual components. You can do it all on the command line as well, or you can set them to be true Windows Services and they will auto start with the machine.

I tar’ed up my WordPress directory, dumped my MySQL database, copied them over to the laptop, and everything almost worked on the first shot! The only problem (the manifestation was large, but the solution was trivial) was that my blog URL stored as an option in the database pointed back to opticality.com. So, when I tried to log in to the admin UI, it redirected me to the real site, which was not what I wanted.

I updated that option in the local MySQL database, and it all started working. All of my posts were here locally, and my plugins were working too. Extremely cool!

I quickly realized that I should deactivate a number of SEO oriented plugins (e.g., Google Analytics, WordPress Blog Stats, etc.).

Now I had a playground. Based upon just a few minutes, I made some decisions (which should be obvious on the live blog at the moment). Until I decide to make any changes to a theme myself, I have done the following:

  1. Changed the theme to Aspire (credits are in the footer)
  2. Removed the Advanced Search Lite plugin
  3. Added a POLL to get feedback on the theme change

I like the way Aspire lays out the post better than my last theme. I don’t like that it’s hard to read unless I keep my monitor on a bright setting (I typically lower the brightness of my monitor way down). Unfortunately, the background (which is darker) is controlled by an image, not a CSS selector, so this is one of things I don’t like about this theme. The other major thing that I don’t like (but which I suspect is easily fixable with a CSS tweak) is that the Sociable plugin formats the icons in a list (one per line) rather than as an inline string of icons, which other themes are doing correctly…

I actually like all of the choices that the Advanced Search Lite plugin provided. That said, there are a number of reasons why I removed it.

  1. It took up a lot of screen real-estate
  2. I doubt it was used much
  3. If it was used, I doubt people selected options
  4. Now that my comments are on Disqus, that feature wasn’t as interesting

Feel free to vote on the Poll. In addition, please feel free to comment here, in particular if you have had the same kind of tweaking needs/desires that I have, and have a solution/theme that you really like as a result!

To summarize, all I’ve done for now is switch the theme to Aspire. I haven’t touched it in any way. But, at my convenience, I can now play to my heart’s content on the laptop. For that, I have the folks behind the XAMPP effort to thank, so here goes:

Thanks XAMPP guys!

Internet Connectivity Insurance

Send to Kindle

In the house, we have Verizon FiOS service (triple play, Phone, Internet, TV). In the apartment, we have Time Warner Cable (Internet and TV). Both services are very reliable (in terms of availability). Beyond that, Verizon FiOS is so dramatically better, I keep praying for when they’ll figure out how to deploy it to large apartment buildings in NYC.

The biggest difference in the service is the speed. On the FiOS link, I have 30Mbps downstream, and theoretically, 5Mpbs upstream (though no site seems to accept data at that rate, so it’s somewhat meaningless). On the TWC link, it’s between 4-5Mbps downstream, but a poky 364Kbps (yes, K, not M) upstream. Most of the time, that’s OK, but when sending large attachments, or updating a large blog posting πŸ˜‰ it can be reasonably painful.

The other difference (for me, not between the services) is that at the house (on FiOS), I’m wired the entire way. At the apartment, I use WiFi. Lois uses WiFi at both places, and it’s rock solid at the house.

At the apartment, the WiFi is often flaky, even though we’re not all that far from the access point (it’s in another room, and there’s one wall between us, but it’s not more than 20 feet away). At some times, it’s rock solid, at others, it can drop out completely.

It’s possible that the router itself (a Linksys WRT54G) is flaking out. On the other hand, sometimes, it can go for days on end without a problem. Slightly more likely is the fact that we live in a heavily populated area, and there is likely a crazy amount of interference of all types on the 2.4ghz band.

So, this past Wednesday we drove in from the house to the apartment because we had tickets to see Keith Urban and Carrie Underwood at MSG that night. (Completely unrelated to that post, here is my review of that concert…)

We got to the apartment mid-morning and immediately logged on. The weather was horrible outside, and it’s possible (though I can’t imagine how) that it affected the WiFi signal as well. Within minutes of being logged on, we were experiencing tons of dropouts on the WiFi. The TV signal was fine, and I was able to make VoIP calls (which bypass the WiFi) without a problem, so the basic Internet service was definitely up as well.

After about an hour of complete frustration on our part, I decided to put the backup plan into action. As the name of the post implies, I have insurance for just such situations. For a few years now, I pay for an unlimited data plan with Sprint to use each of our Treos (I have a 755p, and Lois has a 700p). It’s not cheap, and I would probably save a ton of money if I paid only when I used it (because it is, after all, just for emergencies), but I really hate metering, and getting smacked with out-sized bills, even if overall, it would be cheaper.

Years ago, when few hotels had free WiFi, it was a very good deal, as we often both used our phones as modems for hours on end. Now, it’s actually rare that we stay at a place that doesn’t have free WiFi. Therefore, it’s also rare that we use the Treos to connect our laptops to the Internet.

On Wednesday, I pulled out both phones, connected them with USB cables, and connected via Sprint. We both stayed connected for at least six hours, never had a single drop of the connection, and neither of us felt that it was sluggish in the least. I didn’t measure the speed that day, but in the past, in the apartment, it has averaged roughly 400Kbps downstream and 100Kbps upstream.

I would hate to see what that one day bill would have been, which is I pay the set amount each month. Ironically, this is the second time this month that we’ve used the service. When we were visiting my folks on February 6th, Lois needed to do a ton of work (thankfully, I didn’t). She was using the WiFi in their apartment, and it was working fine for everything, except sending mail. Obviously, it was critical that she be able to send emails.

I realized fairly quickly that Bellsouth (excuse me, AT&T) was likely blocking outgoing SMTP that wasn’t going through their servers, but I wanted to visit with my folks, and I didn’t want to dork around with her machine, or my server. So, I just plugged her in to the Treo, and connected to Sprint, and she was fine for hours.

The next day, I just changed her settings to send through Bellsouth and that worked fine too.

So, while I’m definitely overpaying, I’m very happy to report that at least on the rare occasions when I need it, it not only works, but it works flawlessly, and provides a very satisfactory experience in terms of speed as well. That’s exactly how all insurance should work. πŸ™‚