Saturday, 4 July 2009

Finding removed content on Sourceforge

Sourceforge is filled with noise. Projects that were created and never started, projects that were started but never really taken anywhere and in general just such a mass of projects that searching there for new and interesting ones is too much effort. Occasionally, someone will mention an interesting project hosted there and that's pretty much the only way I go to sourceforge these days.

While casually browsing through the Flipcode archive for articles related to software rendering, I stumbled across a reference to a project called 'sw-shader'. At some stage, the open source project was cleaned out when the technology was sold to TransGaming where it was improved and released as SwiftShader. None of the downloadable source code archives or binaries once made available by the project were available any more, and the homepage set to redirect to the SwiftShader page at TransGaming.

This isn't the first project that has "gone dark" on sourceforge. Another is 'flux3d', a project for the FluxPlayer source code. And another was for the Elephant versioning file system, although I cannot remember the name of its project.

In the past, you used to be able to go to a sourceforge server where tarballs were automatically generated for all projects and find a snapshot of a project's CVS repository. This seems to have gone the way of the dodo. You also used to be able to go to a sourceforge server where the files made available for download by a project (removed or not) could be browsed. This appears to also have gone the way of the dodo. Sourceforge claim that data is not deleted, only hidden, yet it seems almost impossible to locate that hidden data, where it was trivial before.

Please note that data that users or administrators "delete" from the site is merely hidden, but retained for perpetuity. It is not necessary to restore this data if flagged as deleted; contact us for assistance.
One of the sourceforge mirrors is browsable as a folder hierarchy of downloadable project files. As can be seen in the given link, no files are present for the 'sw-shader' project. '' cannot be connected to either, so that is a false lead.

Eventually I found a link to another mirror where sourceforge project files are accessible, one that contains all files, hidden or not. Files are available for the softwire project and the sw-shader project. Also for the flux3d project. I have no idea whether there were ever checkins to the CVS repositories.

It's not the most ideal solution. It used to be so much easier to track these things down. It's possible that I could contact sourceforge and ask, but I wanted to see whether I could track down what I wanted without the break in attention span that the delay involved in that contact would cause.

Shipping books to New Zealand via M-Bags

The bulk of my possessions that I actually wanted to ship back to New Zealand were books. I had around 200kg of books, to a large extent from the C.C.P. North America damages bookshelves which employees can help themselves to. The original plan was to ship all of them in boxes by sea, but as tends to happen, I recalled the movie Fight Club and Tyler Durden saying along the lines of "the possessions that you own, come to own you." So I threw most of the books in the apartment complex dumpster and went with the cheapest easiest way of shipping for the rest. Someone suggested I should have ebayed the ones I didn't keep, but it seemed kind of unethical.

The cheapest way of shipping I found was to use M-Bags. Like most things in the U.S.A. where bureaucracy is involved, the U.S.P.S. doesn't give a simple description of how to ship this way. But the gist of it is that you go to the post office and they give you a number of bags that look like this:

The M-Bag that made it all the way down to N.Z.
Along with these sacks, they give you an address tag to fill out. You can see the one attached to this sack in the upper right of the photo above. And they also give you a customs sticker. You fill out the customs sticker declaring the value of the books, and describe them. I put "personal possessions (books)" as I was moving back to New Zealand and can ship possessions without Customs charging me for them.

I was a little worried about the condition the books would arrive in, so I wrapped them in shrinkwrap to protect against water damage, then wrapped them again in bubblewrap. I also held back on sending too many books this way because I was concerned about whether it was worth it, comparing the U.S. price of the books versus the cost of shipping this way. This proved to be a mistake as everything in New Zealand is very expensive.

Books shipped in M-Bags
It turns out I was right to be worried about the condition of the books in these sacks. Even at the post office in the states, I was concerned whether the velcro strap used to fasten the bag shut was anything more than a token effort. The first bag to arrive at the N.Z. address I sent them to, didn't. Several bubblewrapped bundles of books arrived.

Given the amount of money I spent to ship these books, I was a little bit worried by this. Several days later more bubblewrapped bundles arrived along with the second sack. Another worry was that some bundles might have gone missing, but an inventory showed that all the bundles from both sacks were present. It was just as well I put an address label on each bundle, with my name and address. Not sure why I did it, but if I hadn't I might have lost a whole sack of books.

There was a little damage to the hard-cover books, with bent corners, but other than that the only other damage was due to the missing sack. Somewhere along the lines, someone had combined book bundles for easier courier shipping with hard plastic tape, crushing a book or two.

Here's a page complaining about price increases in M-Bag shipping. It looks like it used to be a really cheap way of shipping books (which is pretty much all you're allowed to put in M-Bags).

I was just looking up prices here in N.Z. for two of the books (A and B) I shipped. The combined price of these two books easily covers the shipping cost of one of the sacks.

Thursday, 2 July 2009


The Mud Connector as a web site does not look that bad. But on a widescreen laptop, there's limited vertical screen space, and has a header and footer dynamically inserted on every page that sucks up too much of that limited space.

This very simple Greasemonkey script removes that header and footer, giving back the screen space it otherwise sucked up.

// ==UserScript==
// @name MudConnect Page Space Reclaimer
// @namespace
// @description Removes screen space wastage
// @include*
// ==/UserScript==

var theSpaceWaster, altText;
theSpaceWaster = document.getElementById('headerwrap');
if (theSpaceWaster) {
altText = document.createTextNode("");
theSpaceWaster.parentNode.replaceChild(altText, theSpaceWaster);
theSpaceWaster = document.getElementById('footerwrap');
if (theSpaceWaster) {
altText = document.createTextNode("");
theSpaceWaster.parentNode.replaceChild(altText, theSpaceWaster);
} A word from Lars

Link: A word from Lars

LPMud (and corresponding the MudOS fork of it) is still a remarkable achievement. It is a virtual machine with a scripting language, code reloading, versioned instances of objects and provides an environment for a game to be developed in.

However, the way LPMud was licensed (covered in passing here) meant that commercial use of the driver was a violation. This didn't stop a furor over MUDs that used it commercially. There was various talk over the years about finding all the contributors and relicensing it, but one problem I recall was that no-one was in contact with Lars Pensjö, the author and namesake.

So, it was interesting to see the above linked post by Lars, and to hear his take on LPmud. This doesn't in anyway affect the licensing situation, I seem to recall other contributors, and perhaps a lack of record of who exactly contributed also stood in the way.

Building Stackless Python 2.6.2 on Bluehost

With the idea of running an instance of my MUD codebase on my Bluehost account loosely in mind, I started off by compiling Stackless Python. The steps I took are listed here, in case I have to do it again.

  1. I downloaded and compiled svn following these instructions. However, I didn't need to do this and could have just downloaded the source code archive.

  2. I checked out Stackless' Python 2.6 branch:
    > svn checkout
    Again, I didn't need to do this and could have just downloaded one of the "exported" source archives available for download from the Stackless web site.

  3. I started the process of building the Stackless source code:

    > ./configure --prefix=/home/USERNAME/system --enable-shared --with-threads &>~/make.log

    Bluehost shares machines between hosted sites. There's no VPS. So I do not have access to many, if any, directories outside of my home directory. For this reason, I direct the install to the "system" subdirectory under my home directory. This is actually the model used by the SVN install, and I am taking advantage of it.

    As we pay for all bandwidth used in New Zealand, I make sure to redirect all output so that it isn't displayed in my SSH connection.

  4. The next step is to compile the Stackless source code:

    > make &>~/make2.log

    Again, all output is redirected to a file.

    Surprisingly, this actually errored. The linking step failed to find the "slp_safe_pickle" symbol to link against. One of the options I enabled when editing "Modules/Setup", triggered its usage.

    It turns out the file "Stackless/pickling/safe_pickle.c" is not actually compiled. Adding it to "", doing a "make clean" and then a "goto step 3" resulted in a successful compilation. I'll have to make sure I check that into the Stackless SVN branches.

  5. Doing a "make install".

  6. Trying out the compiled command. There's already a "python2.6" provided by Bluehost, so I either needed to override that or add an alias. I chose to add an alias of "stackless2.6":

    > cd ~/system/bin
    > ln -s stackless2.6 python2.6

    Now to try the command:

    > cd ~/
    > stackless2.6

    This failed because it can't find the Python 2.6 shared library. I used to know all the commands related to dealing with these sorts of things, but unfortunately I've forgotten it all.

    A bit of googling got me this:

    > ldd stackless2.6 => something about being not found => /lib64/tls/ (0x0000003876600000) => /lib64/ (0x0000003876400000) => /lib64/ (0x0000003878500000) => /lib64/tls/ (0x0000003876200000) => /lib64/tls/ (0x0000003875f00000)
    /lib64/ (0x0000003875d00000)

    This was probably no help, as the error given when I tried to run the command probably included the name of the shared object it couldn't find.

  7. Edited "~/.bash_profile" to add "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/system/lib" and "export LD_LIBRARY_PATH" entry. To getting this to kick in I exited the SSH session and started a new one.

  8. Now "stackless2.6" works.
Success. Now the next step is to try running the MUD.

Bluehost and SSH access

Amongst all the other acts of largesse I performed with the money I was earning in the United States, I also procured web hosting from Bluehost.

I'd read about how you could get SSH access to your account by submitting a form of ID to them, but assumed it had to be done via fax. Being a luddite, exactly what a fax is and how to use one, is beyond me. However, it appears you can submit the ID via email as well (or a ticket, if you can work out how to do it in their ticketing system). As I had to have my ID in scanned form for my U.S. visa application, I had a copy lying around, so I submitted it.

After only five minutes, the ID was approved and I had SSH access. There's useful web pages around detailing how to set up Putty to access your Bluehost account. I still need to work out what I can do with this, setting up Subversion or installing Python are good indicators of what is possible, but aren't things I need.

Edit: Found a link to a blog post detailing how to use Bluehost for MUD hosting. According to the unofficial Bluehost forums, someone asked the live support whether it was okay to host a MUD under their account and the answer was yes. Unfortunately the blog has been removed, but the Internet Archive comes to the rescue.

Edit: Unfortunately, Bluehost isn't suitable for running a MUD or other long running applications on. Apparently, the longest a process can run is five minutes. Just running a Python server process in my shell account, it was killed in around two minutes. Ugh, the top and bottom border Mud Connector have, takes away from my limited widescreen laptop screenspace. I used to have a Greasemonkey script to give me back that space, but it doesn't appear to be working any more.