Professional PHP Blog

PHP Programming, Web Development, PHP Advocacy and PHP Best Practices.

Mighty Mouse Kryptonite and Exceeding Expectations

September 18th, 2007

I’m a fan of Apple’s Bluetooth mighty mouse. I cart my laptop all over and I like the ability to have a full sized mouse with a scroll wheel and right click without the hassle of cable management on some narrow coffee shop table.

Imagine my horror when just such a table caused the chain of events that killed my Mighty Mouse. Oh, it wasn’t a table at my familiar neighborhood coffee shop. It was the very much narrower and much less familiar table at Taco Bell. Well, that and the tile floor in the dining area. Well, that and stiff backed mouse pad that turned out to be flexible. A narrow table, a slightly overhanging and flexible mouse-pad, and a tile floor together form Mighty Mouse kryptonite.

And yes, it is a sign of our times when Taco Bell has free WiFi.

After my mouse took the plunge off the table and hit the floor, it separated into three separate pieces where there should be only one. Perhaps, I thought, all was not lost. If only I could rejoin the pieces, I would have the power of right click once more. I needed to gather a couple of items to help me on my quest. After wandering a maze of twisty passages, otherwise known as the Wal-Mart across the street, I managed to collect an x-acto knife and super glue. My surgery was a success and the Mighty Mouse was once again functional.

Alas, the recovery was not to last. After traveling to php|works in Atlanta, I found the mighty mouse dead in my bag. The strain of travel proved too much for its little plastic innards.

As soon as I was able, I went to the Apple Store for a replacement. But, I’m a short man and the wireless mice were on the top shelf, so I was forced to seek out a store employee for assistance.

“How can I help you?” he asked.

I put the broken corpse of the Mighty Mouse on the table, “I need a replacement for this mouse.”

“Oh,” he replied. And then to my surprise asked, “Did you buy it with your computer?”

“Yes, I did.” I told him.

“When did you buy your computer?” he wanted to know.

“January,” I replied, hardly daring to believe where this conversation could lead.

“It should be covered under warranty,” he informed me, “Let me check with my manager.”

Sure enough, after producing the serial number for my laptop, I was sent home with a brand new Mighty Mouse and a stunned smile on my face.

Now, I’m sure that there is a specific clause in the warranty covering Taco Bell floors. And, mostly likely, if any Apple lawyers ever read this post, they won’t even make it this far before writing up some kind of memo. I doubt my case was typical of company policy. The MBA-wielding consultant urging companies to “exceed expectations” is almost a cliche, but those organizations with no soul never seem to internalize the advice. I have to say that at least one heroic employee in one company in one place has exceeded my expectations and created one very grateful and impressed customer.

3 Comments »

reCAPTCHA - Combining Distributed Problem Solving with a Web Service

May 30th, 2007

I ran into an interesting project this morning called reCAPTCHA. In the spirit of distributed computing solutions, such as folding@home, it tackles a difficult problem by splitting it up and farming the pieces out. What makes this interesting is that instead of having computers solve the problem, people do.

ReCAPTCHA actually tries to solve two problems. The reCAPTCHA project pipelines the unrecognizable words from a book scanning OCR effort into a freely available web service for verifying your humanity, a CAPTCHA. Instead of each CAPTCHA puzzle being a necessary but regrettable waste of human effort, reCAPTCHA harnesses this otherwise lost resource. How brilliant is that!

The web service looks very interesting to me. I’m due to revisit a submission form soon that contains a CAPTCHA that I wrote several years ago that I know has been broken. The system contains a very extensive blacklisting system, so the weakness of the CAPTCHA has never been enough of a problem to warrant its replacement, but I’m curious to see what difference this service will make.

4 Comments »

php|tek Slides

May 19th, 2007

Well, php|tek is over. It was a great conference and I’m really glad I went. This was my first PHP conference.

One of my main goals was to meet some of the folks at php|architect. I’ve been writing the Test Pattern column for them for over a year now. I was finally able to put faces to the names that I keep seeing in my email box. Actually, one of the cooler things about the conference was meeting people who I’m familiar with from online, either from forums, IRC, mailing lists or blogs.

I’d like to thank everyone who attended my sessions. Here are the slides from each session:

  • Writing Maintainable PHP Code (PDF) - based on my March 2006 column.
  • Dependency Injection (PDF) - based on my June 2006 column.
  • Exceptional PHP (PDF) - based on my December 2006 column.

3 Comments »

Let Your Properties be Properties

May 8th, 2007

There is a coding pattern that I see (and have used) in PHP code that defines generic methods on a class for setting and getting properties.
 
function set($name, $value);
function get($name);
 Google code search for examples
Some times there are some ancillary methods to deal with unsetting, checking for existence, setting via an array, or dealing with references in [...]

13 Comments | Read the full post »

Where do you get your Wi-Fi?

May 6th, 2007

Sometimes you just have to get out of the house or out of the office. And some of those times, you have to use the internet as well.
I’ve collected a (short) list of places around town that have Wi-Fi. I usually use the Wi-Fi at a small local coffee shop. They are [...]

4 Comments | Read the full post »

On the Perils of Inline API Documentation

April 13th, 2007

Travis Swicegood has a post questioning the value of the docblock. I have a deep sympathy with this sentiment.
Even on projects with extensive generated documentation, I find that kind of documentation to be of extremely low value. The problem with inline API documentation is that there is no sense of priority. Developers [...]

12 Comments | Read the full post »

Software Development Team Diversity

March 26th, 2007

Matt Mullenweg has a post about Hiring Diversity. A successful software project must fulfill many competing goals and factors and meet a wide variety of challenges. Diversity is the combined arms of software development. In my personal experience, the diverse team performs better. A diverse team allows the [...]

6 Comments | Read the full post »

The Problem with Markup Languages

March 14th, 2007

Chris Shiflett has a post today, Allowing HTML and Preventing XSS. The problem is how to allow users to format their contributed content without introducing security vulnerabilities. The answer is usually some sort of markup language or filtering and sanitization of HTML.
BBCODE was designed for this purpose. There is no actual standard, [...]

9 Comments | Read the full post »

Firefox Extensions for Web Developers

March 8th, 2007

I prefer Safari for my casual web browsing on the Mac, but for web development, nothing beats Firefox. (Firefox beats IE hands down on Windows.) Firefox’s openness and the Firefox plugin architecture means that there is little that you cannot find out about a web page with a Firefox add-on. I’ve tried [...]

15 Comments | Read the full post »

Yahoo YUI wins JavaScript Library Wars

February 23rd, 2007

There is huge web development news from Yahoo today. Yahoo is offering free hosting for YUI components, both JavaScript and CSS. I’ve been favoring the YUI, but this is a great boon. One big drawback to AJAX is Page loading performance. I’m betting that the Yahoo infrastructure can serve these files [...]

8 Comments | Read the full post »

« Previous Entries
Next Entries »
  • Search

  • Subscribe

    Subscribe All Posts
    Subscribe All Comments
    Subscribe All Bookmarks
    Subscribe with Bloglines Subscribe with My Yahoo Add to netvibes Subscribe in NewsGator Online Add to Google
  • Share This

  • Categories

    • Agile Methods (14)
    • Mac (14)
    • Misc (16)
    • Open Source (14)
    • PHP (95)
    • Software Design (28)
    • Usability (14)
    • WACT (7)
    • Web Design (20)
  • Recent Comments

    • Working with PHP 5 in Mac OS X 10.5 (Leopard)  94
      noujoum, Michiel Van Kets, isorabins [...]
    • Sarah Snow Stever  24
      Dubai Web Design, Development, Snowcore, ennah [...]
    • Benchmarking PHP's Magic Methods  8
      stas, minikperi, Shelon Padmore [...]
    • Keywords and Language Simplicity  7
      olmse, Handy, minikperi [...]
    • Even the Big Guys Get Validation Wrong  4
      James Benson, Michael, Enric Naval [...]
    • Improved Error Messages in PHP 5  12
      James Benson, Iron, baggreeddog [...]
    • How to Transfer Mac OS X Application Data between Computers  36
      Secret Santa, micala, Khaled bin Alwaleed [...]
    • Programming Language Trends via Google  15
      MattW, Jeff Davis, retry [...]
    • PHP Development From Java Architects Eye  10
      Grrkkvho, Bobrila, FelhoBacsi [...]
    • The value of MVC  9
      Euvmetkk, Bobrila, Vulchak [...]
    • nofollow and comment spam  5
      Scopmazo, Qmumqckx, sss [...]
  • Pages

    • Tags
  • My Other Stuff

    • Lively Debate
      My blog on Politics and non-technical topics
    • Web Application Component Toolkit
      PHP MVC Framework
  • Other PHP Blogs

    • Dynamically Typed
    • Jason E. Sweat
    • John Lim
    • Marco Tabini
    • Marcus Baker
    • Norbert Mocsnik
    • PHP Patterns
  • Archives

    • 2008: May
    • 2007: Jan Feb Mar Apr May Sep Oct Nov
    • 2006: Jan Feb Mar Apr May Jun Jul Oct Nov Dec
    • 2005: Jan Feb Mar Apr May Sep Oct Nov Dec
    • 2004: Apr May Jun Jul Aug Sep Oct Nov
  • Menu

    • Register
    • Log in