Category Archives: WordPress

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

Automatic Paragraph Function Turns 1

Has it really been over a year? I can’t believe it.

An unassuming little script, called “autop” and titled New Lines to Paragraphs was one of my earliest attempts at massaging plain text into smart XHTML, and it has come a very long way since it first started. (See the legacy code.) The code is not perfect, and it may never be, but it has worked very well for an impressive number of people, and I value that.

The code has been improved significantly in the past few months as part of the WordPress codebase, and I’ve updated the code homepage to reflect these improvements. Cheers.

Apple In My Eye

So your Author would be a terrible blogger if he didn’t point out that iTunes is now available for Windows. It was immediately installed, requiring a reboot (the box had not been rebooted for 32 days), and preceded to crash consistently on a seemingly random set of files. It works swimmingly with about 95% of the files, but certain albums, when played or imported, crash iTunes every single time. Winamp, Windows Media Player, and every other media player installed works fine with said files. That said, one is very impressed with many of the features and how consistent it seems with the Mac version. Except the feature where it moves files out of their meticulously chosen folder hierarchy and renames them, losing track information in the process. Every feature but that one. Yes, it is an option, however the option does not communicate the weight it carries.

Ironically, today is also the day one decided to never by a Mac because one’s PCs were significantly cheaper and of comprable quality, the Windows OS is sufficently stable, and because of the beautiful things Michael Heilemann was able to do with Windows. (Not to mention the wonderful things he does with WordPress.) Something similar will be attempted here as soon as time permits. One program, Windows FX, was bought months ago as a result of its attractive functionality.

Update: I just saw this quote and thought it was worth including:

“We’re going to fight illegal downloading by competing with it,” said Jobs. “We’re not going to sue it. We’re not going to ignore it. We’re going to compete with it.”

—Steve Jobs. No wonder people love this guy. Hat tip: Wired.

Update: Something similar, but much worse happened to Adam.

Beginning On PhotoStack

It’s an entirely pleasant, rainy day, so I thought it would be a wonderful time to get going with Noel’s PhotoStack. I grabbed the latest version available and uploaded it to the server.

Trying to be as true as to I would actually use a program like this, I didn’t read any of the documentation. Plus there’s a readme file, but it has no extension so opening it means no less than three or four dialogs in Windows XP. A .txt extension wouldn’t hurt anybody. It gave me a message that the storage directory wasn’t set up properly, which told me that I probably need to edit a configuration file of some sort. So I fire up SSH. A ls -lah (which I have aliased as ll) shows a config.php, which I guess is what I’m looking for.

I fire up the one true editor. There seems to be a little more at the top than necessary and it doesn’t say much, but that’s a personal peeve. The varible names seem logical (some camelCase going on) but the descriptions above each is not always helpful. Mostly it’s just $photosName. I’ve never used the program before, and the description “The name of your Photos section.” makes sense to me as an English sentence but I don’t quite grok its significance.

Next up is the path information, which could possibly be streamlined. First we have $dirRoot where PhotoStack seems to want the absolute path to the script. It recommends “$_SERVER[‘DOCUMENT_ROOT’].’/photos’ may work for you.” but even though that makes perfect sense I’ve dealt a lot with this in WordPress. More people have messed up DOCUMENT_ROOTs than you could ever imagine, there are a few other solutions that may be better. One I’ve had good success with is dirname(__FILE__). which works like a charm for finding the absolute path of the current directory. realpath() may also be helpful, but we use the first trick in WordPress. The next variable is the URI of where PhotoStack is located, with the instruction “no trailing slash.” This is another pet peeve, but an instruction like this should be avoided at all costs. No trailing slash there, should I have a trailing slash on $dirRoot? It didn’t say anything. It causes confusion. It’s programatically trivial to detect and remove a trailing slash on this variable, so why even bother the user? Don’t make me think.

There are a lot more configuration options, a lot. It suggests replacing “no” with “yes” or vice versa to change the value. While this is probably more intuitive than boolean values of true or false, I think spelling out “yes” or “no” several times is a little patronizing. I know, impossible to please.

Okay so I’m done with the configuration file, I reload the URI. Still doesn’t work! I’m guessing it’s time to go to the readme, probably the storage directory needs to have permissions set or something. There is no wrapping in the file, which means each paragraph stretches really far and to read it I’ll have to scroll horizontally in my editor. Wrapping at 72 characters would probably not be a bad idea. Fortunately I know a shortcut (ctrl + j) to fix this but that’s just luck. I find out the software is licensed under the Creative Commons Attribution-NoDerivs-NonCommercial license, which I suppose means I can never use this for a paying client and if I want to improve on the code and release the changes without explicit permission from Noel. If Noel fell off a cliff I suppose the code would be locked under the license and development would halt? I don’t know exactly, but that’s what goes through my mind. Generally I’m much more comfortable with more liberal licenses, be it MIT or GPL or Artistic or anything Free. Next it says:

Templates in PhotoStack are not licensed as part of PhotoStack. Therefore, they are not subject to the licensing terms of PhotoStack. I’m placing this decision in the realm of Mr. Allen… If anyone can lend some clarification that would be great.

That doesn’t inspire the greatest confidence, but I’m planning to modify the templates anyway so maybe I should worry. Finally at the end it tells me to chmod 777 the storage directory. Ah, what I needed to know. I have heard some peopl ecomplain about the liberal chmod requirement before, but it’s really only necessary because of the way most web servers are set up to execute PHP, which I suppose could change in the future. It’s no problem to me. I secure things at a much lower level.

I’m already at the command line so it’s a simple matter to modify the directory. No errors but the pictures don’t load. Whoops, I missed setting $webDir variable, probably because I was planning to talk about it but went off on a tangent. The default value of this is “http://yoursite.com/photos”, and this is splitting hairs but there are several domains expressly for this purpose and an RFC to back them up. It’s a good practice because since yoursite.com isn’t reserved, it could theorectically be taken by some unsavory character that used its ubiquity in examples in some malicious fashion. You never know.

It loads! However I click on the sample album and there’s something funky going on with the layout. Perhaps it has something to do with the size I set my thumbnails at (150×150, though I would like to just be able to say something like 150 px on its longest side and allow it to keep its proportion, or just 150 px wide all the time. I’m not crazy about every thumbnail being square). What ever it is it will have to wait until tomorrow because it is past my bedtime. Hopefully tomorrow I can start loading this thing up with photos.

“Matthew! How could you possibly be so nitpicky with this poor guy’s project? How would you like that if someone did that to your project?” Actually, I would be thankful and flattered. If I didn’t like Noel and think PhotoStack could be great I wouldn’t be spending time documenting my thoughts on it. Constructive feedback is golden to an open-minded developer.

Clever New Comment Spammer

I think I’ve been hit with a new kind of insidious comment spam. At about four this morning I got a comment on an old entry that said:

Well, I just wanted to sign a blog on the first time in my life :))

Kind of cute, right? Isn’t that nice that some guy, “James Hatchkinson,” came across my site and was so enamored that he decided to leave a comment, his frist ever. Well, two minutes later the exact same comment, URL, and name was left on the WordPress blog. Clue #1.

The URL he left as his with his comment is nositeyet.com, which I’m not going to link because this may be this spam’s whole point. I clicked the URL from the comment before realizing it was probably just a newbie way of saying “I don’t have a site yet.” People I know have left similar things for their URL in the past. Well, the link takes you to some sort of web company with a hideous flash intro and an equally mediocre web site. Hmmmmm. Clue #2.

Clue #3, each comment came from radically different IP addresses. Let’s give this guy incredible benefit of the doubt and say just maybe he was a newbie user who just came upon an old entry, left a silly comment with what he thought was a fake website, and then continued browsing to another one of my sites, went to a slightly old entry, and left the same comment. So why did his IP change? The first comment came from 195.200.168.250, which resolves to anaconda.pacwan.net, and the second from 80.58.4.44, which is a proxy of some sort. Most users, especially the type that would leave this sort of comment, don’t randomly start using proxies mid-browsing. Strike three.

Finally, I decided to look up this guy’s IP in my access logs, to see what pages he visited. There were no records of his IP visiting any pages on either site in my PHP/Javascript based logging software, which means whatever client was used to leave this comment doesn’t support javascript or the <noscript> tag and images. Time to grep the raw logs. No referrer, none of any of the usual signs you would see in a log entry. Here’s the relevant lines from my photomatt.net logs:

80.58.4.44.proxycache.rima-tde.net - - [18/Sep/2003:04:03:50 -0500] "GET /p644 HTTP/1.0" 301 303 "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"
80.58.4.44.proxycache.rima-tde.net - - [18/Sep/2003:04:03:54 -0500] "GET /p644 HTTP/1.0" 200 15796 "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"
80.58.4.44.proxycache.rima-tde.net - - [18/Sep/2003:04:03:56 -0500] "POST /b2comments.post.php HTTP/1.1" 302 5 "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"

And from wordpress.org:

anaconda.pacwan.net - - [18/Sep/2003:04:01:35 -0500] "GET /development/archives/39 HTTP/1.0" 200 7220 "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"
anaconda.pacwan.net - - [18/Sep/2003:04:01:40 -0500] "POST /development/b2comments.post.php HTTP/1.0" 302 0 "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"

There’s got to be a good story behind this. If this is indeed malicious comment spam then this is the most clever I’ve seen yet. If I hadn’t been the author of two posts he spammed and gotten the email notification I never would have suspected a thing. Has anyone else seen this?

What’s worrying about this whole thing is IP filtering (reactive) techniques that are usually used to block comment spam or content filtering (proactive) techniques which we’ve been experimenting with on WordPress wouldn’t catch this guy. In fact I can’t think of any good way to preemptively block this sort of thing. If Google didn’t give blogs so much credence we wouldn’t be having this problem. I suppose now we have to watch every comment with an eagle eye, on the lookout for anything suspicious.

Update: I got it reversed above, “he” commented on the WordPress blog first and then here.

Assorted

A little of what’s going on in the corner of the world wide web I frequent:

Introducing: Matt Reality TV

I know that if I don’t document it as I go along I’m never going to find the time to do it at the end, so I’ve decided to do a play-by-play of all aspects of redoing this site. The details will range from purely aesthetic to highly technical. It will cover software such as WordPress and Gallery, and the modifications I make to each, plus a little about the home grown database stuff I have running most of the rest of this site. I’ll be going through section by section until it’s all done.

Also, starting tomorrow, I am going to be moving out of the house and into a new apartment with my new roommate Josh, another event which I plan to document and photograph mercilessly, so I christen this new category Matt Reality TV, or MRTV for short. It’s not going to be overly put together, just stream of thought and code very similar to the actual process I use. It’s raw, hence the “reality” name. I invite commentary on everything, but please try to keep it constructive.

Of course at this point I should probably discuss what’s been done so far, and I’ll try to catch up, even though I’m awfully tired.

The many reasons for the redesign have been touched upon, but I haven’t really said why I kept the old one for so long, after changing every month since the site started. It was actually because it was stolen not too long after I first finished it. While I complained on the surface I was actually genuinely flattered on some level because it was the first design I had done that someone had thought good enough to swipe, as silly as that sounds now.

So far I’ve been playing around with different things. The current layout comes from a sketch I did on a piece of paper (thanks Rannie!) that I later discussed and brainstormed some things with Greg. Greg helped me come up with some colors (not the current ones exactly) and the rest was really just implementation. I had Dante in my mind from the beginning as the serif I wanted to build things around, but I didn’t have it in the format needed (OpenType or TrueType) so I ended up springing for it (a bargain!) at My Fonts. The title I put together and tweaked manually in Photoshop but the entry titles are all generated dynamically from a very simple PHP script (source). The titles are actually text with CSS backgrounds and hidden text using a modified CSS image replacement technique with the common elements in the CSS and the actual image reference inline so as to make things easy. I have just made the titles smaller than they were (32 instead of 36) and I like this better, I may make them smaller still.

I like this technique because (amoung other things) you can still use Mozilla type-ahead for links and you can still search for text within a page. Nifty. I went ahead and made the titles the permalink as well, which I’ve advocated several places before and made the default in WordPress, but never got around to doing it myself.

I just cleaned up a bunch of stale files, particularly in the root directory. That sort of thing can accumulate to an alarming degree. Now I try to put everything I used to stick in the root for convinence in subdirectories, usually divided chronologically so as to start “fresh” every year. This also lends to the permanence of everything I may link to, most of the work in keeping links valid comes from forethought. I also used a number of files that were purely for my own testing into a more appropiate sandbox area.

The background is a simple GIF image that is actually derived from that garish green that was on here the other day, faded and changed a little and then filled with a line pattern in Photoshop to get where you see it now. The colors need more tweaking, which I’m going to work on after this post, but I’m leaning away from the green look I was so partial to the other day. We’ll see where this goes.

WordPress Preview

Partly as a personal todo list, and partly as a special bonus for Photo Matt readers, here’s what’s currently done or in development for WordPress .72, slated for release on [date]. This is in no particular order.

  • Improved quicktags — create ordered and unordered lists easier, <ins> support WITH datetime attribute, possibly cursor aware.
  • HTML Sanitation — Bad code checks in, but it doesn’t check out.
  • MetaWeblog API support
  • Multiple category support
  • Completely revamped options system, never edit a configuration file ever again.
  • Password-protected entries
  • Movable Type import

There are going to be some under the hood changes mainly paving the way for multi-blog support. Also significant is the documentation efforts that have been ongoing. A few other changes mostly related to RSS may or may not make it in, depending on how quickly everything comes together.

Open Key Works

The OpenKey system works! I would link to all the old posts, but it’s very late and I’m very tired. Browse the categroy.

Long story shorter, my keys were locked in my car since yesterday, and it seems I had given a key to everone but the people I live with (sometimes called my family) so I couldn’t get in, but key holder Sarah W. (who will have a photolog soonish) drove over and opened the car for me, and all was good.

I’m thinking of starting a gallery of people with their photomatt.net key to collect all the pictures in one place (when I have many people their key it was with the stipulation that they take a picture with the key and send it to me) and also to test out some new WordPress photolog stuff. Soon.

Also, keys are sexy.

First Step Toward World Domination

Before I finish getting ready to leave (and yes it’s 4 AM) I would just like to point to this search. Google is a harsh mistress; weeks ago I was on the fourth page (after skirting the first page a while back) and now somehow I’ve been bumped up to 8, 7 if you take out the duplicate.

I can’t think of a better birthday present for this blog from Google. (This domain turned one year old a couple of days ago. I’m working on a year recap but it’s taking a while. Loving the new WordPress draft feature though.)

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. 🙂