How I Buy Games (as a Flowchart)

Being the geek that I am, one thing I’ve wanted for a while is a diagram of how I decide what to do when a video game catches my eye. I finally made one.

(Note: further commentary below the diagram)

Flowchart describing how I buy games

Why do I require such strict conditions before I buy games? It’s fairly straightforward, actually:

  1. I have strong and well-justified feelings about DRM.
  2. I’m a student with very little money.
  3. I’m a full-time Linux user and have been since I was 16.
  4. When you consider all the other ways I entertain myself, I probably have more games than I’ll ever be able to beat. (In addition to the 100+ games I have as downloads, the boxes in my closet contain roughly 500 game CD-ROMs and a CD-R full of disk images made from legally-purchased diskettes)

So, in that case, why do I keep buying games at all? In my own small way, I like to be a patron of the arts, so I try to give at least a little to every game I approve of, whether or not I’ll ever play it.

I still have to get some kind of short-term return on investment with my tight budget, but it’s better than nothing. After all, a little money to a lot of worthy developers is better than a lot to a few quasi-worthy ones… especially when I use every means at my disposal to cost them less in download bandwidth.

UPDATE 2016-03-31: And, now, it’s looking like both of the examples I gave for spending more than $5 are also examples of people reneging on promises. (Notch is no longer in a position to enforce his alpha-period “I will open-source Minecraft when it’s no longer popular” promise and Stoic Studios have decided to retroactively reinterpret the ambiguities presented by not writing their Kickstarter The Banner Saga promises in legalese.)

From now on, I’m taking a hard-line stance: My buying decisions will be made purely on what I’ll receive immediately upon payment. Future promises will carry absolutely no weight.

Posted in Web Wandering & Opinion | 2 Comments

When Linux Freezes…

Like many geeks, I’ve moved less tech-savvy relatives to Linux and, in my mother’s case, common ideology goes a long way to overlooking bugs and rough edges. However, working with her has revealed a serious problem in the Linux desktop as implemented by all major distros.

Once every month or so, I get called in because “Linux froze”. Almost every time, it turns out that some program XGrabPointer‘d the mouse, then froze, leaving the system live and the mouse moving… but no clicks being received. (The exceptions are when she’s using her laptop and an Intel graphics driver bug freezes the X server)

While not ideal, there used to be a clean workaround for this. Just set the appropriate xorg.conf toggle and teach them to use one of Ctrl+Alt+Backspace, Ctrl+Alt+KP_Multiply, or Ctrl+Alt+KP_Divide to recover. However, these days, the old approaches don’t work, the system is in upheaval, and nobody with any significant Google PageRank seems to care enough to keep their documentation up to date.

Despite my loyalty to the platform, I’m not too blind to recognize that this problem, in and of itself, is easily enough to keep Linux on the desktop constrained to households with a full-time geek. (If for no other reason than because it’s an easy PR weakness for Microsoft and Apple to attack if Linux gains any ground)

Wayland could fix this problem if it gains adoption… but it has its own issues:

  • It’s still very young
  • Some people (me) need high-performance 3D drivers, GPU acceleration for HD video, and professional-quality dual-head support, but I haven’t heard anything on whether nVidia will support it with their binary drivers (or ATi for that matter).
  • There is no clear plan for a replacement for ssh -X that’s better than mere VNC.
  • I haven’t been promised a compositor which will forbid client-side window decorations (CSD for short).

The others, I can see being solved with time, but that last one is a big issue. The KWin developers have already said they’ll force force-server side window decorations, but…

  • There’s apparently nothing beyond “peer pressure will save the world” and “applications which don’t use popular widget toolkits are a myth” to prevent an application from insisting that it also show client-side ones.
  • What if I want to forbid CSD but whitelist Chrome and preserve the effect I get by maximizing Firefox and hiding the windeco? (No, not fullscreen. Even with Xinerama hints, Firefox modifies its UI when it detects that.)
  • Most important: I run LXDE because I value a useful desktop over a glitzy one. Given current trends, it’ll be at least a decade before KDE 4 is as stable and responsive as KDE 3.5 was. (I used to be a loyal KDE 3.5 user, so nobody was more disappointed by Konqueror 4 and KDE 4.1 through 4.6 as I was.)
Posted in Web Wandering & Opinion | 1 Comment

Preventing Broken Links

TL;DR: If you’re going to move to a new URL, fill out my templates and put them at the old one to make damn sure other people’s links don’t break.

Yesterday, I finally found a use for the root http://ssokolow.com domain… I delegated it to GitHub to shorten and professionalize URLs for my projects. (eg. http://ssokolow.com/quicktile)

…but that meant that I could no longer use .htaccess to set up permanent redirects on URLs like http://www.ssokolow.com/ContactMe.

After a little research, it turns out that GitHub Pages doesn’t seem to have a method of declaring HTTP redirects… but Google and Yahoo will treat no-delay meta redirects as if they were HTTP 301.

Here’s what I came up with for a general, thorough way to ensure the least chance of broken links. (including .htaccess in case I switch hosting in the future) The example assumes you’re moving a whole domain (eg. from SourceForge to GitHub), but it applies equally well to specific URLs within a domain.

(Also, don’t forget to use the change-of-address notification feature in Yahoo and Google Webmaster Tools)

Posted in Geek Stuff | 1 Comment

My Issues With AppIndicators

With the work I’ve been doing on my systray icons in the last few days, it occurred to me that I should probably mention that, when given the choice, I explicitly turn off Ubuntu-style AppIndicators for applications with regular systray icons.

It’s not that I don’t like the idea. I think it’s a good one. The problem is that the year is 2012 and I’m using Linux. When I left-click an icon, I expect it to toggle application visibility, not display a context menu where I have to use another click to toggle visibility. That’s reserved for right-click.

Just because Apple took so long to accept the reality of the two-button mouse doesn’t mean my Linux desktop should punish me for not using some kind of desktop widget system to glance at things like torrent status. (Though, given how many other matter-of-personal-taste apple-isms Ubuntu has been adopting, like the global menubar and the titlebar buttons on the left-hand side, it doesn’t really surprise me that they’d blindly adopt that design quirk too.)

Now, if AppIndicators gain the ability to relegate the menu to right-click and bind a window handle to left-click, I’ll be the first person to welcome consistency between different applications’ definitions of “toggle a window that’s already shown but is on another desktop or is below other windows”. (Personally, I think it should be “If the window isn’t on this desktop and top of the stack, then raise it on this desktop.”)

Posted in Geek Stuff | 1 Comment

Polishing up the Lubuntu Notification Area

Whether you call them system tray icons, systray icons, or notification icons, you have to admit that these things can easily get out of control, even on Linux. Attempts are being made to tidy them up, like appindicators and the messaging menu but, when you get right down to it, there’s always going to be a certain amount of discretion necessary on the part of the end-user.

Given that lxpanel (and, therefore, anything based on plain vanilla LXDE) doesn’t have a KDE-style “hide these icons” feature and that I couldn’t figure out how to get the messaging menu to work inside the lxpanel appindicator harness, let’s see how much we can polish up the tray.

Goals

  • There should be as few tray icons as feasibly possible
  • Tray icons should, as much as possible, be activity-oriented rather than tool-oriented.
  • Icons must not be a distracting mish-mash of color. (Not even the transient ones)
  • Icons should act effectively as indicators that applications require my attention.

Solution (Manual Version)

Step 1: Just a few activity-oriented icons

The first point takes a little bit of thought, but is mostly simple if you pick the right tools. Here’s how my load-out looks:

Icon Purpose
Dropbox Backup, Sync, Share
XPad Scratch and short-term TODOs
BasKet Note Pads Long-term records and reference
(Use the Trinity version for stability)
Audacious Media Player
  • Playback control via right-click
  • Volume via scroll wheel
Pidgin All real-time communications
(Empathy might be better for some people)
Thunderbird
  • All non-realtime communications
  • RSS Reader
  • Use FireTray for a tray icon
Parcellite Clipboard history

That’s probably the most compact I can get it for now.

Step 2: Icons shouldn’t be distracting

I’ve chosen to accomplish this by making permanent residents of the tray look like carved indentations without any color and temporary residents look like monochrome glyphs.

  1. Fix the Pidgin icon’s ability to display status notifications.
  2. Copy icons from Elementary into ~/.local/share/icons/elementary-mono-dark to give Dropbox’s idle icon, Pidgin’s available, idle, and away icons the look of carved indentations.
  3. Do the same thing with Elementary’s icon for Tomboy Notes but put it into ~/.trinity/share/icons/ instead and mind the use of “22×22” form rather than “22” for folder names.
  4. Adjust the Faenza icons for Tomboy Notes and Audacious (use the former for XPad). (And, if you use Deluge rather than Transmission, you’ll need to grab that from Faenza too)
  5. Grab the Elementary Parcellite icon and, if you use JDownloader, my quick icon for that.

I’m still working on the best solution for Thunderbird, but here’s what it looks like sans Thunderbird:

Screenshot

Step 3: Icons should act as indicators

The final step is to make icons significantly more noticeable when they need attention. This is actually surprisingly easy for the ones which support changing their state.

For ones like Deluge which blink to get your attention, this is already done. For the rest, just mix and match so the normal icons and the attention icons are from different themes.

  • Just use the elementary-mono-dark icons for non-idle Dropbox the way they’re supposed to be used. (White icons that contrast well with the black will jump out at you when you’re used to it being a carved hole in the black)
  • For Pidgin, just make sure you don’t have an icon for “message needs attention” and it’ll fall through to the default app icon… which, in Elementary, is a purple speech balloon with an exclamation mark.
  • If you want to remind yourself to not leave Pidgin on “do not disturb” or “invisible” grab the icons from Elementary Pidgin 2 and use them as your icons for those statuses.
  • FireTray can handle showing a well-contrasting message count when you’ve got mail, so just replace the default Thunderbird icon with something that doesn’t contrast and you’re all set.

The only thing I could think of to make this better would be if Audacious supported showing play/pause/stop icons for its tray icon. Don’t you agree?

Screenshot

Solution (5-minute Version)

Pop over to GitHub (link is to a specific revision) and grab these directories from my profile repo:

  • home/.local/share/icons
  • home/.trinity/share/icons
  • home/.local/share/images (optional)
Posted in Geek Stuff | Leave a comment

Converting Faenza Panel/Toolbar Icons into Elementary Panel Icons

Icons that look like they’re carved into their substrate are all the rage these days, but if you’re not an artist, making them can be tricky and the Elementary them Lubuntu uses by default doesn’t have a large selection ready to be patched into Elementary Dark to get that effect.

In this tutorial, I’m going to show you how quickly and easily adjust PNG-format toolbar and panel icons from Faenza (another popular, GPLed icon theme) to fit in alongside Elementary’s panel icons. (Good for quickly replacing tray icons from niche applications with less distracting ones.)

Note: This technique leaves the Faenza icons translucent, so they’ll only match the Elementary icons on the one background you tested them on. If I can ever find the time, I’ll figure out how to solve that problem and update this guide.

Step 1: Faenza icons are too dark

Simply open up the PNG in GIMP and set the layer opacity to 50%. That should match the general icon brightness (at least against the default Lubuntu panel background) but the icon will now feel flat and the edges won’t be as sharp as in Elementary.

Step 2: Sharpen the lines

Using the “Select By Color” tool (and, if necessary, the manual rectangle select), shift-click to add colors and ctrl-click to remove them until you’ve selected only the white outlines of your icon.

Copy the selected pixels, create a new transparent layer above the existing one, and paste them onto it. Set this layer’s opacity to between 5% and 20%. 10% is often correct but you may want to load the icon into the panel to check.

Step 3: Un-flatten the icon

Using the Magic Wand and shift-click, select just the dark inside of the icon. Then create a new transparent layer above the existing two.

Now, select the gradient tool and make sure you’ve got a black-to-white gradient (black foreground color, white background color, and the “FG to BG (RGB)” gradient).

With the new layer and the inside of the icon still selected, you want to  draw a straight, vertical gradient from about 5 pixels above the canvas to about 5 pixels below it. Set this last layer to about 10% opacity and you’re done.

Screenshot

Can you tell which of these are original Elementary Icons and which are modified Faenza ones?

Posted in Geek Stuff | Leave a comment

Making the Pidgin Tray Icon Show Status in Lubuntu

Symptoms

On these Lubuntu Linux versions (and possibly others), the Pidgin tray icon never changes to show your status or notify you of unread messages.

  • Lubuntu 11.10 (Oneiric Ocelot)
  • Lubuntu 11.04 (Natty Narwhal)
  • Lubuntu 10.10 (Maverick Meerkat)

Reason

Pidgin uses its own names for status icons (eg. status/22/pidgin-tray-busy.svg) rather than the standard ones (eg. panel/22/user-busy-panel.svg) and doesn’t fall back to its default ones if they are missing… it just uses the application icon for any ones it can’t find.

The default Lubuntu icon theme (lubuntu) is a very minor tweak on the elementary-mono-dark theme and neither elementary nor elementary-mono-dark provide symlinks to offer the filenames Pidgin expects.

Solution

To make the tray icon show status, symlink the standard panel icons to the names Pidgin expects. There seems to be no standard panel status icon for “message waiting”, but since the Pidgin application icon in elementary is a purple speech balloon with an exclamation mark in it, the fallback works perfectly.

I’ve written a little script to automate the process. Run it to fix your lubuntu, elementary and elementary Dark themes. To fix other themes, just edit the two lines near the bottom which tell it where the themes are.

If you want to track the progress of getting this issue fixed upstream, I’ve filed a bug.

UPDATE: The icon theme bug got WONTFIX’d over it being an application-specific thing. Here’s the pidgin bug I filed.

I’ve made sure both bugs reference each other and now I want to try to distance myself from the issue. However, if you happen to read this months later and there doesn’t seem to be any progress made, please give them a polite nudge via the proper channels to let them know people care about it.

Posted in Geek Stuff | 6 Comments