Just to get this out of the way, I created this application this week as a Vala learning experience. It is by no means complete, but for the use cases I think it fits the bill nicely. Let’s jump right in to those cases:
- Bill is a system administrator who needs to run a backup on the computers on the network, but employees can not be using them while this happens.
- Jane is running some important system operation and needs to make sure none of her friends use the computer.
- Bob wants to put his system on standby every night at 11 PM, but not if he is using it.
Enter Commandeer. It is a small application that is able to lock the display to run a command. Sounds simple, right? It is.

Commandeer allows commands to be started with a variety of options presented to whoever is currently using the computer. Commands may be optionally cancelled before they start, stopped and paused while running, and.. well that’s all for the moment. Stopping and pausing are a little hacky; they just send SIGTERM, SIGSTOP, and SIGCONT to whatever child process is active. When the command starts, the above window becomes on-top, sticky, and fullscreen. Enough to keep out most users for now; hopefully I can improve on this “locking” support in the future.
For the first example: commandeer -d 60 --title "Backup" --text "Please save and close all work before the backup begins." /sbin/crazy-backup-plan. This would start a forced launch in 60 seconds.
The second: commandeer -d -1 important-command. A delay of -1 disables the timer, meaning that the Start button must be pressed to activate it.
And the last case, this could be started on cron: commandeer -c -d 30 --title "Standby" standby.sh.
For the above examples, the help output for context:
Application Options:
-d, --delay=SECONDS Delay before execution. If -1, disable the timer.
-p, --pause Enable execution pausing.
-c, --cancel Enable cancellation before command is run. Only valid if --delay is set.
-s, --stop Enable cancellation during execution. Implies --cancel.
-t, --title=TITLE Command title.
--text=TEXT Dialog text.
Commandeer will try to be somewhat smart about what to say and how the UI is presented, depending on what options are given on the command line. If –cancel is given but not –stop, then a Cancel button will appear and become insensitive when the command starts. If both –cancel and –stop (or just –stop) are given, the Cancel button will change to a Stop button on run. When –pause is active, a Pause button will be visible and will be enabled when the command launches. Pausing causes the Commandeer window to revert back to a small box to be resumed later.
A PPA is available here. Quite surprisingly, packages are only 11 KB, but are lacking some things (manpage).
Vala source is hosted, where else, on Launchpad, and is only about 300 lines long. I’m aware that I probably made some programming blunders with Vala — for example, I’m still trying to figure out the whole construct statement vs a method with the class name… but hey, it’s all working fine. I’ve been testing this code on my machine and it feels stable, but don’t blame me if you somehow lock yourself out. If you want to play around with it, feel free. Got improvements? File a bug or merge request.
Enjoy it or not, I definitely had a good time learning how to write it.
19 June 2009
Ignore the inflammatory title. I frankly don’t care to hear more on the drawn-out debate about patents. Nothing has happened for a long time, just more people yelling at each other over who is right.
What I never hear brought up is the C#-like language Vala. For the uninitiated, it’s a “self-hosting compiler that translates Vala source code into C source and header files” using GLib/GObject. So you feed it Vala code and it spits out C. Now what is so great about that?
1. No runtimes. When you run an application written with Vala, the OS has no idea. At runtime, Vala code is identical to C. No extra libraries, nothing needed to keep your program running. You could ship a version of your project with just the C code and have no extra build dependencies, though your recipients might question as to why there are a bunch of strangely-named generated variables (_tmp0_, _tmp1_, etc) in there. (Kidding about shipping generated C, see comments.)
2. Nearly infinite extensibility. Since Vala just generates C, the bindings can be derived from C. If you have Vala installed, take a look at /usr/share/vala/vapi/webkit-1.0.vapi. 200 lines! The WebKit bindings are only 200 lines long. And according to the file header, they were automatically generated. What’s not to like?
According to the Vala roadmap, we may see 1.0 in time for the GNOME 2.28 release.
So I want to hear your thoughts: Does this compare, from a technical standpoint, to Mono? Will it become a widely-used language? Is it easy to port an application from Mono to Vala, and vice-versa?
12 June 2009
..because I’m pretty sure I’ve got you all beat:

9 June 2009
Disclaimer: This post is close to a carbon copy of what was sent to the Ohio mailing list a few weeks back: everything about it was already in the message.
It’s been set: the date for our 9.04 release party will be May 9 at Panera Bread in Easton (just north of Columbus). It will officially start at 5pm and ends when everyone leaves — or when Panera kicks us out at 10. Even if you can’t stay for long, if you’re in the area be sure to drop by.
Map & driving directions:
http://tinyurl.com/ohioparty
Take this chance to meet other Ubuntu users, network, and have a good time. There may be some opportunities to get involved with Ubuntu development and bug triage.
Why so late? Because we’ll have CDs. If you just can’t wait for ShipIt to make a delivery, we will have them available (for free, of course). The LoCo stack usually includes a bunch of Ubuntu i386 and amd64 editions, as well as some Kubuntu and Server discs.
If you want, bring a laptop, though don’t feel obligated. Bring money for food at Panera if you desire ($5 covers most items on the menu). And of course, feel free to bring friends!
If you are far away from Columbus, consider carpooling with others in your area. If you need a ride but don’t know if anyone else is attending, post a message to the Ohio list with your location to see if anyone else will be going. Heck, feel free to come even if you aren’t from Ohio, but happen to be going through the area.
Finally, get the word out! Let your friends know that May 9th is the 9.04 Ubuntu release party at Panera. Blog it, dent it, tweet it, let everyone know. We had somewhere around 30 people at a release party once (all crammed into Panera), let’s see if we can break that record!
4 April 2009
Never make a change to a production site, because a typo will kill you.

I was trying to make a minor change to FOSSwire, missed a comma, and boom!
Sidenote: I’m still working on Xeiso, and will continue to develop it a lot more now that FOSSwire 3 is live. I’m currently working on a Clutter branch backed by dbus, and it’s been working very well. If it all works out, there might be a release of it this month.
2 March 2009
I knew my GameCube memory card was dying, so I decided to buy a couple of cheap cards off of eBay (the official ones aren’t produced anymore). The cards work fine, but there is just one problem: how can you get the data off of the dying memory card if it only wants to work half of the time?

And why are these cards so expensive? Even the generic cards go at nearly $0.50/MB, while these days you can almost get an SD card for $1/GB.
23 January 2009

How to replicate:
- Get Ubuntu, get a webcam and get cheese
- Create a sign (which LoCo you’re from)
- Blog
(sidenote: upgraded my blog to wordpress 2.7, and i hate it. major overuse of javascript, slow.
)
13 January 2009
Went out to a studio to get senior pictures yesterday. The photographer really wanted to go to this old bridge for pictures. Well, wasn’t I in luck:


Obviously, I had to get pictures next to this. Unfortunately, they aren’t available yet.
I don’t know why someone would bother to spray-paint that onto an old rickety bridge in the middle of nowhere, but it’s awesome.
Oh, and the meme, right.
- Grab the nearest book.
- Open it to page 56.
- Find the fifth sentence.
- Post the text of the sentence in your journal along with these instructions.
- Don’t dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.
“Putting the backslash in front of a character tells Java to just pass it right on through; don’t interpret it.”
I haven’t used Java for five years.
12 November 2008
Wow, OLF was amazing.

Many photos are available here; feel free to add your own to the pool:
http://flickr.com/groups/938355@N22/pool/
The booth was absolutely crowded for most of the conference. Even though it was slightly odd that OLF was just an expo room over from the US Fencing Competition, it was a great opportunity to introduce new users to Ubuntu and Linux in general, and most of them left the show very impressed. I also had the chance to attend a surprise BoF meeting, though I snuck in late.
A few shoutouts:
- Steve Stalcup (vorian) – setting up the booth the night before and working it
- Derath – getting System 76 and Hackett & Bankwell on board and working the booth
- Delvien – working the booth and helping out the new users and visitors
- Jono – thanks for the shoutout yourself at the keynote!
- Jorge – helping us out with organization of the booth and the BoF
- System76 – provided the nice demo laptops and discount coupons
- Intracorp Ltd – Hackett and Bankwell comic books
- Canonical – thanks for all of the free swag and marketing materials! Seriously, it wouldn’t have been nearly as awesome without it all, and made our booth extremely popular.
- Ohio LinuxFest organizers – planning the event itself! We’ll definitely be back in 2009!
I’ll be posting full impressions tomorrow on FOSSwire.
One particular moment that I thought was interesting was when Jono asked who in the audience (of around a thousand) used Ubuntu, and 90% of everyone raised their hands. Someone post a picture of that in the Flickr pool above!
Though, I think the phrase “Show me some candy” will trigger a somewhat unpleasant mental image for those who attended Jono’s keynote from now on.
11 October 2008
Well, it’s been more than a month since I last posted about Xeiso, so I figure I have an excuse to annoy all of Planet Ubuntu and subscribers.
A day after I posted the last Xeiso-related entry here, I got some junk packages published. Those junk packages eventually were polished up into a state I now think is bearable. And now, I present a belated makeshift release simply dubbed: “Moar.” “Moar” is a milestone in which I actually feel happy with regarding web services integration (currently called the “Download” menu). No longer is there a simple text interface to download games, but images and requirements to go along with it, along with update checking.
If you installed Xeiso and haven’t updated it since my last post (how dare you) then be sure to wipe your ~/.xeiso directory; it isn’t compatible. Yes, I just broke backwards-compatibility. Being 0.1 gives me the right to do that.
If you haven’t installed Xeiso yet and want to give it a shot, don’t install the Python way. If you do, you will end up with a bunch of conflicting files if you ever try to install the packaged version. Save yourself some time and just use the PPA. I promise, if I make some commit to Bazaar that has some awesome new feature, it’ll be on the PPA within a day.
On a related note, the CD build is making progress. Here’s an older video of it running in VirtualBox:
http://www.youtube.com/watch?v=Up8ywfi8K3U
Yes, the demo game is supposed to crash. It doesn’t exist. But believe me, a lot has changed since that revision. If you’re interested in building a disk for yourself, see this page. Some of the packaging used to build the CD environment is in the branch as well. I probably sealed my fate of ever becoming a package maintainer by breaking probably every Debian packaging law known to man, woman, and lolcat, but it gets the job done for the disk. But don’t install the package included in that branch unless you want your system to meet certain destruction.
The release name is “Moar.” So what next? Aside from the obvious better CD integration, there’s a lot of work to be done. The sound system hasn’t even been started; no Python library has been working out too well for me yet. Then there is Xeiso Connect, the online services component. Ask me about that if you are daring. And of course, packaging. What would a game system be without games? The package format recently changed to make it all even easier. Documentation isn’t complete, but it’s coming. In the meantime, feel free to drop by #xeiso on freenode or shoot me an email if you want to learn some packaging basics.
As always, I’m open to suggestions, rants, raves, nitpicks, and the rest, but keep it constructive. Leave a comment or use one of the contact methods above.
29 September 2008