• PHP SDK

    • Posted on 18. Dec 2010 at 18:17 UTC by Felix Geisendörfer
    • Read Comments

    When we designed the transloadit api, we tried to keep things simple.

    This way people were able to integrate transloadit uploading with just a few lines of code in their favorite scripting language, no library required.

    However, as soon as you try to do things like uploading existing files from your server, things get a little trickier.

    For this reason we are now releasing our shiny new PHP SDK. The box includes:

    • A library that lets you create transloadit forms and server side requests with ease
    • Detailed examples and API Documentation
    • A decent suite of tests

    Of course we feel very guilty for not having a great Ruby, Python and Java SDK yet. Those are in the planning and should arrive in the near future.

    --fg

    Demo time!

    • Posted on 16. Dec 2010 at 18:00 UTC by Felix Geisendörfer
    • Read Comments

    Everybody knows how dreadful it is to create an account for a new service you want to try out. So to make things easier for new transloaders, we just added a new demo section where you can try a wide range of encoding scenarios before you sign up.

    Even better, the demos are also a nice addition to our documentation for those of you who prefer actual examples over abstract descriptions.

    Now go and have some fun with the demos!

    --fg

    Advanced use conditions for assembly steps

    • Posted on 29. Nov 2010 at 20:21 UTC by Felix Geisendörfer
    • Read Comments

    A frequently requested feature is to allow more flexibility when it comes to choosing how different upload files are processed.

    At this point our robots are already smart enough to not touch files they don't know how to handle, so a video robot would silently ignore image files. This makes it really easy to use the same assembly for upload forms where the user is free to upload whatever media file he desires.

    However, of course there are other conditions than file type that may lead to a different treatment of the file. As of today we're adding the first new condition which allows you to execute a given step based on the name of the form field the file was uploaded with.

    Usage is as simple as:

    {
      "steps": {
        "encode": {
          "robot": "/video/encode",
          "use": {
            "fields": ["raw_video"]
          }
        },
        "store": {
          "robot": "/s3/store",
          "use": [":original", "encode"]
        }
      }
    }
    

    In this assembly, a video would only be encoded if it was uploaded using the field name "raw_video". Otherwise the video is taken as-is and directly uploaded to S3.

    Going forward we are planning to add more conditions that will also allow you to make your steps choose their input using the meta data of the incoming file.

    --fg

    PS: We have also updated the docs.

    Auto rotation for iphone videos

    • Posted on 19. Nov 2010 at 15:26 UTC by Felix Geisendörfer
    • Read Comments

    We are happy to announce our newly baked support for auto rotating iphone video uploads.

    By default the iphone always records and saves videos in landscape format. This causes rotation problems if the recorded video was shot in portrait format and the video player (or in our case encoder) is not aware of it.

    Of course this is exactly one of the headaches we are trying to solve for our customers. As of today, we have taken care of it, and there is nothing you need to change on your end - everything will just work automatically.

    However, there are still cameras out there that don't record the orientation of the video. To deal with those, we have added a new rotate parameter to our /video/encode robot which you can read about in our docs.

    As always, we are happy to listen to your feedback - so if you have more ideas or suggestions, please get in touch. Oh, and stay tuned for some significantly cooler features to be announced soon!

    --fg

    Support for Rackspace Cloud Files

    • Posted on 11. Nov 2010 at 13:43 UTC by Felix Geisendörfer
    • Read Comments

    Today we're happy to announce the latest addition to our service, please welcome the /cloudfiles/store robot!

    As you can see in the docs, we also handle the retrieval of your container's CDN url automatically, so integrating this robot should simply be a matter of creating a new template.

    We are also working on the integration of more storage options, so stay tuned for more announcements.

    --fg

    PS: If you're wondering, yes, a cute new robot image is on the way.

    Does your image scaling software suck?

    • Posted on 15. Oct 2010 at 12:10 UTC by Felix Geisendörfer
    • Read Comments

    Most image scaling software has a flaw that more or less impacts the quality of the results. For all details, you should read this article.

    To test if your software is suffering from this flaw, take this exploit image:

    Original Image

    When you resize it to 50%, you will probably see this:

    Original Image

    However, if your software is working correctly, you should see:

    Original Image

    Up until today transloadit was suffering from the mentioned flaw, but we have fixed it. If you want to take advantage of the new gamma correction, simply specify correctGamma: true in your image resize assembly step. Check the docs for more information.

    --fg

    HAProxy logging

    • Posted on 12. Aug 2010 at 08:26 UTC by Kevin van Zonneveld
    • Read Comments

    At transloadit we use HAProxy "The Reliable, High Performance TCP/HTTP Load Balancer" so that we can offer different services on 1 port. For instance, depending on the hostname, a requests to port 80 can be routed to either nodejs (in case of api.transloadit.com), or nginx (in case of www.transloadit.com).
    HAProxy has been good to us and setting it up was a breeze. But getting HAProxy to log on Ubuntu Lucid was harder than I thought. All of the tutorials I found either didn't cover logging, or had deprecated information on it.
    Google suddenly stopped being my friend.

    HAProxy wants to log

    For performance & maintenance reasons HAProxy doesn't log directly to files. Instead it wants to log against a syslog server. This is a separate Linux daemon that most servers are equiped with already, but HAProxy requires it to listen on UDP port 514, and usually that's not enabled.

    A syslog server:

    • receives log entries
    • decides what's interesting
    • writes it to disk in a highly optimized way

    these aspect can all be configured by you.

    If we look at the top of your current /etc/haproxy/haproxy.cfg file, we may find something like:

    global
            maxconn         10000
            ulimit-n        65536
            log             127.0.0.1       local0
            log             127.0.0.1       local1 notice
    

    As you can see 127.0.0.1 is where it will try to find a syslog server to log to. On Unbuntu Lucid the default syslog daemon is rsyslogd, so let's make it accept HAProxy log entries.

    rsyslogd welcomes HAProxy

    Most google hits I found on logging with HAProxy told me to change the /etc/default/rsyslog file, but that's completely ignored with the new upstart system. And even if you make it adhere the defaults file (yep, I tried), it will make rsyslogd go down in compatibility mode. Which is not only a shame, but also unnecessary as it turns out.

    Using these config lines:

    $ModLoad imudp
    $UDPServerRun 514
    

    rsyslogd will open up it's UDP port.

    Where to put these lines you say? Well, if HAProxy is the only service you need the UDP syslog port for, you could put/uncomment the lot in just one /etc/rsyslog.d/haproxy.conf file:

    # .. otherwise consider putting these two in /etc/rsyslog.conf instead:
    $ModLoad imudp
    $UDPServerRun 514
    
    # ..and in any case, put these two in /etc/rsyslog.d/haproxy.conf:
    local0.* -/var/log/haproxy_0.log
    local1.* -/var/log/haproxy_1.log
    

    Now do a quick:

    restart rsyslog
    

    And you're done. Check for HAProxy logs in:

    tail -f /var/log/haproxy*.log
    

    And don't forget to tweak the debug level in /etc/haproxy/haproxy.cfg.

    Happy logging!

    --kvz

    Our jQuery plugin is now open source!

    • Posted on 22. Jul 2010 at 18:37 UTC by Felix Geisendörfer
    • Read Comments

    We are happy to let you know that we have open-sourced our jQuery plugin on Github.

    transloadit/jquery-sdk

    While doing that, we also added a very cool new feature: events for uploads and results. This means you can now give the jQuery plugin an onUpload or onResult callback, and it will let you know about your file uploads in realtime! A demo will be online soon!

    We are now also compiling the plugin using the google closure compiler, you might get a kick out of our Makefile.

    To use the new plugin version, make source you include it from assets.transloadit.com.

    --fg

    New: Free plan

    • Posted on 19. Jul 2010 at 15:53 UTC by Felix Geisendörfer
    • Read Comments

    You wanted it, you got it. We are happy to present to you:

    Feel It - our free plan including 1 GB usage!

    While your wallet remains entirely untouched with this plan, we do require a little love in return, namely embedding our badge.

    --fg

    New: iPhone SDK

    • Posted on 18. Jul 2010 at 13:29 UTC by Felix Geisendörfer
    • Read Comments

    We have been hard at work this weekend, and one of the first things to come out of it is our shiny new Transloadit iPhone SDK:

    The SDK contains a simple example project, as well as a stand-alone TransloaditRequest class you can use in your apps. Images are handled just as well as videos, and the project also uses threading to make sure your users have a great experience with no UI freezes.

    A huge thanks goes to Ben Copsey for creating the fantastic ASIHttpRequest library we are using.

    The iPhone SDK is the first one we are releasing, because it is the most challenging to roll yourself. Full featured examples for PHP and Ruby will show up in our Github account next.

    --fg

Page: 1 | 2 | 3 | 4 | 5 | 6