I’m sick of constantly re-building my personal site. I’ve done it several times over the last few years, and it never seems to stick. First w/ hosted wordpress, then as a purely static site, then several more versions of that. I’m now rebuilding my site for what seems like the hundredth time, and this time I want it to last.

As a developer, especially one focused on the frontend, your personal site is your online portfolio. It is incredibly important that you put your best foot forward. This means carefully crafting the message, content, and even the technical details to impress potential employers.

As I have found in recent years, working through all of that content and messaging is exhausting. Whether it matters or not, I tend to get fixated on the smallest details. In my head I know that nobody will care about the shade of gray in the footer (it needs to be readable!), or the exact wording of my biography (should I mention hobbies?), but I refine them nonetheless.

All this redesigning and rewriting, year after year, is exhausting. That is why I decided to finally (hopefully) build one that will last for a long time.

Goals

What is a long time? As a goal, I picked a nice round number - 10 years. That is the earliest I would want to put significant effort into rebuilding my site. It’s a nice milestone between “never” and “a few years”, although I’m not sure there is necessarily a real difference between 7,8, or 9 years. Long enough for a new frontend framework to rise and fall, or for self-driving cars to finally get here.

Another important detail is exactly what it means to “rebuild” the site. Does that mean I won’t make any changes for 10 years (no). Does it mean I won’t update the design or layout? What about the underlying framework, or hosting?

This will always be a nebulous target, as I hope to add new features in the coming years. There will definitely be design changes and some of them could be significant. What I want to avoid is spending significant time re-working the “core” functionality of the site. I don’t want to have to make all of the big decisions about technology, hosting, and design all over again.

Putting all of this together, the goal in terms of rebuilding can be put in terms of avoiding an entire rewrite, all at once. Pieces of either the tech stack or design can be changed, but doing so close together fits the definition of rebuilding, which I want to avoid for a while.

Building to Last

How do you build a (personal) site that will last? Good question. Thus far, my track record has not been great. If you’re looking for tried and true advice, check back in ten years. However, I’ve done the rebuild thing enough times that I can offer some wisdom.

Here are some of the strategies I took when building this site:

  • Design. I went with a simple, flexible, design that looks aesthetically appealing. Right now it has just the basics, but there is plenty of room if I want to add more features later.
  • Employer Facing. In the past, not all of my personal sites have been ones that I would consider listing on a resume. I thought I would maintain two sites, one for [fun projects] and another to put on my resume. Now I realize that (1) it’s too much of a pain to maintain two separate sites and (2) Employers probably want to see your [Obnoxious CSS Library].
  • Tech Stack. Go with something simple that doesn’t require a lot of (or any) maintenance. For a simple blog like mine, a static site generator is the perfect choice. These require almost no maintenance and can be hosted virtually anywhere.
  • Framework. I went with Jekyll, a static site generator that has been around for more than 10 years. You can read more about that decision here.
  • Low Cost Hosting. I’m happy to pay for web hosting if I’m using it, but otherwise it drives me crazy, and I tend to cancel it. Combine this with the fact that there will almost certainly be months or even years in the future when I’m not working on my site, and you have a recipe for downtime (followed by a rebuild). With free or low cost hosting I can just build it out and forget about it for years, if needed.
  • Resist the urge to rebuild. Joel says it best in one of my favorite articles on software engineering. As architects we are always enamored with the idea of doing away with the old and building something completely new. This is rarely a good idea, and I need to remember that the next time I look at my site and think that it needs a fresh new look.

Hopefully it will last, but if it doesn’t, that’s okay too. Ten years without a rebuild is the grand vision, but given my track record, I would be happy making it just a handful of years. It is also important to keep this in perspective. The most important thing is that I continue to remain active in learning, writing, and building new stuff. If I’m doing all that, and need to rebuild the site a few times, that’s fine. It’s better than the alternative of losing interest and letting it sit unused for ten years.