---
title: An ode to simplicity
---

If there's one lesson that I take from developing &mdash; and, more importantly, later abandoning &mdash; [Cheetah](https://cheetah.farthergate.com), it's this: nothing can kill a good project, or even a middling-to-mediocre project, like scope creep.

The first big mistake I made was to do everything myself. Now, this was an incredible learning experience, of course: I learned how to write functioning Rust code, for one (functioning, not clean; please mind your footing around the `Rc<RefCell<HashMap<String, Rc<RefCell<ElementRegistrar>>>>>`), but by everything, I mean _everything_. Starting with the template engine. And it wouldn't just be a normal, text-based template engine: this template engine (in [one file](https://github.com/aleksrutins/cheetah/blob/master/src/template.rs), for those who don't value their sanity) worked on the DOM.
