Moving to a new blog

28 04 2010

My new address is

I’ve decided to get a domain and move to for my blog.  Sorry for the inconvenience it would cost money to map to the new site. Please update you link. This blog will not longer be updated.


How I use Google Wave (and what I wish it could do)

21 04 2010

Google Wave seems like a strange tool at first and has so many use cases it can seem overwhelming. One thing I use it for is as a wiki. To keep organized I first make a main wave that just has links other waves of the same topic. Google Wave makes it easy to just drag and drop links and files (though it’s a little buggy currently). Next I put whatever into the wave say a design specification. Under I can put blips (which are like reply’s in a forum) to discuss the document.

That said there are some shortcomings I hope will be fixed before Google takes it out of beta. I’d love to be able to export the wave blips to other sites. Say I have an official documentation site for some project that I want nice looking information. This information could be the design spec I mentioned but only the first blip so comments and changes could be made in Wave will a nice finished product always exists elsewhere. Currently it does integrate with blogspot, hopefully more will come and it can be used almost as a content management system, this would be really awesome.

Another problem I run into is knowing when a wave is updated. I solve this with firefox/chrome extensions but this isn’t ideal when trying to work with someone else who doesn’t have them and isn’t alerted to when the wave is updated.

Linux and Active Directory

30 03 2010

Getting Linux to work well with LDAP is a pain. Here is how I set it up to match what one typically finds in a corporate environment, that is Logging in with a domain name and having access to various shares.

Logging in
First is just getting it to login. It’s actually not that hard, I went with using likewise-open which can be installed in Ubuntu via
sudo apt-get install likewise-open5
Now to configure we run
sudo domainjoin-cli join Administrator
Now assuming you only use one domain you probably want to make it default. You need to edit /etc/likewise-open5/lsassd.conf and set “assume-default-domain” to yes
Now if you reboot you should be able to log in via the domain user.
Now you need to mount all the shares, perhaps a company wide share and a personal one. Run this
sudo apt-get install libpam_mount
Sadly the Ubuntu packages don’t configure it right. Edit /etc/pam.d/common-session and rearrange to lines near the bottom so it looks like this
session optional
session sufficient

Now it will work. The problem is that pam ignores pam_mount when using the likewise open module by default.
Next /etc/security/pam_mount.conf.xml
You can use variables like %USER to have it mount the user’s personal share. Mine looks like this

<!-- Volume definitions -->
<volume user="*" fstype="cifs" server="server" path="users/%(USER)" mountpoint="~/Documents" />

Don’t try mounting anything as Desktop because gnome won’t allow it. Too bad.

Likewise open doesn’t work with wifi unless you login as a user first, which seems not to be a solution. It’s because network-manager sucks and doesn’t connect until some user logs in. So you need to not use network-manager. I uninstalled it and setup wifi by editing /etc/network/interfaces. It works well but now I can’t change the wifi myself. Useful if the computer never leaves the building. In my case this is acceptable. I hear wicd is a network-manager replacement that can do this. Didn’t try it myself.

Mass deployment
Next you might want to be deploying it on many computers and not one by one. If you want to mess with the default user setup you could install and run sabayon. It crashes a lot, but its actually really useful. Next you need to change the hostname of every machine. I made this script and put it on crontab @restart.
# If hostname is netbook, assume this is a fresh image that needs setup
if [ "$hostCurrent" == "$hostOld" ]
# set hostname based on Serial Number
host1=$(/usr/sbin/dmidecode | /bin/grep 'Serial Number: ' | /bin/sed 's/.*: \(.*\)/\1/;q')
host=$(echo $host | sed 's/ //g')
echo $host
/bin/hostname $host
/bin/echo $host > /etc/hostname
# wait for wifi
sleep 10
# join AD
/usr/bin/domainjoin-cli join Administrator 'mypassword'

It automatically makes up a unique hostname and joins my domain at first boot. I set the cloning image’s hostname to “freshinstall” which the script looks for. Clone the hard drive boot it. Wait for GDM to come up, reboot and your good. Not sure why I can’t make reboot from the script. Oh well this is actually way better than joining many Windows computers to a domain, which requires many reboots.

Odds and Ends
I still don’t know a great way to mount ~/Desktop
If you must have MS Office you could try wine, but you may need to use Crossover Linux Pro which generally costs more than what people actually pay for both Windows and MS Office. With CX Pro you can set up Office to multiple users.
I’ll write a follow up post on how the deployments go.

Sunset Park Riders

10 03 2010

I’ve done a little web development for the Sunset Park Rider’s “Showdown at the BK Corral” album. It’s a rap album blending spaghetti western movie scores with classic hiphop break beats. Check it out at you can download the album for free or buy a CD.

Video game video

16 02 2010

Simple, but everything here is editable via XML. Rate of fire, type of weapon (straight, spread shot, etc), enemy’s, images.

Creating a video game

24 01 2010

I’m finally putting some real work into making a video game for the Android OS that combines aircraft shooter with some role playing elements. My plan is to have a game where the player goes between typical shooter action and storyline, gaining XP, going to shop for upgrades, ect. The player will have a computer controlled wingmate too that will level up as well. I’ll be building it with the open source sprite engine rokon.

I’m making all the levels read in as xml so anyone can make a level. At some point I’ll release the core game as open source and sell Level packs on the Android Market. Here’s a screenshot

Not much to look at yet. Hopefully my next post will feature a demo video. It actually works but a few bugs make it less than impressive. It really does read level data off an xml file though which is super cool. That means I can write in xml that a certain enemy appears on the level at a certain time.

I’m using Google Wave for all the specifications. If you want to help out let me know, many more details are there.

Hacking the G1

25 11 2009

Last Friday I finally decided to root my G1 android phone, probably from envy of the new Droid phone. I must say I’m surprised by how much faster it is now. It’s far more responsive and loading times seems to be vastly improved. Aldiko ebook reader went from taking around 30 seconds to open a certain book to 5. One annoyance I used to have was the home screen freezing for 5 to 10 seconds making multi tasking very annoying. This is now completely gone. I was expecting a slightly faster phone, but this is really like a brand new phone. Wifi tether is always nice too. Here’s what I did.

Rooted it with this guide. A tad many steps involved, but all very easy to follow.
Installed an overclock app from the market.
Partitioned my sd card with a 2GB ext4 and 32MB swap with gparted.
Enabled compcache with the “spare parts” application.
Installed the Cyanogenmod updater from the app market and updated to the latest Cyanogenmod. This neat program makes updates very easy, something I though might be annoying after rooting the phone.

So that’s it. If you have an android phone and don’t mind the slight risk, it’s very much worth rooting your phone.