Move Gnome 2 panel to secondary monitor

Saturday, Sep 24, 2011 5:34 pm
William Barnes

This may be irrelevant with Gnome 3, Gnome Shell and Unity taking over, but if you have dual monitors and want the Gnome panel (e.g., menu bar) to span multiple monitors, you can follow these instructions:

Here’s a step-by-step way of moving a panel to another screen:

  1. Right-click the panel you wish to move and select “Properties”.
  2. Uncheck the “Expand” option under the “General” tab.
  3. Grab one of the edges of the panel by clicking on the left or right end (top or bottom end for vertical panels).
  4. Drag the bar to the desired screen and position.
  5. Check the “Expand” option in the “Panel Properties” window and click “Close”.

From Chris Jean’s blog.

WordPress Settings Form Helper

Monday, Sep 12, 2011 4:36 pm
William Barnes

I am currently writing my first WordPress plugin. I attempted to use the Settings API on my plugin’s settings page, but found it was a little cumbersome. So I wrote a helper to cut down the number of functions I needed to define. My plan was originally to simply automate the API calls, but it quickly outgrew the Settings API and does quite a bit more. I am posting it, hoping that it will be of use to some other plugin developers. The class handles form creation, display of options, security (wpnonce, back-end validation), and storage.

Read the rest of this entry »


Saturday, Sep 3, 2011 2:50 pm
William Barnes

I do my best not to criticize other people’s grammar, but if you’re a corporation, you should get it right. I just clicked the +1 button on an article and got told that I “publicly +1’d” the article. Is that correct? Or is like all the signs that say “CD’s”? I’m unsure. The apostrophe means that it is a contraction, i.e., something is missing. Is “+1’d” a contraction of “plus oned”? Or should it have been “+1ed”? Google should have picked a less awkward name for its like button.

Google Circles Revisited

Thursday, Jul 14, 2011 12:51 pm
William Barnes

I’ve been using Google+ for about a week now, and I like it. Why? I’m not sure. Maybe only because it’s like Facebook, but not Facebook. I can share things. I can post comments. I can’t really do anything I couldn’t do on Facebook. I’ve never used Hangouts, I’m not sure I’m likely to do so. My RSS aggregator is more useful than Sparks. The only difference is Circles, but I’m coming to the conclusion that Circles isn’t that great either.

Google Circles is based on the idea that we have different groups (circles) of people in our lives: family, friends, people we met at parties, etc. We don’t treat them equally in real life, why do it online? I think it’s a natural concept, but I’m pretty sure that Circles gets it wrong in subtle ways.

Why groups are better than circles

Difference between friends and people with shared interests

Facebook Groups are like circles that people choose to join. All members can see who is in the group and can talk to everybody in it, even if they aren’t “friends”. This reflects the fact that in plenty of formal groups (clubs, workplaces, etc) there is a shared interest, but your association with the members doesn’t go any further than that.

Let’s say I have an interest in widgets and I join the Toronto Widget Club (TWC). If that club has a group, then I join the group and have access to all the widget news and discussion I want. Updates from the group show up in my feed, but a lot of the discussion is segregated. When I make a fascinating widget discovery, I can post it to my wall for friends, to the group, or both. Contrast this with circles. Under the current system, I would have to obtain a list of people in the TWC and add them all to a circle. They would receive my widget posts, but also all my public posts. Many of them wouldn’t care about my personal life or other interests. Circles miss an important distinction between “friends” and “people with a shared interest”.

You might argue that this blurring is good because it might develop friendships where there was previously only a shared membership in the TWC. However, it may also cause friction where people, who tolerate each other in the pursuit of widgets, have otherwise conflicting (e.g., political) interests.

Difference between active and passive sharing

Oversharing could be addressed by never sharing anything publicly and deselecting the TWC when sharing non-widget information. However, when a member of the TWC takes the time to visit my profile, I think that I’d want them to learn about my other interests. This information would be hidden from them by Google+’s privacy settings. There is a difference between what I want to actively share with (broadcast to) a group of people and what I am comfortable with them having access to if they want to seek it out. I want to broadcast widget news to the TWC, but I want to passively share my other interests as well. Thus, they should be able to see political or other posts if they view my profile, but these shouldn’t show up in their feed unless we are friends outside the TWC.

Related to this point is the noticeable delineation between group posts and wall posts. Google+ doesn’t yet provide really good indicators that posts are just for certain groups. You have to look at the visibility of the post. It’s not clear whether a particular Google+ post is open to other circles or private to the TWC, whereas in a group there is a clear indication.

Difference between choosing and assigning membership

I already hinted at the problem when I said that members would have to obtain lists of group membership. In addition to that, they would each have to maintain their list. Groups are superior because there is a single canonical list. Further, you don’t have to rely on others to acknowledge your interest, you register it yourself. This also means that when you tire of widgets, you can remove yourself.

When are circles better than groups?

There are a few cases in which circles are better for groups. Circles are better when group membership is less defined or, more importantly, a sensitive matter. Groups require either public membership or an administrator who decides membership. This is fine for the TWC, but what about groups of friends. I have separate groups of pretty much non-overlapping friends; there is an unspoken consensus about who is in each one. It would be coarse to require them to join a group to find out what we’re doing on Friday. The additional effort of harmonizing the circles of various members is really just socializing and reflects the addition of a new person to a close group of friends.

Circles are not for privacy

First, a little rant on privacy. People expect miracles from social networks in terms of privacy. Rule number one for using the internet: do not say anything on the internet, except under pseudonym, that would terribly embarrass you if it became public. My favourite tweet regarding Google+ came in the early days when I had an invite, but they were at capacity. Unfortunately, I didn’t save it, but it essentially said “Posts you share with a circle can be reshared. Google+ FAIL“. Everything you say online can be reshared. The real weakest link in your privacy is your friends. They have to understand that you intend something to be private and they have to respect that. Of course, even if you trust your friends, you still have to worry about flaws in the software, so if you want something to stay private, then talk about it in person or at least use a medium that is intended for one-to-one conversation (chat, email, etc). I’m not saying Google should be held blameless for the privacy flaw that will inevitably occur, buy anybody who depends on Circles as a privacy guard is asking for trouble.

But Circles provide a little privacy

So what should you use circles for, then? You should use them only to insulate other circles from things they aren’t interested in. For example, people from work don’t need to read about the party you went to on the weekend. If you have two non-overlapping groups of friends, you may only want to share the photos with friends who were invited to that party.

On the Facebook feed, everybody is shouting in all directions, all the time. Circles lets you direct your voice a little bit better. In that sense, Circles provide a bare minimum of privacy. Think of it more like being at a party and standing with a group of people than being in a cone of silence.

How Google could improve Circles

Google+’s PR says that you have circles of friends and they’re not all the same. So why, then, are all my Google Circles the same? You should have more granular control over circles. Examples: whether you want to see Public or semi-Public (ie: “Your Circles”) posts from members of a circle or just ones that they explicitly share with you; whether people in that circle can see your Public or semi-Public posts.

There should be public circles. These would be just like groups (in fact, they could be Google Groups). Some could have open membership, some could be moderated. It would address the problem of canonical lists. Further, in combination with the above suggestion, it would allow you to communicate with people who only share a particular interest.

You should be able to post something that is broadcast only to particular circles, but is publicly visible on your profile. This is the biggest deal for me. I like to have things be public, but I would happily do a little work to shelter others from my oversharing. Until I can do this, I’ll probably be posting everything publicly and using Google+ just like Facebook. It also reflects the fact that one person is not always the best judge of what other people will find interesting. Maybe someone from elementary school will be interested in my night out, or have an insightful comment on a legal- or computer-related post. Why should I hide things from them?

Topical circles

I think that there is a different type of circle that I can’t quite define at the moment. I’m going to call it a topical circle for now. It is somewhat nebulous, like a circle of friends, but it is based on a shared interest like a public circle. It would be interesting if circles could be formed algorithmically for discussing particular topics. The post could be visible to friends of friends who could get in on the conversation and then be included in similar conversations in the future. Eventually, the circle would probably form into a more or less permanent group. That would be interesting.


Friday, Jul 1, 2011 11:45 am
William Barnes

In reply to “Google+ Everyone Should Use It“.

I don’t know about Circles as a privacy tool. It’s almost guaranteed that at some point (probably at multiple points), a bug will expose information from one circle to another. So I still wouldn’t say anything to a circle that I wouldn’t want going public.

One could use it to target certain groups with comments. I often make legal comments on Facebook that are only funny to people from school. But, then again, who am I to decide who would be interested in my posts? Let’s say I post a comment about a recent Supreme Court case. Sure, my school friends will probably be interested, but I bet that a number of non-law students would be, too. Coming from a different background, they might say something that nobody from school would have thought of. How am I supposed to know who will be interested in what? Tagging is a better solution to that. Let me say “This post is about ‘Law'” (or “Computers” or “Cake”) and then let my friends say “I don’t want to hear Billy talk about ‘Law’ anymore” and hide all those posts in the future.

Maybe I’m just bitter because they’re at capacity and I can’t sign in.

Getting your pictures out of iPhoto

Monday, Sep 20, 2010 9:48 pm
William Barnes

iPhoto, like most Apple products, is great…as long as you only use other Apple products. But once you want to upload a photo using your web browser or copy your library to a non-Mac computer, things get difficult. Apple puts unnecessary roadblocks in your way. This quick post is simply intended to cover two things I learned trying to get my photos off my Mac.

Backup your iPhoto library on a non-Mac

HFS+ stores metadata in the file system in a way that isn’t transferable to a non-Apple FS like FAT32 or Ext. In order to backup your iPhoto library (~/Pictures/iPhoto Library):

  1. Create a disk image using Disk Utility
    • Make it the same size (or just a little larger) as your library.
  2. Mount the image
  3. Copy your library into the image
  4. Unmount
  5. Copy the .dmg file to your backup computer

Export your photos without losing event data

This method will unfortunately lose other meta data like people tagged by iPhoto face recognition. However, you will at least be able to get your photos out in their original form organized by date and event.

  1. Browse to ~/Pictures
  2. Right-click (Ctrl-click) on your iPhoto Library and choose “Show Package Contents”
  3. Look in the “originals” folder
  4. Copy your photos

Transfer money using your mobile phone

Saturday, Apr 3, 2010 12:01 pm
William Barnes

Here is my idea for a mobile phone payment system that doesn’t require extra equipment or crazy wireless work.

  1. You have an application on both phones
  2. The seller inputs the amount and it generates a barcode that contains the payment information
  3. The buyer scans the barcode with his phone, loading the payment information
  4. Buyer clicks pay
  5. Money is transferred
  6. Seller receives a notification on his phone

By putting the pay button in the hands of the buyer, this eliminates the chance that the seller can steal your credit card information. The seller will still get confirmation from a trusted third party that the money has been transferred. Ideally, there will be some sort of authentication done on the buyer’s phone.

If prices are set in advance, it wouldn’t even be necessary for the seller to generate a barcode on his phone. Imagine you want to buy a hotdog from a street vendor but you don’t have cash. Instead of just having a sign with prices, the vendor might have a sign with prices and a pre-generated barcode. You scan the barcode on the sign, press pay, and a few seconds later the vendor gets a message on his phone confirming your payment. Likewise, a barcode could be printed on your bill at a restaurant (to avoid the server disappearing with your credit card). Or how about an internet-enabled soda machine that displays a barcode and lets you pay with your phone?

Note: the mockup above shows an Android phone, but any phone with a decent camera should work. It’s also not very pretty, I’d expect anyone who steals my idea to make it look nicer.

Why are people still talking about whether the Nexus One failed?

Sunday, Mar 28, 2010 11:32 pm
William Barnes

I’m getting really annoyed with seeing at least one article every day with a title like “Why the Nexus One failed” or “Did the Nexus One really fail?” Not to mention a reference to this in countless other phone–, Google– or Apple–related articles throughout the day.

The worst part of it is that the articles are all the same. Nobody seems to have any original explanations. In addition, these explanations are all things people were talking about back when the phone was first released: it’s only available online; you can’t touch it before you buy it; it’s not being advertised; it’s expensive. Why is all this such a surprise to bloggers? Answer: I don’t think it is, but they’ve got to fill their daily quota.

The Nexus One was never destined to be a huge success. The only people who thought it was were analysts and we all know that analysts get over-excited about everything released by Google or Apple. When the thing was announced, Google predicted they’d sell about 150,000 units (which was a fairly accurate guess) but nobody remembers that prediction because some analysts predicted they’d sell 3 million.

I also think it’s about time we stop using the iPhone’s one million in 74 days record as a benchmark. The Nexus One didn’t beat it but circumstances were different. The Motorola Droid did beat it but circumstances were different (the Droid costs less; on the other hand, the iPhone had less competition).

Maybe the problem is just that we have too much news. If we had less, maybe it would be better quality. On that note, I apologize for the quality of this post. I’m writing it at two in the morning on my Nexus One.

Dual screen wallpaper script

Wednesday, Feb 24, 2010 6:41 pm
William Barnes

This is a script written in Python that combines two images into a single dual screen wallpaper so you can have different wallpapers on two monitors. It can be run automatically to randomly change your wallpapers at set intervals. It is intended for Gnome users who like to change their wallpapers often but dislike having to create dual-screen wallpapers in Gimp (like me).

The code is very poorly written and relies on a few assumptions: (1) you have a single, writable directory with wallpapers, (2) this directory contains only image files (jpg, gif, png), (3) either your monitors are the same aspect ratio, or you don’t mind some stretching/squishing (though there’s a half-fix if you read the comments in the code), (4) you’re comfortable editing the first few lines to configure your screen layout. This is my first Python script. It’s not terribly bulletproof or feature rich but it does the job. Once I’m a bit more comfortable with Python, I’ll probably write an improved version with more options and error checking.

Edit the code below and save it somewhere (e.g. ~/.scripts/ then execute it with: python ~/.scripts/

Read the rest of this entry »