Today I want to describe a few aspects of my current freetime coding project. It’s a small application (of course written in Ruby on Rails) that provides basic functionality for a self hosted video plattform. I havn’t found a good name for it yet therefore I’m using the codename FooTube until I have a better name – the similarity to any likely named sites is sheer coincidence ;).
To be honest, I dont realy need such a kind of software but it came into my mind as I was thinking about what would be a small challenge in which I could use some new technologies and build something at least for self-improvement. Furthermore on my research about related projects I haven’t found very much Ruby or even Rails based.
The three challenges
1. Use some (for me) unfamiliar technologies
Because I wanted to try some new stuff I’ve decided to use a NoSQL database instead of my usual standard MySQL instance with ActiveRecord. I’ve choosen the combination of MongoDB and Mongoid as database and ORM layer because they seem very good supported and most widespread in the Rails community and the chance to get support by other gems is very likely. The first steps were a bit uncommon because you won’t belive what’s all part of and provided by ActiveRecord and has to be done different with Mongoid and also the first gems I tried to use weren’t compatible with mogoid (for example I had to use Carrierwave instead of Paperclip for file attachments).
2. Fiddle with some interesting stuff
As I dont like to just write a stupid application that shows the uploaded video in someone bad format in a ugly flash player I intended to lern a bit more about video formats and do some research what formats other portals provide and use a nice HTML5 video player to at least have a good experience on modern computers with good operating systems and browsers.
3. Run the application on an exotic system
Because the recent release of FreeBSD 10 and a very interessting video series by Hukl (part of the FreakShow podcast I listen regularity) I decided to use a FreeBSD based system instead of the more common Linux based one. One good reason for this is the possability to use the current versions of all the software using the ports-system.
I’m running the system for testing on my little homeserver with the following setup:
- FreeBSD 10 with ZFS
- Ruby 2.1.0, Rails 4.0.2 (current stables)
- MongoDB 2.4.9
- Redis 2.8.4 (for storing the background tasks using the sidekiq gem)
Unfortunately I missed to put the everything in a own bsd-jail but perhaps I will change this in the future.
Of course the project is available as open source on GitHub.