blog software

Make the Time

Send to Kindle

Lois and I have been, and continue to be blessed, in many ways. At or near the top of that list is the amazing group of friends that we have. Individually and collectively, they bring us immeasurable joy, and expand our horizons with each interaction.

I know that many people lead busy, complicated lives. We do too. Ours are a tad more complicated than most, because of our hectic travel schedule. Even that is subject to last-minute changes. That makes pinning social dates down somewhat tricky. When you factor in the jam-packed schedules of most of our friends, finding dates we can all agree to, and then sticking to them, is often a major hassle.

There’s one couple in particular where the scheduling conflict rears its ugly head more often than not.  Because of that, we don’t end up even trying as freqently as we should, so we end up seeing them every 18 months or so on average. That’s a major shame, as we always have a fantastic time, whenever we pull off a drive-by get-together.

Last night was one of those lucky evenings. As busy as they are (and folks, they qualify on a number of levels for leading pretty hectic, but productive lives), more often than not, they do the classy thing and come to our side of the river (to the apartment or the house), which we appreciate to no end (though we promised last night that next time, we’ll come to their house!).

They also came early (6pm), which us old folk appreciate beyond measure as well. It permits a long and relaxed evening, without having to be falling asleep at the height of the festivities. We had a simply amazing sushi meal.

Among the many topics we discussed all night was blogging, and Twitter. Both of them (claim they) are too busy to blog (though both have been encouraged to, for a numer of reasons), and neither sees the point of Twitter (something you hear a lot from non-Twitterers nowadays). I doubt I made a dent in either direction, but we’ll see.

One of the things we had some fun with was coming up with blog titles that were provocative (often already iconic cultural phrases) that might stand alone (content would be interesting, but unnecessary). ;-) In fact, I explained that this could be one reason to be Tweeting instead of blogging!

There were some obvious ones:

  • Not that there’s anything wrong with that…
  • Do the Right Thing
  • I’m Not Judging, but…
  • To Get Through Work, Only Two Decisions are Required: What to Wear and What to Eat
  • If I’m the Typical User, then it Should Be Designed for Me!

There were many more. Some were inspired by specific stories that had long philosophical discussions. For example, “Do the Right Thing” was about a situation where an older male colleague, fumbled over whether and how to handle the situation of walking a younger female colleague back to her hotel after a business function. There are lots of nuances in that situation, and in our opinion, our friend ended up on the wrong end of an overthought dilemma.

That spurred me to title this post in a similar vein, though it didn’t come up in our long list last night: Make the Time.

Every time that we make the time to get together with this particular couple, but in general with any of our friends, we feel enriched by the experience. So, we (and they) need to continue to pursue each other, even when scheduling appears to be impossible, and just Do the Right Thing. ;-)

I’m including a photo of our friends without naming them. As you can plainly see, I don’t dress up for company. ;-) Also, as you might be able to tell by my glassy eyes, we enjoyed some nice wine as well.

Friends

Friends

I met the husband when I hired him in 1986 (give or take a year). I knew in the interview that he was a very special person. I was wrong, he was and is an exceptionally special person. He was as good an employee as I could have hoped for, and went on to a very long and successful Wall Street career in a number of top firms.

A number of years ago he started his own software company, and has made a wonderful success of that as well, and will continue to, I’m sure.

His wife is equally extraordinary in too many ways to list in this small space. To call either of them smart would be to insult them. They are also interesting, conversational, good listeners, etc. In other words, everything you could hope for in a friend.

Here’s to not letting as much time go by before the next visit (which will be at their place!). :-)

Vista speech recognition

Send to Kindle

I’ve been fascinated by speech recognition for a very long time.  I used a program called Simon on a NeXT computer back in 1992. I have toyed with every version of Dragon Naturally Speaking since v2 (now owned by Nuance). I keep upgrading my copy of Dragon Naturally Speaking (through v9, I haven’t done v10 yet), even though I never actually use it for anything real beyond checking out how much better each version has gotten.

The primary reason I don’t dictate more is that Lois and I work two feet apart 99% of the time. That makes it awkward to be speaking to the computer, from a number of perspectives. Still, I remain intrigued by the concept.

Vista has built-in speech recognition. My new laptop also has Realtek HD Audio built in, including a very high quality microphone next to the webcam, at the top of the monitor. As an example, I tested it with Skype the other day, with no headset, and there was no echo on either side of the conversation, and the other person said I sounded fine.

That made me think about the extra convenience of being able to dictate without scrounging around for headset, or wearing it for extended periods. I decided to play with the speech recognition just to see.

Basically, it works pretty well. Far from perfect. In fact, I’m not sure that Dragon 10 wouldn’t be better. That said, it’s built in, and feels much lighter weight (starts up instantly, shuts down instantly, doesn’t shift application windows around to put its toolbar up, etc.).

It took me a while to get it to work with my USB headset. Basically, you don’t tell the speech recognition program which device to use. In order to use it with the USB headset, you have to set the USB headset to be the default microphone on the system, and then the speech recognition program automatically picks it up.

You might be asking why I wanted to use the USB headset? The simple reason is that my headset has a microphone mute button on the cord. That’s very cool for speech recognition. If the phone rings, or Lois wants to talk, I can just hit the mute button, and speech recognition is off, even though the program is still listening. It simply can’t hear anything. As a bonus, in theory, the recognition should be better, but for now, I don’t care too much about that.

Here’s one annoyance. It was my intention to dictate this entire post, including all of the actual production of it (clicking the save button, publish, etc.). Unfortunately, I gave up after five minutes. I tend to write my posts in Firefox, right in the admin interface of WordPress. Even with Allow Dictation Everywhere set on in speech recognition, it doesn’t think that Firefox is a normal input program (though it recognizes that I’m in a text area).

So, every phrase gets put up in a dialog box for me to confirm. It got them all correct, but I couldn’t just speak the post. I could have dictated into Word, WordPad, NotePad, WindowsLiveWriter, etc., and in the future I might just do that, but for now, I’m typing this post…

Using speech recognition in Command Mode works reasonably well. I can switch applications easily, select menu items, switch folders in email (Thunderbird, which obviously isn’t written by Microsoft), etc. Yesterday, while eating lunch with both hands, I had an IM conversation with someone by speaking my responses and saying Enter after each one. The concept was very cool, even though I had to correct a bunch of words (I wasn’t using the USB headset at the time).

Anyway, I recommend playing around with speech recognition in Vista if you work in a room alone, or have a spouse (or co-worker) who would be amused by your ranting at the computing out loud. ;-)

Welcome WordPress 2.7

Send to Kindle

I just upgraded to WordPress 2.7. It was super simple, no glitches whatsoever.

Earlier in the day, I noticed that there was an updated version of the Simple Tags plugin that I use, clearly stating that it worked with 2.7. I upgraded that while still running 2.6.5.

Then I upgraded WordPress to 2.7 on my laptop, running XAMPP. The only complaint I got was about Simple Tags, which I hadn’t upgraded on the laptop (and I updated it then). All other plugins just worked, and the new theme, PrimePress just worked as well.

I hadn’t installed any betas or release candidates before, so this is my first real look at the new admin interface. I’ve seen screen shots, and it’s crisp, clean and reasonably intuitive.

I’m officially a fan, even though I clearly haven’t exercised it in any meaningful way yet. :-)

P.S. First glitch, the Preview link gave me a 404, so something isn’t being put where it should be. Can’t find an obvious cause, so I’m punting for now, and just publishing. I’ll track down my preview problem over the weekend…

Update: I just did a test of Preview on the laptop, and it worked fine. So, there isn’t anything wrong at the WP level. I am now quessing that something about the URL scheme for Previews changed slightly, and my own rules at the NginX level are failing (the equivalent of Apache rewrite rules). When I’m sure, I’ll update again…

Solution: This morning, I discovered that if I override the permalink in the preview URL and use the old-style ?p=NNN format, the preview worked. That allowed me to search with more detail. That turned up the following patch. Ironically, the patch was just posted yesterday, so I wouldn’t have found it on Friday anyway. I don’t know if it works (because I haven’t made a new post since I applied the patch), but at least I can preview by using the old-style URL if need be…

New PrimePress Theme Installed

Send to Kindle

I have been wanting to change the theme on this site for a while. I am not all that sure why, perhaps, just because it’s so easy to do with WordPress. I liked the theme that I had for the most part, but I wanted an even cleaner, simpler, sharper look.

For a while, I toyed with putting in one of the newer, more complicated (as in flexible) theme frameworks, specifically, Hybrid or Carrington, and really tweak them to my liking. While I might still do that, I know I don’t have that much time at the moment. While looking around, I stumbled on the following theme: PrimePress. I liked it a lot.

So, I just made it live on the site. I made two changes:

  1. I removed the rotating headers (I actually liked them a lot, but it’s a waste of space on this blog from my perspective)
  2. I substituted my name for the Copyright holder rather than the title of the blog

For now, that’s it, though I might tweak it a bit in the coming days (probably not). I’ll take a look again in a few weeks when WordPress 2.7 is released, and see if there are any themes around that take full advantage of that, but still look this clean. If so, I might switch again.

For now, welcome PrimePress! :-)

WordPress 2.6 Goodness

Send to Kindle

So, I tweeted the other day that I updated to WordPress 2.6 successfully, but didn’t blog about it. I am very pleased with the changes, though I had two minor frustrations, one was WP’s fault, the other not.

First, the goodness. When 2.5 came out, they completely changed the media/image management, changing the upload and selection process to be AJAX based. I really liked the look, but hated the feel. It took so many clicks and so much scrolling to edit the various image fields, and to select and insert an image in a post.

2.6 fixes this completely (for me). This is done by making two (theoretically) trivial changes:

  • Make the pop-up window larger, so that all of the fields for an image fit without scrolling
  • auto-scroll to the selected image when the user clicks on show

That’s it! Now I don’t have to scroll after I click show.

Another goodness is that the number of plugins that have newer versions available is now highlighted on every admin screen, with a cute little bubble above the plugins link. Very nice. I was very good about checking regularly anyway, but this will save me a few clicks every day.

There are other new features, most of which I haven’t played with yet, but they certainly sound useful. The video that shows off the new features is crisp and gets to the point quickly.

I’m happy with 2.6.

Now for my two frustrations. The first is a WP problem. I noted in a recent post that WordPress Ate My Posting Date. I patched it successfully (a one-liner). The patch documentation led me to believe that it was already in the trunk, and therefore would be part of WP 2.6. It wasn’t. :-(

When I posted about Chuck Mangione the other day, the RSS feed delivered that post with a date of 1999 again. I reapplied the patch, and I believe all is well again. It was disappointing that this simple one-liner missed the 2.6 release…

The second frustration had nothing to do with 2.6. After I saw the new plugin update notification, I updated the two plugins that had newer versions available. When I went back to the admin screen and reloaded, it still claimed that both plugins needed updating, and the new bubble still showed a two in it.

After some playing around, I decided to clear the XCache cache completely. That solved the problem. So, somehow, there was PHP code cached that didn’t update when I installed the new WP 2.6. I will try to remember not to make that mistake again, and just clear the cache whenever I update WP. Now the question is whether I need to clear the cache when a plugin gets updated, etc. Frustrating that somehow date stamps on the files don’t over-ride the cacheing…

In any event, all is well again (at least for the moment). ;-)

WordPress Ate My Posting Date

Send to Kindle

This post is really a test, but I’ll share the full problem and solution (assuming the test works), so it might help someone else out there as well. :-)

The other day, for the first time ever, I noticed that a post of mine hit my RSS reader (Thunderbird) with a date of 11/29/1999.  I was busy with other things and decided to come back to it. Of course, I didn’t…

The next time I posted, the date was correct again. I (foolishly) assumed that the problem was transient (and possibly corrected). A few more good posts, then yesterday, back-to-back bad posts. I realized exactly what was different between the good posts and the bad ones. At least procrastinating paid off this time. :-)

All of my good posts were made with Windows Live Writer locally on my laptop and then saved to the server as a draft for continued editing. All of my bad posts were started and finished directly in the web interface of WordPress 2.5.1.

This certainly wasn’t a native 2.5.1 problem, because I’ve been running 2.5.1 a lot longer than my first bad RSS pull and until reasonably recently, I posted 100% of the time through the web interface. I selected the last few rows from the wp_posts table and spotted the problem instantly.

The post_date_gmt had the following value in my three bad posts: 0000-00-00. A Google search revealed this forum thread discussing the problem. Some people seemed to think it was related to the installation of XCache (others thought that you also needed a separate plugin installed to provoke the problem). Since I recently installed XCache (as reported in my NginX post), I was more than willing to believe that this was my problem. Of course, I didn’t see how it worked when Windows Live Writer was posting, but it was certainly possible that it took a different code path…

There was a pointer to a patch in that thread. The person who posted the link also commented that he thought this was not the “right” fix, though he said it worked. I’m not sure why he felt that way. Aside from being innocuous (meaning, there was no way that this could hurt anything), it seemed like a reasonable fix and was already in the trunk for WordPress 2.5.2, so it also seemed safe to apply, given that it would soon be production WordPress anyway.

So, I downloaded and applied the patch. I won’t know until I click on Publish whether it will work, as the post_date_gmt column correctly remains at 0000-00-00 while I’m in Draft mode. If it works, I won’t update this post. If it fails, I’ll come back and add another paragraph to let you know it didn’t work…

Update: I decided to add this bit quickly. It worked (so that’s not why I’m back here). I thought of one more possibility for the cause, which has nothing to do with XCache. Recently, I noticed that my posting times were in EST, not EDT (meaning, the one hour time-zone change didn’t happen automatically). I went into the WP Admin interface and adjusted the setting to be GMT-4 instead of GMT-5. It’s possible that this change caused the problem as well, but I really have no idea…

NginX Reporting for Duty

Send to Kindle

Last week, my friend Jamie Thingelstad tweeted from the Rails Conference that he was considering switching to NginX (I’ll probably drop the caps starting now) after sitting in on a session about it.

Prior to that mention, I had only heard of it once, when an internal tech email at Zope Corporation mentioned that one of our partners was happy with it as their web server. I didn’t pay too much attention to it at the time…

I was curious, so I downloaded and built nginx-0.7.1. Since there is no equivalent to mod_php for nginx, I also had to decide on a strategy for managing PHP via FastCGI for this blog (I use Zope to serve up all other publicly available content on the site). It seemed that the most prevalent solution out there was to use spawn-fcgi, part of the lighttpd web server package (another very popular alternative to Apache, which is what I was using).

After searching further, I noticed that a number of people were recommending a package called php-fpm (PHP FastCGI Process Manager). I decided that I’d give this one a try first.

Finally, while researching all of this, in particular noting results by WordPress users (after all, that was my one use case for doing this), I also decided to install an op-code cacher for the first time ever, settling on XCache (also brought to you by the fine folks who bring you Lighttpd!).

Within minutes I had nginx installed and running, serving content on an alternate port (so Apache was still serving all production content on port 80). Shortly thereafter I had php-fpm installed and running as well. XCache installed easily too, but it did take me a few minutes longer to correctly change one particular entry in the conf file.

I had some serious frustrations along the way, all of which were due to a fundamental lack of understanding on my part of how things are ultimately supposed to work (meaning, nothing was wrong with the software, just with my configuration of it!), but to underscore the bottom line, nginx/php-fpm/xcache are all in production now. If you’re reading this in your RSS reader, or in a browser, it was delivered to you by that combination of software (unless this is far in the future, and I’ve changed again). ;-)

If you aren’t interested in the twists and turns of getting this into production, then read no further, as the above tells the story. If you care to know what pitfalls I encountered, and what I had to do to overcome them, read on…

Getting everything set up to generically serve content on the alternate port was trivial. Like I said earlier, I was serving test pages in minutes (even before downloading php-fpm and xcache). In that regard, you have to love the simplicity of nginx!

With extremely little effort, I was able to write a single line proxy_pass rule in nginx to serve up all of my Zope content on the alternate port. Done! I figured that this was going to be really easy, since the WordPress/PHP stuff has so many more real world examples documented. Oops, I was wrong.

To begin with, the main reason that I was wrong is due specifically to WordPress (hereinafter, WP), and not nginx or PHP whatsoever. Basically, I ran into the same problem the first time I fired up XAMPP on my laptop to run a local copy of my production WP installation.

WP stores the canonical name of blog in the database, and returns it on every request. This means that your browser automatically gets redirects, which at a minimum (in the nginx case) dropped the alternate port, and in the XAMPP case, replaced localhost with www.opticality.com. The fix for XAMPP was easy (yet still annoying!). I had to go into the MySQL database, and change all references to www.opticality.com to localhost.

In the case of nginx, I couldn’t do that, since I was testing on my live production server. In retrospect, this was stupid (and cost me hours of extra time), since I have a test server I could have installed it on, run it on port 80, change the blog name, etc., and been sure that I had everything right before copying over the config. Of course, I learned a ton more by keeping my feet to the fire, especially when my public site was hosed (which it was a number of times this weekend!), perhaps shortening the overall learning experience due to necessity! :-(

That made testing WP extremely painful. Instead, I tested some standalone php scripts, and some other php-based systems that I have installed on the server, but don’t typically activate. All worked perfectly (including my ability to watch xcache return hits and misses from the op-code cache), so I was growing in my confidence.

Sometime late Wednesday night I was mentally prepared to cut over (since switching back to Apache would only take a few seconds anyway), but I decided to wait until the weekend, when traffic to this blog is nearly non-existent (come on folks, you can do something about that!). ;-)

Saturday morning, very early, I stopped Apache, reloaded nginx with a configuration that pointed to port 80, and held my breath. I was amazed that everything seemed to be working perfectly, on the first shot! I moved on to other things.

Later in the day, I visited the admin interface for WP (Firefox is my default browser, though I obviously have IE installed as well, and for yucks, I also have Safari, which I very rarely launch). Oh oh, I had zero styling. Clearly, something was causing the CSS not to be applied! I quickly ran back to the retail interface and thankfully, that was still being served up correctly. That meant that I could take my time to fix this problem, as it only affected me!

I turned on debugging in nginx and saw that the CSS was indeed being sent to the browser. That’s not good either, as it seemed that this wasn’t going to be a simple one-line fix in nginx.

Yesterday morning, after nginx had been in production for 24 hours, I decided to check out IE for the admin pages. They showed correctly! Firefox was still showing zero styling. I compared the source downloads, and Firefox was larger, but had everything that IE had as well (including the CSS). At first I incorrectly assumed that perhaps it was the extra ie.css that IE was applying, and Firefox was ignoring, but that really couldn’t have been it, and I didn’t waste any time on that.

Now that I had a data point, I started Googling. It took me quite a while to find a relevant hit (which still surprises me!), and I had to get pretty creative in my search terms. Finally, one solitary forum hit for a php-based product called Etomite CMS (I had never heard of it before) describing exactly what was happening to me. Here’s the link to the forum post.

OK, their take was that the CSS was coming down with a MIME type of text/html, rather than the correct: text/css. I went back to Firefox, and did what I should have done at the beginning (my only excuse is that I’ve never had this type of use case to debug before!). I enabled Firebug on the admin page (I already had Firebug installed, but I’ve rarely ever needed it).

Immediately, I could see that the CSS had been downloaded (I knew it was sent from the nginx logs, but now I knew it was received and processed). I could also see instantly that the CSS was not recognized as CSS. Going to the Net tab in Firebug revealed the headers for each individual request, and indeed, all of the CSS came back with text/html as the type. So, IE ignores that, and applies the CSS anyway, because it sees the extension (I’m guessing), but Firefox doesn’t. Fair enough.

But, why is it coming back text/html? I checked the nginx MIME types file, and CSS was coded correctly (I didn’t touch that file anyway). Looking at the headers again, I spotted the problem. All of the CSS files were being returned by PHP, not statically by nginx. In other words, my nginx config was wrong (even though it was otherwise working), as it was passing requests for CSS files to the FastCGI PHP process, and getting back an incorrect MIME type for those files!

A very cursory search didn’t reveal how I would tell PHP to return a correct MIME type. I’ll save that investigation for another day, as it would have been an immediate, but suboptimal solution anyway, since these files can be served faster by nginx to begin with. That meant figuring out what was wrong with my nginx configuration.

The docs for nginx are pretty good (with a few exceptions, but I’m not quibbling). There are also a ton of cookbook examples, some good and detailed, some should be deleted until they are completed. I realized pretty quickly that even though my retail interface was working, I had less of an understanding of how the different stanzas in my configuration file were interacting (specifically, the location directives).

I really didn’t want to revert to Apache, so I decided to experiment on the live server. It was Sunday evening, and I figured traffic would be relatively light. Sparing you (only a drop, given how long this is already), I hosed the server multiple times. I could see that search bot requests were getting errors, and my tests were returning a variety of errors as well. At one point, I had nearly everything working, and then promptly screwed it up worse than before. :-(

Eventually, under a lot of pressure (put on myself only by me), I simplified my configuration file, and it all started working, retail and admin alike. Whew. I’m now serving all static files directly from the file system, and all php files through the FastCGI process. The world is safe for blog readers again. :-)

Like I said above, the problem was never with nginx, though I can’t say the same thing for PHP returning text/html for a CSS file. Clearly, PHP shouldn’t have to process those files, but if it does, it should do the right thing in setting the MIME type. Of course, if it had, I would likely have never noticed that my static files weren’t being served as I intended them!

One real complaint, aimed at nginx. Since I use the proxy_pass directive to serve up all Zope content (and like I said, that worked from the first shot, and has worked ever since!), I was quite frustrated by the limitations on where it can be used, and how. Specifically, it can’t be used within a regular expression based if test, even if you aren’t using variable substitution in the proxy_pass itself. That simply doesn’t make sense to me. And, now that I mentioned it, there are other rules about when/how you can use variable substitution as well.

Clearly, I got it working, so the above isn’t a giant complaint, it just eludes my current understanding. As for getting the rest to work, I have a better understanding than I did, but I’m sure that if I were to muck around a little more, which I’ll inevitably do, I’ll break it again, showing that my understanding is still at the beginner level.

In any case, for the moment, it’s doing what I intended, and is in production. :-)

Aside from Jamie’s pointer, in doing the initial research, what got me excited was reading that WordPress.com had switched to nginx for their load balancing (and might eventually switch for their web serving as well), and that Fastmail is using nginx for the IMAP/POP mail proxying as well. Clearly, nginx is ready for prime time (my puny blog notwithstanding). :-)

Testing Windows Live Writer

Send to Kindle

I’ve never been that tempted to try a fat client blog writing application. I’ve been reasonably pleased with the built-in WYSIWYG editor in WordPress. I don’t typically blog when I have no Internet connection, which is one of the better reasons given by those who use these tools.

One of my friends (Jamie Thingelstad) swears by a Mac program that he uses to create his posts. Today, I was reading a post on 10 blogging tips on Life Hacker. In the comments below, I was amazed at the number of people who were wildly promoting the Windows Live Writer (WLW) client for authoring their posts. Clearly, this wasn’t one MSFT lover trying to push a lousy tool.

So, I downloaded and installed it. It took me a while to get past the configuration, which was quite frustrating. It won’t even start up until you get the config correct. That seemed silly, since the errors weren’t useful in helping me debug the problem.

Anyway, the problem had nothing to do with WLW. I had a rewrite rule (Apache) on my server, which prevented WLW from sending the appropriate commands. Once I fixed that, the rest of the configuration completed automatically, including bringing down my CSS/theme so that WLW could show me roughly what my post would look like as I type it (which is way more than the WYSIWYG part of WordPress, which doesn’t apply any CSS to the real-time typing).

Anyway, this will be my first live post with WLW (assuming it works). I don’t know (yet) whether it will be my last, but I suspect not. I haven’t investigated any of the settings/options as yet, so it certainly didn’t require any work to figure it out.

:-)

OK, so I hit the Post Draft and Edit Online button (a very cool idea), everything just did what you’d expect. It created a draft on the server, and messaged Firefox (yes, WLW didn’t hijack me to IE, but rather respected my default browser choice!) with the correct URL to the draft post! I’m adding this paragraph and the one below it in my normal online interface.

The only glitch is that the Alt-Text for each of the above links was lost (I filled it in on the WLW side, so I’ll have to look into that). Fixing it was easy, but everything else just worked. Of course, I haven’t done anything like upload photos to a gallery, so that might be an adventure as well. So far, so good.

CSS Hack Added

Send to Kindle

When I upgraded to WordPress 2.5 I articulated a few UI problems on my site. Here’s the relevant section:

  1. The Sociable plugin is once again formatting the bullets in a block list, rather than inline. This can be fixed with my own css (as I’ve done in the past), but I have no idea what broke in the upgrade…
  2. TinyMCE (in WP2.5) won’t allow me to display the link editor (AJAX form). It comes up blank. I am posting this from IE until I figure that out. Not cool, but also not stuck…
  3. This ordered list is not showing the numbers in IE7, but is in Firefox. :-(

#1 above turned out to be simple. There was a checkbox that I needed to set in the Sociable options to apply the sociable.css file. This was either a new option that I didn’t need to set before upgrading both the plugin and WordPress, or something in the upgrade to WordPress coupled with a deactivate/activate of the plugin caused that setting to be lost.

#2 auto-corrected itself. I’ll guess that the next time I restarted Firefox it just worked, and I panicked prematurely.

#3 was the real thorny problem, and is the subject of this post.

It’s likely that this bug existed for a few weeks before I upgraded to WordPress 2.5. Most certainly, it is not related in any way to WordPress at all (any version).

When I installed the SandPress theme (based on the Sandbox Theme Template) which is linked in the footer of every page on this site (unless you’re reading this in the future, and I’ve changed my theme again) ;-) I decided to tweak it (which was a CSS change only).

One of the things that I did was remove the attribute “list-style-position:inside”. I hate the fact that ordered lists that span multiple lines have text under the number. It not only looks bad (IMHO) it makes it less readable. By removing the “inside”, I got the default of “outside” (without specifying it), and I immediately tested in Firefox (my default browser), and it worked correctly, and I was done.

When I upgraded to WordPress 2.5 I did it on my laptop first. I just happened to test in IE first, and noticed that I have no numbers on any ordered list. I tried a number of things but couldn’t get it to work. I thought that it was something related to the WP 2.5 upgrade, so I needed to decide whether I’d just live with it temporarily, or back off the upgrade. I decided to live with it.

It altered my behavior. In a recent post, I really wanted an ordered list, but I hated the look in IE without the numbers, so reluctantly turned it into a bulleted list. :-(

Earlier this week I finally took some time to track it down. That included installing an IE development addon which does what the Firefox DOM Inspector does. I had assumed that in IE, the problem was the “list-style-type” wasn’t being set to decimal. I was wrong. It was correctly set to decimal! I was truly stumped. I tried a number of other things, and then gave up.

Today, it occurred to me that there’s no way that the original SandPress theme was broken this badly. So, I switched (on my laptop) to the untweaked SandPress theme, and voila, IE showed ordered lists with numbers. Good. Now I did a diff on the original style.css file with my tweaked version. The difference was obvious, namely the inclusion in the original file of the attribute “list-style-position:inside”, which I had removed.

So, it appears that the designer of SandPress knew that IE7 couldn’t correctly render “list-style-position:outside” (whether explicitly set, or defaulted). So, he threw up his hands and set it to inside, and lived with it. I totally understand that decision, but for me, I wouldn’t be happy with seeing it this way in Firefox.

So, I did a quick search and found this blog showing a variety of CSS hacks. Here’s the relevant section on targeting IE7:

Target Internet Explorer 7:
[className=”actualClassName”] { … }

In case you aren’t familiar, you can either target or filter specific browsers. Targeting means that the rest of the line will only apply to that particular browser. Filtering means that the rest of the line will not apply to the specific browser.

In this case, I wanted the default to be outside for all browsers, but for IE7 to be inside. That meant targeting IE7 with the inside clause.

It worked perfectly. Now, ordered lists look like I want them to in Firefox, and look poor (to me) in IE7, but at least have numbers. Whew.

Back in business. :-)

Welcome WordPress 2.5

Send to Kindle

My last post announced a physical move of this server. Before the server was shut down, I saw the announcement for WordPress 2.5 final. I installed it locally on my laptop, and saw that everything on my site worked, with the exception of the Popularity Contest plugin. I had the time to update the main server before it was scheduled to be shut off, but I chose to take the more conservative route, and wait until it came back up.

The server move was very successful, with one unfortunately notable exception. I had an artifact in my IPTABLES firewall rules that made the machine semi-invisible to the outside world when it came back up, even though all of the appropriate DNS updates had been performed.

I count myself as wildly lucky that one of the few things I was able to do successfully was to ssh onto the machine using a direct IP address. It took me a while to accidentally discover the one bad firewall option, but once I changed that, everything started working. Whew! Queued mail started flowing as well.

That left me free to update to WordPress 2.5. That went pretty smoothly too. Of course, just like with the laptop, Popularity Contest doesn’t work, so it’s not on now. There are three other wierdnesses, neither of which I have the time to track down at the moment, but hopefully will later this afternoon:

  1. The Sociable plugin is once again formatting the bullets in a block list, rather than inline. This can be fixed with my own css (as I’ve done in the past), but I have no idea what broke in the upgrade…
  2. TinyMCE (in WP2.5) won’t allow me to display the link editor (AJAX form). It comes up blank. I am posting this from IE until I figure that out. Not cool, but also not stuck…
  3. This ordered list is not showing the numbers in IE7, but is in Firefox. :-(

So, welcome WordPress 2.5 to this space. Welcome this server into the new data center. Hopefully, this will be the last move for this specific server, not that it was that much of a hassle. Thanks Dave for taking care of the move and making it so painless! :-)