Handling Pro Bono and Discounted Projects

Sep
01
2008

A few weeks ago, I was reading this article on 30 Ways to Create an Incredible Client Experience and I thought about something I started doing a while back. It actually seems counter-intuitive at first, but turns out to actually improve the experience on projects where you're charging less than your full rate.

From time to time, I do a project or a portion of a project for free. Some are for friends or family, some for charity and sometimes I have some hours that I don't bill for because I screwed up.

When I first started out, I would do that free or discounted work and it would never be mentioned again. Then on more than one of these projects, things were just sort of sour.

On one, someone was upset that the project was late (I was too), and I'd actually put in a ton of unpaid work over a couple of months to get it done and we still didn't make it in time. The client made a comment that hit me hard. He was looking at my bill, which only included the first 40 hours of each of those weeks and said, "Maybe if you'd been willing to put in more than just the minimum effort, we'd have launched on time."

Right there and then, I realized how important perception and visibility are to a project. Later on, as I read more about marketing, human psychology, etc. I learned a bunch of things about the way people view "free". Further experience taught me that if the value wasn't visible, people will invent a number in their head. And, if the number they come up with on their own is closer to what you pay the neighbor kid to mow the lawn than to what they pay their mechanic, you're in trouble as a tech professional.

A few years ago, I was having a conversation with another consultant and was complaining about how a pro bono client I was helping seemed decidedly ungrateful. He told me that he billed even the free stuff and just discounted it. He went on to tell me to ask this particular client how much they thought they were getting for free.

I followed up on that suggestion and discovered that the non-profit in question thought that the web work I was doing would cost about $300 on the open market. Problem was that I'd given them the same amount of time that my paying clients pay well over $5000 for. Clearly there was a mismatch.

So, what I do now is to shine a light on that free and discounted time. If I'm doing some geeky work for someone that goes beyond a quick phone call or a chat over a meal, I write up the time spent at my normal market rate. I then apply the appropriate discount. That means that if the whole project is free, there's a completely normal project invoice, with a 100% discount applied.

That's something to think about for those who are starting out doing web or design or other work where the common advice to break in is to do a project for cheap or free to build your portfolio. That advice is frequently criticized because it can lead to either that first client or everyone they refer to you expecting the same cheap deal. If, however, you bill that portfolio building project and just discount it, the point that it was a one-time deal is much clearer. You can even name your discount to nail the point home.

I also do this for the kinds of things where I either screw up (I'm the first to admit that it happens) or need to a bunch of research and don't feel ethically right billing for it. I did it a couple of months ago, where the actual bill for the month was something like 22 or 24 hours and I included another 8 that I discounted 100% because I spent an entire day rebuilding the staging server after I messed it up by trying to take a shortcut.

Given that we had had conversations about the delay, putting it on the bill made it clear that I had really made an effort to rectify things. It also showed that I had skin in the game for the problem.

It's really all of those various reasons that have reinforced this technique. All kinds of assumptions and underlying miscommunication gets cleared up when this stuff shows up on a bill. I'm really still quite amazed at how well it diffuses bad blood on both sides.

If you've got frustrations with or have held back from doing discounted work because you aren't sure how to handle it, this approach is worth thinking about. It works great for me.

Old Photos and Family Trees and Scanner Software from The Island that Time Forgot

Aug
25
2008
2 Ancestors in the Field

Creative Commons Licensephoto credit: j wynia

When my grandparents on the Wynia side moved out of the farmhouse and into senior/assisted/nursing homes, a lot of their things were spread to various family members. We all went to the house and the question was posed whether we wanted any of their stuff (yes, those kinds of moments are weird).

Many members of the family had always wanted the china or the old baby buggy, etc. When I was asked, I thought back to Grandpa's slideshows, in the dark, those old images up on the screen. I asked if I could have the slides. There was a strange look and I remember someone asking if that was really all I wanted. I said "Yes" and have had those big boxes for several years.

I started scanning them a couple of different times, but life got in the way. However a month or 2 ago, I decided I needed to get back on it and committed to getting them all scanned. I've been slowly and steadily working my through the boxes in my evenings and weekends for the past couple of weeks as well as figuring out and improving the workflow for scanning them.

At first, I had hoped to use my Mac to do the scanning, in large part because I do like Applescript for chaining things like Photoshop together with other apps in a workflow as well as easily attaching actions to folders. Alas, my slide scanner (the one with 7200dpi optical resolution) does NOT work with anything but Windows.

So, I set things up on Windows, with a Photoshop macro to do the triggering of the TWAIN driver and capturing the image and an Autohotkey text snippet to uniquely name the output files with a timestamp. Autohotkey does a pretty good job of that sort of thing. You can either have a keystroke like CTRL+ALT+T that spits out a chunk of text or an abbreviation that always gets replaced when you type it, no matter where. If it wasn't obvious, you want to be careful you don't name your abbreviations into something that might get triggered by accident.

For this one, I just used this one line in an .ahk for CTRL+ALT+T inserting the current timestamp. I hit that key chord when Photoshop prompts for a name.


^!t::Send, %A_Now%

Makes the whole process a series of quick actions, punctuated by waiting for the scanner to do its thing. Click. Wait. Punch the naming chord and Enter. Wait. Repeat.

Now, I can't move on from the scanning without mentioning something that I find puzzling. From all appearances, scanning software and drivers appear to be written on The Island that Time Forgot.

I bought my first scanner in 1994 for something like $300. It was a little handheld gizmo that did all of 256 shades of gray. The software that came with it for Windows 3.1 looked like nearly everything else that year. It had that look of "multimedia CD-ROM" that was all the rage.

What's strange is that with 4 scanners in my office right now, all of the software that came with it looks almost exactly the same and has the same kind of crappy problems. These apps (it should be noted that this is on the Windows side of things. It's better on Mac and even Linux) do things like lock the mouse during the nearly 1 minute the scan actually takes, put progress windows on top of everything else and ensure that you can't minimize it, etc. All of this TWAIN stuff has the same big buttons with crude bevels and horrible usability.

It really seems like they keep TWAIN driver developers isolated from the rest of the world on some island. Every year, they ship a new batch of scanners and requirements to the island and get back a bunch of drivers on CD. They're somehow given copies of Windows stripped of all modern interfaces and keep using the same tools.

I'll grant you that Windows Image Acquisition (WIA) makes that much simpler. Unfortunately, a 3000 dpi scan of 35mm slide film isn't one of the handy presets and WIA doesn't provide a box to enter the DPI, even if the scanner supports more than the maximum in the drop down.

Digressions aside, scanning these images at nice, high resolution and staring into the past prompted further questions about family's history. After being tempted several times before, I finally registered for the 14 day trial at Ancestry.com.

The site has a couple of nice features, even if the workflow is a bit stilted. As you add people to your family tree, it marks people where they have information that might be attached to that person. You click, examine that information and decide to attach the info or ignore it.

The stilted workflow comes in that it always seems like the thing I'm trying to do next isn't on the screen anywhere or in the place I last used it.

However, the evidence from the few hours I've put into it over the past week or 2 speaks to its effectiveness in spite of those glitches. I've got 577 people added to my family tree and one chain of ancestors that goes back 13 generations to someone born in 1360 in "Warga, Boarnsterhim, Friesland, Netherlands". (Nearly 100% of my tree so far leads straight back to the Netherlands).

  1. J Wynia
  2. Louis Wynia Jr.
  3. Louis S Wynia
  4. Sam Wynia
  5. Suster DeVries
  6. Johanna Wynia
  7. Eeltje S Wynia
  8. S Jans or Wijnia
  9. Foekes or Wijnia
  10. Sijtses or Nijda
  11. S Sijes or Nijdam
  12. Willems or Nijda
  13. Willem W Nijdam
  14. Willem W Nijdam
  15. Sijts Ids
  16. S Van Idsinga
  17. Ferckje G Aytta
  18. Gerbeth Aytta - b1360

I can definitely see how sites like Ancestry.com have consumed all of the hobby time for a lot of folks. This is definitely some interesting stuff to dig through. If you've ever been curious yourself, it's worth checking out.

Dynamic Font Replacement: sIFR, FLIR and More

Aug
22
2008
numeral types
Creative Commons License photo credit: threedots

A couple of weeks ago, Antonio Lupetti shared a list of 10 "handwritten" fonts that he uses in his design projects. He also does a brilliant job of integrating that stuff into the diagrams in his posts, which is why I paid attention when he put out a list (just take a look at his archives and you'll see what I mean).

As I was looking at those fonts and downloading them, I was thinking about sIFR, which I've mentioned before. It's a way to replace text in web pages with Flash on the fly, using fonts that aren't on a user's computer. I've wanted to include that on this site and on several others for quite a while.
Read the rest of this entry »

Site Migration to Mosso Part 2: Why and How

Aug
21
2008
migration
Creative Commons License photo credit: izarbeltza

There were a few questions on yesterday's post about migrating this site to Mosso's hosting. I thought I'd write up a quick explanation of what led to this migration and how it went as well as my take on Mosso as a service.

For several years now, Wynia.org has been hosted alongside a batch of other sites that I own or was co-owner of on a series of dedicated servers. At first, I took care of the administration myself. Unfortunately, busy life got in the way and an unpatched vulnerability led to one of the servers getting hacked.

When it was done getting completely scrubbed and we went to set back up, we hired a company that provided both the dedicated server and the administrator to keep things patched and do things like compile new PHP modules for us. That combined service was something that we thought well worth the $229 it cost.

Over the last year or so, that arrangement has lost much of its luster. The server's stability has been horrible, with services like email and MySQL going down regularly and requiring restarting and frequent reboots to resolve the collapsing. Beyond that, the customer service and support has crumbled as well.

Then, early this year, my business partner and I split and he took the largest of the sites running on that server and I kept the server contract itself. That shift made me review the whole setup and consider my alternatives.

First was the fact that I still have multiple sites, some with some decent traffic (5000+ page views a day). While some of the cheap managed hosting companies allow multiple sites, most are horribly oversold for things like bandwidth and I've heard way too many stories of people getting shut off for "abusing" the service when they reach only half of the bandwidth advertised in a month.

I also know that I don't want to be the one managing the patches and upgrades. I don't have the time for it and don't particularly enjoy it. However, just getting another dedicated server with someone managing it didn't sound all that appealing either.

That's because, as your sites grow and consume more resources, you outgrow the server you're on. That has happened to me several times. Things start slowing down as you start hitting the ceiling of the server's capacity. All of the dedicated server companies I've dealt with take this opportunity to move you to another server.

Granted, they often will do so without any major cost, but having moved WAY too many sites from one server to another, that's something I don't want to do more often than necessary. I'd rather have a reasonably priced approach that lets the arrangement just grow over time.

That led me to look at the emerging clustered/cloud hosts. There are several of these companies that offer the "equivalent" of a dedicated server (i.e. real storage and bandwidth numbers) and a reasonable path for growth while taking care of the security and management of the servers by putting the whole works into a giant cluster.

I looked at Joyent and MediaTemple first, because of the amount of buzz around them. Neither one was a good fit for what I was looking for. While this site is powered by Wordpress (and thus PHP), I haven't been doing much of my new development in PHP for the last year or 2. I have been doing a lot more of my experimental code in C#.

Since my existing dedicated server was a Linux box (without Mono), I haven't had a good place to deploy much of my new code out on the web. However, I've been wanting to do just that. Unfortunately, neither Joyent nor MediaTemple supports .NET. Joyent specifically says "Ideal for PHP, Rails, Python & Java" and MediaTemple is really heavily targeted at PHP. I think if you're doing either Rails or PHP development, those are really good choices, but not if you're doing predominantly C# and PHP.

However, at the time I started looking, there was a newcomer called Mosso (though a subsidiary of an old timer, Rackspace). What was intriguing about their service was that their cluster was simultaneously a LAMP (Linux, Apache, MySQL, PHP) stack and a Windows .NET on IIS7 environment. A single domain can host both types of code.

Beyond that, the pricing makes a lot of sense. Storage, bandwidth and CPU cycles are what you are charged for, getting reasonable amounts of each for $99/month and one of the most straightforward "overage" pricing schemes I've ever seen. That kind of pricing means I can run all of the stuff on the existing server while lowering my initial costs and still be able to handle the future growth without going over my original budget for quite a while.

So, I set things up with Mosso.

Right about then, life got really hectic and getting the sites migrated kept getting put off. One of the biggest reasons is people's email accounts. It turns out that when you migrate a site from one server to another, the biggest problem isn't the site code or the databases, it's people's email. Moving those accounts over, keeping all of their email, dealing with the DNS propagation and where the emails end up, etc. is a HUGE pain.

Which is why I ended up bringing Google into the mix. With Google Apps for Domain, you point your MX records for your DNS at Google and they handle everything email.

I tested it on a small domain and, when everything worked out swimmingly, I made a decision. All of the sites are to move and if you want to use email on that domain, it gets moved over to Google. I'm not going to even mess with trying to keep email hosting working.

This makes migration far easier. You set up Google mail on the old server's DNS records and the new one, get it all working with the old one and then move the site over.

That said, it's still taken me most of the first half of this year to tackle this site's migration. The email's been moved over for months, but the database and code migration wasn't something I was willing to take on in the midst of the chaos.

I wish it wasn't so, but that delay has both cost me quite a bit of money in doubled-up hosting fees and has stunted my list of improvements and fixes to this site. See, when you have a big task you "should" be doing and you sit down to do a "less important" task in the same area, that work ethic guilt kicks in. However, since you still aren't ready to tackle the bigger task, you instead abandon all of them and go and do something else.

Thus, things like hiding the advertisements if you've posted a comment here have lingered on my TODO list for a long time.

Actually migrating went as smoothly as can be expected. Given that my Wordpress install had 4+ years of incremental upgrades from the original install, I took the opportunity to do a fresh, clean install. The data was a bit trickier because of how Mosso does their MySQL setup. Depending on when you create a database, it might sit on a different server, so every database gets it's own user and needs a different connection string.

At this point, I've been running a couple of smaller sites on Mosso for a few months and this site for a couple of days. Overall, my impressions are quite positive. Nearly everything I have wanted to be able to do I could. For the other stuff (like SVN-driven deployments), it's not like anything other than a completely dedicated server would either.

I haven't seen any MySQL issues, which stands in stark contrast to the number of issues I had with it on my dedicated server. However, I'll still be aggressively using things like the Wordpress plugin WP Super Cache to minimize needless hits against the database. Wordpress without that plugin is really WAY too hard on the database compared with what it needs to be.

The support has been top notch. Some of that is probably due to it being in startup mode, where the first few people who get in get extra attention. I know that when I complained on Twitter about not being able to figure out how to get ASP.NET MVC apps to run, one of the founders replied. That was great, but I would be VERY surprised if that continues over the next couple of years for new customers.

Regardless, the tickets I've had to put in were fairly technical (like setting a particular directory to integrated pipeline mode for IIS7), and were handled professionally and I wasn't treated like somebody fumbling around with their first PHP script.

I have, indeed, been able to run both PHP and C# on the same domain and both worked well. The control panel is a little spartan if you're coming from dedicated hosting with either Ensim or Cpanel, but definitely capable. They're steadily improving it and have told me that things like the integrated pipeline change (which is what you need to do to get ASP.NET MVC apps to do the nice routing without the .mvc extension on paths) are coming.

I keep monitors running against all of my sites and haven't seen any outages. Granted, I'm only checking every half hour or so, so it's possible I just missed one, but that still beats waking up to find out that the server crashed at 12:30 last night.

To sum up (and if ever something needed summing up, this article does), I think Mosso is a great solution to the outgrown-shared-hosting-but-don't-want-the-hassle-of-dedicated problem. With extra bandwidth at $0.25/GB and extra storage at $0.50/GB, expansion is much more straightforward than having to go from the "basic" server to the "deluxe" server and migrate all of your sites.

It's stable in my experience, well-supported and runs the code I want it to. Now I just have to get the rest of the sites moved over.

Site Migration to Mosso

Aug
19
2008
empty nest
Creative Commons License photo credit: jurvetson

If you're seeing this, your DNS has propagated and you're using the new Wynia.org, hosted by Mosso.com. There are lots of reasons for the move and it's been sitting on my TODO list for more months than I feel like admitting in public.

At any rate, I also took this opportunity to prune the site a little bit, starting with a cleaner Wordpress install and holding back a bunch of cruft from being set up on the new account. I'll be watching the 404 logs and restoring or replacing functionality that actually gets used. However, there was a bunch of stuff that didn't need to be on the site and that stuff is gone.

If my deletion removed your favorite feature or you find something broken, let me know. I won't necessarily restore it, but at least I can tell you so directly.

« Older Entries  

J Wynia

For better or worse, I'm the guy who runs things here. I'm a web consultant, software developer, writer and geek from Minneapolis, MN. This site is a fairly wide cross-section of the things I'm interested in and enjoy writing about.

Oh, and if you happen to be looking for hosting for your Subversion repositories or just web hosting in general, take a look at Dreamhost. It's what I use for Subversion and your signup helps me out.

Feeds and Links


www.flickr.com
This is a Flickr badge showing public photos from J Wynia. Make your own badge here.

Search


Pages

Archives

Computers Blog Directory
© 2003-2008 J Wynia. All original content is licensed under the terms of the Creative Commons Attribution license unless otherwise noted. Content from other sources is licensed under its original terms.