Category Archives: Life

You’re a Part of Something

“If you’re not part of the solution, you’re part of the problem.”

This tired old adage sounds accusing and incriminating, like you’re supposed to feel guilty for not working towards a solution, a better world. It’s a bold, shaming aphorism.

Here’s my version.

“If you’re not part of the problem, you’re part of the solution!”

Optimism. Relief. Exoneration.

Mine sounds so much more optimistic than the original. Yet, they are exactly logically equivalent.

Both of them state that “you” are “part of the solution” or “part of the problem” (and maybe both). There are two sets: “problem”, “solution” and you are a member of at least one.

Don’t believe me? Here’s a rough guide to a formal proof.

Let S = “you are part of the solution” and P = “you are part of the problem”.

The first statement translates to “~S => P”.

The second statement translates to “~P => S”.

We will show that one implies the other. First, we will prove that (~S => P) => (~P => S).

1. ~S => P  (assumption)
2. ~P (assumption)
3. ~S (assumption)
4. P (1&3, implication, depends on 1,3)
5. P & ~P (2&4, depends on 1,2,3)
6. ~~S (RAA, 5&3, depends on 1,2)
7. S (double negation, depends on 1,2)
8. ~P=>S (2&7, implication, depends on 1)
9. (~S=>P)=>(~P=>S) (1&8, implication, no dependencies)

The proof that (~P=>S)=>(~S=>P) is virtually identical (just swap the roles of P and S).

My Obsessive Behaviour Finally Pays Off

I record all my comedy sets obsessively. I’ve done over 340 sets and I’ve recorded all but a handful. A few days ago, I listened to my first set on a whim. It was, shall we say, “interesting”. I definitely sounded like one of those new comics I’ve heard so many of since then. But once in a while, a flash of brilliance peeked through which made me happy (although you might have had to have been me to know what they were, since most people don’t such direct insight into my brain).

I decided to come up to Vancouver for a while and because I have more time than income these days, I drove. It’s about a thousand miles in fifteen hours. Because I hate wasted time and doing just one thing at a time, I was trying to figure out what else I could do while I drive.

I think you see where I’m going with this. I decided I would take advantage of my obsessive recording of my sets and listen to them as I drove.

Any comic will tell you that listening to yourself is torture. It turns out though that after a few sets, you become numb, and it become a lot easier. All in all, I listened to show 17 (my first few shows were WAV files and iPod wouldn’t play them) to around show 102 in about fourteen hours. I heard a few jokes and tags I’d forgotten about and thought of a few new twists. I brought my voice recorder with me and made about 30 or 40 notes to self. And it actually helped the time go faster by keeping my brain occupied.

I reviewed my first year of comedy (I started in November 2004, although I suppose technically I did maybe three or four shows at UCLA in the early 90s that I am quite certain were terrible). A lot of these shows were simply awful. My set-ups were often too long. I was incoherent and rambly. There were premises with no punch lines. My diction was poor. My speech was peppered with useless “Ums” and way too many “So…” transitions.

My set-ups were filled with lies. For example, in my very first show, I had a set-up that talked about something that happened when I was married. But I’ve never been married, so when I listened, I just sounded like a lying idiot. I guess I couldn’t figure out any other way to set it up, but I mean, come on, that’s just lazy.

I was surprised how many jokes I still use were in these early eras, although many have been improved beyond recognition after going through quite a few iterations.

I also talked quite frankly about the shoulder surgery I went through in August of 2005, and it was really interesting to hear what I had to say both before and after the surgery. It was almost like I was doing it more for me than for anyone else.

Early on, I’d leave my voice recorder on a table when I went up, and I often ended up in the background. Once in a while someone sitting near my recorder would make a comment about a joke or something that I’d strain to evaluate. Or other comics would see the recorder and leave a cute message for me. I don’t know if they realized I wouldn’t hear it until 2008.

I would really strongly recommend recording all your shows. Bring the recorder up to stage with you, and just put it on the stool with any notes you might have. It might seem weird, but if you don’t make a big deal out of it, no one cares. You don’t have to listen to it, but if record all your shows, you at least have the option.

Near the end of my trip, I fast forwarded to listen to some sets I have done in the past few weeks. I was so relieved to hear how much better they are. I really have improved noticeably. I mean, this is no surprise; you would expect that practicing something several times a week years would yield improvement. But it was a relief to actually have some evidence.

I suppose I’ll review my second year of comedy on the drive back. Fourteen more hours of torturous self-realization. I can’t wait!

The Chair That Melted

It’s not too often that one gets the chance to experience a sensation that is completely new and unexpected, and even less often that it comes from completely mundane circumstances. But it happened to me.

The other day I was having dinner with my comedian friend Ben at a Thai restaurant in Sunnyvale that shall remain nameless. We had been there for a few hours, and had already finished eating, just discussing a multitude of topics. I was rocking my chair a little bit, when suddenly, something seemed wrong.

I felt as though I was losing control. Like something was wrong. Maybe there was an earthquake, or I was having a stroke, but I couldn’t hold myself up. I started to lilt to the left, then sink lower. Not in a symmetrical way. I was completely confused and baffled as to what was happening, and not just on a conscious level — my body had no intuitive knowledge how to respond or stay up.

Soon, I found myself, sitting on the floor. Balance restored, I finally felt normal again. It was just a few seconds, but it was remarkably bizarre and weird. I looked around in an effort to figure out what happened.

It quickly became obvious that the left front leg of my chair had failed. It had twisted off and broken. Not cleanly, either. It was as though the leg had rotted or been eaten by termites, and finally been weakened enough to just slowly give up.

I was completely uninjured, and confused enough that I was not even embarrassed.

Ben pointed out that the detached leg looked like a pepper mill, so I picked it up and mimed doling out fresh pepper in the way that fancy waiters do (although not generally at a Thai restaurant).

I swapped the broken chair with another at a nearby table, and we resumed our conversation.

On the way out, Ben, being nonstandard, said to a waiter “You’re sorry that happened,” and the waiter, who was not quite fluent, responded with “That’s okay.”


We’re Off to See The Wizard!

I have been back in California for a few weeks now after packing up my Vancouver apartment at UBC. The weather has been perfect here, as usual. How dull. I took a cruise on the Norwegian Sun from Vancouver to San Francisco. You can move via car, plane, train, but me, I moved via ship.

I did a set in front of a large, lukewarm audience in the talent show on the last day. Probably my biggest, lukewarmiest audience yet. I feel like they hated me, but I’m too scared to listen to the tape. I record all my shows, but am generally too scared to listen to them. I think that’s a pretty common reaction.

Cruises are fun, relaxing and nice. I recommend them. On the last day, I always have this feeling of sadness about it ending too soon. The staff is generally wonderful and upbeat, but there is something inescapably weird about it. It’s all too much fun, too nicely orchestrated, everything subtly controlled, like Disneyland, or like how Las Vegas allegedly pumps oxygen into the casinos to help keep people awake. There must be gallons of marketing and behavioral research at corporate headquarters. All this neat stuff is happening – great food, activities, music, entertainment – and you see the people directly providing all this. But what’s missing is the man behind the curtain. Obviously someone must be planning all this, but you never see who. It’s almost eerie.

But hey, that’s what vacations are all about: being manipulated into having a good time.

Free Stuff! Come ‘n Git It!

I moved out of my Vancouver apartment on campus at UBC on the 14th. However, my Sunnyvale apartment, where I’m moving back to, is pretty full, and packing is always a torture, so I left behind a bit of stuff in my Vancouver apartment. If you want any of it or want to take a look, let me know and I can arrange a run-through with a friend who lives in the building.

When I left, what remained behind included:

  • a kitchen garbage pail
  • two small garbage pails, for bathroom and bedroom
  • a blue chair that folds out into a single bed (cot-style), suitable for living room
  • a black shelf, about two feet by two feet, four feet high, with five shelves
  • a folding chair, suitable for sitting at a table or desk
  • some kitchenware, including a Brita filtered water pitcher and light bulbs
  • an entertainment center stand, with space for a TV and bookshelves on the side
  • a (pretty lousy) TV, about 19″
  • a DVD player
  • a little glass table, about the size of a foot stool (but probably too fragile to use as a foot stool)

Since I ain’t there no more, this is from memory and I probably forgot a thing or two. If you’re local to UBC University Village apartments and want any of this, or just want to look through, let me know. Email me at him at richardkiss dot com, or on the Facebook™. Hurry though: the lease expires on September 30th, after which, building management will clean it all out.

Very Minor Details

As I come to the end of my time living on campus at UBC in Vancouver, I become wistful, longing and thoughtful. But I can’t help it. I’m a sap.

Last night I did my second double-header in two days; first a show at Yuk Yuk’s, then I cut out early to get over to Kino, where I went up almost right away. Both shows were packed.

I caught the last 99 home to UBC, and walked over to The Gallery where they were just finishing up karaoke.

On the short walk home, for some reason I started thinking about how the outdoor pool on campus, with the ridiculously high 10 meter diving platform, was protected rather minimally by a miserable little fence, and how easy it would be to sneak in there and jump away. Foreshadowing. As I walked up the stairs by the pool, I saw a couple guys relieving themselves into the bushes with their friends chatting away nearby.

As I walked by, one nervous tough guy asked me “Are you security?” I don’t know what made him think that. Maybe because I look over 25.

“No, but thanks for asking.” I kept walking. Realizing they were in the clear, they began to execute on their makeshift plan. Intrigued, figuring I was about to witness a fairly memorable event in someone else’s life, I stopped to watch in morbid fascination.

The four or five guys climbed the fence, and at the encouragement of the three or four gals, stripped down to their underwear (and in one case, all the way to nothing), climbed the intimidating 10 meter tower, and one by one, jumped the horrendous heights to the pool below.

After the last fellow jumped and it was clear the show was over, I moseyed on into the late, quiet night.

Then I saw a couple raccoons crossing the street and had a quick conversation with a French exchange student who was trying to think of the English word for these beasts (indigenous to North America, although now escaped to Europe, if Wikipedia is credible on this).

In summary, I’m fascinated by trivial stuff, especially when sentimental.

My Last Day

Tomorrow is my last day in the office at BigPark, the Vancouver company that I work for. The jet-setting lifestyle between Vancouver and California has been pretty interesting, but it seems that it may be coming to an end.

I have a lot of hope for the company, and remain a big supporter financially and intellectually. We have a great team and some great products in the pipeline. I expect I will be doing a fair bit of consulting in the coming months for our initial product launch and transition network operations.

What’s next? I will be in Vancouver another month, enjoying the rest of the summer and packing up my apartment, then heading back to California. For the first time in years, I do not have a job. And this is intentional. My goal is to take at least a year off having a day job so I can relax, travel, and work on a few personal projects.

I’m nervous about this big change, and a little sad about this transition. I know there will be a lot of things I will miss. Yet, I’m excited with anticipation about what the future will bring. And we’ll see if having free time makes me lazy or drives me crazy.

Google Code (Peanut Butter and) Jam

Last Friday, I participated in the Google Code Jam, a programming puzzle contest sponsored by Google. It was the first qualification round, and I was very happy with how I did, coming in 74th in my heat (there were three heats, and mine had almost 3000 participants).

There were three problems, each with two data sets. The last problem was really more of a math problem, which I figured would have given me more of an edge because most of the time when I cheat on my second love, computers, it’s with my first love, math. However, I couldn’t complete it in the time allotted. But I also couldn’t stop thinking about it. I eventually came up with a solution which I’ll share here.

It’s problem C in round 1A (start here), but essentially, you have to find the last three digits before the decimal point for the number (3 + √5)n where n is a whole number that can be very large (up to two billion).

This means you cannot calculate the whole thing; it would contain several hundred million digits, which would use most of RAM just to hold the representation. So you have to figure out a trick.

Here’s what I came up with (too late to submit). Let An = (3 + √5)n and Bn = (3 – √5)n. Observe that An = Xn + Yn√5 for some series X0, X1, … and Y0, Y1, … where each of Xn and Yn are whole numbers. You can show this easily by induction. You can show a similar thing for Bn; in fact, Bn = Xn – Yn√5.

This means that An+Bn = 2Xn.

Notice that (3 – √5) < 1, so Bn < 1 for n>1, and goes towards 0 very quickly. Since An = 2Xn – Bn, we can calculate An by calculating 2Xn and subtracting a “small” number… that is, the last three digits of An are the same as the last three digits of 2Xn-1.

So all we need to do is figure out Xn!

We know that X0 = 1, Y0 = 0. An+1 = An(3 + √5), so

Xn+1 + Yn+1√5 = An+1 = An(3 + √5) = (Xn + Yn√5)(3 + √5) = (3Xn+5Yn)+√5(Xn+3Yn)

so separating rational and irrational parts yields the pretty recurrence relation Xn+1 = 3Xn + 5Yn and Yn+1 = Xn+3Yn.

That means Xn+1 and Yn+1 depend only upon Xn and Yn. Since we only care about the last three digits, that means that there are only 1000*1000=a million different combinations of Xn, Yn, and thus, the series must repeat in fewer than a million iterations. It shouldn’t be too hard to find a repeat.

Here’s the Python code to find the cycle length:

def _a_b_n(n):
    if n == 0:
        return 3,1
    a,b = a_b_n(n-1)
    return ((3*a+5*b) % 1000, (a+3*b) % 1000)

def a_b_n(n):
    if not CACHE.has_key(n):
    CACHE[n] = _a_b_n(n)
    return CACHE[n]

for i in xrange(int(1e6)):
    k = (Xn, Yn) = a_b_n(i)
    #print i, a, b, (2*a-1)%1000
    if F.has_key(k):
    #print "repeat: %d, %d" % (i,F[k])
    F[k] = i

cycle_length = i-F[k]
print "cycle length is", cycle_length

When you run this, it takes less than a tenth of a second to figure out that the cycle length is 500, and A503, B503 = A3, B3. So now it’s easy! Calculating the first 503 terms is enough.

Here is the rest of the code:

def do_trial(f):
    n = int(f.readline())
    if n>cycle_length:
        n %= cycle_length
        n += cycle_length
    t = a_b_n(n-1)
    return (2*t[0]-1) % 1000

f = sys.stdin
count = int(f.readline())
for i in xrange(count):
v = do_trial(f)
print "Case #%d: %03d" % (i+1, v)

It runs in pretty much no time at all, thanks to the excessive caching.

Aquatic Agism

When in Vancouver, I live in an apartment on campus at the University of British Columbia (UBC), one of the largest universities in Canada. The aquatic centre on campus has a huge indoor pool, as big as I’ve ever seen. It’s so large that every time I see it I can’t believe how big it is, even though I’ve been there many times. In fact, it’s so big, I can’t believe they could make a building large enough to contain it. Of course, I’m sure if you ever come see it, you will not be impressed since I’ve massively oversold it. I don’t care though. I will always think it’s big.

The pool has a three meter diving board and a five meter platform. The three meter is plenty high enough. The five meter platform is just plain scary. The one time I did go up there, I realized that even if no one seems to be paying attention, climbing back down really is not an option. It’s just too humiliating. I had to jump. And it was not good. It’s scary enough just being up there; jumping down and landing is… well, shall I say, “unpleasant”. So I don’t go up there anymore. Nothing good can come of it.

Anyway, I was at the pool recently and saw a bunch of kids jumping from the five meter platform over and over. I guess they didn’t get the same impression I did. Maybe they even found it fun. I thought that was pretty amazing. These kids are so brave.

I walked by the bottom of the ladder where one of the kids, a skinny gangly girl with arms and legs everywhere, was about to go up again. Here I am a grown man, too scared to go up there, when this kid of… hmm, how old do you suppose she is? I needed this information to continue my internal self-beratement.

So I said “What are you, twelve years old?” With a snarly sneer, she shot back “No… thirteen.” I could tell from the look on her face that she was insulted to the point of disgust.

Oh brother. “Oh c’mon,” I said. “That was pretty close. C’mon, you try: guess how old I am.” Being much older, even a small percentage error would likely yield an answer off by much more than a year.

Of course, she takes a quick look at me, pauses a beat, then carelessly guesses exactly the age I turned on my most recent birthday. Not even a friendly underguess, like the kind you offer friends to assure them that they look much younger than they are. Spot on.

I was taken aback. What could I say? “Hm. On the nose. Touché.” A meek offering.

How a twelve year old guessed the age of an adult, I know not. She could very well have a career at the county fair at a guess-your-age booth. Or maybe not (accuracy there ain’t really a premium when the value of the $1 prize you win for an incorrect guess is greatly exceeded by the $3 fee).

I got the last laugh though. Shortly after, the lifeguard came over and chased her gang away because the “Adult Swim” started. “Ha ha! Maybe thirteen is more than twelve, but it’s still less than eighteen!” I taunted to her from the cowardly safety of inside my head.