CMS, Framework, or DIY: How do you choose?

Web developers and web development companies frequently start each project as if they only things that need to be built require merely different types of nails, and luckily they have a hammer. In fact, they often call themselves “Drupal developers” or “Ruby on Rails developers” rather than Web developers (or software engineers). The opposite also happens, where someone will approach each project as a custom, ground-up web development project. Wars inevitably break out over what platform is “best” for web development. Purists slag framework devs as lazy and imprecise, framework devs slag CMS developers the same way and purists as wheel-reinventors, and CMS devs slag the others as wheel-reinventors and one another as using an “inferior” CMS.

The best developers I know may have favorite tools, but they either put them aside when they’re the wrong tool or pass on inappropriate jobs in favor of projects that match their preferred development niche. Others simply choose the best tool for the task at hand…but that choice can be the first point of blank page syndrome. What follows are questions to ask yourself and how the answers can influence your choice.

What does the client expect?

Every project has a client. Even if that client is yourself or your boss, let alone someone who is paying you for a bespoke web application. Sometimes they have particular ideas, for good or ill. You can try to argue the choice if you think it’s wrong, but ultimately the person paying will have to approve your choice. Obviously if you’re adding on to a Drupal website, you have to make a pretty strong argument that Zend Framework is the right choice. (Though I’ve seen it done.) In the nonprofit sector, for example, there’s a huge preference in favor of Drupal for anything larger than a basic site or blog. A previous company I worked for tried to argue for a different solution, but ultimately had to deliver what clients wanted as many dropped non-Drupal proposals immediately.

What is the legacy technology stack?

It’s been a decade since the average web development project was “helping an organization finally get on the web.” Even new projects in existing organizations are often project-specific websites in addition to the main organizational site. Sometimes organizations have a large infrastructure dedicated to serving other sites. While in general I’m not a fan of people hosting their own sites and often throw out the sunk cost fallacy in arguments, sometimes it’s easier to reuse existing equipment and experience than introduce a new technology stack. So if an organization has a ton of ExpressionEngine sites, asking them to host a Drupal site may not end well if they’re not familiar with keeping Drupal up to date or staff need a lot of handholding to use a new system.

What does the end product mostly do?

Even if the excitement is around a small application on the site, if the bulk of the requested functionality revolves around managing web pages, articles, and comments, then starting with a CMS may be the responsible thing to do. While every CMS entails design tradeoffs and limitations that often drive experienced developers nuts, I’d rather focus my development effort on getting that one web application right and adapting it to the CMS’s module structure and API than rebuilding page, menu, login, admin, and comment functionality again.

What will the application do over time?

Small organization sites may live forever as a basic set of rarely-updated pages. Most restaurant pages only need to update menus and maybe an events calendar. Intranet applications will tend to get added on to and fixed over time but never have a vast number of users. And that social networking site may become Facebook.

While lots of startups jumped on the Ruby on Rails bandwagon after Twitter took off, Twitter ended up rewriting most of their site as they scaled. The tradeoff was a quick minimum viable product versus a platform they could easily grow as time went on, and there was a period in which had another service arisen on a more reliable stack, we’d remember Twitter the way we remember Friendster. At mojoLive, we looked seriously at Zend Framework since it was built to have any individual component thrown out for a custom replacement as was needed for scaling, but ultimately it didn’t help us do enough of the hard things easily and would require a significant learning curve to build something we knew was going to be thrown away. Building a custom app based on some code Eli had lying around with a minimal MVC layer didn’t slow us down appreciably over picking up a new framework.

Startups and large enterprise applications also have developers working on them all the time, unlike small organization sites. In the latter case, a well-known CMS is going to be a lot easier than a custom-built CMS for someone to come along and update when you’ve gone on to bigger and better things.

What do you know?

Unless you’re doing a project specifically to learn a technology (and it’s either personal or the client has approved you taking on something you don’t already know because they’re awesome, desperate, or you gave them a big discount), it’s rarely a good idea to start with something you don’t know. Even if you know PHP inside and out, Zend Framework and Drupal have layers of best practices specific to those environments that take time to learn. And jumping from an object-oriented or imperative language to a functional language is…challenging, to say the least.

When is the project due? What’s the budget?

There’s no point in building a new CMS that’s going to take over the world just to churn out a 3-page site due end of the week. The less time you have, the more you’re going to want built for you. Similarly, you’re going to want to stick closer to what you know.


There is, unfortunately, a lot of overlap in the capabilities of systems. Obviously you can ground-up write any app in existence, if you have enough time and budget. (And skill and experience and…) That being said, you can make Drupal into a 300+ mini site system with overlapping permissions, 12,000+ shared users, and single signon with Salesforce. It wasn’t my first choice, but the mix of familiarity, budget, and client expectations led me there. That being said, it was a huge pain and the gains of the CMS components were probably overwhelmed by trying to shove a very idiosyncratic enterprise-level set of requirements onto a CMS whose sweet spot is rapidly building middling complexity content management sites with community features.

In general, though, sites that primarily content belong to CMSes, sites that are primarily web apps with tighter deadlines or without huge growth requirements are better off with frameworks, and sites that are going to be constantly developed and scale rapidly are likely best ground-up. You can find exceptions to all of these, and there are clever people who’ve built simple ground-up CMS apps and made WordPress run massively complex sites, but that rule of thumb should keep your next project from being a cautionary tale of trying to hammer in screws.

Cancer is Boring

The biggest thing I didn’t expect about cancer: it’s boring. As I noted, there’s very little about it that makes for good TV. The diagnosis, delivered in person or over the phone, is just a bit of dialog. It feels dramatic, but unless you’re approaching terminal, there’s very little about it that happens quickly.

Chemo, despite its deserved reputation as a rough treatment, is very boring. Go in, get a blood test, wait for the results, go sit in a comfy chair, and then pass the time for 2 and a half to 4 or more hours as a series of drugs and saline solution are infused through an IV. Afterward, you might pee orange, but the side effects don’t tend to hit if all goes well, as anti nausea meds are the first things you get. But Amy, at least, doesn’t feel very different. Possibly sleepy if she got benadryl during the infusion, but otherwise fine. The effects kick in slowly throughout the next week or two, and some effects are cumulative over that time. It takes a few weeks for hair to begin noticeably falling out.

And if the other side effects are well-managed, the main effect seems to be that she’s too tired for much beyond lying on the couch and watching fairly light TV. (In her case: fashion and police procedurals.)

It sucks, there’s pain, you look different, and the changes are dramatic if you haven’t seen the person in a while…but it’s mainly boring.

That being said: despite the boredom, it’s still stressful. There’s very little acute stress, but a fair amount of low-level, constant stress. This leads to sleeplessness, which makes everything worse…but then again, everything is boring, so it’s hard to find and eliminate a stressor.

Except, of course, for the cancer. That’s what the whole point of this is. And it’s working: the tumor is now extremely hard to find manually. But that’s a long term goal. Amy’s a little more than halfway done with chemo, so we’re in the middle of a boring slog. A boring, stressful, unpleasant slog, which just highlights the surrealism of Cancer World.

All that being said, we’re still terribly lucky. Hell, it’s basically a routine now, and we both do well with routines. People’s support has been great, and I’m continually surprised how many people have experience as a patient or caregiver. Hopefully these posts will encourage more people to be open about it and demystify it a bit.

Because fuck cancer.

On Grieving for the Famous

Two quick things about reactions to Steve Jobs’s passing:

1. Bill Gates would get a much bigger outpouring if he were to pass away under similar circumstances than people think. It would just be of a completely different character because the only people connecting emotionally to what Gates did would be reacting to his philanthropy and his business success. They might overlap strongly with the people who continue to fail to get why Apple did so well after Jobs’s return and attribute his success to showmanship and marketing. The reason is that nobody connects emotionally to any of Gates’s technical work. Nobody loves Windows. And fewer hate Windows than old Mac partisans would like to believe. But legions love and hate the iPhone, iPod, iPad, or the Mac. If you don’t understand the difference, I can’t teach you in this post.

2. Dave Winer complaining that Steve Jobs is viewed too nicely in his bio is like Mubarak complaining that Lenin is viewed too nicely in bios. It may be true, but just because you’re gonna be a footnote in history doesn’t make you not an asshole, too. Hey, at least you’re a footnote: I haven’t even achieved that. And maybe you’re like Jobs at NeXT, a genius between highs. But there’s no denying “mercurial” would be a polite way to describe your interactions with others.

Cancer World

Having a loved one with cancer moves you from your normal existence to what Christopher Hitchens termed the “land of malady” but that I call “Cancer World.” It’s a world with its own vocabulary, like any other specialized world, and each cancer has its specifics. You learn about staging, invasive versus non-invasive, and you finally learn how to pronounce “metastasis.” (I had previously only heard the verb form, “…whether the cancer has metastasized.” Turns out, you pronounce the noun quite literally.) As Hitchens notes, you also “fight” cancer, never suffer from it, and people who’ve been successfully treated for a cancer are not “recovered” but “survivors.” While most cancers are in fact life-threatening, and people with the cancer in remission are never 100% sure every last cell has been killed and the cancer can’t recur, the fact is that the flu can also kill you, and there is no guarantee you’ll never get another infection or that it will not flare up again. Then again, the survival rates for the flu are to be envied.

But all that pales against the sudden influx of facts and statistics and treatment options. You don’t talk about mere “survival” but “5 year and 10 year rates of survival and recurrence,” and you can quote them by stage and cancer types. Oh yes, there are many types of even breast cancer. They can even be plotted on a matrix: invasive or non-invasive, ductal versus lobular, which of three possible hormones the cancer might respond to or none of them. You find yourself unconsciously picking up terms from the doctors and nurse practitioners who patiently explain things to you. There is or is not lymph node “involvement.” You don’t ponder surgery to take out all the breast tissue on both sides and replace them with fakes, you consider a “radical double mastectomy with reconstructive implants.” Very quickly, these terms become second nature.

With breast cancer specifically, but also cancer in general, there seems to be a profusion of flower decorations, icons, and imagery. Always white, delicate, and peaceful, possibly in an attempt to balance the certainty that many of the patients around you are facing a terminal illness while others are fighting fear that theirs will be. Still, I find the profusion of white lilies disturbingly funereal.

On the positive side, everyone in those parts of the hospital or office go out of their way to be nice. Perhaps it’s because there is no malingering in Cancer World: it is a disease best detected by blood tests and tissue samples, not subjective patient reports. There is that element, too, but it’s always better when it’s detected without any symptoms on your part. I’ve read that in emergency departments and primary care physician offices, the term “GOMER” is used (Get Out of My Emergency Room) for hypochondriacs (and not only them, but that’s a darker side). There are no GOMERs in Cancer World, either. It’s sufficiently scary and the treatments sufficiently unpleasant that nobody there wants to remain any longer than they absolutely must.

In Cancer World, certain things are understood: food is something to be managed as much as enjoyed, because nausea is a constant part of most treatments. When there isn’t nausea, there are taste changes: things that used to taste good don’t anymore. Certain treatments dry out the mouth and promote sores, so eating acidic things is discouraged. And since anti-nausea meds are going into you constantly, you don’t want to do anything that might further upset your system, so spicy foods are also out. And even if they were in, they might not taste good. Planning activities is a very tentative thing: fatigue builds up through treatment, and recovery from surgery is variable.

Emerging from treatment to walk around the outside world when you know the person beside you has just undergone chemotherapy is an odd experience. No one can tell just looking at her that she’s undergone this: there’s no cast, your hair does not instantly fall out, and the effects take a couple of days to set in. Explaining the cancer to people means educating them on the nuances you’ve just spent a few weeks mastering. And often, people are more devastated than you are, as they don’t know the statistics as well as you. Or in other cases they think it’s less of a deal than it is…because they don’t know the statistics as well as you. Comforting others about your loved one’s cancer is a surprisingly common occurrence.

I don’t doubt that a similar transition happens for transplant patients or members of any other group of people who share a life-changing characteristic and visit a series of institutions designed to deal with that characteristic. It’s just remarkable that there’s so little communication between Cancer World and this world given the number of people it affects. When you announce a diagnosis of cancer, people come out of the woodwork with family members, friends, and colleagues who have had or, worse, died from some cancer, frequently even the cancer you’re dealing with. Yet these don’t come up the way car crashes or even heart conditions do. Maybe it’s that there are no dramatic events around cancer after the initial diagnosis, delivered in an office or over the phone. No one rushes in to give chemotherapy just in time to revive the patient.

Hopefully this gives you a glimpse into Cancer World so you better understand what friends with cancer or who have loved ones with cancer are experiencing when they’re off dealing with it. There’s one last thing that’s surprising about Cancer World that you should know, but that warrants its own post.

2011 Sucks

So good things: I finally got to start on mojoLive, which is great and past time.

OK, now for everything else.

I spent the first three months sick with the flu followed by a chronic sinus infection. Turns out, this was the least bad thing to happen. Antibiotics, once you find a doc who will give you a 30 day supply to beat the little fuckers into submission, work.

Most of the first of the year was also a game of “Any day now” with funding the startup. As anybody who has been through a funding process knows, it’s an extremely stressful process full of promise that you can start followed by a string of disappointments. I ended up having to turn down a promotion and prematurely give notice. Fortunately the funding did finally come through, albeit in drips and drabs, so starting up has been an exercise in contingency plans. Fair enough, that’s how that stuff goes.

Around the time I got well, my cockatiel Squeak got sick. He couldn’t shake it, and I had to medicate him twice a day for several months.

Our CTO has had family issues that have kept him from participating fully, so the startup’s road has been even rockier than normal.

And then Amy found a lump in her breast. A mammogram turned into a biopsy which revealed breast cancer.

Immediately after that, Squeak, my companion since I moved to DC 14 years ago, suddenly got worse and died on the way to the vet. Squeak was my first pet.

Then we found out that Amy has the BRCA-1 mutation, meaning that in addition to a heightened chance for recurrence of breast cancer, she has to watch out for ovarian cancer. Her type is somewhat aggressive, but at least responds to chemo fairly well. She’ll have to have a double mastectomy to decrease the risk of recurrence, and she’ll need to get regular ultrasounds to watch for ovarian tumors.

So the remainder of 2011 will be dominated by chemotherapy for her until December, followed by surgery.

Not directly affecting me, there have been other good things: the Arab Spring and a few friends having children. But then there’s also been a devastating tsunami and the Arab Spring has turned into a bloody struggle. Oh, and Steve Jobs’s long illness from has resulted in him stepping down, which almost certainly means it’s entered a terminal stage. Fuck you, cancer.

The not-as-bad-as-it-could-have-been: Amy’s near-term prognosis is excellent–after, of course, the nausea, fatigue, and hair loss followed by major surgery. The startup is functioning, and we’re actually somehow mostly on track. So if you haven’t signed up, do so, and I’ll have happier things to talk about later this year.

But if I’ve been less communicative or social, well, I’ve had stuff going on. So what I’d hoped would be fun blogging about a new company will instead be mostly updates for those who know Amy.

Finally, perspective: We are financially sound, Amy has great insurance and a supportive job and friends, and everybody I’ve talked to has been incredibly supportive. Squeak was in his early senior years, so it wasn’t shocking. While I’m acknowledging the painful realities of what should have been a banner year, I haven’t lost site of the many advantages I have.

Oh, and fuck cancer.

New Site

I’ve moved and updated my site. Most old content is here, though a couple of images may break. Bonus: no registration for comments. And the WP guys will stop snickering at how ancient my install is.

Moving On

So the official word is out, and I can say that as of the first of July, I will no longer be at Forum One.

I’ve been there an eternity in the tech world: ten years and nine months. I arrived there from a startup, in which in four short months I went from a web developer to managing the team. At Forum One, the same ascent took me five years. Along the way I worked on a hundred or so different websites, went through two recessions, three US Presidents, and innumerable Yuenglings.

I hired everybody on the current software team and became interested in career development: how to find good people, what makes a good developer, how to make a junior developer into a senior developer, and how to assess progress.

I also worked on a product and found it increasingly rewarding compared to the chop and change of consulting work. I’d always had an interest in the entire software development process, from strategy through information architecture, design, and deployment. I also got to pick up a lot of business considerations, both for the company and for our clients (though they cringe at calling anything they do “business”).

Seeing different organizations and how they work is interesting, but the similarities begin to feel like routine and the nonprofit world is a conservative place for all their lefty leanings. There’s more scope to do your best work and employ best practices, without having a client force something substandard for political reasons.

So I wanted a change from project work, and moving to a different consultancy just wouldn’t give me enough of a change. So when a former colleague approached me about an idea for a startup, I was severely tempted. I was also cautious, as I am no longer as footloose and fancy free as I was a decade and change ago; 60 hour work weeks aren’t really my idea of fun. I’ve learned a lot about how I want a company to run, and getting that right was very important.

But the idea was compelling, our ideas of how a company should run were compatible, and I was able to shape both. So on July first I’m going to be working full time on a startup I’m cofounding, and we’ll see if my vision for shaping products and running a company works in practice.

While I don’t want to say too much about the new startup, I can say that it uses the experience I’ve gained in seeking, hiring, managing, and promoting developers and other technical types to address something that’s completely lacking right now.

The company will be called MojoLive, and we’ll be providing a revolutionary—and I’m not using that word lightly—approach to career management. It’s a really exciting opportunity, and it gives me a new role and a new title: Chief Product Officer. I’m going to be using the skills I’ve picked up outside pure development to ensure the product has a constant vision, taking into account competitiveness, marketing, design, and of course development. And of course at first I’m going to be helping develop this application. I hope to have some exciting news about that soon.

I’ll still be heavily involved in the open source community, and in fact I’ll be broadening my involvement beyond networking and recruiting, and beyond PHP. I’ll even get involved in proprietary communities, as our product will be useful for anyone involved in technology as a career.

So to my Forum One friends, I say thanks for all the opportunities and experiences. Stay in touch; I’m working from home, just down the street. For everybody else, I’ll be seeing you and saying more as time goes on. I’ll even blog more, as I’m no longer working on this in my spare time after hours.

Those of you who know me know I don’t often gush or get excited easily. This is something I’m genuinely excited about and can’t wait ’till we have something to show you. In the meantime, I’ll be helping transition my role to the really capable team I’m leaving at Forum One.

Watch this space; I think this is going to be a lot of fun.