XBMC on Linux Mint Debian Edition

Since I built my file server (now running FreeBSD after a stint with Mythbuntu) I’ve used a variety of front ends to view all of the juicy media stored on it. My second most recent front-end was a re-purposed Lenovo Thinkpad Edge with a broken screen. It ran Windows 7 with Windows MCE and a Microsoft MCE remote. It was dead easy to setup, requiring only that I plugged in a HDMI cable and the IR receiver, and provided some media locations from the comfort of my couch. Unfortunately, the terrible WiFi performance meant that video often lagged for brief periods of time, or at its worst, stopped playing altogether. After a few months of frustration, I decided to try out Linux Mint Debian Edition to see if it performed better, given that all of the other WiFi connections in the house worked well. It did. So far I’ve been very happy with the whole system, so I thought I’d share how I got here. A warning now: if you’re not comfortable with basic Linux commands and editing configuration files by hand, then you should probably stick to Windows or Mac. Having said that, attempting things beyond your current skill level is how you learn. If you get really stuck, you can always post a comment and I’ll see if I can help you out.

Continue reading

How to setup Mercurial on Windows for use with bitbucket over SSH

I enjoy making software. I also enjoy playing with the systems that support making software: for example source control, unit testing, continuous integration, issue tracking. As a result, I have wanted to set up my very own build server to manage personal projects for a while now.  As an intermediate step to building my own server, which looks to be a rather large undertaking, I have elected to use bitbucket. Using bitbucket not only provides me with these services while I work on developing my own, it should help to inform the choices I make regarding my own system.

For those who are new to bitbucket, as I am, it is an online service that provides, among other things, Mercurial hosting for your source code.  Its use of Mercurial, which is my current source control tool of choice, and its use of ssh keys for simple and secure communication are the two main reasons I have chosen it. Speaking of ssh keys for communication, there are two different ways to access your code once it is on bitbucket: via https using a username and password, or via SSH using public/private keys.  I’ve elected to use SSH because using https requires that you enter a password whenever you commit, and I’m too lazy for that. My personal philosophy is to automate as much as possible, and make things as easy as possible long term; even if that requires additional effort up front.

Continue reading

Cleaning an Apple Mighty Mouse Scroll Ball

I’ve recently started using my Macbook Pro a bit more to do some web development stuff, and I quickly ran into an ongoing problem. In a rare case of design failure, the scroll ball on the Mighty Mouse just doesn’t work after extended use. The most common cause of this is a buildup of dirt and gunk around the scroll ball and its surrounding sensors. After some google searching, I found a few different methods for cleaning from the hardcore to the basic (push down and rub). In the end I went with a slightly modified version of this kid’s method which has thus far worked a treat.
Continue reading

Batch Conversion of RAW Images

A little while ago I took some RAW images with my DSLR. Having never used a DSLR or dealt with a RAW format before, I had no idea how to view or use the files. After a brief search, I discovered a most useful program called UFRaw. It’s free (and I think open source), and allows you to open and edit a variety of RAW image formats. Not only that, but it also acts as a GIMP plugin and a batch converter, so you can load your images directly into The GIMP for editing. All of these features appear to be documented on the UFRaw site, although to tell the truth I really haven’t used it all that much.

Today I wanted to convert about 45 RAW images to JPEG. Obviously this is a job for the batch conversion tool that comes with UFRaw, however, the batch conversion program converts images to .PPM by default. In order to batch convert images to JPEG, an additional command line argument must be passed to the program.  Having to get into the command line removes the drag-and-drop simplicity you get with the default behaviour, and I knew I could do better. It quickly became apparent that it was time to get my batch file on. Below is my example script that allows you to drag-and-drop any number of files onto it and have them converted to JPG. This same script could be re-applied to any other program that works in the same way by simply changing the program and command line arguments.

START "converting RAWs to JPEG" "C:\Program Files (x86)\GIMP-2.0\bin\ufraw-batch.exe" --out-type=jpg %*

The first line of the script just turns off printing to the command line. The second line is where the magic happens. Breaking up the second line we have:

  • START – used to start a program
  • the title of the command line window that opens to run the command
  • the path to the executable we’re calling (in this case, ufraw-batch.exe)
  • the command line arguments passed to ufraw-batch.exe to convert images to JPEG instead of PPM
  • finally, the %* at the end passes all of the arguments/files passed to the script, onto the ufraw-batch.exe command we’ve just defined

Obviously if you want to use the script yourself you may need to change the path to ufraw-batch.exe.

Moving Phantom Objects Around OpenSim With llMoveToTarget

As part of a uni AI subject I’ve been playing around with implementing some basic path finding in OpenSim. Part of that involved moving objects around a region using the llMoveToTarget function. After some frustration, I’ve discovered that phantom objects do not appear to respond to this function (i.e. you can’t move them using this function). I’m not entirely sure what a phantom object is exactly, so this might be bleedingly obvious to others. Also, this may be incorrect as I haven’t really investigated it thoroughly. Anyways, if you’re trying to move something in OpenSim (or maybe Second Life) using llMoveToTarget and it doesn’t work, it might be worthwhile checking if the object is phantom.

On a personal note, I’m quite busy with uni at the moment, as well as courting (pun intended) my newfound sweetheart – squash (the sport, not the food). So don’t expect any major posts any time soon. If I do anything original with OpenSim (i.e. not implementing my lecturer’s code) I’ll hopefully get around to posting it here for you all to play with.