Space Pony Demo #2

Here is the second Space Pony screencast. Note that the audio is out of sync with the video. It seems to be delayed by a few seconds.

This one shows some bug fixes, background syncing, and avatar syncing:


spacepony_demo_2.ogv (31.2 Megabytes):

As usual, comments, questions, and feedback are welcome. You can also join the mailing list:

https://launchpad.net/~spacepony-developers

Space Pony Demo #1

I made a screencast for Space Pony: A desktop syncing client and server I’m working on. Right now it is uber apha quality, so risk takers only.

This screencast shows syncing of Tomboy notes and Pidgin accounts:


spacepony_demo_1.ogv (40.2 Megabytes):

Anyone wanting to help should join the team and use the mailing list:

https://launchpad.net/~spacepony-developers

Fan made Metal Gear videos

I have been a huge fan of the Metal Gear games for almost 10 years now. A few months ago I noticed a fan made film in the works called Metal Gear Outer Heaven. I read up on it, and waited, but it seemed to never actually release. But now its out.

So in the spirit of the Metal Gear goodness, I decided to do a quick run-through of my favourite fan-made films. Here are my top 10:

10. Metal Gear Awesome

This is probably my lest favourite. It is still good, but just not as good. It just has too many knee jerk, inconsequential, dirty jokes. That combined with the sloppy animation knocks it down a few rankings.

9. UltraNeki & Solid Snake Codec Scene!

This is awesome just because it has the actual voice actor of Solid Snake (David Hayter), doing custom voice overs.

8. David Hayter’s MGS 20th Year Tribute

Again, here is David Hayter (the voice of Snake) doing some action stuff. It is not really fan made, but still cool. And look! He speaks Japanese too.

7. Metal Gear Crisis 1.1

This is a new one for me. It is much better than the other fan-drawn ones. Because it does not completely fall down the toilet into humour, only little kids would laugh at. Nice animation technique too.

6. Metal Gear: Outer Heaven

This was a bit cheesy. And lacking many scenes, that are filled in with story boards. But it was a relatively large undertaking to make this long beast. I like how the actor they have play Snake, is much more agile than the usual brutes I see.

5. Metal Gear Solid Cast Improv

This is neat, because it shows the actual English voice actors from the games.

4. Mega64: Metal Gear Solid

One of the better, earlier Mega64 episodes. Surprised they did not get arrested running around, and acting like that.

3. Lupin III vs MGS

This is a parody of the original Lupin III into, but made to match the MGS characters. Very cool. And very good artwork. It must have taken a while to animate.

2. Metal Gear Solid: A Day At The Office

This was one of my favourite fan films for a while. It is cheesy as hell. But has some very clever humour. I especially liked the Albert Wesker joke, and the Monopoly game.

1. Metal Gear Solid: Dinner with the Snakes

My Faveorite. Very clever concept. You can see details from many of the MG games. Including Metal Gear Acid, and the original Metal Gear. Nice costumes too.

More hot new music

I’ve been listening to new music as it drips into the jamendo new releases. I found a few more gems:

  

Code Fragment: How to programatically get MySQL table relationships

This magical chunk of goodness will allow you to query a mysql database to determine what table fields are foreign keys, and what they reference. Just replace ‘database_name’ and ‘table_name’ with the respective names you want:

select column_name, referenced_table_name, referenced_column_name from information_schema.key_column_usage where table_schema='database_name' and table_name='table_name' and referenced_table_name is not null and referenced_column_name is not null;

How to install GDC from source

I can’t believe there is no package for gdc on Fedora. so I spent forever trying to install it from source. Here is a script if anyone wants it.


# On ubuntu run this to install dependencies:
sudo apt-get install build-essential gawk libmpfr-dev libppl7 libppl-c2 libppl-dev libcloog-ppl-dev libc6-dev-amd64


# On fedora run this to install dependencies:
sudo yum install gcc


# Download GCC and GDC
cd ~
mkdir gdc
cd gdc
wget http://downloads.sourceforge.net/dgcc/gdc-0.24-src.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.1.2/gcc-4.1.2.tar.bz2


# Patch GCC to support D
tar xjf gcc-4.1.2.tar.bz2
cd gcc-4.1.2/gcc/
tar xjf ../../gdc-0.24-src.tar.bz2
cd ..
./gcc/d/setup-gcc.sh


# Build GCC
mkdir da_actual_build
cd da_actual_build
../configure -v --enable-languages=c,d,c++ --prefix=/usr/local --disable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --enable-clocale=gnu --disable-libmudflap --enable-targets=all --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
make


# Install it
sudo make install

That should do it. Next I will need to install the Tango libraries.

Feel the glory of a nineteenth century software installation experience

Today I booted my Windows XP virtual machine as usual. And as every time I boot Windows, there were many updates, each with its own myriad of wizards, eulas, popup balloons, and “Are you sure you want to do what you are trying to do?” dialog boxes. One of said updates was Java. This was an update to the Java that came bundled with Open Office 3.

Lets walk through that user experience to demonstrate just how wrong things are:

Step 1

Here is first page of the wizard. Looks like a typical Windows installer with just a hint of eula. My first reaction when seeing this is why the hell do I have to re-install Java when It was already installed? Why does it not do an upgrade? I’ve already agreed to the previous 3 eulas when I installed the previous 3 updates to Java. It should just rip the old version out and stick the new version in, without any user intervention.

Next I notice that it is also forcing me to install JavaFX. JavaFX is an attempt by Sun to create their own Flash/Silverlight clone. I have no way to not install JavaFX.

On top of that, they want to send “some non-personal information” to “help improve performance”. Then a url that claims to show you how to not have this information sent. Fail once for not just having a checkbox for that. Fail twice for not showing me what data is sent. And fail thrice for not having that url a link or button that opens the page in my browser.

Step 2

Next up, a frickin’ advertisement inside the installer! Not only is the Yahoo toolbar a piece of shit (as we will see later). But it is completely unrelated to the reason why Java is on this system. Like most users, it is there only for Open Office.

And look! The fucking check box is checked by default! That means most users will install it without looking. This is absolutely retarded.

Just for the sake of having the complete experience that Sun wants us to have, lets allow it to install the Yahoo toolbar anyway.

Step 3

Here is the actual installation. Hey look: Another advertisement. I wonder what product it is telling me about. I bet it will be a good one. After all, this is the only time Sun gets to show an add to someone they know is running Java, Windows XP, and Open Office. This realestate would be targeted advertisement gold. I can think of many cool Sun things to put on here. Fuck why not put all of them? Lets see: VirtualBox, MySQL, or even Open Solaris.

Oh. Its just Open Office. That thing that is the reason why we are installing Java to begin with. This is a bit like putting advertisements for milk, on boxes for cereal. If they have this, then they already have that, or will get it later. Forget milk. What we need is ads for bananas or strawberries in that cereal.

Step 4

Ok were installed! Lets look at our beautifully impregnated web browsers. Wow we must have 2/3 of the screen remaining for actual fucking web browsing. And notice how wide it is. Good thing I have a wide screen monitor. Also that awesome select box. It must be 20 pixels wide. Very useful. Especially since there is no indication of what it does.

Step 5

Time to remove that crapware Yahoo Toolbar. Hmmm. Its not in the add remove programs list. Oh wait. We remove it directly from inside Firefox. How intuitive! Every piece of software can install shit any way it wants! Awesome. We will just pretend that is a good thing. Because Firefox can do no harm.

Step 6

All right. Now lets actually try to use open office. This time on our Windows 7 beta. Oh look! another update! Goodie! Not only is it related to Open Office, but it could have been bundled with the one I just installed. I’m so glad it was not.

Conclusion

What the hell are you thinking Sun? No one wants the fucking Yahoo Toolbar. As your high ranking executives blindly repeat the mantra “Sun really gets it”, you are getting a reputation as a bloatware company. Don’t ruin the Open Office ecosystem. It is one of the four good things you have left.

And Microsoft: Why the hell don’t you create a packaging system? The MSI format was a foot in the right direction. And yet the same problems have been around for almost 20 years. Create a package management system like most Linux distributions do. In fact just clone Conary. Or even Steam. Then we could just use Windows Update to manage all our software and libraries.

I am dead-beat tired of having to party like its 1995 evey time I use Windows.

Best Wikipedia hack ever!

Lookie! Lookie! I figured out a hack to make the donation bar on wikipedia go up!

Just donate some fucking money. You tards.

I guess this means I am not buying Mirror’s Edge and Armored Core For Answers any time soon.

New Shrip Package

I made a new Shrip package. This is for the new 0.5 release.

http://workhorsy.org/junk/shrip_0.5.0-1_i386.deb

Source packages:

http://workhorsy.org/junk/shrip_0.5.0-1.diff.gz

http://workhorsy.org/junk/shrip_0.5.0-1.dsc

http://workhorsy.org/junk/shrip_0.5.0.orig.tar.gz

Updated:

Here is how to use shrip:

For example to encode episode 1 of Jericho from a DVD ISO to a matroska container with h.264 video and aac audio at 720×480, you would do this:

shrip encode --device=/media/archive2/JERICHO_S1_AC_D1.iso --title=3 --chapters=1-9 --audio=1 --scale=720:480 --crop=0:0:720:480 --container=mkv --video-codec=x264 --video-quality=extreme --audio-quality=10 --passes=1 --audio-codec=aac --normalize --ensure-sync --threads=2 /home/matt/Desktop/jericho_ep_1.mkv

You should be able to just change some of the parameters in the above example.

Adventures in Ubuntu packaging

Lately I’ve been researching how to create Ubuntu packages. For those that don’t know, packages are the Linux way of installing and managing software. Think Windows Update, but for all software on your computer. There are a few differences though: Each package will specify what versions of other packages it requires. This makes it trivial to see if a newer version of some library will break any software on your system. And since everything on your system is managed by one repository, you usually don’t have to worry about each program installing another copy of the same library. This happens on Windows a lot. When you install a game, it tends to install its own private version of DirectX.

The only down side to packaging, is that it takes a few hours to awkwardly walk through making your first package, and many more to properly package more complex programs.

I decided to start by packaging shrip. It is the command-line sister program of ogmrip. It makes it easy to encode DVDs into other containers and formats such as AVI, MPEG, OGG, MKV, et cetera.

I decided on it because, it is a smallish, stand-alone program, which would be much easier than packaging something that is in pieces, like open office. I also wanted to use it for a project I am working on called Ripspread.

I first started learning about packaging by reading the official Complete Ubuntu Packaging Guide. This did not turn out well, as the guide goes off on tangents, and those tangets go off on tangents, and somehow we would end up moving onto the next step, without me understanding which part was actually performed. I muddled through anyway and built the example package. Then I did it again. And again. Even after that I did not retain much of the process.

Then those smarties at ubuntu decided to make a screencast packaging guide. But instead of explaining every possible way of doing it, they focused on how they would do it in real life. And it was nice.

Since then I have been able to package shrip and a few other things. Generally my packages work. But there are some things I have not yet figured out. I want to list them here, so I can refer to them as I continue my research:

  • How do I label a package that is not an official release, but checked out from a code repository? And what if I have to change the code before the package can compile?
  • What about recommended packages? In some places you might want to just install libdvdcss, and others you might want to leave it up to use user’s discretion.
  • What about situations where there are multiple options for a required package? For example there are 3 different options for OCR software for reading subtitles in shrip. But I have to pick one when compiling. Is there any way to let the end user decide which to use when installing the package?
  • What is the difference between XSBC-Original-Maintainer and Original-Maintainer? The Ubuntu guides use XSBC-Original-Maintainer, but many packages just use Original-Maintainer.
  • How does a package get marked as being in Multiverse or Universe? There does not seem to be anything in the control files that indicates this.
  • Is it correct to mark the maintainer as Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>, even though I am not yet a MOTU? People at this mailing list will have no idea what this package is. It makes me feel like I am misrepresenting the MOTU by doing this.
  • What is the difference between having the priority set as “extra” or “optional”? They seem almost the same  when you read the description.

I hope to figure out these issues, and make some good packages that make it into ubuntu some day.