Slaughter of the Images

The horror of API overages

Slaughter of the Images

So. Yeah. Most of the images on my site are broken/missing. Why is that? Simple answer: I hit my free-tier limit with DatoCMS.

Slaughter of the Images

I was warned

I knew this could happen, but I honestly didn’t think it would sneak up on me like it did. I go days without checking my personal email sometimes, where the warnings were piling up. Pretty much every time I create a blog post, I also update some minor CSS thing or polish some aspect of the site. In this case, I was working on my image and video delivery settings. This meant — you guessed it — I was cmd-R refreshing that browser constantly while I was working.

A check of my bandwidth usage had about 8GB coming from my localhost IP address. Yep, that’s the culprit. I sent some emails to support to beg a reset of the cap, but (working in SaaS as I do), free customers don’t get support attention, and they’re under no obligation to fix it for me.

It’s not the end of the world; if I was job-hunting or doing a promo of some event, high-profile blog post or podcast, I might be a little more annoyed.

I knew that I was taking a chance when I started on the free tier.

The Lessons

I think I’ve learned a few things through this episode, and some next steps have started to emerge.

Watch the terms & conditions for changes

When I first started on DatoCMS, they had a very accessible step-up tier that was something like $30/month. That would absolutely be doable to let me rewrite things to fit in a free tier. Like many SaaS offerings, pricing and packaging changes all the time. In this case, the pricing jumped to $199/month for the paid plans. That’s completely out of reach for a non-profit personal site.

Take the long view

In the SaaS world of today, there’s plenty of free-tier options that are decent for a personal site. I believe strongly in the Jamstack + headless CMS approach. But what headless vendor outside Wordpress (which I will never, ever use again) is going to stay free, with enough capability to make a decent site? That’s much more difficult to see.

Fortunately, I work at Contentful, which has a generous free tier for developers. Instead of 10GB/mo, it’s 1TB (1000GB). Great, right?

Moving the site over means a near-complete rewrite, because of the way I’ve structured my content. It’s pretty flexible in Dato, and I really like the way it keeps all the content modules within a single entry, to refactor it using Contentful’s Rich Text would mean a ground-up rewrite. I rely heavily on the Imgix and Mux integrations for what is, by design, an image- and video-heavy site. So I would need to rethink a great deal.

I’ve learned an enormous amount since I joined last January. It’s been one of the best years of my career, in fact. I enjoy it, and am having a solid impact. Things are great. But having worked 25 years in this business, I know nothing lasts forever. Someday, I’ll be doing something else. And when that happens, I want to ensure my personal site keeps going no matter what.

We have some amazing features coming down the pike at Contentful, and I know I’m going to be sorely tempted to make use of some of the features that will only be available in the upper, paid tiers. I need to keep it simple, because it could put me in a position of having to pay hundreds a month (at minimum) for a personal site. Running a business on a headless CMS? Those features are worth it for sure. My goal has always been to build & maintain personal sites for nothing, or very close to nothing.

Problems = Opportunity

The other way to look at this is also as an opportunity: a reason to redesign the site. This one is fairly modern, being built with Jamstack with some modern templating languages, and TailwindCSS. The Ruby-based Middleman static-site generator is pretty long in the tooth, but I successfully modernized it to work pretty well in the 2020s. That said, developer trends and most of the customers I help plan their digital experiences for their businesses are moving to Next.js (a React framework…itself a JavaScript framework. Welcome to 2020). It’s very polished and extremely capable.

Focus & deliberate time investments

Making choices about education investments

Learning React is no small endeavor. I like Next’s opinionated approach and there’s plenty of training available. I want to align what I’m learning during the day to improve my personal site, but also my development skills. I have missed actually building things this last year, but I’ve been able to sharpen my product design and collaboration skills.

It’s a little harder to get motivated to work on the personal site when there’s no impending layoff or crisis at hand. This site was intended to be a solid foundation that could help me with a full retrospective of my years of work, but also a place for me to relearn the craft of writing. Tinkering with the design is enormously enjoyable as well, and so much has changed even since I launched it 15 months ago.

Staying focused on the content

What, after all, is this project for? As I see it:

  • A personal portfolio & CV. This validates my experience to others, opens up conversations, and is an investment for wherever I want to take my career.
  • A smooth and capable home to share images, videos, and audio from my adventures and events. I’m enjoying photography a bit more after some years of burnout. My kids are challenging me to get outside more. And, new tools and opportunities are opening up for it, allowing me to…
  • Build up my personal brand. It feels strong already, but cultivating it is helpful day-to-day as I network, but also for the future.
  • Lastly, a place to develop and hone the craft of writing and communicating.

Near-term, I’ll probably just let the bandwidth cap reset at the end of the month and not stress about it too much, then refactor a few templates to use less of my cap. In addition, I’ll need to find a video vendor or host for the small clips I want to embed in pages. I’m spinning up some modern-stack projects at work this quarter and I know I’ll learn a ton. Maybe this summer I’ll consider other options.

I think the most important thing is to stay focused on the writing and the content. I have so much room to improve. I’m hoping to keep working on my writing on internal projects, which are great, but not ones I can share with the world. I’m doing this blog for no one but myself.

Write more. Ship more. Make it “good enough” for now.

More Blog.