First, let's pour some on the ground for our old server—467 days uptime. Kinda hurts to see it go, but it's for the best. Before we tell you what's new today, let me run through what's changed since our last blog post in May, in true picture book fashion.
One of the major changes on our end is our new billing system. It gives us greater flexibility with how to bill should we ever explore new project plans. And it has allowed us to improve your experience when it comes to receipts.
If you've been around a while, you may remember our original receipts:
Those have been replaced by a separate HTML welcome email and receipt, which some people really needed.
If you ever need any extra fields in your receipt, like your business address, your tax ID, or anything else, just email us at email@example.com and we'll make sure all of your future receipts have it.
We have a new section in our settings called "Receipt history". Here, you can see your full billing history and your next billing date. You can also re-send an old receipt that was sent after we switched to the new billing system.
Another important change since May: improved error handling when something goes wrong editing or moving a story or task. This can help if you experience a network connectivity issue or there is an odd bug. Whatever happens, we make sure to bring back up your editor so you can try saving again, and give you an easy way to report the error to us if need be. This eliminates the possibility that something didn't save successfully when you thought it did.
It looks like our task editor has changed since our last post as well.
Of course, the most important additions to the Scrumy codebase have probably been the things that aren't newsworthy- the bug fixes. Without these, many of you probably wouldn't still be here. So before we move on to what's new today, let's just take a moment and say: thanks for the memories, bugs. Now here's Mike with the meaty bits.
Finally, the new server (gets a little technical)
As any site grows, its server will eventually need to grow with it. Recently some of you have been noticing a few performance issues here and there, especially with the live updating. We are confident that these changes will fix those problems.
First of all, we got a beefy new server, twice the size of the old one, because who are we kidding? Of course size matters.
But, as we all know, size isn't everything; it also matters how you use it. On the software side, we decided to switch from Apache to nginx, a lightweight yet high performance webserver. Because the team at Phusion released a Passenger module for nginx, we were also able to keep using their Ruby Enterprise Edition, which boasts a much smaller memory footprint than the standard release.
The switch to nginx also enabled us to use the nginx_http_push_module for our live updating. This means that we are dropping our old push server, Orbited*. The NHPM greatly simplifies our server setup, as Orbited required 3 separate servers to run (the Orbited server, a stomp server, and the webserver). NHPM compresses all of that into just the webserver. One big difference this creates is that the push server now runs on the same port as the webserver, so people behind firewalls at work can finally use the live updating feature. This should be very exciting to a the people who have contacted us about this issue.
One last thing to note is that since we have changed servers, it may take a day or two for everyone's DNS cache to update. This means that some of your team may be on the new server, while others are on the old. Don't worry, the data is fine, but live updating will not work between the old server and the new server. Most people should be on the new server by the time they read this, but it is worth noting that some may not. If this happens, you could either wait a couple days or have your team flush their DNS cache.
* If you are setting up a push server of your own but don't have nginx, I would continue to recommend Orbited. Also, if you are using rails, check out my Orbited on Rails plugin to make it as simple as possible to set up.
Thanks for reading, and stay tuned for another blog post all about our new API!