I honestly don’t understand how DreamHost stays in business.

Dossy tweeting: "@DreamHostCare Is anyone actually watching this Twitter account? You're about to lose a $350/mo customer because a server migration has been going on for 6+ hours now, with no updates from your end. What are you all doing over there?"

Yesterday, a client of mine was having their DreamHost dedicated server migrated to a new dedicated server because the one they are on intermittently becomes unresponsive at 8pm ET, seemingly at random.

DreamHost’s diagnosis is that the server is on a Linux kernel version that is supposedly causing this, and their recommended solution to the problem isn’t to just upgrade to a kernel that doesn’t have this problem, which would be trivially simple, but to upgrade the entire operating system and migrating to a new dedicated server.

As a person who manages servers for a living, I get it: it can suck having to support old stuff sometimes. The old server is on Ubuntu 14.04.6 LTS, which is quite old at this point, but isn’t due to reach End of Life until April 2022. The new dedicated server they’re moving us to is only on Ubuntu 18.04.5 LTS, which isn’t even the newest Ubuntu at this point, which would be Ubuntu 20.04.1 LTS. Still, any opportunity to force a customer to do a major OS upgrade because the service you’re providing is failing intermittently, I suppose if you don’t give a shit about your customer, you make them do it.

There’s only four small sites being hosted on this server.

There are a combined total of 103.3 GB worth of files, and 7.5 GB worth of MySQL data. These numbers might seem large by year 2000 standards, but in 2020, this is trivially small; it can all fit comfortably in RAM on any modern server, or stored on a modern iPhone.

Transferring this from one server to another over a 1 Gbps link shouldn’t take more than 19 minutes, and less than 2 minutes on a 10 Gbps link. Migrating from one server to another shouldn’t take more than 30 minutes, tops, and that’s if you’re a Neanderthal and type with your fucking elbows.

A woman typing on a Dell keyboard with her left elbow.
Source: odiouswench on YouTube

Thinking that this should be a quick and easy migration, we requested the migration back on October 28th, asking for a date and time when the migration could be done. On October 30th, DreamHost responds saying the data center team would need to do some prep, and that they’d let us know when they could schedule the upgrade, “likely early next week.”

Apparently, “early next week” in DreamHost-speak takes over a month.

Fast-forward a month, and on November 28th, I send a follow-up message asking what the status is with our request. Four days later, on December 2nd, I get a response saying they’re ready to go. I respond on December 3rd, requesting the soonest available time slot, because at this point I just want to get this over with. I get a response late that night saying that they’ll schedule the upgrade for the next day, December 4th, at 11am PT/2pm ET. Fantastic, we’ve got a plan!

The time comes, it’s 2pm ET, and I’m sitting here, with the Cloudflare panel open in one tab, the DreamHost panel open in another, and the sites all lined up in 4 other tabs, ready to pull the trigger on changing the DNS to point everything at the new server to minimize whatever downtime I can. I’m prepared.

At 2:57pm, I get an email from DreamHost saying that they’re only now starting the migration. 🤦 Okay, fine, whatever. The email says I’ll receive an automated email once the upgrade is done. Cool, let’s get this over with!

… time passes …

… and some more time passes …

… I’m starting to wonder if my spam filter ate their automated email …

… and the sites still haven’t been migrated …

At 7:26pm, I send an email pointing out that at least one of the sites is down because it can no longer connect to its database. I point out that I haven’t gotten an email that the migration has completed yet, so either their process has failed or they have seriously taken four and a half hours, so far, to complete a migration that should have been 30 minutes, tops.

At 8:37pm, having gotten no response to my earlier email, and the site still being down, I send another email, asking for an update. How much longer could this possibly take?

Getting no responses to my emails, I decide to give DreamHost support’s “live chat” a shot. I queue up at 9:17pm, and eventually get connected to a person at 9:27pm. I ask for a status update with our migration. I notice that while I was waiting in queue, an email arrived at 9:16pm saying their upgrade process failed and had to be restarted.

Are you fucking kidding me?

I stay on the live chat to try and get progress updates, and see if there’s any chance this is going to actually get done tonight. Sadly, at 10:19pm, I’m told that the migration process has failed again, and that the tech who was doing it will revert part of the migration to point the sites at the databases on the old dedicated server to bring the sites back online, and that they’ll come back to this on Monday.

At 10:42pm, I’m informed that the sites should be back online and that and that there’s nothing more that will be done this evening. I confirm that the sites are back online, and end the chat.


I was a long-time DreamHost customer, myself, since 2006. But, after they changed their service offering in 2015, I had enough and closed my account.

At that time, I was just happy enough to leave and leave it at that. But now, 5 years later, seeing that the DreamHost experience has continued to get worse over time, I’ve decided that not only am I not going to give them my business, I’m not going to have my clients give them their business, either.

If you’re currently hosted at DreamHost and unhappy and want to move away, but haven’t because you’re either uncomfortable moving your site by yourself, or you’ve tried hiring someone in the past to do it and they failed, I want to help move you.

Contact me and tell me about your DreamHost experience, and I’ll see to it that you’re moved to better hosting.

This week in Freelancing Train Wrecks …

I guess my good luck had to run out eventually. For all the awesome projects that I’d been picking up off Elance, I finally got totally boned by this one train wreck of a project.

train wreck

I knew right away it was going to be trouble. The project was posted as an invite-only job, and I was the only invitee, basically saying this was a offer specifically for me to consider from the buyer. Normally, this would be quite flattering, getting hand-picked and made an offer from a buyer, but this one made me nervous: it was vague as to what the buyer wanted, other than someone with “PHP and MySQL skills” … which, yes, I am definitely an expert in. In addition, the buyer proposed the hourly rate he was looking to pay right in the project’s title, which was practically half my normal hourly rate. Still, if I could knock out the fix to his problem in 1-2 hours like I normally can, it would end up being a pretty decent rate in the end … so I thought …

The job was posted some time on October 28, and at 9:55 PM I asked a pre-bid question about the work to be done. The buyer responds at 4:02 AM with the URL of his site and states that he has a “PHP script problem.” That morning, I check out the site, it’s throwing a MySQL DB connection error, which is a piece of cake to fix. This is where my Spidey-sense started tingling. How could I bid on work when I can’t even see the site? Still, I’m a sucker, I still had hours that weren’t billable for the weekend, so I figured I’d take the work. Some money is better than no money, right? Right??? (In hindsight: NO!!!) A few more messages are exchanged, I submit my bid for the project, and wait. By 10:37 AM, he accepts my bid and awards me the project: the game is on!

Right away, I get in and correct the credentials so that PHP can connect to the MySQL database. Great, the site’s up, now … and it doesn’t look outrageously terrible, so maybe this is going to work out okay, I’m thinking. Hoo-boy, how wrong I was, hah! Throughout the morning, we exchange messages and he keeps saying how he’s going to give me a list of changes, which never materialize. He wants to talk on the phone, which if you know me, I prefer to avoid, for the exact reasons that actually happened … yet again.

whack-a-mole, by tpapi on Flickr

I’m waiting for whatever list of changes he wants done, watching the hours tick by, and out of the blue he calls me at 5:00 PM. According to my call history, we spoke for 24 minutes, of which I remember there were an agonizingly painful 22 minutes or so of me trying to make sense of him while he abruptly stops speaking mid-sentence, not finishing a single thought, starting a sentence mid-thought … and me asking him to repeat things that sound remotely relevant just to make sure he didn’t emit words from his mouth by sheer accident and just generally playing Requirements Whack-a-Mole over the phone.

I finally get off the phone, and shoot over a few questions trying to clarify what little I came away with from the call. Instead of answering in writing, he calls me again at 8:09 PM and we go round-and-around the mulberry bush for another 9 minutes. Needless to say, it was more of the same as before and I didn’t get my questions answered. So, I do what I know always works: I stop wasting my time asking questions and I start reading the code. The code never lies.

And, in this case, the code is a downright disaster. I start putting together a list of all the possible things that he might want to fix, most of which he probably doesn’t even realize needs to be fixed, figuring he’ll name some items that I can crank out and get through this supposed 8 hour project. At this point, I’ve accepted that it was a huge mistake to take on this project, but I feel bad for the guy so I figure I’ll give him something so that this wasn’t a total waste for both of us. (Mental note: stop doing this! It never ends well.)

On Saturday, he’s apparently busy working, so I don’t hear from him until 2:15 PM when he sends me a message saying he’ll be free after 4:00 PM. Lucky for me, he must have found someone else to torture after work, because I don’t hear from again the whole day. I get to work on another client’s project, thank goodness.

I get to continue working on other projects on Sunday, until he calls me again at 7:29 PM and I manage to get off the phone in only 6 minutes. At 8:00 PM, he emails me saying that he would send the list of changes he wants done that night and that he would be available at 10 AM the following day. I acknowledge his email at 8:02 PM, letting him know I’m looking forward to finally seeing this list. Like a pig saved from the slaughter for a day, I’m actually feeling relieved by this empty promise … and I finish off my Sunday getting other client work done.

Monday morning rolls around, and at 9:44 AM, he calls me. We talk for 5 minutes, probably me pointing out how that supposed list of changes never materialized to which he probably rambled on about how I’d be getting it. He sends me payment out of the blue for three hours with the explanation that he’s paying for “the hours so far to show initiative in comppleting [sic] it ASAP.” Oh, if it were only three hours I’ve sunk into this mess, that might have been worth something.

Finally, at 11:47 AM, I get a change request that I can actually act on! And, a request to test a portion of the site’s functionality! For those keeping score at home, it’s now three days after the project has officially started. Finally, I can start working against those evil 8 hours I’m on the hook for …

Around 5:00 PM that night, after getting done some work for my other clients, I complete his the change request, and do the testing, and post screenshots into the Elance workroom to show my progress. By 7:26 PM, I’m done … and ask him to provide an explanation as to how to reproduce the problem he’s asking me to test for. He has no idea, so I decide to call it a night and go back to working on other client projects. Tomorrow’s another day full of suffering just waiting for me.

Of course, as my luck would have it, things go from bad to worse. My network connection goes down at 2:07 AM on Tuesday, 11/2. This forces a hard stop and I crawl into bed, hoping it’s some scheduled maintenance and that things will be up by the time I get up in the morning. Sadly, it turns out that the entire block is without connectivity and a few adjacent streets, and there’s four or five repair trucks out along the poles. Finally, at 10:32 AM, network connectivity returns. I shoot him a note at 1:58 PM letting him know that I was offline most of the morning. It seems he must be busy, as I don’t hear from him the whole day.

Wednesday at 12:58 PM, I suggest he spend some time and put together the list of changes in an Excel spreadsheet so that we can both know exactly what is happening, so I can finally lock down the scope and get away from this mess. At 4:51 PM, he sends a message saying he’ll make the list. Then, he calls me at 4:52 PM and we spend another 6 minutes on the phone. At 5:04 PM, I get a message saying that he’s working on the list and that I’ll have it within an hour.

At 6:37 PM, he tells me that he doesn’t have Excel and sends me this huge blob of unformatted text which I only guess is what he thinks is a list of changes. Here’s one of the gems, verbatim:



If anyone can actually figure out what he meant by this, I’d be impressed. Eventually, I was able to decipher it, but I now have a finer appreciation for what archaeologists must deal with when finding an ancient civilization. Holy crap.

To make this ridiculously long story slightly shorter, at 6:42 PM he calls me and we go back and forth on the phone for 30 minutes, at which point I think I understand a few of the more important items on the list, and get to working on them.

One of the requests is to doctor up some PDF files with changes, and I inform him that I’m not able to do it. He suggests I print it out and white things out and scan it back in … because, well, he’d do it but his scanner is broken (!!!). At this point, I just can’t take it any more. I tell him I don’t have a scanner and he should hire a graphic designer to make the changes he wants. Instead, he goes to Kinkos, whites out and hand-scribbles his changes, scans it and sends the results to me. I’m not joking; I wish I were.

Fast forwarding a bit, days go by … us going back and forth, me trying to zero in on what each of those nuggets from his “list” mean. Finally, last night at 8:52 PM, I go into Elance and request that they cancel the project. I muster every ounce of willpower I can, writing and rewriting the next message over and over, trying to eliminate all of my seething hate and anger. I finally wind up with this, and I send it:

I’m sorry, but I can no longer work on your project. This is not how I do business and I cannot continue to wait for you to decide what it is you need done.

I’m going to mark this job as cancelled. Please find a new provider.

Despite losing out on what little money I was going to make off this project, I felt a huge relief after doing this. It was finally over. Dare I say it was almost orgasmic. Yeah, it felt that good to finally get this monkey off my back. But …

Today, he finally responds at 3:31 PM with:

Im not sure what prompted this message however I do hope your satisfied with future clients and that they meet your needs. If you send over an invoice i will remit.

What? What, what? Seriously, two weeks into this mess you don’t understand why I’m canceling this project with extreme prejudice? I guess in all my agony to try and be pleasant, I guess I failed to be adequately clear. So, at 4:10 PM, I sent this final message:

This project was bid at 8 hours for $[redacted]/hr. It went on for two weeks, and was well over the 8 hours – probably closer to 15-20, but I wasn’t watching the clock, could be more, I don’t know.

What I do know is I can no longer continue to respond to you in a timely fashion because the large amounts of time I spend trying to decipher what you’re asking for, reading and re-reading your messages, listening to your voicemails, talking with you on the phone — it was cutting into time I had committed to other clients and your project was putting ALL of my other work at risk.

It was a difficult decision to cancel the project, but I would be losing a LOT more than $[redacted] if I let ALL my other projects suffer because of yours. I’m sorry, but I cannot afford that — this isn’t a side-job for me, it’s my primary source of income and it pays my mortgage and feeds my kids. I cannot afford to let you jeopardize that, not for $[redacted]/hour.

Good luck finding another provider on Elance and completing your project.



Let this gruesome tale of a freelancing opportunity gone horribly wrong be a lesson to all of you: JUST SAY NO. Sure, you might wind up passing by a few good opportunities, but you’ll definitely avoid these train wrecks. In the end, they cost your business more than those few possibly missed opportunities could ever be worth. Trust me.

If you want something done …

There’s that old saying, “If you want something done, ask a busy person to do it.” I know that saying all too well, now … I’ve never been busier! However, I’m still not at the point where I’m doing enough business to cover all the bills, yet. But, I’m so busy doing all the work that I don’t know where I’m going to find time to seek out additional work to finally have enough work to pay the bills!

I guess at this point, I have to really have faith in word of mouth and other leads that I’ve been generating to come through and get me past that finish line. It’s a very scary and exciting time, with lots of great work to do and wonderful people to work with. But, I’m definitely feeling the tremendous pressure of trying to find the money to pay bills and knowing that I can’t be in two places at once … I have to either be doing work or bringing in more.

I don’t know how I’m going to get over this hump, but what I know is that I don’t have a choice: I have to figure it out, somehow.

Trying out the Genesis theme framework

After all the fallout about Thesis, the premium WordPress theme that everyone loved so much, this past July and everyone’s mass exodus to the Genesis theme framework by StudioPress, I decided it was time I checked it out for myself.

Right off the bat, I’m pleased that Genesis is GPL’ed, it means I have the freedom to take it and do what I please with it, including building child themes that depend on it, and sell them.

So, how did I decide to give Genesis a try? By converting the theme for my own blog, dossy.org, to use it. Yup, might as well really live and breathe it and see how it wears, right?


It took me about 2 hours to rewrite my theme using Genesis, which was really pleasant to use and flexible enough to suit my needs. Of course, my theme isn’t really elaborate and doesn’t have a lot of functionality, but I do have some peculiar bits that weren’t hard to reproduce in a way that would fit in with Genesis’s way of doing things.

If you’re looking to switch from Thesis or otherwise have a custom WP theme built using Genesis, this is definitely a service that Panoptic will now be offering. Lets talk and discuss how I can help you.

Three months later …


Soon, it will be the end of the third month of my full-time self-employment. On one hand, I’m very pleased–business has been very good–but on the other hand, it still isn’t enough to cover all the bills, yet. Conservatively, I’d say I’m half-way to where I need to be on a monthly basis. Don’t get me wrong, I’m ecstatic about the progress I’ve made in just three short months! I also know that there’s these bills to pay … and I need to come up with the money to pay them.

I’ve been truly blessed with some fantastic clients, tremendous opportunities and an incredibly supportive family. I’ve always had dreams of doing this, but never felt that the timing was right. To be honest, I’m not sure that the timing is right now, either, but one of the things I’ve learned these last three months is that I don’t need to be sure. I’m going to do everything it takes to make this succeed, and if that’s not enough, I’ll just have to find ways so I can keep trying.

I think the challenge for September is to try and figure out what Panoptic is going to specialize in. Being a very broad and varied generalist is making it hard to sell. While I could take on many projects that come my way, it’s hard to explain how that’s possible to a potential client. It also complicates the decision-making process around what leads to generate and pursue. Focusing Panoptic through specialization should simplify the sales process, which could help me achieve my business goals and be able to pay those bills.

Too much, too fast

I haven’t had much free time now that I’m running Panoptic full time, but I just want to throw out what I can remember I’ve done just this week alone:

  • Filtered 2008 and 2007 Department of Labor data for Form 5500, creating Excel spreadsheets of the results for a client.
  • Clean up 19,000 splogs from a misconfigured WP MU 2.8 installation, dropping some 130,000 tables in the process. Upgraded to WP 3.0 afterwards.
  • Fixed a SEF URL issue in Joomla! using the sh404SEF component. The site has translations managed by Joom!Fish, which added some complexity.
  • Replaced a client’s Flash-based photo gallery with jQuery and the GalleryView plugin.
  • Started creating a completely customized theme for X-Cart based on provided designs. Got clean URLs working with X-Cart on Lighttpd in the process.
  • Upgraded a client’s WordPress to WP 3.0, scheduling some training hours to walk them through how to use it properly.
  • Migrated a client’s bbPress forum with 5,000 posts to Simple:Forum with InfusionWP. Had to write my own converter script to do the import.
  • Building a customized Amazon EC2 AMI that will run Oracle and AOLserver for a client.

And, it’s only Thursday …

I know I’m seriously under-selling myself at the moment but I need to build up a solid list of excellent testimonials and references before I can seriously charge market rate for the kind of skills I have. I’ll say this: Elance has been a fantastic resource for me, better than all the other freelance job websites out there.

Okay, enough of this. Back to work …

This is why I don’t design logos

I’ve been doing business under the “Panoptic” name for over 15 years now, and I’ve never properly done the brand identity work that I should have. This is definitely the all-too-often case of the shoemaker’s children going shoeless.

For 2010, I intend to finally do something about this. I’m going to finally invest the time and effort to build the identity that properly reflects the kind and quality of work that I do.

There lies the problem: I’m a software developer. I’m not the visual or creative person that I wish I were. I write excellent code; I solve difficult problems with simple and elegant solutions. I have a very broad understanding of a lot of technologies. I geniunely enjoy my work and do it with a passion that extends past “just getting it done.”

As an exercise in embarassing myself, I threw together the following two designs for fun:

2010 Panoptic Logo drafts

Like I said, this is why I don’t design logos. But, I know there’s a lot of really talented, creative people out there who may be interested in some work or know people who are. I’d love to hear from you! Can you envision an appropriate logo that reflects the brand I want to create? Have I written something that inspires a design that you think conveys a relevant message?

As you can see, I could use all the help I can get.

The business of kicking ass

(… and, yes, business is good!)

I’m now in my third month of being self-employed after leaving AOL and things are looking good. I am very thankful for everyone who has been incredibly supportive of me, starting with my wife and children who have been awesome. I’m fortunate to have a large network of friends and clients who have helped me find work and I don’t know what I would have done without them.

Ironically, several years ago, my friend (and at the time, client) Terri-Ann told me that I should have gone independent, that “work will come to [me],” but I just wasn’t prepared for that kind of risk. But, years later, I’m pretty sure she was definitely right. I may not have been ready at that time for other reasons, but I am blessed to have met so many great people along the way. I know I don’t say it often enough: thank you for everything.

Having said all that, it’s now the middle of January 2007. For now, I’m using Quicken 2006 for my invoices and it’s working out well. The irony of being a web application developer is the classic “shoemaker’s children” problem: Panoptic’s website looks like crap. It didn’t bother me as much before, since it was only a part-time thing. Now that it’s my primary business, I really want to pay more attention to it. In the upcoming weeks, I’d like to:

  • Create a more professional logo for the Panoptic brand
  • Clearly define what Panoptic’s business is
  • Create business cards for myself

Long ago, I’d created and used some business cards that I designed myself, but never really took it seriously. Again, it wasn’t a problem, because folks rarely asked me for them. However, lately, I find people ask me for my card a lot. Having to say, “sorry, I don’t have any,” makes me feel awkward–unarmed, almost naked. I’m sure it’s equally hard for potential clients to take me seriously as a professional if I don’t take my business seriously enough to commit to having business cards, right? So, I’m going to make some. It’s time.

I don’t have the cash flow yet to hire professional brand and identity management folks, but if you’ve got some time to spare and would like to help out for free, I’d gladly accept the help. If you’re good at what you do, I’m sure folks will want to know who you are and I’ll be happy to hook you up. I’m also sure that as my business grows, I’ll have paying work to send your way: business networking is a fantastic way of finding work! Lets help each other out.

To everyone else who has left AOL, I wish you all the best of luck. It’s a small world out there, so keep in touch and lets all do the best we can!