I think I have finally, really arrived.
I’ve been doing contract work for a company in Provo that is launching a
new website called YoManSports.com, which is
in beta right now. At first glance, the site may appear to be a “YouTube
for sports,” but it so much more than that. The concept is centered around video
sharing, but includes familiar social networking elements you’d find on
sites like Facebook or MySpace. In addition, there are several applications
within the site that are sports-related — things like competition
bracketing, scorecards, and groups. Perhaps the coolest feature that rounds
out the list is the broadcast feature. This lets a person go to a sporting
event with a video camera, even something as simple as a USB webcam, and
set up a live web broadcast that anyone with a web browser can watch. The
person managing the broadcast can mix prerecorded video, pictures, and
even live video from other users into the broadcast. There’s even a news
ticker for embedding clickable URL links into the broadcast. It’s pretty
cool stuff.
Now, I said at the beginning of this post that I have arrived because we’ve
been asked by management to blog regularly about the site and what we’re
doing with it as part of our marketing plan. So, yeah, it’s cool to be able
to do this and not be wasting my time at work.
My job has been designing and building the server architecture that sits
behind the scenes and makes it all work. I was brought in late 2008 when
the site was pretty much in a prototype stage. All the code was running on
a single server and it really wasn’t designed to scale beyond that one
server. So, one of the first things I did was figured out what we’d need to
do split things like streaming video, web services, and database services
onto their own dedicated servers.
After that, I went through and figured out how we were going to accomodate
loads higher than we could with individual servers. In a nutshell: load
balancing. That has now been implemented.
Another thing I’ve had a big hand in is offloaded encoding and conversion.
The developers had created routines to do all the video encoding in PHP on
the frontend of the website. Of course, doing video encoding on the same
server Apache is running on can be detrimental to the experience of other
website users. I developed a distributed encoding system that handles all
the video conversion and encoding on a separate set of servers. I did it
with Perl, of course.
I’m pleased with the technology being used on the site. I’m not a fan of
PHP, but it’s doing the job well for frontend development. We’re making use
of a lot of open source technology in dealing with videos. For example, all
our transcoding is being done with the formidable
FFMPEG software along with libraries like
x264 and
FAAC.
We’re leveraging Flash pretty heavily pretty heavily to make the site work
so it’s fortunate that Flash support has nearly ceased being a problem for
cross-platform compatibility. YoManSports.com works almost seamlessly across
Windows, Mac OS, and Linux.
Watch this space for more info to come.