Running away to the circus… for a few minutes

I surprised Gina tonight with a trip to see Cirque du Soleil’s “Kooza,” which just opened in Portland. She didn’t figure it out until she saw the tent, so that’s nice: I kept throwing her off with false answers to her questions: Her: “Is this an event where I’ll have to introduce myself?” Me: “Oh, yes, everyone will.”

To cut to the chase, this was my favorite Cirque experience; I’ve seen several of their shows over the years, starting with a private performance for Apple folks in the San Francisco Civic Auditorium, sometime in the late ’80s. This time, the music was great, and the athletic performances were stellar — especially the new “Wheel of Death,” which, even with our under-the-end view, was pretty amazing.

The clowns were great, too, and Cirque’s sense of humor is always my favorite part of the show. Funny story: y’know how they pick people from the audience, and you wonder whether those people are “plants”? I now have firsthand experience that they’re not: tonight they picked me. In the five or so minutes I was up there, I got dragged around the stage, had my leg humped by one clown, the other picked a fight with me, and the ringmaster tased all three of us. (If you get picked for this, do nothing when he tases you the first couple of times. He’ll point at the other two, twitching on the stage, then tase you again – then you fall to the floor too, twitching like the others. Twitch some more when he tases your crotch.)

All in all, an incredible evening. Go see the show – it’s a lot of fun, even without me in it. Who knows – perhaps you’ll be!

11:02 pm — GeneralComments (0)

Open Source Bridge: Exciting the attentions of the Ingenious

I’m reading “The Invention of Air” by Steven Johnson, which talks a lot about Joseph Priestly’s experiments with electricity, discovery of oxygen, etc, and also about the scientific community of the time: Priestly had many interactions with (and got much encouragement from) Benjamin Franklin; Thomas Jefferson is also involved in the story, but I’m not to that spot in the tale yet.

Where I am in the book (p71), there’s a quote, the last paragraph from a September 1753 letter from Franklin to botanist Peter Collinson:

These Thoughts, my dear Friend, are many of them crude and hasty, and if I were merely ambitious of acquiring some Reputation in Philosophy, I ought to keep them by me, ’till corrected and improved by Time and farther Experience. But since even short Hints and imperfect Experiments in any new Branch of Science, being communicated, have oftentimes a good Effect, in exciting the attentions of the Ingenious to the Subject, and so become the Occasion of more exact disquisitions and more compleat Discoveries, you are at Liberty to communicate this Paper to whom you please; it being of more Importance that Knowledge should increase, than that your Friend should be thought an accurate Philosopher.

(You can read the whole letter, which details Franklin’s recent researches into electricity, here — it starts on p148, ends on p153.)

I’m inspired to post this here because I happened to have just registered to attend Portland’s Open Source Bridge conference, coming up June 1-4 — the open source movement is the next Age of Enlightenment.

2:06 pm — GeneralComments (0)

A Christmas tradition, from 1974

Last year I started a new tradition and posted my Dad’s first “obscure” Christmas card from 1973; this year’s reposted card appears just in time, because technical difficulties knocked this site off the air for the last couple of weeks.

Here’s Dad’s 1974 card – it’s one of his easier ones, made even easier when I tell you that those white dots on the right were made with a punch and go through the card. Merry Christmas!

11:41 pm — GeneralComments (2)

Rails 2.3.3 + mocha = confusion

I just updated a project to Rails 2.3.3 for the cool new “touch” feature, and saw here that I needed to update to Mocha 0.9.7. I did that, but found that my tests were failing – I got lots of NoMethodError: undefined method `stub’ for #<SomeTest:0×7f2c1d921f80> errors.

In my project, I’d declared my dependence on the Mocha gem in my config/environment.rb file, so that “sudo rake gems:install” would load everything required for development in one shot (which is why the dependency isn’t in config/environments/test.rb). I’ll cut to the chase: I needed to add an extra option to that declaration:

config.gem 'mocha', :version => '=0.9.7', :lib => false

The problem is that mocha configures itself based on what test library you’ve already included when you require Mocha. Unfortunately, the config.gem declaration causes mocha to be loaded before Rails has loaded Test::Unit, so Mocha doesn’t configure itself… so no “stub.” Setting :lib to false postpones loading Mocha until you actually do it in your test/test_helper.rb (or wherever).

3:48 pm — GeekeryComments (2)

Automatic wireless goodness

I often work in coffeeshops and other places that provide free wireless networks. Since anyone could sniff traffic sent over these networks, I’ve set up my own virtual private network at home so that my traffic will be encrypted before it leaves my laptop, then decrypted on a server at home and sent out from my home network – this also gives me secure access to a couple of machines at home that aren’t otherwise accessible from the internet. I use OpenVPN for this; it’s open-source, it was relatively easy to set up on my Ubuntu server, and there’s good support for OpenVPN in the Network Manager included on my laptop (also running Ubuntu).

This worked great for a while, but a few things bugged me:

  • The VPN connection doesn’t happen automatically – I had to remember to do it, and would sometimes forget;
  • my favorite hangouts’ wireless networks ask me to accept terms of service every time I use them, and that got annoying;
  • and whenever the DHCP lease renews (which is every few minutes in some places), the DNS server configuration would be reset to point at the shop’s DNS server instead of the one I run (so I’d lose the ability to refer to my home machines by name; it’s also possible that the public DNS server is less secure than mine, so that’s not good).

I set out to remedy these problems, and it turned out to not be too difficult; I learned a bit about Network Manager in the process, too. Network Manager can automatically run a script when it associates with a wireless network, so I wrote this Python script; it solves the first two problems: it looks to see what network we associated with, and if it’s not my home network, it creates the VPN connection. First, though, if it’s one of the networks that requires a terms-of-service acceptance, it accepts them and submits the form. (The latter mechanism is specific to the Portland Telco Project networks we have here in Portland, but you can probably figure out how to customize it to your own networks – if not, leave a comment.)

The third problem, where DHCP renewal clobbers DNS settings, seems to be known but unfixed: here’s a bug about it. The person who reported the bug posted a workaround for this problem. I’m not sure it’s the right change for everyone, but I’m happy with it in my case: it’s a one-line addition to /sbin/dhclient-script; insert this line just after the start of the make_resolve_conf function that’s first in that file:

[ "$reason" = "RENEW" ] && return

This shortcuts the function that would be overwriting the DNS settings to do nothing if we’re renewing the DHCP settings. (Admittedly, if the DNS server addresses changed, I wouldn’t know about it, but my home DNS server’s address hasn’t changed in a while, and I wasn’t in a coffeeshop when it did.)

With these mechanisms in place, I can open my laptop and see Network Manager’s progress by looking at its icon in the menu bar: I see it associate with a network and go through the VPN connection process, without me having to do anything. Perfect.

[Update: Almost perfect: in cleaning up the script for posting, I broke it — I've fixed it.]

3:29 pm — GeekeryComments (5)

My 25 things

I’m not happy about Facebook’s greedy terms of service, so rather than hand them content that they’re going to keep and monetize forever, I’m posting my “25 things you didn’t know about me” here…

  1. I ignore chain-letter-like things, which is why it’s taken me so long to give in and make this list (and why I haven’t tagged 25 more of my friends – you can thank me later).
  2. I started kindergarten when I was four.
  3. My partner Gina got me on Craigslist.
  4. Hearing “The Star Spangled Banner” usually makes me tear up, for about four different reasons.
  5. I’ve visited 38 states, mostly in one summer journey in my own small airplane.
  6. The least authentic of those visits was to Montana, where I did a touch-and-go at the southeasternmost airport, and only briefly put one wheel down.
  7. The most authentic of those visits was in Albany, Missouri, where I was introduced to the town doctor by his cousin who’d picked me up on the road into town (and I wasn’t even hitchhiking). The doctor bought me lunch (at one of the two open restaurants in town), showed me his restored car collection, took me on rounds at the hospital and introduced me to his patients, let me buy him & his wife dinner (at the other), put me up for the night, and gave me the keys to one of the cars to drive myself back to the airport in the morning.
  8. I can open champagne with a sword, one of many important things I learned from my father.
  9. The only times I cut class in junior high school was to watch the film & TV companies that often shot near where we lived (in a trailer park in Malibu). I was there when Fonzie jumped the shark.
  10. My first job was in the kitchen of the Sandcastle restaurant in Malibu, the blue and white building outside Jim Rockford’s trailer’s front door.
  11. I got into computers by getting lost my first time in Santa Monica, near a closed pizza place, a sketchy-looking bar, and the first computer store in the world. My first job in computers was entering BASIC programs from a book there – I never finished the book, and was never paid. (Hi Greg!)
  12. When I was into citizen’s band radio in the mid-70’s, my handle was “Condor”.
  13. I see a lot of movies: around 200 last year, around 80 so far this year (mostly at the Portland International Film Festival, underway now). The only genre I don’t bother with is horror.
  14. I value my oldest friends exceedingly highly; though I’m rarely in touch with them, I think of them often and miss them deeply.
  15. I once drove from Santa Monica to Malibu with my late best friend Lad, with my seat fully reclined and me unable to see, in traffic. I worked the pedals, he steered. This was about the limit of our high-school hijinks.
  16. My favorite movie line is when Harold gives Maude a coin stamped with “Harold loves Maude”, and she throws it off the pier and says “So I’ll always know where it is.”
  17. Everything I know about bowling, I learned from watching Dad: Get a heavy ball. Throw it really hard.
  18. My favorite film is “The Shawshank Redemption.”
  19. Baseball is pretty much the only sport I like watching, yet I don’t like extra innings; nine is enough. (Worst baseball decision ever: at a San Jose Giants game, I turned down a job offer from Mark’s friend Pierre at then-nascent EBay. I think the Giants lost that day, too.)
  20. I play guitar, but not very well. Other instruments I’ve attempted include drums, cello, piano, flute, banjo, ukulele, clarinet, and French horn.
  21. I never snuck into extra movies at the multiplex until my Dad got me to, when I was nearly 30. Now we rarely do, because we need to get home to the dog.
  22. Nowadays, I write software mostly in Ruby. Other languages I’ve been paid to use include BASIC, Fortran, Pascal, C, C++, Bourne shell, Postscript, c-shell, Perl, Bash shell, Java, Javascript, and Python, roughly in that order. Oh, also: 6502, 6800, 8080/Z80, 68000, and ARM assembly languages.
  23. I have a high-school diploma *and* a California high school equivalence certificate.
  24. Our dog is named after the little girl in “To Kill a Mockingbird”, of course.
  25. I own a straitjacket. Surprised?
8:37 am — GeneralComments (4)

My “Day On”

Today on Martin Luther King Day, I participated in Day On, yet another great Portland tech community event: local geeks gathered at CubeSpace to volunteer to help non-profits with technical issues. A couple of dozen folks showed up to offer help, and though only a few folks came by to ask for assistence or asked using the Day On website, a great time was had by all, and we hope the event will continue and grow.

I was one of several folks who got to help Dean Suhr of the MLD Foundation, a resource for families affected by Metachromatic Leukodystrophy; one page of the Foundation’s website displays a Google map showing families affected by the disease, and the map display wasn’t working right. I was able to find a workaround for a problem in a map-display library, and I’m hoping to work with the library’s developer to help fix the underlying problem.

After I showed Dean my fix, I got an unexpected bonus: Dean mentioned that he was considering using Google Maps’ “clustering” feature, which allows a single symbol to represent many individual map tacks when zoomed out to show a large map area — it’s a feature that helps reduce map clutter when a map holds a lot of symbols.

Dean had thus far elected not to use this feature — instead, when zoomed out, he’d used a smaller version of the butterfly symbol that represented each family, to help each individual family show up better on the big map. As he told me this, I thought about the effect of the disease on Dean and his family, multiplied by each of these families, and thought that Dean had already chosen the perfect representation (and said so).

I was lucky to be able to volunteer today, lucky to meet Dean and help a little with the Foundation’s site, and especially lucky to make that connection between the work today and groups like Dean’s who help so many people. Tomorrow I’m getting up early to head back to CubeSpace to watch the Inauguration with more of my Portland tech community friends, and I feel even more strongly that I’m lucky to be part of such a terrific community.

11:50 am — Around Here, GeekeryComments (4)

A Christmas tradition, from 1973

Christmas was a big holiday for my Dad: each year, he’d send out custom Christmas cards with obscure messages. He’d look forward to the phone calls that would result — people asking for hints, or badgering him for the new low of that year’s wordplay. He’d usually chide them (truthfully) that I’d gotten the answer in only a minute or so – I think my fondness for solving puzzles was inherited from his fondness for creating them.

It’s been 35 years since the first of these cards – I’m starting a new tradition, posting them here for the holidays. Here’s the first one.

10:33 am — GeneralComments (4)

Fixing a little VPN annoyance

I’m writing this in a coffee shop, and when I’m using a public wireless network, I like to secure my network traffic using a virtual private network (VPN) that I set up on my server at home. Without this, anyone else close by could spy on what I’m doing (including seeing passwords I’m sending to badly-secured web sites). Unfortunately, the connection appears to go bad after a short while, and it took me weeks to spend the minute it took to find a fix.
(more…)

11:54 am — Geekery, ToysComments (1)

The Android fonts on my desktop are beautiful

Droid family font sampleI’ve been tinkering with developing software for the Android phone platform (and loving my G1 phone that runs it)… the Android folks at Google hired Ascender to create a new font family for the phone, the only family that the phone comes with. Here’s a sample from Ascender’s press release.

It occurred to me that because the fonts were designed for legibility at small point sizes, Droid Mono might be a good replacement for the terminal font I do much of my programming in. It turns out that the whole family makes excellent replacements for the default fonts on my Ubuntu systems: they’re so legible that I’ve been able to reduce the default sizes as well, effectively giving me more screen real estate. Several times in the last couple of days, it’s occurred to me how much more beautiful my working environment is, now that I’m looking at a well-designed font.

You can get the fonts from within the Android SDK, but another helpful blogger has put them up as a separate download. (If you’re installing them on Linux like I did, put them in a folder in /usr/share/fonts, then do “sudo fc-cache -f -v” to get the system to notice them.)

11:15 am — GeekeryComments (2)
Next Page »