So it's been more than five weeks since my last entry, so this probably doesn't affect a whole lot of people greatly, but I've decided to stop posting here altogether, and instead will maintain a WordPress blog on warmenhoven.org. Mostly I'm just doing it because I can, which is the worst reason for doing anything, but also the most common.

I'll still be reading my friends page, so it's not like I'm abandoning LJ completely. (Though I do have an RSS aggregator that supports cookies, so I'd be able to read protected entries without viewing my friends page, but I'm not planning on doing that.) So I'm not going to defriend anyone, though I expect that some people will probably defriend me.

Anyway, bye.

The art of the state

So at some point in the wedding planning, we were going to have to get to this point, so it might as well be discussed now. This is always sort of a weird subject, and so I may not spell everything out clearly, but hopefully you'll get the idea. It's about the issue of getting a prenuptial agreement.

Most financial advisors will tell you that getting one is a good idea. In fact, Yahoo! recently had a fairly big article on the front of their finance section by Suze Orman, telling people to discuss their prenup even before they get engaged. She does what I think is a rather mediocre job of selling you on the idea that a prenup can actually bring a couple closer together, and then tells you to each go get your own lawyer to start drawing up the document.

But really what it does is make the couple adversaries before they're even married. You basically go through the equivalent of divorce court, but without the knowledge of hindsight! Therefore you have to try to account for every possible scenario of what might happen, and how you each would like to handle particular cases. There has certainly been more than one wedding that's been called off because they couldn't close on the prenup. And to top it off, prenups are usually contested, for a variety of reasons.

So, prenups are a bad idea, but for at least a certain set of people (including me), they had become sort of a necessary evil. I use the past tense there deliberately, because of something I learned about while having dinner with my parents. It turns out, I may not need to get a prenup after all.

I'm not terribly clear on the details, but the basic idea is before the marriage, you create a trust, which becomes its own independent legal entity (complete with taxpayer ID, meaning you have to file a separate tax return for the trust). Then you put whatever assets you want protected into the trust. You can set up the beneficiaries any way you want, so it doesn't even necessarily have to go to your spouse in the event of death (which also neatly removes the possibility of the prosecution claiming your spouse had "motive" in the event of your "disappearance").

So that's the current state of the art. Don't get a prenup, get a protected trust.

The sudden departure of one's head

So I'm still patiently waiting for the DAM to approve my Debian application. I'm the next on the list of people to be approved. I've got two packages pending upload (one to adopt xlhtml and one to fix a small bug in mutella), that I've been too lazy to poke my sponsor about. Once I get my account I should be able to upload them without much of a problem. Anyway, it's not like anyone is reporting any bugs against either of these packages any time soon (part of the reason I took them is that there are very few people besides myself who actually use them).

The wedding plans are coming along well. We had a meeting with the coordinator at the reception site, which I thought went well. We also chose our Save The Date cards and invitations; hopefully we should get a small sample of those within the next couple weeks, so they can be mailed before the end of February.

Art Rutzen, who Lisa and I went to New York with in 2003, died this past Thursday, unexpectedly. I think Lisa and I are both still kind of in shock about it; he was only in his mid-50's and though he was a bit heavy-set, didn't seem terribly unhealthy. Anyway, there's a service on Wednesday afternoon that Lisa and I are both going to try to attend.

Today, Brocade unexpectedly announced that Greg Reyes, the CEO, is stepping down and Mike Klayko, the CEO of Rhapsody before we bought them, is becoming the new CEO. They didn't really give us any details other than that, but I get the feeling that most people think this means bad things are about to happen. I'm half-jokingly thinking it means that Cisco is about to buy us, and they want someone with experience in being bought to handle it.


My Debian application is nearing a close; now that there's a new Accounts Manager, I should hopefully be approved any day now (I'm currently third on the list of not-yet-approved people, and at a rate of about 2 per day, that means that Wednesday's my day).

"Curzilla", my curses-based front-end for mozilla/firefox, is progressing well. The spacing is all wrong, but that's going to be the case at the end of this anyway.

See, the problem with writing a text-based front-end for mozilla is that the layout engine assumes that you can do things like draw lines or put five pixels of spacing between two lines of text. The current implementation is set up in a way such that the gfx/ source is in charge of drawing (where the bulk of my changes have been) and layout/ (which so far I haven't had to touch) is in charge of actually laying things out. Of course layout/ queries gfx/ to get an idea of things like how big the screen is or how big the text is, but layout implicitly assumes that gfx/ is going to be able to put that text exactly where layout/ wants it. I haven't figured out exactly how to resolve this yet, but it's inevitably going to lead to certain text getting overwritten by what should be on the line below. (You can see that in the screenshot, in the third "paragraph": the headline "Bush Won't Rule Out Action Against Iran Over Nukes" is partially overwritten by the line that should go immediately below, which reads "3 hours ago".)

I'm sure there will be lots more problems down the road. If this had been a normal pixel-based drawing back-end instead of a character-based one, I probably could have been done by now. But no, I had to be difficult.

09:59:23 EricWarmenhoven: i don't have any meetings today. isn't that wonderful.

So we chose our DJ and photographer. We haven't actually signed the contract yet but the checks are written. Next up are the videographer and the florist.

I've never really written about what I actually do at work, partly because I'm not really sure what I'm allowed to talk about, partly because I'm not sure I'd explain it well enough for people not familiar with SANs to understand, and partly because I'm not sure that even if people understood, they'd actually care. So I've decided that the last two concerns cancel out the first, which was the largest. So this is what I do for a living. (Sorry for not doing an lj-cut, but I really hate those.)

Brocade, despite all the claims by management that we're a software company, is actually a hardware company. We make switches for storage area networks (SANs). Almost all of our products are Fibre-Channel (FC) based (FC, like SCSI, is both a protocol and a transport layer; also, FC-the-transport is primarily used for transferring SCSI-the-protocol, which is wrapped in FC-the-protocol). Also we're starting to come out with FCIP (FC over IP) and iSCSI products. Our old switches were either 8 or 16 ports, with VxWorks running on an i960. Now all of the new hardware runs a PPC, either a 405 or a 440 variant, with Linux (derived from Monta Vista Linux) as the base OS. All of the new hardware, that is, except the hardware product we acquired when we bought Rhapsody; their box has NetBSD running on a PPC 7xx series (I don't know too many details about it). The Rhapsody box is 16 ports; the Brocade hardware is either a pizza-box style in 8, 16, or 32 ports; or you can get a bladed system, with 16 ports per blade, and up to 8 blades (plus two control blades).

So the way it works is you buy one or more of our switches and hook them together; this becomes what's called a "fabric" (hence the name Brocade). Then you buy a bunch of FC host bus adapters (HBAs, the FC equivalent of an ethernet NIC) and put them into your servers and storage devices (many storage devices have an FC adapter already). Then you connect all the HBAs and devices to the switches, and they're able to talk to each other. The hosts (called the initiator) finds out from the switch (specifically the name server) what other devices are in the fabric and logs into them (these become the targets).

Our largest customers buy dozens of hundred-port switches and put thousands of devices (hosts and targets) on a single fabric. In our default setting, every device can see every other device, which makes for millions of interactions. To be honest, even if our switches were powerful enough to handle all of that, I'm not sure there's enough bandwidth to make it at all usable. So there's this feature we sell call zoning. Each switch has the same copy of the zone database. The zone database has various configurations; each configuration has a set of zones; each zone has the list of devices that can talk to each other. You can, of course, have the same device in multiple zones; so if you have devices A, B, and C, and you want B to be able to talk to both A and C but don't want A and C to talk to each other, you can do that easily.

I used to work on zoning. Zoning really isn't that complicated conceptually but for some reason it always ended up being much harder in practice. I think most of the reason it was so difficult is because of the two requirements we place on zoning: first, that all switches in the fabric always have the same zoning database; second, that you can modify that database from any switch in the fabric. So when new switches join the fabric, they have to merge their zone databases; when you change the zone database, you have to propagate it to all the remote switches. Once you have the zone database locally, you have to do the hardware-based enforcement, and give it to the name server so it doesn't tell devices about other devices it's not allowed to talk to.

Anyway, that's what I worked on from the time I joined Brocade in late June 2002 through about late June/early July 2004. I had worked on it long enough and become an expert in certain areas, so I still get questions about it. But I haven't actually worked on that code in probably four or five months.

Then in July 2004, I joined the Router group. The router is designed to let two fabrics share devices without joining the fabrics. See, merging fabrics is an extremely disruptive process, and sometimes isn't even possible. The router makes it possible, by keeping the fabrics isolated and creating phantom devices in each fabric. All you have to do is modify the zone database on each fabric, so that both fabrics say which devices are supposed to be shared.

The router is currently based on the Rhapsody hardware, mainly because until recently the Brocade hardware didn't have the ability to do the network address translation required for routing. But with our most recently released ASIC, we are able to do enough of the translation in order to make routing possible. So my current job is to help port the router from the Rhapsody NetBSD system (called XPath) to the Brocade Linux system (called Fabric OS, or FOS).

Around late November most of the original functionality was working; it wasn't in a saleable condition but as a proof-of-concept it worked rather well. But the biggest part of porting to FOS is that FOS has High Availability (HA). This means that on a bladed system where there are two control blades, one control blade acts as a backup in case the active fails for any reason (most typically a core dump). Also it means that you can upgrade the firmware on a pizza-box (and a bladed system) without disrupting the device traffic. So for the last month and a half, I've been working on adding the HA component to the router. On Friday I finally finished all of the necessary infrastructure, and my coworkers finished going through the code adding all the necessary hooks. So in theory it's nearly pre-alpha quality.

The actual product that we're working on, to get all of the features that we want, requires some additional hardware, which is being provided by an FPGA. There are other hardware requirements from other groups, so the actual product will only be available on a new blade (and possibly later on a pizza-box), which isn't finished being designed and produced yet. The platform group will get the hardware sometime this month or maybe February, and we're supposed to be able to test the router on the new blade early this year. Hopefully the OEMs will get it in early 2006.

So that's my primary job, is to get the router up and running on FOS by 2006. But then there are also other small projects that I keep getting involved in. The latest one is the build infrastructure for FOS. See, originally we only had a VxWorks-based product, and all of the build tools were only available for SunOS. So all of the engineers had a Sun Sparc running SunOS, and a Windows system (typically a laptop). Then we created a Linux PPC product, and didn't want to get new development hardware. Some of the engineers, including myself, are big Linux advocates and have been working on getting their own private Linux boxes (I turned my Windows laptop into a Linux laptop and somehow lost my Sun) to be a working development platform. That finally works, and I've been doing all of my development on Linux for the last year and a half or so.

Anyway, sort of through that I got involved in a lot of the build infrastructure, and started working on speeding it up. As FOS has grown, the build has gotten slower and slower; on dedicated hardware, just for the kernels (for each of the 4xx PPCs) and daemons, it takes more than two hours. For each developer individually, it can take more than four hours, and sometimes upwards of eight. So now that x86 Linux is a viable development platform, we're getting a bladed system from Dell, and are working to move all the engineers to that. Also, we use ClearCase dynamic views, which places a lot of strain on the network; so we're moving to snapshot views so that all of the files are on local disk. We're hoping to get the build for the average engineer down to 15 minutes. Plus we're hoping to fix all of the Makefiles so that incremental builds work, so a complete build isn't necessary as often as it currently is.

So that's what I do: formerly zoning, currently routing, sometimes build.

It's not about aptitude, it's the way you're viewed

So in the fourteen weeks since my last entry, I've: had a birthday; gotten engaged; celebrated Thanksgiving with Lisa's family; spent a week in New York; bought all of my Christmas gifts on time (and even two days early!); celebrated Christmas Eve with Lisa's family; celebrated Christmas Day with my family; and celebrated New Year's Eve at home with Lisa. Pretty much in that order.

The wedding is in September, and we've already picked out the church and reception sites. Lisa's picked out her dress. So it's coming along. We need to pick out a DJ and a photographer pretty quickly, because they get booked really fast.
  • Current Music
    Wicked Soundtrack - Popular

Out there is a fortune waiting to be had

If you ever feel like watching the worst driving in the world, hang out in the parking lot of any San Jose DMV. For starters they completely lack any rational design, so you can't help but end up going the wrong way at least half the time. They're also ridiculously small, so you end up with at least a half-dozen people driving around looking for parking spots, which leads to people getting cut off every thirty seconds. Also a good majority of these people are there because they're trying to get their licenses, which automatically puts them in the bad driver stereotype.

Today is my six year anniversary. Two and a half years ago I mentioned that it wasn't a really long time, and it still doesn't feel like it's been a really long time. Anyway, she keeps asking me when we're going to get engaged. I'm having fun because it's finally something I'm in complete control of, and she hates not knowing and not being in control. So I've been enjoying it for a few months now.

Meanwhile, I've been really enjoying using GnuCash, not because I like GnuCash (it's buggy as hell, annoying to use, and I've started to really dislike the default GNOME/GTK theme), but because of the information that it gives me. Since I can't stand not having everything inside screen, I wrote stark, a curses-based program to display your GnuCash data. It's incredibly basic and most of the "features" don't work yet, but it's working well enough to mention that it exists. I'm not really sure how complete of a reporting tool I'm going to make it, or if I'm ever going to make it so that you can enter information.
  • Current Music
    Judas Priest - You've Got Another Thing Coming

Eat the volcano.

We got the keys to our house on July 13th, mostly as expected. The painters came the following day and finished on Friday, which was very good for several reasons. The next week involved moving stuff into the house, and on the 23rd we spent our first night in our new home. Since then we've mostly just been unpacking and buying things. We got a water softener installed (because we have water so hard it's off the chart) on the 23rd and our refrigerator came last Friday. Anyway, we've been living there for three weeks now and there haven't really been any major problems, other than the problem that we've run out of money.

Also on July 13th, the 30-month-old son of one of Lisa's cousins died. He was a very curious and active boy and while he was at day care, the adult was involved in a dispute between two other children, and he opened the locked door and ran out into the lake nearby and drowned. The original reports said that his diaper could have acted as a flotation device, keeping his butt in the air and face underwater. We left that Friday for the funeral, which was very difficult.

Anyway. Aside from that, most everything in our lives lately has somehow revolved around the house. We set up the office with Lisa's computer on the other side of the room from mine. It used to be perpendicular to mine, and the ethernet cable connecting her computer to mine was hidden nicely. But there wasn't a good way of hiding the cable now, so I bought a wireless router and a wireless card for her computer. Miraculously, everything seems to work. I've even replaced penguin with the router for all of the, you know, routing, and firewall and NAT stuff. It even updates DynDNS.org for me. Now that penguin isn't doing NAT anymore, Lisa doesn't understand why I need both penguin and blue, and I'm starting to lose track of why as well. We'll see what happens with that.

A while back my dad gave me a linksys PCMCIA wireless card for my work laptop that he didn't have a use for. I had never been able to get it to work, mainly because I never had an access point. But now that I do, I tried it out and it works rather well. I never thought I'd enjoy having a computer in my living room as much as I did. But, Lisa doesn't like having a laptop down there, I think mainly because of the power cable. She had been talking about replacing her computer, possibly with a laptop, since hers is nearly five years old and is starting to show its age, but I think that I might have inadvertently convinced her to go with a desktop. I'm not sure that we have the money for a new computer right now anyway though. (We are, as they say, house-poor.)

Let's get out of here

It's been thirteen weeks since the last time I made an entry, but I still don't feel like I have anything to say. If you're inclined to agree, feel free to stop reading right now.

I applied to become a Debian developer a little more than three weeks after my last entry. A week later, Robert McQueen agreed to be my advocate, and six weeks after that, Brian Nelson became my Application Manager. As you can see, I've nearly finished with everything now; I'm just waiting on Brian to review my Tasks and Skills and to upload an adopted mutella package for me. And then I'll have my very own @debian.org address.

On June 18, we did our pre-carpet walk-through at our home. Most things looked good; everything except for the carpet was done, aside for some touch-ups. On July 1, we went to the title company and signed for the house. Yesterday we did our final walk-through, which went well except for some more touch-ups. We're hoping that they'll have everything completed by Friday so that we can fund on Monday and get the keys on Tuesday. Our lease expires on July 16 but we extended it to July 31, to give us time to move out and clean. We didn't like the color choices that KB gave us, so we're repainting the entire house before we move in; the painter is currently scheduled to come Wednesday. Then on July 22, the blinds are getting installed; the refrigerator, washer and dryer are being delivered; and the security system is being set up. We'll actually move that weekend; the 24th should be the first night in our home.

This entire process has been incredibly expensive. I never thought that I'd buy so much stuff in such a short amount of time. In addition to just the down payment and closing costs, there's also: the repainting; the blinds; the refrigerator; the washer and dryer; the new living room set; the new spare bedroom set; and area rugs for the dining table and the foosball table. I still haven't paid for half of it. Thankfully I sold all my BRCD shares shortly before they dropped 15% in three days.