Adventures in Fedora XFCE: Switching Displays

Having recently finished installing Fedora XFCE on my new laptop, I set out to tweak a few things that I found problematic. Nothing against XFCE mind you, nothing’s perfect. But one thing I would really like would be to have my OS reliably switch display settings automatically when my laptop docks and undocks. Here’s the end results of my findings:

Bind that to a hotkey or something similar and you’re set. Read on for further explanation.

Continue? »

Adventures in Fedora XFCE: Getting Started

Fedora LogoSo I recently acquired a new laptop. It was shiny and new and full of features and running an OS I didn’t want. Thankfully, consumer-grade hardware is not yet so completely locked-down as to disallow me from fixing the latter problem. I’ve been using Ubuntu for a long time, but for various reasons I decided to go with Fedora this time around. So this post is my first in what will hopefully be a series of commentary (and some nerdrage) on my adventures in Fedora XFCE.

Continue? »

An Overview of 4 Chore Tracking Services

If you consider yourself an adult in some manner you’ve probably realized that adulthood comes with a slew of responsibilities, such as household chores. If you don’t particularly like such things and/or are generally bad at keeping things tidy at home (HI!) this can be a problem. It can be a rather daunting ordeal to keep up with everything. Thankfully, Internet is here to help! A few cursory web searches and some social media outreach uncovered a wealth of chore tracking and management websites available. The following is an overview of four such chore tracking websites.
Continue? »

Systemic trends in the gaming industry

The following is an excerpt from a conversation I had elsewhere about an article describing a non-gamer playing Halo: Reach. In it, I talk about how the choices individual video games make (or rather, the choices individual studios make in developing the games), while not inherently wrong, become problematic when they collectively form negative systemic trends in the gaming industry.

There’s a few things going on: there’s the story of the individual, the story of the community, and the story of the industry. As far as the individual is concerned, gamers come in a variety of forms and clearly a single game cannot cater to all of them. However from the point of view of increasing market share you want to make your game accessible to as many individuals as possible. There’s nothing wrong with including an easy mode; veteran gamers can skip it, while noobs get eased into things.

For the community, it is every collective’s right to be as inclusive or exclusive as they please. However, if they want to spread the fun of something to more people, it behooves them to be welcoming and encouraging rather than disparaging. Assuming a nice, well-meaning noob, there’s no reason to not be nice to them in turn even if you don’t feel like being one to help or mentor them. Courtesy, civility, and sportsmanship should be constantly encouraged and reinforced in online gaming communities on principle.

For the industry, there’s definitely a problem of perception. They WANT to be perceived as all-inclusive (to increase profits, of course), but the major studios still focus a lot of their advertising and development towards a core demographic of gamers. Not to say there isn’t good reason why they’re doing that: that’s where the money has been traditionally.

In the end, there’s nothing inherently wrong with individual games NOT including an easy mode or having complex controls. But when there is a trend of inaccessibility across the realm of flagship/AAA titles, then it becomes a systemic problem that merits discussion. Is the solution to offer alternatives in the form of (for example) casual games, or is it to innovate our control schemes (Wii, Kinect), our design principles, or something else?

Coding: Speed vs Legibility

Much like handwriting, the faster you code the less legible the code (likely) becomes. This isn’t always a bad thing, but balancing speed vs legibility is a conscious choice that developers should be making. There are exceptions to this, of course; when one is optimizing code for run-time performance legibility can go right out the window.

Consider the following bits of Python[1] code.


I’ve created a list of three lists, where each member list contains character strings. For this example, I want to create a new list that contains the second string of each member list. If a list does not contain a second item, I will insert something to denote this into my new list. This being Python, there are a myriad of ways you can accomplish this, but I will focus on just two.

‘Fast’ Version[2]:

‘Legible’ Version:

Both are perfectly valid ways of achieving the same goal. The main difference being illustrated here is that (for me at least) the first version was much faster to write than the second version. However, the second version has a wider audience that it will make sense to when first reading it. This includes: colleagues not terribly familiar with Python, and my future self who may revisit this code after having forgotten what “map” and “lambda” mean.

These are but a few of the things that should be taken into consideration when trying to determine your coding style and practices. What else is there to consider? Do you prefer one of the above methods over the other, or would you approach this in a different way entirely, either in Python or in a different language?

    Additional References

  1. [1] Python (programming language) – Wikipedia
  2. [2] For those interested in learning what’s going on: Python: Lambda Functions – and Python map() function.

As Adobe cancels mobile Flash, whither Flash games?

When I was writing about Adobe AIR I ran into a lot of talk about, of course, Flash. At the time there was nothing novel about it, so I thought I wouldn’t mention it. Today’s news, however, changed my mind. I was made to think: what will happen to Flash games on mobile platforms?

First, a little retrospective.

Flash has been around in various incarnations for over 20 years.[1] It’s changed hands a few times, been through several major revisions, has legacy support to worry about, and is no stranger to feature bloat. These are all perfect conditions for creating software that is resource-intensive and power-hungry. It is no surprise, then, why Flash never did well on mobile platforms and would not have been able to without a major(ly expensive) overhaul from the bottom up. All this seems tied to larger business decisions at Adobe as well, given yesterday’s announcement that they will be laying off over 7% of their workforce.

So then, what will happen to Flash games? So far developers have had to resort to creating ports of their games for the various mobile marketplaces that they want to access. As part of today’s news, Adobe made mention that developers could use Adobe AIR to package and distribute their software as mobile apps. That strikes me as a lot of trouble, especially for hobbyists and other small developers who just want to make a quirky game and get it out fast. Online portals (like Newgrounds and Kongregate) are a great venue for these small games.

So will AIR be the next big move? I don’t think so. More than likely, things will move to the cloud.[2]

Enter companies like Skyfire and iSwifter. They came to the market with the idea of streaming Flash (and in the case of Skyfire, other media formats as well) to mobile devices that don’t (or shouldn’t[3]) run Flash natively. While Skyfire seems to be plagued with version fragmentation and performance issues, iSwifter seems to be doing well for itself. It provides a portal for Facebook games, Google+ games, and is coming to Android before the end of the year. Additionally, today’s announcement by Adobe could prove beneficial to the game-streaming app. If this proves successful, it could be the next model for other portals looking to expand their user base.

    Additional References

  1. [1] For a quick background on what Flash is and where its been, check out the Wikipedia article. In particular, be sure to read the following sections: History, Availability on operating systems, and 64-bit support.
  2. [2] Cloud computing – Wikipedia
  3. [3] Skyfire Mobile Browser vs. Android 10.1 | Battery Life Comparison – YouTube

Adobe AIR on Linux

For those looking for some quick Ubuntu links:

As mentioned in my previous post, I used to be an avid user of TweetDeck. Unfortunately, Adobe AIR, the runtime environment it depends on, is no longer supported under Linux. This is old news. However, having had this come to my attention only recently, I was disappointed (though not entirely surprised) at the continued stagnation of the platform in the face of Adobe’s promises. Reading into those promises only furthered my disappointment.
Continue? »

Goodbye to TweetDeck on Ubuntu

I am a fan of TweetDeck. I try to stay up-to-date on its development (though this has been difficult since the official TweetDeck Blog hasn’t posted anything since being bought by Twitter as of this writing). I’ve used it almost since I started using Twitter, and its run on Windows, Android, and Ubuntu. It hasn’t been without its problems, but for the most part its been good to me and has been serviceable enough that I used it almost exclusively. Until recently, that is.

Continue? »

Creating custom URL handlers in Ubuntu 11.04, 11.10, GNOME 3.0

Ubuntu LogoFor those on a time-crunch, here’s the short answer:

  1. Create or edit a .desktop file[1] in /usr/share/applications that looks like this (note lines 6 and 13):
  2. Run the following command:
  3. Done.

For a bit of an explanation, keep reading.

If you’re like me, you sometimes stumble across a strange system administration problem that you solve by hacking together a solution that you don’t know why it works. This happens all the time. Yes, negligence or laziness can be the culprit, but sometimes what you did is so obscure or esoteric that its simply not cost-effective to spend the time researching the reasons it works. That latter scenario can often be blamed on a case of poor documentation.

In my case, it was a case of poor documentation of a recent change in system policy and a lack of uptake in the blogosphere in figuring it out.

Continue? »

    Additional References

  1. [1] Desktop Entry Specification (Latest)

Messy Messy…

There’s a whole lotta mess involved in starting a blog. Let’s see how long it takes me to get this thing up and running.