The chocolate ration is being increased to 25 grammes per week.

Monthly Archives: January 2013

The best 30 minutes of television ever made

Community‘s S03E04, aka Remedial Chaos Theory, is my nominee for the best 30 minutes of television ever made.  It’s not just that Community is a great show, this particular episode is on a different level.  Not merely a string of jokes held together by a plot, t his episode is a finely crafted masterpiece.

If you haven’t seen the episodes leading up to this one, I wouldn’t just recommend jumping into the series with this episode.  The accumulated character development is important for the context of the episode, and I don’t think it’s possible to enjoy it quite as much without that context.

I just watched the episode again, for the 4th or 5th time.  I still marvel at it, each time being amazed that it can still have the same emotional effect on me that it did when I first saw it.


Voter suppression did and will matter… I told you so

I told you here, here and here about voter suppression and vote tampering.  Well, shit’s gettin’ real(er) now.

First, we find out that 201,000 votes were not cast in Florida because of long lines.  These lines were long by design.  To discourage Democrats from casting their vote.  I don’t know how accurate that number is, but even if it’s off by a good amount, it’s still a lot of people denied a basic right.  By design.

Then comes the story of a plan to further rig the Presidential election in 2016.  You see, historically all electoral votes for a given state have gone to the victor of the popular vote, except in Maine and Nebraska.  That is, electors are elected on a “winner-take-all” basis.  Now the GOP has a plan to target states that went to Obama in 2008 and 2012, and to change the way the electoral votes are allocated to Presidential candidates.  They want them to be apportioned based on the popular vote on a district by district basis.  Why those six states?  Because they are “heavily gerrymandered to favor Republicans.”  This would have made it impossible for Obama to win in 2008 and 2012 and there’s a really good word to describe it: fraud.

We live in a time where the Golden Rule means nothing.  If I can screw my fellow man, fine.  Someone trying to screw me?  Fuck them.  Because I would bet all the money I have that the same politicians that are doing this would scream bloody murder if the Democrats tried to do the same thing, but to favor the Democrats.  Hypocrisy much?

The Xbox 360 UI is a piece of shit

Press the X button just the right amount of time you get a menu.  Press it too long and you get a different menu.  Wow, I wish I had thought of that one.  I would have used it in all the programs I’ve written over the years!

I let my Xbox Live Gold account lapse, so they punished me.  It unlinks your profiles and makes you re-link them to the master Xbox Live Gold account.  Could it do this automatically?  Absolutely.  Their website had all the details before.  Do they do it?  NO.  My guess this is punishment for your lapse.  Bend over and take it like a man.

On the Xbox website they say go to “Settings, Family” to add family members.  I’m familiar with Settings.  You just short-press the X button.  From there I found the Family Settings menu, page, or whatever it’s called.  I wandered around in there for 30+ minutes.  Turns out, there is an ENTIRELY DIFFERENT place that has Settings and Family.  That’s right, two places with the same names.  Brilliant.

Once I found the right place to add the account, I had to login to the master account.  Have you ever tried to use an Xbox controller to type a user name and password?  It is an exercise in frustration like no other.  OK, so a trip to a computer to find the password, since I’d long forgotten it.  Last Pass to the rescue.  Back to the Xbox and lots of joy-sticking later I have it entered.  Only one more account to add.  15 minutes later I’m done.

In the past, I’ve had similar nightmares with the Xbox UI.  Endless navigation to dead ends, as there is no real organization to the UI.  Having to enter special codes to verify a device, where the code is sent to the original email used to sign up the account.  WTF?  I already entered the password.

Once I was deep into doing some signup on the Xbox website, with the Chrome browser, only to figure out it wouldn’t work.  After beating my head against that wall, I decided to try IE.  It worked.

I have never been so consistently pissed off at a company while trying to give them money or use their product.  It is a horrific experience and if my son didn’t like playing that thing so much, I would take it to the top of a tall building a drop it off.  I would enjoy the sight of its final battle, this one with gravity, and one that it would not win.

A tribute to my friend Diane

nikon1630I just got back from the memorial service for my friend Diane. It was great meeting lots of people that were important to her, and seeing some people that I hadn’t seen in a while. Seth, Chandra, and Janice. Also some former coworkers, Karen, Lois, Cynthia, and Jackie.

During the service her brother, Tamir, asked for people to come up and share stories about Diane. When I went to the memorial service for my friend Richard I was conflicted about speaking, but after the service was over I really regretted it. I wasn’t going to miss this opportunity. What follows is a more coherent and embellished version of what I said earlier today.

Diane and I became coworkers in 1987, when I was 27 and she 35. Her son, Seth, was about 11. Aside from immediately liking Diane (who wouldn’t??  If you didn’t immediately like Diane, I’m guessing you and I wouldn’t be friends), I was impressed by her son and their relationship. You see, at the time, I was pretty dead set against having kids. The reasons were complex, but it boiled down to me not knowing, with a high degree of certainty, how to raise a kid. Here was Diane, this single mom, who didn’t make a lot of money, raising a boy in a place where a lot of boys took the wrong path in life, and many of them had two parents. Why were she and Seth any different? Why was their relationship so good? What was her secret?

Diane’s office was in an out-of-the-way part of our office. She handled shipping, back in the days when software was still shipped. This is important, because it made it easier to hide out in her office and have long conversations. If I wasn’t too busy, I’d be in her office a few times a week. These conversations where always punctuated with laughter. Diane laughed effortlessly and it was infectious. What’d we talk about? I don’t remember the details, but I do remember we talked a lot about Seth, current events, politics, and what ever we wanted. Diane and I were kindred spirits in a lot of things in life.  As I said we talked a lot about Seth, but in particular, we talked about how she raised Seth. The nitty gritty, as it were. I found through these conversations that I had a good “parental” head on my shoulders, because I agreed with most (all?) of what Diane did and said about child rearing. To me it was plain she was a good mother and she was raising Seth to be a good man.

While I said I was against having kids of my own, I always really liked other people’s children. Seth was no exception. I loved the times when he was around. It was yet another excuse to hang out in Diane’s office. It was this association with Diane, and a couple of other people in my life, that turned my “I don’t want kids” into “hey, I can do this.” I can tell you that Diane had a larger impact than the others, though.  If I’m honest, I learned or confirmed most of my parenting skills from Diane.  The confirmation part was important to me, mainly because I wasn’t willing to throw the dice on raising a child.  I wanted to know before I started.  I didn’t want to leave it to chance.

When in my mid-30’s my wife started to suggest that we make one of our own, it was partly because of Diane that I said yes.  My son is 12. From the moment he was born he has been the most important thing in my life, just like Seth was to Diane. I can’t imagine life without him. It’s possible that if I had never met Diane I would not have answered yes to my wife 13 years ago. For that, I will be eternally grateful to Diane.  I never told Diane this. I wish I had.

I also want to mention that Diane’s sister-in-law Janice would sometimes visit, and this, too, was an excuse for me to hang out in Diane’s office. I really have fond memories of Diane, Janice and I talking away the time back there.  I’m glad I was able to give Janice a big hug today.  It meant a lot.

The other regret that I have is that I didn’t spend more time with Diane in the last few years. We talked occasionally, but not nearly enough. Each time we talked we’d say we needed to get together for lunch, but the distance between us (Oakland to Antioch) and our busy lives was an insurmountable barrier, it seems.

“What would Aaron think?”

nikon4992The title of this post is the reaction that Lawrence Lessig had to Aaron Swartz’ suicide on Friday.  I read a lot about Aaron’s suicide yesterday (and the news on my usual morning websites to visit is still filled with discussion of his death).  What struct me by Lessig’s reaction: I had that same reaction to the suicide of my friend Steve.  I see many parallels between how people talk of Aaron and Steve.  The shock.  The loss.  The lamenting what this world will be missing now that it is without them.  Later will come the hole left by Aaron’s presence, as I and others experienced from Steve’s passing.

When I read Lessig’s words I recalled how it was.  Before and after Steve’s death, I though many times each day what would Steve think?  Steve was part older brother, mentor, adored friend.  I only remember looking up to someone like this one other time in my life, when I was fourteen.  The subject of my fourteen-year-old feelings was not at all worthy of them.  Steve, on the other hand, was.  He was an amazing person.  His intelligence, even to this day, is a wonder.  It wasn’t that I had an emotional crush on Steve and sought his approval.  It was that Steve had an uncanny moral center to go along with his great intelligence and I could always count on him to surprise me by showing me what I knew deep down, but some how couldn’t quite realize consciously.  Arguments with Steve would often start with me sure that I would be able to sway him to my point of view.  These weren’t serious arguments, just discussions of events of the day, whether far (in the public eye) or near (having to do with our lives).  It almost always turned out, though, that by the end of the discussion my point of view had been shown to be naive and uninformed.  Strangely, I rarely, if ever, thought Steve was wrong and I was right, after all was said and done.  I never felt a bruised ego.  I never had anything but appreciation for him being what he was.

Sadly, I must report, that the question what would Steve think? doesn’t occur to be any longer.  Too much time has passed.  Too many brain cells have been reused for other purposes.  I have trouble remembering the details of my conversations with Steve.  Such is memory and life.  It’s been almost 12 years since he passed from this world and made it just a little bit less interesting, less hopeful, less caring, and less just.  So, I feel for the family and friends of Aaron Swartz, because some day they too might stop asking what would Aaron think?

I have finally switched away from Quicken, after almost 20 years–I’m now on MoneyDance

UPDATE 1/5/2013: the picture at the right is of a mailer I received yesterday in the mail.  ATTENTION VALUED CUSTOMERS indeed!

The last 10 years being an Intuit customer has been a test of patience, to put it mildly.  Intuit decided to start forcing people to upgrade every 3 years by turning off downloading transactions from your bank.  I don’t mind paying for upgrades, but when the upgrades are buggy as hell and have no other purpose than change itself, then I really hate paying for an upgrade.  Every release of Quicken changed the UI so that it took weeks or months to get used to the new version.  Being a software developer myself, I love paying for something that I like to use and has value.  Quicken stopped having both of those properties a long time ago.

Yesterday I got the dreaded Quicken dialog that reminded me that in April 2013 I would not be able to download transactions from my banks.  I immediately started looking for alternatives.  Three years ago I looked seriously at GNU Cash.  I just couldn’t make the jump.  The application has a different accounting style than I’m used to and the import of my Quicken data didn’t go well.

While looking through the Amazon.com pages on Quicken 2013 I saw many unhappy people and references to something called MoneyDance.  So, I downloaded the demo and easily imported my Quicken accounts/data.  A quick check of the balances between Quicken and MoneyDance seemed to indicate the import worked well.  The UI of MoneyDance is very clean and the application was snappy as hell.  I had gotten used to the lag in Quicken.  Of course, the main thing I needed to get working was downloading transactions from my banks, so I set out to do that.  I got everything to work except Schwab and ShareBuilder.  I’ve sent a query to Schwab, since it seems I need to enable Direct Connect on my accounts, and posted on the support forum for MoneyDance about ShareBuilder.

Overall, I really like MoneyDance.  The few things I’m getting used to:

  • The account list in the left sidebar is sorted alphabetically.  I prefer that list in an ordered I specify.  I can rename the accounts to begin with “1-“, “2-“, etc., but that’s a hack.  The MoneyDance people have registered this requested feature.  Hopefully they’ll implement it soon.
  • I find the register of MoneyDance often positions itself at the top rather than the bottom.  I can reverse the sorting, but I really want older transactions on top and newer ones on the bottom, like I’m used to, and I always want the visible portion of the window to be the bottom.  I need to ask about this one, and hopefully there’s a fix.
  • Quicken allowed setting up a group of online bank accounts all at the same time.  In MoneyDance, you have to do them one at a time.  Not a huge deal, but it would have been nice to do them in groups.

I get a really good feeling from the support forums, like they listen to their customers and respond quickly to issues.  The exact opposite of Intuit.  I also like the spartan look of the UI.  We’re talking accounting software here, no reason to make it more complex than it needs to be.  Simplicity is good, especially here.  They seem to release updates frequently, too, which is way better than Intuit.  Until the switch, I was dealing with serious bugs in Quicken 2010.  I’m so glad to be finally rid of Quicken!

Renaming photos with ExifTool

So, years ago I wrote a Lisp program to rename my photos to follow a specific convention (YYYYMMDD-HHMM-SSXX-CAM.EXT).  I use this because I can see at a glance what camera was used and when the photo was taken.  At this point I’m just too used to this to change.  The problem is that my program doesn’t deal with raw files, since they don’t have EXIF info but a camera-specific format.  ExifTool to the rescue.  It’s a Perl program and an amazing one at that.  Rather than fix my Lisp program to handle Canon raw files (the only ones I care about), I decided to switch to ExifTool.  It is really an amazing program.  Did I say that already?

The tricky bit was going to be getting the camera name part as an abbreviation.  The full name, Canon 5D Mark III, is readily available for use in file names, but I want something much shorter: 5D3.

The next issue was the “XX” part of the file name.  This was represented as a “sequence number”.  Say I take two photos in the same second of time (very  possible with my 5D, since I can take up to 7 photos a second).  I need that sequence number to distinguish like-named photos, otherwise they couldn’t coexist in the filesystem on my computer.  Canon has a “File Number” tag, which is something like “<folder>-<sequence>”.  <folder> is usually “100” and <sequence> is monotonically increasing for a given camera.  It’s basically a shutter count.  The problem is that non-Canon cameras don’t have File Number.  My Panasonic DMC-TS3 has a Sequence Number tag, however, which seems the same as I was using in my Lisp program.

I also want it to handle video files, which don’t share the same format with camera files, but ExifTool does handle this.

To put all this together, I need additions to ~/.ExifTool_config that create new tags, MyFileNumber and MyModel, that have the values I want, then it’s just a matter of calling ExifTool to do the renaming.

First, the ~/.ExifTool_config addition:

%Image::ExifTool::UserDefined = (
    'Image::ExifTool::Composite' => {
        MyModel => { # Abbreviate the model number for inclusion into filename
            Desire => {
	        0 => 'Model',
		# always exists, AFAIK:
	        1 => 'Make',
            ValueConv => q{
	    	my $name;
		$name = defined $val[0] ? "$val[0]" : "$val[1]";

		# H.264 videos have numeric Make
		# Numeric values are from:
                #   http://owl.phy.queensu.ca/~phil/exiftool/TagNames/H264.html
		if ($name =~ /^\d+$/) {
		    return "Pana-H264"  if $name ==  0x103;
		    return "Sony-H264"  if $name ==  0x108;
		    return "Canon-H264" if $name == 0x1011;
		    return "UNKNOWN-H264-VALUE:$name";

	        # Phones:
	        $name =~ s{Galaxy Nexus}{GN};

	    	# Canon:  ORDER IS IMPORTANT!
	        $name =~ s{Canon EOS 5D Mark III}{5D3};
	        $name =~ s{Canon EOS 5D Mark II}{5D2};
	        $name =~ s{Canon EOS 7D}{7D};

		# Panasonic, remove DMC- prefix, leave rest.
		$name =~ s{DMC-}{};

		return "$name";

        MyFileNumber => {
	    Desire => {
	    	# Canon.  Example: "100-3504".
	        0 => 'FileNumber',
		# Panasonic.  Usually 0.
		1 => 'SequenceNumber',
		# dummy value that must exist and is ignored.
		2 => 'Make',
	    ValueConv => q{
	    	if (defined $val[0]) {
		    # probably Canon, look for "100-" and remove it
		    my $fn = $val[0];
		    $fn =~ s{^100-}{};
		    return "-$fn";
		return "$val[1]" if defined($val[1]);
		return 0;
	    PrintConv => 'sprintf("%02s",$val)',

1;  #end

Then, I can call ExifTool to rename from my CF card like this:

exiftool -directory=d:/pictures/_TMP/_RAW/ -r -progress -v1 \
    -ext '*' --ext avi \
    --ext ctg --ext bdm --ext tid --ext tdt --ext mpl --ext cpi \
    -d %Y%m%d-%H%M-%S \
    '-filename<${DateTimeOriginal}${MyFileNumber}-${MyModel}.%e' \

This English version of that is: output to d:/pictures/_TMP/_RAW/ after recursively finding all files except ones that have certain extensions (avi, ctg, bdm, tid, tdt, mpl, cpi), using my date format specified, using a source directory G:/ (where my CF card is mounted in Windows), giving a progress as ExifTool does the work.

Again, I love ExifTool!