Category Archives: WordPress

The open source publishing platform I co-founded — development, releases, community, and the ecosystem.

More Updates

The new release of WordPress is out and kicking, so get it while it’s hot.

The photolog is also back up, but it’s ugly. An attempt to make it standards-compliant with some help from Gerrit Kaiser crashed and burned when I realized that I was overwriting files with older versions and that was breaking a lot of things. So right now it’s in a very half-baked state but as Kevin said the other day, any update is always preferable to nothing. So I’ll save face by calling it “public redesign” of the photolog.

Upgrade Day

Just finished upgrading the server to address a mod_ssl vulnerability and get PHP 4.3.2. It went swimmingly, which is always nice.

In the process of upgrading about half a dozen sites to WordPress .71 to test it out before the code is released. It’s a good process because the sites need updating (security problem again) and it’s a good way to find any bugs that may have made it through so far.

I’ve always remarked that people tend to write about bad things more than they write about good things. Journals, blogs, diaries, all tend to be one-sided, at least in my experience. As is such though yesterday started quite badly, after I emerged from my migraine-medicine–induced haze I had a pleasant evening with my family.

Today has been great too; been hanging out with Mike and Christine at Kaveh Kanes (where the chai is tasty and the music is grooving) getting Christine set up in email utopia, where spam is like the distant buzzing of a fly you think you heard but you’re sure it’s really just in your head. Back to work! There looks to be some frisbee in the plans this evening…

Update: Mike has a meta moment.

Summer Showers

I woke up this morning to a delightful storm outside, which I think is the best possible way to wake up. It’s also the best time to stay in bed, which I did for a while and just enjoyed the storm from the comfort and protection of my semi-slumber. Houston really needed the rain.

There have been a few changes around here, for one I decided that wider is better, and content now stretches like it used to. There have been a few tweaks here and there, and I was hoping to bring the photolog back up but some WordPress work is going to prevent that today. Also you’ll notice that the endorsement box at the top is a little nicer and it has a new extra touch. If you visit this site using Internet Explorer, which is a satisfactory product but looks dead from an upgrade point of view, you will see a small promotional message extolling a virtue of the official browser of PhotoMatt.net, Mozilla. It’s the browser so good I installed it for my Mother. Yes, it’s that easy. If you tried it before and it didn’t suit your fancy I highly encourage you to give it another go, as it has progressed by leaps and bounds and is hardly recognizable as the slow dinosaur it used to be.

There are new shares of PhotoMatt available if you’re into that sort of thing. BlogShares finally figured out I’m worth something and adjusted my price accordingly, so I thought a few extra shares out there would spice things up. I’ve decided to take a very passive approach to the whole game. Besides, Brad has made me rich enough to retire to a small island and relax. Thanks Brad!

Updated Updated

The updated blogroll on the sidebar is now powered using WordPress Links instead of Blogrolling. It’s always nice to use your own project. One more thing knocked off my very long list of things todo this early Monday morning. Speaking of things to do, Alex’s Tasks might be just what the doctor ordered for organizing me a bit. In the past the most sucessful system I used was my Palm, but that’s relatively inflexible and I can’t forsee a situation where I wouldn’t have internet connectivity anyway.

While I’m on this meta post, I should let you know that PhotoMatt.net is seeking a summer editor. Rebecca Lammons, who has edited almost from day one, is not going to be online very much for the rest of the summer. So if you have a keen eye for proofreading and visit the site when it updates drop me an email and let me know why I should give you administrator access to this blog. What do you get in return? Well, you will be less frustrated by the errors that crop up occassionally (okay, frequently) in the posts. I can also promise fame, fortune, prominent linkage, and something from your Amazon wishlist at the end of the summer.

WordPress Picking Up Pace

Today has certainly been an exciting day so far. First of all, Donncha has joined the WordPress team, bringing the number of developers officially to three. There have been several other inquiries and I think it’s exciting and the development will move along pretty fast.

I’m trying my hardest at least. I got a couple of things out of the way this morning: first the displays of comments, pingbacks, and trackbacks are all combined and present chronologically interspersed amoung each other. They really are all comments, and now they display as such. This also eliminates some link clutter, Josh will be especially happy since according to him “The trackback link is the ugliest thing I have ever seen in my life.”

Next I went through most all of the code and converted all the mysql_* functions to use the ezSQL class, which I found through Simon (who is running an excellent CSS series right now, by the way). ezSQL has become a huge timesaver and cleaned up a lot of code in different projects I do, including Mullenweg.com where it sped up things quite a bit as well.

As that was happening I refactored all of the template code, taking out some things that weren’t necessary anymore and just in general cleaning things up. After I finished all this I was disappointed to see that there wasn’t a noticable speedup, but that’s actually in line with the profiling I did a couple of weeks ago that showed the bulk of the processing happening in some of the character conversion code. If someone else can focus on features for a few days I’d really love to dig into that code and see if we can’t get a substantial speedup from optimizing it. Of course a lot of this will be less significant once we get Smarty caching in place, but having a very streamlined and efficient application before caching never hurt anybody.

For now though it’s time for a break, and lunch with Kathy and Elaine is just what I’ve been looking forward to.

Locked Out

My key works but it seems the door is jammed somehow, so I’m currently locked out of my house, which is as they say a bummer. My battery runs low, but thank goodness for WiFi. I just need to wait a little while longer for someone to wake up (or answer the phone or doorbell) and I’ll be snuggled up in a warm bed. But right now I am very tired, very uncomfortable, and very annoyed.

Working backwards, earlier tonight was great. Put WordPress out, which felt great. After a little client work I hooked up with Josh, Sarah, and Ramie, whose blog we just set up so the domain might not resolve yet. (Power update: I just ran the extension cord on the side of the house to the porch, so it looks like I can finish this.) I ended up not getting out of the house until about 11:30, and after I picked everyone up we decided to go House of Pies (of course) because Ramie and Sarah were hungry, despite Sarah having already eaten twice already that night. (Having big hair must really work up an appetite.) Food was great, but after I stepped away for a phone call from Mike concerning WordPress (he had a funny PHP setup) they managed to pull the salt trick on me. This deserves a tangent.

My friend Rachel is deadly afraid of two things: mayonnaise and ketchup. So when I was eating with her, Josh, and Rene several nights ago at House of Pies (of course) I thought it would be funny to mix the two together and dip one of my cottage fries in it. When I held it up she responded with a fight or flight response and started waving two toothpicks at me in defense. It put it down and proceeded to eat my cottage fries (with just ketchup) but somehow I got persuaded into trying the ketchup/mayonnaise concoction. It was gross, and I’m told the reaction on my face was pretty amusing. (Actually I think that’s why most of this stuff happens, because I’m told that I tend to respond “animatedly.”) I went to the bathroom to wash my mouth out a little. Tangent time again.

I don’t know when, but at some point, most likely after I started hanging out with Josh a lot, I started putting a lot of sugar in water at restaurants. It’s cheap, which is nice, but it’s actually gotten to the point where I prefer it to soft drinks sometimes. I don’t always do it though, for two reasons: one, I use a lot of sugar, not as much as Josh does, but still enough that it freaks some people out; two, if the restaurant has the sugar in packets, it’s unusable because of said amounts of sugar required to make it good. (My Dad just left for work, and in coming out of the house ungummed the door for me. The morning has become rather pleasant though so I think I’ll stay out here and finish this up.)

This brings be back from the bathroom, and when I sat down I took a big gulp of my water, sticking my straw all the way to the bottom where the sugar was to help get the taste out of my mouth. I put a lot of sugar in my water, so the white at the bottom of the glass didn’t surprise me. What surprised me was the salt.

Anyway tonight I fell for it again, but it was just a minor gulp from the middle of the glass so not nearly as potent as the last time. I had chocolate cream pie to get the salt taste out, so overall it wasn’t that bad, but I thought it was pretty funny that I fell for it again. (My Dad just looped back home, donuts in hand. How nice is that!) Dinner was a lot of fun, and it was neat catching up with Ramie who I haven’t seen since winter when she left again for New Haven (she attends Yale). We discovered there is no spoon.

Ramie had never seen the Red Button so that was the natural next step, and Ramie pushed it. I don’t think she has yet felt the full repercussions of the experience, but she will. During the meeting with the Button Guy we were told there was another hidden treasure we hadn’t discovered yet, namely a motion detector that set off a horn when you walk under the bridge. So we did all we could to set off any motion detectors in proximity but to no avail.

Somehow that turned into wrestling though, and two questionable characters accosted me by the bayou and even though they never got me close to it, I think everyone had fun trying. Josh had his turn too. I think at some point during the night (maybe a Josh tackle) I managed to scrape my knee; I don’t remember the last time I scraped my knee, which means I need to get outdoors more.

We ended up in a internet café type place in Sarah’s Dad’s apartment building (which was quite swank). There was some IM mischief, I set up Ramie’s blog, but most of the night was spent showing Sarah all the hilarious memes she missed because of her dial-up connection at her house. She got to know the Chubby Jedi, Angrybot, dancing and rapping plushies, and a few others I can’t remember.

The hour was late, and so we parted ways and went to get some rest.

Which brings me back to this porch, this door, which I think I’m going to go in now. It better not have jammed again…

WordPress Now Available

Extra, extra, read all about it.

I am very happy to announce that the first release of WordPress is now available for download. A full change log is available, but here is a brief overview of the new features.

  • Texturize — So good it’ll make your quotes curl.
  • WordPress Links — A link manager with everything you’d expect, from Weblogs.com support to a handy bookmarklet. Manage as many blogrolls as you like, and have complete control over their display.
  • XHTML 1.1 — WordPress is complaint with XHTML standards up to 1.1, though by default it sends a 1.0 document type to avoid compatibility issues.
  • Highly Intelligent Line Breaks — Occasionally called “nl2br on steroids,” this brand new function adds line breaks except where there is already a block level tag or another line break.
  • New Administration Interface — We’ve made it as simple as possible, and no more. Everything has been restructured from the ground up in a fully compliant XHTML/CSS interface.
  • Manual Excerpts — This allows you to handcraft summaries of your posts to appear in your RSS feed and other places.
  • New Default Templates — Again we’ve streamlined theses with the latest in simple, easy-to-understand standard XHTML and CSS. And not a CSS hack in sight.
  • Plus numerous behind the scenes code cleanups, making this release faster and more stable than ever.

WordPress is available completely free of charge under the GPL license. Enjoy!

Go get it, and then go tell everybody about it. Many thanks! And now, it’s time for a party.

Slow Burn

I feel like Neo in the first Matrix when he looks around everywhere and sees code, because code is all I’ve seen for hours, far too many hours. I’ve basically been working non-stop on getting WordPress out the door. In a bit I’m heading out for a meeting but after that it’s right back to work. This evening should be a nice chance to relax though, as I’m seeing Hamlet at the Alley Theatre. I’ve never seen Hamlet on stage before, so I’m curious to see how they do it.

Whoa. WordPress.

Well, it looks like WordPress is going to become the official branch of b2, once we put out a release of course. Which should be soon, very soon. Time to start burning the midday oil. (I switched my sleeping hours.)

In other news i’m looking forward to seeing Michel’s new site, which he has some pretty cool thing planned for. He’s also doing more photography now, so maybe some cool b2 photolog features will come out of it. 🙂

Texturize Finished

I just stuck a fork in Texturize and I’m ready to integrate it fully with WordPress. I’m very satisfied with the speed and functionality of this latest version. Not much in way of feature changes, except for one I think is pretty significant.

The Q tag would be great if it weren’t for Internet Explorer’s lacking in the realm of CSS generate content. (See Hixie’s scathing remarks for a critical look at IE.) Anyway this is the first automagic quote curlifier to do this (cue 15 corrections) though I’m sure Textile and SmartyPants won’t be far behind. The great thing about this technique is it lets you markup semantically meaningful quotes in your writing without losing a majority of your audience. Even better it would be trivial to put some simple browser detection and send the markup to browsers that get it. What a concept, using browser detection for good and not evil. This post is the first one where I’m using this technique. Hope the sky doesn’t fall. Update: It didn’t.

LINK Navigation

Now I know I just gushed about Opera, but I just found another reason why Mozilla kicks butt. Back in the day a number of link types that could be used by user-agents in an additional navigation bar or pre-cache some elements “to reduce the perceived load time.” Cool, eh? There are a number of possible applications in the blog format that lend themselves well to this, and I’ve tried to put as many as possible here. Viewing the source or visiting in Mozilla is the best way to get a feel for what’s happening and how neat the application is, but some descriptions are in order nonetheless. I don’t know the default setting for the “Site Navigation Bar” is for Mozilla, but to make sure it’s on go “View > Show/Hide > Site Navigation Bar > Show Only As Needed” to make sure you’ll see what all the fuss is about.

First, it was very tricky hard to get this all working with my current setup; whenever I try something new here my immediate thought to how it can be integrated into WordPress, but the steps I had to take were so convoluted that I doubt that any of this will make it into the next release. Anyway the first useful link that came to mind would be “bookmark,” something I specify the rel attribute on my permalink tags but no current browser picks up. So for example the bookmark link for this entry would be like so:

<link rel="bookmark" href="/p620" title="LINK Navigation" />

For any index, individual, archive, or category page you look at on the journal part of this site there will be a set of bookmark links to each of the entries on the page. I have created similar links for commenting and trackbacking entries, that personally I’ve found to be an extremely efficient way to get around. Check under your “More” menu in Mozilla to see it all. Mozilla also links nicely to the alternative representations of the content, such as RSS, and though it links to the same resources on each page it really should link to the specific representation of only the content on the current page, so for example the comments page could link to its unique RSS 2 feed.

Then some basic navigation elements were in order. The logic of these should be apparent from the code, but there is a link pointing to the top page of this site, a link to the search page, the FAQ, information about myself, and finally copyright information. When you are browsing a single entry you are offered links to the previous and next entry, as well as to the very first entry. This could be expanded once date-based archives are available to allow you to browse from month to month or day to day. Once you start using it, you’ll wonder how you ever navigated any other way.

Finally I set the categories to be “sections,” though I’m not sure if I’m entirely comfortable with this. If you envision all of the text of this blog as a document, then the “index” could be the front page, but after that it’s open for interpretation. Should categories be sections or chapters? Could chapters be say, month-based archives? What if I wanted some arbitrary division of chapters, say by whatever relationship I was in at the time? Sub-sections seem ill-defined as you can’t seem to define several sub-sections as a child of a section, though I may simply need to explore this further. Also I am feeling slightly constrained by the software I use to manage everything, but it would be fascinating to see how someone without those constraints such as Tantek could do with his structure. Ideally some common set of relationships specific to the organization of a weblog—much like the goal of the Weblog Metadata Initiative (where’d they go?)—could be agreed upon and implemented by default by the authors of the most common software and templates. Several people already implement a bit of this already, for example Mark, but there is a lot of unrealized potential here.

Opera is able to use all of the standard defined links, but doesn’t catch any of the extra ones. IE of course is oblivious to it all. Mozilla gets everything. If you have any information on other browsers let me know. I should be defining the extra rel attributes in a profile document, but there are only a few hours left before I’m supposed to “wake up” for my classes tomorrow, so some sleep may be in order.

miniBB

I’ve spent all night hacking miniBB to have some semblance of standards compliance. I like it a lot because it’s simple and easy to get around, but the coding style (or lack thereof) in the source is really painful. In addition to no formatting of the PHP, the HTML suggests a lack of a basic understanding of markup languages, with enough nested tables to curl your toes. But guess what, it validates. On that note I would like to announce that the WordPress Support Forums are now up and humming along nicely.

Em and En Dashes in Movable Typo

Several users of the MTCurly plugin have written in or commented about the module catching em dashes written in as two hyphens. In the PHP function I have parsing the text on this site, I actually have this rule running. Well, it’s a pretty trivial task to do this, but when I was thinking about it the issue of en dashes bothered me and I decided to reread one of my favorite ALA articles, A List Apart: The Trouble With EM ‘n EN.

While the majority of people will just want to use the em dash, I think the possibility of having en dashes generated automatically as well would be very convenient and encourage more widespread adoption of them. But how do you notate an en dash using only the characters on the keyboard? I thought about this and came to the conclusion that there should be two optional addons to the code, one for changing two hyphens into an em dash, and one that changes two hyphens into an en dash and three into an em dash. Get the updated code. I’m curious to hear some thoughts on this.

For those who aren’t familiar with the proper usage of em and en dashes, here’s a quote from the ALA article, which I think is the best summary of the matter on the net, by Peter K. Sheerin.

The em dash (&#8212;) is used to indicate a sudden break in thought (“I was thinking about writing a—what time did you say the movie started?”), a parenthetical statement that deserves more attention than parentheses indicate, or instead of a colon or semicolon to link clauses. It is also used to indicate an open range, such as from a given date with no end yet (as in “Peter Sheerin [1969—] authored this document.”), or vague dates (as a stand-in for the last two digits of a four-digit year).

Two adjacent em dashes (a 2-em dash) are used to indicate missing letters in a word (“I just don’t f——ing care about 3.0 browsers”).

Three adjacent em dashes (a 3-em dash) are used to substitute for the author’s name when a repeated series of works are presented in a bibliography, as well as to indicate an entire missing word in the text.

The en dash (&#8211;) is used to indicate a range of just about anything with numbers, including dates, numbers, game scores, and pages in any sort of document.

It is also used instead of the word “to” or a hyphen to indicate a connection between things, including geographic references (like the Mason–Dixon Line) and routes (such as the New York–Boston commuter train).

It is used to hyphenate compounds of compounds, where at least one pair is already hyphenated (as in “Netscape 6.1 is an Open-Source–based browser.”). The Chicago Manual of style also states that it should be used “Where one of the components of a compound adjective contains more than one word,” instead of a hyphen (as in “Netscape 6.1 is an Open Source–based browser”). Both of these rules are for clarity in indicating exactly what is being modified by the compound.

Other sources also specify the use of an en dash when referring to joint authors, as in the “Bose–Einstein” paper. Some also prefer it to a hyphen when text is set in all capital letters.

While quoting the above article, I noticed what may be an error in the source where it looks like in the paragraph about en dashes em dashes are actually used. I’ve corrected it in the quote above. Typos happen, I’ll drop Zeldman an email. (Time to break out the spel chequer.)

I’m also considering adding a few other things to the next version of the plugin, so if you have anything you’d like to see in there let me know.

Curly Quotes in Movable Type

I am happy to announce that the “curlyquotes” module for Movable Type has passed out of beta into the release stage. Many thanks to Todd of Dominey Design for testing and providing valuable feedback. Here are the updated instructions. For full details, please see this script’s info page, which lets you receive updates by email, leave comments, report bugs, ask for features, and ask questions, et cetera. Here are the updated installation directions:

  1. Install the MTRegex plugin. (Directions from readme.txt file)
    1. Get file.
    2. Place the ‘regex.pl’ file in your Movable Type “plugins” directory
    3. Place ‘regex.pm’ and ‘postproc.pm’ in a ‘bradchoate’ subdirectory underneath your Movable Type “extlib” directory.
    4. You should end up with something like this:
      • (mt home)/plugins/regex.pl
      • (mt home)/extlib/bradchoate/regex.pm
      • (mt home)/extlib/bradchoate/postproc.pm
  2. Create a new template module called curlyquotes with the code from here.
  3. Add <$MTInclude module="curlyquotes"$> to the top of all your templates.
  4. Replace all occurences of <$MTEntryBody$> with <$MTEntryBody
    regex="1"$>
    .

Usage is free, in every sense of the word, but if you could throw a link back this way I would appreciate it. Also if you improve on the code in some way, submit your changes so everyone can benefit.

What this module does: It takes straight quotes/prime mark, and makes them proper typographer’s quotes, sometimes called “curly” or “smart” quotes. So basically it takes "this" and makes it “this” using the proper HTML entities. It also works with single quotes, apostrophes, and multi-paragraph double quotes. It slices and dices!

Why? Because there is no button for a curly quote or apostrophe on the keyboard. No really, see the old post for more.

Greyscale

A return to normalcy? Not quite, but it’s a beginning. Grief is a natural reaction to extraordinary events, it’s a protection mechanism to help us cope. However when it’s prolonged it can have the negative effect of holding us from moving forward. It’s impossible not to grieve with the images being shown on every station and website, however, things must move forward. I think that a lot of people took a step back and thought about things yesterday, and I couldn’t think of a better way to honor the memory of September 11th.

9/11 is a flashbulb memory for most everyone; every trivial detail about where we were, who we were with is burned into our memories. For my generation, this is really the first event of that kind, thankfully. I tried to think of today as a day of quiet introspection–remembrances, resolutions, emotions, and most of all, examination of today’s events. Where has the US gone since 9/11? I think reaction-ism on the part of some lawmakers has hurt the very things we’re trying to protect: our liberty, freedom, and ultimately, safety for ourselves and our progeny.

Anyway, mostly because I don’t want these things to fade in my own mind, I have set it up so on the 11th of every month the memorial (greyscale) theme will load for that day.

Curly Quotes for Movable Type

I’ve finally gotten around to writing the instructions for Movable Type users to implement the curlme function using Brad Choate’s MTRegex plugin. The regex is the same, just the manner that it’s being implemented is a bit different. I’ve tested this out pretty extensively across this site, and there have been no problems. In fact, it’s in action right now. Once again I would like to thank Mark Pilgrim, who inspired this all.

The best instructions I can give, since I’m not a MT user myself, are to follow the very excellent instructions I’ve summarized below, replacing the MTAddRegex tags with the new ones.

  1. Install the MTRegex plugin.
  2. Create a new template module called curlyquotes with the following code:
    Code depreciated, see latest version
  3. $MTInclude module=”curlyquotes”$> to the top of all your templates.
  4. Replace all occurrences of <$MTEntryBody$> with <$MTEntryBody

    regex="1"$>
    .

And you’re done! Post any questions you might have and I’ll respond ASAP.

Macro

Through Kymberlie I found a very cool photo contest at photojunkie that I’ve decided to enter. The theme of the contest is “Macro,” which is one of my favorite features on my camera. I have a ton of macro shots, so thinking of what to do was a challenge. The first thought that came to my mind was a face, and I had a particular model in mind but she isn’t available this Sunday, so I dove into the photolog to find one that suits. Kudos to Bridget. Without further ado, here it is:

KemahTake a second look at the horizon :), we’re actually on the big swinging rides at Kemah.

8-31-2002

8-31-2002—even though summer is over now, in spirit if not in weather, I wanted to try and capture some of the things that symbolize summer to me: ants, grass, dirt, bushes, sun. Update: added about a dozen more photos from tonight. Interesting perspectives at the River Oaks shopping center, and some car logos, a new theme.