Category Archives: Uncategorized

How to open mms:// links from Chrome under Ubuntu

By default, Chrome will not launch mms:// (Windows Media streaming) links under Linux. It invokes xdg-open to “launch the user’s preferred application.” Under Ubuntu, xdg-open doesn’t handle mms:// links either.

Three steps:
1. Install mplayer and your choice of frontend (smplayer, gnome-mplayer)
2. Create a desktop entry for mms links.
3. Edit a configuration file to tie it all together.

Create a file named mms.desktop in ~/.local/share/applications/:

[Desktop Entry]
Exec=smplayer %u

Edit the mimeapps.list file in the same directory and add the following to the bottom of the [Default Applications] section:


After this is done, you should be able to open mms:// links from Chrome. The link will open in the application you specified in the Exec entry in the desktop file.

New blog:

I have created a new blog, The name is a domain hack for the word “agnosis.” If gnosis means “knowledge,” then agnosis means “no knowledge.” The word “agnostic” derives from agnosis. In this case, the name is a nod to the idea that this new blog is about discovering new things and learning new technologies. It focuses mostly on NodeJS, but will also focus on other programming languages and technologies. is built on a bunch of new and exciting technologies: Node, Redis, markdown, and cloud computing. The site is written entirely in server-side Javascript, using Express and a bunch of other NPM packages. It is hosted on the Rackspace Cloud, which allows far more control over the environment than a “traditional” web host, like the one this site runs on. It’s also a lot faster. Thermetics’ web host has always been slow for some reason. won’t replace, at least not yet. Thermetics has been around for many years, and though I never really did much with the domain except use it as personal storage, it is still high up in Google’s rankings, and has even been linked to by a few other websites. Thermetics will be a random useful tips blog for awhile longer. I may mirror posts between the two. I haven’t decided.

Install Greasemonkey Scripts in Chromium the Easy Way

Simple tip: You want to install a Greasemonkey user script that isn’t hosted on Or, you have the script residing on your hard drive and you want to install it from there. If you open the .js file directly in the browser, Chromium (I’m assuming Chrome will do the same) will pick it up as a script and install it.

Concept: Simulating POST and GET Requests with JavaScript

After reading this title, you’re probably thinking “why would I EVER need to do that?” The answer is probably never in a practical situation. It could be employed in slightly less-than-ethical areas such as XSS attacks. It could be employed in quick data transfer through a multipage form. Of course, if you’re doing that you likely have a framework of some sort doing it for you in the background. Or, maybe you’re writing one of those kinds of frameworks. In my case, it’s part of a larger idea to simulate a “server” in cPHP–a (very) experimental client-side PHP->JavaScript translator/compatibility layer thing. Since cPHP itself is AJAX-based, and the JavaScript engine needs to control the entire translation and execution of the script, it needs to be able to maintain data between form submissions and provide to its PHP implementation a reliable “illusion” of a server.

There isn’t really any code in this post (that will hopefully come some day later); it’s just a few different ideas on how this could work. The first idea that crossed my mind was to allow form submissions to work as normal; as they are specified in the HTML. We could parse the querystring (the URL in the address bar) to get all of the information we need. This is probably the simplest approach, but it has severe limitations. Firstly, POST requests would not work at all as JavaScript is not aware of what is POSTed to a server. In my case, I don’t even care about the server. Secondly, the page will reload, which may require forwarding of other state information between the two pages.

My other idea is more complicated. The JavaScript, when loading the page, will actually inspect the form tag(s) in the document, modify them so that no request is sent, but find its submit inputs and create a function that “submits” the form, recording data internally. In the case of cPHP, it would be easy from this point to populate the $_POST associative array or $_GET associative array, depending on the original method attribute specified by the form tag.