Moved.

VPS hosting is the future.

After quite some time using Dreamhost’s shared hosting service, I finally moved most of my sites to a Linux VPS. Not that I’m extremely disappointed with Dreamhost, it just so happened that I’ve been hearing good praises on VPS hosting when compared to traditional shared hosting, especially with Slicehost. That, and the itch to play with programatic things that I can make or break all by myself.

It took me some time to finally bite the bullet, I had to be sure I wasn’t entirely clueless with what I’m diving into. It turns out it isn’t really as hard as I thought it would be, at least for now. I’ve got this weblog and Hana’s up and running. The blogger.ph subdomain blogs are also running on the same server now and I’ve only got a few more domains left in DreamHost. I think I’ll be keeping Dreamhost for a while as a contingency, anyway I think I will still be using them for domain registrations.

So let me tell you a few details on this VPS thingie. I’ve got Ubuntu Hardy Heron 8.04.1 running Nginx serving PHP, with the database predictably MySQL. WordPress is snappier than ever and runs without problems. iPAP also runs fine in this config. Since Nginx is not Apache and uses a different rewrite engine, you’d have to say goodbye to everything you learned on .htaccess rules. Fortunately, nice permalinks for WordPress are still doable with some googling. For email, I installed Postfix for server outgoing mail but have everything managed through Google Apps; a simpler solution that does the job with ease.

Now all I have to do is catch up on my writing.

WordCamp: Developing WordPress Plugins

I did tell you I was slated to speak at WordCamp Philippines last week, right? I’m not so sure if I managed to expound on my topic acceptably, but hopefully I gave fellow WordPress users an idea on how to approach the task of coding your own WordPress plugin. If in doubt, you can always refer to the “Writing a Plugin” article at the Codex, it was so good I used it as the outline for my discussion. I embedded my slides above, just in case you want to look at it. It’s up on slideshare if you wanna grab it or share it with other WordPress bloggers.

I demoed a plugin I call Strip! which allows you to remove/hide links from a given comment. Unlike similar plugins, you can undo this action at any time. I was supposed to make this plugin available earlier in the week but had to do other things, good thing Drew came looking for it so I had enough reason not to forget it. And for good measure, Jayvee has been playing with it since Monday and it seems to work good enough for him.

Now what is the use of the Strip! plugin? I occasionally receive gratuitous comments from readers that though they try to respond to the discussion for a given post, they still (desperately!) promote and link to totally unrelated material for no apparent reason, except for you–know–that–now–but–I–won’t–tell–you. Some may have completely relevant comments but provide spammy and made–for–AdSense type of sites for their homepage. You can simply delete or mark these comments as spam, but sometimes they are still integral to the discussion. So you just strip out all links for that comment, but leaving just the text and its context. Maybe you’d like to give it a try?

Hana took many photos during the conference but I haven’t gone through them just yet, but I’m sharing you just two for now:

Markku & Hana at WordCamp Philippines 2008.

I believe AJ took that photo of us. Now here’s another photo, this time I’m with Matt Mullenweg, the WordPress man himself!

Markku with Matt Mullenweg of WordPress/Automattic.

I was very happy when I spoke to Matt and heard him say that he remembers this site for being one of the best–designed weblogs back in the early days of WordPress. Yep, the early days, when the plugins and themes features of WordPress were still to be conceptualized, the time when we still called blogs as weblogs. It was really nice to meet you and have you here in the Philippines Matt, we look forward to your next visit! Smile

I’ll be uploading the rest of the photos soon and of course, a few more stories to share.

PHP rocks! (Java sucks?)

Galleria cinemas.

I’m not a fan of rant–type entries though I just feel like doing it now. I’ve been going through java training here in the office and there’s one thing I could say: PHP rocks! Java/JSP/Struts and everything that comes with it is nice, but coming from a PHP background I just feel like they’re trying to complicate simple problems. Then you have XML config files and other things that do the same and end up making everything too hard to comprehend.

Whew, had to get that out of my system. Just a random rant. Smile Gotta go now.

BukoPie

BukoPie is a new feed reader for WordPress I hacked from the SimplePie demo, allowing WP users to have their own XML feed reader right in the WordPress dash/admin pages. I added functionality for keeping a feed subscription list and tag–based categorization. I’m sure this isn’t the first feed reader for WP, but it fills my needs quite well. Try it.

Update: Installation is simple, just drop the bukopie folder in your plugins directory and activate the plugin.

wp-recent-links 2.0

The D60.

You’ve probably heard that WordPress 2.0 is just around the corner, or approximately 24 hours away. What better way to start WP 2.0 blogging but with the latest release of wp-recent-links! This version needs WP 2.0, but if you’re already running an RC then this plugin will be very useful. Grab it! Why? You can now display links inline with your posts like on this site, and more popularly, like Kottke.org. Remaindered links. Cool. Smile

Recent Links on WP 1.5.2

There is a problem with the Recent Links plugin on WordPress 1.5.2. It seems the redirection for the archives page and the monthly archives is failing, most probably a result of the changes to the handling of PHP global variables in the current WP. Thanks to the several users who have emailed to inform us. I am still trying to find the fix, and will write about it along with a plugin update at the soonest time possible. Please note that this is not a security problem, WP and wp-recent-links are working fine except that they’re not displayed correctly. Wink

iPAP progress

iPAP now has comments, thanks to Mathias’s wonderful work. A million thanks, my friend! This is one of the most sought–after feature, requested in almost every email inquiry I receive concerning the photo app. Development has slowed down significantly the past week with spare coding time becoming very uncommon. But I managed to squeeze in ZIP uploads last weekend, something for everyone to play with when I pack another release this weekend. Hopefully. These new features will be included in the upcoming beta update. I apologize to those who were expecting to see it in the current release. For now, have a look at this nice WP/iPAP powered site by a fellow Filipino. Rannie, we’ll be waiting for more photos. As a side note, zen photo’s development is going well. Nice to see another elegant photo publishing solution like iPAP.

iPAP 0.9 Beta2

iPAP 0.9 has reached Beta 2 and is now much faster. Caching now utilizes the SQL database instead of the file system, and we’re testing if this is the ideal setup. If you downloaded the first beta, you really need to use this since the former has one stupid bug that slows things down. Go view some photos and see if the app rocks. Wink

iPAP 0.9 Beta

A year after the 0.7 release, the major update to iPAP is finally here. A beta of the 0.9 code is now available to everyone, featuring two major changes: MySQL storage and labels.

Features

I deferred using MySQL, sticking to my textfile–based storage class until I discovered it was causing significant slowdowns in page generation. Now, SQL–based storage is the only road forward.

I mentioned labels months ago, which is a nice way of categorizing albums. In a way, it’s a product of the folksonomy trend everyone has gone gaga about. Labels are applied to photo albums and not photos, at least for now. I personally think tagging every single photo is overkill, even adding descriptions can be tiresome.

Performance

Currently, performance is far from snappy, but still better than version 0.7. The template caching system does its job well, reducing page generation to a minimum. Don’t bother playing with the $cache_life value unless you know what you’re doing.

Beta software

I hesitantly tagged this as “beta” because of the negative connotation it might produce. It is not a reflection of the applications’s quality. It’s classified as such because some features are still upcoming, and some may work differently in future releases.

For fellow developers digging into the code, please be gentle. Specific parts of the codebase need optimization, and not everything you see will be there in the next release. The code is not an indication of features to come or the project’s direction.

Upcoming

Comments: This has been the most requested by far, and will probably be ready by 1.0. Nothing too complicated, just a simple comment system for photos.

RSS: These days, everything has XML feeds. We’re late, but we’ll be there.

FTP uploads: A system will be in place for those who prefer to add photos via FTP. Related to this will be support for zip uploads.

WordPress plugin: Most likely related to RSS, I’m thinking of a WP plugin to display your iPAP stream in your WP–powered blog, similar to Flickr.

I guess that’s all for now. Most of what you need to know is in the project’s page; everything else a few clicks and keystrokes away in case you’re too shy to leave a comment.

iPAP MySQL

Some of you might be wondering where the MySQL version of iPAP is — so have a look at Hannu’s photos. Coding has not stopped for the past few weeks, and the codebase is now completely migrated to MySQL. I’m refining the administration interface, and will be working on the new template. Mathias has some surprises up his sleeves as well.

*project

I will be working on a long overdue personal project for tonight, maybe until tomorrow. I hope I get most of it done, so we can all enjoy its goodness. Wink

Comment Hilite 1.1

I just updated my comment highlighting plugin for WordPress and it’s now bumped up to version 1.1. The previous version works fine but 1.1 adds functionality for WP–1.5! Utilizing the added plugin hooks in 1.5–strayhorn, you can highlight comments from the comment loop in the entry pages by using the rp_comment_hilite_link() function, which works not unlike the “Edit This” or “h” link in the default templates. I’ve thought about this before but never had the time to implement it, not until ckozus emailed about it yesterday and I just felt like diving into PHP and WP for an hour or two. It feels good to code in PHP after months of PL/1 and COBOL!

iPAP 0.71

After months of inactivity, I just decided to update iPAP a teeny–weeny bit. Seriously, I just revised the readme.html file and changed the default $cache_life value to a 5–day equivalent.

After playing with my experimental 0.8 version, the flatfile database system just doesn’t cut it anymore especially if you have hundreds of photos spanning several albums. Page generation takes a more than a second in some instances — unacceptable. A nice workaround right now is to prevent frequent refreshing of the cache, since there isn’t really a need for that operation unless publishing new photo albums, hence the increase in the default $cache_life value. The MySQL–powered version of the application is in the works, I’m just not yet done migrating all database calls to SQL. Coming soon!

In addition, there is also an update for SmartyPants On Demand, now utilizing version 1.5.1b of Michel Fortin’s excellent PHP SmartyPants. Some sections of the site were also affected by the sudden desire for spring cleaning and tinkering. Smile