28 Jun 2010

Grandfather

Today my grandfather died. He was 90 years old, or so few months shy that you’d be deeply neurotic to say different. He’d been in poor health for a long while now and I believe he was staying alive more out of politeness than anything else. Above all he was a very polite, kind and gentle man.

I’ve been around a few dead, and a few dying, people in my time. Somehow watching my grandfather on his deathbed was a lot more terrible than watching a guy in his twenties or thirties fight for his life after an accident or a stabbing or a diabetic coma. A young man, however serious his condition, somehow at least gives the impression of having some life force to fight back with. My grandfather at his last was skeletally thin, his skin a motley grey and blue and his body drained of will and power to live.

I saw him hours before he died. He was unconscious, but we can never know what he heard of our bedside chatter. My grandmother, who has been suffering from dementia for a while, was looking for a younger version of him or, when convinced that the man in the hospital bed was indeed her husband, trying to convince my mother that he was cold and should wear a shirt out of a misguided sense of decency. I have no knowledge of how dementia feels for the afflicted, but I hope against hope she won’t live out her days discovering every day, for the first time, that her husband is dead.

As I alluded to earlier I feel pretty sure my grandfather was ready to die and had been for some time. Although he was a gentle, kind and unassuming man he had always been a real man in the old-fashioned sense of the word. Not a Clint Eastwood and not a Frank Sinatra. Not even a working-class hero. He was a real man in the sense of a man who becomes an engineer because it’s a sensible way to make a living for himself and his family. A real man who could fix a bike or a lawnmower properly and had a workshop in the basement, not because he wanted to spend a lot of time in a workshop but because it’s good to have access to the proper tools to mend things around the house and fix things that are broken. A real man who, when my mother was young and the first Italian influence was introduced to the Norwegian kitchen, wanted potatoes with his spaghetti; Without potatoes it wasn’t a real dinner. I think being emasculated by age, and feeling his memory and wits slowly disappear over the last few years drained him of his will to go on, and in the end he only clung to life out of concern for my grandmother.

I was lucky to get to spend a lot of time with my grandfather in my childhood. Norway is a very long country, and we lived initially in opposite ends of it, but as I turned nine our family moved to Oslo and in fact moved right next door to my grandparents. When I was a toddler my grandfather built me a swing in the tree out in their garden. He built me a sandbox out of four great logs and he let me “help” by holding the other end of the saw, or assist with digging a trench for the log with my little shovel. We were doing it together. When I was older he took me out into the woods to find suitable bits of wood to make bows and slingshots and boomerangs, and he told me stories from the huge tomes of fairy tales and folklore he had procured for his grandchildren.

My grandfather was, as my grandmother still is, a deeply religious person. Those who read this blog regularly or know me in person know that I am not a fan of religion. If religion had always manifested itself as it did with my grandparents I would have no problems with it. In fact I would celebrate it, even as a non-believer. These pious people have been confronted with an atheist daughter who chose to marry a communist from Tromsø 1, a granddaughter who married a dark-skinned, divorcee from Madagascar, a lesbian granddaughter and a borderline criminal grandson2 who fathered a child out of wedlock. And they loved us all. Unconditionally and without judgment. No sermons, no evangelism, no attempts to make us “better our ways”. Just love.

They spent last christmas with me, my ex and our bastard child. Truth to be told the question of whether or not we were going to marry, or perhaps already were married came up several times since my grandmothers memory isn’t all it was, but every time we told her that; No. There won’t be a wedding. We have a child together, but we’re just friends now. She’d reply “Oh. Alright. I didn’t know that”. A couple of times she’d laugh and say “Hah hah… It wasn’t like that when we were young!”.

My grandfather, sadly, was already beyond involving himself in such topics. As I’ve already stated; He was a very polite man and wouldn’t want to burden the company with the fact that he had trouble following the conversation, or indeed remembering the last ten years. Still, whenever he saw the baby that unbeknownst to him was his great-grandchild crawling around on the floor giddy with the glamour of paper wrappings and new toys he would light up and make funny noises at her or pat her lovingly on the head. I think he communicated more with her than with the rest of us that evening.

These old coots. These two nonagenerians. They are truly the salt of the earth, for all that metaphor is worth nowadays. They have, or had, a decency towards their fellows and an approach to new people that puts me to shame in some ways. In short, these people are the embodiment of all the things I see that is good about religion and none of the things that makes me oppose it.

Kurt Vonnegut has a great quote detailing what he would like to tell all newborn babies if he had the chance:

Hello, babies. Welcome to Earth. It’s hot in the summer and cold in the winter. It’s round and wet and crowded. At the outside, babies, you’ve got about a hundred years here. There’s only one rule that I know of, babies—God damn it, you’ve got to be kind.

I’ve been thinking a lot about this lately. About kindness and consideration for fellow human beings and how so much of the worlds problems would just go away if we had all been born with Vonneguts words in mind. My grandfather was the model of kindness on which I think Vonnegut would have modeled his introduction to life for all the babies.

I guess I could go on waxing poetic about my grandfather for a while, but I shan’t. He was a sterling guy and I am glad to have had him in my life. Now that he passed on I’m glad it only passed a day from him entering what we knew would be his deathbed until he was relieved. If I’m wrong and the bible is right, you’d be hard pressed to find even a fundamentalist sect of Christians that wouldn’t agree that this man should have his place in heaven. If I’m right he will live on in our hearts and minds. If that sounds like a platitude it’s because clichés become clichés because they’re often true.

Rest in peace, Hans Gammelsæter.

Footnotes:

  1. people from the North were generally looked down upon, and often couldn’t even rent an apartment in Oslo at this time.
  2. Juvenile delinquency folks! I’m straight as an arrow nowadays.

Is it hypocritical of me to write about a Flash blocker when I’ve spent a good portion of my time the last four years doing Flash? Maybe, but some of the sites out there have ridiculous amounts of intrusive and annoying banner ads, and I just can’t stand having my the fans on my Mac blowing a fuse every time I want to check out the news.

My favorite implementation of Flash-blocking has always been ClickToFlash which is a Safari-only plugin that works exactly as advertised. You click the element to load Flash. Sadly, as mentioned, it’s Safari-only and my browser of choice these days is Google Chrome.

Jason 128Fortunately I found a port, or perhaps a backwards engineered version for Chrome named, somewhat more aggressively, Kill-Flash. It works on exactly the same principle. All Flash elements are replaced with an inconspicuous grey-scale gradient with the label “Flash”, and you “Click To Flash”… Duh.

Stupidly however, I have found no simple way to add sites to the plugins whitelist. A few sites (YouTube and GMail) are whitelisted by default, but no option that I’ve found to add new sites. There are several sites I visit on a regular basis and where I want to see the Flash. Hell, my own blog uses several (subtle, I hope) Flash elements and I don’t need to see those grey boxes every time I come here. In fact, personally I think perhaps a “blacklist mode” would be my preferred way to operate.

So, anyway. I started digging around in the Library to figure out how to add sites to the whitelist. The first issue of course is to find out where the whitelist is located. A couple of headscratches later I found that this is the file you need to deal with:

/Users/USERNAME/Library/Application\ Support/Google/Chrome/Default/Extensions/kfncbcioneejfnnelcdmocdjncbmceea /1.1/kill_flash.js

I’m not sure whether or not that crazy string is the same for everyone or generated randomly for each installation. If you see the kill_flash.js you’re there.

Opening this file reveals, at the very top the following variable.

1
var whitelist = ["www.youtube.com","mail.google.com","gmail.com"];

What you need to do is simply append the domains you want to whitelist to this array, in quotes and separated by commas. Like so:

1
var whitelist = ["www.youtube.com","mail.google.com","gmail.com", "ctrloptcmd.com"];

When you’ve done this you might want to create an alias for easy access to the file. Personally I just dragged it to my Dock for the sake of convenience.

I might at some point write an AppleScript or something to make this easier. If that ever happens I’ll be sure to post it here.

Every so often I stumble across something that really just leaves me dumbfounded. The only valid response seems to be “… Fascinating!”

The latest is this clever JAPH consisting solely of keywords.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
not exp log srand xor s qq qx xor
s x x length uc ord and print chr
ord for qw q join use sub tied qx
xor eval xor print qq q q xor int
eval lc q m cos and print chr ord
for qw y abs ne open tied hex exp
ref y m xor scalar srand print qq
q q xor int eval lc qq y sqrt cos
and print chr ord for qw x printf
each return local x y or print qq
s s and eval q s undef or oct xor
time xor ref print chr int ord lc
foreach qw y hex alarm chdir kill
exec return y s gt sin sort split

In short; The Perl community has a meme going where you are supposed to write a snippet returning the String “just another perl hacker” in the most convoluted and obfuscated way possible.

This gem does exactly that. It’s beautiful in that there are no Strings in there, only valid Perl keywords, and it’s perfectly justified. For some reason this kind of useless stuff really appeals to me at a deep level. I fear a couple of hours may be lost to trying to create a clever JAAH.

This was posted earlier on ria.creuna.com.

I’ve been meaning to release the theme of this blog for ages, yet I never really got around to finishing it.
After a bit of consideration I’ve decided to go for the easy option and just release it “as is”. It’s based on Sandbox and is therefore GPL-licensed. Otherwise I’d release it under my personal “I don’t give a hoot, but please credit me”-license.

If you want to use this theme for your blog without making any changes, here’s what you might be interested to know:

  • The text in the top banner is entirely configurable in the theme options. You can even choose between using Flash, a static image file (there’s a template included in the theme folder) or even plain HTML text
  • The Twitter widget in the sidebar is likewise configurable. Enter your Twitter ID, choose whether or not to ignore @replies and Bob’s your uncle.
  • This theme is not widget ready. If you try to add widgets they simply won’t show up. The default Twitter, Feeds, Recently and Pages is what you get. I’m sorry about this. This was one of the things I was working on when I ran out of time.
  • I’ve tried to clean out most of the plugin-specific styling for the plugins I use. Simply delete the following files if you don’t want my plugin-styles to override the defaults:
    • styleextras.css
    • sociable_see_extras.css
  • Like I said; Work in progress. Here be dragons. :)

If, however, you want to help out finishing this theme and / or add your ideas to it here is a list for you.

  • The reason widgets don’t currently work is because I wanted to make it so that widgets would always be styled in a specific manner according to their position, rather than the type of widget. For example I wanted the next box on the right to be grey regardless of whether it was an archives widget or a recent posts widget. Anal much? Yes. Anyway; I made a JavaScript that assigns an extra class to each widget based on it’s position, or “number” if you please. It’s pretty much done except for making the graphics (getting the design to be height-agnostic is a real bitch). There’s some first attempts in the images folder if you want to give it a go
  • The theme does not currently validate properly. It used to, and then I messed something up. Sorry.
  • The comment styling is really messy. I’d consider working it over if I were you. (I’ll get around to it some day…)
  • There’s probably more I should warn you about, but it’s late and I’m sleepy. I created this theme strictly for personal use, and although I’ve gotten rid of all absolute URLs and site-specific stuff I haven’t gotten around to cleaning up the code. I’m quite the salesman, huh?

So there it is. For the geeks, here’s a github link.
For the non-geeks, here’s a direct download to the theme zip-file.

Enjoy.

5 Apr 2010

Spring into freedom

Mathilde took her first independent steps at home in the living room less than a week ago, and today was the first day with nice enough weather to warrant a trip to the park in order to give her newfound freedom of locomotion a whirl.

I'm running! I'm running! I'm running!

While I anticipated she would be thrilled to be allowed and able to run around on her own, the sense of joy she expressed was positively overwhelming. She was running around and screaming and laughing constantly for as long as her energy would allow.

"Boom! I'm over here!"

It is my pride and joy to hereby promote my offspring to the rank of Toddler. Ding! Grats!

Dance as if no one were watching.

That is all.

Bursting with pride

And just for the sake of upholding tradition;

Jumping-1

22 Jan 2010

The Hit List Forever

Let me get the cheesy redundant joke done right off the bat:

On top of my list of things to get done is to finish Dave Allens Getting Things Done.

How droll. What fun.1

On top of the personal hit list of Andy Kim of The Potion Factory I’m willing to bet a few shillings you’ll find “Finish The Hit List Touch”, the fabled iPhone companion app to The Hit List Mac. I’m not sure that’s sound prioritizing though. I think perhaps he should bump up “Reconsider customer communication strategies” to number 1.

If you’re unacquainted with the app, its history and the state of things today, let me offer a brief summary.

Read More »

Footnotes:

  1. And in my case actually the plain truth. I’m still halfway through after trying both dead tree and audiobook. For now I’m settling for getting something done.

I use 2Do app on the iPhone to Get Something Done. It’s a beautiful, well-functioning and well-considered application of the Delicious Persuasion, and I’ve mused more than once that the best thing in-danger-of-vaporware company The Potion Factory could do would be to sub-contract these guys to handle their iPhone companion app. That’s a story for another day though. Suffice it to say that Guided Ways has produced a sterling piece of software and regularly updates the app with new functionality.1

So I was browsing their site over my microwaved cup of mud this morning and stumbled over this FAQ item. For the unclicky of you; It’s a reply to what seems to be an actual Frequently Asked Question about why the Guided Ways Software site contains links to software and utilities for reading the Quran, calculating prayer timings and so forth. Not on the 2Doapp.com site mind you, on the external site of the software company. 2Doapp.com, as far as I can tell contains no references to any religious practices. It is, in its nature, a wholly secular app.

It saddens me deeply that Guided Ways needs to address this “issue”. I had some notion, perhaps naive, that the people who were somewhat ahead in technology 2 were somehow above petty religious hatred and bigotry. I attributed that kind of moronic attitudes to backwards and isolated luddites who refused to deal with the inevitable globality 3 of today. Alas. Fear-mongering, narrow-mindedness and hate speech seems to have made Islamophobia ubiquitous.

Personally I find all religion disgusting, but that is my a personal view, and I don’t equate the flaws I perceive in religion with the ethical backbone of individuals of that faith. If the developers were using their site to preach in favor of, say, discrimination and persecution of homosexuals I wouldn’t want to give them my business, just as I wouldn’t with any christian fundamentalist spouting the same crap. So long as that is not the case I have no bigger qualms about buying from Guided Ways than from a christian, hindu, buddhist or atheist developer. I disagree with their view on the world, but as long as they don’t infringe upon the freedom and happiness of others I would die defending their right to hold those views. 4 The Quran does, as do the bible, contain views that are in conflict with my, and hopefully your, ethics but as long as we differentiate between the faith of Reverend Phelps and that of, say, the Bishop of Oxford5 it’s downright hypocritical if we don’t also differentiate between the faiths of, say Muhammad Ali and that of Osama Bin Laden.

I could go on, but I’ll try to sum up my stance now. If you equate Islam with terrorism and are frightened of muslims, and do not maintain the same attitude towards christians you are a hypocrite, and would do well to read Amin Maloofs texts on religious bigotry.
If you do refuse to do business with both muslims and christians out of disregard for religion you are, as we say in Norwegian “shooting sparrows with cannons”, and as we say in English “throwing out the baby with the bathwater”. Good luck with that.

Oh. And check out 2Do on iTunes.

Footnotes:

  1. And even provides a roadmap of features to come months into the future…Andy.
  2. I.e. the people who are likely to seek out the developer of a program and read their FAQ
  3. I made that word up. I’m such a well writeguy
  4. So maybe I wouldn’t run off to die personally per se, but you get my drift.
  5. Highly recommended link for anyone who need a break from US religious “war”.

I was just writing an AppleScript to look up words on the excellent NinjaWords and decided to post it in case someone else needs something similar. Since one snippet of AppleScript is not a very meaty post, I’ll throw in a couple extra.

Look up word on NinjaWords

Select a word and copy it to the clipboard. Then invoke this script via Quicksilver or LaunchBar or whatever is your favorite tool for invocations.

1
2
3
4
set clip_url to (the clipboard as string)
set lc_url to do shell script "echo " & clip_url & " | tr '[:upper:]' '[:lower:]'"
set ninjaURL to "http://ninjawords.com/" & lc_url
do shell script "open " & ninjaURL

Wrap link in ‘a href…’

Note: This one will look slightly different depending on whether you are using Quicksilver, LaunchBar, whatever. The key is that you pass a string value into the script and it returns one back to you. This example is for LaunchBar.
Copy a link to the clipboard, invoke the script, paste your now a-tagged link.

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
on handle_string(vanillaStr)
  set quote to ASCII character 34
 
 
  set openTag to "<a href=" & quote
  set closeTag to quote & ">"
  set finishTag to "</a>"
 
  set TempTID to AppleScript's text item delimiters
  set AppleScript's text item delimiters to space & ":" & space
  if (count of text items of vanillaStr) is greater than 1 then
    set urlStr to text item 1 of vanillaStr
    set linkStr to text item 2 of vanillaStr
    set returnStr to openTag & urlStr & closeTag & linkStr & finishTag
  else if (count of text items of vanillaStr) is 1 then
    set urlStr to text item 1 of vanillaStr
    set linkStr to "linkage"
    set returnStr to openTag & urlStr & closeTag & linkStr & finishTag
  else
    beep
    return
  end if
  set AppleScript's text item delimiters to ""
  tell application "LaunchBar"
    perform action "Copy and Paste" with string returnStr
  end tell
end handle_string

New File

Sometimes you just want a dang text file to magically appear.

1
2
3
4
5
6
7
8
9
10
11
12
try
  tell application "Finder" to set the this_folder ¬
    to (folder of the front window) as alias
on error -- no open folder windows
  set the this_folder to path to desktop folder as alias
end try
tell me to activate
set thefilename to text returned of (display dialog ¬
  "Create file named:" default answer "filename.txt")
set thefullpath to POSIX path of this_folder & thefilename
do shell script "touch \"" & thefullpath & "\""
do shell script "mate \"" & thefullpath & "\""

That’s it for now. I have some gems saved for a later post, but they wouldn’t make sense out of context so you’ll just have to wait.

Lifestream
When Iceland went bust and started selling .is domains I grabbed martin.is. Of course I did. That’s the kind of guy I am. Even as I swiped that credit card (and by “swipe” I mean “typed in all my info into the appropriate boxes.”) I knew I had no idea what I was going to use it for, but what the hey; I’ve done plenty of even stupider domain purchases that never led to anything1.

So finally, the other day I decided to set up a “lifestream”. An aggregate feed of all the highly interesting stuff I do on the web. Not because I think anyone particularly needs or wants to know. It just seemed like the kind of thing that goes on a domain called “martin is”.
I really didn’t want to spend loads of time on this. I have a job, a daughter and a blog that are all already wailing for my attention, so tried plugging all my stuffs into a WordPress install using FeedWordPress and a couple of other similar plugins, but I found the results to be (unreliable | explosive | bewildering)2.

Alrighty then. What services do I know of that aggregate information like this? FriendFeed! I headed over to FF, and sure enough; Within half a minute I had managed to plug all the crap I generate into one massive hunka’data. In addition to supporting a bunch of services Friendfeed actually does pretty well parsing feeds from other sources and cutting the entries into little blurbs. Now only to get it out of there and onto my domain.

Read More »

Footnotes:

  1. Seriously. Need a domain?
  2. Pick one.

A short while ago I wrote about my disappointment with the O’Reilly iPhone apps. The other day I noticed that three of the four titles I originally bought had an update. I’ve finally had time to have a look at them and I have to say that I’m pleasantly surprised.

The 1.1 versions are infinitely more readable but also feels a lot more responsive. The code isn’t breaking lines as often and not in such awful ways when it is.

Making code properly formatted on the iPhone is hard, and there’s still room for improvement but these new versions certainly wouldn’t have prompted me to write angry blog posts.
Thanks O’Reilly.