<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>http://blog.pandastream.com/</title><generator>Tumblr (3.0; @pandastream-blog)</generator><link>http://blog.pandastream.com/</link><item><title>Affordable SSL CDN with AppEngine</title><description>&lt;p&gt;At Panda we just switched our CDN from CloudFront to AppEngine to be
able to support SSL on our cdn.pandastream.com domain. It means that for
the uploader script can use the new URL:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script src="//cdn.pandastream.com/u/1.4/jquery.panda-uploader.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;instead of:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script src="//d21qbsp9m249bi.cloudfront.net/u/1.4/jquery.panda-uploader.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It&amp;#8217;s a detail. But at Panda we like to take care of details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://google.com/appengine"&gt;AppEngine&lt;/a&gt; is primarily meant to host applications but a lesser known
feature is that it uses Google&amp;#8217;s CDN to serve static assets. Once you
have your app up and running you can tie it to a &lt;a href="https://google.com/apps"&gt;Google Apps&lt;/a&gt;
domain and then add a SSL certificate to it.&lt;/p&gt;

&lt;p&gt;At the moment the edge traffic is free on appengine so all this will
just cost you the price of the VIP that&amp;#8217;s used for SSL: $39 / month.&lt;/p&gt;

&lt;p&gt;All this together makes it a great combo. In comparison, CloudFrount
doesn&amp;#8217;t support custom SSL certificates and Akamai asks for $1500.- just
for the setup. The cheapest we found until now was &lt;a href="http://maxcdn.com"&gt;MaxCDN&lt;/a&gt; that charges
$39.- / zone / month.&lt;/p&gt;

&lt;h2&gt;Create your CDN&lt;/h2&gt;

&lt;p&gt;Sign up for &lt;a href="http://google.com/appengine"&gt;appengine&lt;/a&gt; and create a new project.&lt;/p&gt;

&lt;p&gt;Install the app-engine toolkit on your machine. On my mac: &lt;code&gt;brew install google-app-engine&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create a new local folder and add an &amp;#8220;app.yaml&amp;#8221; in it:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;---
application: your-cdn
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /u
  static_dir: u
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then put some files in the u/ sub-folder. You might want to make it a git
repo too but it&amp;#8217;s up to you.&lt;/p&gt;

&lt;p&gt;Push your code: &lt;code&gt;appcfg.py update .&lt;/code&gt; (add &amp;#8212;oauth2 if you use 2-factor
auth)&lt;/p&gt;

&lt;p&gt;Now your content should be available at
&lt;a href="http://your-cdn.appspot.com/u/..."&gt;http://your-cdn.appspot.com/u/&amp;#8230;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Custom domain and SSL&lt;/h2&gt;

&lt;p&gt;You need to have &lt;a href="http://google.com/apps"&gt;Google Apps&lt;/a&gt; setup for that
domain and billing setup to pay for the SSL options. And a SSL certificate.
You can obtain free SSL certificates at &lt;a href="https://startssl.com"&gt;StartSSL&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First you need to tie the app to the domain. For that go to the
&amp;#8220;Application settings&amp;#8221;
page in your app and click to &amp;#8220;Add domain&amp;#8221;. Follow the instructions.&lt;/p&gt;

&lt;p&gt;For SSL, the VIP option (you want this one if you&amp;#8217;re targeting IE8 or
less) is only available after the first charge on the credit card. To
generate some billing sum you can install the SNI version in the mean-time.&lt;/p&gt;

&lt;p&gt;Back in a month, create a VIP, tie to domain. Done.&lt;/p&gt;

&lt;p&gt;Enjoy,
  Jonas&lt;/p&gt;</description><link>http://blog.pandastream.com/post/45830428506</link><guid>http://blog.pandastream.com/post/45830428506</guid><pubDate>Wed, 20 Mar 2013 12:05:00 +0000</pubDate><category>howto</category></item><item><title>socketmaster: Zero Downtime Restart for Your Apps</title><description>&lt;p&gt;Hi developers!&lt;/p&gt;

&lt;p&gt;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 &lt;a href="http://pandastream.github.com/socketmaster"&gt;socketmaster&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;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&amp;#8217;t it&amp;#160;? ho ho ho!).&lt;/p&gt;

&lt;p&gt;To port your app to socketmaster you just need to do two things:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Change the startup code to open the file-descriptor 3 as a socket listener.&lt;/li&gt;
&lt;li&gt;Gracefully shutdown on SIGHUP.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;socketmaster will then take care of the rest for you. To get a better example of how it works, the example folder in the project&amp;#8217;s source tree has a Go and ruby example as well as an upstart script for you: &lt;a href="https://github.com/pandastream/socketmaster/tree/master/examples"&gt;https://github.com/pandastream/socketmaster/tree/master/examples&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;The tool is written in &lt;a href="http://golang.org"&gt;Go&lt;/a&gt; which allowed me to shorten my development time considerably compared to C. Go allowed me to tap into the lower-level POSIX constructs while also having access to handy higher-level abstractions. For you, it means that it can easily be cross-compiled and distributed in a binary form.&lt;/p&gt;

&lt;p&gt;Panda is now using socketmaster in production. Needless to say, you can count on it to be supported. If you find any bugs, want to contribute or send pull-requests, just get in touch and I&amp;#8217;ll respond quickly.&lt;/p&gt;

&lt;p&gt;Cheers,
 &lt;a href="http://twitter.com/zimbatm"&gt;Jonas&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; Are you a hacker looking for a job in London&amp;#160;? We&amp;#8217;d like to meet you and make you part of our team. &lt;a href="http://pandastream.com/jobs"&gt;http://pandastream.com/jobs&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.pandastream.com/post/36203579328</link><guid>http://blog.pandastream.com/post/36203579328</guid><pubDate>Wed, 21 Nov 2012 10:56:27 +0000</pubDate></item><item><title>You're smart ! We're hiring.</title><description>&lt;p&gt;Panda makes it easy for people to transcode their videos into any format, fast. We’re a profitable SaaS business, now part of &lt;a href="http://mediacore.com"&gt;MediaCore&lt;/a&gt; (working to transform online video learning). A large and growing number of customers depend on our platform on a daily basis to transcode large volumes of video. We’ve got big plans to push the platform forward with new encoding technologies and partnerships. &lt;em&gt;With your help we can do it faster and better.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We need someone special. Someone who lives and breathes new technology. The platform is primarily Ruby and FFmpeg, along with Redis, Beanstalkd, EventMachine, and is deployed within AWS. We need someone who will be at ease with this stack, and also someone who can be relied on to manage it all within a production environment. Having a background in video transcoding is obviously a big plus&amp;#160;!&lt;/p&gt;

&lt;p&gt;We’re looking for someone to join us full time in London, UK.&lt;/p&gt;

&lt;p&gt;You will be working in a beautiful offices during flexible work hours. We provide you with the setup you need to do great work (MacBook, CinemaDisplay, great chair). We also have a fantastic remote team in Victoria BC, Canada that brings the opportunity for travel and a great company culture overall. You can make a difference, in our team, and on a wider scale by contributing to related Open-Source projects.&lt;/p&gt;

&lt;p&gt;To apply, let us know about yourself, your past experience and what you see yourself contributing to our platform. Show us what you’re passionate about.&lt;/p&gt;

&lt;p&gt;Feel free to ask us if you have any questions about the position.&lt;/p&gt;

&lt;p&gt;Contact: &lt;a href="mailto:jobs@pandastream.com"&gt;jobs@pandastream.com&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.pandastream.com/post/32735916576</link><guid>http://blog.pandastream.com/post/32735916576</guid><pubDate>Tue, 02 Oct 2012 15:29:30 +0100</pubDate></item><item><title>Customer Spotlight: Artplayer</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_mawt2ymzWe1r7w530.png" alt="ArtPlayer.tv"/&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="http://www.artplayer.tv"&gt;Artplayer&lt;/a&gt; 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.&lt;/p&gt;

&lt;p&gt;Chris Nolan of the &lt;a href="http://www.fact.co.uk/"&gt;Foundation for Art and Creative Technology (FACT)&lt;/a&gt; was kind enough to take some time to detail why Artplayer chose Panda and how they’ve integrated it into their platform:&lt;/p&gt;

&lt;p&gt;“For a previous project we wrote our own encoding queue using Ruby on Rails with an ffmpeg backend. So, we learnt the hard way that encoding videos in a high-availability site is a very difficult technical challenge. The main difficulties we encountered were managing the queue during peak periods - especially controlling concurrent jobs - and the impact that would have on CPU and resource usage. For Artplayer we decided to look into alternative ways to do this and it soon became clear that this is a service we needed to be handled by the cloud.&lt;/p&gt;

&lt;p&gt;I trialed a number of services including Heywatch and Ankoder, both of which are very capable - but the ease of integration with Panda using the supplied libraries won me over. Within less than 30 minutes I’d created a fully-functioning test implementation of Panda and it became immediately clear that it would both provide all the features we require whilst being able to easily integrate with our site’s workflow.&lt;/p&gt;

&lt;p&gt;Today, Panda handles all of Artplayer’s video encoding. Each video is encoded into three profiles, providing us with a range of bitrates for HD, SD and mobile encoded videos, which allows us to reach the majority of today’s connected devices. We use jwPlayer to allow playback on both HTML5 and Flash enabled devices.&lt;/p&gt;

&lt;p&gt;Integration is facilitated through Panda’s PHP library, which provides API access to Panda, while the Panda HTML5/Flash smart widget provides a widely compatible and simple upload process. The entire integration is transparent to the users who always remain on the Artplayer site. Our videos are passed from Panda to Amazon S3 where we use Amazon’s Cloudfront Content Delivery Network to provide advanced streaming of videos to our visitors.&lt;/p&gt;

&lt;p&gt;Another strength of Panda is the API, which strikes the difficult-to-achieve perfect balance between being feature-rich and simple to use. Additionally, Panda’s admin interface is excellent, and when I’ve needed their support they have always been available and have been exceptional in helping to answer my questions and resolve any issues we encountered.&lt;/p&gt;

&lt;p&gt;We’ve now been using Panda for over 12 months in our pilot and live sites and are really happy with the service.”&lt;/p&gt;

&lt;p&gt;Thanks for the kind words Chris Nolan.&lt;/p&gt;</description><link>http://blog.pandastream.com/post/32321252580</link><guid>http://blog.pandastream.com/post/32321252580</guid><pubDate>Wed, 26 Sep 2012 10:59:58 +0100</pubDate></item><item><title>PandaStream + MediaCore</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m8q5cyy1MR1r7w530.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;We&amp;#8217;re excited to officially announce that PandaStream has been acquired by &lt;a href="http://mediacore.com"&gt;MediaCore&lt;/a&gt;. Delivering the best online video experience has always been important to us and joining the amazing team at MediaCore will allow us to continue to pursue this goal with greater resources and a secure future.&lt;/p&gt;

&lt;p&gt;We believe video should be a seamless experience for everyone involved, from the content creator to the audience. Working with MediaCore will allow us to address the whole process&amp;#8212;from upload to playback&amp;#8212;in a way that will not only provide a better experience overall, but also completely transform the way millions of people learn on a daily basis.&lt;/p&gt;

&lt;p&gt;Our customers are still our number one priority, and always will be. You can be sure we will continue to innovate and operate our successful video encoding platform indefinitely. We&amp;#8217;re extremely excited to see what the future has in store for us and to work with MediaCore to revolutionize the way the world uses video.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;The PandaStream Team&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.pandastream.com/post/29415635981</link><guid>http://blog.pandastream.com/post/29415635981</guid><pubDate>Tue, 14 Aug 2012 17:58:48 +0100</pubDate></item><item><title>New design

Today we’re excited to announce the launch of...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m4wg9iCDkx1rpyxqxo1_r1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;h1&gt;New design&lt;/h1&gt;

&lt;p&gt;Today we’re excited to announce the launch of our beautiful new site. Check it out here: &lt;a href="http://www.pandastream.com"&gt;http://www.pandastream.com&lt;/a&gt;. We’ve been working hard on this over the past several weeks, so we do hope you enjoy the finished product as much as we do.&lt;/p&gt;

&lt;h1&gt;Simplified pricing&lt;/h1&gt;

&lt;p&gt;Along with our new site, we have simplified the pricing down to 4 plans which we feel better reflect the usage patterns we have seen over the years. You can read more about the new plans here: &lt;a href="http://www.pandastream.com/pricing-signup"&gt;http://www.pandastream.com/pricing-signup&lt;/a&gt; .&lt;/p&gt;

&lt;h1&gt;Transition for existing customers&lt;/h1&gt;

&lt;p&gt;If you are on our free sandbox plan, nothing has changed. If you are currently on a paid encoder plan, there is no immediate action you must take and you will be able to continue on your current plan indefinitely. However, should you wish you switch to one of the new plans, you can do so at any time by logging-in and heading to the ‘Plans &amp; Billing’ section.&lt;/p&gt;

&lt;p&gt;We would like to thank all of our customers for their continued support over the years. As always, if you have any questions please don’t hesitate emailing (&lt;a href="mailto:info@pandastream.com"&gt;info@pandastream.com&lt;/a&gt;) or sending us a tweet (&lt;a href="http://twitter.com/pandastream"&gt;@pandastream&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Best,&lt;/p&gt;

&lt;p&gt;The Panda Team.&lt;/p&gt;</description><link>http://blog.pandastream.com/post/24138783587</link><guid>http://blog.pandastream.com/post/24138783587</guid><pubDate>Thu, 31 May 2012 19:23:00 +0100</pubDate></item><item><title>Efficient Realtime Dashboard with Pusher WebHooks</title><description>&lt;p&gt;Today we want to talk about a code update we have made on Panda, taking advantage of the &lt;a href="http://blog.pusher.com/2012/1/25/webhooks"&gt;Pusher web hooks&lt;/a&gt; released a few days ago.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;One of the great features of Panda is it&amp;#8217;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Before the release, we were facing one problem: we were sending a lot of unnecessary api calls to Pusher.&lt;/p&gt;

&lt;p&gt;Panda&amp;#8217;s api has no interaction with the user. It only communicates through private and public apis.
This means it doesn&amp;#8217;t know whether someone is listening to the Pusher channel. We are then pushing thousands of messages even if nobody is looking at the dashboard. 
The api triggers messages, the web app listens. This is not a two way messaging.&lt;/p&gt;

&lt;p&gt;Now with &lt;strong&gt;Pusher Web Hooks&lt;/strong&gt;, our api is able to know when at least one person is looking at the dashboard. As each customer uses a different private channel, that solves our problem.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lzfj05neD51r7w530.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lzfj0cDe3M1r7w530.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Our Pusher dashboard is self-explanatory.&lt;/p&gt;

&lt;p&gt;Now we would like to show you how we implemented it.
First we need to setup an endpoint for the web hooks. Let&amp;#8217;s make a small Sinatra app and use the &lt;code&gt;Pusher::WebHook&lt;/code&gt; object, which comes with the new gem.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class PusherWebHooks &amp;lt; Sinatra::Base

    post '/pusher' do
        wh = Pusher::WebHook.new(request)
        if wh.valid?
            wh.events.each do |event|
            case event["name"]
                when "channel_occupied"
                    channel_occupied(event["channel"])
                when "channel_vacated"
                    channel_vacated(event["channel"])
                end
            end
        else
            status 401
        end

        return
    end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We can setup our notification url inside the Pusher dashboard and we are ready to receive web hooks.&lt;/p&gt;

&lt;p&gt;Because splitting your code is the right thing to do, Panda&amp;#8217;s encoders are not communicating directly from the api neither. So we somehow need to send this information to them. 
To do that, we will use &lt;code&gt;Redis Sets&lt;/code&gt; as we already use Redis to distribute messages across our farm of encoders.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;def channel_occupied(channel_name)
  redis.sadd("pusher:channels", channel_name)
end

def channel_vacated(channel_name)
  redis.srem("pusher:channels", channel_name)
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now our Panda encoders can use this information to check whether the channel we are sending the message to is occupied.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; def push_websocket(channel_name, event_name, data)
    if redis.sismember("pusher:channels", channel_name)
      Pusher[channel_name].trigger!(event_name, data)
      true
    else
      false
    end
 end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Redis commands on sets are O(1) operations which makes the design very efficient.&lt;/p&gt;

&lt;p&gt;How simple is that? More information is available inside the &lt;a href="http://pusher.com/docs/webhooks"&gt;Pusher docs&lt;/a&gt;.  Now you have no excuse not to implement Pusher WebHooks. :)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vivien Schilis&lt;/em&gt;&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17652464468</link><guid>http://blog.pandastream.com/post/17652464468</guid><pubDate>Wed, 15 Feb 2012 10:38:00 +0000</pubDate></item><item><title>Introducing stacks for advanced profiles</title><description>&lt;p&gt;Friday we realeased a feature that we called &lt;strong&gt;Stacks&lt;/strong&gt;.
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.&lt;/p&gt;

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

&lt;p&gt;If you are using some advanced profiles, you should consider:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;using a Preset. They are easier to maintain and we provided lots of encoding options directly using either the web dashboard or the api.&lt;br/&gt;
You can find the full &lt;a href="http://www.pandastream.com/docs/presets#advanced_preset"&gt;documentation on our website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;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.&lt;br/&gt;
You can find the full &lt;a href="http://www.pandastream.com/docs/encoding_profiles"&gt;documentation on our website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Here is an example on how to migrate your profile to the new stack using Ruby.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ rails c
profile = Panda::Profile.find '12345'

profile.command 
&amp;gt; "ffmpeg06 -i $input_file$ -vcodec libx264 -acodec libfaac -vb $video_bitrate$k -ab $audio_bitrate$k -y $output_file$"

profile.command = "ffmpeg -i $input_file$ -threads 0 -c:v libx264 -c:a libfaac $audio_sample_rate$ $video_quality$ $audio_bitrate$ $fps$ -y $output_file$"
profile.audio_sample_rate = 44100
profile.stack = 'corepack-2'

profile.save!
&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Instructions when upgrading to the new stack:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;code&gt;$audio_bitrate$&lt;/code&gt; and &lt;code&gt;$video_bitrate$&lt;/code&gt; return the ffmpeg encoding option instead of the value of the bitrate.&lt;/li&gt;
&lt;li&gt;Make sure you set &amp;#8216;-threads 0&amp;#8217; in your commands. We run custom ffmpeg binaries on our ec2 instances so no need to put -threads 16, our system is setting the number of threads automatically.&lt;/li&gt;
&lt;li&gt;FFmpeg version is currently 0.10&lt;/li&gt;
&lt;li&gt;ffmpeg06 doesn&amp;#8217;t exist anymore. &lt;/li&gt;
&lt;li&gt;We hightly recommand to add the &lt;code&gt;$audio_sample_rate$&lt;/code&gt; and &lt;code&gt;$fps$&lt;/code&gt; variables in your command. ffmpeg can become quite slow or fail on some videos if those variables are not set 
(no need if you are setting them manually: -ar 44100 -r 25)&lt;/li&gt;
&lt;li&gt;If you have any issues upgrading, remember that a logfile (encoding.path + &amp;#8216;.log&amp;#8217;) is beeing uploaded to your bucket when an encoding job fails.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;In about a month &lt;code&gt;'corepack-2'&lt;/code&gt; will become the default stack for the newly created profiles. Make sure you specify the stack name if you consider running on the old stack.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;POST /profiles.json, {..., 'stack': 'corepack-1'}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Stack on presets cannot be set as they run on their own private stack constantly updated.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vivien Schilis&lt;/em&gt;&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17555272060</link><guid>http://blog.pandastream.com/post/17555272060</guid><pubDate>Mon, 13 Feb 2012 16:41:00 +0000</pubDate></item><item><title>Interview with Panda co-founder</title><description>&lt;p&gt;Last week we had the pleasure of being interviewed by the folks at &lt;a href="http://blog.vidcompare.com/online-video/panda-stream-putting-their-stamp-on-online-video/"&gt;VidCompare&lt;/a&gt;. Head over &lt;a href="http://blog.vidcompare.com/online-video/panda-stream-putting-their-stamp-on-online-video/"&gt;here&lt;/a&gt; to read the full interview where I speak about what got us to where we are and what the future holds for Panda!&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17554352479</link><guid>http://blog.pandastream.com/post/17554352479</guid><pubDate>Fri, 15 Jul 2011 00:00:00 +0100</pubDate></item><item><title>Status update</title><description>&lt;p&gt;It’s time we break the silence&amp;#160;!&lt;/p&gt;

&lt;p&gt;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 &lt;a href="http://stvs.ch"&gt;STVS&lt;/a&gt;, another amazing company. But for now, let me tell you of the latest updates on the PandaStream platform.&lt;/p&gt;

&lt;h2&gt;Web interface speedup&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;Web+Heroku ♥&lt;/h2&gt;

&lt;p&gt;For the Heroku customers&amp;#160;; 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&amp;#160;!&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ heroku addons:open pandastream --app your_app_name
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lzcazpQmiU1r7w530.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lzcb0kz5RX1r7w530.jpg" alt=""/&gt;&lt;/p&gt;

&lt;h2&gt;Watermarking support for the API&lt;/h2&gt;

&lt;p&gt;Watermark support has been added last week and it works on all video format. I proposed that we follow the CSS absolute element convention for the image positioning and it works like that&amp;#160;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;p = Panda::Profile.find(your_id)
p.watermark_url = "http://www.pandastream.com/images/panda_logo.png”
p.watermark_bottom = 5  # in pixels
p.watermark_right = 5   # in pixels
p.save
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://www.pandastream.com/docs/encoding_profiles#watermarking"&gt;&lt;a href="http://www.pandastream.com/docs/encoding_profiles#watermarking"&gt;http://www.pandastream.com/docs/encoding_profiles#watermarking&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the process, we also added some more fields for the custom presets that might be useful for you&amp;#160;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$max_audio_bitrate$ : keeps the original bitrate until it goes over audio_bitrate
$max_video_bitrate$ : keeps the original bitrate until it goes over video_bitrate
$fps$  : value of the original framerate
$filters$: scale your video considering the `aspect_mode` attribute of your profile and apply watermarking options (only avaiable for ffmpeg06)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://www.pandastream.com/docs/encoding_profiles#variables"&gt;&lt;a href="http://www.pandastream.com/docs/encoding_profiles#variables"&gt;http://www.pandastream.com/docs/encoding_profiles#variables&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;WebM speed-up&lt;/h2&gt;

&lt;p&gt;After we updated our FFmpeg build, we saw almost a double speedup for the WebM encodings. This brings WebM up to speed with the h.264 transcoding. Next, we will publish some encoding speed results for your eyes so that you can compare our platform to our competitors.&lt;/p&gt;

&lt;h2&gt;Uploader CDN&lt;/h2&gt;

&lt;p&gt;v1.3 of the uploaded is now avaible on our CDN for your very convenience. You can link directly to the below url and we take care of the rest. In any case there is a JavaScript bug, we deploy the new version and you have nothing to do. the /1.3 path also guarantees that we won’t push backward-incompatible changes to this version.&lt;/p&gt;

&lt;p&gt;How to use&amp;#160;? Just add the following script to your page and you are ready to go&amp;#160;!&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script 
  src="http://cdn.pandastream.com/u/1.3/jquery.panda-uploader.min.js"
  type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;For more details, check-out the &lt;a href="http://www.pandastream.com/docs/uploading_video"&gt;documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A big props goes to the awesome &lt;a href="https://github.com/ismasan/jbundle"&gt;JBundle&lt;/a&gt; which we use to package and distribute the uploader to the CDN.&lt;/p&gt;

&lt;p&gt;Check it out&amp;#160;: &lt;a href="https://github.com/ismasan/jbundle"&gt;&lt;a href="https://github.com/ismasan/jbundle"&gt;https://github.com/ismasan/jbundle&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To keep you informed on the new platform updates, follow this blog or our twitter account&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17554788284</link><guid>http://blog.pandastream.com/post/17554788284</guid><pubDate>Wed, 01 Jun 2011 00:00:00 +0100</pubDate></item><item><title>New features: custom output paths &amp; iOS update</title><description>&lt;p&gt;Today we have deployed some very interesting improvements on our platform. Let&amp;#8217;s review them all.&lt;/p&gt;

&lt;h2&gt;Custom output filename paths (store your files in subdirectories!)&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;When you upload a video there is now a new optional attribute called &lt;code&gt;path_format&lt;/code&gt;. It enables you to specify destination and name of a video and it&amp;#8217;s encodings.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;path_format&lt;/code&gt; variable is a string representing the complete video path without the extension name. It can be constructed using some provided keywords.&lt;/p&gt;

&lt;p&gt;The better way to explain this is with a few examples (the following examples use the Panda Rubygem version 1.1.0)&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Panda::Video.create(:file =&amp;gt; ..., :path_format =&amp;gt; "my-example/:id")
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will save the output files inside the folder &amp;#8220;my-example/&amp;#8221; and the ID will be used as part of the filename.
Here is the example of the generated files after having encoded the video.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_video_id.flv"&gt;http://yourbucket.s3.amazonaws.com/my-example/_video_id.flv&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_video_id_1.jpg"&gt;http://yourbucket.s3.amazonaws.com/my-example/_video_id_1.jpg&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_encoding_id.mp4"&gt;http://yourbucket.s3.amazonaws.com/my-example/_encoding_id.mp4&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_encoding_id_1.jpg"&gt;http://yourbucket.s3.amazonaws.com/my-example/_encoding_id_1.jpg&lt;/a&gt;&lt;br/&gt;
&amp;#8230;&lt;br/&gt;
&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_encoding_id_7.jpg"&gt;http://yourbucket.s3.amazonaws.com/my-example/_encoding_id_7.jpg&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Panda::Video.create(:file =&amp;gt; ..., :path_format =&amp;gt; "my-example/:id/my_file_name")
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will save the output files inside the folder  &amp;#8220;my-example/&lt;em&gt;id&lt;/em&gt;/&amp;#8221; and the text &lt;code&gt;my_file_name&lt;/code&gt; will be used as part of the filename.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_video_id/my_file_name.flv"&gt;http://yourbucket.s3.amazonaws.com/my-example/_video_id/my_file_name.flv&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_video_id/my_file_name_1.jpg"&gt;http://yourbucket.s3.amazonaws.com/my-example/_video_id/my_file_name_1.jpg&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_encoding_id/my_file_name.mp4"&gt;http://yourbucket.s3.amazonaws.com/my-example/_encoding_id/my_file_name.mp4&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_encoding_id/my_file_name_1.jpg"&gt;http://yourbucket.s3.amazonaws.com/my-example/_encoding_id/my_file_name_1.jpg&lt;/a&gt;&lt;br/&gt;
&amp;#8230;&lt;br/&gt;
&lt;a href="http://yourbucket.s3.amazonaws.com/my-example/_encoding_id/my_file_name_7.jpg"&gt;http://yourbucket.s3.amazonaws.com/my-example/_encoding_id/my_file_name_7.jpg&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;The API provides some other keywords.&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;:id         =&amp;gt; The id of the video or the encoding.
:video_id   =&amp;gt; The id of the video.
:original   =&amp;gt; The original filename of the uploaded video
:date       =&amp;gt; The date the video was uploaded. ('2009-10-09')
:profile    =&amp;gt; The profile name used by the encoding ('original' is used when the file is the original video)
:type       =&amp;gt; The video type, 'original' or 'encodings'
:resolution =&amp;gt; The resolution of the video or the encoding. ('480x340')
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;How should I construct the path_format?&lt;/h3&gt;

&lt;p&gt;You should take care with the way you construct the path_format. It allows you to save your videos in a very simple a flexible way but it&amp;#8217;s up to you ensure uniqueness of the filenames inside your bucket.&lt;/p&gt;

&lt;p&gt;If you create a video with &lt;code&gt;:path_format =&amp;gt; "my-panda-video"&lt;/code&gt; all videos will be called my-panda-video with a different extension (my-panda-video.flv, panda-panda-video.mp4). But this should not be done, because if your original file has the same extension as your encoding profile, the encoding output will override the original video.&lt;/p&gt;

&lt;h4&gt;Some tips&lt;/h4&gt;

&lt;p&gt;The presence of &lt;code&gt;:id&lt;/code&gt; always ensures uniqueness.&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;:video_id&lt;/code&gt; &lt;strong&gt;does not&lt;/strong&gt; ensure uniqueness.&lt;/p&gt;

&lt;p&gt;e.g. &amp;#8220;folder/:video/:type/my-video&amp;#8221; works if you don&amp;#8217;t have two profiles generating two different encoding having the same extension name. Otherwise one is overwritten.&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;:video_id&lt;/code&gt; and &lt;code&gt;:profile&lt;/code&gt; together does ensure the uniqueness if you add profile name to all your profiles.&lt;/p&gt;

&lt;p&gt;e.g. &amp;#8220;folder/:video_id/:profile/my-video&amp;#8221;&lt;/p&gt;

&lt;p&gt;All other keywords are not unique.&lt;/p&gt;

&lt;h3&gt;How do I download my encodings now?&lt;/h3&gt;

&lt;p&gt;The API returns a new variable when asking for the properties of a video or encoding called &amp;#8220;path&amp;#8221;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;GET /encodings/12323.json
{
  "id":"1234567890"
  "extname": ".mp4"
  "path": "1234567890"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can now construct the complete path this way (this example is in Ruby):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;encoding = get('/encodings/12323.json')
encoding_url = encoding['path'] + encoding['extname']
screenshot_url = encoding['path'] + "_4.jpg"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If your are Using the Panda Rubygem version 1.1.0 or above, you will be able to get your encodings as before.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;encoding = Panda::Encoding.find '12323'
encoding.url
encoding.screenshots[3]
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;New iOS (iPhone and iPad) preset&lt;/h2&gt;

&lt;p&gt;The iOS preset has been re-worked and improved to make it easier to use. There are two main changes.&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;We will no longer upload the non-segmented .ts files in your bucket.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;extname&lt;/code&gt; of your encodings is now correctly set to .m3u8 instead of .ts. This means that from now on the Panda Gem and other client libraries will return the correct url for this profile.&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Identify profiles by name instead of ID&lt;/h2&gt;

&lt;p&gt;We have found it very convenient to be able to specify which encoding to use when sending a video. Now you can do it even more easily by specifying the profile name instead of its ID.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Panda::Video.create(:file =&amp;gt; ..., :profiles =&amp;gt; 'h264,my-custom-name')
video.encodings.create(:profile_name =&amp;gt; 'ogg')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We hope you find these features useful, and look forward to showing you what else we&amp;#8217;ve got in development shortly.&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17554596919</link><guid>http://blog.pandastream.com/post/17554596919</guid><pubDate>Thu, 21 Oct 2010 00:00:00 +0100</pubDate></item><item><title>We're a 2010 European Readers' Choice Awards nominee</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lzcaowT5AU1r7w530.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.streamingmediaglobal.com/ReadersChoice"&gt;Head over to the site&lt;/a&gt; and vote for your favourite transcoding solution (Panda, of course!). Go on, make some Pandas happy!&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17554562322</link><guid>http://blog.pandastream.com/post/17554562322</guid><pubDate>Thu, 26 Aug 2010 16:19:00 +0100</pubDate></item><item><title>A new uploader powered by HTML5 technology</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lzcaliw9gA1r7w530.jpg" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;File uploads have traditionally had very bad usability on the web. The standard solution was uploading files as part of a form, leaving the user to just wait until the process was done. We could offer barely any feedback of what was going on.&lt;/p&gt;

&lt;p&gt;Several options appeared to make the process more bearable for the user. Some alternatives were client-based, such as using some Flash-powered element like SWFUpload. Other alternatives laid more on the side of the server with a pinch of Ajax. However, there was still the question of why there was no solution that avoided proprietary technology, required minimal hassle OR was free of far-fetched hacks.&lt;/p&gt;

&lt;p&gt;Our current Panda jQuery upload plugin makes use of SWFUpload to allow seamless integration with your existing site and provide a progress bar. As keen advocates of HTML5 video, this hasn&amp;#8217;t always been the ideal solution.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;re on the brink of a HTML5 revolution, and with some ingenuity we&amp;#8217;ve managed to develop a HTML5 powered Ajax uploader with progress. In a similar fashion to new HTML5 video players, there is a seamless fallback to Flash if the user&amp;#8217;s browser doesn&amp;#8217;t support the necessary HTML5 features.&lt;/p&gt;

&lt;p&gt;We think the end result is a great improvement. Please head over to the &lt;a href="http://github.com/newbamboo/panda_uploader/tree/html5"&gt;Github page&lt;/a&gt; to download the source of the beta version. We&amp;#8217;d love to &lt;a href="http://support.pandastream.com/"&gt;hear your feedback&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;d like to learn more about the new HTML5 File API and XMLHttpRequest Level 2. Head over to the New Bamboo blog to &lt;a href="http://blog.new-bamboo.co.uk/2010/7/30/html5-powered-ajax-file-uploads"&gt;read the in depth technical breakdown&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17554393275</link><guid>http://blog.pandastream.com/post/17554393275</guid><pubDate>Fri, 30 Jul 2010 00:00:00 +0100</pubDate></item><item><title>Beta version of new Panda gem</title><description>&lt;p&gt;We&amp;#8217;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.&lt;/p&gt;

&lt;p&gt;To find the url of an encoding it&amp;#8217;s now as simple as this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;video = Panda::Video.find("1234")
mp4_encoding = video.encodings.find_by_profile_name("h264")
mp4_encoding.url
=&amp;gt; "http://s3.amazonaws.com/my_panda_bucket/4567.mp4"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Read the &lt;a href="http://github.com/newbamboo/panda_gem/tree/superpanda"&gt;docs and download the branch from Github&lt;/a&gt; and let us know what you think!&lt;/p&gt;

&lt;p&gt;Once it&amp;#8217;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.&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17554367488</link><guid>http://blog.pandastream.com/post/17554367488</guid><pubDate>Sat, 10 Jul 2010 00:00:00 +0100</pubDate></item><item><title>Panda mention by AWS CTO</title><description>&lt;p&gt;Yesterday we were chuffed to hear that in his talk at Gigaom&amp;#8217;s conference Werner Vogels, Amazon’s CTO gave a shout out to us as an example of an innovative service hosted in the cloud. Checkout the full video over at &lt;a href="http://gigaom.com/2010/06/23/structure-2010-amazons-cto-says-the-cloud-has-arrived/"&gt;Gigaom.com&lt;/a&gt; (our mention is around 25:30).&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17554305308</link><guid>http://blog.pandastream.com/post/17554305308</guid><pubDate>Thu, 24 Jun 2010 00:00:00 +0100</pubDate></item><item><title>Panda goes public today!</title><description>&lt;p&gt;Over the past few months during our private beta we have had some incredibly useful feedback from you all. We’ve all been working hard to incorporate your feedback and polish the service to perfection.&lt;/p&gt;

&lt;p&gt;The service has been successfully processing many thousands of videos a month and several of you have even launched publicly in this time!&lt;/p&gt;

&lt;p&gt;Today we’re pleased to announce we are opening up the beta to the public.&lt;/p&gt;

&lt;p&gt;If you haven’t yet tried it out, there’s no better time than now. We have several easy guides, client libraries and sample application for Rails, PHP and Django: &lt;a href="http://pandastream.com/docs"&gt;&lt;a href="http://pandastream.com/docs"&gt;http://pandastream.com/docs&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s not all though!&lt;/p&gt;

&lt;h1&gt;HTML5 Video&lt;/h1&gt;

&lt;p&gt;There has been a lot of talk about HTML5 video over the past few months. Browsers have been embracing support for the video tag, and although there’s isn’t yet a consensus on the codec of choice, we are now at a stage where HTML5 video can be reliably delivered with a Flash fallback for older browsers. This year we are going to be seeing a lot more in this area and we have several great new things in the pipeline.&lt;/p&gt;

&lt;p&gt;The great news today is that right now you can use Panda to encode video to serve up to your users via HTML5, Flash and iPhone/iPad devices. We’ve written a tutorial which is available here: &lt;a href="http://pandastream.com/docs"&gt;&lt;a href="http://pandastream.com/docs"&gt;http://pandastream.com/docs&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;Python library and Django example app&lt;/h1&gt;

&lt;p&gt;We’ve also released a Python library and Django example application: &lt;a href="http://github.com/newbamboo/panda_client_python"&gt;&lt;a href="http://github.com/newbamboo/panda_client_python"&gt;http://github.com/newbamboo/panda_client_python&lt;/a&gt;&lt;/a&gt; and &lt;a href="http://github.com/newbamboo/panda_example_django"&gt;&lt;a href="http://github.com/newbamboo/panda_example_django"&gt;http://github.com/newbamboo/panda_example_django&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve written a client lib or example app yourself we’d love to hear about it.&lt;/p&gt;

&lt;h1&gt;Codecs&lt;/h1&gt;

&lt;p&gt;We’ve been paying close attention to the types of video that Panda has been processing and have identified several codecs and FFMpeg options which we will be adding in and deploying next week.&lt;/p&gt;

&lt;h1&gt;Private content&lt;/h1&gt;

&lt;p&gt;Amazon has recently released support for private content on CloudFront. Many of you have asked in the past how you can restrict content to certain users. We recently added a permission option to Encoding Clouds, which controls whether the files Panda saves to your S3 bucket are publicly readable or not. If you wish to use this new CloudFront feature, you should set your bucket to private, and then follow the instructions in the Amazon Documention to setup CloudFront correctly.&lt;/p&gt;

&lt;h1&gt;… and finally, thanks!&lt;/h1&gt;

&lt;p&gt;We’d like to thank all users part of the private beta for helping shape this superb product. We’ve got lots more to get on with now and will look forward to keeping you up to date with new features and updates.&lt;/p&gt;

&lt;p&gt;Cheers, Damien and the whole Panda team.&lt;/p&gt;

&lt;p&gt;PS: Don’t forget to checkout &lt;a href="http://pusherapp.com"&gt;Pusherapp&lt;/a&gt; a new hosted realtime web service we launched into beta a few weeks ago.&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17553432932</link><guid>http://blog.pandastream.com/post/17553432932</guid><pubDate>Fri, 21 May 2010 00:00:00 +0100</pubDate></item><item><title>New hosted Panda service begins testing</title><description>&lt;p&gt;Although things have been quiet for some time here, rest assured we have been working hard! We’re currently at the final stages testing the new managed Panda service internally. This service will allow people to make use of Panda without the fuss of managing the software installation and EC2 instances manually. The new version includes an improved API, with more control of the encoding options, and the managed service also allows you to instantly scale the number of encoding workers operating at any time.&lt;/p&gt;

&lt;p&gt;At present the new API will only be available to a selection of beta users using the new managed service. However we are committed to the continuing the open source development of Panda, and next quarter we hope to have the new open source version of the codebase ready to release. This will be most useful for people who wish to use Panda on their own infrastructure.&lt;/p&gt;

&lt;p&gt;If you are interested in being part of the beta, you can sign up for an invite on the homepage. We plan to send out the first invites this week.&lt;/p&gt;</description><link>http://blog.pandastream.com/post/17553369036</link><guid>http://blog.pandastream.com/post/17553369036</guid><pubDate>Mon, 18 Jan 2010 00:00:00 +0000</pubDate></item></channel></rss>
