Happy new year from media.io!

All the best from me for 2012! Let me mention some changes I’ve made to media.io since the last post.

What’s new?

  • You can now share media.io with your friends using ShareThis. Personally, I’m not a fan of 3rd party widgets and I had to clean up ShareThis’ widget to make it less invasive to your privacy and to make it load faster.
  • Korean translation. media.io is now available in Korean.
  • Romanian translation. media.io is now available in Romanian. You might ask yourself “why Korean and Romanian?” – it’s got to do with the love media.io gets from particular countries.
  • Less resampling. To compensate for flaws in oggenc, I was resampling files to 44100 Hz on the old VPS. This has now been removed, resulting in better quality Ogg Vorbis files.
  • Performance improvements. It might seem hard to achieve, but I’ve found one or two tricks that make media.io load even faster worldwide. Every second counts.
  • 100 % uptime in December 2011. While not really a new feature, the server media.io runs on has been rock solid in December with absolutely no downtime measured by Pingdom.

That’s it for now. Enjoy converting your music files!

Media-io-uptime-december-2011

New Audio Formats and more

Yesterday, I’ve released the following changes at media.io:

New Audio Formats

media.io now supports four more audio formats. These weren’t the most requested but they were easy to add.

  • Monkey’s Audio (.ape files)
  • Shorten (.shn files)
  • TwinVQ (.vqf files)
  • TrueAudio (.tta files)

Bug fixes

  • The list of formats was incorrectly shown to mobile devices. The jQuery plugin I use to display the list of audio formats wasn’t really working for mobile devices.
  • Uploads are now ordered correctly. Previously, new uploads would be added to the file list at its end. Now, new uploads are added at the beginning. This should help on the download page.

What else is new?

  • Italian translation. I’ve had media.io translated into Italian. I like having localized versions because they make things easier to many people.
  • Improved Polish translation. I had a colleague go over the Polish translation and improve it.

More is coming. I am still working on the “email/share” feature. If you know where to look, it’s already there.

Happy Birthday, media.io!

Another year has passed and media.io is now two years old. Here’s what happened since the last update:

A Dedicated Server for media.io

On 30th of August, I moved media.io to its own, super-powerful server. Here are some examples of how the move affected the service quality of media.io:

  • media.io loads 200 ms faster worldwide. Page generation at the old VPS took a while whereas the new server generates the pages in less than 20 ms. This has a nice impact on page loading speeds, as well as reducing the bounce rate by around 1 %.
  • More than 50 % less conversion errors. On the old VPS, media.io couldn’t convert many audio files because of the very old operating system that didn’t support newer audio formats such as AMR or WMV 9. On the new VPS which runs Ubuntu 11.04, I see over 50 % less conversion errors.
  • Faster conversions. The increased CPU power also shows in the time spent waiting on the conversion page which is reduced by around 6 %.

New Audio Formats

media.io now supports the AMR (Adaptive Multi-Rate Audio Codec) and 3GP (essentially MPEG-4 or Quicktime wrapped around several low-bandwidth audio codecs) formats. AMR especially has been a long-standing issue with many people trying to convert AMR.

What’s new?

  • Improved caching. Accidentally downloading the same file again should now cause it to be served from your browser’s cache if it is stored there.
  • Regression for DNS migrations. In case of a DNS migration, visitors contacting the new server would cause errors which I would get as emails.
  • Swedish translation. Jakob von Essen has donated a translation of media.io in Swedish. Many thanks!

Future Options

Even though I find it hard to guarantee anything, what are some of the things you’d like to see at media.io? I know multiple files are very popular, as is sending the download page to someone. I played with the idea of developing Chrome and Firefox extensions. Would this be of interest to you? Please speak up in the comments. Thanks.

Fast Websites make People happy - 6 Tricks to load faster than Google

[media.io] loads many times faster than google.com; your whole homepage has fully rendered before I’ve noticed the loading wheel in Firefox starts spinning.

While it’s true that media.io loads faster than Google in Sweden where the author of this quote is coming from, it’s sadly not true for all places on Earth – media.io is 200–300 ms slower in New Zealand and here and there in the USA, too.

On the other hand, you can see that web performance has a tremendous impact on the perception of your service so it really pays to invest in web performance.

6 Tricks to load faster than Google

While I cannot afford the infrastructure Google has in place, media.io’s performance benefits from the fact that Google’s homepage isn’t what it used to be: At more than 150 KB and over 10 HTTP requests – most of which are not well cacheable –, it’s easier than ever to be faster than Google. Here are five tricks I use to make media.io really fast.

  1. Inline all Style Sheets

    Best practices say that a CSS Style Sheet should be one external file. For most sites including media.io, I don’t care. Even if you have only one Style Sheet URL (which you should), the extra HTTP request adds valuable time to the time before the browser will start rendering anything, slowing down the first page view. Plus, the loading main document might cause the browser to open another socket to load the Style Sheet which adds time.

  2. Load all widgets post onload

    To make the StumbleUpon badge that I use load faster, it is inserted on the page only once the user starts moving its mouse over the page. With jQuery, this boils down to $(document).one('mousemove', function() { $('#widgetcontainer').html('...'); }).

  3. Put all files larger than 10 KB on a CDN

    The largest files on my websites are usually the JavaScript files. Since bandwidth drops with increasing distance to the server, I keep all files larger than 10 KB on a CDN. I have done a bit of research here. Note that 10 KB is just my gut feeling since a perfect value would be very difficult to calculate.

  4. Re-use the home page connection for small resources

    After downloading the home page, I load two more small resources through the still open connection: The CSS sprite and the favicon. While I could place the CSS sprite on the CDN, it would load in parallel with the JavaScript, forcing the browser to open a new connection. By loading the CSS sprite over a lower-bandwidth connection that’s already open, I save time over opening a new higher-bandwidth connection.

  5. Load all JavaScript asynchronously

    Loading JavaScript asynchronously is now a mainstream technique which has tremendous potential of increasing parallelism in web browsers, as well as reducing time to display. All JavaScript on media.io is loaded asynchronously. Of course, it is compressed by Closure Compiler first and served GZIP compressed.

  6. Inline on-page JavaScript

    JavaScript that is needed on all main pages (think JavaScript libraries) is concatenated into one JavaScript file. Extra JavaScript that is only needed on some pages is included on the page in an inline script block.

(download)
Media-io_waterfall

Support for Speex and more Updates

Support for Speex

media.io now supports the open-source Speex low-bandwidth, voice audio codec (files ending on .spx). This was a suggestion that I actually found easy to implement for once. In other words, you can now convert Speex to MP3.

New Dedicated Server

I’m currently setting up a server dedicated to media.io. The server is very powerful with an Intel i7 950 CPU, 24 GB of RAM and two SSDs. The VPS media.io runs on the at the moment is under very high load and the new server will ensure fast conversions and will also help against people being unable to connect to the site. Downloads should be faster, too.

Bug Fixes

  • A regression in the program execution code caused very few conversions to fail. This was resolved.

Apologies for today

Because of a configuration problem, uploads and downloads were saved to directories that weren’t cleaned which caused the disk on the server to fill up. At around 19:00 CEST, the last bits were allocated and it took me about half an hour to clean up the mess.

Convert larger files with less bugs

Last weekend, I rolled out a new version of media.io that features the following changes:

500 MB Upload Limit

I’ve raised the upload limit to 500 MB from 250 MB.

Support for MP2

media.io now supports the MP2 format so you can convert MP2 to MP3 online.

Other Bug Fixes

  • In very rare cases, an error in Groovy would prevent conversions. This has been fixed.
  • Support for invalid range request headers. Some buggy clients send indices in range request headers in the wrong order. This is now supported.

It’s all about the bugs

Since the last update, I haven’t added any new functionality but instead concentrated on getting bugs out of media.io. I now have a system in place that helps me finding problems with browsers quickly and the outcome of this is that the following bugs were identified and fixed.

  • Bugfix for missing Content-Length header during upload. Some clients do not tell the server how long the upload they’re sending is. This is now working fine.
  • Bugfix for changes in Internet Explorer 9’s CSS opacity handling. In IE 9, Microsoft has removed the older filter CSS property to change the opacity of elements. The impact of not implementing this soon enough was that few IE 9 users were able to use the site (those using the compatibility view were not affected, I think).
  • Bugfix for files with + in their names. Files containing + in their names could not be downloaded. Thanks to mrzerga for reporting this.
  • Bugfix for file not found errors in Internet Explorer 8. Some bugs only affect users of certain browsers which can cause them to go unnoticed for long. Sadly, downloads of files with spaces in them (in other words, most files) never worked in Internet Explorer 8 due to a combination of IE’s HTML mangling and my hope that certain things would work the same across browsers. This bug affected a lot of people and made them unhappy, judging from the survey responses.
  • Enhancement: No more ActiveXControls in IE 7 and greater. Internet Explorer has implemented a native XMLHttpRequest object from IE 7 on. This is now used in preference over the MSXML ActiveX control the XMLHttpRequest API originated from. This means that, even if your computer administrator has disabled ActiveX controls, you can still use media.io.
  • Enhancement: Better conversion page for mobile phones. The conversion page for cellphones is now almost the same as the regular conversion page for desktop browsers.

There you have it. Enjoy using media.io to convert MP3 files!

media.io, the MP3 converter in your pocket

Media-io-mobile-conversions

More and more people use media.io as an MP3 converter from their cellphones. Even though the number of mobile visitors is still small, it is constantly growing.

If you run into a problem on media.io when converting music, be it from Android, your iPhone, your iPad or another mobile or portable device, please let me know. I don’t have all devices but I can usually figure out quickly why something doesn’t work.

Thanks and enjoy media.io from everywhere!

Bug fixes, faster downloads and MIDI

Correct Download File Names

A bug that existed since… the beginning of media.io: When you downloaded a file that contained non-ISO-8859-1 characters (technically speaking), you would get broken file names. To be honest, I never noticed until someone from Russia told me. Crazy.

Faster Downloads

To make downloading faster, I implemented gzip compression for downloads. In April, this reduced the amount of downloaded data by 13 %. Less data to download means faster downloads for you (and less money if you are billed by bandwidth consumption).

MIDI

media.io now supports the popular MIDI format so you can for example convert MIDI to WAV.

media.io in Estonian

Thanks to Olav from Estonia, there is now an Estonian translation of media.io. Thanks, Olav!

Other performance improvements

I’ve made several small tweaks to increase site performance. The home page should now load in less than 2 seconds – worldwide.

media.io loves Trackers and the Demo Scene

Last Sunday saw the release of a number of changes to media.io. Here’s what’s new:

Support for 21 Tracker Formats

Back in the early 90s, I wrote tracker music on my Amiga 500 using MED and sometimes OctaMED and I’m proud to announce that media.io now supports 21 formats by various trackers.

This feature was made possible by the nice folks who wrote the VideoLAN VLC player and the ModPlug library. For those interested, here is a VLC forum thread that details my settings.

In addition to the tracker formats, support for .m4r has also been added.

Here is a full list of new supported file extensions:

  • .mod
  • .s3m
  • .xm
  • .it
  • .669
  • .amf
  • .ams
  • .dbm
  • .dmf
  • .dsm
  • .far
  • .mdl
  • .med
  • .mtm
  • .okt
  • .ptm
  • .stm
  • .ult
  • .umx
  • .mt2
  • .psm
  • .m4r

Translations

media.io has been translated to seven languages:

  1. German
  2. Spanish
  3. French
  4. Dutch
  5. Polish
  6. Portuguese
  7. Russian

Thanks to the translators.

Smaller Changes and Bug Fixes

  • Some music files could not be converted because their tags were invalid. This has been solved.
  • Performance improvements. Resource loading was optimized, leading to faster loading pages.
  • Redirections for previously used URLs were created. This helps avoid 404 errors.
  • Download links were removed. This was a feature that wasn’t well understood as many temporary URLs were posted to Twitter, leading to many 404 errors. A similar feature will be back some day.
  • No more “Extended Version.” While the Extended Version was working to some extent, it was clearly not working well so the feature was deleted. A different solution will come in the future.
  • Files that no longer exist are ignored. Some people spend hours converting files and since files are deleted after an hour, media.io would attempt to re-convert them.
  • Files that are internally renamed before conversion were not shown. Some file extensions are just aliases for others and media.io renames them internally.
  • Very rarely, some files could not be uploaded. This has been fixed.