Another Hero Goes to Rest

John Holbrook Vance (28 August 1916 – 26 May 2013) was one of the people that made my youth (not to mention the long years I spent in the military) not only bearable but, at times great fun…

Now, while I am aware that no-one lives forever, it does at times feel like the universe is conspiring to remove all of my childhood heroes from our little rock in the last couple of years. Either that, or I’m getting older than I have realised.

The late, great, Jack Vance will be greatly missed by many. So: so long Jack; and I really think that it is time for me to revisit Lyonesse.

New Year Blues

It’s getting to that time of year again we we have to pause and reflect on our accomplishments (or lack thereof) during the year. Again.

A time to compare where we are, to where we should be, to where would like to be…

And as is usual for most of humanity, we will all most likely decide: Screw that, we’ll try again next year.

Merry Christmas to all of you, and a very Happy New Year.

Geektool is even cooler than I thought…

Hacking away at Geektool I decided to try something else: sending raw terminal escape-codes at it and see how it handled it… In short: even better than I thought. So here is an update to my earlier Geeklet to display a calendar:

printf "$( cal| sed "s/^/ /; s/$/ /; /^ Su.*/d; \
    /.*$(date +'%B %Y').*/d; /^$/d; \
    s/$(date +%e) /\\\033[1;37m$(date +%e)\\\033[0m /g;" )"

I will admit to still using the previous version, though, since I prefer the font bolding in that one.

Of fortunes and Macs and (Xscreen) savers…

Every so often I have the urge to do something quite unnatural; something like, for instance, actually updating the software on my Macbook…

Rather subversive, I know, but we all have our weaknesses.

One go the packages I make a habit of installing, and updating, is JWZ’s Mac build of Xscreensaver. The biggest down-side of doing that, though, is that, unlike in Linux, it doesn’t by default display quotes from the fortune files.

The ability do so is, of course, still very much there, but the Mac build does not have an easy way of enabling it.

Herewith, then, my workflow to get things back to “sanity” once I’ve upgraded.

Firstly, make sure that you have installed fortune from the ports (or any other way that takes your fancy):

eroux@smaug:~$ sudo port install fortune
--->  Fetching archive for fortune
--->  Fetching fortune
--->  Verifying checksum(s) for fortune
--->  Extracting fortune
--->  Applying patches to fortune
--->  Configuring fortune
--->  Building fortune
--->  Staging fortune into destroot
--->  Installing fortune @6.2.0-RELEASE_0+universal
--->  Activating fortune @6.2.0-RELEASE_0+universal
--->  Cleaning fortune
eroux@smaug:~$ 

Once you can run fortune and get a result, you are ready to continue:

eroux@smaug:~$ fortune
I always had a repulsive need to be something more than human.
                                                -- David Bowie
eroux@smaug:~$ type fortune
fortune is hashed (/opt/local/bin/fortune)
eroux@smaug:~$

Now you need the following patch, which we’ll use to convince Xscreensaver that we know what we’re doing:

eroux@norbert:~$ cat < <EOF >~/xscreensaver-text.patch 
--- xscreensaver-text.pre   2011-03-01 18:06:46.000000000 +0200
+++ xscreensaver-text       2011-03-01 18:07:05.000000000 +0200
@@ -247,6 +247,7 @@
   elsif ($text_mode eq '1') { $text_mode = 'literal'; }
   elsif ($text_mode eq '2') { $text_mode = 'file';    }
   elsif ($text_mode eq '3') { $text_mode = 'url';     }
+  elsif ($text_mode eq '4') { $text_mode = 'program'; }

   $v = get_cocoa_pref_1 ($id, "textLiteral");
   $text_literal = $v if defined ($v);
EOF
eroux@norbert:~$ 

All we’re doing here is adding a program text mode to Xscreensaver, which we will then use via defaults to get fortune to run under its auspices.

Now we need to update all the files that actually could use some fortune:

for I in Apple2 FlipText FontGlide NoseGuy Phosphor StarWars XMatrix; do
    cd "/Library/Screen Savers/${I}.saver/Contents/Resources/" && 
        patch -p0 < ~/xscreensaver-text.patch && cd;
done

Now we get to test one of the screen savers. My favourite is one called Phosphor, so lets start with that:

defaults -currentHost write \
  org.jwz.xscreensaver.Phosphor \
  textProgram "/opt/local/bin/fortune";

This tells Phosphor which program to run, but not yet that it should actually use it. Let’s do that now, why don’t we?

defaults -currentHost write \
  org.jwz.xscreensaver.Phosphor \
  textMode 4;

Here you see us actually using the mode we defined in the patch, earlier. I had to change the scale of the fonts to get the display to fit on my screen, so if it’s too big or too small, you can change that from within the screensaver configuration window.

eroux@smaug:~$ defaults -currentHost read org.jwz.xscreensaver.Phosphor
{
    scale = 3;
    textMode = 4;
    textProgram = "/opt/local/bin/fortune";
}
eroux@smaug:~$

All done… Now you just need to sit back and wait for your screen to lock… Or just press Ctrl-Shift-Eject if you’re too impatient, of course.

Some alternatives to consider: Since the fortune you run is the same program you would find on any Linux machine, you could use “/opt/local/bin/fortune -s” to get only the short quotes, if you wish, or even “/opt/local/bin/fortune -o” for some… other quotes.

Of Geeky Mac Users and their Tools…

One of the toys I’ve come to appreciate running on my Mac, is a little utility called GeekTool

What makes GeekTool cool, is that it allows you to embed different items into your Mac desktop, so it is quite easy to use it to display a text file, for instance (like your system log) or to scrape a ticker-tape from the web and use that to keep track of your favourite Stock Price, but it is also possible to do much cooler stuff…

A quick example of what is possible was featured on LifeHacker, where they embed the venerable Unix “cal” command in the desktop, and using some “sed” slight-of-hand they even mark the current day on the calendar.

“Very Cool”, I thought, “except…”

Well, yes, except. I would have preferred not losing the day, but rather marking it in some way.

But before I get to that, I need to digress a bit first, though.

There are some thinks I would really like in this world. Peace. Children being able to play together for more than a few minutes without fighting. Winning a big one on the Euro Lottery. GeekTool being able to display HTML. But alas…

And since GeekTool would not allow me to embed HTML (or any other markup I could tell: I would have settled for Markdown or even RTF) I tried to work around the problem…

After a couple of iterations (and careful selection of the font GeekTool used to display my resultant calendar) I finally settled on the following:

cal| sed "s/^/ /;s/$/ /;s/.*`date +'%B %Y'`.*//;/^$/d; \
    s/ `date +%e` /(`date +%e`)/g;"

This got me a nice-looking calendar with the day-of-week marked by some parentheses:

 Su Mo Tu We Th Fr Sa  
                 1  2  
  3  4  5  6  7  8  9  
 10 11 12 13 14 15 16  
 17 18 19 20 21 22 23  
(24)25 26 27 28 29 30  
 31

In doing this, I also got rid of the Month and Year since I already have another Geeklet that displays that on my Desktop:

That displayed okay, I guess, but I was still (slightly) disappointed. Then it struck me: I was being an utter dunce. I had already been overlaying the other script Geeklets to get the Date/Time display I had wanted; there was nothing stopping me from generating two calendars, one on top of the other, one with the current day edited out, and the other only containing the current day, in the correct spot. That way the second could be displayed in another colour and give me the result I had sought.

So, without further ado, I cooked up the following. First, the easy one. Here is the script for displaying the calendar with the current day masked out:

cal| sed "s/^/ /;s/$/ /;s/^ Su.*//;s/.*`date +'%B %Y'`.*//; 
/^$/d; s/`date +%e` /   /g;"

The second stumped me for a bit, till I realised I was doing my usual: over-thinking the problem. This is the script I used in the end:

cal| sed "s/^/ /;s/$/ /;s/^ Su.*//;s/.*`date +'%B %Y'`.*//; 
/^$/d; s/ `date +%e` / ## /g; s/[0-9]/ /g; s/ ## / `date +%e` /"

In these I also deleted the Day strip at the top and added a Geeklet containing the days of the week in the more traditional three-letter format. By dropping the font of that to 18 points as opposed to the other two’s 24 points, I managed to for it all in perfectly:

Now all of them fit together rather nicely, and I’m a happy(er) person.

For anyone curious enough to know how I had all of these placed to get them to work together (both of you), here it is:

For everyone else… I apologise?

Oh, and if you’re wondering about my Desktop Wallpaper, it’s Vlad Gerasimov’s Mac OS-X Lion wallpaper

Okay… Colour me impressed by Apple!

From TUAW via Cult of Mac comes the following:

Apple is offering free repairs to those with Macs and iOS devices who had their equipment damaged in the earthquake and tsunami that struck Japan back in March.

A guide[Link content now changed] on Apple’s Japanese website states the company is offering free repairs to Macs, Cinema Displays, iPhones, iPads, and iPod touches for people who live in the municipalities covered be the Disaster Relief Act of 2011.

For those affected, Apple will pick up and repair your equipment at no charge, then deliver it back to you once the repairs are complete. The company is also offering free access to the AppleCare Service & Support Line for those who can solve issues over the telephone.
Apple has been keen to help those in Japan who have been affected by the recent disasters: It has opened up its stores as ‘communication centers’ and allowed people to access the Internet to contact their loved ones through email, FaceTime and Skype. It has also offered donations from app proceeds and allowed customers to donate to the Red Cross through iTunes.

Maybe some lessons to be taken here by the rest of Tech…