Video: How GetSparks.org Uses CodeIgniter Sparks

If you aren’t already familiar, a package manager and repository for CodeIgniter libraries was released last week at GetSparks.org. In the few days between then and now, some very interesting and useful packages have been submitted. There’s one for combining, minifying and caching assets, one for database scaffolding, viewing logs, geocoding, template-ing, etc.

Here’s a short screencast that shows how GetSparks.org has already started using some of these sparks in its own development.

If you’re interested in the project, follow it at twitter.com/getsparks. If you’re a developer and you’re interested in following or helping out with development, head to the github repository over at http://github.com/katzgrau/getsparks.org.

As always, if you’d like to join the project, find me at: katzgrau@gmail.com.

Posted in Uncategorized | 2 Comments

Introducing CodeIgniter Sparks

If you’re familiar with package management, you’re aware of how awesome it can be. Yum, Apt, MacPorts, homebrew are examples of package managers on the Operating System level. Need to install some common software package like mysql? On OSX, it isn’t any harder than:

$ brew install mysql

For software development, you have Python’s eggs and Rails’ gems, which each work a bit differently, but generally achieve a solution to a big problem: Using, installing, and contributing other developers’ libraries should be easy.

So if you’re a CodeIgniter developer, picture this common scenario: You need a library to interact with Amazon’s new Simple Email Service, but you know someone out there must have already written one. You end up on some guy’s blog, and it looks like he has a working library. You copy/paste, download, whatever.

Maybe the lib was written to work with CodeIgniter, or maybe it’s just a general PHP lib. Maybe it works, maybe it doesn’t. Maybe it has solid documentation, maybe it doesn’t. If it’s not to your liking, back to Google you go, and search for something else. This is all time-consuming.

As of today, this problem is solved for CodeIgniter. It’s called CodeIgniter Sparks, and you can read all about it at http://getsparks.org.

CodeIgniter “Sparks” is still in an alpha state at the time of this writing, but it’s planned to be a full package manager for CodeIgniter applications. You can install it by using a one-liner.

Thanks to some early contributions, you can now get some Amazon SES functionality by:

$ php tools/spark install amazon-ses

And boom-shakalaka! It’s installed in your application. A special thanks to Joël Cox for that one.

Phil Sturgeon and Dan Horrigan each came through with their respective ‘template‘ and ‘tag‘ packages.

It’s still very early in the project’s lifetime, but I don’t think its too early to say that this could be very beneficial to the frameworks as a whole. As I put in the “GetSparks.org Manifesto”:

  1. There are plenty of feature requests for CodeIgniter, especially when it comes to libraries. 99% of the suggested libraries don’t belong built-in to the framework. We hope that Sparks helps keep CodeIgniter one of the lightest, fastest frameworks for PHP.
  2. Some fantastic and useful libraries have been written for CodeIgniter, but they remain scattered around the internet on blogs, wikis, forums, and github. Using these in your projects is a chore of copy and paste.
  3. When you’re thinking of using someone else’s code, there isn’t much of a way to gauge whether it’s ready for the big-time. Is it fault tolerant? Unit tested? Relatively recent?
  4. Most importantly: CodeIgniter developers don’t have an easy way to share their code and contribute extensions to CodeIgniter functionality.

It all comes down to making code easier to use and share among CodeIgniter developers.

If you’re interested in helping out on the project, reach out to team@getsparks.org. Right now, the team consists of me, John, Beau, and Mike. If you just want to follow along, check out http://github.com/katzgrau/getsparks.org. I’ve already received a ton of feedback, and it’s all appreciated.

PS: John and I put together a podcast explaining why we thought all this was needed by CI a couple weeks ago. Check it out!

Posted in Uncategorized | 4 Comments

List Your GitHub and BitBucket Projects On WordPress

Over the weekend I put a full day into creating and completing a WordPress plugin that probably doesn’t appeal to anybody except for developers: A tool to list your github and bitbucket projects right inside a post or on your side bar.

You can see it in action on my projects page.

Basically, I was tired of updating my long-obsolete project list. These days, everything I do is kept on a publicly-hosted repository anyway, so why not pull my project info from those places so it updates automatically?

The plugin is simple to use. Just insert something like:

{{github:katzgrau}}

In your post or page where you want the list. Here’s a real-life example of the output:

I use BitBucket for CodeIgniter-related projects, and GitHub for pretty much everything else. So on my project page, I actually do:

{{github:katzgrau,bitbucket:katzgrau,sortby:watchers,sortdir:desc}}

Which pulls projects from both github and bitbucket, combines them, sorts them, and displays a list. A widget which comes with the plugin will do the same thing if you just want to list projects in your sidebar.

Anyway, check it out. You can find it in the WP admin plugin panel by searching for ‘GitHub’. Then just look for the ‘GitHub and BitBucket Project Lister‘. You can find the github repo (where it’s developed) here: https://github.com/katzgrau/wordpress-github

Posted in Uncategorized | Leave a comment

CodeIgniter 2.0 Released, User-Contributed Notes Coming

In my initial post after joining the CodeIgniter Reactor team (over Thanksgiving weekend ’10), I went as far as to saying that you could hold me responsible for the quality of the CodeIgniter documentation. Here’s a universal truth: Documentation > magic.

CodeIgniter 2.0 was released last week, with an announcement on the EllisLab news feed. The “Reactor” project is now considered to be “CodeIgniter”. All official forum references, downloads, and docs referring to CodeIgniter are referring to the project sitting here at BitBucket.

You can check out the lengthy change-log here: http://codeigniter.com/user_guide/changelog.html

Version 2.0 was released while some big features were still in development (but not 100% ready for the limelight). My favorite upcoming feature (by no coincidence) is something I’m currently putting together: A user-contributed note system for the user guide.

Everyone who keeps a place in their heart for PHP (as hard as it may be at times) knows how helpful php.net is. It’s a single place for clear PHP documentation, code examples, and user-contributed notes.

Some would argue that the most helpful parts of the PHP docs are the notes that PHP developers contributed themselves. A long-time request for CodeIgniter has been to add something similar the user guide.

Since late December, I’ve worked been working on (and have pretty much completed) a full-featured versioned user-contributed notes system for the docs. You can the see the progress in the BitBucket ‘user-notes’ branch:  https://bitbucket.org/ellislab/codeigniter-reactor/src/a6f52cbc8229

The actual application used to host the notes is being developed at: https://bitbucket.org/katzgrau/ci-userguide-notes

And of course, some screenshots of notes in action:

Adding a note looks like a clone of the contribution page at PHP.net:

You can check out a live instance of a user guide with the new system here (link not guaranteed to work into the future!): http://ci-notes-exp.katzgrau.com/user_guide/libraries/benchmark.html

Like I mentioned, the notes are versioned. That means notes can be promoted from older versions to newer versions, and they can be pruned from newer versions as they become obsolete, without affecting the old. Best of all, the user_guide will still come distributed in HTML format with the framework. The notes are pulled in and loaded via some simple Javascript.

I’ve always thought the CodeIgniter docs were the best among any framework that I’ve come across. I think this’ll take them even further.

Look for them at the end of Q1 2011.

Posted in CodeIgniter, PHP Development | 3 Comments

CodeIgniter/PHP + IIS + MySQL + MSSQL: It Works!

There are a lot of people out there who call themselves “LAMP” developers — short for Linux, Apache, MySQL, PHP. That’s the standard configuration for production PHP applications. Recently, I ended up having to build a CodeIgniter application on Windows, IIS, Mysql+MS-SQL, and PHP. Sound like there are bound to be issues? You bet, and it especially hurts because now I’m a real-live WIMP developer.

And what made it even more interesting was that due to constraints, I had to develop the application in Ubuntu and deploy to Windows for production.

Please keep in mind that I didn’t opt for this setup by choice. The servers to be used were already in place, and well, it just had to be this way. I’d imagine this unholy mix can be found on server farms somewhere around the seventh or eighth circle of hell.

Anyway, the point of this post is to document a few “gotchas” that came up along the way. At this point I should say that application is now happily humming along in production. I knew from the start that mixing all of the above would be a headache, but luckily, things worked out without sapping too much time. I should also say this before I start: Thanks to some great work done by others over the past 2 years, this setup was actually possible.

Gotcha #1: PHP and MSSQL on Ubuntu

Thank god this was so easy. In order to use the standard database functions like mssql_connect, mssql_query, etc, all I needed to do within my existing LAMP installation was run:

$ sudo apt-get install php5-sybase

And sh-bang, I could connect to SQL Server without an issue. From CodeIgniter, I set the database to use mssql as my driver, and I was home free.

Gotcha #2: PHP and MSSQL on Windows

For years, forums and IRC rooms were filled with hopeless requests to get these two to mix. In 2008, Microsoft wrote a driver to help PHP developers seamlessly connect to SQL Server. For Win-PHP installations, just install this gem: http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=80e44913-24b4-4113-8807-caae6cf2ca05 . Also, read up on the docs.

That driver uses a different API then the regular PHP mssql_* functions. In fact, it uses sqlsrv_* functions instead. So CodeIgniter can’t work with it out of the box. Luckily I found an excellent 2 and 1/2 year-old post by a guy who wrote the CodeIgniter driver to work with the Microsoft drivers. Just download the code, and drop it into system/database/drivers. Read up here: http://www.kaweb.co.uk/blog/mssql-server-2005-and-codeigniter/

One thing you will have to do to make it work with the latest version of CodeIgniter is create a dummy function in sqlsrv_driver.php. Just drop ‘function db_set_charset() { }’ somewhere in the class declaration.

As a side note, that driver would make a great addition to CodeIgniter Reactor.

Gotcha #3: mssql vs. sqlsrv

Notice that I had to use different drivers for connecting to SQL Server between Ubuntu and Windows. This is why it’s handy to use some sort of database abstraction class like the one that comes with CodeIgniter. All I had to do to switch between drivers when I deployed to the new environment was edit the configuration.

Also, query result fields that are fetched using PHP’s mssql driver come back as strings. The Windows sqlsrv driver gets fancy and hands back field values as objects. Your code won’t have to change for the most part, but beware that MSSQL ‘datetime’ fields come back as native PHP DateTime objects using sqlsrv_*, not strings. In the code, I ended up doing something like: if($date instanceof DateTime) return $date->format(…); else return $date;

Edit: Commenter Brian Swan and Twitter user Juozas Kaziukėnas have pointed out that the sqlsrv_ PHP driver will take a boolean ‘ReturnDatesAsStrings’ option in sqlsrv_connect() that specifies whether datetime fields come back as strings or objects. More info is here: http://msdn.microsoft.com/en-us/library/ee376928%28v=sql.90%29.aspx. Thanks guys!

Gotcha #4: File Permissions and Logging

As the author of WPSearch, a Wordress search plugin which does heavy work with the filesystem, I can say that the number one cause of broken installations is that the permissions are too strict. On Windows, files can appear to be 777 when viewing them via FTP, but on the Windows end, they are set as ‘Read Only’, or ‘Archive’. This throws a serious wrench into things.

When I first deployed to the production server, all I would get for responses was a blank page. Worst of all, the log wasn’t writing anything. After a trace through the CodeIgniter bootstrap, I found that the application died when the logging class was loaded. If your application’s logging threshold is set to write anything, and the logging fails, the application might just crap-out. This is different behavior than I’ve seen on linux, where you just won’t see logs appear in the logging directory, but the overall application still works fine.

Just turn off logging to make sure that empty responses aren’t the result of file permission errors.

Gotcha #5: No .htaccess Fo’ You!

I hadn’t known that I needed to drop the final application into an IIS instance from the start. I learned about that 1 day prior to the launch. Before that, I though I’d be rollin’ on Windows/Apache. Wrong!

IIS doesn’t use silly .htaccess files, which I had only used for standard URL rewriting/prettified URLs. I was forced to decide between converting the .htaccess to an IIS web.config file, or just ditch the prettified URLs. Since it was a small application, I went with the latter. Here’s a nice StackOverflow thread discussing a translation though: http://stackoverflow.com/questions/702526/translating-an-apache-htaccess-file-to-an-iis-web-config

Edit: Juozas had some comments here too: “@_kennyk_  about .htaccess vs web.config – you can actually import .htaccess in IIS URL Rewrite section.”

Gotcha #6: 2 Databases, 1 Application

This is more of a CodeIgniter issue. For this application I had to lookup data in a MySQL database, then use some of that information to pull rows from a MSSQL database. The hurdle revolves around having two concurrent database connections open in CodeIgniter.

You can’t really load the database in traditional CodeIgniter style, like $this->load->database(), or by autoloading it. Something like this doesn’t work:

$this->load->database('mysql-group-name');
# Do Stuff with mysql
$this->load->database('mssql-group-name');
# Do Stuff with mssql

Instead, you have to ask CodeIgniter to hand you back the actual database object with each connection. It’s a good idea to encapsulate each within the models where you’re using them. Do something like this:

class SomeMySQLModel extends Model {
  # the mysql db instance
  private $_db = NULL;

  function SomeMySQLModel() {
    $this->_db = $this->load->database('mysql-group', TRUE);
  }
}
class SomeMSSQLModel extends Model {
   # the mssql db instance
   private $_db = NULL;

   function SomeMSSQLModel() {
     $this->_db = $this->load->database('mssql-group', TRUE);
   }
 }

Gotcha #7: Mysterious lag time

IIS can exhibit some odd behavior regarding response times. When I was initially testing the application on my SliceHost dev server, I was getting pretty speedy responses in about ~100ms (keep in mind that I was connecting to both MSSQL and MySQL across the internet, not locally).

But when I moved to production, requests were taking 6 seconds each. Confused, I thought there must be some sort of bottleneck in the application. I used CodeIgniter’s profiling and benchmarking classes to investigate. I benchmarked the MySQL and MSSQL connections, queries, and overall application execution time.

The app was reporting that it was finishing responses within 100ms. So where was this strange delay coming from?

I then thought there might be some sort of redirect loop going on. From the shell, I ran:

$ time curl -v [address]

And something else became apparent. The full content of the page would come back, but there was a 6 second lag before the connection would finally close. After a little research on the Google, it turns out I’m not the only one who’s observed this with PHP and IIS: http://www.google.com/search?q=iis+php+response+lag

I would like to say I figured out why IIS was being so lame, but the in-house net-admin suggested moving the application to another production server on hand, where the issue mysteriously dissappeared. At that point, everyone was happy, so I didn’t look into it any further. I did read about some resolutions regarding DNS settings, and skipping name resolutions in the db configurations. That might have been it, but I’ll never know.

Recap:

Don’t willingly try this. That being said, everything worked out much better than it could have, and there were relatively easy solutions to the bumps along the way. If you have to put together a project like this, I highly suggest using some sort of database abstraction (or a framework like CodeIgniter), and planning out how you’ll work out URLs, permissions, and differing environments. Thinking these things over will save you a lot of time, and hopefully leave the stakeholders a whole lot happier.

Posted in CodeIgniter, PHP Development, Tools | Tagged , , , , , , | 11 Comments

Re: How to Find Good Developers

A little less than a month ago I made a podcast with John about how recruiters can find good developers. A small part of the podcast talked about reaching out to developers, and how adding something personal (ie, mentioning one of their projects) can really get some attention.

In the past few days, I’ve gotten two emails from recruiters: One awesome one, and a terrible, obviously automated one that I’d never, ever respond to.

First, the bad one:

Hi,
At some point in the past you contacted our firm directly or posted your resume on the internet.

You may not be qualified or even interested in this position but if you know someone in that may be interested in the position described below, please forward this email to them.

The good one:

Hey Kenny,

I work in Team Development (not a crappy tech recruiter spamming people) over at [company] and have hired over 50% of the team over the last three and a half years. In fact, I brought [person I know] on board straight from [place I used to work] a couple months ago. Your experience at Huge and LTech caught my eye because our dev team is growing and we’re looking to add a Software Engineer to the team.

[... The Rest ...]

Sh-bang! That second one is awesome. I responded (saying I was happily employed), but I appreciated the reach-out.

The first one is horrendous. In fact, I was going to click “Report Spam” in GMail, but I decided I would write up a quick post about it instead.

Is that how some firms actually try to recruit people? I can only imagine that the most desperate of job-seekers would actually follow-up on that. And the event that they are truly desperate, I’d say that the probability of the job-seekers being qualified for the job is a tad (just a tad) low [citation needed].

The worst part is that the email was framed as if it was from a real person.

Maybe they aren’t even looking for good developers.. who knows. But this is my point: If you want to increase the probability of someone responding, make it personal.

Posted in Jobs, Life, Offtopic | Tagged , | 1 Comment

CodeIgniter Reactor? What’s Going On?

A couple of weeks ago, Derek Jones of EllisLabs announced that the CodeIgniter Core would officially be branched so a community-driven version of the framework could be created. This new branch will be called CodeIgniter Reactor.

The plan, which was clarified today, is focused on allowing a select group of CI engineers to actively commit new features to the codebase, while taking feature requests via a uservoice forum. Over time, any proven, time-tested features in Reactor will be merged into the Core.

This announcement comes after a two year period of relatively few changes to CodeIgniter — something the community has had mixed feelings about. For some, it meant CodeIgniter would remain a remarkably stable platform to build on in contrast to frameworks like Cake or Kohana. For others, it meant CodeIgniter was probably dead.

So is that why frameworks like Kohana, once a fork of CodeIgniter, exist?

That, and also: A frustrating reality for many in the CodeIgniter community is that although it is the fastest, lightest MVC framework for PHP, it still lacks some important features. Many once-smitten CodeIgniter evangelists grew out of the framework and began looking for something that was more full featured. That is, they wanted an ORM, more libraries, more robust implementations of unit testing and caching, and a style of usage that actually conforms to the definition of MVC.

Why does CodeIgniter still have such a loyal following if more full-featured frameworks are around?

As mentioned, CodeIgniter is considered one of the fastest script-based frameworks available. It takes a “load only what you need” approach — something other platforms definitely don’t do. Rasmus Ledorf, the original author of PHP and skeptic of PHP frameworks in general, has even singled out the framework as something he might actually use.

As a side note, while at Yahoo! I’ve had the chance to read into exactly why Rasmus doesn’t like MVC via the internal wiki pages that he wrote himself — and guess what, he’s right. But that’s a topic for another post.

The other big (if not HUGE) reason that CodeIgniter has remained popular is the documentation. You cannot find a framework with more clear or concise documentation. Of course, it’s easy to keep the docs current when the framework hasn’t changed for two years!

So what the hell is going to happen with CodeIgniter Reactor?

I’m one of the engineers on the project, and I’ll be clear that CodeIgniter Reactor will pick up where CodeIgniter left off. Although the official roadmap hasn’t been laid out just yet, you’ll find Reactor will still have a high level of dependability and outstanding documentation. If Reactor’s docs fall into dismay, hold me personally responsible. I won’t let it happen.

There is a feature request forum for Reactor set up at UserVoice — a place where CI users who want to suggest additions can go.

Of course, that doesn’t mean every feature suggestion, whether it’s the popular or not should actually be implemented. The Reactor team will make intelligent decisions about what and what not to change, remaining in line with the original principals of CodeIgniter: Light footprint, low barrier to entry.

If I had to underscore my own objectives in implementing new features, they are speed, efficiency, and power. That is:

  • Does it belong in the framework?
  • Can this feature be built efficiently?
  • At the highest level of efficiency, will it be fast?
  • Is it comparably robust, and powerful in the face of similar features in other frameworks?

A word to the skeptics:

A tweet I saw immediately following the Reactor Announcement was “Death by bureaucracy is the fate for CodeIgniter shame … Good riddance, it never matured”. This really embodies the sentiment most users have about other frameworks. It’s arguably the fate that Kohana and Cake have seen.

What I’m saying is: stuff away the cynicism until the first quarter of 2011. You’re going to see a ton a positive changes in the framework, and CodeIgniter users will have plenty to brag about without sacrificing usability and documentation.

There are 6 engineers on the dev team — one who I know very well, and a few others who I’ve met just recently. In all honestly, I’ve been very impressed by everyone, and I couldn’t imagine anything but a bright future for the framework. The other devs are:

Six developers can approach the “too many cooks” scenario, but I think you’d also have to recognize that CodeIgniter is supported by volunteers, and a project needs 5 or 6 people in order maintain consistently high activity when they’re generally working on it part-time.

Okay, so now what:

Over the next few weeks, the Reactor team will be getting organized and planning out the future of CodeIgniter. Check back here or at my Twitter feed, because I’ll definitely post a podcast outlining exactly what the Reactor team plans to do. Also, I tend to lurk around the IRC #codeigniter channel on freenode as _kennyk_ .

If you have any questions, comments, or general skepticism, comment below. I’m all-ears.

Posted in CodeIgniter, PHP Development, Tools | 8 Comments

How to Find Good Developers

A comment on one of my favorite CodeFury posts, “How to Get a Job as a Programmer“, asks an interesting question. It was posted by Kyle Carter, the head of HR at Better Advertising. He posed the question, “how or where do I find good developers?”

At the time that I’m writing this, the NYC tech market is picking up fast. More startups are getting funding, big corps are relaxing the budgets, and good developers are jumping ship left and right in search of cooler projects, awesome teams, higher positions, and big checks.

So, to put that question in context: How exactly do recruiters and HR departments find and compete for the best talent right now? John Crepezzi (my startup partner) and I put together a podcast going over a bunch of different things, like identifying good developers, finding them, keeping them and why you want them in the first place. Listen to it here:

http://podcasts.oconf.org/episode1.mp3

If you would rather listen to it streaming online via the HTML5 player @ Tumblr, check out it out here.

The basic gist is this: Good developers are people who like to build/improve and learn. They are very active with both consulting and open-source projects, often outside of a regular full-time job.

They like to work with other good developers, which is why great engineering teams attract more great engineers.

You can find them on GitHub, SourceForge, and Twitter, by reaching out to them (once you’ve identified them as ‘good’). Include a personal note (maybe mentioning some of their projects), which is a big deal — it will likely get you a response at the very minimum. Once you know a core of good developers, it’s not difficult to find more by asking them.

The podcast goes into much more depth. If you’re a recruiter or HR guy, take this podcast not so much as if it’s from an authority (despite the tone), but from developers who love what they do.

If you have any comments, drop’em.

Posted in Jobs, Life, Offtopic | 1 Comment

Social Networking, Mang. It’s Like the Internet All Over Again.

Brief but intense “holy shit” moments have been hitting me quite a bit in the last couple weeks. For the last 5 years, my social networking experience has largely consisted of Facebook, and I took it for granted as an application that was just really good at what it did.

Maybe that’s even what Zuck thought. (Hey Zuckerberg, comment on my blog whydontcha. I’m having convulsions here.)

I have often wished I was twenty-something in 1995, prime for the internet boom. But in 1995, would I have recognized what was taking place? Would I have realized the extensive impact the internet would have on my life and on human history? I don’t know.

But I’m twenty something now, and I think it’s happening again. Something incredibly profound is happening, and it will affect us forever. It won’t just affect your life online. People will inevitably be 100% connected to this vast social grid, because they want to be.

I am guilty of drinking way too much soda + coffee and getting delusional later in the day, but I don’t think I’m blowing this out of proportion. I’m almost dizzy from thinking about it.

Some questions that are cropping up in my mind include:

  1. How will Facebook and other social networks become even more real-time?
  2. How will desktop-based social browsers like RockMelt fair? Don’t RockMelt’s social extensions essentially do what Facebook’s more portable Apps can already do if they wanted to? If desktop social browsers prevail, why did they?
  3. How many investors invest in social apps because they think anything social will make money, and not because they understand the insanity of it all?
  4. What is sum of it all? Where is all this stuff leading us? Social networking is surely not the terminus. There’s a crazy future ahead of us.

That’s all for now. Comment if you think I’m all wrong, or you have some answers for those questions. @seejohnrun? @johnbellone?

Posted in Uncategorized | 5 Comments

A Better WordPress Search with WPSearch 2.0.2.0

I’m definitely not the type to evangelize something I don’t think is useful. Ask friends of mine, and they’ll likely tell you how I went through phases where I endlessly promoted things like Notepad++ for Windows, Netbeans IDE (PHP), Sequel Pro, Gnome-Do, Thinkpads, Macbooks, Toy Story 3, iPod Touches, and Visual Studio ’08. I just can’t help it. When I get excited about something, I have a hard time stfu-ing.

But holy crap. Let me tell you — if you think the WordPress default search sucks — as I did 2 years ago, try WPSearch. It’s (IMO) the second-most-useful plug-in that has ever existed for WordPress. It also has the slickest admin UI I’ve ever used in WordPress (a big thanks to JQuery and it’s plug-ins, of course).

I wrote WPSearch, and I 100% recommend it to anyone running something that isn’t a traditional WordPress blog. Run a recipe catalog? Use It! Review engine? Use it! Shopping engine? What the hell are you doing without my plug-in on your site? Your customers can’t find shit!

Fun scenario: Let’s imagine you sold laser printers on your site along with other computer peripherals, and every product page on your site had “[brand] [model] Printers” in it’s title, like “Dell 1100 Laser Printer”. If someone searched for “printers” with default WordPress search, they wouldn’t get those products back.

Does that scare you? It should. Get WPSearch now. And if you don’t like it, tweet @_kennyk_ and be brutally honest. I can take it.

Side note #1: When I wrote WPSearch, I was also trying to cash-in big time at a programming contest where the grand prize was a trip to RailsConf and the runner-up would get a set of steak knives (presumably to stab whoever won the grand prize).

Side note #2: Toy Story 3 is an intellectually provocative and introspective masterpiece!

Side note #3: Askimet is #1, but is tragically taken for granted

Posted in Gadgets, PHP Development, Search Engine Development, Tools, Wordpress Development | 2 Comments