On upgrades & goodbyes
Every six months, we like to share our highlights in a newsletter. It has been a little overdue, so let's get to it! 😄
Heroku Addon
After months of development and testing, we are very happy to announce the general availability of our Heroku Addon. If you are a Heroku customer and you want one solution for file uploading of any kind, just type:
$ heroku addons:add transloadit
-----> Adding transloadit to sharp-mountain-4005... done, v18 (free)
The Heroku pricing corresponds with our regular plans, but we did have to introduce additional high-end plans as Heroku does not support overages.
Tightened security
After launching a security program, we received insightful feedback by many researchers. We were fortunately able to address all of their issues and our security turned out a lot stronger because of it. We are therefore very grateful to these people. If you are still able to uncover any vulnerabilities, please consider participating as well!
New Robots & SDKs
We have launched the /audio/artwork Robot, which extracts album artwork from audio files. We have also launched the /meta/write Robot, which writes metadata to files, the /ftp/import Robot, and we have added video concatenation support to the /video/merge Robot. Furthermore, we have added pngquant support to the /image/optimize Robot, which will result in highly optimized PNG images.
We have also launched brand new development kits for Node.js, Android and iOS, and we have released several fixes and stability improvements for the jQuery SDK.
Improved video encoding
Videos sometimes contain data and subtitle streams. By default, we always gave each stream a place in the output file, but we found that these streams are in many cases unwanted, and often even a source of many encoding problems.
To address this, we have launched FFmpeg stack v2.2.3
, which ignores these streams by default. It
also contains many other improvements, which will be covered in a separate blog post. If you want to
preserve data streams with v2.2.3
, you can do so using the map
setting.
New features
Besides the larger projects mentioned above, we have:
- added a "Freeze account" option for when you want to avoid being charged without losing access to your account's Templates and history
- added support for >5 GB files for Rackspace Cloud Files storage
- added support for preserving album cover files when converting your audio files
- added more fonts for printing text onto your images with the /image/resize Robot
- added a filter for the Assembly list for Assembly errors that can be fixed on your end
- added the option to ignore errors when you batch import files from S3, FTP or SFTP
- added the option to email you about Assembly errors that can be fixed on your end
- added HTTPS URLs for temporary result files to the status pages of our Assemblies
- improved the speed and reliability of our Assembly Search
- improved our queueing algorithms to better mitigate load spikes in the terabyte range
Our Status Page has been migrated from Nodejitsu to Digital Ocean. We used Terraform to fully automate setting up camp at Digital Ocean - and we really loved how smooth that went. You should check it out!
Growth
We are also very happy to report continuing growth over the past six months:
- we now have a base capacity of 20 octa-core machines, which constitutes an increase of +300.0%.
- during our biggest load spike so far, we scaled up to 130 octa-core machines. That is an increase of +44.4%.
- our monthly usage has also picked up, by +41.6% to be specific.
CoffeeScript
Many of our customers are developers, that is why we also like to share a few things that are not a customer-facing improvements per se.
At Transloadit, we maintain our website (Jekyll / PHP), API (Node.js / JavaScript), SDKs (all main languages), and home-grown scaling tools (written in Go).
Our API is at the heart of our company, so you may be surprised to learn that we have finished rewriting it from JavaScript to CoffeeScript.
We didn't really appreciate CoffeeScript before we had to do a real project with it for two weeks. All the reservations we had about using such a language in production quickly melted away and made place for warm feelings of appreciation and efficiency. We decided to take a shot. Since CoffeeScript compiles to JavaScript, we could continue to use all the JS classes and modules as we were porting.
We are now looking at a codebase that is reduced in size by 22.3% and we still have some refactoring ahead. We now find it more enjoyable to read code as there is less of it required to achieve common things. The intent of the developer seems to shine through more clearly.
We also find it more enjoyable to write. Some typical bugs and typecasting mistakes are just not possible to make. All in all, we are happier engineers, making bigger dents with fewer keystrokes.
Thanks to our massive test suite, we can report that there have been zero incidents as a result of this undertaking.
Goodbye
We also have an announcement that is very much sadder in nature. We started Transloadit as three engineers from Berlin and Amsterdam - Felix, Tim, and Kevin. Within five years, we managed to turn nothing into something and Transloadit is now a profitable company that we are all very proud of. We are the company that has been running Node.js in production for the longest time, and we have released a ton of open source projects to make that happen.
We had some amazing times at conferences, Queen's Days in Amsterdam, in the Biergartens of Berlin, and on hacking trips to Dubai. We had hundreds, if not thousands, of Skype calls discussing architecture, ways to outsmart the competition, and about our personal lives. We truly became friends.
That is why writing this is so hard. With pain in our hearts we have to announce that, after five great years in which the three of us drove Transloadit to what it is today, our co-founder Felix Geisendörfer has left the company. In July 2013 it became clear that our visions for the future of the business had diverted, and that we weren't able to unify those. We tried several things, but with the need to support a growing customer base came a demand for iterating on the existing product, and that meant less room for game changing developments.
We were unable to bridge this gap and ultimately decided that the only way forward for each of us was to split up. Felix' last commit to our repositories was in June 2013 and he officially left the company in March of this year.
We cannot deny that Felix' personality and exceptional talent will be dearly missed. At the same time, his departure made it all the more clear that Tim and I care deeply about Transloadit. Building an encoding service and being able to live off of it is a dream come true, and we feel there is still so much we can do to push this baby to even greater heights.
And that is exactly what we will do.
We are incredibly thankful to Felix and we are confident that he will be successful in any future endeavor that he decides to undertake. We wish him the best of luck and strength with whatever those may be!
Looking ahead
We have a lot of good stuff still in the pipeline. Just to name a few, we intend to:
- implement Cluster, which will aid in making our uploaders more reliable, and our deploys smoother
- add visualizations/graphs of your usage and about how our systems are behaving
- launch a complete design overhaul of our website (already 3 months in the making)
- launch advanced encoding and importing features
- expand to Asia Pacific (besides Europe & U.S.) to lower latency in countries like Australia and Japan
- launch SDKs for more languages (such as Go)
- add support for resumable file uploads via the open protocol that we have launched over at tus.io
Please let us know if you'd like to join us in this adventure, as we are actively looking for reinforcements!