How to painlessly shop on craigslist

When I think of online shopping, I immediately think Amazon. If I think of an item I want to buy, I check amazon first. Having had Amazon Prime for the past 6 years or so, I’ve become quite accustomed to free two day shipping. Plus returns are about as painless as it comes. So of course they’re going to be my first stop when I want to buy something. I’m sure it’s your first stop, too.

But every once in a while there are things that I’m looking to buy that I don’t really want to pay retail for and don’t really care if the item has been used. A year ago I would have told you that my next stop would have likely been ebay to find the items I’m looking for. But now I do this sort of shopping on craigslist instead. But not in the way you might think.

My problem with Craigslist

I’ve known about craigslist for years, but up until last August, I had never made a single purchase from the site. It has always felt a little sketchy and finding an item that I was looking for in my area never seemed to work out. So I was surprised when a buddy Corey told me about the killer deal he received on a set of folding chairs he had just purchased. He then went on to explain HOW he shops on craigslist.

Hang tight, I’ll show you how in a sec.

What I was doing wrong

The biggest thing I was doing wrong with Craiglist was thinking about it like an online store. I’d go and I’d do a search for what I wanted and if I didn’t see it, I’d give up and move along. Maybe the item I was looking for wasn’t available right that minute, but what if it somebody posted what I was looking for an hour or a day later? I was never going to see it because I wasn’t about to check the site hour after hour, or even day after day.

So, what’s the solution? Automation!

IFTTT to the rescue

Have you ever heard of ifttt stands for “If This, Then That” and it’s one of the most useful websites on the planet. I’ve been using it for years to automate tasks. For example, I have an automated task that checks my instagram account for new photos and automatically moves a copy of the photo to my flickr account. But that’s just the tip of the iceberg of what ifttt can do.

Corey showed me how he had set up a search on craigslist for the items he was looking for, and every time a new item got listed in his area that matched his search, ifttt would send him an email.

Mind. Blown.

I wanted to purchase some gym equipment cheaply, so I immediately set up searches for a number of items I was looking for. A squat rack, bar bells, plates, rowing machine, etc… Then I waited.

Within the first month I had received a handful of emails. I’d click the link in the email to check out the listing and if it looked like a good deal I’d reach out to the seller. It took about 6 weeks before I found somebody selling a number of items as a package deal at a price I was willing to pay. The bundle he was selling included two items I didn’t want, so I took a couple photos of them and posted my own ad to craigslist and sold the items the very next day bringing my cost on the bundle I DID want down to an even more reasonable price. Sweet!

11 months later

I have meant to write about this process for quite a while, but keep forgetting. Mostly because I had deactivated all but one of my craigslist recipes (that’s the IFTTT term for it) and I wasn’t getting notices very often, and none of the ones I did receive panned out to anything. That is, until this past weekend.


I had a search set up for a rowing machine, but I didn’t want to spent more than $600 on it. So when I saw the email come in that said “Concept 2 Rower, like new $250”, I immediately sent a text and an email to the seller. I was sure it was too good to be true or that it would be sold by the time I reached him. But luck was on my side and within 90 minutes of receiving the email, I was picking up my new rower.

Here’s how it works

OK, you’ve put up with me prattling on long enough. Let me walk you through how this works.

Step 1) Define your search

Go to craigslist and do a search for the item you’re looking for. You’ll end up looking at a screen similar to this:


Step 2) Tighten up your search results

Notice in the screenshot above the items down the left hand side? You will want to uncheck “wanted” since you are trying to buy and don’t care about listings from other people who are looking to buy the same thing as you. You will also want to click the “show 37 more” link to reveal 37 other categories that you may want to uncheck. Like these:


The tighter you make your search results, the less false positive emails you’ll receive. You can also set a minimum or maximum price for your item if you want to narrow your search further. But once you’re done, click the search button on the left sidebar to complete the updated search.

Step 3) Copy the resulting URL

After your set up your search and hit save, the URL is going to contain all the info needed to give you the search results you’re looking for. Copy it from the address bar and we’ll use it in a minute.


Step 4) Create an IFTTT Recipe

If you don’t already have an account, you’ll need to create one. This step has a number of sub-steps to it, so let’s get started.

a) Click “My Recipes” at the top

b) Click “Create a Recipe”

c) The screen is going to say “if this then that” and ‘this’ is going to be a link. Click it.

From here you are going to be able to choose a trigger. In the search box, type craiglist

d) Click the craigslist icon

You’re going to see the following:


e) Click “New post from search”

f) Paste the URL in to the “Search results URL” box and click Create Trigger, like this:


g) The screen will now look like this:


Click “That”

h) Now you get to choose an action. Type “email” in to the search box and click the email icon

i) Click the “Send me an email” link on the resulting screen

j) You’re going to see a screen that looks like this:


There’s no need to change the subject line or body content unless you want to. Click “Create Action”

k) The final screen is going to be a summary of what you’ve created. Like this:


Click “Create Recipe” and you are all set!

Things to remember

1) Meeting up with a pocket full of cash at a stranger’s place can be a little weird. Be careful out there.

2) This is NOT like shopping on Amazon. If you’re trying to get an item right away, this method probably isn’t for you. But if your timeline is flexible, you may just find a diamond in the rough.

If you try this out method out and it works for you, please report back. I’d love to hear about the deals you were able to find!

Happy Shopping!

How I eliminated 100s of emails per month

When people ask me what I do for a living, I semi-jokingly respond “I answer emails.”

With a team of developers and a stack of clients, it’s a fact of life that I’m going to have to deal with a fair amount of emails. Keeping clients informed of what’s going on and making sure developers have what they need is a big part of my job. Email is the typical vehicle for getting that done. Ipso facto, I deal with a ton of emails. Since I deal with so much email on a regular basis, I’m constantly trying to find ways to eliminate emails. I wanted to share with you a few things I do that have drastically cut down the number of emails I deal with each month. Amazingly, both have to do with video. But I promise, both are dead simple.

Show me, don’t tell me

Let me know if this sounds familiar; A client asks you to build something, you deliver it and explain how to use it. A month later they email you asking you how to do it again. Rinse, repeat.

Back in 2007, I first wrote about a tool I was using called Jing. Up until 18 months ago, I could say that I used Jing pretty much every day. I no longer use Jing, but have switched to using SnagIt, which just so happens to be made by the same awesome people who make Jing.

Why SnagIt?

I’ve used a number of screen capture tools, and I find that SnagIt hits the sweet spot for me. It has enough features to do what I need, without being overly complicated. I love Camtasia, but for my day-to-day use, it’s far more than I need. SnagIt makes it simple to shoot a quick video with voice over and then either upload it to their paid service, which automatically copies the URL to your clipboard, or you can save the video and upload it to youtube/vimeo/etc. There are options to auto-upload the videos to youtube and other 3rd party services, but I honestly haven’t had need to use that functionality, so I haven’t played too much with it.

I use SnagIt in a number of ways;

1. When a client calls and explains a change they need made, if the change is visual, I’ll load up the client’s website and then use SnagIt to walk through and explain what the client needs done. I can then take the URL send it to the client to have them confirm that what I’ve explained in the video is what they are looking for. This eliminates both a series of emails trying to describe a visual change via text, and, stops us from doing double work trying to guess exactly what the client is looking for.

2. When we complete a project for a client, if we had to build any custom functionality, we’ll use SnagIt to record a walk-through video for the client showing them how the functionality works. This is also handy for new sites where the home page is managed with widgets or custom content areas. Creating a 5 minute walk through video will take you far less time than trying to create a PDF document with screenshots, etc. I’ll talk more about how I typically deliver these training videos to clients in just a sec.

3. We have a number of WordPress plugins that we work on as a team. As we are working on new functionality, I will often be the QA tester. If I run in to any bugs, SnagIt to the rescue. I’ll talk a quick walk through video and show the developer exactly what is wrong. They’re able to see the exact chain of events I went through to produce the error and see any error messages that may pop up along the way. Again, this is so much quicker than trying to write it up and explain it.

In the palm of their hands

Early this year I had a string of clients who were all brand new to WordPress. I ended up spending more time than I care to admit providing one-on-one training over the phone or on Skype. While I don’t mind doing one-on-one training, I don’t think it’s worth my time or the client’s money for me to be on a call explaining how to write a post in WordPress. That type of information has been covered a thousand times over! What I needed was a delivery mechanism. I found exactly what I was looking for in WP101.

video-dashboardWP101 has a series of videos that explain the basics of using WordPress. They make those videos available either on their site, or through a WordPress plugin. We subscribe to the plugin and install it on our client’s sites as we finish them up. Now, the client has a simple way to learn more about WordPress from right inside their WordPress dashboard.

In the screenshot you’ll see the standard videos that WP101 provides, plus the custom videos that we shoot. Since our client videos can sometimes contain private information, we use a Vimeo Pro account and mark the videos as hidden from Vimeo, and set them to only be viewable from the client’s URL. We then grab the embed code and add it to WP101. Now the client has all the automatically updated videos from WP101, plus the site-specific videos that we shot for them in one spot that’s easy for them to find and watch again and again.

By providing our clients with the WP101 videos plus the custom videos we shoot, we’ve seen a dramatic drop in emails asking how to work inside WordPress. I consider this a huge win for both of us.

Peaks and Valleys

On my company site, we get a fair number of people filling out our contact form looking for help with a project. Believe me, I consider ourselves very lucky to be in a profession where there doesn’t seem to be any shortage of work. As the forms come in, we do our best to review them, set up calls when needed, and, as often as possible, book the client for some work. In a perfect world, they’d come in all spaced out evenly throughout the week or even the month. But you know that’s not how it works. We’ll get 5 in a single day, and then none for a week. Or, we’ll go through a stretch where it’s 5 or more per day.

Dealing with the incoming leads is a good amount of work. But obviously, it’s some of the most important work we do, because without them, we don’t have clients. OK, that’s a bit extreme, but you get the point.

The Perfect Storm

In a post last week I was talking about a project that went off the rails. As is usually the case, when one project starts to get squirrely, others tend to follow. Until all of a sudden you’re looking at a handful of projects that are all running late. Throw in to the mix waiting for assets from clients, contractor availability and every thing else that can slow down projects and you have the perfect storm of crap.

It’s during these periods of volatility where I find it the hardest to work on new leads. As existing projects are slipping past due dates, the projects we had lined up after the current projects are inevitably going to run long, too. As that is going on, I have a bad habit of letting the incoming leads sit longer than I should. This is typically because I’m not eager to bring new clients in to the mix while we’re trying to sort out the clients we already have. If I’m not careful, what can end up happening is that we end up getting caught up without booking new projects to start after the previous ones finish.

Here’s a secret, that scares the crap out of me!

Build. Better. Reporting.

A few months back we released a product called WP Time Tracker. Even though we released it recently, internally our company has been using it for over a year to record the work we do for clients. I’ve been telling people recently, this is my favorite plugin that I have personally written. I use it absolutely every day and it continues to make my job easier.

This week as we were getting caught up on a few of those lingering projects, we’ve started the process of doing the postmortem to figure out what went wrong and how to avoid it in the future. More specifically, how do we avoid it in the IMMEDIATE future as we have a number of ongoing projects that we are still working on. Justin, my partner, shared an email exchange he was having with another business owner talking about their sales funnel/pipeline and work capacity. His note to me at the top of the email said:

I had an idea to add two reports to WP Time Tracker:

Worker “capacity” basically showing an average of every workers weekly hours so we know how much they normally take on.

Client “demand” showing the same number over time to give an idea of how much time clients take up.

Worker Capacity is a fairly easy one. We want to figure out roughly how much time each of our workers has available on average in a given week.

Client Demand is a little different. We have a number of ongoing/long term clients that will send us a batch of work, then go dormant for a period of time, then come back with another batch of work. What we want to figure out is, when each client sends us work, on average, how many hours per week do we spend on them. Breaking that down one step further to show which developer are involved is also an interesting stat.

As I said a minute ago, we’ve been using the plugin for over a year to track each of our developers hours on a weekly basis. We track all that time against clients. Holy crap, we have a wealth of information locked inside a plugin that just needs to be let out. I’ve selfishly added these two items to the top of the feature list. But don’t worry, I’ll share them as soon as their ready. Hopefully they’ll do their part in helping us navigate the peaks and valleys.

Refining my blogging process

Did I mention that I’m really enjoying blogging again? Well, that makes it sound like there was a time when I didn’t enjoy it. Not true. I’ve always enjoyed blogging, but have typically been too busy to do it. Recently I’ve made an effort to move a couple of the things I LIKE to do toward the top of my list instead of the bottom. I bought a bunch of tickets to see the Las Vegas Wranglers play, too. That’s been on my list for a while now, so finally decided it was time to act on it.

I was chatting with Jon Brown the other day and he brought up my recent stretch of blog posts. I don’t recall all the specifics of the conversation, but we did start talking about process. Blogging isn’t just about writing. Sure, that’s the bulk of it, but there’s also things like picking a featured image, linking words and phrases to other posts or other sites, tagging, categorizing and, of course, proofreading. Although, if you’re a regular reader here, you probably think I skip the proofreading part. Zing!

I have tried so many different ways to try and blog regularly, if I had taken better notes along the way, it would have made a great article about how NOT to do it. Although, I’m sure some of the processes I tried would work for somebody out there, none were good enough to get me to blog regularly. So since I’ve apparently latched on to something that’s working, this is probably the process worth talking about.

Finding my process

I remember when I first got an iPhone, I was pretty sure that a lot of the tasks I normally do sitting at a desk would eventually move to the phone. But even though there are some great apps available for blogging, none ever really worked for me. I had a lot of problems with the early WordPress iOS app, so I was always searching for other apps to fill the void. I probably went through 20 or 30 different apps with nothing ever really sticking. Evernote was probably as close as I ever came to an app that helped me blog regularly from the phone. But the process of writing on the phone wasn’t very pleasant.

When the first generation iPads came out, I went through the process all over again. App after app I tested trying to find the perfect match for blogging. But no dice. I loved consuming content on the iPad, but could never really get comfortable creating content on the iPad.

So why not just write at the desk? Since that is something I do all day long for work, sitting at the desk another 30-90 minutes to write a blog post isn’t always what I want to do. I’d much rather be able to lay in bed or sit on the couch and knock out a post.

The Perfect Marriage

This summer I picked up an iPad mini. I absolutely love the form factor. I find it so much better than the full size iPad, it’s not even a close comparison. As I started using it more and more, I realized that I was able to hold it in both hands and type with my thumbs without having to stretch to reach the keys in the center like I had to with the full size iPad. I started using the iPad in the morning to go through Facebook and leave comments, send tweets, etc. So when I decided to get back in to blogging, I grabbed the latest WordPress iOS App and tried it out. I was thrilled when I was able to write a post, add links and categories and didn’t have any problems.

So my process now looks a lot like this. I lay in bed and use the iPad mini plus the native WordPress app. I write the entire post, add links and categories and basically get the content ready to go. I then switch the post status to ‘Draft’ and click save. This doesn’t just save the post locally, it pushes it up, in draft mode, to the server. Then, next time I am at my desk I open the post, give it a final proofread, add a featured image to the post and hit publish.

The WordPress app is damn good these days. If you haven’t tried it out in a while, you really should. I find writing on the iPad mini extremely enjoyable and that’s been a big help in keeping me blogging. I would like to get a bit better at dealing with images in the iOS app, but that’ll just come with practice.

How about you? What’s your process?

It has to be the server issue! Or not.

This week has mercifully come to an end, and not a minute too soon! I’m not going to say it was a terrible week, because it really wasn’t. It was just a bit more chaotic than even I like. And I like me some chaos!

Even through the chaos, I was able to wrap up a couple projects and found time this evening to take my daughter out to the movies. Although, the people dying in the Hunger Games did make her sad, so I’m not sure it was exactly a win. I may have to examine that more in a future post.

Yeah, WordCamp Presentations

When we were going through the large list of WordCamp presentation proposals, I selfishly picked out one that was of interest to me. Ben Lobaugh‘s submission about getting started with unit testing. I talked with some guys on my team about the submission and the general consensus was that we’ve all seen talks about unit testing before, but none really start at the beginning. When I reached out to Ben to tell him he was selected, I made it clear that we wanted to see actionable ‘getting started’ examples. He agreed, so you aren’t going to want to miss his talk.

Unit Testing, for those unfamiliar, is a process where you set up a series of tests for your code. If you have a function that runs a calculation and is supposed to spit out a number between 1 and 5, for example, you could write a test to run that query and check the results. If the value comes back as 27, the unit test would fail and give you a warning that something is wrong. Having unit tests for your code can save you a ton of time when trying to track down an errant function.

Well, it works on my machine!

As I mentioned in yesterday’s post, I had a project go off the rails yesterday and it made for a pretty long and grueling day cleaning up the mess. When we finally called it a night, we knew there were still a couple things that were going to have to be followed up on in the morning. So when I got to my desk, I dove right back in head first. There was an issue with the menus on two archive pages. They just weren’t showing up. Every other page worked just fine. But not these two. Well, let me clarify, on the client’s dev and live environments they weren’t working. However, on my local machine and on my development server, it worked perfectly. So clearly, the issue wasn’t with the code, it had to be an environment thing, right?


Midway through the day I had tried most everything I could think to solve this issue. Nothing was working. Nothing. It HAD to be their server. I hopped on a call with one of my devs just to walk him trough what I was seeing in the hopes that he’d have some insight. I send him the link to the page in question, he clicks the link and reports back, “The page is working fine for me.” Blank. Stare.

I asked him to view the source code to look for a hint I left in the code. The hint looked different for him than it did for me. This was finally my first real clue as to what was could be going on. I dug back in and was able to cross a couple other items off the ‘possible reasons’ checklist. But still, the pages were broken. I called up another one of my devs, showed him the issue, and within about 15 minutes we not only found the issue, but had it solved, too. We submitted the code, got it to the client’s server and we were finally able to put that issue to rest.

What went wrong?

After something like this happens, I try to figure out what happened and how to avoid it in the future. Once we solved the issue, the “what happened” part became obvious. A feature request at the 11th hour that we hurried to get in place did not have ample testing performed. A small difference between our environment and the client’s environment masked the issue from us until it was too late.

Since this project has a central function that gets used throughout many different sections of the site, it’s imperative that it’s returning the proper value. If not, well, it may just cause menus to decide not to display. Or, it may manifest itself in other less obvious ways. If this had been a site for a bank and that function was miscalculating somebody’s interest rates, the mistake could have taken way longer to find and had far worse repercussions. But, if we had unit tests in place for this project, I would have spotted the issue in a matter of minutes.

I have 2 or 3 projects that are large enough that they should have unit testing on their code. So, Ben, no pressure, but I’m looking to you to show me the way at WordCamp Vegas.

Instant Messenger is the Devil

Software like Adium and Pidgeon are so darn handy. They let you hook up your Google Chat, Yahoo! IM, AIM, MSN and other instant messengers along with access to tons of IRC channels, too. Man, what a great invention. Instant access to everybody I’ve ever exchanged email with (thanks gchat) all at the click of a button. What could be better?

Whoops, I meant, what could be worse??

Up until a couple weeks ago, my normal practice would be to get up in the morning, sit down at the computer, open my email and open Adium. It was basically like shouting “Hello World! I’m awake and ready to answer all your questions!” The flood of emails is bad, but the flood of IMs are worse. Mostly because my (self diagnosed) OCD wouldn’t let me just ignore ’em. I felt like I had to answer every single one. I basically felt like this:


“So why not just shut off IM?”, you say. Simple answer, I have a team I work with and it’s nice to be available to them. Unfortunately that meant being available to roughly 1400 other contacts at the same time. I was in serious need of a solution. And as usually happens, one presented itself at WordCamp.

I was sitting in the back of the room with Dre and looking over his shoulder as he was doing some work. Up popped a messenger window and he started typing to a coworker. I asked, “What IM program is that?”

Hipchat, it’s awesome”, he said.

He explained that it let him be in direct contact with his team, and just his team.

Holy crap, why had I never heard of this? I downloaded it immediately and sent invites to everybody on my team. I now had direct access to my developers, I could create rooms to talk about specific projects with sub-sets of the team, and it even let me receive notices on my phone if something came in while I wasn’t at my desk. I was instantly in love.

The first week of not having the IM distraction was a bit weird. I was so used to the distraction, when it wasn’t there, I sorta didn’t know what to do. But, after a couple weeks, I’m really noticing a difference in my productivity during the day. It’s not perfect, but it’s a HELL of a lot better.

I still need to sort out a way to deal with emails, but, for Instant Messenger, Hipchat is definitely the answer.

Photo credit:4nitsirk, on Flickr

My first week using RescueTime

I spent a lot of time at my desk. I mean, a LOT of time. I’m really trying to cut down on the numbers of hours I spend at the desk and I’m going for the ‘Work smarter, not harder’ approach. So one of the things I thought I should do was track how much time I’m spending doing different activities. So in order not to spend more time trying out a bunch of different tools, I asked Twitter for a recommendation. I quickly got back a handful of responses suggesting I check out RescueTime. I signed up for the free account, installed the Mac app and away I went…

The first day I installed it, I let it run for about an hour and then went to the dashboard just to make sure it was working. Sure enough, I could see it was recording how much time I was spending in my email client, in a browser, on IM, etc. So, I let ‘er roll.

The following day I checked back and was already really liking the information it was collecting. I did a little research and found that the paid version offered an even better set of reporting, including some custom reports that I’ll talk about later. It was enough to get me to purchase a subscription. I pre-paid for a year, set up some custom reports and went back to work.

The next day I got my first “weekly” report. Since it only had about 1.5 days recorded, I decided to not even bother with it and would wait for another week before really digging in. So here we are a week later. Let’s have a look, shall we?

What I learned

  1. RescueTime will block you from accessing sites that are marked as Very Distracting. Facebook, Twitter, Youtube and I’m sure plenty others. But, it didn’t block me from using TweetDeck. It did, however, stop me from clicking on any links that tried to go through the redirect.
  2. I cheated, and it screwed up my stats. Rescue time has a nifty little feature where you can tell it to pause for 15 minutes, 60 minutes or until tomorrow. When it is on pause, you can go to all those great time wasting sites. My problem is, I’d click pause to go check Facebook and then forget to start the clock again once I got back to work. So because of that, my stats for this week are pretty low. For the next week, I’m going to try and not use the pause button for anything other than 15 minute Social Media breaks. I will also try and limit them to a couple per day.
  3. I spend a LOT of time dealing with email. This one wasn’t actually all that shocking to me. Although, I was a little sad to see that my top 2 activities were email and IM. when do I get any work done??? I’m working on some solutions for that issue as well. IM is a vital tool for me since I manage remote developers and that is one of our main communication methods, but I need to lower the amount of time I spend on it.
  4. Custom Reports are awesome! With custom reports you can set up to track time you spend on individual clients by adding a list of keywords that the software will look for. So, if you are writing code and saving it to a directory named ‘client-abc’, you can easily track that time. I need to refine my custom reports a bit, but, I believe over time it will become a way to better track how long each client project takes. This will help with estimating the cost of future projects.

Moving forward I’m going to go ahead and let RescueTime run 24/7 to get a better understanding of how much time I’m spending on the computer and when that time is productive and when it’s not. My goal is to raise the productivity number while lowering the total hours. Although, I have a feeling this next week is going to see a big jump in hours as I try to leave the pause button alone.

Overall I’d have to say I’m really happy with RescueTime. Sure, some of what it’s showing me I already new (Damn you, email), but there have definitely been some eye-openers as well. Now, to use this knowledge to make changes for the better.