Hi, Drew the CTO here. So, our CEO asked me to do a guest blog talking about our technology stack. I had some initial ideas about explaining all of the cool toys we get to use. Unfortunately, I could see where that would go, and after realizing how many of our readers would fall asleep at their computers, I realized I couldn’t be too technical. Instead, I decided to try to give a broad overview of the philosophy behind our architecture. After all, philosophy is more exciting than technology, right?
A lot of people, after looking at our product, say, “OK, you guys do apps for video. That’s cool.” Well, yes, it is cool, but it’s also a very limited view of what we’re trying to do with MoPix. At the highest level, we’re trying to solve the problem of digital distribution for content creators; we want self publishing at all levels to become a reality. For us, apps are just one part of that vision. Apps just happen to be near and dear to us, and where a lot of our expertise is, so they were a natural first part of our distribution strategy. But they’re really only the beginning.
In the enterprise world, there are a number of architectural patterns used to deal with the fact that data may be coming from many disparate sources, information probably needs to be consolidated somehow at some point, and data needs to come out again in many different ways. For example, you may have a large enterprise that needs to consolidate orders placed through legacy systems, online stores, emails, etc. Then action needs to be taken, and the resultant outputs could be more emails, links to distribution systems for things like shipping, etc. The point is, you need to deal with many different kinds of inputs and you need to also enable many kinds of outputs. The inputs and outputs in a well designed system shouldn’t know much about each other because if they don’t (if they aren’t “coupled”), you can add whatever inputs or outputs you want.
Imagine one of your inputs is email, as in, a customer emails you an order. One of your outputs is another email confirming the order. If your whole concept of an order is too closely tied to email concepts (“from” is always and only an email address, there’s always a subject, and there’s always a free-form message body), then it’s really hard to, for example, let orders come in by SMS or the web (where’s your “from” address, subject, and body?). If instead, you think of the emails on either side as just inputs and outputs, you can transform the inputs into a normalized representation of an “order”, sort of the Platonic idea of what an order is. You’ve isolated an “order” from the way in which you got it. So now you can accept orders from anything, as long as you have a way of translating that input into your Platonic ideal. And then that Platonic ideal can have anything happen to it you that want. You can send out email confirmations, you can export directly to external purchasing systems, you can pipe it to accounting or data warehousing systems, etc.. The key is, you’ve decoupled inputs and outputs from what it is that you’re actually doing. And once those inputs and outputs are separated from each other like that, you can add or remove them whenever you want.
In many ways, our goals with MoPix are similar. We’ve got a centralized (Platonic ideal) of what “content” is. And we want you to give us that content in whatever way you want, and we want to let you distribute it in whatever way you want. Right now, we’re integrating with things like Dropbox, FTP, and HTTP download to get your video. And getting video is itself a tricky proposition, mainly because the files are so damn big. But at the end of the day, we really don’t care how we got it. We’re not tied to Dropbox, we’re not tied to FTP. We can (and plan to) build additional imports to get video from things like a Vimeo account, Google Drive, direct upload, or whatever else makes it easy to work with large files. Whenever we import your content, we’re alredy translating it into our system’s “ideal” representation.
That allows us to do whatever we want with the outputs. Right now, yes, we’re mainly in the business of distributing your content via iOS apps. As I said earlier, we’re good at apps. It’s a growing market. People understand what they are. But they’re not the only output possible. We’re currently working on our web-based solution, enabling your content to be distributed directly via the web as a digital download. We’ve got plans for other platforms, like Android and Windows Mobile. But that’s really the beginning. One of the hardest things for video content creators to get a handle on is the wide array of distribution options. With the right outputs, we can make that easier. At the end of the day, we don’t care if we’re helping you sell your content as an app, or helping you get it into the iTunes Video Store with iTunes Extras support, or helping you get it onto Netflix. Those are all outputs to us, and we’re specifically designing our system to make those outputs possible from a single source of your content.
Years ago when I was looking into studying Aikido, I stumbled across an explanation of what Aikido was. The author of this website was writing about what kinds of situations Aikido would specifically prepare you for. He said that it wouldn’t necessarily prepare you for any one specific situation, as in a lot of martial arts. So much of Aikido is about awareness of the situation and adaptivity. Yes, it can train you to deal with a guy with a knife. Yes, it can train you to deal with multiple attackers. When its lessons were truly learned well, he wrote, you could also deal with a hypothetical 8-legged space octopus creature and still account well for yourself.
So now that you understand our architectural philosophy, think of MoPix as something that can help you conquer the 8-legged space octopus creature that is the world of digital video distribution.