Skip to main content

Socketmaster: Zero Downtime Restart for Your Apps

Hi developers!

I have just released yet another Open-Source project. This was gracefully sponsored by PandaStream, so I thought I might as well post here. Let me introduce you to socketmaster.

In the tradition of UNIX, socketmaster does just one thing but does it well; it helps your app to restart without losing or refusing a single connection. socketmaster is the gatekeeper, keeping your sockets warm under the fire of restarts (christmas starts sooner every year isn’t it ? ho ho ho!).

To port your app to socketmaster you just need to do two things:

  1. Change the startup code to open the file-descriptor 3 as a socket listener.
  2. Gracefully shutdown on SIGHUP.


Customer Spotlight: Artplayer

At Panda, we have some truly great customers and are always interested to see how they’re integrating Panda with their apps and sites.

Artplayer is a unique online video platform aiming to showcase the best video content from the UK arts industry. In addition to a desktop and mobile web presence, Artplayer offers mobile apps, exclusive editorial content, access to major UK Arts organisations and a range of video services including production and training.


Efficient Realtime Dashboard with Pusher WebHooks

Today we want to talk about a code update we have made on Panda, taking advantage of the Pusher web hooksreleased a few days ago.

This is a fantastic feature for us as it has considerably reduced the number of api calls made to Pusher, saving us bandwidth and money.

One of the great features of Panda is it’s real time dashboard. Panda can display the new encoding jobs, their progress, and your stats instantly with no effort. Thanks to Pusher, implementing this was really easy.

At such a scale the right design for your software is to separate your app into smaller apps, small apis and workers. In our case, the encoding dashboard is completely separated from the api but they share the same Pusher app. When an event occurs on Panda (like a job progress), the api triggers a Pusher Event and the web app reflect that change immediately.


Introducing stacks for advanced profiles

Friday we realeased a feature that we called Stacks. A stack is an encoding environment including a set of encoding tools and commands. This feature will provide us a way to upgrade ffmpeg without breaking your encoding commands.

The current stack, called 'corepack-1' is still the one used by default. The new stack we are introducing is called 'corepack-2' and brings speed plus lots of new formats and codecs.

If you are using some advanced profiles, you should consider:

  • using a Preset. They are easier to maintain and we provided lots of encoding options directly using either the web dashboard or the api.
    You can find the full documentation on our website
  • upgrading to the new stack. Your current encoding command might be incompatible with the new stack but it should be fairly easy to update it.
    You can find the full documentation on our website


New features: custom output paths & iOS update

Today we have deployed some very interesting improvements on our platform. Let’s review them all.

Custom output filename paths (store your files in subdirectories!)

Many of you have requested a way to store video inside folders instead of having everything in the root of your bucket. We think we found a nice solution to solve this problem.

When you upload a video there is now a new optional attribute called path_format. It enables you to specify destination and name of a video and it’s encodings.


Status update

It’s time we break the silence !

Since the last post, your host has arrived on the team. I am excited to bring my experience in Video, Linux, and Web development that I gained during the last years at STVS, another amazing company. But for now, let me tell you of the latest updates on the PandaStream platform.

Web interface speedup

After our ruby 1.9 migration, the average page response got divided by two, down to around 350ms. Missing, is the /cloud page that still takes around 1 second to load so that is something we are going to work on next.

Web+Heroku ♥

For the Heroku customers ; you can now access to a specialized version of our interface by logging into Heroku and choosing the Panda Stream Add-on. This can be handy if you want to follow visually the progress of your encoding and get real-time notifications. You can also access it by typing the following command in your console. Enjoy !

$ heroku addons:open pandastream --app your_app_name


Beta version of new Panda gem

We’ve just released a beta version of the new gem for Panda. The gem has an improved interface for accessing the Panda API and makes it much easier to find the right encodings for embedding.

To find the url of an encoding it’s now as simple as this:

video = Panda::Video.find("1234")
mp4_encoding = video.encodings.find_by_profile_name("h264")
=> ""

Read the docs and download the branch from Github and let us know what you think!

Once it’s out of beta we will make this the default version (the old Panda style of using API urls still works) and also update the Rails docs.