Monthly Archives: June 2009

A few good bug squadders

From IRC, a quote:

Son, we live in a world that has bugs, and those bugs have to be found by men with debuggers. Who’s gonna do it? You? You, OSS fan boy? I have a greater responsibility than you could possibly fathom…. You have the luxury of not knowing what I know. That the KDE 4.0 release, while tragic, probably saved developer resources. And that my existence, while grotesque and incomprehensible to you, saves developer resources. You don’t want the truth because deep down in places you don’t talk about at parties, you want me on that bug, you need me on that bug.

And in other news, I’m officially on shore duty, at my next duty station. I got to “help” the nice Comcast guy with hooking up cable Internet with linux, but other than that things went smoothly. (Protip:Have a DNS nameserver not part of Comcast memorized before hooking up the Internet. If you’re unlucky you’ll get to a point where your Internet works but DNS does not.)

BBIAB

If I’m incommunicado over the next few days, it is because I’m in the process of moving to my next duty station, which will take place over the next couple of days. Everything is getting packed up tomorrow and shipped out Tuesday. Hopefully I will receive it Thursday at the new place.

I’ll try to check my email and such in the interim but if you can’t reach me, that’s why. Next stop: South Carolina!

New playing mechanic for Nintendo games

So I guess that some upcoming Nintendo games will have the ability to go on auto-pilot if you’re facing difficult parts of levels, and have the game essentially play itself.

Needless to say it’s a controversial move. To be honest I’ll admit that 10 years ago I would have been of a much different opinion.

But nowadays, I think this is a great move. I’m not worried about actually having to use it for the game in question (New Super Mario Bros. Wii). But over the years, something has been happening to me. Games which I would previously play again, and again, and again, in order to finally play through I found that I couldn’t muster the will to now.

I’ve had a GameFly subscription for awhile now and I’ve not bought one game based on playing a rental. I’ve come close on a few, such as Geometry Wars for the Wii. But for the most part the game would either be immediately annoying, and get immediately returned, or I’d play it for a couple of hours and realize that it wasn’t really that fun.

This was most disappointing for me on the latest Prince of Persia game. I played through the game, had to sleep on it overnight to figure out what wall I had to run up to reach the first boss, and the reward was that I had to choose my own path to retrieve energy balls or something. It was around this point when I realized that so far, it was still just like Prince of Persia: Sands of Time for me, only less fun. And I already owned Sands of Time.

Even simpler games I’ve had a patience issue with. I’ve already mentioned my displeasure with Mario Kart Wii for instance. I was having fun with a DS game called The World Ends with You until it abruptly became no fun today. I was a passenger on a car ride playing the game, realized I had a hojillion more “pins” that I would have to master and use, and shut the game off. I actually preferred at that point just sitting and watching the signs go by than playing the game. I’m not sure at this point when (or if) I will pick it back up. :-/

So, if this actually allows me to bypass areas of the game which are no fun, so that I can actually get into the meat of a game, then I think this would be a wonderful idea to adopt (in some form) across the industry.

People complain about how it takes skill out of the equation, but that has been happening in large degree for years already. We didn’t use to have easy access to sites like GameFAQs, it used to be toll-call phone numbers, and then later “game guides”. The difficulty in games has in general gone down over the years, and that’s not even counting games with multiple difficulty levels.

I think I’ve seen this handled best in Super Smash Bros. Melee. For the most part the unlockable levels and features and such were achievable by mere mortals (since I managed to do it). Harder achievements stopped unlocking levels and were noted simply as messages or trophies, items which signified that a significant amount of skill was required, but without changing the game. Some levels which could be unlocked merely by playing the game for long enough could be unlocked much faster by demonstrating ability. It was overall a good system I thought.

Some have mentioned about how people won’t get the exhilarating feeling of having surpassed some extremely difficult task. I know this would be a concern for a friend of mine, who prefers games like this. But in my case I completely lost that particular trait in around 1996 or so. It’s not like I’d like to be held up at knifepoint just so I can experience the incredible joy that would come of making it out of that situation alive and unscathed, for instance. The ends just do not justify the means for me.

Others complained that it would make people feel entitled to be able to beat any game they want and thereby increase cheating. But people already feel this entitlement — online games are already flooded with cheaters (one reason why I don’t play online games).

Personally, I don’t see why people would pay $60 (or €60 – ouch!) to play a game which is basically the equivalent of getting punched in the solar plexus over and over. And not only that, but in a lot of games you don’t even get all the rewards without subjecting yourself to tons of punishment (which is what I consider it). Poor controls (any modern console FPS), cheating AI (such as in Mario Strikers Charged), I’ve dealt with it all, and it’s always annoying, and even moreso now because there is simply no excuse.

Anyways, this is growing into a rant. I just want to say that although I don’t think this is going to impact my opinion of the game they’re putting it on, I think the idea could be wonderful if it’s more widely adopted in the industry. It’s already getting to the point where most of my Wii collection belongs to WiiWare and Virtual Console games.

Oh fun

So after my latest X.org upgrade I forgot to recompile the xf86-input-evdev module as well. So of course when I ran startx again, my shiny KDE desktop came straight up… and I couldn’t move the mouse or use the keyboard. Drat.

Now I’ve been much more careful to cleanly shutdown KDE when possible ever since I started losing rc files with my previous filesystem. And besides which, I couldn’t use Ctrl-Alt-Backspace even if I wanted. So what I did instead was login with my laptop to try and shutdown KDE.

Of course, there’s still the tricky issue of how to cleanly shutdown your running session from a completely different shell. Luckily ksmserver (the process responsible for performing the shutdown) has a DBus interface:

kde-svn@midna ~ $ qdbus org.kde.ksmserver /KSMServer
method bool org.kde.KSMServerInterface.canShutdown()
method QString org.kde.KSMServerInterface.currentSession()
method void org.kde.KSMServerInterface.logout(int, int, int)
method void org.kde.KSMServerInterface.resumeStartup(QString)
snip

Of course, that’s what I get when I run if from my current KDE session. I was worried that in my ssh shell there would be problems with accessing the D-Bus session. So imagine my surprise when I was wrong, the command worked just fine even with no environment variable set. Huh.

Although it saved me from what I was going to do (look through /proc/pid/environ for a process that I knew was in the DBus session), it was still unexpected to me. Turns out that DBus will, if the environment variable is unset, try to “autolaunch” the session bus. This entails looking in the X session and in ~/.dbus/session-bus/ to look for the information on the DBus session, and if not able to locate the session, to simply launch another DBus session. In my case the information was available in ~/.dbus/session-bus/.

So I’m impressed, I was expecting it to be a giant pain in the ass and it was actually ridiculously simple.

Btw, the conclusion to the tale was: qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 0 0 0. The three parameters were annoying for me to lookup so here it is:

The real signature: KSMServerInterface::logout( KWorkSpace::ShutdownConfirm, KWorkSpace::ShutdownType, KWorkSpace::ShutdownMode ). The parameters are essentially the same as in KWorkSpace::canShutdown() (link edited to work 2012-05-06), and the values are defined on that API page as well. One thing to note is that the final 0 (shutdown mode) is actually useless since we’re not requesting that a shutdown happen, only a logout. If we were requesting a shutdown, the shutdown mode is what selects whether to force a shutdown/reboot even if other people were also logged in, for instance.

Kind of as an aside, I’ve taken the liberty of updating my GPG keys due to the relative insecurity and low strength of the 1024-bit DSA key I had before. It should have a fingerprint of 5406 ECE8 3665 DA9D 201D 3572 0BAF 0C9C 7B6A E9F2, and is available here. Maybe someday I’ll even be able to attend a keysigning event to get it signed by someone else. :-/

Fonts

So I was reading through programming.reddit.com yesterday when I happened upon an article detailing various available free fonts.

This is free-as-in-beer for the most part but the article seems to be good at mentioning the license (i.e. non-commercial, SIL license, etc.)

I’m enjoying Titillium (SIL Open Font License 1.1) (page in Italian) and Aller (Noncommercial use EULA, this post clarifies allowable use) (page in Danish) so far.

There’s also good programming (monospaced) fonts out there. I remember back before GNOME secured the release of Bitstream Vera that pretty much the only choice for programming fonts on X11 was “fixed” or Courier. Nowadays we have a slew of good fonts available. Quite a few are listed in this Hivelogic post, although about half are not freely available. I do agree with the choice of Inconsolata though. One other good monospaced font I would mention is Envy Code R (free to use but redistribution prohibited).

The only problem I’ve noticed so far is that the Aller font is rendered with spaces elided in some situations (notably JuK’s track announcement popup), which I can’t figure out.

Are there other good, free fonts out there that I’m missing?

Attention kdesvn-build users

If you’ve been using kdesvn-build to build qt-copy, I recommend updating to the Subversion /trunk version, or using the 1.9.1 release. This is to adapt to a recent change to the qt-copy configure script, which causes an infinite loop (with subsequent disk fillup thanks to output logging). 1.9.1 will not work with older versions of qt-copy however.

For those who are interested, the change is to add a method for accepting a license without user prompting, which means that the previous method kdesvn-build employed (essentially running sed on the configure script) is now unnecessary (and harmful :-/).

In other KDE news, I ran across an issue with KWin closing on me after I closed out of all applications, starting from the other day. I’ve committed a fix to trunk, but I’m still not sure why it’s started exactly. But if you’re running into issues with KWin closing on you when you close all windows make sure to update kdebase.

Big news

You may have noticed that I was in port longer than normal between deployments. The reason is that my sea tour is over.

Right now I’m on leave, in the transition period between checking out of my last command and checking into the next one. I will be on instructor duty, responsible for training some of the Navy’s best and brightest (which is to say, I’ll just be one of the many cogs in the training pipeline, but still).

I just got back today from doing some house hunting in the area that I’ll be stationed, looks like I’ve managed to obtain a suitable place.

Of course, with any major transition needs to come some inward reflection. I’ve set aside some goals for myself to accomplish over the next 2 (or so) years as I accomplish my shore tour:

  1. Decide whether I want to stay in the Navy or not. I don’t hate submarines, but then again the Department Head tour that would be next for me would be, if anything, even more stressful. Not only that, but since my first boat was an SSBN, I would be pretty much guaranteed to be assigned to an SSN for my DH tour. SSNs have much longer times away from homeport (although they do at least get to make port calls — I’ve never seen a port other than Kings Bay, Georgia). I can say with certainty that I ended up being much better at the job than I thought I was going to be going into OCS in January 2005, so I know I’d do well if I continue on. In the end though, I think family issues may preclude me from remaining in the submarine force.
  2. A more mundane, though practical goal, would be to complete a master’s degree. Right now I can basically do Computer Science or some kind of Engineering Management course that qualifying Engineer Officer from Naval Reactors has set me up for. I’d like to do this before I complete my instructor duty assignment.
  3. I would like to attend at least one KDE or open-source conference! I should have more leave opportunities available to try to do so this time at least.
  4. And a shore tour wouldn’t be complete without hitting the gym 3-4 times a week at least. I want to get myself to where I don’t have to panic for the 2 weeks prior to a PRT to avoid going onto the “Fitness Enhancement Program” (although even that beats 2006 when I had to panic for 2-3 weeks prior to a PRT just to pass).
  5. I might start playing video games again. If I can get myself to swallow the swill that is modern video game marketing I might even sign up for the PlayStation Network so I can at least download game demos for my PS3 BluRay player. I’ve been waiting for Sony to quit referring to it as PLAYSTATION NETWORK, hopefully Sony gives up before my PS3 dies of underuse. Until then my Gamecube library still works fine and is (in retrospect) better than ever.
  6. And let’s not forget the various applications I maintain. It would be nice to merge JuK’s style into the modern era. Maybe I’ll learn KHTML or WebKit someday as well, as it’s a nice mix IMHO of systems programming (i.e. JavaScript, HTML parsing) and practical applications.

I’m also trying to build my own personal network to see what the possibilities are for non-Navy gainful employment about two years out in case my family situation doesn’t support that kind of sea duty.

Right now I see four feasible options assuming I have to get out:

  1. Get a job in the computer field programming. I think this would be ideal obviously, especially if it can also be open-source related.
  2. Get a nuclear-related job referred to me via the various submarine officer headhunters out there whose only purpose in life is to redirect officers getting out of the sub fleet to choice (and not so choice) nuclear jobs. Demand is so high that the employers pay for the privilege of fighting to hire you.
  3. Get a non-nuclear-related job via the same headhunter. Apparently submarine officers are highly regarded in the business world in general. Who knew?
  4. Give up and work for The Man in the form of some civil service job (in an attempt to make some of my Naval service time usable for a .gov pension). To be honest I think I’d rather just suck it up in the Navy if it came to this route.

Anyways though, it will be time to revisit this post in about a year I think.