We'll see | Matt Zimmerman

a potpourri of mirth and madness

Posts Tagged ‘Personal

Breadth and depth

I’ve always felt a little bit odd when people seem to yearn for “simpler times”: before telecommunications, before mass production…these fragments of an imagined past seem a tantalizing contrast to the present. For myself, I’m more often eagerly embracing the latest technology, learning how to use it to positive effect, and sometimes find it difficult to relate to this point of view.

I can certainly understand feeling nostalgic for an earlier part of one’s own life, a particularly enjoyable time, perhaps embellished further through remembrance. But what of periods which ended well before we were born, of which we have no first-hand experience?  Do we truly believe that our lives would have been better in another age?  Is this even a meaningful comparison?

Can we even compare our own experiences of childhood to our adult life?  Certainly, the world was a different place, but then, so were we.  Do we even remember what it was like for us?  Can an adult mind still relate with the experience of youth deeply enough to compare it with the present?  Similarly, it puzzles me that some parents seem to want future generations to repeat their experiences.  Shouldn’t we want them to make the most of their world, rather than trying to make it like ours?

I encounter these attitudes regularly when talking with people about technology, some of whom seem to feel that technology is depriving them of something.  I find this puzzling, since most of the time, I see technology as offering more choice.  At least, I used to find it puzzling, until I considered how more choice makes us less happy.  It also seems that we adjust to being happy with our circumstances.  This process can take some time, though, and if things are changing too rapidly, we may continue to feel dissatisfied until our expectations “catch up” with us.  We can also feel this way if we adapt too quickly, as we may take our world for granted.  It all seems to indicate that they are having trouble coping with changes in our environment.

Or, perhaps, the critics are right, and technology is corrupting our virtue.  I decided to take up this position myself to see if I could better understand it.  What better way to explore the question than through baseless conjecture thought experiments?  Here’s food for thought:

Thanks to advances in communications technology, we have immediate access to the people in our lives, wherever they are.  This enables us to maintain a certain level of social connection with people we never see in person, and therefore our social circles can be presumed to be much larger than they were in the past.  However, we have not been similarly blessed with more time to devote to these relationships, and so the average amount of time available for each of our “friends” is reduced.  The natural equilibrium in such a system might be to have a large number of relatively shallow relationships, rather than fewer, deeper ones.

A similar effect could be imagined for information.  With instantaneous access to a vast breadth of information, all similarly presented, we can lose sight of important differences between sources.  With so much unfiltered information, it all starts to look the same.  Is one point of view really worth more than another?  Do we even take the time to understand whose point of view it is?  It is all too easy to seize the first answer which presents itself, or worse, the most popular one.  We’re exposed to a lot more information, but are not yet equipped with a proportionally better ability to process it.

These patterns point to a common trend of increasing breadth over depth.  If such a trend does exist in technology, what effect is it having on us?  Is it a progressive trend, or will we eventually regain balance and see it reversed?  Personally, I am confident in the capacity of the human system to adapt and maintain order. The fact that people can sense an imbalance is an indication that we are healthy, and will in time find ways to cope with the change. We may not know what the solutions will look like, but we are already looking for them. Perhaps some aspects of our life will be temporarily worsened until we find them, but I believe the solutions lie ahead of us, not behind us.

Written by Matt Zimmerman

April 6, 2010 at 12:21

Posted in Uncategorized

Tagged with , ,

Cognitive time travel through reminder lists

Making a list

Credit: guinnessgurl/pamelaadam

I make a lot of lists: lists of things to do, things to talk to someone about, things to write, and mistakes never to repeat. I use them to keep track of various aspects of my life, and to help me to “shift gears” to a new task or project by filling my mind with the work at hand.

List-keeping is generally regarded as boring administrative work, something only important to compulsive organizers. When a writer wants to portray a character as meticulous and dull, they need only brand them as a list-maker, with eyes bespectacled from years of squinting over their lists.

The reality of list-keeping is much more exciting: reminder lists are a mechanism for cognitive time travel. They allow us to transport information from the time when it occurs to us, to a time in the future when it will actually be useful. Like a wormhole, they connect distant points in spacetime (though unfortunately only in one direction, as in the Stargate universe).

Throughout my day, I will remember things I need to do, though not right away: an article which looks interesting, or someone I need to remember to call. Putting these items on a list frees my mind to keep going with whatever I’m doing, knowing that the idea is not lost. A common scenario for me is that I’m riding the tube, reading RSS feeds offline on my Android phone using NewsRob, and come across something I want to explore further. There is as yet no wireless service on the tube, so I can’t do anything but read, but I can send myself an email using K-9 which will be delivered later. At the other end of the wormhole, when I’m back online, I receive the email (usually at my computer) and pick up where I left off.

Traveling through time in your head may not be as exciting as flitting about in a TARDIS, but it is much more accessible, and genuinely rewarding.

Written by Matt Zimmerman

March 19, 2010 at 11:25

Optimizing my social network

I’ve been working to better organize my online social network so as to make it more useful to me and to the people I know.

I use each social networking tool in a different way, and tailor the content and my connections accordingly. I don’t connect with all of the same people everywhere. I am particularly annoyed by social networks which abuse the word “friend” to mean something wholly different than it means in the rest of society. If I’m not someone’s “friend” on a certain website, it doesn’t mean that I don’t like them. It just means that the information I exchange with them fits better somewhere else.

Here is the arrangement I’ve ended up with:

  • If you just want to hear bits and pieces about what I’m up to, you can follow me on identi.ca, Twitter or FriendFeed. My identi.ca and Twitter feeds have the same content, though I check @-replies on identi.ca more often.
  • If you’re interested in the topics I write about in more detail, you can subscribe to my blog.
  • If you want to follow what I’m reading online, you can subscribe to my Google Reader feed.
  • If (and only if) we’ve worked together (i.e. we have worked cooperatively on a project, team, problem, workshop, class, etc.), then I’d like to connect with you on LinkedIn. LinkedIn also syndicates my blog and Twitter.
  • If you know me “in real life” and want to share your Facebook content with me, you can connect with me on Facebook. I try to limit this to a manageable number of connections, and will periodically drop connections where the content is not of much interest to me so that my feed remains useful. Don’t take it personally (see the start of this post). Virtually everything I post on my Facebook account is just syndicated from other public sources above anyway. I no longer publish any personal content to Facebook due to their bizarre policies around this.

Written by Matt Zimmerman

March 18, 2010 at 17:28

Fix broken Android permissions by re-installing apps

I run the CyanogenMod derivative of Android on my G1, and somehow managed to get it into a state where it had withdrawn the security permissions from my installed applications. I think this happened when I attempted to upgrade the 1GB microSD to a 4GB one, but the phone failed to boot.

I first noticed the problem when trying to refresh in NewsRob would hang the application, and adb logcat showed:

W/dalvikvm( 540): threadid=3: thread exiting with uncaught exception (group=0x4001e170)
E/NewsRob ( 540): Caught the following exception:
E/NewsRob ( 540): java.lang.SecurityException: Neither user 10039 nor current process has android.permission.WAKE_LOCK.

NewsRob clearly had had this permission before, to prevent the phone from sleeping during a sync. The Manage Applications screen still showed that it did (“System tools: prevent phone from sleeping”). Watching adb logcat while the phone was booting showed what was going on, and that many other applications had the same problem:

W/PackageManager( 138): Not granting permission android.permission.INTERNET to package com.newsrob because it was previously installed without
W/PackageManager( 138): Not granting permission android.permission.WAKE_LOCK to package com.newsrob because it was previously installed without
W/PackageManager( 138): Not granting permission android.permission.ACCESS_NETWORK_STATE to package com.newsrob because it was previously installed without
W/PackageManager( 138): Not granting permission android.permission.VIBRATE to package com.newsrob because it was previously installed without
W/PackageManager( 138): Not granting permission android.permission.WRITE_EXTERNAL_STORAGE to package com.newsrob because it was previously installed without

/data/system/packages.xml, which seems to record which applications are installed and which permissions they have, showed:

<package name="com.newsrob" codePath="/data/app/com.newsrob.apk" system="false" ts="1264200476000" version="353" userId="10039" installer="com.google.android.feedback">
<sigs count="1">
<cert index="25" key="..." />
<perms />

i.e. the permissions block was empty. It should have looked more like this:

<item name="android.permission.VIBRATE" />
<item name="android.permission.WRITE_EXTERNAL_STORAGE" />
<item name="android.permission.ACCESS_NETWORK_STATE" />
<item name="android.permission.WAKE_LOCK" />
<item name="android.permission.INTERNET" />

I tried manually hacking it, and also moving and replacing the .apk file on the phone, but packages.xml always returned to this state. Maybe it’s not the master copy of that data.

What finally fixed it for me was to re-install the applications using the package manager, by running:

cd /data/app
for app in *.apk; do pm install -r $app; done

I hadn’t known about the pm command until then, and discovered it by accident when invoking an adb command told me about it. The phone chugged along for quite a while, but eventually re-installed all of the applications, and the problem was fixed.

Web searches showed that I was not the only person to find themselves in this predicament, and did not reveal an obvious solution, so I’m documenting mine here.

Written by Matt Zimmerman

January 31, 2010 at 12:28

Airplane etiquette


As I have most recently observed on my recent flights to New Zealand for linux.conf.au, it seems that many of my fellow travelers are unaware of this simple rule:

When standing up from your seat, do not use the back of the seat in front of you as a handhold unless this is a physical necessity for you. This is very disturbing to the person sitting there, who may be trying to sleep. Instead, bring your own seat forward and use the armrests.

Yes, I’m talking to you, 61J.

That is all.

Love, Matt

Written by Matt Zimmerman

January 16, 2010 at 20:49

Posted in Uncategorized

Tagged with , , ,

What “Britainthinks” of sexism

Photo of a billboard reading "Career women make bad mothers"
As I left the office yesterday, I passed a billboard at a bus stop near the Canonical office. In large, capital letters, it read “Career women make bad mothers”. It invites readers to “have their say” on a website called “Britainthinks!”, which I won’t dignify with a link. I say it stinks. Who on earth thought this would be acceptable?

Apparently, more than a few people took notice, as The Guardian reports that the ad will be withdrawn. According to the article, a representative from the agency responsible offered a non-apology, saying that “they were intended to spark a debate, and did not represent the opinion of the agency or the campaign organisers.” Whose opinion was it, then, and how did it end up all over London? (I saw a larger format version of the same billboard in a different location today) What must the meeting have been like where this originated? “Well, we thought about debating whether rich white men are poisoning the Earth, but decided it was better to go after working mothers instead. Sound good?”

This reminds me a bit of the BBC’s recent screwup, where they attempted to “spark debate” about whether gay people should be executed(!?), and then defended their actions as intentionally polarizing. The common pattern is disregard for the rights of a class of people, followed by blind excuses and justification. It’s no coincidence that the target groups are routinely subject to harassment by more privileged folk.

Written by Matt Zimmerman

January 9, 2010 at 21:42

Posted in Uncategorized

Tagged with , ,

Quick hack: GPT partitions without kernel support

I have a couple of USB hard disks which each have a single GPT partition on them. I recently moved them to an embedded server, and discovered that its Linux kernel lacked support for GPT.

For various reasons, it isn’t practical for me to replace its kernel right now, but I still wanted to be able to use the disks, and to have them automount by UUID.

…some time later…

A set of udev rules:

# Import variables from devkit-disks-part-id on the *parent* device
# devkit-disks-part-id looks at $DEVPATH regardless of the argument passed to
# it, so we need to override that
ATTR{partition}=="1", IMPORT{program}="/usr/bin/env DEVPATH=%p/.. /lib/udev/devkit-disks-part-id /dev/%P"

# If this partition is on a disk using GPT, fake it
ATTR{partition}=="1", ENV{DKD_PARTITION_TABLE_SCHEME}=="gpt", RUN+="/sbin/losetup -o 16896 -f /dev/%k"

This code uses a tool from devicekit-disks to detect when a GPT partition table is present. If so, it sets up a loop device at the appropriate (hardcoded) offset corresponding to the GPT partition.

It only works for a single partition, and it’s not exactly pretty, but it solved my problem. The loop devices generate their own uevents, the generic udev rules detect the UUID, and everything works.

Written by Matt Zimmerman

December 22, 2009 at 16:59