Stuff I waste my time on...
Predefined words are randomly placed on an HTML5 canvas and faded in and out individually.
Compatible with Chrome, Firefox, Internet Explorer 9, Opera, Safari
Uploads files via XMLHttpRequest. Adding files to the upload queue is as easy as dragging them to the drop area on the page. Alternatively, double-clicking on the drop area invokes a multi-select file <input> element for selecting files “the classic way”. Doesn’t work on all browsers, though.
Windows’ file selection behavior was recreated as good as possible, to provide a familiar environment.
During initialization, a table mapping file extensions to icons is automatically downloaded.
Compatible with Chrome, Firefox, Internet Explorer 10
Uploading is handled by the HTML5 Uploader. Files are saved to a pickup directory that is observed by a daemon process. When a new video file is found, it is automatically transcoded to H264/AAC and Theora/Vorbis with ffmpeg and ffmpeg2theora, respectively. Converting to WebM was originally planned but never implemented. Originally, ffmpeg’s support for VP8 was severely lacking.
The daemon is written purely in PHP and uses the pcntl extension for parallelization of transcoding and forking to background. Within certain preset limits, videos are transcoded in parallel.
When the conversions are finished, the video is cleared for playback over the web. For browser not supporting HTML5 videos or the formats used, playback will automatically fall back to JW Player (Flash) or, if Flash is not present, a simple preview image with download links.
The default viewing page also includes a text field containing copy-paste ready embedding code including all fall-backs.
Upload compatibility is the same as HTML5 Uploader. Playback is supported in any browser sporting at least Flash.
Somewhere along the way, Mozilla decided to revamp how downloads are presented in Firefox. A side-effect of these changes is that now, downloads are no longer recorded in a separate list, but the main browsing history. There’s no way to disable this behavior short of disabling the browsing history completely.
Since I don’t want my download history to remain, I decided to poke around a little and found out how downloads are recorded and, more importantly, how to remove them. Using the Mozilla Add-on SDK, I created a Firefox add-on that looks for new downloads, waits for them to finish, and removes them (after a user-defined delay) from the history. Alternatively, downloads can also be removed when Firefox is closing.
The add-on is available at Mozilla’s add-on repository.
Compatible with Firefox
My (other) skills, summarized: