As months go, May was relatively tame by our usual standards. Not that it felt like it, of course. The team still worked their backend off.
But instead of shipping tons of smaller features and tweaks, this month we switched it up and shipped fewer, huger (it’s a word) things. Let’s take a look.
Move our Databases from Mongo to Postgres
By far the biggest thing we worked on and shipped in May was a complete overhaul of our backend. A shift that would make even the most superior of plastic surgeons envious. 🍑
It’s no secret that early technology choices can make or break a SaaS. 😬
We’ve seen it happen. We’ve seen friends and peers have to either overhaul or shut up shop because of really crap core technology.
What I’m saying is, we’re very conscious of getting it “right” at this stage to not get it “wrong” at a later one.
—that almost makes as much sense written down as it did in my head. We’ll roll with it!
The truth is, we’ve been feeling quite restricted by Mongo over the past few months.
We even halted progress on some features we wanted to build simply because it proved to be super inefficient and pretty awful to build them on Mongo.
When your technology starts showing signs that it’s hindering progress, you know it’s time to switch things up, right? Right!
So we did.
And then spent weeks rewriting the entire back end to ensure there wouldn’t be any huge mistakes when we decided to make the terrifying freefall jump from Mongo to Postgres.
This is probably the biggest update we've made to the core product. And the truth is, if we've done it right you probably won't even notice. 🤷🏻♂️
Multilingual versioning
Alongside our absolutely ridiculously gigantic switch to Postgres we also decided to ship a much-awaited addition to our multilingual arsenal. Multilingual versioning.
The concept is pretty simple. We now save versions of your translated articles.
The best part is if you’re using multilingual already you don’t need to do anything to get up and running. It’ll be buzzing away quietly in the background waiting to be called upon to save the day.
It works by creating a new version of an article every 5 minutes, providing changes have been saved.
When you find yourself needing to restore to an earlier version, you can get to multilingual versioning by clicking the “View Backups” button at the bottom of the article. Then you can cycle through and restore from up to 10 latest versions. 🙃
Soft delete articles
We know mistakes happen. People screw up. It happens. Don’t judge! 🙈
One pretty huge screw up we find a few people seem to make is to delete their articles without meaning to. Or worse, someone else in the team deletes their articles out of jealousy for their perfect prose.
I’ll be honest, making it difficult to mistakenly delete articles is a tricky affair. One the one hand we wanna provide a streamlined user experience.
On the other, we have to implement roadblocks and hurdles that make mistakes less frequent. It does happen though. And when it has happened, it’s been a pain in the arse to undo. And needed users to raise a ticket, and for our support team to raise said ticket with engineers.
Even then, there was no guarantee the articles would be rescuable.
So the engineers thought up something awesome. Something so wonderfully fabulous that would make everyone’s lives a whole lot easier.
The soft delete!
Soft delete adds an interim period between deleting an article and when it's lost into the ether.
Like a limbo state.
Not in the fun party game way!
It basically means when someone deletes an article by mistake, you can head to the trashcan and restore the recently deleted article in a few clicks.
Magic ✨
Fixes
Custom Sort Articles. We noticed a bug where users could select "Custom" as the Article Sort Order Sort Articles" without Category Sort Order also being set as "Custom". This isn't actually possible, since you can't custom sort articles without also being able to custo sort categories! 😬 It's ok though...we fixed it. Now you can't custom sort articles without custom sorting categories being selected 👍
Null search counts in stats data and CSV. There were some cases where users were reporting null showing up in the CSV data downloads. It was kinda crappy, so we fixed it! 🔎
Text editor compatibility for older browsers. There was a deserialization error when HelpDocs was loaded in older browsers. The engineers took a look and made it work for the vast majority of use cases. So unless you’re using a legacy version of IE from the early 00s, you should be fine! 😄