• Posted on June 10, 2011

Add a ‘Recent Applications’ stack to your Apple Dock

I’ve never been one to leave things well enough alone. If it can be modified, edited, and personalized…I’m going to do just that. One helpful trick I’ve picked up since using a Mac is the ability to add customized stacks to the dock. A lesser known feature, however, is the ability to add a Recent Applications tile stack.

Below are two screenshots showing my current desktop. The first shot shows my mouse hovering over the Recent Applications stack and the second shows the stack expanded.

Recent Applications Stack

Recent Applications Stack2

Unfortunately, there is not User Interface (UI) for getting this helpful menu. So we’re relegated to adding the menu via the command line. Enter Terminal.

For the uninitiated, the Mac OS is built on a UNIX kernel–you can read more about that at Wikipedia. There are many benefits to having a *nix kernel beneath the OS (in my humble opinion)–one of which is the ability to easily run command line actions. Windows has a command prompt (Start / Run / ‘cmd’) but I find it very jailed and not as powerful as a *nix based command line. Anywho, I digress. In OS X, one access the command line via the Terminal application. (On a sidenote, Terminal runs a bash shell.

You can find Terminal.app in your /Applications/Utilities/ folder. Simply double click on it to open. Once there, enter the following command to tell the OS to add the Recent Applications stack to your dock:

defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }'

You may want to copy and paste the command from here so you don’t make a mistake. Once you paste the command, simply press enter. After doing this, you have to ‘reboot’ the dock for the change to take place. To restart the dock, you could reboot your machine, but since you already have Terminal open, you can run one more command to restart the dock without rebooting your machine. Simply type the following and press Enter:

killAll Dock

After you enter that command, the Dock will reboot and you’ll see your new stack…except it will be empty. The OS hasn’t been tracking ‘recent applications’ for the dock because until now, that stack didn’t exist. To populate the list, simply open a few apps. By default, the stack will show the 10 most recent apps.

Finally, once the stack is in place, you can right click on it and change the behavior from recent applications to other recent things such as documents, servers, or favorite items and volumes.

Oh, and for those of you who don’t know what to do with terminal: Type ‘exit’ to make sure you don’t have anything going on and them simply quit the app (Terminal / Quit Terminal) from the menubar or simply Apple-Q (⌘Q).

  • Posted on September 11, 2010

So you rooted your Android…Now what?

Let me begin by saying that I’m pretty new to Android rooting as well. I typically work in LAMP stacks and mobile development and tweaking is something I’ve only been doing for a few months now. Having said that, if you’re comfortable in *Nix environments, you won’t have any trouble.

Image courtesy of xkcd

Disclaimer

“Rooting your phone will void your warranty, damage your reputation as an upstanding member of society and maybe even insult your family. In no way, shape or form do we condone any action that goes against the principles of any agreement that you might have signed to not modify your phone’s software. Read further at your own risk.” –TNW

Anywho, this isn’t an article about why you should or shouldn’t root. If you’re here, you’ve probably already rooted or, at least, already decided it’s for you. This article assumes you’ve just rooted and you’re not sure what to do next.

Am I rooted?

The first question I had after I rooted my Droid Incredible (which was stock 2.2 OTA) was, “Uhm, did it work?” After rooting, the phone goes through a process of reboots which takes 5-7 minutes in all. (I was surprised, I assumed the rooting process would take longer.)

The quickest way to test for ‘root’ is to simply open up your Apps folder and see if a new app called ‘Superuser Permissions’ shows up. It has a picture of a ninja. If you see this, you’re rooted! Congratulations!

So, what’s next?

So you know that root has its benefits, but what should you do first? My opinion will vary from others, but then again you’re reading my blog, so you asked for it. :)

I would most certainly download Clockwork’s ROM Manager and perform your first nandroid backup. (Huh?) A nandroid backup is an exact file system copy of your phone (think .iso or CCC). It allows you to restore your phone (apps, settings, preferences, etc.) to that state in the future should you need to. It’s a good idea to have this ‘stock’ backup in case you FUBAR your phone with your newly granted Root rights and need to revert. There are plenty of instructions out there on how to Backup/Restore your phone using ROM manager.

Another Backup?

I also suggest people immediately download Titanium Backup (donate version) and backup their system & preferences with it as well. This may be redundant, but it also allows you to restore individual apps & settings in the future, should you need to.

Finally, if you haven’t already, download Appbrain’s app to your phone, create a free account, and sync your apps. If for some reason you lost your backups and has to reflash a stock ROM, you would lose all your settings but at least you could re-install all of your apps easily.

Next steps

So, now you’re all backed up. You probably want to start removing Bloatware and other preinstalled apps. In my opinion, Titanium Backup is the best option here. Once you donate, you get a Key to unlock features such as ‘freezing’ apps. While some apps can easily be deleted (Nascar on Sprint, Skype & VZNavigator on Verizon), others don’t like to be removed. Some applications like Friendstream.apk are used by other apps like Twitter and Facebook. For this reason, using TB to ‘Freeze’ these apps (basically renaming them to prevent them from loading) is a better option. This way they’re still on the phone if you decide you want to reenable them later.
(I actually mistakenly deleted FriendStream after my first root thinking that it was Footprints.apk. I had to reflash from my nandroid and then go through it all again; it cost me 3 hours or work but I was sure glad I had the nandroid!)

What about Wifi tethering?

Yes, after backups and removing bloatware, free wifi tethering is one of the greatest things about having a rooted device. Carriers charge between $20 and $30/month for 3G hotspot capabilities which seems erroneous since most smartphone plans make concessions for unlimited data.

There are a few ways to use free 3G hotspot (wifi tethering) and a Google search will bring you more info than what I can share. I will insert a few links to make things easier though:
Wireless Tether for Root (pre8) – This seems to be the crowd favorite right now for app-based tethering.
Verizon EPST hack – If you’re on Big Red, you may also want to read about this EPST hack. It’s fast, simple, and doesn’t require root or a 3rd party app. (Of course, I don’t condone breaching your contract, so only read about this. Never do it. Right Big Red?)

Next steps

So, you’re rooted, backed up, surfin’ the web for free…anything else? Of course! You’re just getting started. Lots of cool apps out there require root to run. A few of my faves include:

  • Screen Shot It: This app allows you to take those cool screen shots of your screen that you see when checking out forums. This particular one is paid, but allows for cropping and ‘shaking’ to capture. Great app.
  • Root Explorer: Also a paid app, this file explorer is granted SU access and can remount the drive from Read-Only to Read-Write quickly and easily. Very useful.

Closing Remarks

I hope this “What to do now that you’re rooted” guide helps. It certainly isn’t intended to be a How To guide of any sort…more like a roadmap for where to go next. Keep in mind that if you have a stable nandroid backup, you can experiment a good bit. Be careful what you uninstall and create new nandroid backups when you reach a point where you like your current build (i.e. after you remove bloatware and install your rooted apps.) It’s also a good idea to copy your nandroids off your SD card to your computer from time-to-time for safer storage.

Further reading

I didn’t get into the benefit of custom ROMs etc. in this short article; there are PLENTY of other write-ups out there on that topic. Here are a few other reads for you if you wanna dive in further.

Need more help?

If you still need help, many great supporters can always be found in the #unrevokedtest channel on Freenode IRC. Join from your favorite IRC client or via the web. I can typically be found under the handle “idowens”.

  • Posted on August 16, 2010

WHM & WordPress Tips & Tricks

In my day job, I work a lot with WordPress and lately we’ve been utilizing a VPS or Dedicated server for more labor-intensive needs when shared hosting won’t cut it. Further, this site you’re reading now, along with about 8 others I own, are currently hosted on a VPS I’ve had for about 6 months now.

During this time, I’ve learned a lot about server management from the Linux command line, WHM (Web Host Manager, for the uninitiated), and cPanel. Below are just a few of the more helpful things I’ve learned along the way.

WHM vs. cPanel

If cPanel is the user interface for managing you hosting account, think of WHM as the user interface for managing all of your cPanels. Most people won’t ever see/use WHM because with most shared hosting accounts, you don’t get WHM access. However, as soon as you purchase a VPS or Dedicated server, you’ll be provided WHM as a way to manager all of your sites on the server. Resellers are very used to WHM as they use it to manage their clients.

WHM doesn’t allow you to do anything you can’t do from the command line & an FTP client but it sure does make it easier and faster. The WHM interface is very cPanel-esque and once you learn where the main things are, it’s pretty simple.

~tilde access for temporary site access

One of the great things about setting up a shared hosting account and registering a new domain name is the fact that most hosts give you immediate access via the IP address followed by “/~account_name”. When I first began using my VPS, I noticed that this helpful option is turned off by default.

Turning it on is a really simple procedure. Basically the Apache module mod_userdir needs to be enabled. To do so, log into WHM, open the ‘Security Center’ tab in the sidebar, and click the first option, ‘Apache mod_userdir Tweak.’ Once there, uncheck the ‘Enable mod_userdir Protection’ box and viola! your /~username conventions will now work.

A note from the cPanel user manual: “Disabling this is desirable, as the bandwidth used when the site is accessed using this method is attributed to the web host’s main domain, skipping bandwidth monitoring systems.”

Whitelist IP addresses

When setting up a new site, or constructing one for a client, it’s not unusual to hit (that is, access) a site several hundred times an hour (esp. if you’re awful at CSS like me and need to refresh a lot.) Default firewalls are typically set to quickly lock users out for what looks like ‘spam’ OR if you happen to forget a password and attempt to login with the wrong credentials more than a few times.

To prevent this, it’s a good idea to quickly whitelist your IP address (at home and work) as well as any potentials clients who will be accessing the site a lot. To do do, go to the very bottom of the WHM sidebar and open the Plugins option, then ‘ConfigServer Security & Firewall’. Once there, look for the Green box that reads ‘Quick Allow’. Simple enter your IP addresses here, one by one, and click Quick Allow. You can also use wildcards here.

Set recursive php.ini location

Over and over, WordPress plugins require more that 8, 16, and even 32MB of PHP memory to run. Many hosts limit the ceiling of PHP memory allowed to 32 or 64MB (Midphase upped one of my accounts to 96MB upon request, but it took getting in touch with a System Admin. for the concession and I got a strong warning that if more than 7 processes used 96MB simultaneously, my account would be subject to suspension.)

Anywho, without getting into the details of the PHP.ini file and why it needs to be modified (that’s another post), in order to be truly useful, the newly created .ini file needs to be placed in EVERY directory on the server. That can be really tedious for many reasons. (1) It’s a pain to place it in every directory and (2) to make a change, one has to replaced it every directory. Fortunately there’s a solution that makes use of your .htaccess file.

Most WordPress users will only be familiar with their .htaccess file as it relates to their permalink structure as this is the file WordPress writes to for mod_rewrite rules. The .htaccess, among other things, is useful to creating permanant 301 redirects, custom rewrite rules, and setting the location of a ‘global’ .ini file.

I use the term ‘Global’ loosely as the VPS or Dedicated server’s PHP.ini file has the ‘ultimate’ ceiling defined but a local .ini file can up your limits to the max of what is allowed. So ‘global’ is the local sense. Confusing, I know.

Back to the helpful part: Rather than placing this file in every directory, simply place your PHP.ini file in a central locale and then add the following line to your .htaccess file:

SetEnv PHPRC /location/todir/containing/phpinifile

Notice that the command does NOT link to the actual .ini file but rather the directory in which the .ini file resides. Setting this value makes it easy to change, keeps you from having to place the .ini file in every directory, and finally, some areas in WordPress work much better with this line defined (For example, the Media Upload tool often doesn’t recognize an upload limit that has been raised from the 8MB initial limit to a newly defined 32MB.)

Closing remarks

These are just a few tips I’ve picked up in the last few months. When I have time, I’ll try to write a follow up article dedicated solely to the best practices for .htaccess files & PHP.ini files.

  • Posted on July 25, 2010

Clingo Phone Mounts

When I swapped from my Blackberry to an Android phone (Droid Incredible) I knew that I would be using the the Inc as my new GPS Navigation unit. See, about 3 weeks earlier I had flown to Raleigh, NC and I took my Telenav GPS unit so that I wouldn’t have to rent one from Hertz once I got there. Don’t get ahead of me. On the return trip, there was a mix up on my ticket and I almost didn’t make my return flight. Luckily I made it on board unscathed, but my baggage wasn’t so lucky…it was apparently dropped a few times making it from the ramp to the plane and when I got back home to Birmingham, I noticed that the touch screen was completely cracked, and, being out of warranty, I was completely out of luck.

So, back to the story. Knowing that I was planning on using my new phone as a GPS unit, I began looking for the right vehicle mount. Verizon provides one made for the Inc but it’s giant and definitely an eye sore. There are also other aftermarket car mounts with a various array of mounting options. Some mount to the windshield, some to the dash, and others on the AC vent. Of course, in the hot Alabama summers we have here, anything that would partially block the AC is a laughable proposition.

Most of the mounts were not ‘sexy’ to use a good geek term. They all looked big and clunky…not at all a good match for such a sleek phone. (This is one area what Apple outshines…mounts, cases, etc. for the iPhones are much hotter & more accessible..having said that, manufacturers have an easier time since with Apple products, there is typically just one form factor where with Androids, Blackberrys, etc. have many different sizes, shapes, etc.

After a bit more searching online, I ran across a product called Clingo, made but the well-know Allsop company. Clingo use standard bases for the desk, car, and neck (yes, neck) and then uses snap-on, lime-green sticky pads which the phone then adheres to. Sounds crazy, right?

I ordered a desk mount for the office as well as a car mount which easily swivels 360° so that I can easily rotate it for Navigation or for a larger keyboard when texting (at red lights, of course!) When the products arrives, the desk mount sticky pad was already coming apart…the pad was poorly glued to the base and since one has to literally ‘peel’ the phone off the pad, I knew this wouldn’t last very long. A quick call to Customer Service and they drop-shipped me a new pad for the desk mount and I’m pleased to say it was much much better quality.

All in all, I’m really pleased with the product. I should note that some phones don’t work well with the sticky pad method. For example, if you phone doesn’t have a ‘flat’ back…that is, if it is curved or has ridges like the Droid Incredible, it’s not going to stick very well. (I have a hard plastic case on my Inc which apparently is the absolute MOST adhesive thing for these sticky pads to stick to because it can tedious to remove at times.) Also, the latest iPhone 4 doesn’t stick really well to it. It may work fine for your desk but in the car, there’s too much vibration for it to stay on.

These mounts run between $30-40, depending on your setup. They’re available directly from the company and should soon be available in Best Buy, Radio Shack, and are now available online at Amazon. Also, if you’re using a clingo car mount with the Inc, be sure to pickup a right-angle micro-USB cable to keep the cord out of your way as you rotate it!

All of these items can be found in my Gear Guide Amazon Store where you’ll find products for your Droid Incredible. Check it out

Do you have any experience with the Clingo mount or other solutions? Be sure to share them with me!

  • Posted on July 01, 2010

Android / Droid Removable Drive Icons

I bought an HTC Droid Incredible last week and have had a lot of fun getting acclimated to it from the Blackberry Pearl that I was using before. The addition of Wifi, the large screen, and especially the apps, make this a HUGE upgrade and makes my former “smart” phone look pretty dumb.

One of the first tasks I was interested in was moving my media (images, ringtones [see previous post], etc.) from my Blackberry’s older 2GB SD card to my new 16GB SD card. So, I read up on how to mount the phone & SD card to my Mac and was off to the races. Something that bothered me from the get go was the fact that my Mac simply assigned both drives, which were both named ‘no name’, the default ‘Removable Drive’ icon. Not only was this ugly, but it also didn’t help me differentiate the two.

So, having the Type-A personality I do, I set out to set the world straight. I searched online for a few different drive icons that I liked, grabbed the Android Robot icon, and fired up Photoshop to make some edits. The finished product was 3 ‘droid branded drive icons which I could then assign to the internal phone memory and the removable SD card, with one to spare.

Here’s a preview of the set:

Android Drive Icons

If you’re interested, you can download the set below. The .ZIP includes:

  • The original droid robot icon @ 256×256
  • All 3 unbranded drives @ 256×256 in .PNG & .ICO formats
  • All 3 branded drives @ 256×256 in .PNG & .ICO formats
  • A ReadMe / License RTF

Download the free Android Drive Icons ZIP file.

  • Posted on June 27, 2010

Free Business Ringtones | Professional SMS Tones

On the previous iteration of this blog, I had a very popular post by this same title…aparrently I wasn’t the only one looking for non-poppy ringtones.

Somehow during my move, I didn’t back up my SQL DB, so I lost the actual post. But, in anticipation for my HTC Droid Incredible arrival tomorrow, I was pulling all the MP3s off of my Blackberry so I can transfer them to my Droid. Here are the few tones I had listed in the previous post…some are ringtones, some are for text messages or MMS:

8SMS – SMS
Business – SMS
Doraemon – SMS
Msg_Notice – SMS
Naruto – SMS
Piano – SMS
TXT – SMS
Silver – Ringtone

SInce I’ve had my Blackberry for about 2 years now, I’ve gotta kinda fond of a few ringtones & alarms. Well, I’m not so sure ‘fond’ is the correct word…maybe ‘accustomed’ is a better term. In other words, like Pavlov’s Dog, I’ve learned what types of emails or messages are coming in by which noise the phone makes. Therefore, I searched out copies of the default Blackberry ringtones, SMS and MMS tones, and alarms. Rather that link all 56 of them individually like the ones above, I’m including them in a 193kb .ZIP file.

Download the Blackberry Preloaded Tones Zip

Hopefully RIM won’t come sniffing around and make me remove the zip. Enjoy it while it lasts.

  • Posted on June 25, 2010

Easy WordPress Client Management via Command Line

I’ve had a WiredTree VPS for about 3 months now. In addition to hosting about 5 of my personal sites on it, I also host a few family members blogs and some pro-bono stuff I’ve done for past clients.

Anytime I get ready to create a new account on the VPS (which, in turn, creates its own cPanel account just as if one had purchased a shared hosting account) I always dread the next step of downloading the latest version of WordPress, grabbing the latest copies of what I consider ‘base-install plugins’ (that is, plugins that I always include in a WordPress installation. These include Absolute Privacy, Google Analyticator, All-in-One SEO Pack, Next-Gen Photo Gallery, WP-Optimize, WP Super Cache, Google XML Sitemap Generator, Contact Form 7, and Akismet.) [Note: I don’t always activate all of these in each build, but I do like to have them handy if I need them. In today’s ‘Unlimited Storage Space’ environment, these small plugins don’t get in the way.]

After going through this download, unzip, upload, and activate process about a hundred times, I figured there had to be an easier way. Yes, I know you can auto-install plugins (and even WordPress, via Fantastico or Softaculous) but I don’t pay for either of those two auto-installers on my VPS because, well, I don’t need them. Plus, I run my PHP as DSO on my VPS rather than suPHP, so there can easily be permissions issues since I run all processes as the ‘nobody’ user.

So, I began thinking…couldn’t I download the latest WordPress build, download the lastest plugin versions I want, put the plugins, extracted, in the wp-content/plugins folder and even toss in a few ‘Coming Soon’ or ‘Maintenance Mode’ themes in the wp-content/themes/ folder. Then, when I create a new account, I could just explode the zip file into the newly created public_html directory and the only manual process I would have to go through would be setting up the MySQL database and editing the wp-config. file–a process which I can now due in under 5min.

Well, that’s exactly what I did. I created the folder I wanted and zipped it up. Then I dropped it on my VPS in a high level folder and tried exploding it into a directory. What I noticed was that, since I had zipped things on my Mac and then uploaded to a Linux box, I had the nasty _MACOSX folders in each directory…making the zip file larger than it needed to be AND making things convoluted.

I did a bit of Google research and found that I just needed an archive utility that would zip ‘Windows Friendly’ files which simply excludes those Mac folders. There were several programs out there, but I settled on one called YemuZip for it’s simplicity and cost (free!). It has a simple drag-and-drop interface that worked perfectly.

I deleted the ugly directory I created the first time using the fantastic “$ rm -rf /ugly-directory” command, uploaded the newest zip and exploded it. This time, it worked like a charm. I quickly tied it to a database I had standing by and was able to log in, with themes & plugins intact, in a matter of seconds.

This process certainly beats the heck out of downloading WordPress each time and and then subsequently downloading plugins. Below, I’ll share the Linux commands for accomplishing this.

How to do it

Once you’ve created your zip (using a program like YemuZip if you’re on a Mac!), upload your wordpress.zip file to a neutral folder on your server. (By neutral, I simply mean a higher level folder that isn’t likely to be deleted…something like /home/.)

Then, you’ll want to ‘explode’ (uncompress) the zip file to a directory on your server.

You’ll need to have navigated to the directory where your recently uploaded wordpress.zip lives.For me, that means logging into my VPS via Terminal (SSH) and the using the bash command:

cd /home/

…which simply tells the server to ‘change directory’ (cd) to the /home/ folder. Then, you have two options for inflating: (1) you can pre-create the destination folder or (2) you can tell the command line to create it for you. I typically follow the latter, so my code looks like this:

unzip wordpress.zip -d /home/USER/public_html/destination

That “-d” tells Linux to create the referenced directory, “destination”, even though it doesn’t exist. If you’re inflating to a folder that already exists, you’ll simple leave off the -d.

The server-side explode takes about 2 seconds and then everything is ready for you to start configuring. In my opinion, this is the fastest way of quickly installing WordPress, fully configured, on a new server. (There are also config files you can include in your install to further personalize things, but I avoid those in most cases unless I’m setting up 5+ sites for the same client. You can Google that topic for more info.)

If you’re interested, I’ve included my latest ‘wordpress.zip’ here for you to download. All the plugins & core files are up-to-date as of the date of this post and it includes WP v. 3.0. I hope you find it useful. FYI: The unzipped folder is 18.6 MB. The zipped file is 6.0MB…another pro of uploading the zip to the server and inflating it there rather than the other way around.

Download pre-built WordPress.zip.

Do you have any tips or tricks for making things easier that I haven’t thought of? Please share you tips with us! Oh, and for what it’s worth, I also delete the “Hello Dolly” plugin…you would think Matt and the team would have gotten rid of this by now…

  • Posted on June 11, 2010

Shrimp and Bowling

On the way home from work tonight I drove passed an elderly black man, carrying two heavy bags, and walking with a slight hinderance. I thought about pulling over and offering him a ride to his destination–I wasn’t in a hurry to get anywhere–but I continued on to the on-ramp for HWY 31 S, drove back over the mountain, and started to turn toward home when I felt like I could have done something for the man.

I exited the highway a few blocks shy of my street and turned back toward downtown. I didn’t know if I would be able to find the man again, I had only seen him while stopped at a red light for a few moments…now, 10 minutes later, he could be anywhere. But, I drove back to where I saw him and made rounds up and down streets, about 4 blocks in all, until I came across him again.

I moved some personal items out of the passenger seat, pulled up beside him and rolled down my window: “Hey friend…need a ride?” He looked at me puzzled at first…I could tell he was trying to get a read on me…was I dangerous? Was I a cop? After he decided he would be better off in my car than hobbling down the street much longer, he accepted my offer.

He opened the door and placed his large bags in the floorboard. His white t-shirt and oversized blue jeans were drenched in sweat and he smelled rather…ripe. He had trouble climbing into my SUV (I soon found out he was 62 years old) and his wet jeans made the climb in cumbersome. After 3 failed attempts to climb in, he turned to me and said, “Hey man, pull me up.” So I took off my $250 sunglasses, unbuckled my seatbelt, and leaned over to grasp his sweat soaked arm & shirt to pull him up into the vehicle.

“Where ya going?” I asked. “To see my son…but I can’t get him on the phone. He was s’posed to meet me and put me up for the night…said I could sleep on the floor. Just take me a few blocks up and I’ll wait fo’ the bus to come.” “Alright,” I said. We drove a few blocks up, a very short 2 blocks to be exact, and he said I could drop him off here…I felt like I hadn’t helped him much…If I had picked him up when I first saw him, I could have saved him a mile or so…the two blocks seemed rather insignificant. I reached into my pocket and the only bill I had was a single dollar. I felt like that would be more of an insult than a benefit…”You in a hurry?” I asked…”Huh?” …”If you’re not in a hurry, let’s get you a few dollars for the night. I’ll go up a few blocks to an ATM.” “Yea yea…let’s go!” He was very excited about the idea of having some money in his pocket.

As we drove a few blocks to Wachovia, he told me his name was Jerry. He had grown up in Avondale, just outside the city. He was 62 and had two grown children. He was a war veteran, Vietnam, and had been staying a shelter for the past few nights that cost $25–a special for veterans. I told him my name was Ian. He began telling me a little bit more about his situation and then seemed very interested in my truck. “This a’ good truck…a real truck. My son had $40,000…told him to buy a good truck, a truck like this, and then he wouldn’t have to worry ’bout nothin…but he didn’t listen to me.” Most of his stories didn’t have a point to make…he was just making small talk. Glad to be riding and not walking. When we reached the ATM, I took out $100. I was careful not to let him see how much I withdrew, but I immediately handed him $20 and said “…here. You hang on to this.” He was very gracious.

I was on my way home to eat dinner when I first saw him, so food was on my mind. “Have you eaten anything…are you hungry?” I asked…”No..I mean, Yeah…I ain’t eaten nothing.” “What do you want? Anything…” I offered. “Chicken…let’s get some chicken. You know where Church’s is?” I didn’t. “No, tell me where to go.” He directed me about a mile further away from the “civilized” downtown that I typically stay in during my 9 hour days in the city for work..I normally don’t stray more than a few blocks from the heart of downtown. But, it was still daylight out, and the man was elderly. Between me and the 6″ serrated knife in my door panel, I wasn’t threatened by him.

We pulled into the drive through and I asked him what he wanted. “A two piece…with sum mashed potatoes…extra gravy….wait, no, that’s $5..uhm…” I could tell he didn’t want to spend the $21 dollars I had already given him on his dinner. “Don’t worry about the price…get whatever you want.” The most expensive thing on Church’s menu is about $8 so there wasn’t much harm in offering him the farm. “Uhm..then lemme get the shrimp. #8…with a Coke…no, wait….a Sprite…and mashed potatoes….with extra gravy.” I placed his order and we drove around to pick it up at the window. The total came to just over $8.

While we were waiting on his food I asked him where he was staying that night. “Well, I was supposed to stay wit my son but he won’t call me back.” I could tell he loved his son…he told me that his son took care of his mother, Jerry’s ex-wife, every day…checking on her and locking up her house for her at night. Jerry was thankful for this but I could tell his son wasn’t interested in helping his father too much and I saw the disappointment in Jerry’s face as he continued to tell me about his family.

I paid for his shrimp with a $20 and handed him the change back from the girl at the window…about $11. Jerry then counted the cash I had given him…he had about $32 at this point. “Well, I can stay at the shelter tonight. I can’t shower there but they’ll let me sleep for $25.” “Where do you stay when you’re not at the mission?” I asked. “Usually on the street…this one time I stayed in a motel though…it was $50.” Jerry told me. I asked him where that motel was…I didn’t think I’d have much of a chance trying to check him into the Marriott in his condition. “It’s just up the street there. The Tourway Inn…but it’s $50,” Jerry said. I told him not to worry about the room, just tell me how to get there. He directed me about half a mile back toward downtown and we pulled into the motel.

We went in and Jerry explained to the lady behind the bulletproof glass that “..my boy here is gunna put me up for the night. Big pimpin'”…that’s what he kept calling me, ‘Big Pimpin'” My truck and job, and the ability to take money out of an ATM made me a big shot in his world. The lady said the room would be $55. Jerry was immediately upset. “Las’ time it wuz only $50..why you trying to do Big Pimpin’ like that?” “Don’t worry about it, Jerry..it’s fine,” I said. I gave the lady three twenty dollar bills. When she gave me the $5 in change, I handed it to Jerry, “…here, hang on to this.” Jerry now had about $37.

He struggled to get back up into my truck and we drove across the lot to his room…room #132. He asked me if I liked to shoot pool, “Not really.” He then asked me if I liked to bowl. I found this a strange question because I had a hard time picturing this older, overweight man having the coordination to bowl. “Yes…I like bowling.” “Well, maybe we can go sometime. When my ship comes in, I’ma look you up, Big Pimpin! Have you got a number?” I didn’t want to give Jerry my main telephone number, nor one of my business cards, for fear that he would show up at my office. He only knew that I was an account manager for a technology firm. I gave him one of my secondary telephone numbers, my Google Voice number to be exact. I wrote it on a small piece of paper along with my first name, “Ian.”

Jerry plopped down out of my truck…shook my hand, twice, and continued thanking me for everything. He got his two bags, his shrimp box, and his Sprite out of the truck and then he asked me to give him “dap”…a term I was familiar with from high school…it’s black slang for the bumping together of fists, one on top of the other. So, I did.

After giving Jerry the initial $1, and then a $20 at the ATM, buying his Shrimp & Potatoes for about $8.50, giving him the change of about $11, paying for his $55 motel room and giving him the $5 change, I was wiped out. I remembered that I normally keep some cash under my cup holder for fast food. When I checked, I had a single $20. I gave it to Jerry and told him to be well. Jerry was happy to have a full meal, a safe place to sleep, and now, $57 in cash. He said he couldn’t wait to go inside, eat, and be able to take a shower…something he hadn’t done in a long time.

Before walking inside, Jerry told me that just earlier that afternoon, he stopped outside a restaurant in downtown Birmingham and asked for some water. The manager, who Jerry made a point to tell me was white, gave him a bottle of water but then told him “…not to be running off his customers.” Jerry was insulted by this…he was simply down on his luck with no means to really better himself. He was thankful that “…there are other, kind people out here who help folks like me.”

Jerry mentioned God, or “The Lord,” several times during our car ride. He referenced “the Lord” in the way that a grandmotherly black woman would…in that sort of “all things which are good in this world” and less in a “personal relationship” kind of way. He called me his ‘guardian angel’, thanked me one last time, and I waited to watch him get into his room safely. I then turned out of the motel parking lot, went three blocks over to I-65S and headed toward home.

One question Jerry asked me, but didn’t stop talking long enough to let me answer was, “Why did you stop? So many people drove by in cars but nobody stop to help me. Why you stop?” Again, he didn’t allow me to answer…he went right on about his good luck and with gratitude. I didn’t tell Jerry that I passed him by the first time or that I drove around Birmingham’s one-way streets looking for him. I didn’t answer Jerry at all. In fact, looking back, I said very few words during the whole ordeal…Jerry was glad to have someone who would listen…and someone, at least for the moment, who seemed to care about him and his plight in life.

Jerry wasn’t depressed. He had a hard life, but he was in good spirits. He may have even put on a slightly embellished story at times, thinking to himself, “This rich white boy might give me some more money.” I’m not naive…I was able to discern when Jerry was putting on a bit…but he never begged, never asked for anything more than what I offered, and always said thank you. I took $100 out of the ATM and I didn’t intend to have any left once we parted ways. I had been doing well recently and $100 wasn’t going to break me. I was glad to help.

No doubt my mother will cringe when reading this. Though I am one month shy of turning 27, I’m still her youngest…her baby. And, it wasn’t but 6 months earlier than I picked up a man hitchhiking from Birmingham, south-bound. It was clouding up and I could tell the bottom was about to fall out. I was headed home to Dothan and I thought if he was going South, I could help him. His name was Paul and I took him as far south at Montgomery and dropped him at a truck stop…he was headed to Mobile, across the state from my destination in Dothan. Not 5 minutes after picking him up, a storm of massive proportions did, in fact, blow in. I would have felt awful knowing he was out there, on the side of the interstate in that storm. My mother was very upset at my having stopped to pick him up, she immediately thought the worst. And, of course, I realize that helping people these days isn’t the same as it used to be. There are bad people out there who will take advantage of you. With Jerry and Paul, I was quick to survey the situation before inviting them into my truck. Each time, my large knife was by my side, and had I had a bad feeling about either of them after pulling over, I wouldn’t have hesitated to move on. But, in both cases, I’m glad I didn’t.

…I don’t know why I stopped to pick up Jerry, though. Or rather, and maybe even more surprisingly, why I drove all the way home, almost, just to turn around and search for him. God has blessed me, and my family, immensly in this life. I have more than I need and never go without. I’ve never known what it is to be hungry, or not to have a clean bed to lay in. I’ve never once worried about where I was going to sleep or where my next meal would come from. Like the song says, “…even my worst days aren’t that bad.”

Just before I turned my car around to pick up Jerry, before I made the decision to turn around, I thought “I hope he’ll be alright…I wonder what his story is.” God brought to my mind a passage in James, chapter 2, vv. 15,16. “Suppose a brother or sister is without clothes and daily food. If one of you says to him, “Go, I wish you well; keep warm and well fed,” but does nothing about his physical needs, what good is it?” This passage kept running through my head, and ultimately, is what caused me to turn around.

To be cliche, I think it was I who received the blessing by helping Jerry out tonight. The $100 I invested into him will hardly be missed but I’ll always remember the opportunity I had to help him, if only for a day. I hope Jerry sleeps well tonight, in a clean bed and on a full stomach. I hope he thanks God for the stranger who stopped to help him and is encouraged as he goes about his day tomorrow. I hope he doesn’t soon forget “Big Pimpin” as I know I won’t soon forget him…and who knows, maybe we’ll go bowling one day.

  • Posted on May 22, 2010

Rules for Eating Out with Friends

Several weeks ago, I stumbled upon the website Archive.org, a site that allows you to enter a URL and see that website on many different dates from the past. When I was first starting to blog, back in High School, I simply edited an html page, added my own timestamp, and uploaded my own pictures…this was just before I began using versions 1.2.* of WordPress. Anywho, I went back through some of the archives and found this gem, which I thought I would repost.

Ok, how many of you have been hungry before? Let me see a show of hands; and out of those, how many of you have jumped in a car with friends, family or strangers (if that’s your thing) only to have someone ask the inevitable question: “Where do you all want to eat?” Yea, just about all of you! Well, this is a common occurrence in my daily life and living in a large city with tons of places to choose from, the conversation can go on for quite awhile unless someone REALLY knows what they want to eat and no one else minds. With that in mind, I’ve come up with the Official Rules of Choosing a Restaurant when Eating out with Friends. They are as follows (and yes, I’m willing to make amendments if they are valid ones.)
RULES FOR 2 PEOPLE IN A CAR:
1.) If someone asks you go to a specific restaurant with them and you agree, the discussion is over.
2). If someone asks you what you want to eat and you reply with “It doesn’t matter” or “I don’t care”, then whatever he/she suggest goes…end of discussion.
3.) If you are allergic to any type of food, or if a specific type of food upsets you, you must make this known up front so there is not confusion later.
4.) If someone suggests a restaurant and you do no want to eat there and you make your desire known, it is now up to you to suggest the next choice.
5.) If someone pulls the “I choose last time, its your turn to choose” card, you must play it…it is a valid rule and trumps most others.

RULES FOR 3 OR MORE PEOPLE IN A CAR:
1.) If someone suggests a restaurant and no one in the car has a strong disagreement with the choice, accept it and eat. End of discussion.
2.) If someone suggests a restaurant and another passenger refutes it as a choice due to any number of reasons (price, quality, service, reputation, etc) it is now the refuter’s turn to suggest a restaurant. This rule may repeat itself as many times as necessary.
3.) If a food allergy or preference is held by any member of the party, the others in the car must respect that preference without asking possibly embarrassing questions such as “Does it give you gas?” or “Does that make you sick?”
4.) Once a restaurant is decided on by all members of the group, the discussion is over and all should make an attempt to find something on the restaurant’s menu that appeases them. They can always refute it on the next go’round.
5.) Once a restaurant has been refuted (for any reason) it may not be brought up for discussion again unless it is by the person who refuted it.
6.) At any time the driver of the car in which the party is traveling in may veto any suggestion for a restaurant. So as not to have a loophole, the driver may only veto as many restaurant’s as there are passenger’s in the car, and referring to rule #5, a refuted restaurant can not be brought back up by another passenger.

I hereby declare these the official rules for choosing a restaurant to eat at amongst friends. These rules may be amended at any time I see fit. These rules are to be held to the strictest standards. Feel free to print and distribute the rules to your friends whom you are likely to eat with so that there is no question about proper refusal procedure. If you adhere to these rules as they are written, the process for choosing a destination should be swift and without bodily harm.

  • Posted on May 22, 2010

Add Max Width to WordPress Image Uploads

The core WordPress media manager does a pretty good job of helping folks to automatically manage their images. Depending on your setup, WordPress will look for the GD Image Library on the server (you can also set it to ImageMagick if you prefer…like I do) and resize your images, auto-create thumbnails, and perform other neat on-the-fly chores that would take awhile to do if you blog a lot.

The later versions of WordPress will take a large image and create 4 different images once you upload it: a thumbnail, small, medium, and large, along with the original. You can then select which image you would like to insert into your post.

Over the past two weeks, I’ve been helping my Mother move from a Blogger blog to a new WordPress blog. She had been wanting the ability to have a wider “content” area and wanted a fresh new look. So, we found her a template that would work well for her and I modified it to fit her needs.

One of the issues we had, once we launched her new blog was image sizing. Sometimes she’ll upload images from her digital camera (which are really large) and other times she’ll grab smaller images from a Google search to include in her posts. It was confusing to her to not have all the size options each time she uploaded an image. See, if a photo is relatively small when you upload it, you won’t get the options for a small or medium image, only the original. Conversely, if a very large image is uploaded and she chooses ‘large’ or ‘orginal’ it may be too wide for the content area and essentially ‘break’ the layout.

Fortunately, there is a simple solution. Locate your theme’s main functions.php file (typically found in the theme’s root directory), and add the following after the opening < ?php

$GLOBALS[‘content_width’] = 800;

This will set the maximum width for uploaded images to 800 pixels. You may, of course, adjust as necessary. Now, when my Mom uploads an image, she always knows to choose the ‘original’ option, because it will never be ‘too large’ for the content wrapper…of course, she doesn’t know that this piece of code is in place…she just knows that it works. And, as they say, ignorance is bliss.

Previous Entries »»