Lately I’ve been spending time getting rid of things that I don’t use or need.  Books, toys, electronics, tools, clothing, pictures, gadgets, trinkets.

My theory is that the things that you own that you’re not using or don’t need aren’t just a waste of money and space: they’re draining you of your energy.  Every time you walk past that cookbook that you never opened, or that model airplane kit that you meant to assemble, or the oscilloscope that you haven’t turned on in a year, a little neural pattern fires that says “Someday I should..” or “I always meant to…” or “God, I really ought to take care of that.”

Each of these tiny feelings of obligation or regret is almost imperceptible on its own, but their accumulation throughout the day is a burden that you may not even know you’re bearing until it’s gone.

I’m a pack-rat by nature.  I love to own things that I think are cool or interesting.  So I’m naturally collecting all kinds of junk that is neat at first but that I don’t truly need.  And it’s hard to get rid of these things.  The crappy video eyeglasses that plug into an iPod, the mountain bike headlamp with an enormous battery that fits into your water-bottle holder, a couple of old monitors, a broken GPS, a pile of bad books.

There’s a saying among writers about the process of copy-editing: murder your darlings.  You may have crafted a beautiful phrase or metaphor in this paragraph, but if it’s not serving the whole piece, it’s got to come out.  You have to murder your darlings.

So as Stephanie and I go around the house spring-cleaning, we’ll hold up this or that item, and ask “murder?”  Sometimes you need to use a vicious word to make a hard decision.

It’s hard to do, but the result is a house that gives you room for the things that really matter.

Lately I’ve been using Twitter and Google Docs to find out how I compare to my presumptive peer group with little spot polls.  A few weeks ago I found out that I do, indeed, wake up later than most of you.  On Tuesday I asked the Twitterati if they believe in God.  Here are the results, based on 172 replies:

Surprised?  I was.  I doubt that this poll would have had the same results three years ago, before the atheist “coming out” movement had so much momentum.  Three years ago, I think there would have been a lot more agnostics.

I was also surprised that there were so few animists.   How many people say they are “spiritual, but not really religious?”  I think a lot of that is acting out a primitive animism.  A genetic ur-religion, rooted in our  instinct for anthropomorphization.  Scientists who refer to subatomic particles as “guys,” programmers who say their code is “unhappy,” the urge to describe a car’s “personality.”

Crickets mourn -
sing out of genetic code.

Here’s a random selection of the comments people left on the poll:

I wish there were a god, but there probably isn’t and we can’t know and oh my god this dog is so beautiful with such a shiny coat and such well-formed hears and attractive feathering on its rump, clearly there is a god

A monotheistic form of Hinduism! [ I didn't even know this existed! --Nat]

Active Atheist.  Working to start my own church celebrating science and discovery.

Anyone who thinks they can argue rationally for the existence of god(s) needs to read Kant. Anyone who thinks belief has any place near things we can know needs to read Saint(sic!) Augustine’s “de utiltate credendi”.

In America, Most of the people are atheistic about gods like Thor, some daring individuals go one god (Jesus) further.  — Dawkins

I believe in one God but don’t judge those that don’t

I was raised a Catholic and still consider myself a Christian. I do, however, respect everyone’s choice (or non-choice) of religion, don’t try to push my beliefs on anyone.

I was raised Jewish but became estranged when I realized that Judaism and Zionism are inextricable. Today I consider myself a sort of vaguely proto-American Buddhist, except without the theological aspects.

I’m a born again Christian although I’ve also studied Messianic Judaism. Both believe that Jesus (Yeshua) is the son of God.

I’m a reverend in Church of Sweden (lutheran, but think episcopalian).

I’m sick of being tolerant and respectful to believers. Religion has way to much power and influence in our societies. Based on crazy people hearing voices.  Watch George Carlin: Religion is Bullshit

I’m too lazy to pick a side.  You can’t prove that there are or are not gods, so refusing to answer seems the more prudent solution.  Does it really matter, regardless?  Even if there is a God, we still need to solve our own problems.  We’re not children.

No god, but I do enjoy many aspects of religious culture - which is to say community culture based on groupings by religion.

You can call God in different ways but he’s always the same

if a burning bush told you to kill your son today, people would rightly think you were high…

Thanks for playing!

My friend Alex just spent 2 months in India and Nepal, where he hiked the 300km Annapurna Circuit.  During a fifteen-hour layover in Munich yesterday, we had some beers and schnitzel together at a Biergarten, and Alex asked me, “Nat, you and I and all our friends are pretty smart, capable people.  Why aren’t we working on something great that could save the world or be worthy of a Nobel prize?”

I love my work in the Linux world, and hope it has had some positive impact on the world.  But what Alex said hit home.  Right now, could I be doing something bigger?  Something better?  Could you?  Even if you are passionate about your work, it’s a good call-out and an important thing to reflect about.   If you’re not trying to do your very best, why not?  Do you have a good reason?

Alex is pounding this drum on twitter.

This theme of Alex’s reminded me of Tim O’Reilly’s “work on stuff that matters” post from January.  Tim had some nice guidelines for “stuff that matters,” but I liked the gut-instinct feeling of Alex’s question.  What’s your Nobel-prize project?

The finished frame.

Last month while he was visiting, my friend Rony and I built a picture frame that can display three images on a single piece of paper.  Two of the images are mapped to the red and blue channels and linearly combined, and the third image (the word MARCH in the video above) is projected onto the paper from behind using a stencil.

The stencil under construction.

Creating the stencil.

A microcontroller controls a set of red, blue, and white LEDs that light the picture, selecting each image in sequence by turning on one set of LEDs at a time.  Rony built the frame itself out of the black foam-core that architects use to make models, and it is really gorgeous.

IMG_2159

The entire package slides out neatly.

One of the challenges was calibrating the red and blue levels in the printed image such that under blue light the blue-printed image disappears completely, and the red image shows with good contrast, and vice versa under red light.  This required a lot of different test printouts, which after the project was over I taped above my desk at home. I think they look pretty cool on their own.

Calibration images

Calibration images

The images were generated with a tiny opencv-based program that you can find here.  If you want to use it yourself, you’ll probably have to recalibrate the WHITE_POINT macros for your printer/paper.  We printed the final image on acid-free paper so the colors don’t change over time.

By the way, opencv is a great library for doing real-time computer vision.  We used it for a very trivial operation, but the samples that ship with the library do things like real-time face detection, and there’s even an eye tracker that uses commercial USB webcams that some people are working on.

IMG_2162

The light from the white LEDs is diffused a bit before it passes through the stencil.

This was my first project using an Arduino and I was completely blown away by the platform.  The Arduino is an Italian-made open-source electronics prototyping platform.  Ours was a very simple Arduino project, just fading in and out some LEDs (you can get the code here), but the platform can do a lot more.  We used a Duemilanove (”2009″) board (pictured below) which has many digital input/output and analog input pins.

arduinoduemilanove

The board comes with a very simple IDE based on Java, Processing, and avr-gcc.  You code for the device in C and a single click reprograms the onboard Atmel microcontroller over a USB cable.   The documentation is excellent and the platform is extremely easy to code for; it only took us about 15 minutes to get the basic functionality working for this project.  There’s a great serial interface you can use for printf-style debugging; just use Serial.println to send some output to your PC while your code is running.  And Arduinos are extensible via a series of pluggable shields that can provide additional functionality like GPS, WiFi, and touch-screen support.

It really is the perfect starter platform for hardware hacking, and if you have any interest in this sort of thing at all, I strongly urge you to go buy the Arduino starter pack from adafruit industries right now.

Overall, this was an awesome way to spend a couple of days, and it was also great to work on a project with Rony, who deserves full credit for this idea (which he had while we were jogging around the Nymphenburger Palace) and for the majority of the work.  You can see more photos of the project on Rony’s flickr photostream or mine.

After waking up at 1pm this “morning,” I posted a survey to figure out when my fellow Twitterers go to sleep and wake up.

I used a Google Spreadsheet for the poll, which generates a nifty little summary.  Here’s a screenshot of the scientific results:

Sleep Poll Results

Sleep Poll Results

The average sleep time of my twitter-peers seems to be around 7 hours and 15 minutes per night, which sounds about right.

Thanks to everyone who responded!  You guys are a lot more normal than I expected.

Flintstoning

A few years ago, I broke my wrist in a snowboarding accident and hired an assistant to help me type, in a setup which gave me a simulation of near-perfect speech recognition:

If I don’t look up from the screen, I can pretend he’s not there and that I have the world’s most powerful voice recognition engine. So I have a sneak peek into what computers will be like when voice recognition works really well. It is fun to try technology years before it exists. I wonder if there are other things we can simulate like this?

Today I learned that in the field of human-computer interaction, this type of simulation is known as a Wizard of Oz experiment.

Some people apparently call it “Flintstoning.”

So, the question stands.

What else can we simulate with a man behind the curtain?

We have an interval

A beautiful quote that a friend sent me several years ago.

We are all condamnés . . .: we are all under sentence of death but with a sort of indefinite reprieve . . .: we have an interval, and then our place knows us no more. Some spend this interval in listlessness, some in high passions, the wisest, at least among “the children of this world,” in art and song. For our one chance lies in expanding that interval, in getting as many pulsations as possible into the given time (….)

– Walter Pater, “Conclusion,” The Renaissance: Studies in Art and Poetry, 1868(1)

Happy Saturday

Thursday night at dinner, one of Stephanie’s colleagues gave me a puzzle to play with.

The idea is to twist and turn the little blocks until they form a 3×3x3 cube.  This morning, after messing with it for a few minutes, I decided I didn’t want to brute-force it manually.  So I wrote a little script.

And that, my friends, is just about a perfect Saturday morning.

(The script is here.)

One of the things I’m really hopeful about is technology that can improve the transparency of government. Money is a corrupting influence in politics, but websites that track every campaign contribution, contract bid, earmark author, and the passage of every bill through its development give corrupt politicians and self-interested lobbyists nowhere to hide.  And that’s a good thing.  Sunlight, as Supreme Court Justice Louis Brandeis said, is the best disinfectant.

When Larry Lessig announced his campaign to end corruption in politics, he started encouraging hackers to attack this problem, to build websites and databases that lay bare the innerworkings of our politics. There are a few well-known projects in this area, like The Sunlight Foundation, Open Secrets, and followthemoney.org.  There’s also USASpending.gov, the website “where Americans can see where their money goes,” the product of a law co-sponsored by Barack Obama.

Waldo JaquithRecently on twitter I learned that Charlottesville provocateur and long-time friend Waldo Jaquith created and runs Richmond Sunlight, a one-man sunlight site to track Virginia state politics. On it, you can track the progress of bills and the activities of the legislators in the Virginia state congress. The site has no ads and no for-pay section and Waldo runs it purely because he believes in what he’s doing.

Running the site takes a huge amount of work, and a little money.  One of Richmond Sunlight’s most important features is the collection of videos of the Virginia General Assembly. To get these videos online, Waldo has to manually convert DVDs provided by the state into a format suitable for posting online.  It’s a lengthy process that involves OCRing parts of the video to extract bill numbers and legislator names to index and tag the videos properly.  He’s doing all this on his only computer — an aging Mac Mini.  And unbelievably, Waldo actually has to purchase these videos from the General Assembly.  And he has ambitious plans for the site.  Last night Waldo posted an appeal for resources to help him grow the project:

While hundreds of thousands of people have found the site very useful, I look at it and see unfulfilled promise. I want to rewrite Richmond Sunlight and give it away to a nonpartisan political group in every state in the union. I want to complete the API so that anybody can write software to interact with the Capital Sunlight in their own state (and let even more newspapers integrate it into their own websites). I want a Facebook application, I want daily podcasts, I want people recording secret subcommittee votes, I want to mash up the daily floor calendar with campaign finance data with minutes with video and create the most radical transparency a state legislature has ever seen.

Waldo is doing exactly what Larry Lessig is encouraging us all to do.  He’s dreaming big about open government.  But he needs help today to do the daily business of running Richmond Sunlight.  So, what do you say we pitch in to help a corruption-fighting geek in need?  If you’d like to help buy Waldo a new computer so that he can put these videos online faster without spending his whole weekend swapping discs and waiting for codecs to convert, visit his blog and drop him a line.

Love (and blogging)

It’s been a while since I wrote regularly on this blog, and people have been asking, with decreasing regularity, why my blog posts sputtered out.

At first, I wanted to take a break to shake off the “I can’t wait to blog about this” impulse that was starting to spring up in the middle of almost everything I was doing, and was threatening the in-the-moment joy of life’s little adventures by making them into a kind of low-grade performance literature.

Then, in early 2007, I moved to Munich and got busy learning about another culture.  Moving to a new place has a way of disrupting all your old habits, so I stopped going to yoga and I stopped posting here, but I started programming a lot again (yay!), and running a few times a week.

And then twitter erupted into my social group like an invasive species and I found that my public-writing energy nibbled away bit by bit, never building past whatever critical threshold is required for something to be (dare I say) bloggable.

And then, unexpectedly, at a conference in Paris, I met the most dazzling girl.  Smart and kind-hearted, and with an incredible appetite for life, she lived in Munich.  When I moved here, she helped me find an apartment and get settled.  Somewhere in there, she completely stole my heart. And so, earlier this year, on a hill in San Francisco, I asked her to be my wife, and she said “why the hell not” (I’m paraphrasing here).

Stephanie
We both love to travel, and she’s amused by my sense of whimsy.  Over the last year we’ve had a lot of fun running around Europe.  (More on that later.) And so I’ve found someone I want to share life’s adventures with, and you guys have recently taken second priority.  Sorry about that, but I’m sure you can understand :-) .

We do plan to have an actual wedding sometime next year, though we’re not sure exactly when or where.  So, stay tuned for future episodes, now featuring Stephanie (introductory glam shot below).

We’re Hiring

We're Hiring

One of my most fun responsibilities at Novell is running the SUSE Incubation Team: a  small team of developers focused on innovation, prototyping, and exploratory hacking.  Our charter is to come up with disruptive ideas that take Novell’s Linux business in exciting new directions.

The team is a diverse group, ranging from web developers who love working in Ruby on Rails to kernel hackers and virtualization experts, and it’s a great privilege to work with them.  We have an upbeat culture that’s tolerant of experimentation, we’re obsessive about delivering innovative and amazing experiences to our users, and we hold each other to high standards.  Besides our exploratory development work, the team is also responsible for running the twice-a-year SUSE Hack Week.

As it happens, one of our projects — an innovative web application — is starting to look promising and so we’re working on getting it ready for a limited public beta.  And we’re looking for a few talented, energetic developers to help us get there.

The job descriptions are below.  Keep in mind that we’re not looking for specialists: we’re a small team, and we need people who are willing and happy to shift gears whenever necessary.

If any of these sound interesting to you, mail us your CV/resume.

We’re open to hiring people in any location, but we have a slight preference for people who can work in Nürnberg, Germany, and a preference for people close to the UTC+1 timezone.  We offer competitive salaries and benefits in a fun, tight-knit team.

Quality Engineer

If you believe that quality is priority one and that great QA also means writing code, then this could be the job for you.  We are looking for a skilled programmer to help create and run a robust testing environment for an innovative new web service.

Your responsibilities will include building and maintaining a test harness and test environments; automating UI testing of our web application; monitoring and analyzing test results; helping to fill in unit and functional tests; creating test environments; and playing the role of bugmaster in our bugzilla.

The ideal person will be a strong programmer who can tell a good bug report from a bad one, will consider themself a whiz at scripting (shell, perl - whatever works for you), and will enjoy understanding the ins and outs of a sophisticated system.

Deployment and Release Engineer

Interested in designing and operating a streamlined deployment architecture for a cluster of several hundred cores? We are looking for an engineer to architect and manage the build, release and deployment infrastructure for our new web service.

Your responsibilities will include creating and maintaining deployment scripts; creating deployable packages and images; system administration of production machines; building RPM packages and virtual images to simplify deployment; and setting up and maintaining a cluster monitoring infrastructure.

Linux packaging and system administration skills, and experience deploying web applications are a must; experience with Ruby on Rails is a plus; solid programming skills and a strong focus on delivering a great user experience are required.  Infrequent travel to our data center in Boston will also be required.

Developer

This position will be working today on the core of our web application, which is mostly written in Ruby on Rails, Perl and in C.  Ideal candidates will be creative self-starters with a strong focus on user experience and performance, and will have good communication skills and experience working in teams.

Because of the nature of our team, we can’t allow ourselves to be defined by the tools we happen to be using at any given time.  Today you might be writing Ruby on Rails, but tomorrow you could find yourself knee-deep in C: whatever it takes to get the job done.  Above all, we’re looking for smart programmers who don’t mind learning a new codebase or a new language overnight, and who are willing to hit a few dead ends before arriving at the perfect solution.  We’re also looking for people who are good writers, and with good design skills.

If you’re applying for this position, please send us some code that you’ve written that you’re particularly proud of.

We’re looking for a neat, meticulous person to help us rack and wire some servers next week, on Tuesday and Wednesday. The tasks are unboxing, carrying, mounting, screwing, wiring, and testing the servers.  Pay is $20/hour, duration is until we’re done, location is in Waltham (we’ll pay for your transport).

If you’re interested, send mail to pzb@novell.com and mention any relevant experience or skills.

A few more tweetable commandlines have emerged since I posted the last round-up.

From pupitetris, this little work of art:

a=1;for i in {1..34};do printf %$[40-${#a}]s”$(eval $(echo $a*$a|bc|sed ’s/$/0/;s/\([0-9]\)/tput setab \1; echo -n \\ ;/g’))”\\n;a=1$a;done

This Linux-specific commandline from Justin:

s=.o0O0o.o0O0o.o0O0o.o0O0o.o0O0o.o0O0o.o0;n(){ for x in `seq $1 $2 $3`;do notify-send ${s:0:x}; done };while :;do n 1 2 39;n 39 -2 1;done

And I wrote these two:

clear;for x in {0..150}; do y=`echo “12+6*s($x/6)”|bc -l|cut -d. -f 1`;echo -en \\e[$y\;"$(($x/2))"HX; sleep .1;done

s=`seq 9|shuf`;while :;do for((i=0;i<15;i+=2));do echo $s;a=${s:i:1};b=${s:i+2:1};[ $a -gt $b ]&&s=${s:0:i}$b\ $a${s:i+3};sleep .2;done;done

That last one is a bubble-sort implementation in 140 characters. Unfortunately, 140 characters is one character too many for a twitter post. Can you figure out how to shave off a character or two? (You’ll need a recent version of coreutils for shuf).

Thanks to some helpful hints in the comments (abock, knipknap, Mitch) we’re down to 137 chars:

s=`shuf -i1-9`;while i=;do for((;i<15;i+=2));do echo $s;a=${s:i:1};b=${s:i+2:1};[ $a \> $b ]&&s=${s:0:i}$b\ $a${s:i+3};sleep .2;done;done

I’ll be posting more on twitter as people send them in.

Yesterday morning I proposed a contest to create the best one-line program that would fit inside Twitter’s 140-character buffer. To kick things off, I wrote this 105-character script which displays a small animation:

s=”-<”;while true;do echo -ne “$s\r”;s=`sed ’s/->$/-<-/;s/^</>/;s/-</<-/;s/>-/->/;’<<<$s`;sleep 0.1;done

Arturo (or Pupi as his friends call him) wrote a 135-character morse code decoder in shell:

m=etianmsurwdkgohvf?l?pjbxcyzq;p=0;while read -sn1 c;do [ -z "$c" ]&&p=0&&echo&&continue;let p+=c;echo -ne \\b${m:$p:1};let p+=p+2;done

Press ‘0′ for dot, ‘1′ for dash, and hit space (or enter) as a char separator. Wow!

I learned a few tricks from Arturo’s script. First, he uses the ${} braces operator to take substrings, like so:

${var:offset:length}

This is incredibly useful! You can actually do shell arithmetic in the offset and length parameters, too. So for example,

${var:i+1:a-3}

is valid for shell variables $i and $a. And to find the length of a string, you can use:

${#str}

So str=”foobar”; echo ${#str} will print “6″. You can read more about the braces operator in the bash info page.

Another thing I learned from Arturo’s script is the versatility of the ‘read’ builtin in bash. Pupi uses the -s argument, which causes read not to echo its input (useful for inputting passwords) and -n1 which tells it to only read one character. Also, Arturo uses [ test] && operation, which is a handy short-hand for an if statement in shell (and other languages).

Pádraig Brady wrote this excellent screensaver:

tr -c “[:digit:]” ” ” < /dev/urandom | dd cbs=$COLUMNS conv=lcase,unblock | GREP_COLOR=”1;32″ grep –color “[^ ]“

Pádraig makes use of the square-brace character class operator in tr(1) to filter out all the numerals, which bash also supports.

Building on what I learned from Pupi, here is one I wrote that I call paint.sh:

c=12322123;x=20;y=20;while read -sn1 p;do k=${c:(p-1)*2:2};let x+=$((k/10-2));let y+=$((k%10-2));echo -en \\033[$y\;"$x"HX;done

Use the 1 2 3 and 4 keys to move the cursor around the screen. It's an etch-a-sketch for your terminal! You can see that I made use of the read -sn1 trick from pupi as well as the braces operator to substring. I also used ANSI escape codes to position the cursor.

And this is one I call rockband.sh (Updated - works much better now!):

while read -sn1 p;do s="";for((i=0;i<$p;i++));do s=x$s;done; yes $s > /dev/audio&sleep 0.1;kill %%;done

Use the number keys to play different tones. When you're done, hit Control-c.

The way it works is that the ASCII value of each character you send to /dev/audio specifies the excursion of the speaker diaphragm (roughly). The 'yes' command prints whatever string you give it, followed by a newline character (ASCII 13, pretty low), over and over again. So the longer the string of 'x' characters you pass to 'yes', and which 'yes' prints between newlines, the slower the oscillation of the speaker diaphragm, and the lower the tone. Neat, huh? I learned this trick from my boyhood friend Edward Loper many years ago.

And here's the last one I wrote:

s=" #55755071317011117011117075557";for i in `seq 2 $((${#s}-1))`; do k=${s:i:1}; for b in 1 2 4; do echo -n "${s:(k&b)/b:1}"; done; echo; done

Miguel submitted this tiny function plotter:

for x in `seq -1 .05 1`; do y=`echo "s($x*8)*10+10" | bc -l`; for p in `seq 0 $y`; do echo -n " "; done; echo "*" ;done

And here's another plot:

for x in `seq -5 .5 5`; do y=`echo "$x*$x" | bc`; for p in `seq 0 $y`; do echo -n " "; done; echo "*" ;done

Those last three scripts make use of the venerable "seq" command to generate a series of numbers. Miguel uses fractional steps, but if you only need integers you can also use braces in shell, like this:

sum=0;for i in {1..100}; do let sum+=i; done; echo $sum

Ryan Paul of ArsTechnica fame wrote this Ruby script:

proc{|f|f[proc{|x|x+1},0]}[proc{|x,y|proc{|f,z|x[proc{|w|y[f,w]},z]}}[proc{|f,x|f[f[f[f[f[f[f[x]]]]]]]},proc{|f,x|f[f[f[f[f[f[x]]]]]]}]]

Ryan is using the “proc” primitive in Ruby, which allows you to create an anonymous function (like lambda in lisp), and which I didn’t know about even though I’ve been coding Ruby off and on the last few months. He uses Church encoding to encode the numbers 7 and 6, and lambda calculus to multiply them, thus confirming that he is the most awesome IT journalist working today.

Finally, Jay Wren sent in this C program:

main(x,y){for(;x++;) for(y=2;x%y;)printf( ++y/x+”\0%d\n”,x);}

of which he is not the original author (and which I suspect was an IOCCC entry), but which is a very compact way of generating all the prime numbers. The author uses the args to main to save space on variable declaration, and the leading null-terminator in the string is a really clever way to select whether or not to print the output without an if statement. Lots of cleverness in there (though the algorithm to find primes is just brute force).

There were too many good entries to declare a winner, and maybe a contest was the wrong idea anyway. But this was a lot of fun. If you want to send me a script on twitter, be sure to send a “@natfriedman” message after, so that I notice you.

Twitter limits posts (”tweets”) to 140 characters. This constraint makes sending updates to your friends challenging, but it makes programming more interesting.  I just tweeted this 105 character shell script:

s=”-<”;while true;do echo -ne “$s\r”;s=`sed ’s/->$/-<-/;s/^</>/;s/-</<-/;s/>-/->/;’<<<$s`;sleep 0.1;done

(Pasting from the tweet link seems to work a lot better than pasting from my blog — not sure what wordpress is doing to that script) (Fixed - disabled smart quoting in wordpress).

Cute, huh? :-) But you can probably do better. Tweet your one-liner, and then send a @natfriedman message on Twitter so that I notice it. Best tweetable script posted today wins. All the basic shell languages are allowed, but your script has to be pastable into the shell, i.e. “perl -e” is ok.

Guns, Guts and God

At dinner during a recent meeting of Democrats Abroad in Brussels, an articulate American investment banker from London recounted the story of a visit he’d made to a Republican gathering in the US where he learned that the unofficial motto of the Republican party is:

Guns, Guts and God make America great. Republican Party.

This pithy catchphrase impressed me. In 9 words it defines a coalition of voters (church-goers, rural gun-owners, and military families), emphasizes strong patriotism, and sketches a personality that’s instantly familiar to many people.

“So,” he went on to ask, “what’s the analogous slogan for Democrats?”

There were a lot of intelligent people at the table, and murmured discussion followed. The closest anyone could get to a counterpart was the familiar “Strength through diversity.” But it doesn’t pack the rhetorical punch of the Republican slogan. In fact, it could be cynically interpreted as another way of saying “We couldn’t agree on a motto.”

I found myself wondering whether this was an inherent state of affairs. In a two-party system, if one party comprises a well-defined coalition, the other party could end up picking up the scraps — and be left with such a diverse group of members that it would have trouble expressing common cause, except “we’re not them.”

Or maybe a group defined by its tolerance, rationality, and empiricism simply can’t deliver the kind of bumper-sticker policy positions as the Republican party.

Certainly the division we see right now between the Obama and Clinton supporters hasn’t happened in the Republican party, despite the fact that McCain is despised by many conservatives.

I was reminded of another quote I read recently:

A conservative is a liberal who got mugged and a liberal is a conservative who got arrested.

There’s a symmetry in here which would seem to point the way to some kind of catchphrase.

Liberal political groups in other parts of the world manage to cohere well, and to express themselves compellingly.

Can you come up with a catchy slogan for the Democratic Party?

I started using twitter recently, at twitter.com/natfriedman. One of the things that’s nice about twitter is that no one expects you to say anything really interesting there. “Blogging for retards” is another way to put that. It reminds me of Ze Frank’s “keeping us company” (in a good way!).

my avatar

There are about 3 billion nucleotides in the 23 chromosomes of human DNA. For each nucleotide, there are four different nucleic acids (G, C, T, and A) to choose from, so each nucleotide contains 2 bits of information, and the total (uncompressed) data in the human DNA is about 715 Megabytes. Only about 3% of all human DNA actually codes for proteins, and the rest is ignored and generally referred to as “junk DNA.”

So the total genetic information necessary to fully specify a human is about 25 Megabytes.

That’s it! And that’s before compression. I definitely have tarballs of source code that are bigger than that. You could fit your whole family and all of your friends on your iPod (Update: Jamie pointed out that this doesn’t include the DNA to specify all of the bacteria in our digestive tracts without which we couldn’t survive, more details in the comments). (Update: I’ve recently made friends with some biologists who tell me that the concept of “junk DNA” is now widely disputed, and that much of the non-protein-coding DNA are control data. Also, just because we don’t know what it does, doesn’t mean that it’s junk.  In any case, 715Mb is still a relatively small amount of data — a little more than one TV show downloaded from iTunes.)

Most non-junk DNA is identical across the human population. A protein-coding nucleotide which varies in more than 1% of the population is called a SNP, or Single Nucleotide Polymorphism. Of the 90 million protein-coding bases in our chromosomes, there are maybe 3 million SNPs coding for differences like eye color and sickle-cell anaemia.

There are now a few companies offering low-cost partial sequencing of your DNA by mail. Mostly these companies act as front-ends to a couple labs (Illumina and Affymetrix) that use chip-based sequencing machines to sample between 500k and a million nucleotide variations (SNPs) from your chromosomes. You FedEx them a test tube full of your saliva, they send it off to a lab to get your cells cultured and your DNA sequenced, and then they put your genetic information online for you to view. Cool, right?

The best-known of the personal genomics companies is 23andme, but there’s also DecodeMe and Navigenics. They charge about $1000 to decode 500k bases, which is about 120 kilobytes of genetic information. That’s a cost of about 0.2 cents per base or 0.8 cents per byte. That is a lot cheaper than it used to be, and the cost of decoding a nucleotide is dropping exponentially on curves reminiscent of Moore’s Law.

The various personal genomics companies don’t let you donwload all your raw SNP data; they map the base pairs to a handful of genes and in the end you only get a few bytes of actual data. They also look at your mitochondrial DNA (which is passed to you from your mother directly in her egg cell that becomes you) and some little bits on the Y chromosome that don’t change between individuals to determine your likely ancestry. At least, that’s what I’ve gathered from their web sites.

But I’ll let you know soon! My spit kit arrived from 23andme yesterday and they should have my DNA on-line for me to view in about 6 weeks.

Me and my spit kit

When you order the kit, you have to read through some pretty interesting disclaimers:

You give permission to 23andMe, its contractors, and assignees to perform genotyping services on the DNA extracted from your saliva sample and to disclose the results of analyses performed on your DNA to you and others you specifically authorize. You are guaranteeing that the sample you provide is your saliva; if you are completing this consent form on behalf of a person for whom you have legal authorization, you are confirming that the sample provided will be the sample of that person. If you are a customer outside the U.S., by providing your sample, you confirm that this act is not subject to any export ban or restriction in the country in which you reside. You are warranting that you are not an insurance company or an employer attempting to obtain information about an insured person or an employee. You are aware that some of the information you receive may provoke strong emotion.

Personally I think having more information about myself can only be a good thing. Because you can act on it. A gene coding for a prostate cancer predisposition isn’t a death sentence — it’s a call to action. Eat better, get exercise, get checked every year after you’re 40. That sort of thing.

The New York Times has an article about these personal DNA services.

Obama Event in Boston

For those of you in Boston tomorrow, February the 4th, Barack Obama, Ted Kennedy and Governor Deval Patrick will be speaking at the Seaport World Trade Center at 8pm. The event is open to the public, but space is limited and they encourage that you RSVP.

If you’re still undecided going into Tuesday’s primary, or are already an Obama supporter and just want to hear the man speak, this is a must-see event on the eve of what could be the critical day in the campaign.

Besides hearing from Senator Obama, another excellent reason to go to this event is Deval Patrick. Patrick took office just a few weeks before I moved to Germany, so I didn’t know much about him when he spoke at the Obama lunch I attended a few weeks ago. But, wow! I was blown away by his presence in the few brief words he said to introduce Obama.

I’m in sunny Bavaria the next few days and am very sad I won’t be able to make it, but if you’re in Massachusetts tomorrow, this is not to be missed!

Update: if you’re worried the Seaport event will be packed, Rebecca C. writes that there will also be a pre-event, “Hands across Mass Ave Bridge,” organized by Obama supporters and students. Go to the Mass Ave bridge from 3:30pm - 5:30pm to join in.

Fundraising Status

Thanks to everyone who contributed; we managed to pull in $5600 for Barack Obama the last few weeks. The money came from 39 different people, and the mean donation was $143.60. It took 20 days to raise this money, at a rate of $280/day. Interestingly, most of the money was raised the old-fashioned way — by pestering my friends on IM and Facebook — and only $1800 came in via my blog.

If you still want to donate, go here.

Also, I was lucky enough to get to meet the Senator a couple of weeks ago at a lunch in Boston. The campaign photographer sent me the photo last week:

Obama and me

« Older entries