Back in 2009 a web designer and I launched a small web development agency called Shiny Ideas. Our goal was to build small-to-medium size web applications for companies that required complex custom back-end functionality (my half) and exceptional front-end design (their half). We wanted a platform to build those web applications on top of, my development experience at the time was almost entirely using Perl, and there wasn't a suitable CMS written in 'modern' Perl at the time - so in July 2009 I started writing one myself.
Shiny Ideas survived about 7 years, but ShinyCMS (the original version) outlived it - I still add features occasionally. And as the feature list in my last post shows, it's grown a fair bit over the last ten years, being extended to meet one set of customer requirements after another.
One of the reasons that Shiny Ideas wound down was that I had taken a full-time job, at an organisation doing something I'm really passionate about, with the task of hiring and then leading their tech team. There was one immediately obvious drawback; all the systems they had started building were written in Ruby and hosted in the cloud, neither of which I was familiar with at the time. I spent the next few years trying to learn lots of new tech stuff very quickly, while also hiring and leading the team.
Which brings us to now, and I'm still not feeling 'at home' working in Ruby - largely because I ended up spending way more of the last few years being a manager than I did being a developer (a less obvious drawback of the role, it turns out). So, a few weeks ago I decided to get stuck into a personal Ruby development project during my evenings and weekends, to try to get to a point where I feel as happy coding in Ruby as I had coding in Perl. But what should I make?
Reimplementing ShinyCMS as a Rails webapp was my first thought, but initially it seemed like a stupid idea, or at least woefully unambitious. Ruby has quite a few nice CMS to choose from, unlike Perl when I started the original project, so the 'market' need doesn't even exist. However, reimplementing ShinyCMS does have the advantage that I shouldn't get too distracted by architectural design thinking (my favourite bit of coding projects!) and instead I can try to really focus on the 'nuts and bolts' work of building it. The more I thought about it, the more important that seemed and so... here we are.
The feature list from the original version gives me a roadmap of sorts, and the basic design of most of the features is still good (in fact, when researching other Ruby CMS, I found that several of them had taken a similar approach to ShinyCMS with some of their key data structures - which reassured me that I'd made some good design decisions all those years ago!), so the bulk of my task here is just to implement those same features but in idiomatic Ruby (albeit with the benefit of 10 years of hindsight adding improvements here and there). I intend to use gems as much as possible, rather than reinvent wheels - getting more familiar with the Ruby ecosystem is as important to me as gaining confidence with Ruby and Rails - and hopefully the end result should be a Ruby on Rails CMS that has every feature the Perl version has.
Then I can start adding new ones :)