☰ Menu+  instagram  tuffy  ringing ear  rentals 

rants index: current | 2016 archive | 2015 archive | 2014 archive | 2013 archive | 2011 archive | 2009 archive | 2008 archive | 2007 archive | 2006 archive | 2005 archive | 2004 archive | 2003 archive | 2002 archive

2 Dec 2011


Dear Everyone,

Julie and I are separated.

The end. Not, not really -- I am willing and eager to talk to any of you about it, but I'm not going to blog at length other than to say that we are otherwise OK, Hazel is doing fine, and our situation is amicable so you don't have to feel weird about it.

-The Management

30 Oct 2011


One of my pleasures in life is reading along in a novel and stumbling across a great sentence / epigram. E.g., one that often rolls around in my mind since I first read it years ago:

"Suddenly I perceived the menace of even worse boredom. Yes! He was so silent because he had something to tell me." (Chance, Joseph Conrad)

I recently found this in Pride & Prejudice; I'm putting it here for safekeeping:

"We all love to instruct, though we can teach only what is not worth knowing."

(If you are curious about context, Google those phrases; the texts of the books are online.)

10 Aug 2011

Voloci repair: reflashing the controller

This is an esoteric but essential repair for a Voloci controller that seems to have lost its mind. I collected all the info and wrote up the details here.

3 Aug 2011

New Sweet Breath: Supersound Speedway

This is the debut album from New Sweet Breath, from back in 1994 -- now on iTunes, Amazon mp3 etc.

28 July 2011

New Sweet Breath and Bugjuice re-releases

In an effort to make old Ringing Ear Records releases more accessible, I'm testing out a new strategy. I'm commercially distributing a couple of lost classic RER albums via TuneCore which gets them into iTunes, Amazon MP3, Spotify, MOG, Rhapsody, and so on.

The albums are:

You can listen to the albums here, using this TuneCore widget, or look for them whereever you normally go for online music.

24 July 2011

Voloci 36V Lithium Project

I did this project last summer but I'm just now getting around to posting the photos & description. Basically, replacing the batteries in a lead-acid Voloci with lighter and slightly stronger lithium batteries.

Read about it here.

21 March 2011

Sinkhole video

I found some old footage and edited it together to create Sinkhole's first music video. Somehow I don't remember us wearing those exact outfits in 1995, but the haircuts are unmistakable.

1 March 2011


My brother Karl has invented and is marketing this new bike seat called Nexride that apparently is nicer to "your delicate perineal area" than a conventional bike seat. I haven't tried it yet but it looks promising.

10 February 2011

Relative Depth Buffer Imprecision

I did some investigating into depth buffers (AKA z-buffers), and how to make them work better for apps that want deep perspective. Apps like Google Earth have a hard time with conventional depth buffers due to precision problems.

It turns out that the way depth buffers have been implemented has been pretty poor from day one. Conventionally, for each pixel the GPU computes (za + zb / z), converts it to fixed point, and compares/writes with what is already in the depth buffer. za and zb are constants that are picked so that the depth value varies from 0 at the near clipping plane to 1 (or the maximum fixed-point value) at the far clipping plane. This is well-known to have poorer precision as you get away from the near plane.

Later, somebody came up with the "W-buffer"; basically the formula is (z-zn)/(zf-zn). This is about equally bad, but it biases the imprecision the other way -- it's good at the far plane and bad at the near plane.

Lately GPUs have been adding support for floating-point depth buffer formats, which intuitively would solve all of this, but when used naively actually make things worse!

What to do? In my opinion, an ideal depth function would distribute imprecision as evenly as possible, with respect to screen space. The function for this is log(z/zn)/log(zf/zn).

To make all this more grounded, I created a web page where you can interactively graph the relative imprecision of these functions, in both fixed and floating point, with adjustable bit depth. There are additional notes linked from the visualizer.

Here it is!

I got lots of interesting insights from playing with this; here are just a few samples:

log is (much) better than conventional z- or w-buffer

Reverse-float works pretty well, especially if you can tune the number of exponent bits. log in fixed-point is still better though.

16-bit log even sorta works for extreme depth ratios; here 1x10^8. Miraculous! Reverse-z with 5-bits of exponent is somewhat competitive.

6 February 2011


In October 2009, my friend Matt Burkhart, who I had shared an office with for over a year, committed suicide. (See MattMemories and also this Out of the Darkness page)

It was an unexpected shock for me (not to mention his family and other friends, but this blog is really about me). I've been gradually processing it ever since. I haven't done any blogging since then -- every time I thought about posting, I felt I should first (in this oddly personal but public medium) address my feelings about Matt, and I wasn't ready to take that on.

I think I'm ready to say something now, even though it will necessarily be incomplete and of dubious value to anyone else.

Matt had joined Google directly out of school at U of Washington. I joined Google around the same time I think, 2005, having being in industry for a long time. He worked in Mountain View and I worked in NYC and I didn't meet him until a couple years later, after he transferred to NYC. We eventually started sharing a four-person office, as we were both oddballs: NYC engineers assigned to projects based in Mountain View. We were on opposite ends of the Google Earth & Maps pipeline -- he worked on image processing for satellite and aerial imagery, and I worked on the client software that displays the processed results to the end user. Other office occupants came and went but Matt and I stuck together.

Over the course of sharing the office, Matt and I had daily conversations about a range of topics. We followed the office scuttlebut about interesting projects like Android and Google Wave, commiserated about the ups and downs of internal tools and procedures, gossiped (in our nerdy way) about people we knew in common. We had a shared interest in videogames and science fiction and startup culture.

Matt often expressed curiosity about my game industry and startup experiences, so we talked about that. He told me he would like to start his own company someday. I had a lot of respect for his talents, and I would secretly think, "if Matt ever starts a company, I should jump on that bandwagon."

We talked at length about the company's process of peer evaluation and promotion. We were both "Senior Software Engineers", he the 26 year old whiz kid, I the 40 year old veteran, but both of us with similar tenure at the company and operating in similar roles. One of our nutty bull-session ideas was a Zuckerbergian "promote-or-not" web app where you'd look at pairs of photos of your colleagues and pick the one you'd rather work with. This, to avoid the periodic labor of writing thoughtful evaluations of our colleagues.

We often talked about our side projects; for instance he was working on a multiplayer game engine that embedded Python and webkit (for UI) and 3d graphics, with a networking layer, so that different entities in the world could run independently of each other.

Another project of his was the game "Alien Bloodbath", which he originally built as a Windows program with his cousin for a school project. When we each got pre-production Android phones, he decided to port Alien Bloodbath to run on the phone. I playtested various versions and gave him my input. Meanwhile he did the same for Flingers, a small game I was developing. He was quite ambitious with his game and took it seriously, and we shared many chuckles, some tinged with outrage, at the thoughtless or profane or witty comments that people left about the game on the Android Market.

We also talked about technical problems we were facing in our work. He convinced me to start going to the Computer Vision Reading Group which was very rewarding intellectually and also led to making new friends at work. I was always impressed by his matter-of-fact approach to difficult problems; he was never intimidated but also freely admitted when he was stuck.

We had a lot of good speculative discussions, like "when will internet TV take off?" or "is the Google computer fleet more or less complex than a human brain?"

I bent his ear endlessly about my random travails with family life and dog ownership in NYC. He was a little less voluble about his personal life but we talked about that as well sometimes.

Matt was a deeply idealistic person. He was both cynical (ever-present in his sense of humor) and optimistic. He trusted his own reasoning above all. He was friendly with strangers, but softspoken and not very gregarious.

After his death, I came to learn that he suffered from chronic depression. In hindsight I can interpret some of his manner reminding me of someone who is naturally generous and easygoing but in constant physical pain. If a topic of converstation was interesting and distracting, he could be animated; if it didn't interest him he would quietly turn to something more diverting. I'm just speculating though; I didn't know about his illness then and he rarely if ever discussed issues of mental health or depression, although on several occassions I had related my experiences seeing a psychotherapist in the stress-filled wake of a fire in my apartment building.

As I said, I was shocked when he died and somewhat consumed by it for a time. I immediately went back to the psychotherapist, which was an incredible relief in the immediate aftermath. In the first session she pulled out one choice quote from Freud, something like, "psychotherapy is a process for transforming neurotic misery into ordinary sadness."

I had plenty of neurotic misery. Two questions in particular haunted me -- 1) Why? 2) What should I have done differently?

For the first question, I don't know why he took his own life. There are many circumstances that may or may not have contributed, but I seem to get fixated on the question of whether it was a considered rational act or not. I have two basic ways of explaining it to myself -- A) that he was in constant mental anguish and made a rational decision to escape permanently, or B) that he was temporarily overcome by a bout of irrational internal forces. Maybe both are true. Maybe neither are true. And I still don't know why it matters to me. Perhaps, because we had a relationship mediated by rational argument and I greatly respected his mental powers, I'm both attracted and repelled by the idea that he made a rational choice to take his own life.

Anyway. The other question is about my own involvement in the tragic event. When something terrible happens, guilt invades those nearby, deserved or not. And it can really mess you up, deserved or not. I can think of many things that I might have done differently.

Why didn't I reach out to Matt more, in a social context? We were into the same things, we lived within a few blocks of each other, but we socialized outside of work exactly once, just weeks before he died, at his initiative. This is something that I could see making a direct, tangible difference. To the best of my knowledge he committed suicide on a Sunday alone in his apartment while I was walking my dog or sitting in my apartment surfing the web or going to see a movie. Practically speaking most of my free time is spent with family or solitary pursuits and nowadays I hardly ever hang out with friends, but that's just a pattern I'm in. Plenty of people living my life make social time for their friends.

Why didn't I probe more into his state of mind? Upon reflection and talking with his friends and family, I have more or less settled that question for myself -- I don't think Matt wanted to share those things with me. Perhaps I could have pried anyway, and perhaps that might even have helped him in some way, but I think it would have been an unwelcome intrusion and I feel more or less OK having respected that boundary even given what happened.

Why didn't I know more about him when he was still alive? What did he really think of me? What was he thinking about at the end? Would we have ever done a startup together?

Why why why? I don't know. During therapy and on my own I explored these questions ad infinitum, which turned into even more deeply rooted questions about my own way of being, and even a few answers, but the big imponderables remain. At least, having explored such questions at length did, in my case, transform neurotic misery into ordinary sadness.

rants index: current | 2016 archive | 2015 archive | 2014 archive | 2013 archive | 2011 archive | 2009 archive | 2008 archive | 2007 archive | 2006 archive | 2005 archive | 2004 archive | 2003 archive | 2002 archive

tu@tulrich.com |